Hacking Time Machine for Free Play

Here are some of my notes from adding a "Free Play" option to Time Machine.

If you read my notes on Farfalla, this is a continuation of that effort.

ROM Layout (2 x 2764)

Time Machine was released with two ROM configurations, a 2 x 2764 and a 3 x 2532. The software seems to be the same for both. I started, initially, with the 2 x 2764 ROM version of Time Machine, thinking that it would be similar to Farfalla, especially since I had not been as happy with the Soccer Kings 2532 hack described earlier.

Start Address End Address Device Bank
0x0000 0x07FF ROM1 Bank 1
0x0800 0x0FFF ROM2 Bank 1
0x1000 0x17FF ROM2 Bank 2
0x1800 0x1FFF RAM (Mine)
0x2000 0x27FF ROM1 Bank 2
0x2800 0x2FFF ROM2 Bank 3
0x3000 0x37FF ROM2 Bank 4
0x3800 0x3FFF RAM (Theirs)
0x4000 0x47FF ROM1 Bank 3
0x6000 0x67FF ROM1 Bank 4

I built the memory image from the ROM banks, broken up and rearranged as described in the Farfalla document. Looking at a hex dump of the image, there are no obviously empty blocks as I would have expected there to be. Unlike Farfalla, the ROM space at 0x6000 is not all bytes of 0xff. The data there doesn't look to be useful, but I can't assume it to be random garbage either.

After disassembly, the source code doesn't reveal any use of the 0x6000 block, so it is probably free, but still, I'm not sure.

ROM Layout (3 x 2532)

Looking some more at the 2764 and 2532 memory maps, I eventually found that my 2764 memory map had two code blocks swapped. This affected getting Soccer Kings' code in to the right places in the 2764s, which is why the earlier attempt did not work.

I used that information, and built a 2 x 2764 image set out of the 3 x 2532 images.

ROM1 Bank1 - Stays the same (ROM1 Bank1)
ROM2 Bank1 - Stays the same (ROM2 Bank1)
ROM3 Bank1 - Moves to ROM2 Bank3
ROM1 Bank2 - Stays the same (ROM1 Bank2)
ROM2 Bank2 – Stays the same (ROM2 Bank2)
ROM3 Bank2 - Moves to ROM2 Bank4

ROM1 has free space.
ROM2 is full.
Put hacking code @ 6000, 6040 (ROM1 Bank4)

From here, it is similar to Farfalla. Find the three sections of the original code, insert a jump to my revised code, and return to the original.

Patches:

Disables "Coin Meter" check
Patch [07 FF] to [07 00] @0x2976 (0x0876 in ROM2 image)

Disable credit = 0? check
Patch [0C 1F 22] to [1F 60 00] @0x123C (0x123C in ROM2 image)

Prevent credit decrement less than 0
Patch [A4 01] to [C0 C0] @0x127E (0x127E in ROM2 image)
Patch to [0C 1F 22] to [1F 60 18] @0x126D (0x126D in ROM2 image)

PinMAME tested - OK 19 February 2011
Game tested - OK 21 February 2011


David Gersic

Copyright © 2011. All rights reserved.

This document may be freely distributed so long as the content is not modified.

Last updated 24 February 2011