With Day 4, my insanity level finally reaches its peak. Or at least you'd think that, but since I'm full of surprises, I'm going to let someone decide a game I should disassemble next
How? Well, for those of you on my Discord server, you know those posts where I mentioned I was working on my "secret project"? Each time I used that phrase in a post on my server, each of those posts marked when I officially considered a disassembly complete (except the first post where I announced the project, because I was dumb). Even if I was talking about something else, I worked a reference to the game into each of those posts. So, to decide which game I'll disassemble next, I want someone to figure out the order I finished the disassemblies based on these posts.
For those not on my server, here are all the relevant posts so you can participate too.
- If the puzzle is not solved by the 21st of January, then whoever got the most amount of correct answers will be the winner.
- SMW, SMAS, SMAS+W, Plok, and EarthBound are not part of puzzle.
- The game you pick must be an officially released SNES game (ie. no hacks, no bootlegs, no homebrew, no competition/promotional carts, no prototypes, etc.)
- The game can't be a different version of a game I already disassembled (ex. YI USA V1.1)
- The game can't be one I've partially disassembled (only applies to EarthBound)
- I'd prefer to do a game that's in English, but it's not necessary
- Submit your answer via a PM or DMing me on Discord, whichever you prefer.
- If there is somehow a tie and multiple people submit the correct answer at the same time, each person will chose a game, and I'll pick a game from the choices I'm given.
This way, if there was that one game
you wished I disassembled, but didn't, now you have a chance of getting me to do it.
(Oh, also, before I forget, the SMW/SMAS/SMAS+W disassembly is up on GitHub now).
Pac-Man 2 The New Adventures Disassembly
I've got 4 words for you. The Pac is..... somewhere. Probably out grocery shopping, I think.
Supported ROMs (1)
The mother of all stinky RPGs.
Supported ROMs (1)
- (Incomplete) USA
Super Mario Kart Disassembly
Toad: Yahoo! I'm the best! *Slips on banana peel* Ahhhh!
Yoshi: *cheering Yoshi noise*
Supported ROMs (2 total)
- USA (Rev.1)
Why are there tire marks on this cartridge? Was it trying to cross the road again?!
Supported ROMs (1)
SNES ROM Framework
What made all this possible.
(I edited the ROM to make this .gif. The game normally says "You need more cartridges").
Also, this seems like it would be a great meme format. Just replace the Ms. Pac-Man title screen with something else. That way, Pac-Man can get sad over something more ridiculous than seeing a childish insult about him in a video game. XD
So, about the game I like that nobody else seems to like (well, aside from maybe my brothers), it's Pac-Man 2! While this isn't necessarily my favorite game, this is a game I feel like people either don't give a chance to, or they miss something small and make the game more frustrating than it otherwise would be. As someone who grew up with it and likes this game, perhaps I might be able to change a few minds?
If you decide to give this a look, I implore you to treat it like a sandbox game. This is not a sequel to the original arcade Pac-Man like the title might mislead you into thinking it is (although a certain other game I talked about
used the same tactic, although that case is less questionable than PM2's case). It was billed as an "Interactive Cartoon" for a reason, where I feel the real enjoyment comes from creating your own narrative for why things are playing out the way they are and experimenting with how the world and/or Pac-Man reacts to your input. This game is not very satisfying to play if going under the expectation of "beating it", because it's short and easy even if you don't know what you're doing. Think of it like you would a game like "Hey, You Pikachu!" (which, funnily enough, PM2 was called "Hello! Pac-Man" in Japan, which is not only a similar name to HYP, but it helps back up my point about the questionable title).
A couple tips:
- If Pac-Man's near constant movement is annoying you, all you need to do is hold Y, then press a D-pad direction (particularly in the opposite direction he's moving because certain moods will cause him to not respond to looking up/down/forward) to get Pac-Man to temporarily stop.
- You can also shoot him with your slingshot to stop him, though that may alter his mood.
- Pac-Man's mood affects how he interacts with things, so it pays to experiment.
As for the technicals:
- This game includes both the original Pac-Man and Ms. Pac-Man as a bonus. By disassembling this game, I also disassembled these two games. If this disassembly ever gets far enough along to allow it, I'll consider making a standalone version of these ports.
- The attention to detail is very high, as not only are they quite a lot of things in the world that react to your shots, but Pac-Man has a wide range of different reactions to things based on his current mood. You can tell a lot of passion was put into this and the devs were having fun creating all the different reactions Pac-Man has. Here are just a few examples of things that can happen if you mess around:
- This is a FastROM game, but this game certainly likes to go in and out of FastROM addressing for some reason. This game doesn't suffer from slowdown at least, but it's still odd. Even odder, the arcade ports intentionally turn off FastROM addressing.
- Pac-Man has a "voice" in this game. He doesn't speak in any coherent words, but he's got a lot of different grunts, sighs, yells, and other assorted vocal sounds. It's another charming element of this game.
- Pac-Man has an absolutely crazy amount of poses and a wide range of different moods he can be in. It's probably not an exaggeration to say Pac-Man is one of the most expressive characters from any game on the SNES. Pac-Man has moods for varying levels of happiness, sadness, and anger, and he can also be scared, depressed, or even insane. I wasn't able to figure out how this is controlled, however.
- This game has an interesting soundtrack
. It's fairly heavy on musical stings for certain events, but this game does have normal music.
As for my personal experiences:
- I start off every playthrough by shooting Pac-Man's mailbox to open it until he gets frustrated from me opening it repeatedly. I like to pretend that, when he slams the cover, he slams it so hard that it falls open on its own.
- This game is a lot of fun to mess around with, not just from all the slapstick, but from coming up with my own story for why things are happening the way they are. For example:
+ The cat is jealous that Pac-Man bought a hotdog, so it attacks Pac-Man.
+ A paper warning sign keeps folding over and Pac-Man insists on straightening it out. When he gets annoyed, he tries to knock on the nearby door to tell the neighbor about it, but as soon as Pac-Man walks away... BAM!!! The neighbor slams the door into Pac-Man, flattening him into a pancake. At least the door slamming caused the paper sign to straighten out... then it folds over one last time to add salt to the wound.
+ After messing with a guy painting a billboard causes Pac-Man to end up catapulted into the air, the force of Pac-Man landing causes the head of a nearby burger restaurant display to fly off. When Pac-Man comes to, he freaks out and instead of putting the head back on, he gets behind the display and pretends to be the head right as the shop owner comes out to inspect the noise he heard. Pac-Man then attempts to keep up this charade each time he senses the shop owner is coming, but then the shop owner eventually comes out without warning and is furious.
+ Pac-Man was riding around in a minecart, when suddenly a big spider landed on his head. This caused Pac-Man to freak out by jumping several feet out of the minecart. He then proceeds to bang his head on a stalactite, which causes Blinky to show up and mock him.
- I have beaten this game before, yet I don't remember that one weird screen in the ending with the Chinese(?) text on it. I'll have to play through my physical copy of this game to see if it really is supposed to be there. Perhaps the fact I don't play this game to beat it is why I have this gap in my memory?
- This game was actually kind of annoying to disassemble because of the heavy use of jump tables, constant A/X/Y size changing, and the programmers' love of RLE compressed files. If I hadn't disassembled this game, I wonder if anyone else would have even bothered?
- I prefer playing on level 3, as that one gives you access to the most amount of stuff to play around with.
I asked Orange Kid to help me out with this disassembly. However, I kicked him off the project when the tool he made somehow caused my laptop to fall apart when I executed the tool. I would have asked Apple Kid, but he seemed to be busy working on some sort of weird yogurt machine, I think.
The Earthbound disassembly is technically not part of this project, but since I did work on it I'm going to release a new version.
In this updated version of the disassembly, you can now get to the point where you first gain control of Ness, but can't do much after that point. Previously, you could get up to the title screen.
As for the technicals, I can't elaborate on a lot of things because the disassembly is incomplete, but there are some interesting things I did uncover:
- The way the code is written highly suggests this game was written in a higher level programming language. There is no way this was written in ASM (although Satoru Iwata was a genius programmer, so I wouldn't be shocked if he did).
- This game heavily uses the direct page register as an index, as it adds/subtracts from it at the start of many routines.
- The game's script makes heavy usage of what I call "Text Macros", which I explained when talking about Super Mario RPG. However, this game uses these to such a heavy degree, that I can't see anyone editing much of the text without the use of a tool tot handle this. For example, the "*No problem here." string is represented like this: "*No" " pro" "ble" "m" " here.", where each of those quotes except the single m are text macros.
- The game saves the instant before you first gain control of Ness.
- You know that red static that appears on the War On Giygas screen? That's literally Giygas, as this screen loads the Giygas BG then heavily distorts it to create static.
- When naming Ness's dog, there is a sprite tile drawn behind King that is a bunch of Zzz. This is not used.
As for my personal experiences:
- Despite what you might think, I never had this game growing up. In fact, I didn't play it or have much exposure to it (aside from a couple mentions of it from Nintendo Power) until 2018. Anything that seems like it may be an EB reference in MSQ/YSQ is a coincidence.
- Despite the fact that it originally came with a strategy guide, I was able to get through the game with no outside help. .... until literally the last action I needed to do to beat the final boss. The game basically tricks you into thinking praying will have no effect after a certain point, hence why I got stuck.
- I found a lot of the stuff surrounding this game fascinating. A particular highlight was learning about its localization, from the guy who created the excellent Mother 3 translation
(and yes, I also got the book mentioned throughout that comparison).
- Yes, I found the limited inventory annoying, although I was able to adapt to it.
- Do I need to say that I really liked the humor in this game?
*Driving along* Huh? What's that sound? *Looks in rear-view mirror* OH FUDGE...... *Kaboom*!! Oh no, don't tumble that way! *falls down hole* Darn it, now I'm in 2nd place! *Lightning strike* Come on! *a red shell hits me* GAHH!! *banana peel is thrown directly in front of and behind me* *has a mental breakdown*
Oh, also, with this disassembly release, all 5 of the major SNES Mario games have been disassembled by me and are using the same framework
! Every one of the games I've disassembled has access to the same array of options, whether a game uses them or not. Every one is built using asar. Every one has the same method of applying .asm patches during assembly. And so on. The 2020s are going to have some absolutely insane
ROM hacks if people make use of these disassemblies and contribute to documenting/standardizing as much stuff in these games as possible.
Anyway, regarding Super Mario Kart's technical details:
- This game makes use of the DSP-1 chip. However, this isn't particularly interesting, as it's just a black box chip that you feed commands to and it spits out data. It's basically like the multiplication/division registers on the SNES, but you have access to a lot more types of math calculations.
- This games makes use of mode 0 for displaying the small scrolling backgrounds and part of the HUD. If I remember correctly, the rendering mode switching in order to make the track use mode 7 is handled via HDMA.
- This game makes heavy use of 16-bit indexing and is one of the games that taught me how powerful that is. Here is why:
+ You can index all 8 KB of the RAM mirror and all hardware registers with DP addressing, since DP addressing assumes you're in bank 00 regardless of the Data Bank Register.
+ You can index anywhere
in the ROM with absolute addressing, with the DBR acting as the bank byte. Alternatively, if the DBR can't be changed, you can use long addressing to be able to read from any address in a specific bank.
+ JSR.w ($0000,x)/JMP.w ($0000,x) can jump anywhere in the current bank, based on what ROM address is being read from.
+ You can index tables larger than 256 bytes.
- This game is a HiROM game, yet it behaves more like a LoROM game. Essentially, the lower halves of banks are mapped to $C0-$C7, while the upper halves are mapped to $80-$87.
- There were two USA versions of this game, one that uses the DSP-1 chip and one that uses the DSP-1B chip. These ROMs are 100% identical to each other, so adding support for it was as simple as copy/pasting the ROM Map file and changing one define.
- There are quite a few references to bank 08 in the code, even though there is no bank 08 in the ROM.
As for my personal experiences:
- As a kid, I found this game incredibly frustrating, to the point where I hated this game. I did manage to unlock the 150cc class, but I don't think I ever managed to get a gold trophy in all of the cups.
- I never knew this until I disassembled this game, but there are supports under the track in the ghost valley stages.
- As a kid, I didn't care too much who I'd play as, but nowadays, I'll almost always pick Yoshi. That applies to the rest of the series as well.
- My mom has mentioned that I used to hit myself in frustration when playing video games as a kid. Considering how much the AI cheats in this game and how on very rare occasions I can get angry enough to do this, I can believe that. Fun fact: it's not uncommon for people with Asperger's Syndrome to throw tantrums when angry, particularly when they're in an uncomfortable situation or a situation where they have no control.
- While I don't like this game too much gameplay wise, I do really like the music. Also, it didn't stop me from checking out the sequels (I considered the DS version the least frustrating and Wii the most).
So, I bet you guys are feeling a strong sense of happy happy, joy joy in hearing me talk about what I consider the best SNES game ever made? Well, I was going to write a big, long essay about how amazing this game is. But, all you really need to know is that this game's awesomesauce level is over 9000! What? Don't look at me like that. I put more effort into that joke than some official Frogger ports, I'll have you know. If you want to experience real cringe, imagine someone buying a lazily made Frogger port at full price. *shudders* Or worse, imagine someone spending time disassembling said port! *gags*
Anyway, let's talk about an amazing Frogger port for the SNES and why it's an underrated gem!
Regarding the technical stuff:
- This game has some of the most beautiful music ever to come out of the SNES. Have a listen
. It's not's as catchy as the original arcade Frogger's music, but you can tell a lot of passion was put into this soundtrack.
- All the game's graphics are stored uncompressed. For some odd reason, the sprite graphics are duplicated.
- This game has some amazing looking visu.....*bursts out laughing*
(To be fair, I think the hand-drawn illustrations look neat, but you're not exactly going to be looking at those for much of the gameplay).
- This game has a ton of sound effects to perfectly accentuate the action on screen. When I counted how many there were, I was holding up FIVE. WHOLE. FINGERS!! Wow! I didn't know they made numbers that big!
- It was one of the last games to officially release on the SNES, in 1998. They say you should always go out with a bang. I guess you could consider a post-mortem fart as a bang in a way.
- This game was only released in the USA, because effort costs money.
- The SPC engine is divided up into small pieces much like Earthworm Jim 2's engine, because that was a more important usage of the programmers' time than making the game more fun.
- This game allows you to tweak various .... no wait, this game has no customization options aside from a basic two player mode. Sorry to get your hopes up.
- Surely, there must be more to this game than just Frogger, right? Williams Arcade's Greatest Hits came out 2 years prior and that had 5 games, so surely this must..... nope. Just Frogger.
- This game is 512 KB, yet it has less to offer than the SNES Ms. Pac-Man port, which is a 256 KB
game. And that port had several customization options! Also, WAGH was 512 KB itself!
- I disassembled this entire game within a day. I probably put more effort into this disassembly than the programmers did making this port! O_o
- This game apparently has re-used audio assets and audio leftovers from "The Ren & Stimpy Show: Buckeroo$" of all things.
Regarding my personal experiences:
- This game gave me lots of fun. The cartridge allowed me to put a bit of weight on the SNES's AV cables to stabilize the image and allowed me to be able to play my other games!
- I disassembled this game because I wanted to see how much nothing was on the cart. Inside the cart was absolutely nothing, and so much nothing came bursting out when I looked inside. In a literal sense, you could
say that's not true because the cart had code, graphics, audio data, and other stuff on it, but the sum of its parts somehow adds up to negative numbers, so it might as well be a blank cartridge.
- *Stares off into space* Huh? You say something?
- Do you really think I played this game a lot as a kid? When the best thing I can say about it is that it was useful for holding down AV cables, that doesn't exactly scream "must play".
- ..... Sorry, I spaced out again. What was I talking about again? Oh right, we were talking about the SNES ROM framework!
So, the last thing I'll be showcasing is the standalone version of the framework that all these disassemblies are built off of. It started off only being designed for SMW, but I've added new features and functionality that enables it to work with lots of different ROM configurations. From the games I've disassembled, this framework handles:
- SA-1, SuperFX, DSP-1 games
- SNES Mouse games
- LoROM, HiROM (FastROM), LoROM (FastROM), SA-1 (HiROM), SuperFX (LoROM/HiROM) games.
- Games that use the expanded cartridge header
- ROMs of various sizes from 512 KB to 4 MB
However, it also supports, even if only partially, a lot of other stuff that these games don't use, such as every known official chip, the MSU-1, every known peripheral, ROMs larger than 4 MB or smaller than 512 KB, the Super Gameboy, the Satelleview, etc. I included these things in case I or someone else wanted to use this framework to make new disassemblies, and having support for the more obscure stuff means that the actual framework itself won't need to change much, just the configuration files for these specific things.
In addition, while the other disassemblies include the framework files, readme, and changelog, this download comes with some extras:
- A "GAMEX" disassembly, which is a shell disassembly that acts as the base for a new disassembly or homebrew project.
- 3 Asar scripts that can disassemble a large block of SNES/SPC700/SuperFX code when applied to a ROM. They're meant to be used in conjunction with SHex, as both have functions the other one lacks.
- A batch script that extracts a sample bank.
- An asar script that sets up a sample bank pointer table and data.
Those code disassembly scripts were absolutely essential to me being able to disassemble 12 games in 4-5 months. Without those, I probably would have done half as many disassemblies. I couldn't afford to wait for p4plus2 to fix the issues I reported about SHex
, so I decided to take matters into my own hands and write some scripts that would compensate for the problems SHex has. I still needed SHex for some things (ex. My script only generates labels after opcodes that the CPU can't pass through, something SHex doesn't do unless an opcode points to those locations), but these scripts saved me a lot of time. Also, potential wrist strain. Can't forget about that. XD SHex really should have an option to insert the opcode length specifiers because that alone was enough to justify making these scripts.
Lastly, while not exclusive to this standalone download, I rewrote the readme significantly. Now, it's very detailed to explain not only how to utilize the features of my disassembly, but also some tangential topics, like making your own disassembly.
And that's pretty much it. This was a ton of work to disassemble all these games, and I hope you guys enjoyed this 4 day journey!
Mario's Strange Quest V1.6
Yoshi's Inside Story (on hold)
Yoshi's Strange Quest V1.3
/ V1.3.1 Beta 4.6
/ Latest Test Build (Mario & Yoshi's Strange Quests)
My SMW/SMAS/SMAS+W disassembly
Yoshifanatic's Discord Server
: A place for fans of my stuff and/or Yoshi to chat with others.