Time for yet another one of my big dumps of Rayman 1 info
This time from Rayman Advance! This version was pretty complicated reverse engineering. The game sort of acts as a layer around the original PC code, so the data is stored differently in the rom and then assembled into the original PC format in memory. Every sprite is also made out of a tileset of 8x8 tiles, but since the PC version uses 16x16 tiles they get assembled into that. One fun fact about the format though is just how similar it is to the Mapper (yes, not the built-in Designer levels, but the custom ones you make through the Mapper). It even more proves the theory that the Mapper is a leftover developer tool from making R1 they repurposed for the players.
Now onto the interesting discoveries.
Multiplayer
Rayman Advance was originally going to have a "Capture the Flag" multiplayer mode. This was sadly cut late in development. However the multiplayer maps still exist in the rom. There is one for every world and they oddly enough are all indexed as being in world 8 (world 7 doesn't exist...).
Here's the Jungle map as an example:
Every map is symmetrical, most having two exit signs (these are the player bases and where you spawn). How do we know this? Well, turns out the mode is still in the game! By analyzing the rom I noticed there's a function it only runs if a flag is set in memory in the game loop (and this function references some unused multiplayer strings). Enabling this flag does indeed enable the mode.
As you can see the mode would have a map in the middle, and the flag score for each player on the sides. Sadly I couldn't do much else with this mode. It keeps respawning me at the exit sign after a certain time, so I think it's stuck in some sort of "waiting for the other player" mode.
Unused Maps?
By checking the map count two things stood out; Jungle has 22 maps and Music has 18. This makes it seem as if the Breakout stage and Bongo Hills 1 are in the rom... However loading the levels shows they're duplicates of other levels (Jungle 22 matches Jungle 21, Music 1 matches Music 2). They most likely did this to not mess with the original level indexing. I mentioned before how the game is sort of built on top of the original code? Well, same applies with the indexing. In Rayman 1 levels are usually indexed by a world index + a level index. In Advance they however use a global level index. But to not mess with the original code they then convert it back and forth between that and the original format
Interesting details
Ever wondered why the game looks so bad? Well there are two main reasons. The first one is the palette limitation. The game has 32 16-color palettes, with 16 being for the sprites, 10 for the tiles and 6 for the background. The sprite palettes are the same across every world, so they were quite limited on the color choices (especially since they couldn't easily jump between the palettes for a sprite, which means even less colors). Interestingly if you lower the brightness for the colors the game will start looking a lot more like other versions, so them increasing the brightness (to compensate for the original GBA's lack of backlight) hurt the game in the long run.
The other reason is a way to save space on the cartridge. Some sprites are stored in half the resolution in the rom and then upscaled in-game. This is why some of Mr Sax's sprites look so pixelated for example:
Unused sprites/animations from other versions also still exist here (as well as Breakout sprites):
Also to end it of, I managed to extract the intro, which consists of several looping frames of animation: