kode54
Member
Level: 17
   

Posts: 21/55
EXP: 22964 For next: 1779
Since: 08-29-13
From: Riverside, CA, US
Since last post: 8.4 years Last activity: 5.3 years
|
|
| Is there a music code for this game? I'd love to rip the entire soundtrack to SFMs. Or possibly trim the initialization code down to just starting the music and locking up, so I could optionally produce an SNSF set, not that I have a proper player for those. |
kode54
Member
Level: 17
   

Posts: 23/55
EXP: 22964 For next: 1779
Since: 08-29-13
From: Riverside, CA, US
Since last post: 8.4 years Last activity: 5.3 years
|
|
| Well, thanks to Seru-kun / LuigiBlood, I have an offset into the ROM image for a music number table, 0x4152, which works with both US-NTSC and PAL versions of the game. The problem is, I have to find a musical event which does not occur while the game will be generating sound effects. The first music entry, which occurs when you first surface from the pool at the start of the game, is immediately followed by the sounds of footsteps and/or maybe the monster in the background appearing. |
KungFuFurby
Member
Level: 12
   
Posts: 19/25
EXP: 7826 For next: 95
Since: 08-10-11
Since last post: 8.3 years Last activity: 2.6 years
|
|
I'm working on that through the Title Screen (which does not use that particular array). I have the music part, but I'm hunting down what I suspect is a sample pack modifier at the moment.
It's probably the best case scenario for this particular game. |
KungFuFurby
Member
Level: 12
   
Posts: 20/25
EXP: 7826 For next: 95
Since: 08-10-11
Since last post: 8.3 years Last activity: 2.6 years
|
|
That's easily done with a hex editor once I know what triggers the sound effects... the catch is that usually you have lots and lots of calls for sound effects.
In other news, I have a Title Screen music modifier ready. Here are the PAR codes for the US version:
Out of This World
Title Screen Music Modifier
Music ~ 80D990xx
Sample Pack ~ 80D462xx
The range for the music is 00-01, 03-05, 07, 09-0C, 0E. 02, 06, 08 are duplicates of 00. 0D is a duplicate of 0C. There is no more music after 0E.
The unused song is located at 05. |
kode54
Member
Level: 17
   

Posts: 29/55
EXP: 22964 For next: 1779
Since: 08-29-13
From: Riverside, CA, US
Since last post: 8.4 years Last activity: 5.3 years
|
| Posted on 11-11-13 09:03:58 AM (last edited by kode54 at 11-11-13 12:13:13 PM) |
Link | Quote
| |
Excellent. Now how do the sample packs relate to the various song numbers? Identical, or do they pair up in any particular way?
EDIT: Quick reference code for anyone attempting to patch the game for SNSF use, you just need this PAR code: 80D99580+80D996FE
EDIT 2: 09 and 0A use pack 00. 00-01, 03-05, 07, 0C, and 0E all use sample pack 01. 0B uses pack 02. |
KungFuFurby
Member
Level: 12
   
Posts: 21/25
EXP: 7826 For next: 95
Since: 08-10-11
Since last post: 8.3 years Last activity: 2.6 years
|
|
I'm nervous about using 80 FE (which stop the game) in games that stream their note data because of their real-time nature, but the reason why it probably works here is because the music uses the interrupt routine to play back the music. Not guaranteed to work every time, but it works here.
Sample packs pair up in a particular way. None of the songs that use sample pack 01 even remotely work on sample packs 00 and 02. In other cases, samples can be swapped out.
Reply to edit 2: Oh! Really? Now that I listen to it, there is at least one sample that is swapped out in sample pack 02 that song 0B uses. Well done! I couldn't tell in the first place until you showed me the code to stop the game in its tracks. I usually don't try to stop the game like that because I see that as particularly dangerous for games that stream their note data in real time... sometimes it results in no music at all (I actually didn't test that theory on any of the games because I felt like I was probably going to get nothing... one of the games when I did fool around with the music did indeed end up on a black screen, but I got away with the music modifier because the music still played perfectly fine). The only way that can work is if the game processes the music data in the interrupt routine. So I usually take a safer route by checking where in the game I can let the music play indefinitely without SFX interruption. I have a nearly complete set of music modifier for games that cannot be dumped to the .spc format. |
kode54
Member
Level: 17
   

Posts: 30/55
EXP: 22964 For next: 1779
Since: 08-29-13
From: Riverside, CA, US
Since last post: 8.4 years Last activity: 5.3 years
|
| Posted on 11-12-13 01:10:03 AM (last edited by kode54 at 11-12-13 01:47:18 AM) |
Link | Quote
| |
I found that it uses pack 02 from disassembly tracing from the tail end of the opening to the beginning of the music from the demo loop. It even starts it in a roundabout way, pushing the three arguments to the sample upload function, then calling two or three other functions before finally calling the sample uploader. That made tracing it from a runtime disassembly a bit annoying.
EDIT: And I only bothered posting that BRA $-2 code because I verified that it left the title music unmolested. |