Old Mine Hoist converted to MAX Machine / Ultimax cartridge format


After last month's conversion of Wave Hero to the MAX Machine cartridge format, I decided to have a go at Old Mine Hoist too. This game required slightly more work, though.

The original game is just 4095 bytes compressed, and 6958 bytes uncompressed. At program startup, the following happens:

  • About half of the sprites for the hoist swing animation are generated in RAM by code (by flipping 25 sprites horizontally)
  • Unrolled code for fast scrolling of screen and color memory is generated in RAM

Because the MAX Machine has only 2KB of RAM available, the above needed to be handled differently in this version:

  • All sprites for the hoist swing animation are pre-generated and stored in ROM
  • The unrolled code for scrolling is also pre-generated and stored in ROM

Due to the above, a 16KB cartridge is needed (8KB ROML at $8000, and 8KB ROMH at $e000).

The original game dynamically modifies characters in the charset when the hoist cage hits obstacles on its left and right side. Due to the limited RAM on the MAX Machine, damaged obstacles will be represented by two static characters (one for left, one for right) on that system. However, when the cartridge runs on a C64 (NTSC or PAL), the game will detect that extra RAM is available and copy the charset from ROM to RAM ($0800), allowing more dynamic obstacle characters to be used.

The cartridge image file (CRT) has been tested in the VICE emulator, using various model settings (MAX Machine, C64 NTSC and C64 PAL). It has also been tested on Ultimate 64.

RAM (2KB)

StartEndDescription
$0002$001bIRQ dispatch code (copied from ROM at startup)
$001c$003fGame variables
$0040$00ffGame variables / code / dynamic sprites
$0100$01bfDynamic sprites
$01c0$01e4Game variables
$01e5$01ffAvailable stack space
$0200$03ffDynamic sprites
$0400$07e7Screen RAM
$07e8$07f7Game variables
$07f8$07ffSprite pointers

RAM (C64 only)

StartEndDescription
$0800$09ffCharset copied from ROMH ($f000)

ROML (8KB)

StartEndDescription
$8000$9b00Unrolled code for scrolling screen and color RAM
$9b01$9d7dGame data
$9d7e$9ff0Unused
$9ff1$9fffVersion number and build date

ROMH (8KB)

StartEndDescription
$e000$ebaeGame code
$ebaf$efbfGame data (incl. gfx data for dynamic chars and sprites)
$efc0$efffUnused
$f000$f1ffCharset (ECM, 64 chars)
$f200$ffbfSprite graphics
$ffc0$fff9Unused
$fffa$fffbNMI vector
$fffc$fffdReset vector
$fffe$ffffIRQ vector

Files

OldMineHoist_v1.2_MAX.crt 16 kB
Oct 17, 2022

Get Old Mine Hoist

Leave a comment

Log in with itch.io to leave a comment.