SSB64 - Vs. Mode Final Destination via GameShark, At Long Last!

Поделиться
HTML-код
  • Опубликовано: 16 сен 2024
  • This video showcases a GameShark hack that enables the "Final Destination" level to be played in a Vs. match on the Nintendo 64 version of Super Smash Bros.
    The usual level switch code for the North American release of the game is as follows:
    800A4D09 00XX
    Where XX is:
    00 = Peach's Castle
    01 = Sector Z
    02 = Kongo Jungle
    03 = Planet Zebes
    04 = Hyrule Castle
    05 = Yoshi's Island
    06 = Dream Land
    07 = Saffron City
    08 = Mushroom Kingdom
    0D = "Metal Cavern"
    0E = "Battlefield"
    10 = "Final Destination"
    The problem is, trying to load level 0x10 in Vs. mode crashes the game. This has been the bane of the Smash community for eons now, and people have jumped through some serious hoops to get around this problem. Up until now, the best solution known was to hijack the 1P Master Hand encounter to inject additional players and remove the boss character. It's not elegant, and the match doesn't necessarily end when it's supposed to, but it works, and for many people, that's A-OK.
    The short version of the story is that the value at 0x800A4D09 is read a number of times while loading the level, and one particular read is executed at address 0x80104C14. For whatever reason, if a 0x10 is read prior to the ensuing function call in Vs. mode, the game crashes. It likely has something to do with the Master Hand scenario's behavior, likely due to the graphics being tied to the boss's damage meter. In the event some bland, featureless level's index is loaded at this point instead (such as 0x0E, Battlefield's index), the level loads just fine in Vs. mode, but without the sparkly stars or changing background.
    Fortunately, N64 games tend to load code into RAM and execute from there, so it's ripe for the GameShark picking. If 0x10 is in the level index variable, the instruction at 0x80104C14 can be replaced wholesale by something else that won't break. So instead of doing what it does--loads the value from RAM--how's about it just always loads 0x0E in the event the actual level index is 0x10? The CPU instruction can be overwritten by the GameShark, and the game program will reload it from ROM before the next match, so it won't break doing it this way.
    There's also the matter of the music. By default, the level uses the "Master Hand is approaching" tune, which isn't the one you'd want to battle to. The tune has an index of 0x18, and the formal Master Hand battle music is 0x19. So, easily enough, a GameShark code can detect one and replace it with the other.
    So for the main attraction... The following code is a fix-only code that enables Final Destination to be used through the usual stage switch code. It does not, in of itself, cause Final Destination to be loaded in Vs. mode:
    D0099113 0018
    80099113 0019
    D00A4D09 0010
    81104C14 2002
    D00A4D09 0010
    81104C16 000E
    I've tested this on the hardware (as this video shows), and Project64, and it works swimmingly on both. Let it be known that this was made possible by Nemu64's outstanding debugger, which is what all emulators should strive to have.
    Happy battling, everyone! I'd like to think this puts to rest one of the longest-standing enigmas of Smash history.

Комментарии • 125