Skip to content

Disassembly Examples

Welcome to the Regenerator 2000 examples documentation. These HTML disassemblies are generated directly by Regenerator 2000 and showcase the auto-analysis, layout parity, and modern styling capabilities of our HTML exporter.

Below are the main examples available in this project:

Moving Tubes - Commodore 64

screenshot

A disassembly of Moving Tubes intro, by Laxity.

Main takeaways:

  • Great source to learn about different techniques (intermediate level).
  • Clean code.
  • How a SID player works: the SID player was disassembled in detail.
  • Raster IRQ techniques
  • Different tips & tricks:
    • Convert JMP into BIT, and other self-modifying code techniques.
    • Double call with JSR to next line
    • Background logo color in sync with SID music
    • Sine table for scrolling speed
    • Variable-width chars in scroller

Source:


Lode Runner - Commodore PET

screenshot

A disassembly of Lode Runner clone for Commodore PET, by jimbo.

Disassembly

Main takeaways:

  • Clean code.
  • Great place to learn about the PET programming.

Source:


Omega Race - VIC-20

screenshot

A disassembly of the game Omega Race for VIC-20.

Main takeaways:

  • WIP

Source:


Kikstart - Commodore Plus/4

screenshot

A disassembly of the Commodore Plus/4 motorcycle obstacle course game Kikstart.

Disassembly

Main takeaways:

  • WIP

Source:

H.E.R.O is Back! - Commodore 128

screenshot

A disassembly of the Commodore 128 game H.E.R.O is Back, by LC Games.

Disassembly

Main takeaways:

  • WIP

Source:


Burnin' Rubber - Commodore 64

screenshot

A disassembly of the Commodore 64 "Burnin' Rubber" game.

Disassembly

Main takeaways:

  • The code was written in a monitor, not with an assembler. Evidence:
    • Dead code / Dead tables: Although not uncommon to have some dead code / tables in a program, it is a lot more common when using a monitor.
    • There is a .T0400,07FF,2C00 monitor command in the code. Which means " Transfer the bytes from $0400-$07FF to $2C00". Funny thing, that command is at $2C00, which makes sense. The programmer might have typed it at the top-left of the screen.
    • Functions that are split in multiple places, using JMP to connect them.
    • Three NOP opcodes padding at the beginning of some functions. Possibly to remove a possible JSR to a debug routine.
    • Some ZP variables are accessed using the three-byte variant of LDA. E.g.: LDA $F2 translates to AD F2 00 instead of A5 F2
    • Lack of a "clean" high level architecture: for example the main loop is split in multiple places.
  • Good place to learn how early C64 games were programmed using a monitor, but not a good place to learn modern best practices.

Source:

  • TAP file: Burnin' Rubber.tap
  • The game was taken from the original TAP source.
  • The game was encrypted. Part of the game code was in the loader, and part was in the main program.
  • The disassembly contains a single file that includes the decrypted main program with part of the loader code.
  • Part of the encrypted code is still present, but not used.
  • Run it with: SYS 4752