XaiJu
furrtek
furrtek

patreon


Technical curiosities found in TMNT so far

1. CPU read signal not used for ROM access decoding

Access to the code and data ROMs for the main 68000 CPU is only decoded with address lines, not the "read/write signal". Meaning that the CPU could "fight" against the ROM on the data bus if it wanted to perform a write to them.

The game (hopefully !) never does this as there's no reason to write to ROM space, but it's interesting to note that this enables a way for the software to damage the hardware.

Repeatedly executing "move.w #$FFFF,$000400" for example would make the CPU output $FFFF at the same time the ROM outputs $0000, effectively shorting the entire data bus through the components internal driving transistors, possibly cooking them.

2. V-Blank Interrupt

The vertical blank interrupt in videogame systems is almost always used as a way to time display updates and gameplay events. It's fired right at the beginning of every new frame, telling the CPU to put aside what it's currently doing to focus on what needs to be done at that very moment.

Both the tilemap and sprite chips are able to generate the interrupt, but for some reason , Konami had chosen to catch the video v-blank signal output instead. They even had to add a dedicated flip-flop for the CPU to be able to mask it.

3. Sprite ROM address scrambling

Several components on the PCB are used to de-scramble the address lines of the sprite ROMs. A small PROM is used as a lookup table to control 9 selectors, which effectively re-route the address lines in real time. The schematics show that the selectors are of the 74F TTL logic family, which was probably required to avoid adding too much delay to the already relatively slow ROMs.

The question here is: why ? I don't get the purpose of such a rather complicated and costly apparatus. It could be a way to convert tile codes to the position of the graphics in the ROM, but the data itself could have been pre-arranged to match them. There's no need to do the remapping in real time... MAME even performs the whole process before launching the game (see drivers/tmnt.cpp init_tmnt()).

If it was one of those silly attempts at delaying piracy by adding artificial complexity, then it was a -very- silly one. The components are all off-the-shelf parts and the PROM could have been easily be dumped, pirates could just have copied everything without having to understand anything.

Comments

Really happy to see the work you are doing on Turtles. I love your NeoGeo core!

Commander Keen

Lovely work. Thanks for the description and break downs. Very informative for the curious mind!

Syro


More Creators