Magical Truck Adventure - country check

Technical discussion for those interested in Supermodel development and Model 3 reverse engineering. Prospective contributors welcome. Not for end-user support.
Forum rules
Keep it classy!
  • No ROM requests or links.
  • Do not ask to be a play tester.
  • Do not ask about release dates.
  • No drama!
Post Reply
gm_matthew
Posts: 30
Joined: Wed Nov 08, 2023 2:10 am

Magical Truck Adventure - country check

Post by gm_matthew »

I've been taking a look at how Magical Truck Adventure interfaces with the soundboard to perform its "country check", and I think I've figured out how it works.

Reading the MIDI control port at 0xF0080004 or 0xFE080004, bit 0 (0x01) signals whether the soundboard is ready to receive data written into the MIDI data port, and bit 1 (0x02) signals whether the soundboard is ready to transmit data to be read from the MIDI data port. The soundboard is able to transmit data via the master SCSP MIDI out line which is currently not hooked up in Supermodel; instead we always return 0x83 which is enough to get past the country check and keep other games happy.

The game starts by sending two commands to the soundboard via the MIDI data port: [0xA0, 0x00, 0x00] and [0xA0, 0x10, 0x10]. I didn't get into the specifics of what these commands do, but it appears they request for the soundboard to reply with the country code; it transmits [0xB0, 0x01, 0x00] via MIDI out. This country code is stored at 0x62D960 in the sound program ROM.

The game checks the second byte received to determine whether the region should be locked to Japan or selectable between Export, USA and Australia. From the data that the soundboard tries to send via the MIDI data port, the region is supposed to be selectable but because Supermodel currently only returns 0 when reading the MIDI data port, the game erroneously thinks the region should be locked to Japan. Presumably the real Japanese version of the game has a different country code in the sound program ROM, e.g. [0xB0, 0x00, 0x00].

All we need to do is hook up the MIDI out line from the SCSP to the MIDI data port and the region will be selectable without any patch needed (indeed a new patch would be needed to lock the region to Japan). I reckon a FIFO buffer similar to what we already use for the MIDI in line would work nicely.
Bart
Site Admin
Posts: 144
Joined: Tue Nov 07, 2023 5:50 am

Re: Magical Truck Adventure - country check

Post by Bart »

That's an awesome discovery! I always wondered about that. Really odd that they put the country check in there. IIRC the sound ROMs aren't any more accessible than the PowerPC CROM EPROMs. I wonder why they chose to put the country code there.
Post Reply