Bubsy II
Bubsy II | |
---|---|
File:BubsyIIGenesis.png
Do you believe in miracles?!
| |
Developer | Accolade |
Publisher | Accolade, Sega |
Composer | Chip Harris |
System | Sega Mega Drive / Genesis |
Sound Chips | YM2612 |
Release date | 1994-10-15 (U) |
VGM pack page | |
Discuss this at forum |
Bubsy II is a platformer created by Accolade and released on the Sega Genesis and SNES in 1994. (It also had a dreadful Game Boy port that nobody liked.) It's the sequel of Bubsy in Claws Encounters of the Furred Kind.
This game uses a custom music engine by former Accolade employee Russell Shiffer. The music speeds up and slows to normal based on Bubsy's velocity. In non-mini game levels, tracks change at semi-random: some tend to or only play in certain spots, while worlds without flying portions shift to "enemies onscreen" music the second that event occurs, or sometimes when the End of Level Marker is onscreen but untouched. No looping songs have intros.
Aside from enemies being or not being present, the music playing at the start of a level is also randomized (based on situation as described above; in Egypt, starting in front of a door plays only the last Egypt bank's one song). Starting from an Exclamation Point after death may play more variants than the level start gives, but I can't remember if this is the case.
All tracks work with vgm_sptd (given a large-enough silence buffer), and loopers uniformly give !
s in vgmlpfnd with long-enough recordings. However, some tracks may give "excessive" !
loops.
The music pointer list was found by fever500, and all further research based thereof + this article compiled by (Jazz) Jackalope.
Song Pointers
The best way to record is a multi-step process:
- Replace the Amazatorium Hub's Bank Address with the one holding the subsong you want.
- Change the numbers in its last slot (
FF FF
, when you first start) to match the slot of said subsong. - (Optional) When you start the game to reach the hub, create a savestate before the "Next Up..." text leaves. This way, when you reload the ROM to record other tracks, you can jump there instantly.
- Start recording at least a second before the music starts.
Recording from the Hub should avoid issues that come with the sound engine's use in levels.
Pointer ID | Bank's ROM Address (Probably) | Slot #0 | Slot #1 | Slot #2 | Slot #3 | Slot #4 | Slot #5 (Default?) | Usage |
---|---|---|---|---|---|---|---|---|
310E | 00 00 00 | 00 00 | 00 00 | 00 00 | 00 00 | 00 00 | 00 00 | Silence |
311E | 0D 24 1A | FF FF | FF FF | FF FF | FF FF | FF FF | FF FF | Title Screen, End of Game (Mini) |
312E | 0D 5A 46 | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Amazatorium Hub |
313E | 0C 14 12 | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Egypt World (Hub) |
314E | 0C 81 90 | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Music World (Hub) |
315E | 0B AC 6C | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Aerial World (Hub) |
316E | 0D 1B 1C | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Space World (Hub) |
317E | 0C 88 06 | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Medieval World (Hub) |
318E | 0C 19 98 | 00 00 | FF FD | FF FD | FF FF | FF FF | FF FF | Egypt World (1) |
319E | 0C 26 D0 | 00 00 | FF F9 | FF F9 | FF FF | FF FF | FF FF | Egypt World (2) |
31AE | 0C 41 7C | 00 00 | FF E7 | FF E7 | FF FF | FF FF | FF FF | Egypt World (3) |
31BE | 0C 4E A8 | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Egypt World (4) |
31CE | 0C 1F 7C | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Enemies in Egypt World (1) |
31DE | 0C 47 CC | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Enemies in Egypt World (2) |
31EE | 0C 2E 1A | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Enemies in Egypt World (3), Waterslides |
31FE | 0C 55 44 | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Egypt World (5) |
320E | 0C 95 62 | 00 00 | 00 0F | 00 0F | 00 33 | 0C 23 | F0 03 | Music World (1) |
321E | 0C AC B0 | 00 00 | FF FF | 00 3F | 04 3F | 0C 3F | 1C 3F | Music World (2) |
322E | 0C CF 5C | 00 00 | FF FF | 04 3C | 04 3D | 0C 3F | 7C 3F | Music World (3) |
323E | 0C B3 AE | 00 00 | FF FF | 04 30 | 04 33 | 78 33 | 60 1F | Music World (4) |
324E | 0C A2 E0 | 00 00 | FF FF | 00 07 | 48 3A | 0C 3A | 68 33 | Enemies in Music World (1) |
325E | 0C BA 88 | 00 00 | FF FF | 04 3F | 0C 1F | 30 1D | 74 3F | Enemies in Music World (2) |
326E | 0B B2 54 | 00 00 | FF DF | FF DF | FF DF | FF F7 | FF F7 | Aerial World (1) |
327E | 0B BD 56 | 00 00 | FF EF | FF EF | FF EF | FF FF | FF FF | Aerial World (2) |
328E | 0D 50 1E | 00 00 | 7F FF | 7F FF | 7F FF | 7F FF | 7F FF | Aerial World (3) |
329E | 0B C3 9E | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Aerial World (4) |
32AE | 0C 34 CC | 00 32 | FF FF | FF FF | FF FF | FF FF | FF FF | Frogapult |
32BE | 0D 44 4E | FF FF | FF FF | FF FF | FF FF | FF FF | FF FF | Frog Launch, Caught in Whirlpool |
32CE | 0B C2 16 | FF FF | FF FF | FF FF | FF FF | FF FF | FF FF | Frog Fall |
32DE | 0C FC 98 | FF FF | FF FF | FF FF | FF FF | FF FF | FF FF | Frog Struck Target |
32EE | 0B CA EA | 00 50 | FF FF | FF FF | FF FF | FF FF | FF FF | Armadillo Drop |
32FE | 0C 8C 68 | 00 00 | BF FF | BF FF | BF FF | FF FF | FF FF | Space World (1) |
330E | 0C D5 E8 | 00 00 | FF EF | FF EF | FF EF | FF FF | FF FF | Space World (2) |
331E | 0C F2 74 | 00 00 | FF FC | FF FC | FF FC | FF FF | FF FF | Space World (3) |
332E | 0C E0 18 | 00 00 | FF FD | FF FD | FF FD | FF FF | FF FF | Space World (4) |
333E | 0C 74 E2 | 00 00 | FF F3 | FF F3 | FF F3 | FF AF | FF AF | Medieval World (1) |
334E | 0C 58 A8 | 00 00 | FF FD | FF FD | FF FD | FB EF | FB EF | Medieval World (2) |
335E | 0C 08 E2 | 00 00 | FF FF | FF FF | FF FF | FF DF | FF DF | Medieval World (3) |
336E | 0C 7A 2C | 00 00 | FF FF | FF FF | FF FF | FF FE | FF FE | Medieval World (4) |
337E | 0C 5E 9A | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Enemies in Medieval World (1) |
338E | 0C 66 36 | 00 00 | FF FF | FF FF | FF FF | FF FF | FF FF | Enemies in Medieval World (2) |
339E | 0B E5 06 | FF FF | FF FF | FF FF | FF FF | FF FF | FF FF | Boss (1st Floor of Grand Tour) |
33AE | 0B F8 3A | FF FF | FF FF | FF FF | FF FF | FF FF | FF FF | Boss (2nd Floor of Grand Tour) |
33BE | 0C BF B8 | FF FF | FF FF | FF FF | FF FF | FF FF | FF FF | Boss (Oinker P. Hamm) |
33CE | 0D 45 D6 | FF FF | FF FF | FF FF | FF FF | FF FF | FF FF | Level Complete, End of Game (Points) |
33DE | 0C 12 DC | FF FF | FF FF | FF FF | FF FF | FF FF | FF FF | Death |
33EE | 0C FC C4 | 00 32 | FF FF | FF FF | FF FF | FF FF | FF FF | Liquid Lunacy |
33FE | 0D 4A FA | FF FF | FF FF | FF FF | FF FF | FF FF | FF FF | EOL Score Tally, Time Trophy Tally, End of Game (Time) |
While "available subsongs" may not be the only thing indicated by the slots, all known subsongs played in the game were found using these numbers. I assume based on the Amazatorium Hub that the final slot controls which one is played or indicates a default.
You can use other values than those listed, but the results aren't assumed to be intended by the programmers. There'll also be some overlap among values. Consider the experiment below:
Subject: Space (3) last FF to: 00: most instruments vanish F8: Variant "-b" (melody instruments only) F9: Ticking instrument gone, but drums remain FA: Ticking instrument remains, but drums gone FB: Same as FF ("-a", all instruments) FC: Same as F8 FD: Same as F9 FE: Same as FA
List of Possible Pointer References
Though not seemingly useful for VGM recording (impossible to select subsongs?), some of the pointers above have possible references throughout the ROM. Only the two uses of Title Screen and the Oinker boss are confirmed. Many song banks are unreferenced (including the Hub), and thus not included below.
Pointer | Referenced at (0x) |
---|---|
00310E | A629, 1FD1B2 |
00311E | 7E37 (Title Screen), 1E229 (End of Game (Mini)) |
00313E | 19D1BD |
00314E | 4D5C, 1DC9A, 1DDC2 |
00318E | 14B8ED |
00320E | 1E8C38, 1E8C44, 1E9AD8, 1EB0DA, 1EB0FE, 1F419A, 1F41B2, 1F41CA, 1FA0D4, 1FA128, 1FAC74, 1FB934, 1FD182 |
00321E | 1E90AC |
00322E | B303 |
00324E | 1D67A, 1D6C0 |
0032BE | 53B1 |
0032CE | C68D, 15123F, 152137 |
0032DE | C31F |
00333E | 7B83C, 93605 |
00334E | 5969B, 61F95, 62739, 7C418, 7E850 |
0033BE | A5E1 (Oinker Boss) |
0033CE | A7C5, 1BD2F, 1CA19, 1DE49, 1E053 |
0033DE | 4BFF |
0033EE | 8CFAB, 8D0B3 |
0033FE | 1BE41, 1C265, 1D8B7, 1DAEF |
Using the Title Screen pointer, trying to change subsongs by changing the numbers after the reference only makes the game reset continually after the Accolade logo. This can be bypassed with savestates.
Attempting the same with End of Game (Mini), changing 48
right after it to 91
, made a helicopter noise play. 67
and FC
reset to the SEGA logo without displaying End of Game.
Play Music While Paused code
Also useless for recording for reasons explained below; included for completeness. I discovered this trick when first trying the rip over a decade ago.
The PAR code is FFFD32:0000
; to use with BlastEm's debugger, do set [$FFFD32] 0
. Keep in mind that:
- The PAR code interferes with music changes, so the beginnings of songs will be cut off sometimes.
- Some sounds may be cut off when you pause, but they'll come back.
- Aerial's awful since you have to smack into obstacles and time your pausing to record its 6 variants at a neutral tempo.
- If a new song has already been queued, it'll switch even after you pause.
- Most of the time, vgm_spts or vgm_trim result in cut notes or even full silence for a recording not from silence. Yes, even if you trim/split inside a bunch of Key Off commands. The fixes are to
- Use
-state
with the tools - Time the start of recordings at the moment the song loops (usually inside those Key Off commands), as none of the looping tracks start with intros.
- Don't even try it, and use the more SAN-friendly hex-edit-the-ROM method instead.
- Use
Issues with Certain Songs Played In-Game?
- Some of the Music and Egypt tracks, before the timer begins moving, have skips in them shortly after the loop
- Some of the area Hub music such as Aerial have dropped notes at the beginning when you return to the hub from the level.
These aren't present when recording the tracks by changing the Amazatorium Hub bank, so are probably either quirks of said funky music engine or issues with BlastEm's emulation of this wacky music engine.
Article license
The contents of this article are given to you under the terms of the Open Works License. It's similar to the MIT/X11 and 2-Clause BSD licenses, except that it applies to non-fiction and creative works too. This means you may freely expand on and/or repost the work on this page, even re-license it - but must credit me as the original source when you do. (I'd also like it if you credited fever500 too.)
(The license site recommends reposting the license along with the credit for full compliance. I understand if you just want to link to it instead. If that makes you worry, OWL has a "detachable" version which explicitly says you can do that.//
(If all this is still daunting/confusing, then just remember this license is mostly a formal way of asking for credit, for those who prefer that legal clarity first. If you've given credit for the work I did (and which fever500 helped with), you're in the clear with me.)