Slot 2 Mapping Flat Code in $00000 - $07fff [1] and $1c000 - $1ffff

Game State

Fantasy Zone maintains a master "game state" variable in the low 4 bits of the byte at $c01f. The valid values are:

$0Sega Mark III Logo Screen
$1Title Screen
$4Huge Creature Fight
$5Life Lost
$6Huge Creature Destroyed
$7O-Papa Destroyed
$8, $9 [2]Epilogue

For some states, bit 7 of the same byte is used to distinguish a change of state (bit 7 reset) from a continuation of the current state (bit 7 set).


This table summarises the contents of the Fantasy Zone [v2] ROM (Size: 128KB; CRC32: 65d7e4e0):

Address RangeContents
$00000 - $07ee8Unknown
$07ee9 - $07ef8Background Palette: Plaleaf
$07ef9 - $07f08Background Palette: Tabas
$07f09 - $07f18Background Palette: La Dune
$07f19 - $07f28Background Palette: Dolimicca
$07f29 - $07f38Background Palette: Polaria
$07f39 - $07f48Background Palette: Mockstar
$07f49 - $07f58Background Palette: Pocarius
$07f59 - $07fefUnused
$07ff0 - $07fffROM Header (Product Code: 5052; Version: 2; Region: SMS Export; ROM Size: 128KB)
$08000 - $083e8Compressed 4bpp Tiles
$083e9 - $08a284bpp Tiles
$08a29 - $08aa84bpp Tiles
$08aa9 - $08b684bpp Tiles: Fire Bomb
$08b69 - $08c284bpp Tiles: Heavy Bomb
$08c29 - $08e684bpp Tiles: Thaya-Thaya
$08e69 - $090a84bpp Tiles: Bottaco
$090a9 - $092684bpp Tiles: Quili-Quili
$09269 - $095284bpp Tiles: Sourtham
$09529 - $096a84bpp Tiles: Chamba
$096a9 - $09aa84bpp Tiles: Poyon
$09aa9 - $09ba84bpp Tiles: Botelynn
$09ba9 - $09ca84bpp Tiles: Coulon
$09ca9 - $09e284bpp Tiles: Moocolon
$09e29 - $0a0684bpp Tiles: Asworm
$0a069 - $0a1e84bpp Tiles: Pata2
$0a1e9 - $0a4a84bpp Tiles: Onyamma
$0a4a9 - $0a5a84bpp Tiles: Jerry
$0a5a9 - $0a7684bpp Tiles: Billian
$0a769 - $0a8684bpp Tiles: Squel
$0a869 - $0a9a84bpp Tiles: Goro
$0a9a9 - $0ab284bpp Tiles: C-Soul
$0ab29 - $0ad284bpp Tiles: Shatboo
$0ad29 - $0aea84bpp Tiles: F-Zab
$0aea9 - $0b0a84bpp Tiles: Recal
$0b0a9 - $0b2284bpp Tiles: Floweye
$0b229 - $0b3284bpp Tiles: M.F.
$0b329 - $0b5e84bpp Tiles: Bont
$0b5e9 - $0bff6Compressed 4bpp Tiles: Shop
$0bff7 - $0bfffUnused
$0c000 - $0c486Compressed 4bpp Tiles: Plaleaf Huge Creature
$0c487 - $0c4d6Tile Indices: Plaleaf Huge Creature
$0c4d7 - $0c8e5Compressed 4bpp Tiles: Tabas Huge Creature
$0c8e6 - $0cac5Name Table Entries: Tabas Huge Creature
$0cac6 - $0ce18Compressed 4bpp Tiles: La Dune Huge Creature
$0ce19 - $0ceb8Name Table Entries: La Dune Huge Creature
$0ceb9 - $0d380Compressed 4bpp Tiles: Dolimicca Huge Creature
$0d381 - $0d3d0Tile Indices: Dolimicca Huge Creature
$0d3d1 - $0d911Compressed 4bpp Tiles: Polaria Huge Creature
$0d912 - $0d9e3Name Table Entries: Polaria Huge Creature
$0d9e4 - $0dc4bCompressed 4bpp Tiles: Mockstar Huge Creature
$0dc4c - $0dcabName Table Entries: Mockstar Huge Creature
$0dcac - $0e088Compressed 4bpp Tiles: Pocarius Huge Creature
$0e089 - $0ecf8Compressed 4bpp Tiles: O-Papa
$0ecf9 - $0ed93Compressed 4bpp Tiles: O-Papa Enemy Blue Trail
$0ed94 - $0ef1fTile Indices: O-Papa
$0ef20 - $0efffUnused
$0f000 - $0f57fTile Indices: Shop
$0f580 - $0f5ffUnused
$0f600 - $0fbbf4bpp Tiles: O-Papa Eye
$0fbc0 - $0ffffUnused
$10000 - $11143Compressed Name Table Entries: Plaleaf
$11144 - $11ed3Compressed 4bpp Tiles: Plaleaf (Round 1)
$11ed4 - $12e22Compressed Name Table Entries: Dolimicca
$12e23 - $13c0cCompressed 4bpp Tiles: Dolimicca (Round 4)
$13c0d - $13e0c1bpp Tiles: ASCII Characters $20 - $5a, ©SEGA
$13e0d - $13eec1bpp Tiles: Sega Mark III Logo
$13eed - $13fdfUnused
$13fe0 - $13fff4bpp Tile: Mini Opa-Opa
$14000 - $14e32Compressed Name Table Entries: Polaria
$14e33 - $1579dCompressed 4bpp Tiles: Polaria (Round 5)
$1579e - $163d1Compressed Name Table Entries: Mockstar
$163d2 - $16ee9Compressed 4bpp Tiles: Mockstar (Round 6)
$16eea - $17647Compressed Name Table Entries: La Dune
$17648 - $17e2fCompressed 4bpp Tiles: La Dune (Round 3)
$17e30 - $17f1fTile Indices: Fantasy Zone Logo
$17f20 - $17fffUnused
$18000 - $18ddeCompressed Name Table Entries: Tabas
$18ddf - $1979cCompressed 4bpp Tiles: Tabas (Round 2)
$1979d - $19f90Compressed Name Table Entries: Pocarius
$19f91 - $1ac47Compressed 4bpp Tiles: Pocarius (Round 7)
$1ac48 - $1ac57Background Palette: Title Screen
$1ac58 - $1bf5eCompressed 4bpp Tiles: Fantasy Zone Logo
$1bf5f - $1bfffUnused
$1c000 - $1ffffUnknown

Jump Tables

Within areas marked "Unknown" in the ROM map, the following jump tables exist:

Address RangeNumber of
Jump Instruction
Indexed By
$000d7 - $000ec11$017c8Game State
$0016a - $0017f11$017c8Game State
$00777 - $007826$017c8Unknown
$010cf - $010dc7$017c8Unknown
$015e2 - $016c1112 [3]$017c8Unknown ($01 - $23$30 - $70)
$019bc - $019c55$017c8Weapon 2 Type
$01aa2 - $01aa94$017c8Weapon 1 Type
$0210d - $0211e9$017c8Unknown ($05 - $0d)
$022e4 - $022f59$022e3Unknown ($05 - $0d)
$03b2b - $03b3a8$03b2aUnknown
$05dae - $05dbd8$017c8$d400 (1 - 8)
$05dbe - $05dcd8$017c8$c076
$05dce - $05ddd8$017c8$d400 (1 - 8)
$0734a - $0734f3$017c8Unknown
$073d9 - $073e04$017c8Unknown
$0776e - $077754$017c8Unknown
$0782c - $078334$017c8Unknown
$1dffe - $1e04335$1dfb7Sound Track Number
$1e2be - $1e2e118$1e2b9Sound Coordination Flag

"Pre-Release" Version

Only 13 bytes were changed between the pre-release version [v1] of Fantasy Zone and the Western release [v2]:

  1. Nine addresses were altered in order to relocate a variable in memory - from $c0e8 to $c076. This variable holds the current "Huge Creature" which a player is fighting, and has been moved so that the Huge Creature number is tracked separately for each player. Although sharing the variable does not affect the majority of the game, it can cause problems in "Salfar", the boss rush at the end of the game. Here, the variable is used to track the player's progress. In [v1], if one or both players are in Salfar, they can interfere with one another's games.
  2. A single byte change ensures that [v2] updates an additional palette entry before displaying the epilogue text. This causes the border to be yellow, matching the background, rather than black.
  3. Finally, 3 bytes were changed in the ROM header. The version number was incremented from 1 to 2 and the checksum updated.

In summary, 2 bugs that were present in [v1] were fixed in [v2]. Both bugs also exist in the Japanese release [v0].

  1. ^ All address ranges on this page are inclusive.
  2. ^ This state uses a value of $08 in $c01f to signify a change of state and a value of $89 for a continuation of the state.
  3. ^ 12 entries contain zero.

Researched by RetroSpark

Return to top