loveemu / gaxtapper

Automated GSF ripper for GAX Sound Engine (beta-testing)
GNU General Public License v3.0
8 stars 1 forks source link

Jazz Jackrabbit: Music does not play (cause: invalid duplicate of GAX library detected) #17

Closed loveemu closed 3 years ago

loveemu commented 3 years ago

Music does not play. Foobar2000 will skip the song when played (i.e. silence).

Workaround

Write 0 to ROM offset 0xf2cc (the starting address of gax2_estimate of invalid GAX copy) before running Gaxtapper.

By skipping the copy of the invalid GAX and linking it to the valid GAX, GSF will work in this way.

Technical Background

It looks similar to #13, but the details are slightly different.

Oddly enough, this game contains two GAX binaries. And one of them does not work well because the address of EWRAM is set as the jump destination in the switch table. That jump table is specifically located behind 0x8011512, and is called in gax_play. I do not know why it is laid out that way. It may just be garbage.

The other GAX binary, located at 0x8317518, has no such problem and works fine. I see this one being used in the game as well.

loveemu commented 3 years ago

I do not plan to work on this because the problem is too special and there is a workaround.

Maybe it would be better if I could specify the search start offset for the GAX library. If there is a request for this, I will consider supporting it at another time.