Skip to content

Source code for "Soul on Fire", winning 4k entry at X2024.

Notifications You must be signed in to change notification settings

matthiaskramm/soul_on_fire

Repository files navigation

Soul on Fire

This is the source code of "Soul on Fire", which won the 4k intro competition at X2024

To build the source, you need gmake and KickAssembler.

Run

    gmake intro.prg

to build. This will create an uncompressed file (37k in size). The release version used alz64 to compress this further, and is 4091 bytes (padded to 4096). Note, however, that upkr with 0xF's 6502 decruncher (upkr6502) (released two days after Soul on Fire!) would have saved another ~60 bytes.

High-level overview of the source structure:

  • intro.asm: The intro itself. Calls the code/data generators, starts the music, and contains the main NMI code. Uses:
    • music_data.inc: The intro's song.
    • music.inc: Music player. Uses around two rasterlines.
    • timers.inc: Timer setup. We have an NMI that runs throughout the entire demo (for music and opening the upper/lower border), and a horizontal timer, for raster stabilization.
  • multiplex.inc: Main code file for the rotating sprite vectors. Invoked six times. Uses:
    • objects.inc: All the 3D objects.
    • rotate.inc: Code for matrix rotation, vertex computation and slope calculation.
    • genspr.inc: Generates the sprites (expanding circles & rotated lines)
  • roto.inc: Main code file for the logo/chessboard distorter. Invoked three times.
    • agsp.inc: Code for making the VIC move the screen in x and y
    • genchr.inc: Generates the "charset" used to fill in a new column of bitmap which scrolls in from the right.
    • gencol.inc: Generates the texture that "color-cycles" through the bitmap. Two logos and a chessboard.
  • bit.inc: Bitreverse function. Used for texture mapping. See BRR Lines.
  • common.inc: Reference tables and constants.
  • init.inc: Definitions of segments and memory locations.
  • delay.inc: Code for delaying a given number of cycles.
  • generate.inc: Generate various math tables, like sine, log, square, and multiply-by-constant.
  • pseudocommands.inc: Definitions of convenience ops, like beq_far.

About

Source code for "Soul on Fire", winning 4k entry at X2024.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published