Skip to content
Matt Greer edited this page Apr 27, 2024 · 2 revisions

Quite a bit of the memory has not been figured out. The game also reuses memory blocks for different purposes. For some memory blocks, there is an ASCII "tag" at the start which helps hint at what the memory is for.

Player Memory Blocks

From 108110 to 10830f is a memory block for player 1, and 108310 to 10850f is player 2's block. They are 512 bytes each.

These blocks contain a starting "tag" in ASCII, that indicates what the block is currently being used for, where X is either '1' or '2' depending on the player

tag use
PLAYERXI set before a player has pressed start to start a game
PXSELECT set after pressing start and during how to play
PX TEAM set when the player is choosing their team
PXMEMBER set when the player is choosing the player order
PLAYER X set while the match is playing

"PLAYER X" is set throughout the entire match and win screen. It goes back to "PX TEAM" when choosing the next team to fight.

PX TEAM Memory Decoded

start end (inclusive) description
108110 108117 'P1 TEAM' in ascii
108235 108237 Character IDs of p1 chosen team

PLAYER X Decoded

the blocks are tagged "PLAYER 1" and "PLAYER 2" while playing the match

start end (inclusive) description
108110 108117 'PLAYER 1' in ascii
108231 108231 The team Id (see teamIds.md), example Italy is 5
108232 108234 The character ids in order of when they fight
108235 108237 Character IDs of p1 chosen team, in team order

MEMBDISP blocks

There are six blocks that each start with the tag "MEMBDISP"

Address team char
102910 p1 1
102B10 p1 2
102D10 p1 3
102f10 p2 1
103110 p2 2
103310 p2 3

Decoding

Team Italy used as an example

address value description
102928 000d19e8 Pointer into ROM of first character's tiles
10292c 0070 Same value for all teams, written once, never read
102930 0001 Same value for all teams, written once, never read
10296a ffe0ff90 Never changes, but was diff in dumps???
102970 000f The character, likely the only byte that matters
Clone this wiki locally