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)
Start | End | Description |
---|---|---|
$0002 | $001b | IRQ dispatch code (copied from ROM at startup) |
$001c | $003f | Game variables |
$0040 | $00ff | Game variables / code / dynamic sprites |
$0100 | $01bf | Dynamic sprites |
$01c0 | $01e4 | Game variables |
$01e5 | $01ff | Available stack space |
$0200 | $03ff | Dynamic sprites |
$0400 | $07e7 | Screen RAM |
$07e8 | $07f7 | Game variables |
$07f8 | $07ff | Sprite pointers |
RAM (C64 only)
Start | End | Description |
---|---|---|
$0800 | $09ff | Charset copied from ROMH ($f000) |
ROML (8KB)
Start | End | Description |
---|---|---|
$8000 | $9b00 | Unrolled code for scrolling screen and color RAM |
$9b01 | $9d7d | Game data |
$9d7e | $9ff0 | Unused |
$9ff1 | $9fff | Version number and build date |
ROMH (8KB)
Start | End | Description |
---|---|---|
$e000 | $ebae | Game code |
$ebaf | $efbf | Game data (incl. gfx data for dynamic chars and sprites) |
$efc0 | $efff | Unused |
$f000 | $f1ff | Charset (ECM, 64 chars) |
$f200 | $ffbf | Sprite graphics |
$ffc0 | $fff9 | Unused |
$fffa | $fffb | NMI vector |
$fffc | $fffd | Reset vector |
$fffe | $ffff | IRQ vector |
Files
Get Old Mine Hoist
Old Mine Hoist
Lower a swinging hoist cage as deep as possible into an old abandoned mine. Beware of unstable dynamite!
Status | Released |
Author | Geir Straume |
Genre | Action |
Tags | 8-Bit, Commodore 64 |
Languages | English |
More posts
- Old Mine Hoist available for the MEGA65Apr 15, 2023
Leave a comment
Log in with itch.io to leave a comment.