Sonic and Sega Retro Message Board: Sonic 3 - Unused bytes in music sequence data - Sonic and Sega Retro Message Board

Jump to content

Hey there, Guest!  (Log In · Register) Help
Page 1 of 1
    Locked
    Locked Forum

Sonic 3 - Unused bytes in music sequence data help pls

#1 User is offline evilhamwizard 

Posted 28 April 2018 - 02:20 PM

  • Posts: 1272
  • Joined: 16-June 04
  • Gender:Male
  • Wiki edits:109
A while back, I posted about some unused sound data in Sonic 1. A lot of people asked me to look at Sonic 2/3 to see if there was anything interesting. On the subject of Sonic 2, it was difficult to find unused data as the sound driver changed significantly for the final version so that the unused sound data can't be located the same way I was able to for Sonic 1. However, the Simon Wai prototype still uses something similar to the Sonic 1 driver (I think?) and so I could find unused sound data in that version. If I recall, the only thing I was able to find were unused voices (instruments) in many of the songs. I might go back to revisit Sonic 2, but for now I wanted to focus on Sonic 3 since that game holds a lot of oddities in the sound data.

However, I need help this time. Sonic 3 changed the sound format a little but and so it makes things a bit harder to manipulate/interpret without investing time which I don't really have anymore. I'm pointing out the data that I find so that hopefully someone with more knowledge and time can see what the data actually is.

The impression that I get when looking at the sound data for Sonic 3 is that the process for programming the music became more streamlined, possibly for the relatively new people who hopped on board the SEGA SOUND TEAM. As such, I suspect that at this point tools were created to make converting common tracker/midi formats easier. In comparison to the early Mega Drive titles, where it was likely that many of the games were sequenced using macro'd assembler. The reason for bringing this up is due to the fact that using such tools can introduce common intricacies that rear up in every song. As such, the most common thing that I noticed when looking at the sound data this time around is that there are many instances where a "cfStopTrack" command ($F2) is issued but never called because the music will call "cfJumpTo" ($F6) before it occurs. Many, but not all, songs do this which is interesting. I believe this might've been a leftover from the conversion tools that were used, or part of some asm macro that included the cfStopTrack after certain jumps by default. So, instead of noting where there are unused cfStopTracks (because it would take me forever and aren't that interesting), I will note when songs don't have any unused cFStopTracks at all.

With that out of the way, let's begin.
------------------------------------------------------------------------------------------------------------------------
(Note: I'm going to go by when the sequence data itself appears in the ROM. It's interesting to note the order in which the data is presented in the ROM. All offsets are based on Sonic 3 stand alone. All unused bytes were found using BizHawk so there's always room for error. I believe in some cases my script might be off by one byte so I'll try to include the last marked byte where possible (which will be labeled with the "Z80 Data" comment). I'll try to interpret most of the data by hand, but for the most part I'll be leaving it as raw byte code).

1.) (2E) Sonic 3 Miniboss - 0xC71A0

Unused Voice.
ROM:000C79E3                 dc.b $80                ; Z80 Data
ROM:000C79E4                 dc.b   5
ROM:000C79E5                 dc.b   0
ROM:000C79E6                 dc.b   0
ROM:000C79E7                 dc.b   0
ROM:000C79E8                 dc.b   0
ROM:000C79E9                 dc.b $1F
ROM:000C79EA                 dc.b $1F
ROM:000C79EB                 dc.b $1F
ROM:000C79EC                 dc.b $1F
ROM:000C79ED                 dc.b $12
ROM:000C79EE                 dc.b  $C
ROM:000C79EF                 dc.b  $C
ROM:000C79F0                 dc.b  $C
ROM:000C79F1                 dc.b $12
ROM:000C79F2                 dc.b $18
ROM:000C79F3                 dc.b $1F
ROM:000C79F4                 dc.b $1F
ROM:000C79F5                 dc.b $1F
ROM:000C79F6                 dc.b $1F
ROM:000C79F7                 dc.b $1F
ROM:000C79F8                 dc.b $1F
ROM:000C79F9                 dc.b   7
ROM:000C79FA                 dc.b $80 ; Ç
ROM:000C79FB                 dc.b $80 ; Ç
ROM:000C79FC                 dc.b $80 ; Ç


2.) (30) Final Boss (Big Arms) - 0xC7A61
No other unused data aside from unused cfStopTrack calls.

3.) (01) Angel Island Zone Act 1 - 0xC8000
No other unused data aside from unused cfStopTrack calls.

4.) (02) Angel Island Zone Act 2 - 0xC9B6D
No other unused data aside from unused cfStopTrack calls.

5.) (03) Hydrocity Zone Act 1 - 0xCB0BC
Unused cfJumpTo with cfStopTrack:
ROM:000CBFFC                 dc.b $F6 ; cfJumpTo BFF9
ROM:000CBFFD                 dc.b $F9
ROM:000CBFFE                 dc.b $BF
ROM:000CBFFF                 dc.b $F2 ; cfStopTrack



6.) (04) Hydrocity Zone Act 2 - 0xCC0C6
Unused cfJumpTo with cfStopTrack:
ROM:000CD10D                 dc.b $F6 ; cfJumpTo D10A
ROM:000CD10E                 dc.b  $A
ROM:000CD10F                 dc.b $D1
ROM:000CD110                 dc.b $F2 ; cfStopTrack


7.) (05) Marble Garden Zone Act 1 - 0xCD364
No other unused data aside from unused cfStopTrack calls.

8.) (06) Marble Garden Zone Act 2 - 0xCD97B
No other unused data aside from unused cfStopTrack calls.

9.) (08) Carnival Night Zone Act 2 - 0xCDDA9
Yeah, Act 2's sound data comes before Act 1. Weird. There's only one unused cfStopTrack in the whole song. Maybe this song was programmed manually instead of converted?

A partially used cfModulation call? cfModulation uses four 1 byte parameters, but for some reason here only the first and last byte are used. The 1 and the 5 are unused.
ROM:000CDDD9                 dc.b $F0                ; Z80 Data
ROM:000CDDDA                 dc.b 2                  ; Z80 Data
ROM:000CDDDB                 dc.b   1
ROM:000CDDDC                 dc.b   5
ROM:000CDDDD                 dc.b 4                  ; Z80 Data



Unused notes? $F9 is a cfJumpReturn (which takes no parameters) which is used, but it precedes byte $C2 which is marked used as well for some reason (I believe this was a mistake with Bizhawk). What follows the $C2 is unused. If the bytes are notes, I added what I think the music notation correlates to as well as the duration.
ROM:000CDF37                 dc.b $F9                ; Z80 Data - cfJumpReturn
ROM:000CDF38                 dc.b $C2                ; Z80 Data - 5F, duration of 7
ROM:000CDF39                 dc.b   7
ROM:000CDF3A                 dc.b $C1 ; 5E, with a duration of 5
ROM:000CDF3B                 dc.b   5
ROM:000CDF3C                 dc.b $C0 ; 5D♯/E♭ with a duration of 0
ROM:000CDF3D                 dc.b $80 ; Rest, with a duration of 7
ROM:000CDF3E                 dc.b   7
ROM:000CDF3F                 dc.b $BF ; 5D, with a duration of 5
ROM:000CDF40                 dc.b   5
ROM:000CDF41                 dc.b $80 ; Rest, with a duration of 7
ROM:000CDF42                 dc.b   7
ROM:000CDF43                 dc.b $BE ; 5C♯/D♭, with a duration of 0?
ROM:000CDF44                 dc.b $BF ; 5D, with a duration of 5
ROM:000CDF45                 dc.b   5
ROM:000CDF46                 dc.b $BE ; 5C♯/D♭, with a duration of 7?
ROM:000CDF47                 dc.b   7
ROM:000CDF48                 dc.b $BD ; 5C, with a duration of 5
ROM:000CDF49                 dc.b   5
ROM:000CDF4A                 dc.b $F9 ; cFJumpReturn


10.) (07) Carnival Night Zone Act 1 - 0xCE48F
No other unused data aside from an unused cfStopTrack call.

11.) (09) Flying Battery Zone Act 1 - 0xCEBF1
No other unused data aside from unused cfStopTrack calls.

12.) (0a) Flying Battery Zone Act 2 - 0xCF189
No other unused data aside from unused cfStopTrack calls.

13.) (1a) Doomsday Zone - 0xCF6F0
Not sure why Doomsday Zone's data appears here. Perhaps the size left remaining in the other banks was an issue?
No other unused data aside from unused cfStopTrack calls.

14.) (0c) Ice Cap Zone Act 2 - 0xD0000
Another instance where Act 2's data appears before Act 1. Weird.
No unused data whatsoever. Not even an unused cfStopTrack call, suggesting this might've been programmed by hand.

15.) (0b) Ice Cap Zone Act 1 - 0xD06AA
No unused cfStopTrack calls, suggesting this might've been programmed by hand.
Two partially unused cfModulation calls. cfModulation requires four 1 byte parameters, but only the first one is used. Everything is set to 0 though.
ROM:000D0BC1                 dc.b $F0                ; Z80 Data
ROM:000D0BC2                 dc.b 0                  ; Z80 Data
ROM:000D0BC3                 dc.b   0
ROM:000D0BC4                 dc.b   0
ROM:000D0BC5                 dc.b   0


ROM:000D0C20                 dc.b $F0                ; Z80 Data
ROM:000D0C21                 dc.b 0                  ; Z80 Data
ROM:000D0C22                 dc.b   0
ROM:000D0C23                 dc.b   0
ROM:000D0C24                 dc.b   0


16.) (0e) Launch Base Zone Act 2 - 0xD0DC8
Another instance where Act 2's data is located before Act 1's. No unused cfStopTrack calls, suggesting this one was programmed by hand.
Two partially unused cfModulation calls. Only the first parameter seems to be read.
ROM:000D0F79                 dc.b $F0                ; Z80 Data
ROM:000D0F7A                 dc.b 1                  ; Z80 Data
ROM:000D0F7B                 dc.b   1
ROM:000D0F7C                 dc.b   1
ROM:000D0F7D                 dc.b   4


ROM:000D1001                 dc.b $F0                ; Z80 Data
ROM:000D1002                 dc.b 1                  ; Z80 Data
ROM:000D1003                 dc.b   1
ROM:000D1004                 dc.b   1
ROM:000D1005                 dc.b   4


Unused Voice data:
ROM:000D129B                 dc.b  $C
ROM:000D129C                 dc.b $AB ; ½
ROM:000D129D                 dc.b $12
ROM:000D129E                 dc.b $A8 ; ¿
ROM:000D129F                 dc.b   6
ROM:000D12A0                 dc.b $AC ; ¼
ROM:000D12A1                 dc.b $12
ROM:000D12A2                 dc.b $AB ; ½
ROM:000D12A3                 dc.b   6
ROM:000D12A4                 dc.b $AB ; ½
ROM:000D12A5                 dc.b $18
ROM:000D12A6                 dc.b $F9 ; ·
ROM:000D12A7                 dc.b $80 ; Ç
ROM:000D12A8                 dc.b $80 ; Ç
ROM:000D12A9                 dc.b $AB ; ½
ROM:000D12AA                 dc.b $80 ; Ç
ROM:000D12AB                 dc.b $80 ; Ç
ROM:000D12AC                 dc.b $80 ; Ç
ROM:000D12AD                 dc.b $AB ; ½
ROM:000D12AE                 dc.b $80 ; Ç
ROM:000D12AF                 dc.b $80 ; Ç
ROM:000D12B0                 dc.b $80 ; Ç
ROM:000D12B1                 dc.b $AB ; ½
ROM:000D12B2                 dc.b $80 ; Ç
ROM:000D12B3                 dc.b $80 ; Ç
ROM:000D12B4                 dc.b $80 ; Ç
ROM:000D12B5                 dc.b $AB ; ½
ROM:000D12B6                 dc.b $80 ; Ç
ROM:000D12B7                 dc.b $A8 ; ¿
ROM:000D12B8                 dc.b   6
ROM:000D12B9                 dc.b $80 ; Ç
ROM:000D12BA                 dc.b $AB ; ½
ROM:000D12BB                 dc.b $80 ; Ç
ROM:000D12BC                 dc.b $A8 ; ¿
ROM:000D12BD                 dc.b $80 ; Ç
ROM:000D12BE                 dc.b $AB ; ½
ROM:000D12BF                 dc.b $A8 ; ¿
ROM:000D12C0                 dc.b $80 ; Ç
ROM:000D12C1                 dc.b $80 ; Ç
ROM:000D12C2                 dc.b $AB ; ½
ROM:000D12C3                 dc.b $80 ; Ç
ROM:000D12C4                 dc.b $80 ; Ç
ROM:000D12C5                 dc.b $80 ; Ç
ROM:000D12C6                 dc.b $AB ; ½
ROM:000D12C7                 dc.b $A8 ; ¿


Unused voice:
ROM:000D132C                 dc.b $F5 ; )
ROM:000D132D                 dc.b $24 ; $
ROM:000D132E                 dc.b $30 ; 0
ROM:000D132F                 dc.b $10
ROM:000D1330                 dc.b $32 ; 2
ROM:000D1331                 dc.b $1F
ROM:000D1332                 dc.b $1F
ROM:000D1333                 dc.b $1F
ROM:000D1334                 dc.b $1F
ROM:000D1335                 dc.b   5
ROM:000D1336                 dc.b $18
ROM:000D1337                 dc.b   9
ROM:000D1338                 dc.b   2
ROM:000D1339                 dc.b   6
ROM:000D133A                 dc.b  $F
ROM:000D133B                 dc.b   6
ROM:000D133C                 dc.b   2
ROM:000D133D                 dc.b $1F
ROM:000D133E                 dc.b $2F ; /
ROM:000D133F                 dc.b $4F ; O
ROM:000D1340                 dc.b $2F ; /
ROM:000D1341                 dc.b  $F
ROM:000D1342                 dc.b  $E
ROM:000D1343                 dc.b  $E
ROM:000D1344                 dc.b $80 ; Ç



17.) (0D) Launch Base Zone Act 1 - 0xD1345
No unused cfStopTrack calls, suggesting this one was programmed by hand.
Two partially unused cfModulation calls. Only the first parameter is used.
ROM:000D14E1                 dc.b $F0                ; Z80 Data
ROM:000D14E2                 dc.b 1                  ; Z80 Data
ROM:000D14E3                 dc.b   1
ROM:000D14E4                 dc.b   1
ROM:000D14E5                 dc.b   4


ROM:000D1562                 dc.b $F0                ; Z80 Data
ROM:000D1563                 dc.b 1                  ; Z80 Data
ROM:000D1564                 dc.b   1
ROM:000D1565                 dc.b   1
ROM:000D1566                 dc.b   4


18.) (0F) Mushroom Hill Zone Act 1 - 0xD17A7
No other unused data aside from unused cfStopTrack calls.

19.) (10) Mushroom Hill Zone Act 2 - 0xD1DAF
No other unused data aside from unused cfStopTrack calls.

20.) (11) Sandopolis Zone Act 1 - 0xD2331
No other unused data aside from unused cfStopTrack calls.

21.) (12) Sandopolis Zone Act 2 - 0xD299B
No other unused data aside from unused cfStopTrack calls.

22.) (13) Lava Reef Zone Act 1 - 0xD2F8E
No other unused data aside from unused cfStopTrack calls.

23.) (14) Lava Reef Zone Act 2 - 0xD399C
No other unused data aside from unused cfStopTrack calls.

24.) (15) Sky Sanctuary Zone - 0xD4B29
No other unused data aside from unused cfStopTrack calls.

25.) (16) Death Egg Zone Act 1 - 0xD4F4F
Unused voice.
ROM:000D5421                 dc.b   3
ROM:000D5422                 dc.b $61 ; a
ROM:000D5423                 dc.b $51 ; Q
ROM:000D5424                 dc.b $23 ; #
ROM:000D5425                 dc.b $41 ; A
ROM:000D5426                 dc.b $10
ROM:000D5427                 dc.b $10
ROM:000D5428                 dc.b  $F
ROM:000D5429                 dc.b $15
ROM:000D542A                 dc.b $1C
ROM:000D542B                 dc.b   1
ROM:000D542C                 dc.b   6
ROM:000D542D                 dc.b   5
ROM:000D542E                 dc.b   5
ROM:000D542F                 dc.b   1
ROM:000D5430                 dc.b   5
ROM:000D5431                 dc.b   1
ROM:000D5432                 dc.b $C9 ; +
ROM:000D5433                 dc.b  $C
ROM:000D5434                 dc.b $D9 ; +
ROM:000D5435                 dc.b $C9 ; +
ROM:000D5436                 dc.b $18
ROM:000D5437                 dc.b $17
ROM:000D5438                 dc.b $17
ROM:000D5439                 dc.b $83 ; â


26.) (17) Death Egg Zone Act 2 - 0xD5439
Unused voice.
ROM:000D5833                 dc.b   3
ROM:000D5834                 dc.b $61 ; a
ROM:000D5835                 dc.b $51 ; Q
ROM:000D5836                 dc.b $23 ; #
ROM:000D5837                 dc.b $41 ; A
ROM:000D5838                 dc.b $10
ROM:000D5839                 dc.b $10
ROM:000D583A                 dc.b  $F
ROM:000D583B                 dc.b $15
ROM:000D583C                 dc.b $1C
ROM:000D583D                 dc.b   1
ROM:000D583E                 dc.b   6
ROM:000D583F                 dc.b   5
ROM:000D5840                 dc.b   5
ROM:000D5841                 dc.b   1
ROM:000D5842                 dc.b   5
ROM:000D5843                 dc.b   1
ROM:000D5844                 dc.b $C9 ; +
ROM:000D5845                 dc.b  $C
ROM:000D5846                 dc.b $D9 ; +
ROM:000D5847                 dc.b $C9 ; +
ROM:000D5848                 dc.b $18
ROM:000D5849                 dc.b $17
ROM:000D584A                 dc.b $17
ROM:000D584B                 dc.b $83 ; â


27.) (18) Sonic & Knuckles Mini Boss - 0xD584C
No other unused data aside from unused cfStopTrack calls.

28.) (19) Act 2 Boss - 0xD5B7C
No other unused data aside from unused cfStopTrack calls.

29.) (1b) Bonus Stage (Orbs) - 0xD6078
Partially unused cfModulation call, only the first parameter is used.
ROM:000D6538                 dc.b $F0                ; Z80 Data
ROM:000D6539                 dc.b $D                 ; Z80 Data
ROM:000D653A                 dc.b   1
ROM:000D653B                 dc.b   1
ROM:000D653C                 dc.b   6


30.) (1c) Special Stage - 0xD65DB
No other unused data aside from unused cfStopTrack calls.

31.) (29) Act Clear - 0xD6E73
Unused notes.
ROM:000D6FBD                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D6FBE                 dc.b   1
ROM:000D6FBF                 dc.b $A7 ; 3D, with a duration of 6
ROM:000D6FC0                 dc.b   6
ROM:000D6FC1                 dc.b $A7 ; 3D, with a duration of 0?
ROM:000D6FC2                 dc.b $A7 ; 3D, with a duration of 0?
ROM:000D6FC3                 dc.b $A7 ; 3D, with a duration of 5
ROM:000D6FC4                 dc.b   5
ROM:000D6FC5                 dc.b $80 ; Rest, with a duration of 7
ROM:000D6FC6                 dc.b   7
ROM:000D6FC7                 dc.b $A7 ; 3D, with a duration of 5
ROM:000D6FC8                 dc.b   5
ROM:000D6FC9                 dc.b $80 ; Rest, with a duration of 7
ROM:000D6FCA                 dc.b   7
ROM:000D6FCB                 dc.b $A9 ; 3E, with a duration of 3
ROM:000D6FCC                 dc.b   3
ROM:000D6FCD                 dc.b $80 ; Rest, with a duration of 9
ROM:000D6FCE                 dc.b   9
ROM:000D6FCF                 dc.b $A9 ; 3E, with a duration of 3
ROM:000D6FD0                 dc.b   3
ROM:000D6FD1                 dc.b $80 ; Rest, with a duration of 9
ROM:000D6FD2                 dc.b   9
ROM:000D6FD3                 dc.b $A9 ; 3E, with a duration of 5
ROM:000D6FD4                 dc.b   5
ROM:000D6FD5                 dc.b $80 ; Rest, with a duration of 7
ROM:000D6FD6                 dc.b   7
ROM:000D6FD7                 dc.b $A9 ; 3E, with a duration of 11
ROM:000D6FD8                 dc.b $11
ROM:000D6FD9                 dc.b $80 ; Rest, with a duration of 1
ROM:000D6FDA                 dc.b   1
ROM:000D6FDB                 dc.b $AC ; 3G, with a duration of 5
ROM:000D6FDC                 dc.b   5
ROM:000D6FDD                 dc.b $80 ; Rest, with a duration of 13
ROM:000D6FDE                 dc.b  $D
ROM:000D6FDF                 dc.b $AE ; 3A, with a duration of 5
ROM:000D6FE0                 dc.b   5
ROM:000D6FE1                 dc.b $80 ; Rest, with a duration of 13
ROM:000D6FE2                 dc.b  $D
ROM:000D6FE3                 dc.b $B1 ; 4C, with a duration of 17
ROM:000D6FE4                 dc.b $11
ROM:000D6FE5                 dc.b $80 ; Rest, with a duration of 1
ROM:000D6FE6                 dc.b   1
ROM:000D6FE7                 dc.b $B3 ; 4D, with a duration of 95
ROM:000D6FE8                 dc.b $5F
ROM:000D6FE9                 dc.b $80 ; Rest, with a duration of 1
ROM:000D6FEA                 dc.b   1
ROM:000D6FEB                 dc.b $F2 ; cfStopTrack


32.) (2F) Data Select - 0xD7027
No other unused data aside from unused cfStopTrack calls.

33.) (1D) Bonus Stage (Slot Machine) - 0xD8000
No unused data whatsoever.

34.) (1E) Bonus Stage (Gumball) - 0xD8AE8
No unused data whatsoever.

35.) (1F) Sonic 3 - Knuckles' Theme - 0xD97FD
The most interesting of the bunch, in my opinion. There seem to be unused notes (comes after a cfJumpTo, which is why it's never used):
ROM:000D9861                 dc.b $F7 ; cfRepeatAtPos with an loop counter index of 0, a repeat count of 2, and a target of 0x9861
ROM:000D9862                 dc.b   0
ROM:000D9863                 dc.b   2
ROM:000D9864                 dc.b $61 ; a
ROM:000D9865                 dc.b $98 ; ÿ
ROM:000D9866                 dc.b $F6 ; cfJumpTo 982D
ROM:000D9867                 dc.b $2D ; -
ROM:000D9868                 dc.b $98 ; ÿ
ROM:000D9869                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D986A                 dc.b   1
ROM:000D986B                 dc.b $8D ; 1C, with a duration of 12
ROM:000D986C                 dc.b  $C
ROM:000D986D                 dc.b $80 ; Rest, with a duration of 7
ROM:000D986E                 dc.b   7
ROM:000D986F                 dc.b $8D ; 1C, with a duration of 5
ROM:000D9870                 dc.b   5
ROM:000D9871                 dc.b $80 ; Rest with a duration of 12
ROM:000D9872                 dc.b  $C
ROM:000D9873                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D9874                 dc.b $80 ; Rest, with a duration of 0?
ROM:000D9875                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D9876                 dc.b $80 ; Rest, with a duration of 24?
ROM:000D9877                 dc.b $18
ROM:000D9878                 dc.b $F9 ; cfJumpReturn
ROM:000D9879                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D987A                 dc.b   1
ROM:000D987B                 dc.b $8D ; 1C, with a duration of 12
ROM:000D987C                 dc.b  $C
ROM:000D987D                 dc.b $80 ; Rest, with a duration of 7
ROM:000D987E                 dc.b   7
ROM:000D987F                 dc.b $8D ; 1C, with a duration of 5
ROM:000D9880                 dc.b   5
ROM:000D9881                 dc.b $80 ; Rest, with a duration of 12
ROM:000D9882                 dc.b  $C
ROM:000D9883                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D9884                 dc.b $80 ; Rest, with a duration of 7
ROM:000D9885                 dc.b   7
ROM:000D9886                 dc.b $8D ; 1C, with a duration of 5
ROM:000D9887                 dc.b   5
ROM:000D9888                 dc.b $8D ; 1C, with a duration of 12
ROM:000D9889                 dc.b  $C
ROM:000D988A                 dc.b $80 ; Rest, with a duration of 24
ROM:000D988B                 dc.b $18
ROM:000D988C                 dc.b $F9 ; cfJumpReturn
ROM:000D988D                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D988E                 dc.b   1
ROM:000D988F                 dc.b $8D ; 1C, with a duration of 12
ROM:000D9890                 dc.b  $C
ROM:000D9891                 dc.b $80 ; Rest, with a duration of 24
ROM:000D9892                 dc.b $18
ROM:000D9893                 dc.b $80 ; Rest, with a duration of 12
ROM:000D9894                 dc.b  $C
ROM:000D9895                 dc.b $80 ; Rest, with a duration of 0?
ROM:000D9896                 dc.b $80 ; Rest, with a duration of 0?
ROM:000D9897                 dc.b $80 ; Rest, with a duration of 0?
ROM:000D9898                 dc.b $80 ; Rest, with a duration of 0?
ROM:000D9899                 dc.b $F9 ; cfJumpReturn
ROM:000D989A                 dc.b $EF ; cfSetVoice to #1
ROM:000D989B                 dc.b   1
ROM:000D989C                 dc.b $8D ; 1C, with a duration of 24
ROM:000D989D                 dc.b $18
ROM:000D989E                 dc.b $80 ; Rest, with a duration of 0?
ROM:000D989F                 dc.b $8D ; 1C, with a duration of 3
ROM:000D98A0                 dc.b   3
ROM:000D98A1                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98A2                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98A3                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98A4                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98A5                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98A6                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98A7                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98A8                 dc.b $8D ; 1C, with a duration of 24
ROM:000D98A9                 dc.b $18
ROM:000D98AA                 dc.b $F9 ; cfJumpReturn
ROM:000D98AB                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D98AC                 dc.b   1
ROM:000D98AD                 dc.b $8D ; 1C, with a duration of 9 and 3
ROM:000D98AE                 dc.b   9
ROM:000D98AF                 dc.b   3
ROM:000D98B0                 dc.b $80 ; Rest, with a duration of 7
ROM:000D98B1                 dc.b   7
ROM:000D98B2                 dc.b $8D ; 1C, with a duration of 5
ROM:000D98B3                 dc.b   5
ROM:000D98B4                 dc.b $EF ; cfSetVoice to voice #2
ROM:000D98B5                 dc.b   2
ROM:000D98B6                 dc.b $A9 ; 3E with a duration of 12
ROM:000D98B7                 dc.b  $C
ROM:000D98B8                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D98B9                 dc.b   1
ROM:000D98BA                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98BB                 dc.b $80 ; Rest, with a duration of 0?
ROM:000D98BC                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98BD                 dc.b $EF ; cfSetVoice to voice #2
ROM:000D98BE                 dc.b   2
ROM:000D98BF                 dc.b $A9 ; 3E, with a duration of 24
ROM:000D98C0                 dc.b $18
ROM:000D98C1                 dc.b $F9 ; cfJumpReturn
ROM:000D98C2                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D98C3                 dc.b   1
ROM:000D98C4                 dc.b $8D ; 1C, with a duration of 12
ROM:000D98C5                 dc.b  $C
ROM:000D98C6                 dc.b $80 ; Rest, with a duration of 7
ROM:000D98C7                 dc.b   7
ROM:000D98C8                 dc.b $8D ; 1C, with a duration of 5
ROM:000D98C9                 dc.b   5
ROM:000D98CA                 dc.b $EF ; cfSetVoice to voice #2
ROM:000D98CB                 dc.b   2
ROM:000D98CC                 dc.b $A9 ; 3E, with a duration of 12
ROM:000D98CD                 dc.b  $C
ROM:000D98CE                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D98CF                 dc.b   1
ROM:000D98D0                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98D1                 dc.b $80 ; Rest, with a duration of 7
ROM:000D98D2                 dc.b   7
ROM:000D98D3                 dc.b $80 ; Rest, with a duration of 5
ROM:000D98D4                 dc.b   5
ROM:000D98D5                 dc.b $8D ; 1C, with a duration of 12
ROM:000D98D6                 dc.b  $C
ROM:000D98D7                 dc.b $EF ; cfSetVoice to voice #2
ROM:000D98D8                 dc.b   2
ROM:000D98D9                 dc.b $A9 ; 3E, with a duration of 19
ROM:000D98DA                 dc.b $13
ROM:000D98DB                 dc.b $80 ; Rest, with a duration of 5
ROM:000D98DC                 dc.b   5
ROM:000D98DD                 dc.b $F9 ; cfJumpReturn
ROM:000D98DE                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D98DF                 dc.b   1
ROM:000D98E0                 dc.b $8D ; 1C, with a duration of 12
ROM:000D98E1                 dc.b  $C
ROM:000D98E2                 dc.b $80 ; Rest, with a duration of 0?
ROM:000D98E3                 dc.b $EF ; cFSetVoice to voice #2
ROM:000D98E4                 dc.b   2
ROM:000D98E5                 dc.b $A9 ; 3E. with a duration of 0?
ROM:000D98E6                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D98E7                 dc.b   1
ROM:000D98E8                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98E9                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98EA                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D98EB                 dc.b $EF ; cfSetVoice to voice #2
ROM:000D98EC                 dc.b   2
ROM:000D98ED                 dc.b $A9 ; 3E, with a duration of 0?
ROM:000D98EE                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D98EF                 dc.b   1
ROM:000D98F0                 dc.b $8D ; 1C, with a duration of 5
ROM:000D98F1                 dc.b   5
ROM:000D98F2                 dc.b $EF ; cfSetVoice to voice #2
ROM:000D98F3                 dc.b   2
ROM:000D98F4                 dc.b $80 ; Rest, with a duration of 7
ROM:000D98F5                 dc.b   7
ROM:000D98F6                 dc.b $F9 ; cfJumpReturn
ROM:000D98F7                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D98F8                 dc.b   1
ROM:000D98F9                 dc.b $8D ; 1C, with a duration of 12
ROM:000D98FA                 dc.b  $C
ROM:000D98FB                 dc.b $80 ; Rest, with a duration of 7
ROM:000D98FC                 dc.b   7
ROM:000D98FD                 dc.b $8D ; 1C, with a duration of 5
ROM:000D98FE                 dc.b   5
ROM:000D98FF                 dc.b $EF ; cfSetVoice to voice #2
ROM:000D9900                 dc.b   2
ROM:000D9901                 dc.b $A9 ; 3E, with a duration of 12
ROM:000D9902                 dc.b  $C
ROM:000D9903                 dc.b $EF ; cfSetVoice to voice #1
ROM:000D9904                 dc.b   1
ROM:000D9905                 dc.b $8D ; 1C, with a duration of 0?
ROM:000D9906                 dc.b $80 ; Rest, with a duration of 7
ROM:000D9907                 dc.b   7
ROM:000D9908                 dc.b $80 ; Rest, with a duration of 5
ROM:000D9909                 dc.b   5
ROM:000D990A                 dc.b $8D ; 1C, with a duration of 12
ROM:000D990B                 dc.b  $C
ROM:000D990C                 dc.b $EF ; cfSetVoice to a voice of #2
ROM:000D990D                 dc.b   2
ROM:000D990E                 dc.b $A9 ; 3E, with a duration of 19
ROM:000D990F                 dc.b $13
ROM:000D9910                 dc.b $A9 ; 3E, with a duration of 5
ROM:000D9911                 dc.b   5
ROM:000D9912                 dc.b $F9 ; cfJumpReturn


36.) (20) Azure Lake - 0xD99F7
No other unused data aside from unused cfStopTrack calls.

37.) (21) Balloon Park - 0xDA4FD

This song has a huge chunk of unused data. This seems to be related to one of the PSG channels. Again, this follows after a used cfStopTrack but for some reason BizHawk marked the byte after the cfStopTrack as used. I'm not sure if all of this is note data or if there's some voice data thrown in.

ROM:000DAE03                 dc.b $F2                ; Z80 Data
ROM:000DAE04                 dc.b $F3                ; Z80 Data - cfSetPSGNoise to $E7
ROM:000DAE05                 dc.b $E7
ROM:000DAE06                 dc.b $80 ; Rest, with a duration of 48
ROM:000DAE07                 dc.b $30
ROM:000DAE08                 dc.b $80 ; Rest, with a duration of 48
ROM:000DAE09                 dc.b $30
ROM:000DAE0A                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE0B                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE0C                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE0D                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE0E                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE0F                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE10                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE11                 dc.b $BB ; 4A♯/B♭, with a duration of 5
ROM:000DAE12                 dc.b   5
ROM:000DAE13                 dc.b $80 ; Rest, with a duration of 19
ROM:000DAE14                 dc.b $13
ROM:000DAE15                 dc.b $BB ; 4A♯/B♭, with a duration of 4
ROM:000DAE16                 dc.b   4
ROM:000DAE17                 dc.b $80 ; Rest, with a duration of 2
ROM:000DAE18                 dc.b   2
ROM:000DAE19                 dc.b $BB ; 4A♯/B♭, with a duration of 4
ROM:000DAE1A                 dc.b   4
ROM:000DAE1B                 dc.b $80 ; Rest, with a duration of 14
ROM:000DAE1C                 dc.b  $E
ROM:000DAE1D                 dc.b $BB ; 4A♯/B♭, with a duration of 5
ROM:000DAE1E                 dc.b   5
ROM:000DAE1F                 dc.b $80 ; Rest, with a duration of 19
ROM:000DAE20                 dc.b $13
ROM:000DAE21                 dc.b $BB ; 4A♯/B♭, with a duration of 6 and 1
ROM:000DAE22                 dc.b   6
ROM:000DAE23                 dc.b   1
ROM:000DAE24                 dc.b $80 ; Rest, with a duration of 17
ROM:000DAE25                 dc.b $11
ROM:000DAE26                 dc.b $BB ; 4A♯/B♭, with a duration of 7
ROM:000DAE27                 dc.b   7
ROM:000DAE28                 dc.b $80 ; Rest, with a duration of 17
ROM:000DAE29                 dc.b $11
ROM:000DAE2A                 dc.b $BB ; 4A♯/B♭, with a duration of 4
ROM:000DAE2B                 dc.b   4
ROM:000DAE2C                 dc.b $80 ; Rest, with a duration of 2
ROM:000DAE2D                 dc.b   2
ROM:000DAE2E                 dc.b $BB ; 4A♯/B♭, with a duration of 4
ROM:000DAE2F                 dc.b   4
ROM:000DAE30                 dc.b $80 ; Rest, with a duration of 14
ROM:000DAE31                 dc.b  $E
ROM:000DAE32                 dc.b $BB ; 4A♯/B♭, with a duration of 7
ROM:000DAE33                 dc.b   7
ROM:000DAE34                 dc.b $80 ; Rest, with a duration of 17
ROM:000DAE35                 dc.b $11
ROM:000DAE36                 dc.b $BB ; 4A♯/B♭, with a duration of 6 and 1
ROM:000DAE37                 dc.b   6
ROM:000DAE38                 dc.b   1
ROM:000DAE39                 dc.b $80 ; Rest, with a duration of 17
ROM:000DAE3A                 dc.b $11
ROM:000DAE3B                 dc.b $80 ; Rest, with a duration of 48
ROM:000DAE3C                 dc.b $30
ROM:000DAE3D                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE3E                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE3F                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE40                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE41                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE42                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE43                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE44                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE45                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE46                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE47                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE48                 dc.b $BA ; 4A, with a duration of 5
ROM:000DAE49                 dc.b   5
ROM:000DAE4A                 dc.b $80 ; Rest, with a duration of 19
ROM:000DAE4B                 dc.b $13
ROM:000DAE4C                 dc.b $BA ; 4A, with a duration of 4
ROM:000DAE4D                 dc.b   4
ROM:000DAE4E                 dc.b $80 ; Rest, with a duration of 2
ROM:000DAE4F                 dc.b   2
ROM:000DAE50                 dc.b $BA ; 4A, with a duration of 4
ROM:000DAE51                 dc.b   4
ROM:000DAE52                 dc.b $80 ; Rest, with a duration of 14
ROM:000DAE53                 dc.b  $E
ROM:000DAE54                 dc.b $BA ; 4A, with a duration of 5
ROM:000DAE55                 dc.b   5
ROM:000DAE56                 dc.b $80 ; Rest, with a duration of 19
ROM:000DAE57                 dc.b $13
ROM:000DAE58                 dc.b $BA ; 4A, with a duration of  6 and 1
ROM:000DAE59                 dc.b   6
ROM:000DAE5A                 dc.b   1
ROM:000DAE5B                 dc.b $80 ; Rest, with a duration of 17
ROM:000DAE5C                 dc.b $11
ROM:000DAE5D                 dc.b $BA ; 4A, with a duration of 7
ROM:000DAE5E                 dc.b   7
ROM:000DAE5F                 dc.b $80 ; Rest, with a duration of 17
ROM:000DAE60                 dc.b $11
ROM:000DAE61                 dc.b $BA ; 4A, with a duration of 4
ROM:000DAE62                 dc.b   4
ROM:000DAE63                 dc.b $80 ; Rest, with a duration of 2
ROM:000DAE64                 dc.b   2
ROM:000DAE65                 dc.b $BA ; ¦ 4A, with a duration of 4
ROM:000DAE66                 dc.b   4
ROM:000DAE67                 dc.b $80 ; Rest, with a duration of 14
ROM:000DAE68                 dc.b  $E
ROM:000DAE69                 dc.b $BA ; 4A, with a duration of 7
ROM:000DAE6A                 dc.b   7
ROM:000DAE6B                 dc.b $80 ; Rest, with a duration of 17
ROM:000DAE6C                 dc.b $11
ROM:000DAE6D                 dc.b $BA ; 4A, with a duration of 6 and 1
ROM:000DAE6E                 dc.b   6
ROM:000DAE6F                 dc.b   1
ROM:000DAE70                 dc.b $80 ; Rest, with a duration of 17
ROM:000DAE71                 dc.b $11
ROM:000DAE72                 dc.b $80 ; Rest, with a duration of 48
ROM:000DAE73                 dc.b $30
ROM:000DAE74                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE75                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE76                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE77                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE78                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE79                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE7A                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE7B                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE7C                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE7D                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE7E                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE7F                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE80                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE81                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE82                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE83                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE84                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE85                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE86                 dc.b $80 ; Rest, with a duration of 0?
ROM:000DAE87                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAE88                 dc.b  $C
ROM:000DAE89                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAE8A                 dc.b   6
ROM:000DAE8B                 dc.b $BA ; 4A, with a duration of 0?
ROM:000DAE8C                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAE8D                 dc.b  $C
ROM:000DAE8E                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAE8F                 dc.b   6
ROM:000DAE90                 dc.b $BA ; 4A, with a duration of 0?
ROM:000DAE91                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAE92                 dc.b  $C
ROM:000DAE93                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAE94                 dc.b   6
ROM:000DAE95                 dc.b $BA ; 4A, with a duration of 0?
ROM:000DAE96                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAE97                 dc.b  $C
ROM:000DAE98                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAE99                 dc.b   6
ROM:000DAE9A                 dc.b $BA ;4A, with a duration of 0
ROM:000DAE9B                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAE9C                 dc.b  $C
ROM:000DAE9D                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAE9E                 dc.b   6
ROM:000DAE9F                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEA0                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEA1                 dc.b  $C
ROM:000DAEA2                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEA3                 dc.b   6
ROM:000DAEA4                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEA5                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEA6                 dc.b  $C
ROM:000DAEA7                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEA8                 dc.b   6
ROM:000DAEA9                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEAA                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEAB                 dc.b  $C
ROM:000DAEAC                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEAD                 dc.b   6
ROM:000DAEAE                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEAF                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEB0                 dc.b  $C
ROM:000DAEB1                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEB2                 dc.b   6
ROM:000DAEB3                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEB4                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEB5                 dc.b  $C
ROM:000DAEB6                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEB7                 dc.b   6
ROM:000DAEB8                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEB9                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEBA                 dc.b  $C
ROM:000DAEBB                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEBC                 dc.b   6
ROM:000DAEBD                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEBE                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEBF                 dc.b  $C
ROM:000DAEC0                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEC1                 dc.b   6
ROM:000DAEC2                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEC3                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEC4                 dc.b  $C
ROM:000DAEC5                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEC6                 dc.b   6
ROM:000DAEC7                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEC8                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEC9                 dc.b  $C
ROM:000DAECA                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAECB                 dc.b   6
ROM:000DAECC                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAECD                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAECE                 dc.b  $C
ROM:000DAECF                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAED0                 dc.b   6
ROM:000DAED1                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAED2                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAED3                 dc.b  $C
ROM:000DAED4                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAED5                 dc.b   6
ROM:000DAED6                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAED7                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAED8                 dc.b  $C
ROM:000DAED9                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEDA                 dc.b   6
ROM:000DAEDB                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEDC                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEDD                 dc.b  $C
ROM:000DAEDE                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEDF                 dc.b   6
ROM:000DAEE0                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEE1                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEE2                 dc.b  $C
ROM:000DAEE3                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEE4                 dc.b   6
ROM:000DAEE5                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEE6                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEE7                 dc.b  $C
ROM:000DAEE8                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEE9                 dc.b   6
ROM:000DAEEA                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEEB                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEEC                 dc.b  $C
ROM:000DAEED                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEEE                 dc.b   6
ROM:000DAEEF                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEF0                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEF1                 dc.b  $C
ROM:000DAEF2                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEF3                 dc.b   6
ROM:000DAEF4                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEF5                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEF6                 dc.b  $C
ROM:000DAEF7                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEF8                 dc.b   6
ROM:000DAEF9                 dc.b $BA ;4A, with a duration of 0
ROM:000DAEFA                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAEFB                 dc.b  $C
ROM:000DAEFC                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAEFD                 dc.b   6
ROM:000DAEFE                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAEFF                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAF00                 dc.b  $C
ROM:000DAF01                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAF02                 dc.b   6
ROM:000DAF03                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAF04                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAF05                 dc.b  $C
ROM:000DAF06                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAF07                 dc.b   6
ROM:000DAF08                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAF09                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAF0A                 dc.b  $C
ROM:000DAF0B                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAF0C                 dc.b   6
ROM:000DAF0D                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAF0E                 dc.b $80 ; Ç
ROM:000DAF0F                 dc.b  $C
ROM:000DAF10                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAF11                 dc.b   6
ROM:000DAF12                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAF13                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAF14                 dc.b  $C
ROM:000DAF15                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAF16                 dc.b   6
ROM:000DAF17                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAF18                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAF19                 dc.b  $C
ROM:000DAF1A                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAF1B                 dc.b   6
ROM:000DAF1C                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAF1D                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAF1E                 dc.b  $C
ROM:000DAF1F                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAF20                 dc.b   6
ROM:000DAF21                 dc.b $BA ; 4A, with a duration of 0
ROM:000DAF22                 dc.b $80 ; Rest, with a duration of 12
ROM:000DAF23                 dc.b  $C
ROM:000DAF24                 dc.b $BA ; 4A, with a duration of 6
ROM:000DAF25                 dc.b   6
ROM:000DAF26                 dc.b $BA ; 4A, with a duration of 0?
ROM:000DAF27                 dc.b $F6 ; cfJumpTo AE08
ROM:000DAF28                 dc.b   8
ROM:000DAF29                 dc.b $AE


38.) (22) Desert Palace - 0xDB0EC
No other unused data aside from unused cfStopTrack calls.

39.) (23) Chrome Gadget - 0xDC324
Unused cfJumpTo. This is never called because it follows after another cfJumpTo that's used.
ROM:000DCD2F                 dc.b $F6                ; Z80 Data - cfJumpTo CA33
ROM:000DCD30                 dc.b $33                ; Z80 Data
ROM:000DCD31                 dc.b $CA                ; Z80 Data
ROM:000DCD32                 dc.b $F6 ; cfJumpTo CD2F
ROM:000DCD33                 dc.b $2F ; /
ROM:000DCD34                 dc.b $CD ; -
ROM:000DCD35                 dc.b $F2 ; cfStopTrack


40.) (24) Endless Mine - 0xDDA47
No other unused data aside from unused cfStopTrack calls.

41.) (25) Sonic 3 Title - 0xDE18F
There are no unused cfStopTrack calls so this might've been programmed by hand.
Unused voice.
ROM:000DE555                 dc.b $3C ; <
ROM:000DE556                 dc.b $71 ; q
ROM:000DE557                 dc.b $31 ; 1
ROM:000DE558                 dc.b $12
ROM:000DE559                 dc.b $11
ROM:000DE55A                 dc.b $17
ROM:000DE55B                 dc.b $1F
ROM:000DE55C                 dc.b $19
ROM:000DE55D                 dc.b $2F ; /
ROM:000DE55E                 dc.b   4
ROM:000DE55F                 dc.b   1
ROM:000DE560                 dc.b   7
ROM:000DE561                 dc.b   1
ROM:000DE562                 dc.b   0
ROM:000DE563                 dc.b   0
ROM:000DE564                 dc.b   0
ROM:000DE565                 dc.b   0
ROM:000DE566                 dc.b $F7 ; ˜
ROM:000DE567                 dc.b $F8 ; °
ROM:000DE568                 dc.b $F7 ; ˜
ROM:000DE569                 dc.b $F8 ; °
ROM:000DE56A                 dc.b $1D
ROM:000DE56B                 dc.b $84 ; ä
ROM:000DE56C                 dc.b $19
ROM:000DE56D                 dc.b $84 ; ä


42.) (26) Sonic 3 Credits - 0xDE587
Another interesting song. This also lacks unused cfStopTrack calls and is filled with random unused notes. Possibly programmed by hand.
Unused notes:
ROM:000DE5D7                 dc.b $E6 ; cfChangeVolume to 9
ROM:000DE5D8                 dc.b   9
ROM:000DE5D9                 dc.b $A1 ; 2G♯/A♭ with a duration of 96
ROM:000DE5DA                 dc.b $60 
ROM:000DE5DB                 dc.b $A1 ; 2G♯/A♭ with a duration of 0?
ROM:000DE5DC                 dc.b $E6 ; cfChangeVolume to -9?
ROM:000DE5DD                 dc.b $F7 
ROM:000DE5DE                 dc.b $EF ; cfSetVoice to voice #0
ROM:000DE5DF                 dc.b   0
ROM:000DE5E0                 dc.b $F8 ; cfJumpToGosub to E5E6
ROM:000DE5E1                 dc.b $E6
ROM:000DE5E2                 dc.b $E5
ROM:000DE5E3                 dc.b $F6 ; cfJumpTo E5E0
ROM:000DE5E4                 dc.b $E0
ROM:000DE5E5                 dc.b $E5


Unused notes, these are just commands to jump:
ROM:000DE69D                 dc.b $F8 ; cfJumpToGosub to E6FD
ROM:000DE69E                 dc.b $FD
ROM:000DE69F                 dc.b $E6
ROM:000DE6A0                 dc.b $F6 ; cfJumpTo E69D
ROM:000DE6A1                 dc.b $9D
ROM:000DE6A2                 dc.b $E6


ROM:000DE7BE                 dc.b $C0 ; 5D♯/E♭, with a duration of 96
ROM:000DE7BF                 dc.b $60
ROM:000DE7C0                 dc.b $E7 ; cfPreventAttack but with a param? This doesn't take a param though...
ROM:000DE7C1                 dc.b $60
ROM:000DE7C2                 dc.b $F8 ; cfJumpToGosub E7D8
ROM:000DE7C3                 dc.b $D8
ROM:000DE7C4                 dc.b $E7 ; cfPreventAttack
ROM:000DE7C5                 dc.b $F8 ; cfJumpToGosub E7F7
ROM:000DE7C6                 dc.b $F7 
ROM:000DE7C7                 dc.b $E7 
ROM:000DE7C8                 dc.b $F6 ; cfJumpTo E7C2
ROM:000DE7C9                 dc.b $C2
ROM:000DE7CA                 dc.b $E7


Unused notes
ROM:000DE857                 dc.b $AF ; 3A♯/B♭, with a duration of 96
ROM:000DE858                 dc.b $60
ROM:000DE859                 dc.b $B1 ; 4C, with a duration of 0?
ROM:000DE85A                 dc.b $FB ; cfChangeTransposition to 0xF4?
ROM:000DE85B                 dc.b $F4
ROM:000DE85C                 dc.b $F8 ; cfJumpToGosub E7D8
ROM:000DE85D                 dc.b $D8
ROM:000DE85E                 dc.b $E7
ROM:000DE85F                 dc.b $FB ; cfChangeTransposition to 0xC?
ROM:000DE860                 dc.b  $C
ROM:000DE861                 dc.b $E6 ; cfChangeVolume to -3?
ROM:000DE862                 dc.b $FD
ROM:000DE863                 dc.b $AB ; 3F♯/G♭, with a duration of 36
ROM:000DE864                 dc.b $24
ROM:000DE865                 dc.b $AF ; 3A♯/B♭, with a duration of 0?
ROM:000DE866                 dc.b $B2 ; 4C♯/D♭, with a duration of 24
ROM:000DE867                 dc.b $18
ROM:000DE868                 dc.b $B1 ; 4C, with a duration of 36
ROM:000DE869                 dc.b $24
ROM:000DE86A                 dc.b $AD ; 3G♯/A♭, with a duration of 0?
ROM:000DE86B                 dc.b $A8 ; 3D♯/E♭, with a duration of 24
ROM:000DE86C                 dc.b $18
ROM:000DE86D                 dc.b $E6 ; cfChangeVolume to 3
ROM:000DE86E                 dc.b   3
ROM:000DE86F                 dc.b $F6 ; cfJumpTo E85A
ROM:000DE870                 dc.b $5A
ROM:000DE871                 dc.b $E8


Some unused jumps
ROM:000DE8BC                 dc.b $F8 ; cfJumpToGosub E8C2
ROM:000DE8BD                 dc.b $C2
ROM:000DE8BE                 dc.b $E8
ROM:000DE8BF                 dc.b $F6 ; cfJumpTo E8BC
ROM:000DE8C0                 dc.b $BC
ROM:000DE8C1                 dc.b $E8


Unused notes:
ROM:000DE9C0                 dc.b $C0 ; 5D♯/E♭, with duration 24
ROM:000DE9C1                 dc.b $18
ROM:000DE9C2                 dc.b $A3 ; 2A♯/B♭
ROM:000DE9C3                 dc.b $A4 ; 2B
ROM:000DE9C4                 dc.b $A3 ; 2A♯/B♭
ROM:000DE9C5                 dc.b $F7 ; cfRepeatAtPos with index 0, a repeat count of 3, and a jump targe of E9C0
ROM:000DE9C6                 dc.b   0
ROM:000DE9C7                 dc.b   3
ROM:000DE9C8                 dc.b $C0 ; 5D♯/E♭, with a duration of 0?
ROM:000DE9C9                 dc.b $E9 ; cfSpindashRev (rev's up the track)
ROM:000DE9CA                 dc.b $C0 ; 5D♯/E♭, with duration of 24
ROM:000DE9CB                 dc.b $18
ROM:000DE9CC                 dc.b $A3 ; 2A♯/B♭, with a duration of 12
ROM:000DE9CD                 dc.b $12
ROM:000DE9CE                 dc.b $80 ; Rest, with a duration of 0
ROM:000DE9CF                 dc.b $12
ROM:000DE9D0                 dc.b $C0 ; 5D♯/E♭, with a duration of 0
ROM:000DE9D1                 dc.b $C0 ; 5D♯/E♭, with a duration of 0
ROM:000DE9D2                 dc.b $F6 ; cfJumpto E9C0
ROM:000DE9D3                 dc.b $C0
ROM:000DE9D4                 dc.b $E9


43.) (27) Game Over - 0xDEA20
No unused bytes whatsoever.

44.) (28) Continue - 0xDEC7B

Just some unused rests I think, with a cFStopTrack:
ROM:000DED31                 dc.b $80 ; Ç
ROM:000DED32                 dc.b $7F ; 
ROM:000DED33                 dc.b $80 ; Ç
ROM:000DED34                 dc.b $80 ; Ç
ROM:000DED35                 dc.b $80 ; Ç
ROM:000DED36                 dc.b $53 ; S
ROM:000DED37                 dc.b $F2 ; =
[/asm]

ROM:000DEE6E                 dc.b $80 ; Ç
ROM:000DEE6F                 dc.b $7F ; 
ROM:000DEE70                 dc.b $80 ; Ç
ROM:000DEE71                 dc.b $80 ; Ç
ROM:000DEE72                 dc.b $80 ; Ç
ROM:000DEE73                 dc.b $80 ; Ç
ROM:000DEE74                 dc.b $80 ; Ç
ROM:000DEE75                 dc.b $41 ; A
ROM:000DEE76                 dc.b $F2 ; =


ROM:000DEEE6                 dc.b $80 ; Ç
ROM:000DEEE7                 dc.b $7F ; 
ROM:000DEEE8                 dc.b $80 ; Ç
ROM:000DEEE9                 dc.b $80 ; Ç
ROM:000DEEEA                 dc.b $5C ; \
ROM:000DEEEB                 dc.b $F2 ; =


ROM:000DEF48                 dc.b $80 ; Ç
ROM:000DEF49                 dc.b $7F ; 
ROM:000DEF4A                 dc.b $80 ; Ç
ROM:000DEF4B                 dc.b $80 ; Ç
ROM:000DEF4C                 dc.b $5C ; \
ROM:000DEF4D                 dc.b $F2 ; =


45.) (2A) - Sonic 3 1UP - 0xDF095
Unused voice.
ROM:000DF266                 dc.b $3C ; <
ROM:000DF267                 dc.b   1
ROM:000DF268                 dc.b   2
ROM:000DF269                 dc.b  $F
ROM:000DF26A                 dc.b   4
ROM:000DF26B                 dc.b $8D ; ì
ROM:000DF26C                 dc.b $52 ; R
ROM:000DF26D                 dc.b $9F ; ƒ
ROM:000DF26E                 dc.b $1F
ROM:000DF26F                 dc.b   9
ROM:000DF270                 dc.b   0
ROM:000DF271                 dc.b   0
ROM:000DF272                 dc.b  $D
ROM:000DF273                 dc.b   0
ROM:000DF274                 dc.b   0
ROM:000DF275                 dc.b   0
ROM:000DF276                 dc.b   0
ROM:000DF277                 dc.b $23 ; #
ROM:000DF278                 dc.b   8
ROM:000DF279                 dc.b   2
ROM:000DF27A                 dc.b $F7 ; ˜
ROM:000DF27B                 dc.b $15
ROM:000DF27C                 dc.b $80 ; Ç
ROM:000DF27D                 dc.b $1D
ROM:000DF27E                 dc.b $87 ; ç


46.) (2B) Chaos Emerald - 0xDF298
Some unused notes. I have no idea why this is unused, as I didn't think it was unused when I looked at the data in Sonic 1? It's possible the song stops during the fade out so these don't get to play. The first cFSetVoice that is set to 1 was marked used by BizHawk, which is probably a mistake.
ROM:000DF301                 dc.b $F2                ; Z80 Data - cFStopTrack
ROM:000DF302                 dc.b $EF                ; Z80 Data - cFSetVoice to voice #1
ROM:000DF303                 dc.b   1
ROM:000DF304                 dc.b $C4 ; 5G, with duration 12
ROM:000DF305                 dc.b  $C
ROM:000DF306                 dc.b $C4 ; 5G, with duration 6
ROM:000DF307                 dc.b   6
ROM:000DF308                 dc.b $C9 ; 6C, with duration 6
ROM:000DF309                 dc.b   6
ROM:000DF30A                 dc.b $80 ; Rest, with duration 0?
ROM:000DF30B                 dc.b $C9 ; 6C, with duration 0?
ROM:000DF30C                 dc.b $80 ; Rest, with duration 0?
ROM:000DF30D                 dc.b $CD ; 6E, with duration 42?
ROM:000DF30E                 dc.b $2A ; 
ROM:000DF30F                 dc.b $F2 ; cFStopTrack


47.) (2C) Sonic 3 Invincibility - 0xDF364
No other unused data aside from unused cfStopTrack calls.

48.) (2D) Competition Menu - 0xDF5E4
Unused voice:
ROM:000DFA5A                 dc.b   3
ROM:000DFA5B                 dc.b   2
ROM:000DFA5C                 dc.b   2
ROM:000DFA5D                 dc.b   2
ROM:000DFA5E                 dc.b   2
ROM:000DFA5F                 dc.b $1F
ROM:000DFA60                 dc.b $1F
ROM:000DFA61                 dc.b $1F
ROM:000DFA62                 dc.b $1F
ROM:000DFA63                 dc.b   8
ROM:000DFA64                 dc.b   8
ROM:000DFA65                 dc.b   0
ROM:000DFA66                 dc.b  $E
ROM:000DFA67                 dc.b   0
ROM:000DFA68                 dc.b   0
ROM:000DFA69                 dc.b   0
ROM:000DFA6A                 dc.b   5
ROM:000DFA6B                 dc.b $3F ; ?
ROM:000DFA6C                 dc.b $3F ; ?
ROM:000DFA6D                 dc.b  $F
ROM:000DFA6E                 dc.b $7F ; 
ROM:000DFA6F                 dc.b $81 ; ü
ROM:000DFA70                 dc.b $20
ROM:000DFA71                 dc.b $1D
ROM:000DFA72                 dc.b $82 ; é


49.) (31) Drowning - 0xDFABE
No unused bytes whatsoever.

50.) (32) Sonic 3 All Clear - 0xDFBFE
Unused voice.
ROM:000DFE7A                 dc.b $3C ; <
ROM:000DFE7B                 dc.b $71 ; q
ROM:000DFE7C                 dc.b $31 ; 1
ROM:000DFE7D                 dc.b $12
ROM:000DFE7E                 dc.b $11
ROM:000DFE7F                 dc.b $17
ROM:000DFE80                 dc.b $1F
ROM:000DFE81                 dc.b $19
ROM:000DFE82                 dc.b $2F ; /
ROM:000DFE83                 dc.b   4
ROM:000DFE84                 dc.b   1
ROM:000DFE85                 dc.b   7
ROM:000DFE86                 dc.b   1
ROM:000DFE87                 dc.b   0
ROM:000DFE88                 dc.b   0
ROM:000DFE89                 dc.b   0
ROM:000DFE8A                 dc.b   0
ROM:000DFE8B                 dc.b $F7 ; ˜
ROM:000DFE8C                 dc.b $F8 ; °
ROM:000DFE8D                 dc.b $F7 ; ˜
ROM:000DFE8E                 dc.b $F8 ; °
ROM:000DFE8F                 dc.b $1D
ROM:000DFE90                 dc.b $84 ; ä
ROM:000DFE91                 dc.b $19
ROM:000DFE92                 dc.b $84 ; ä

------------------------------------------------------------------------------------------------------------------------

It'd be interesting to see if anyone could take a look at those notes for S3 Knuckles theme and the Staff Credits, if those turn out to be anything at all. :)/>
This post has been edited by evilhamwizard: 28 April 2018 - 02:21 PM

#2 User is offline Natsumi 

Posted 28 April 2018 - 04:13 PM

  • Miss Fox
  • Posts: 170
  • Joined: 08-February 12
  • Gender:Female
  • Location:Otter's lap
  • Project:Being with my boyfriend

View Postevilhamwizard, on 28 April 2018 - 02:20 PM, said:

The impression that I get when looking at the sound data for Sonic 3 is that the process for programming the music became more streamlined, possibly for the relatively new people who hopped on board the SEGA SOUND TEAM. As such, I suspect that at this point tools were created to make converting common tracker/midi formats easier. In comparison to the early Mega Drive titles, where it was likely that many of the games were sequenced using macro'd assembler. The reason for bringing this up is due to the fact that using such tools can introduce common intricacies that rear up in every song. As such, the most common thing that I noticed when looking at the sound data this time around is that there are many instances where a "cfStopTrack" command ($F2) is issued but never called because the music will call "cfJumpTo" ($F6) before it occurs. Many, but not all, songs do this which is interesting. I believe this might've been a leftover from the conversion tools that were used, or part of some asm macro that included the cfStopTrack after certain jumps by default. So, instead of noting where there are unused cfStopTracks (because it would take me forever and aren't that interesting), I will note when songs don't have any unused cFStopTracks at all.



I don't think this is a likely case, as there is no reason for an automated tool to insert these artifacts into the sequence data. Indeed, it is far more likely that the music programmers used stop and jump commands to test the music in production stage, make sure it will loop correctly, and that everything will sound alright, and simply never went to remove the extra commands. This was a very common occurrence in Mega Drive titles, so much so that from the songs I've converted from game to another, I see this more often than not. And much unlike GEMS, SMPS was not designed to work with common formats (at the time), such as MIDI. I find it most likely sound programmers made the music by hand, and this is why you can find these unused oddities in the first place.

Something that might help you in continued research though, is SMPS2ASM. These should help you with research to the actual tracker code, rather than having to look at hex dumps.
This post has been edited by Natsumi: 28 April 2018 - 04:17 PM

#3 User is offline evilhamwizard 

Posted 28 April 2018 - 04:13 PM

  • Posts: 1272
  • Joined: 16-June 04
  • Gender:Male
  • Wiki edits:109
Double posting because I wanted to share this (so it doesn't get lost in the big post).

Alternate Ending to the Sonic 3 Staff Credits

So I looked into the unused sequence data for the Sonic 3 credits because I was genuinely curious what it was. I went in the ROM and changed the cFJumpTos that come before the unused bytes at 000DE5D7, 000DE857, and 000DE9C0 so that it jumps right to the unused sequencing data. I didn't modify the other sections, although I probably should have to see if it sounded any different. After the song loops once, this additional ending gets added. It might sound like it works, but it messed up a few seconds into the second loop so it's not exactly correct. I still don't know if this is actually how it's supposed to sound or if there's something missing, but it's definitely unused. :)/>

View PostNatsumi, on 28 April 2018 - 04:13 PM, said:

I don't think this is a likely case, as there is no reason for an automated tool to insert these artifacts into the sequence data. Indeed, it is far more likely that the music programmers used stop and jump commands to test the music in production stage, make sure it will loop correctly, and that everything will sound alright, and simply never went to remove the extra commands. This was a very common occurrence in Mega Drive titles, so much so that from the songs I've converted from game to another, I see this more often than not. And much unlike GEMS, SMPS was not designed to work with common formats (at the time), such as MIDI. I find it most likely sound programmers made the music by hand, and this is why you can find these unused oddities in the first place.

Hmm, I didn't think about that but it makes a lot more sense.


View PostNatsumi, on 28 April 2018 - 04:13 PM, said:

Something that might help you in continued research though, is SMPS2ASM. These should help you with research to the actual tracker code, rather than having to look at hex dumps.


Woah this is great, thanks! This would've saved me a few hours. :P
This post has been edited by evilhamwizard: 28 April 2018 - 04:36 PM

#4 User is offline T.Q. 

Posted 28 April 2018 - 05:15 PM

  • The Sims 2, Dr. Julian Ivo Robotnik
  • Posts: 443
  • Joined: 28-August 03
  • Gender:Male
  • Location:Earth, Milky Way Galaxy
  • Project:The company is now bankrupt. No more lego game show creations will occur
  • Wiki edits:5
Very neat find with the Sonic 3 staff credits. I like that transition!

When I first heard that, I thought, "oh wow, there's actually an ending to the tune?", but then it looped.

Could you modify the other sections to let us know how it sounds?
This post has been edited by T.Q.: 28 April 2018 - 05:15 PM

#5 User is offline evilhamwizard 

Posted 28 April 2018 - 07:12 PM

  • Posts: 1272
  • Joined: 16-June 04
  • Gender:Male
  • Wiki edits:109

View PostT.Q., on 28 April 2018 - 05:15 PM, said:

Very neat find with the Sonic 3 staff credits. I like that transition!

When I first heard that, I thought, "oh wow, there's actually an ending to the tune?", but then it looped.

Could you modify the other sections to let us know how it sounds?


I gave it a try with SMPS2ASM and MDMusicPlayer.

I modified the asm by eliminating the jumps and just leaving the unused parts as is. It still doesn't sound exactly right because I don't know what's meant to be there and what's there for some other reason (for testing, etc). One thing to note, the song will repeat a bar after the unused section instead of looping the song like it does originally. It looks like the unused calls/jumps were put there to loop that section of the song specifically, so I don't know if that was meant for testing or if the song was originally supposed to loop just that bar forever after the unused section.
This post has been edited by evilhamwizard: 28 April 2018 - 07:21 PM

#6 User is offline Clownacy 

Posted 28 April 2018 - 09:15 PM

  • Posts: 738
  • Joined: 06-July 13
  • Gender:Not Telling
I already checked S2. The credits music has a small section that I couldn't make sense of, but there's not much else. There's nothing hidden in S1/S2's SFX either.

Anyhow, I figured I'd clarify a few SMPS things:
  • Saying S2 Simon Wai's driver is more like S1's driver is a bit of a stretch. It's just S2 Final's driver without compression support, and a few tiny S1 features/bugs left in.
  • I don't think SMPS music ever stopped being hand-written. There's a Sega Pico SDK floating around that actually contains an SMPS driver, and all its music is in macro'd ASM format. There are no tools in the SDK to convert anything. The ASM music also looks hand-edited: there's an inconsistent number of values per dc.b, cfModulation parameters aren't consistent, and parts are commented-out.


On the subject of unused music stuff, this has been found before but I figure it'd be nice to keep it centralised here: Azure Lake has a section that uses an instrument that doesn't exist. It probably makes it inaudible.

It's weird. With a number that high, you'd think it was maybe trying to use an instrument from the Universal Voice Bank, but even that tops out at $22.

That reminds me, Chaotix has a similar issue too: 'Have Some Fun' tries to use a PSG envelope that doesn't exist. Heck, speaking of Chaotix, one song has three of its PWM channels dummied out.

#7 User is offline evilhamwizard 

Posted 28 April 2018 - 11:17 PM

  • Posts: 1272
  • Joined: 16-June 04
  • Gender:Male
  • Wiki edits:109

View PostClownacy, on 28 April 2018 - 09:15 PM, said:

On the subject of unused music stuff, this has been found before but I figure it'd be nice to keep it centralised here: Azure Lake has a section that uses an instrument that doesn't exist. It probably makes it inaudible.

It's weird. With a number that high, you'd think it was maybe trying to use an instrument from the Universal Voice Bank, but even that tops out at $22.

That reminds me, Chaotix has a similar issue too: 'Have Some Fun' tries to use a PSG envelope that doesn't exist. Heck, speaking of Chaotix, one song has three of its PWM channels dummied out.


Hehe, I posted about the Azure Lake one almost seven years a go from the date. The other interesting thing about that is that the part that's using the instrument number that doesn't exist actually exists in the PC port's midi file. Which was one of the reasons why I thought they might've used a conversion tool, at least to help speed things a long. Since having the notes there in the PC port's midi file might mean they had something to use as reference in making the PC port, either the original midi files before conversion (which was what I assumed even back then) or they just looked at the handwritten .asm data.

Speaking of weird PSG stuff, so that Balloon Park data. I didn't realize that the third PSG channel goes completely unused in the song, even though it has data!

Snd_BPZ_PSG3:
	smpsStop

; Unreachable
	smpsPSGform         $E7
	dc.b	nRst, $30

Snd_BPZ_Jump05:
	dc.b	nRst, $30, nRst, nRst, nRst, nRst, nRst, nRst, nRst, nBb4, $05, nRst
	dc.b	$13, nBb4, $04, nRst, $02, nBb4, $04, nRst, $0E, nBb4, $05, nRst
	dc.b	$13, nBb4, $06, $01, nRst, $11, nBb4, $07, nRst, $11, nBb4, $04
	dc.b	nRst, $02, nBb4, $04, nRst, $0E, nBb4, $07, nRst, $11, nBb4, $06
	dc.b	$01, nRst, $11, nRst, $30, nRst, nRst, nRst, nRst, nRst, nRst, nRst
	dc.b	nRst, nRst, nRst, nRst, nA4, $05, nRst, $13, nA4, $04, nRst, $02
	dc.b	nA4, $04, nRst, $0E, nA4, $05, nRst, $13, nA4, $06, $01, nRst
	dc.b	$11, nA4, $07, nRst, $11, nA4, $04, nRst, $02, nA4, $04, nRst
	dc.b	$0E, nA4, $07, nRst, $11, nA4, $06, $01, nRst, $11, nRst, $30
	dc.b	nRst, nRst, nRst, nRst, nRst, nRst, nRst, nRst, nRst, nRst, nRst, nRst
	dc.b	nRst, nRst, nRst, nRst, nRst, nRst, nRst, nRst, $0C, nA4, $06, nA4
	dc.b	nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C
	dc.b	nA4, $06, nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4, $06
	dc.b	nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4, $06, nA4, nRst
	dc.b	$0C, nA4, $06, nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4
	dc.b	$06, nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4, $06, nA4
	dc.b	nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C
	dc.b	nA4, $06, nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4, $06
	dc.b	nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4, $06, nA4, nRst
	dc.b	$0C, nA4, $06, nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4
	dc.b	$06, nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4, $06, nA4
	dc.b	nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C
	dc.b	nA4, $06, nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4, $06
	dc.b	nA4, nRst, $0C, nA4, $06, nA4, nRst, $0C, nA4, $06, nA4
	smpsJump            Snd_BPZ_Jump05


There's a command in the beginning of the channel to stop the channel before it plays anything. Removing the smpsStop will allow the data in the channel to play but it sounds almost inaudible. It seems to change PSG3 into a noise channel with parameter E7 and tries to play something that resembles percussion but it doesn't sound good at all. I removed the cfSetPSGNoise command just to see when/where the sequence data plays in the song, and came up with this:

https://tinyurl.com/y872jfqm
https://tinyurl.com/ycgfk5zd <- the original psg3

I looked at the PC collection's midi file for this song just in case it might appear there, but it doesn't. Very weird.
This post has been edited by evilhamwizard: 28 April 2018 - 11:25 PM

#8 User is offline Crash~ 

Posted 11 June 2018 - 01:25 AM

  • Posts: 6
  • Joined: 19-May 16
  • Gender:Male
Sorry about the bump, but there's another song on the s3k soundtrack that suggests that they had some sort of very basic tool for converting songs to SMPS format -- Chrome Gadget.

What makes me think this, is that while the DAC and PSG3 channels are nice and optimised, with heavy use of loops and calls for repeated sections, the data for every other channel is from start to finish "note,note length" bytes over and over, even when it seems it'd be a no-brainer that if a person was typing all of this out they'd use the loop coordination flag.

So my theory is that there was some sort of automated tool (that wasn't necessarily used all the time), that could be used to convert songs from some other format to a SMPS asm file, that would spit out pretty badly optimised data that would then be fixed up by hand, and they ran out of time to fix this one song up. The song even feels kind of rushed from a mixing standpoint, with the brass chords being way louder than the actual lead instrument, and that nice little solo that plays on PSG2 just before the song loops but it's almost inaudibly quiet.

Page 1 of 1
    Locked
    Locked Forum

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users