diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm index 6441325..b1b37b5 100644 --- a/src/engine/bank03.asm +++ b/src/engine/bank03.asm @@ -990,122 +990,122 @@ Func_c646: ; bank and offset table of data for Func_d421 and Func_33b7 ; table corresponds to MAP_* IDs (do not confuse with MAP_GFX_*) MapHeaderPtrs:: - dba OverworldTCG_MapHeader ; $00 - dba OverworldGR_MapHeader ; $01 - dbw $10, $4db3 ; $02 - dbw $0f, $4603 ; $03 - dbw $0f, $47dc ; $04 - dba IshiharasHouse_MapHeader ; $05 - dbw $0f, $4b88 ; $06 - dbw $0f, $4c62 ; $07 - dba LightningClub_MapHeader ; $08 - dba PsychicClubEntrance_MapHeader ; $09 - dba PsychicClubLobby_MapHeader ; $0a - dba PsychicClub_MapHeader ; $0b - dba RockClubEntrance_MapHeader ; $0c - dba RockClubLobby_MapHeader ; $0d - dba RockClub_MapHeader ; $0e - dba FightingClubEntrance_MapHeader ; $0f - dba FightingClubLobby_MapHeader ; $10 - dba FightingClub_MapHeader ; $11 - dba GrassClubEntrance_MapHeader ; $12 - dbw $0f, $4ee6 ; $13 - dba GrassClub_MapHeader ; $14 - dba ScienceClubEntrance_MapHeader ; $15 - dba ScienceClubLobby_MapHeader ; $16 - dba ScienceClub_MapHeader ; $17 - dba WaterClubEntrance_MapHeader ; $18 - dba WaterClubLobby_MapHeader ; $19 - dba WaterClub_MapHeader ; $1a - dba FireClubEntrance_MapHeader ; $1b - dba FireClubLobby_MapHeader ; $1c - dba FireClub_MapHeader ; $1d - dbw $0d, $4575 ; $1e - dbw $0d, $4773 ; $1f - dbw $0f, $519e ; $20 - dbw $0f, $52d7 ; $21 - dbw $10, $5592 ; $22 - dba PokemonDomeEntrance_MapHeader ; $23 - dbw $0f, $55d1 ; $24 - dbw $0f, $5d58 ; $25 - dba OverheadIslands_MapHeader ; $26 - dbw $0d, $4aaf ; $27 - dbw $10, $5be9 ; $28 - dbw $0f, $6698 ; $29 - dbw $0f, $68e0 ; $2a - dbw $0f, $6cea ; $2b - dbw $0f, $6efa ; $2c - dbw $0d, $4ba8 ; $2d - dbw $0d, $4e4d ; $2e - dbw $0f, $704c ; $2f - dbw $0f, $71f2 ; $30 - dbw $0d, $509f ; $31 - dbw $0f, $73c2 ; $32 - dbw $0c, $518a ; $33 - dbw $0c, $5324 ; $34 - dbw $10, $5e8e ; $35 - dbw $0c, $53ce ; $36 - dbw $0d, $5288 ; $37 - dbw $10, $65cf ; $38 - dbw $0c, $54fe ; $39 - dbw $0c, $55d8 ; $3a - dbw $0c, $5785 ; $3b - dbw $0c, $5973 ; $3c - dbw $0c, $5b29 ; $3d - dbw $0d, $54a2 ; $3e - dbw $0c, $5cbf ; $3f - dbw $0c, $5dd2 ; $40 - dbw $0c, $5fad ; $41 - dbw $0c, $6148 ; $42 - dbw $0c, $641e ; $43 - dbw $0c, $6531 ; $44 - dbw $0c, $6696 ; $45 - dbw $0c, $6804 ; $46 - dbw $0c, $696d ; $47 - dbw $0c, $6beb ; $48 - dbw $0c, $6e20 ; $49 - dbw $0c, $6f5b ; $4a - dbw $0f, $75ab ; $4b - dbw $0c, $70c0 ; $4c - dbw $0d, $55de ; $4d - dbw $0d, $580f ; $4e - dbw $0c, $724d ; $4f - dbw $0c, $7357 ; $50 - dbw $0d, $5989 ; $51 - dbw $10, $6e2b ; $52 - dbw $0c, $7506 ; $53 - dbw $0c, $75da ; $54 - dbw $0c, $762f ; $55 - dbw $0c, $7723 ; $56 - dbw $0c, $7766 ; $57 - dbw $0c, $77bb ; $58 - dbw $0c, $7822 ; $59 - dbw $0c, $7928 ; $5a - dbw $0c, $797d ; $5b - dbw $0c, $79b2 ; $5c - dbw $0c, $7a19 ; $5d - dbw $0c, $7ab4 ; $5e - dbw $0c, $7b1b ; $5f - dbw $0c, $7ba4 ; $60 - dbw $0d, $5c10 ; $61 - dbw $0c, $7bf9 ; $62 - dbw $0d, $5c9a ; $63 - dbw $0f, $77b5 ; $64 - dbw $0c, $7d2e ; $65 - dbw $10, $6e80 ; $66 - dbw $0c, $7d63 ; $67 - dbw $0f, $7884 ; $68 - dbw $0d, $5d36 ; $69 - dbw $0d, $5f14 ; $6a - dbw $0d, $6097 ; $6b - dbw $0d, $6173 ; $6c - dbw $0d, $631f ; $6d - dbw $0d, $6c9b ; $6e - dbw $0c, $7d98 ; $6f - dbw $0d, $6f9a ; $70 - dbw $0d, $7365 ; $71 - dbw $0d, $75df ; $72 - dbw $10, $6ed5 ; $73 + dba OverworldTcg_MapHeader + dba OverworldGr_MapHeader + dba MasonLaboratoryMain_MapHeader + dba MasonLaboratorySide1_MapHeader + dba MasonLaboratorySide2_MapHeader + dba IshiharasHouse_MapHeader + dba LightningClubEntrance_MapHeader + dba LightningClubLobby_MapHeader + dba LightningClub_MapHeader + dba PsychicClubEntrance_MapHeader + dba PsychicClubLobby_MapHeader + dba PsychicClub_MapHeader + dba RockClubEntrance_MapHeader + dba RockClubLobby_MapHeader + dba RockClub_MapHeader + dba FightingClubEntrance_MapHeader + dba FightingClubLobby_MapHeader + dba FightingClub_MapHeader + dba GrassClubEntrance_MapHeader + dba GrassClubLobby_MapHeader + dba GrassClub_MapHeader + dba ScienceClubEntrance_MapHeader + dba ScienceClubLobby_MapHeader + dba ScienceClub_MapHeader + dba WaterClubEntrance_MapHeader + dba WaterClubLobby_MapHeader + dba WaterClub_MapHeader + dba FireClubEntrance_MapHeader + dba FireClubLobby_MapHeader + dba FireClub_MapHeader + dba TcgAirportEntrance_MapHeader + dba TcgAirport_MapHeader + dba TcgChallengeHallEntrance_MapHeader + dba TcgChallengeHallLobby_MapHeader + dba TcgChallengeHall_MapHeader + dba PokemonDomeEntrance_MapHeader + dba PokemonDome_MapHeader + dba PokemonDomeBack_MapHeader + dba OverheadIslands_MapHeader + dba GrAirportEntrance_MapHeader + dba GrAirport_MapHeader + dba IshiharasVilla1_MapHeader + dba IshiharasVilla2_MapHeader + dba GameCenterEntrance_MapHeader + dba GameCenterLobby_MapHeader + dba GameCenter1_MapHeader + dba GameCenter2_MapHeader + dba CardDungeonPawn_MapHeader + dba CardDungeonKnight_MapHeader + dba CardDungeonBishop_MapHeader + dba CardDungeonRook_MapHeader + dba CardDungeonQueen_MapHeader + dba SealedFortEntrance_MapHeader + dba SealedFort_MapHeader + dba GrChallengeHallEntrance_MapHeader + dba GrChallengeHallLobby_MapHeader + dba GrChallengeHall_MapHeader + dba GrassFortEntrance_MapHeader + dba GrassFortLobby_MapHeader + dba GrassFortMidori_MapHeader + dba GrassFortYuta_MapHeader + dba GrassFortMiyuki_MapHeader + dba GrassFortMorino_MapHeader + dba LightningFortEntrance_MapHeader + dba LightningFortLobby_MapHeader + dba LightningFortRenna_MapHeader + dba LightningFortIchikawa_MapHeader + dba LightningFortCatherine_MapHeader + dba FireFortEntrance_MapHeader + dba FireFortLobby_MapHeader + dba FireFortJes_MapHeader + dba FireFortYuki_MapHeader + dba FireFortShoko_MapHeader + dba FireFortHidero_MapHeader + dba WaterFortEntrance_MapHeader + dba WaterFortLobby_MapHeader + dba WaterFortMiyajima_MapHeader + dba WaterFortSenta_MapHeader + dba WaterFortAira_MapHeader + dba WaterFortKanoko_MapHeader + dba FightingFortEntrance_MapHeader + dba FightingFort_MapHeader + dba FightingFortMaze1_MapHeader + dba FightingFortMaze2_MapHeader + dba FightingFortMaze3_MapHeader + dba FightingFortMaze4_MapHeader + dba FightingFortMaze5_MapHeader + dba FightingFortMaze6_MapHeader + dba FightingFortMaze7_MapHeader + dba FightingFortMaze8_MapHeader + dba FightingFortMaze9_MapHeader + dba FightingFortMaze10_MapHeader + dba FightingFortMaze11_MapHeader + dba FightingFortMaze12_MapHeader + dba FightingFortMaze13_MapHeader + dba FightingFortMaze14_MapHeader + dba FightingFortMaze15_MapHeader + dba FightingFortMaze16_MapHeader + dba FightingFortMaze17_MapHeader + dba FightingFortMaze18_MapHeader + dba FightingFortMaze19_MapHeader + dba FightingFortMaze20_MapHeader + dba FightingFortMaze21_MapHeader + dba FightingFortMaze22_MapHeader + dba FightingFortBasement_MapHeader + dba FightingFortGoda_MapHeader + dba FightingFortGrace_MapHeader + dba PsychicStrongholdEntrance_MapHeader + dba PsychicStrongholdLobby_MapHeader + dba PsychicStronghold_MapHeader + dba PsychicStrongholdMami_MapHeader + dba ColorlessAltarEntrance_MapHeader + dba ColorlessAltar_MapHeader + dba GrCastleEntrance_MapHeader + dba GrCastle_MapHeader + dba GrCastleBiruritchi_MapHeader INCLUDE "data/npc_duelists.asm" ; 0xcc9b diff --git a/src/engine/bank0c.asm b/src/engine/bank0c.asm index 24357b9..9b445d4 100644 --- a/src/engine/bank0c.asm +++ b/src/engine/bank0c.asm @@ -1,11 +1,11 @@ SECTION "Bank c@4080", ROMX[$4080], BANK[$c] -OverworldGR_MapHeader: +OverworldGr_MapHeader: db OVERWORLD_MAP_GFX_GR - dba OverworldGR_MapScripts + dba OverworldGr_MapScripts db MUSIC_GROVERWORLD -OverworldGR_MapScripts: +OverworldGr_MapScripts: dbw $01, Func_30092 dbw $02, Func_300a8 dbw $04, Func_3018b @@ -981,3 +981,1360 @@ GRIslandMovementCommands: dw $509c ; OWMAP_COLORLESS_ALTAR dw NULL ; OWMAP_GR_CASTLE ; 0x3070a + +SECTION "Bank c@518a", ROMX[$518a], BANK[$c] + +CardDungeonQueen_MapHeader: + db MAP_GFX_CARD_DUNGEON_QUEEN + dba CardDungeonQueen_MapScripts + db MUSIC_FORT_3 + +CardDungeonQueen_NPCs: + npc OW_QUEEN, 3, 4, EAST, $0 + db $ff + +CardDungeonQueen_NPCInteractions: + npc_script OW_QUEEN, $0c, $51d5 + db $ff + +CardDungeonQueen_MapScripts: + dbw $08, $51b1 + dbw $09, $51d0 + dbw $07, $51a8 + dbw $02, $51b9 + db $ff +; gap from 0x311a8 to 0x31324 + +SECTION "Bank c@5324", ROMX[$5324], BANK[$c] + +SealedFortEntrance_MapHeader: + db MAP_GFX_SEALED_FORT_ENTRANCE + dba SealedFortEntrance_MapScripts + db MUSIC_FORT_4 + +SealedFortEntrance_StepEvents: + map_exit 4, 8, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 5, 8, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 6, 8, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 4, 0, MAP_SEALED_FORT, 5, 11, NORTH + map_exit 5, 0, MAP_SEALED_FORT, 6, 11, NORTH + map_exit 6, 0, MAP_SEALED_FORT, 7, 11, NORTH + db $ff + +SealedFortEntrance_OWInteractions: + ow_script 4, 1, $0c, $53bc + ow_script 5, 1, $0c, $53bc + ow_script 6, 1, $0c, $53bc + db $ff + +SealedFortEntrance_MapScripts: + dbw $06, $5386 + dbw $08, $538d + dbw $02, $53a8 + db $ff +; gap from 0x31386 to 0x313ce + +SECTION "Bank c@53ce", ROMX[$53ce], BANK[$c] + +GrChallengeHallEntrance_MapHeader: + db MAP_GFX_GR_CHALLENGE_HALL_ENTRANCE + dba GrChallengeHallEntrance_MapScripts + db MUSIC_GROVERWORLD + +GrChallengeHallEntrance_StepEvents: + map_exit 4, 8, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 5, 8, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 0, 3, MAP_GR_CHALLENGE_HALL_LOBBY, 12, 6, WEST + map_exit 0, 4, MAP_GR_CHALLENGE_HALL_LOBBY, 12, 7, WEST + map_exit 4, 0, MAP_GR_CHALLENGE_HALL, 7, 14, NORTH + map_exit 5, 0, MAP_GR_CHALLENGE_HALL, 8, 14, NORTH + db $ff + +GrChallengeHallEntrance_NPCs: + npc OW_GR_CLERK_18, 3, 1, SOUTH, $0 + db $ff + +GrChallengeHallEntrance_NPCInteractions: + npc_script OW_GR_CLERK_18, $0c, $54a1 + db $ff + +GrChallengeHallEntrance_MapScripts: + dbw $06, $5426 + dbw $08, $5499 + dbw $07, $5490 + dbw $01, $542d + dbw $04, $5447 + db $ff +; gap from 0x31426 to 0x314fe + +SECTION "Bank c@54fe", ROMX[$54fe], BANK[$c] + +GrassFortEntrance_MapHeader: + db MAP_GFX_GRASS_FORT_ENTRANCE + dba GrassFortEntrance_MapScripts + db MUSIC_FORT_1 + +GrassFortEntrance_StepEvents: + map_exit 4, 8, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 5, 8, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 0, 3, MAP_GRASS_FORT_LOBBY, 12, 6, WEST + map_exit 0, 4, MAP_GRASS_FORT_LOBBY, 12, 7, WEST + map_exit 4, 0, MAP_GRASS_FORT_MIDORI, 5, 10, NORTH + map_exit 5, 0, MAP_GRASS_FORT_MIDORI, 6, 10, NORTH + db $ff + +GrassFortEntrance_NPCs: + npc OW_GR_CLERK_7, 3, 1, SOUTH, $0 + db $ff + +GrassFortEntrance_NPCInteractions: + npc_script OW_GR_CLERK_7, $0c, $55ad + db $ff + +GrassFortEntrance_MapScripts: + dbw $06, $556e + dbw $08, $559f + dbw $02, $557e + dbw $09, $55a7 + dbw $07, $5575 + dbw $10, $5559 + db $ff +; gap from 0x31559 to 0x315d8 + +SECTION "Bank c@55d8", ROMX[$55d8], BANK[$c] + +GrassFortLobby_MapHeader: + db MAP_GFX_GRASS_FORT_LOBBY + dba GrassFortLobby_MapScripts + db MUSIC_FORT_1 + +GrassFortLobby_StepEvents: + map_exit 13, 6, MAP_GRASS_FORT_ENTRANCE, 1, 3, EAST + map_exit 13, 7, MAP_GRASS_FORT_ENTRANCE, 1, 4, EAST + db $ff + +GrassFortLobby_NPCs: + npc OW_GR_LAD_2, 3, 4, SOUTH, $0 + npc OW_GR_PAPPY_2, 3, 9, WEST, $0 + npc OW_GR_LASS_4, 7, 7, NORTH, $0 + npc OW_IMAKUNI_RED, 12, 1, NORTH, $5776 + npc OW_GR_CLERK_3, 5, 2, SOUTH, $0 + npc OW_GR_CLERK_4, 8, 2, SOUTH, $0 + db $ff + +GrassFortLobby_NPCInteractions: + npc_script OW_GR_LAD_2, $0c, $56b5 + npc_script OW_GR_PAPPY_2, $0c, $571f + npc_script OW_GR_LASS_4, $0c, $5745 + npc_script OW_IMAKUNI_RED, $0f, $44e0 + db $ff + +GrassFortLobby_OWInteractions: + ow_script 1, 2, $03, $5411 + ow_script 2, 2, $03, $5411 + ow_script 5, 4, $0f, $41d0 + ow_script 8, 4, $0f, $42d9 + db $ff + +GrassFortLobby_MapScripts: + dbw $06, $5673 + dbw $08, $5683 + dbw $09, $5693 + dbw $0b, $5699 + dbw $07, $567a + dbw $10, $565e + db $ff +; gap from 0x3165e to 0x31785 + +SECTION "Bank c@5785", ROMX[$5785], BANK[$c] + +GrassFortMidori_MapHeader: + db MAP_GFX_GRASS_FORT_MIDORI + dba GrassFortMidori_MapScripts + db MUSIC_FORT_1 + +GrassFortMidori_StepEvents: + map_exit 5, 11, MAP_GRASS_FORT_ENTRANCE, 4, 1, SOUTH + map_exit 6, 11, MAP_GRASS_FORT_ENTRANCE, 5, 1, SOUTH + map_exit 5, 0, MAP_GRASS_FORT_YUTA, 4, 7, NORTH + map_exit 6, 0, MAP_GRASS_FORT_YUTA, 5, 7, NORTH + db $ff + +GrassFortMidori_NPCs: + npc OW_MIDORI, 5, 4, SOUTH, $0 + npc OW_RICK, 6, 2, SOUTH, $5864 + db $ff + +GrassFortMidori_NPCInteractions: + npc_script OW_MIDORI, $0c, $5871 + db $ff + +GrassFortMidori_OWInteractions: + ow_script 6, 4, $0c, $5835 + db $ff + +GrassFortMidori_MapScripts: + dbw $06, $57db + dbw $08, $5815 + dbw $09, $5825 + dbw $02, $57eb + dbw $07, $57e2 + db $ff +; gap from 0x317db to 0x31830 + +SECTION "Bank c@5830", ROMX[$5830], BANK[$c] + +GrassFortMidori_AfterDuelScripts: + npc_script OW_MIDORI, $0c, $58e2 + db $ff +; gap from 0x31835 to 0x31973 + +SECTION "Bank c@5973", ROMX[$5973], BANK[$c] + +GrassFortYuta_MapHeader: + db MAP_GFX_GRASS_FORT_YUTA + dba GrassFortYuta_MapScripts + db MUSIC_FORT_1 + +GrassFortYuta_StepEvents: + map_exit 4, 8, MAP_GRASS_FORT_MIDORI, 5, 1, SOUTH + map_exit 5, 8, MAP_GRASS_FORT_MIDORI, 6, 1, SOUTH + map_exit 4, 0, MAP_GRASS_FORT_MIYUKI, 5, 7, NORTH + map_exit 5, 0, MAP_GRASS_FORT_MIYUKI, 6, 7, NORTH + db $ff + +GrassFortYuta_NPCs: + npc OW_YUTA, 4, 3, SOUTH, $0 + db $ff + +GrassFortYuta_NPCInteractions: + npc_script OW_YUTA, $0c, $5a12 + db $ff + +GrassFortYuta_OWInteractions: + ow_script 4, 1, $0c, $5ae1 + ow_script 5, 1, $0c, $5ae1 + db $ff + +GrassFortYuta_MapScripts: + dbw $06, $59cc + dbw $08, $59f2 + dbw $09, $5a02 + dbw $02, $59dc + dbw $07, $59d3 + db $ff +; gap from 0x319cc to 0x31a0d + +SECTION "Bank c@5a0d", ROMX[$5a0d], BANK[$c] + +GrassFortYuta_AfterDuelScripts: + npc_script OW_YUTA, $0c, $5aa7 + db $ff +; gap from 0x31a12 to 0x31b29 + +SECTION "Bank c@5b29", ROMX[$5b29], BANK[$c] + +GrassFortMiyuki_MapHeader: + db MAP_GFX_GRASS_FORT_MIYUKI + dba GrassFortMiyuki_MapScripts + db MUSIC_FORT_1 + +GrassFortMiyuki_StepEvents: + map_exit 5, 8, MAP_GRASS_FORT_YUTA, 4, 1, SOUTH + map_exit 6, 8, MAP_GRASS_FORT_YUTA, 5, 1, SOUTH + map_exit 5, 0, MAP_GRASS_FORT_MORINO, 6, 14, NORTH + map_exit 6, 0, MAP_GRASS_FORT_MORINO, 7, 14, NORTH + db $ff + +GrassFortMiyuki_NPCs: + npc OW_MIYUKI, 9, 5, EAST, $0 + db $ff + +GrassFortMiyuki_NPCInteractions: + npc_script OW_MIYUKI, $0c, $5bc8 + db $ff + +GrassFortMiyuki_OWInteractions: + ow_script 5, 1, $0c, $5ca8 + ow_script 6, 1, $0c, $5ca8 + db $ff + +GrassFortMiyuki_MapScripts: + dbw $06, $5b82 + dbw $08, $5ba8 + dbw $09, $5bb8 + dbw $07, $5b89 + dbw $02, $5b92 + db $ff +; gap from 0x31b82 to 0x31bc3 + +SECTION "Bank c@5bc3", ROMX[$5bc3], BANK[$c] + +GrassFortMiyuki_AfterDuelScripts: + npc_script OW_MIYUKI, $0c, $5c37 + db $ff +; gap from 0x31bc8 to 0x31cbf + +SECTION "Bank c@5cbf", ROMX[$5cbf], BANK[$c] + +LightningFortEntrance_MapHeader: + db MAP_GFX_LIGHTNING_FORT_ENTRANCE + dba LightningFortEntrance_MapScripts + db MUSIC_FORT_2 + +LightningFortEntrance_StepEvents: + map_exit 4, 12, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 5, 12, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 0, 3, MAP_LIGHTNING_FORT_LOBBY, 12, 6, WEST + map_exit 0, 4, MAP_LIGHTNING_FORT_LOBBY, 12, 7, WEST + map_exit 4, 0, MAP_LIGHTNING_FORT_RENNA, 4, 7, NORTH + map_exit 5, 0, MAP_LIGHTNING_FORT_RENNA, 5, 7, NORTH + db $ff + +LightningFortEntrance_NPCs: + npc OW_GR_CLERK_8, 3, 2, SOUTH, $0 + db $ff + +LightningFortEntrance_NPCInteractions: + npc_script OW_GR_CLERK_8, $0c, $5d6e + db $ff + +LightningFortEntrance_OWInteractions: + ow_script 4, 8, $0c, $5da0 + ow_script 5, 8, $0c, $5da0 + db $ff + +LightningFortEntrance_MapScripts: + dbw $06, $5d27 + dbw $08, $5d5e + dbw $07, $5d2e + dbw $02, $5d37 + db $ff +; gap from 0x31d27 to 0x31dd2 + +SECTION "Bank c@5dd2", ROMX[$5dd2], BANK[$c] + +LightningFortLobby_MapHeader: + db MAP_GFX_LIGHTNING_FORT_LOBBY + dba LightningFortLobby_MapScripts + db MUSIC_FORT_2 + +LightningFortLobby_StepEvents: + map_exit 13, 6, MAP_LIGHTNING_FORT_ENTRANCE, 1, 3, EAST + map_exit 13, 7, MAP_LIGHTNING_FORT_ENTRANCE, 1, 4, EAST + db $ff + +LightningFortLobby_NPCs: + npc OW_GR_LASS_1, 5, 10, NORTH, $0 + npc OW_GR_WOMAN_1, 3, 4, WEST, $0 + npc OW_BUTCH_1, 10, 8, SOUTH, $0 + npc OW_TAP, 8, 9, WEST, $0 + npc OW_GR_CLERK_3, 5, 2, SOUTH, $0 + npc OW_GR_CLERK_4, 8, 2, SOUTH, $0 + db $ff + +LightningFortLobby_NPCInteractions: + npc_script OW_GR_LASS_1, $0c, $5e82 + npc_script OW_GR_WOMAN_1, $0c, $5ee8 + npc_script OW_BUTCH_1, $0c, $5f2c + npc_script OW_TAP, $0c, $5f52 + db $ff + +LightningFortLobby_OWInteractions: + ow_script 1, 2, $03, $5411 + ow_script 2, 2, $03, $5411 + ow_script 5, 4, $0f, $41d0 + ow_script 8, 4, $0f, $42d9 + db $ff + +LightningFortLobby_MapScripts: + dbw $06, $5e52 + dbw $08, $5e62 + dbw $09, $5e72 + dbw $07, $5e59 + db $ff +; gap from 0x31e52 to 0x31e7d + +SECTION "Bank c@5e7d", ROMX[$5e7d], BANK[$c] + +LightningFortLobby_AfterDuelScripts: + npc_script OW_TAP, $0c, $5f8f + db $ff +; gap from 0x31e82 to 0x31fad + +SECTION "Bank c@5fad", ROMX[$5fad], BANK[$c] + +LightningFortRenna_MapHeader: + db MAP_GFX_LIGHTNING_FORT_RENNA + dba LightningFortRenna_MapScripts + db MUSIC_FORT_2 + +LightningFortRenna_StepEvents: + map_exit 4, 8, MAP_LIGHTNING_FORT_ENTRANCE, 4, 1, SOUTH + map_exit 5, 8, MAP_LIGHTNING_FORT_ENTRANCE, 5, 1, SOUTH + map_exit 4, 0, MAP_LIGHTNING_FORT_ICHIKAWA, 4, 10, NORTH + map_exit 5, 0, MAP_LIGHTNING_FORT_ICHIKAWA, 5, 10, NORTH + db $ff + +LightningFortRenna_NPCs: + npc OW_RENNA, 1, 2, NORTH, $0 + db $ff + +LightningFortRenna_NPCInteractions: + npc_script OW_RENNA, $0c, $6057 + db $ff + +LightningFortRenna_OWInteractions: + ow_script 4, 1, $0c, $60f5 + ow_script 5, 1, $0c, $60f5 + db $ff + +LightningFortRenna_MapScripts: + dbw $06, $6006 + dbw $08, $6037 + dbw $09, $6047 + dbw $07, $600d + dbw $02, $6016 + db $ff +; gap from 0x32006 to 0x32052 + +SECTION "Bank c@6052", ROMX[$6052], BANK[$c] + +LightningFortRenna_AfterDuelScripts: + npc_script OW_RENNA, $0c, $60bb + db $ff +; gap from 0x32057 to 0x32148 + +SECTION "Bank c@6148", ROMX[$6148], BANK[$c] + +LightningFortIchikawa_MapHeader: + db MAP_GFX_LIGHTNING_FORT_ICHIKAWA + dba LightningFortIchikawa_MapScripts + db MUSIC_FORT_2 + +LightningFortIchikawa_StepEvents: + map_exit 4, 11, MAP_LIGHTNING_FORT_RENNA, 4, 1, SOUTH + map_exit 5, 11, MAP_LIGHTNING_FORT_RENNA, 5, 1, SOUTH + map_exit 4, 0, MAP_LIGHTNING_FORT_CATHERINE, 7, 10, NORTH + map_exit 5, 0, MAP_LIGHTNING_FORT_CATHERINE, 8, 10, NORTH + db $ff + +LightningFortIchikawa_NPCs: + npc OW_ICHIKAWA, 5, 5, EAST, $0 + db $ff + +LightningFortIchikawa_NPCInteractions: + npc_script OW_ICHIKAWA, $0c, $6204 + db $ff + +LightningFortIchikawa_OWInteractions: + ow_script 4, 1, $0c, $63f0 + ow_script 5, 1, $0c, $63f0 + ow_script 3, 3, $0c, $6407 + db $ff + +LightningFortIchikawa_MapScripts: + dbw $06, $61aa + dbw $08, $61e4 + dbw $09, $61f4 + dbw $07, $61b1 + dbw $02, $61ba + db $ff +; gap from 0x321aa to 0x321ff + +SECTION "Bank c@61ff", ROMX[$61ff], BANK[$c] + +LightningFortIchikawa_AfterDuelScripts: + npc_script OW_ICHIKAWA, $0c, $62a1 + db $ff +; gap from 0x32204 to 0x3241e + +SECTION "Bank c@641e", ROMX[$641e], BANK[$c] + +LightningFortCatherine_MapHeader: + db MAP_GFX_LIGHTNING_FORT_CATHERINE + dba LightningFortCatherine_MapScripts + db MUSIC_FORT_2 + +LightningFortCatherine_StepEvents: + map_exit 7, 11, MAP_LIGHTNING_FORT_ICHIKAWA, 4, 1, SOUTH + map_exit 8, 11, MAP_LIGHTNING_FORT_ICHIKAWA, 5, 1, SOUTH + db $ff + +LightningFortCatherine_NPCs: + npc OW_CATHERINE, 7, 4, NORTH, $0 + db $ff + +LightningFortCatherine_NPCInteractions: + npc_script OW_CATHERINE, $0c, $6477 + db $ff + +LightningFortCatherine_MapScripts: + dbw $06, $644f + dbw $08, $645f + dbw $09, $6467 + dbw $07, $6456 + db $ff +; gap from 0x3244f to 0x32472 + +SECTION "Bank c@6472", ROMX[$6472], BANK[$c] + +LightningFortCatherine_AfterDuelScripts: + npc_script OW_CATHERINE, $0c, $64e1 + db $ff +; gap from 0x32477 to 0x32531 + +SECTION "Bank c@6531", ROMX[$6531], BANK[$c] + +FireFortEntrance_MapHeader: + db MAP_GFX_FIRE_FORT_ENTRANCE + dba FireFortEntrance_MapScripts + db MUSIC_FORT_3 + +FireFortEntrance_StepEvents: + map_exit 4, 12, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 5, 12, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 0, 3, MAP_FIRE_FORT_LOBBY, 12, 6, WEST + map_exit 0, 4, MAP_FIRE_FORT_LOBBY, 12, 7, WEST + map_exit 4, 0, MAP_FIRE_FORT_JES, 4, 8, NORTH + map_exit 5, 0, MAP_FIRE_FORT_JES, 5, 8, NORTH + db $ff + +FireFortEntrance_NPCs: + npc OW_GR_CLERK_9, 3, 1, SOUTH, $0 + db $ff + +FireFortEntrance_NPCInteractions: + npc_script OW_GR_CLERK_9, $0c, $6632 + db $ff + +FireFortEntrance_OWInteractions: + ow_script 4, 8, $0c, $6664 + ow_script 5, 8, $0c, $6664 + db $ff + +FireFortEntrance_MapScripts: + dbw $06, $65bc + dbw $08, $661c + dbw $07, $65c3 + dbw $02, $65cc + dbw $09, $662c + dbw $10, $659f + db $ff +; gap from 0x3259f to 0x32696 + +SECTION "Bank c@6696", ROMX[$6696], BANK[$c] + +FireFortLobby_MapHeader: + db MAP_GFX_FIRE_FORT_LOBBY + dba FireFortLobby_MapScripts + db MUSIC_FORT_3 + +FireFortLobby_StepEvents: + map_exit 13, 6, MAP_FIRE_FORT_ENTRANCE, 1, 3, EAST + map_exit 13, 7, MAP_FIRE_FORT_ENTRANCE, 1, 4, EAST + db $ff + +FireFortLobby_NPCs: + npc OW_MIYAJIMA_ALT, 2, 10, SOUTH, $0 + npc OW_YOUNGSTER_4, 7, 6, WEST, $0 + npc OW_IMAKUNI_RED, 12, 1, NORTH, $67f5 + npc OW_GR_CLERK_3, 5, 2, SOUTH, $0 + npc OW_GR_CLERK_4, 8, 2, SOUTH, $0 + db $ff + +FireFortLobby_NPCInteractions: + npc_script OW_MIYAJIMA_ALT, $0c, $6769 + npc_script OW_YOUNGSTER_4, $0c, $67cf + npc_script OW_IMAKUNI_RED, $0f, $44e0 + db $ff + +FireFortLobby_OWInteractions: + ow_script 1, 2, $03, $5411 + ow_script 2, 2, $03, $5411 + ow_script 5, 4, $0f, $41d0 + ow_script 8, 4, $0f, $42d9 + db $ff + +FireFortLobby_MapScripts: + dbw $06, $6727 + dbw $08, $6737 + dbw $09, $6747 + dbw $0b, $674d + dbw $07, $672e + dbw $10, $6712 + db $ff +; gap from 0x32712 to 0x32804 + +SECTION "Bank c@6804", ROMX[$6804], BANK[$c] + +FireFortJes_MapHeader: + db MAP_GFX_FIRE_FORT_JES + dba FireFortJes_MapScripts + db MUSIC_FORT_3 + +FireFortJes_StepEvents: + map_exit 4, 9, MAP_FIRE_FORT_ENTRANCE, 4, 1, SOUTH + map_exit 5, 9, MAP_FIRE_FORT_ENTRANCE, 5, 1, SOUTH + map_exit 4, 0, MAP_FIRE_FORT_YUKI, 5, 12, NORTH + map_exit 5, 0, MAP_FIRE_FORT_YUKI, 6, 12, NORTH + db $ff + +FireFortJes_NPCs: + npc OW_JES, 6, 2, NORTH, $0 + db $ff + +FireFortJes_NPCInteractions: + npc_script OW_JES, $0c, $68ae + db $ff + +FireFortJes_OWInteractions: + ow_script 4, 1, $0c, $6956 + ow_script 5, 1, $0c, $6956 + db $ff + +FireFortJes_MapScripts: + dbw $06, $685d + dbw $08, $688e + dbw $09, $689e + dbw $07, $6864 + dbw $02, $686d + db $ff +; gap from 0x3285d to 0x328a9 + +SECTION "Bank c@68a9", ROMX[$68a9], BANK[$c] + +FireFortJes_AfterDuelScripts: + npc_script OW_JES, $0c, $6907 + db $ff +; gap from 0x328ae to 0x3296d + +SECTION "Bank c@696d", ROMX[$696d], BANK[$c] + +FireFortYuki_MapHeader: + db MAP_GFX_FIRE_FORT_YUKI + dba FireFortYuki_MapScripts + db MUSIC_FORT_3 + +FireFortYuki_StepEvents: + map_exit 5, 13, MAP_FIRE_FORT_JES, 4, 1, SOUTH + map_exit 6, 13, MAP_FIRE_FORT_JES, 5, 1, SOUTH + map_exit 5, 0, MAP_FIRE_FORT_SHOKO, 4, 14, NORTH + map_exit 6, 0, MAP_FIRE_FORT_SHOKO, 5, 14, NORTH + db $ff + +FireFortYuki_NPCs: + npc OW_YUKI, 5, 3, SOUTH, $0 + db $ff + +FireFortYuki_NPCInteractions: + npc_script OW_YUKI, $0c, $6a76 + db $ff + +FireFortYuki_OWInteractions: + ow_script 5, 1, $0c, $6bd4 + ow_script 6, 1, $0c, $6bd4 + db $ff + +FireFortYuki_MapScripts: + dbw $06, $69c6 + dbw $08, $6a18 + dbw $09, $6a28 + dbw $07, $69cd + dbw $02, $69d6 + db $ff +; gap from 0x329c6 to 0x32a33 + +SECTION "Bank c@6a33", ROMX[$6a33], BANK[$c] + +FireFortYuki_AfterDuelScripts: + npc_script OW_YUKI, $0c, $6b43 + db $ff +; gap from 0x32a38 to 0x32beb + +SECTION "Bank c@6beb", ROMX[$6beb], BANK[$c] + +FireFortShoko_MapHeader: + db MAP_GFX_FIRE_FORT_SHOKO + dba FireFortShoko_MapScripts + db MUSIC_FORT_3 + +FireFortShoko_StepEvents: + map_exit 4, 15, MAP_FIRE_FORT_YUKI, 5, 1, SOUTH + map_exit 5, 15, MAP_FIRE_FORT_YUKI, 6, 1, SOUTH + map_exit 4, 0, MAP_FIRE_FORT_HIDERO, 5, 14, NORTH + map_exit 5, 0, MAP_FIRE_FORT_HIDERO, 6, 14, NORTH + db $ff + +FireFortShoko_NPCs: + npc OW_SHOKO, 3, 4, EAST, $0 + npc OW_COURTNEY, 3, 7, SOUTH, $6d82 + db $ff + +FireFortShoko_NPCInteractions: + npc_script OW_SHOKO, $0c, $6c9a + db $ff + +FireFortShoko_OWInteractions: + ow_script 4, 1, $0c, $6d59 + ow_script 5, 1, $0c, $6d59 + db $ff + +FireFortShoko_MapScripts: + dbw $06, $6c4a + dbw $08, $6c7a + dbw $09, $6c8a + dbw $07, $6c51 + dbw $02, $6c5a + db $ff +; gap from 0x32c4a to 0x32c95 + +SECTION "Bank c@6c95", ROMX[$6c95], BANK[$c] + +FireFortShoko_AfterDuelScripts: + npc_script OW_SHOKO, $0c, $6d1f + db $ff +; gap from 0x32c9a to 0x32e20 + +SECTION "Bank c@6e20", ROMX[$6e20], BANK[$c] + +FireFortHidero_MapHeader: + db MAP_GFX_FIRE_FORT_HIDERO + dba FireFortHidero_MapScripts + db MUSIC_FORT_3 + +FireFortHidero_StepEvents: + map_exit 5, 15, MAP_FIRE_FORT_SHOKO, 4, 1, SOUTH + map_exit 6, 15, MAP_FIRE_FORT_SHOKO, 5, 1, SOUTH + db $ff + +FireFortHidero_NPCs: + npc OW_HIDERO, 6, 5, SOUTH, $0 + db $ff + +FireFortHidero_NPCInteractions: + npc_script OW_HIDERO, $0c, $6e79 + db $ff + +FireFortHidero_MapScripts: + dbw $06, $6e51 + dbw $08, $6e61 + dbw $09, $6e69 + dbw $07, $6e58 + db $ff +; gap from 0x32e51 to 0x32e74 + +SECTION "Bank c@6e74", ROMX[$6e74], BANK[$c] + +FireFortHidero_AfterDuelScripts: + npc_script OW_HIDERO, $0c, $6efd + db $ff +; gap from 0x32e79 to 0x32f5b + +SECTION "Bank c@6f5b", ROMX[$6f5b], BANK[$c] + +WaterFortEntrance_MapHeader: + db MAP_GFX_WATER_FORT_ENTRANCE + dba WaterFortEntrance_MapScripts + db MUSIC_FORT_1 + +WaterFortEntrance_StepEvents: + map_exit 4, 12, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 5, 12, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 0, 3, MAP_WATER_FORT_LOBBY, 12, 6, WEST + map_exit 0, 4, MAP_WATER_FORT_LOBBY, 12, 7, WEST + map_exit 4, 0, MAP_WATER_FORT_MIYAJIMA, 4, 9, NORTH + map_exit 5, 0, MAP_WATER_FORT_MIYAJIMA, 5, 9, NORTH + db $ff + +WaterFortEntrance_NPCs: + npc OW_GR_CLERK_10, 3, 1, SOUTH, $0 + db $ff + +WaterFortEntrance_NPCInteractions: + npc_script OW_GR_CLERK_10, $0c, $705c + db $ff + +WaterFortEntrance_OWInteractions: + ow_script 4, 8, $0c, $708e + ow_script 5, 8, $0c, $708e + db $ff + +WaterFortEntrance_MapScripts: + dbw $06, $6fe6 + dbw $08, $7046 + dbw $07, $6fed + dbw $02, $6ff6 + dbw $09, $7056 + dbw $10, $6fc9 + db $ff +; gap from 0x32fc9 to 0x330c0 + +SECTION "Bank c@70c0", ROMX[$70c0], BANK[$c] + +WaterFortMiyajima_MapHeader: + db MAP_GFX_WATER_FORT_MIYAJIMA + dba WaterFortMiyajima_MapScripts + db MUSIC_FORT_1 + +WaterFortMiyajima_StepEvents: + map_exit 4, 10, MAP_WATER_FORT_ENTRANCE, 4, 1, SOUTH + map_exit 5, 10, MAP_WATER_FORT_ENTRANCE, 5, 1, SOUTH + map_exit 4, 0, MAP_WATER_FORT_SENTA, 6, 10, NORTH + map_exit 5, 0, MAP_WATER_FORT_SENTA, 7, 10, NORTH + db $ff + +WaterFortMiyajima_NPCs: + npc OW_MIYAJIMA, 4, 4, SOUTH, $0 + db $ff + +WaterFortMiyajima_NPCInteractions: + npc_script OW_MIYAJIMA, $0c, $716a + db $ff + +WaterFortMiyajima_OWInteractions: + ow_script 4, 1, $0c, $7236 + ow_script 5, 1, $0c, $7236 + db $ff + +WaterFortMiyajima_MapScripts: + dbw $06, $7119 + dbw $08, $714a + dbw $09, $715a + dbw $07, $7120 + dbw $02, $7129 + db $ff +; gap from 0x33119 to 0x33165 + +SECTION "Bank c@7165", ROMX[$7165], BANK[$c] + +WaterFortMiyajima_AfterDuelScripts: + npc_script OW_MIYAJIMA, $0c, $71d9 + db $ff +; gap from 0x3316a to 0x3324d + +SECTION "Bank c@724d", ROMX[$724d], BANK[$c] + +WaterFortKanoko_MapHeader: + db MAP_GFX_WATER_FORT_KANOKO + dba WaterFortKanoko_MapScripts + db MUSIC_FORT_1 + +WaterFortKanoko_StepEvents: + map_exit 6, 13, MAP_WATER_FORT_AIRA, 4, 1, SOUTH + map_exit 7, 13, MAP_WATER_FORT_AIRA, 5, 1, SOUTH + db $ff + +WaterFortKanoko_NPCs: + npc OW_KANOKO, 6, 4, SOUTH, $0 + db $ff + +WaterFortKanoko_NPCInteractions: + npc_script OW_KANOKO, $0c, $72a6 + db $ff + +WaterFortKanoko_MapScripts: + dbw $06, $727e + dbw $08, $728e + dbw $09, $7296 + dbw $07, $7285 + db $ff +; gap from 0x3327e to 0x332a1 + +SECTION "Bank c@72a1", ROMX[$72a1], BANK[$c] + +WaterFortKanoko_AfterDuelScripts: + npc_script OW_KANOKO, $0c, $72ff + db $ff +; gap from 0x332a6 to 0x33357 + +SECTION "Bank c@7357", ROMX[$7357], BANK[$c] + +FightingFortEntrance_MapHeader: + db MAP_GFX_FIGHTING_FORT_ENTRANCE + dba FightingFortEntrance_MapScripts + db MUSIC_FORT_3 + +FightingFortEntrance_StepEvents: + map_exit 4, 12, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 5, 12, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT, 7, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT, 8, 7, NORTH + db $ff + +FightingFortEntrance_NPCs: + npc OW_GR_CLERK_11, 3, 2, SOUTH, $0 + db $ff + +FightingFortEntrance_NPCInteractions: + npc_script OW_GR_CLERK_11, $0c, $7434 + db $ff + +FightingFortEntrance_OWInteractions: + ow_script 4, 8, $0c, $7470 + ow_script 5, 8, $0c, $74b3 + db $ff + +FightingFortEntrance_MapScripts: + dbw $06, $73ad + dbw $08, $7424 + dbw $07, $73b4 + dbw $02, $73bd + db $ff +; gap from 0x333ad to 0x33506 + +SECTION "Bank c@7506", ROMX[$7506], BANK[$c] + +FightingFortMaze2_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_2 + dba FightingFortMaze2_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze2_StepEvents: + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_7, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_7, 5, 7, NORTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_1, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_1, 8, 4, WEST + _ow_coordinate_function 3, 3, 104, 10, 1, 2, $0c, $75c7 + _ow_coordinate_function 3, 4, 104, 10, 1, 2, $0c, $75c7 + db $ff + +FightingFortMaze2_NPCs: + npc OW_CHEST_CLOSED, 5, 2, SOUTH, $75a2 + npc OW_CHEST_OPENED, 5, 2, SOUTH, $75ba + db $ff + +FightingFortMaze2_NPCInteractions: + npc_script OW_CHEST_CLOSED, $0c, $7589 + npc_script OW_CHEST_OPENED, $0c, $75af + db $ff + +FightingFortMaze2_MapScripts: + dbw $06, $7565 + dbw $08, $7581 + dbw $07, $7578 + dbw $0f, $756c + db $ff +; gap from 0x33565 to 0x335da + +SECTION "Bank c@75da", ROMX[$75da], BANK[$c] + +FightingFortMaze3_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_3 + dba FightingFortMaze3_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze3_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT, 12, 2, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT, 12, 2, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_8, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_8, 5, 7, NORTH + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_4, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_4, 1, 4, EAST + db $ff + +FightingFortMaze3_MapScripts: + dbw $06, $761d + dbw $02, $7624 + db $ff +; gap from 0x3361d to 0x3362f + +SECTION "Bank c@762f", ROMX[$762f], BANK[$c] + +FightingFortMaze4_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_4 + dba FightingFortMaze4_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze4_StepEvents: + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_3, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_3, 8, 4, WEST + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_9, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_9, 5, 7, NORTH + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_5, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_5, 1, 4, EAST + _ow_coordinate_function 2, 3, 104, 10, 1, 2, $0c, $7710 + _ow_coordinate_function 2, 4, 104, 10, 1, 2, $0c, $7710 + db $ff + +FightingFortMaze4_NPCs: + npc OW_CHEST_CLOSED, 3, 3, SOUTH, $76eb + npc OW_CHEST_OPENED, 3, 3, SOUTH, $7703 + db $ff + +FightingFortMaze4_NPCInteractions: + npc_script OW_CHEST_CLOSED, $0c, $76d2 + npc_script OW_CHEST_OPENED, $0c, $76f8 + db $ff + +FightingFortMaze4_MapScripts: + dbw $06, $76a3 + dbw $08, $76ca + dbw $07, $76c1 + dbw $0f, $76aa + dbw $02, $76b6 + db $ff +; gap from 0x336a3 to 0x33723 + +SECTION "Bank c@7723", ROMX[$7723], BANK[$c] + +FightingFortMaze5_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_5 + dba FightingFortMaze5_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze5_StepEvents: + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_4, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_4, 8, 4, WEST + map_exit 4, 0, MAP_FIGHTING_FORT_GRACE, 4, 9, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_GRACE, 5, 9, NORTH + db $ff + +FightingFortMaze5_MapScripts: + dbw $06, $7754 + dbw $02, $775b + db $ff +; gap from 0x33754 to 0x33766 + +SECTION "Bank c@7766", ROMX[$7766], BANK[$c] + +FightingFortMaze6_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_6 + dba FightingFortMaze6_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze6_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_1, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_1, 5, 1, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_11, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_11, 5, 7, NORTH + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_7, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_7, 1, 4, EAST + db $ff + +FightingFortMaze6_MapScripts: + dbw $06, $77a9 + dbw $02, $77b0 + db $ff +; gap from 0x337a9 to 0x337bb + +SECTION "Bank c@77bb", ROMX[$77bb], BANK[$c] + +FightingFortMaze7_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_7 + dba FightingFortMaze7_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze7_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_2, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_2, 5, 1, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_12, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_12, 5, 7, NORTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_6, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_6, 8, 4, WEST + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_8, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_8, 1, 4, EAST + db $ff + +FightingFortMaze7_MapScripts: + dbw $06, $7810 + dbw $02, $7817 + db $ff +; gap from 0x33810 to 0x33822 + +SECTION "Bank c@7822", ROMX[$7822], BANK[$c] + +FightingFortMaze8_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_8 + dba FightingFortMaze8_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze8_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_3, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_3, 5, 1, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_13, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_13, 5, 7, NORTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_7, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_7, 8, 4, WEST + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_9, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_9, 1, 4, EAST + _ow_coordinate_function 3, 3, 104, 10, 1, 2, $0c, $7915 + _ow_coordinate_function 3, 4, 104, 10, 1, 2, $0c, $7915 + db $ff + +FightingFortMaze8_NPCs: + npc OW_CHEST_CLOSED, 2, 3, SOUTH, $78f0 + npc OW_CHEST_OPENED, 2, 3, SOUTH, $7908 + db $ff + +FightingFortMaze8_NPCInteractions: + npc_script OW_CHEST_CLOSED, $0c, $78d7 + npc_script OW_CHEST_OPENED, $0c, $78fd + db $ff + +FightingFortMaze8_MapScripts: + dbw $06, $78a8 + dbw $08, $78cf + dbw $07, $78c6 + dbw $0f, $78af + dbw $02, $78bb + db $ff +; gap from 0x338a8 to 0x33928 + +SECTION "Bank c@7928", ROMX[$7928], BANK[$c] + +FightingFortMaze9_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_9 + dba FightingFortMaze9_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze9_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_4, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_4, 5, 1, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_14, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_14, 5, 7, NORTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_8, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_8, 8, 4, WEST + db $ff + +FightingFortMaze9_MapScripts: + dbw $06, $796b + dbw $02, $7972 + db $ff +; gap from 0x3396b to 0x3397d + +SECTION "Bank c@797d", ROMX[$797d], BANK[$c] + +FightingFortMaze10_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_10 + dba FightingFortMaze10_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze10_StepEvents: + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_15, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_15, 5, 7, NORTH + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_11, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_11, 1, 4, EAST + db $ff + +FightingFortMaze10_MapScripts: + dbw $06, $79ab + db $ff +; gap from 0x339ab to 0x339b2 + +SECTION "Bank c@79b2", ROMX[$79b2], BANK[$c] + +FightingFortMaze11_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_11 + dba FightingFortMaze11_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze11_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_6, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_6, 5, 1, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_16, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_16, 5, 7, NORTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_10, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_10, 8, 4, WEST + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_12, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_12, 1, 4, EAST + db $ff + +FightingFortMaze11_MapScripts: + dbw $06, $7a07 + dbw $02, $7a0e + db $ff +; gap from 0x33a07 to 0x33a19 + +SECTION "Bank c@7a19", ROMX[$7a19], BANK[$c] + +FightingFortMaze12_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_12 + dba FightingFortMaze12_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze12_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_7, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_7, 5, 1, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_17, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_17, 5, 7, NORTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_11, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_11, 8, 4, WEST + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_13, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_13, 1, 4, EAST + _ow_coordinate_function 4, 6, 104, 10, 1, 2, $0c, $7aa1 + _ow_coordinate_function 5, 6, 104, 10, 1, 2, $0c, $7aa1 + db $ff + +FightingFortMaze12_MapScripts: + dbw $06, $7a83 + dbw $0f, $7a8a + dbw $02, $7a96 + db $ff +; gap from 0x33a83 to 0x33ab4 + +SECTION "Bank c@7ab4", ROMX[$7ab4], BANK[$c] + +FightingFortMaze13_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_13 + dba FightingFortMaze13_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze13_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_8, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_8, 5, 1, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_18, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_18, 5, 7, NORTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_12, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_12, 8, 4, WEST + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_14, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_14, 1, 4, EAST + db $ff + +FightingFortMaze13_MapScripts: + dbw $06, $7b09 + dbw $02, $7b10 + db $ff +; gap from 0x33b09 to 0x33b1b + +SECTION "Bank c@7b1b", ROMX[$7b1b], BANK[$c] + +FightingFortMaze14_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_14 + dba FightingFortMaze14_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze14_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_9, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_9, 5, 1, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_19, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_19, 5, 7, NORTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_13, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_13, 8, 4, WEST + _ow_coordinate_function 2, 3, 104, 10, 1, 2, $0c, $7b91 + _ow_coordinate_function 2, 4, 104, 10, 1, 2, $0c, $7b91 + db $ff + +FightingFortMaze14_MapScripts: + dbw $06, $7b73 + dbw $0f, $7b7a + dbw $02, $7b86 + db $ff +; gap from 0x33b73 to 0x33ba4 + +SECTION "Bank c@7ba4", ROMX[$7ba4], BANK[$c] + +FightingFortMaze15_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_15 + dba FightingFortMaze15_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze15_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_10, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_10, 5, 1, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_GODA, 5, 9, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_GODA, 6, 9, NORTH + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_16, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_16, 1, 4, EAST + db $ff + +FightingFortMaze15_MapScripts: + dbw $06, $7be7 + dbw $02, $7bee + db $ff +; gap from 0x33be7 to 0x33bf9 + +SECTION "Bank c@7bf9", ROMX[$7bf9], BANK[$c] + +FightingFortMaze17_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_17 + dba FightingFortMaze17_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze17_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_12, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_12, 5, 1, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_21, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_21, 5, 7, NORTH + _ow_coordinate_function 4, 6, 104, 10, 1, 2, $0c, $7d1b + _ow_coordinate_function 5, 6, 104, 10, 1, 2, $0c, $7d1b + _ow_coordinate_function 8, 3, 104, 10, 1, 2, $0c, $7cf8 + _ow_coordinate_function 8, 4, 104, 10, 1, 2, $0c, $7cf8 + db $ff + +FightingFortMaze17_NPCs: + npc OW_CHEST_CLOSED, 1, 1, SOUTH, $7cd3 + npc OW_CHEST_OPENED, 1, 1, SOUTH, $7ceb + db $ff + +FightingFortMaze17_NPCInteractions: + npc_script OW_CHEST_CLOSED, $0c, $7cba + npc_script OW_CHEST_OPENED, $0c, $7ce0 + db $ff + +FightingFortMaze17_MapScripts: + dbw $06, $7c6d + dbw $08, $7cb2 + dbw $07, $7ca9 + dbw $02, $7c74 + dbw $0f, $7c9d + db $ff +; gap from 0x33c6d to 0x33d2e + +SECTION "Bank c@7d2e", ROMX[$7d2e], BANK[$c] + +FightingFortMaze20_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_20 + dba FightingFortMaze20_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze20_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_16, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_16, 5, 1, SOUTH + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_21, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_21, 1, 4, EAST + db $ff + +FightingFortMaze20_MapScripts: + dbw $06, $7d5c + db $ff +; gap from 0x33d5c to 0x33d63 + +SECTION "Bank c@7d63", ROMX[$7d63], BANK[$c] + +FightingFortMaze22_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_22 + dba FightingFortMaze22_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze22_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_18, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_18, 5, 1, SOUTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_21, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_21, 8, 4, WEST + db $ff + +FightingFortMaze22_MapScripts: + dbw $06, $7d91 + db $ff +; gap from 0x33d91 to 0x33d98 + +SECTION "Bank c@7d98", ROMX[$7d98], BANK[$c] + +ColorlessAltarEntrance_MapHeader: + db MAP_GFX_COLORLESS_ALTAR_ENTRANCE + dba ColorlessAltarEntrance_MapScripts + db MUSIC_FORT_4 + +ColorlessAltarEntrance_StepEvents: + map_exit 4, 12, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 5, 12, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 4, 0, MAP_COLORLESS_ALTAR, 5, 10, NORTH + map_exit 5, 0, MAP_COLORLESS_ALTAR, 6, 10, NORTH + db $ff + +ColorlessAltarEntrance_MapScripts: + dbw $06, $7de1 + dbw $02, $7de8 + dbw $10, $7dcc + db $ff diff --git a/src/engine/bank0d.asm b/src/engine/bank0d.asm index c79572d..7ca5666 100644 --- a/src/engine/bank0d.asm +++ b/src/engine/bank0d.asm @@ -11,3 +11,862 @@ Func_341c4: ld a, [wNextMusic] farcall PlayAfterCurrentSong ret + +SECTION "Bank d@4575", ROMX[$4575], BANK[$d] +TcgAirportEntrance_MapHeader: + db MAP_GFX_TCG_AIRPORT_ENTRANCE + dba TcgAirportEntrance_MapScripts + db MUSIC_OVERWORLD + +TcgAirportEntrance_StepEvents: + map_exit 5, 12, OVERWORLD_MAP_TCG, 5, 7, SOUTH + map_exit 6, 12, OVERWORLD_MAP_TCG, 5, 7, SOUTH + map_exit 11, 6, MAP_TCG_AIRPORT, 1, 9, EAST + map_exit 11, 7, MAP_TCG_AIRPORT, 1, 10, EAST + ow_script 9, 6, $0d, $462d + ow_script 9, 7, $0d, $462d + db $ff + +TcgAirportEntrance_NPCs: + npc OW_GR_5, 10, 7, WEST, $46bc + npc OW_GR_CLERK_1, 7, 3, SOUTH, $0 + npc OW_GR_GAL_1, 3, 2, NORTH, $0 + npc OW_MANIA_5, 1, 7, EAST, $0 + db $ff + +TcgAirportEntrance_NPCInteractions: + npc_script OW_GR_5, $0d, $468f + npc_script OW_GR_GAL_1, $0d, $471c + npc_script OW_MANIA_5, $0d, $4742 + db $ff + +TcgAirportEntrance_OWInteractions: + ow_script 7, 5, $0d, $46f6 + db $ff + +TcgAirportEntrance_MapScripts: + dbw $00, $45f1 + dbw $06, $460d + dbw $08, $461d + dbw $07, $4614 + dbw $01, $45fd + db $ff +; gap from 0x345f1 to 0x34773 + +SECTION "Bank d@4773", ROMX[$4773], BANK[$d] + +TcgAirport_MapHeader: + db MAP_GFX_TCG_AIRPORT + dba TcgAirport_MapScripts + db MUSIC_OVERWORLD + +TcgAirport_StepEvents: + map_exit 0, 9, MAP_TCG_AIRPORT_ENTRANCE, 10, 6, WEST + map_exit 0, 10, MAP_TCG_AIRPORT_ENTRANCE, 10, 7, WEST + _ow_coordinate_function 11, 8, 0, 0, 0, 3, $0d, $49cd + ow_script 10, 9, $0d, $49cd + ow_script 9, 9, $0d, $49cd + _ow_coordinate_function 8, 8, 0, 0, 0, 1, $0d, $49cd + db $ff + +TcgAirport_NPCs: + npc OW_GR_5, 10, 8, SOUTH, $0 + db $ff + +TcgAirport_NPCInteractions: + npc_script OW_GR_5, $0d, $4910 + db $ff + +TcgAirport_MapScripts: + dbw $00, $47ce + dbw $06, $47da + dbw $08, $489d + dbw $07, $47e1 + dbw $02, $47ea + dbw $0f, $4873 + db $ff +; gap from 0x347ce to 0x34aaf + +SECTION "Bank d@4aaf", ROMX[$4aaf], BANK[$d] + +GrAirportEntrance_MapHeader: + db MAP_GFX_GR_AIRPORT_ENTRANCE + dba GrAirportEntrance_MapScripts + db MUSIC_GROVERWORLD + +GrAirportEntrance_StepEvents: + map_exit 5, 12, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 6, 12, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 0, 6, MAP_GR_AIRPORT, 12, 9, WEST + map_exit 0, 7, MAP_GR_AIRPORT, 12, 10, WEST + db $ff + +GrAirportEntrance_NPCs: + npc OW_GR_CLERK_2, 4, 3, SOUTH, $0 + npc OW_GR_PAPPY_1, 10, 3, WEST, $0 + npc OW_GR_LASS_3, 5, 8, WEST, $0 + db $ff + +GrAirportEntrance_NPCInteractions: + npc_script OW_GR_CLERK_6, $0d, $4b36 + npc_script OW_GR_PAPPY_1, $0d, $4b51 + npc_script OW_GR_LASS_3, $0d, $4b77 + db $ff + +GrAirportEntrance_OWInteractions: + ow_script 4, 5, $0d, $4b36 + ow_script 8, 2, $0d, $4b9d + db $ff + +GrAirportEntrance_MapScripts: + dbw $06, $4b16 + dbw $08, $4b26 + dbw $07, $4b1d + db $ff +; gap from 0x34b16 to 0x34ba8 + +SECTION "Bank d@4ba8", ROMX[$4ba8], BANK[$d] + +GameCenter1_MapHeader: + db MAP_GFX_GAME_CENTER_1 + dba GameCenter1_MapScripts + db MUSIC_GAMECORNER + +GameCenter1_StepEvents: + map_exit 5, 14, MAP_GAME_CENTER_ENTRANCE, 5, 1, SOUTH + map_exit 6, 14, MAP_GAME_CENTER_ENTRANCE, 6, 1, SOUTH + map_exit 11, 6, MAP_GAME_CENTER_2, 1, 6, EAST + map_exit 11, 7, MAP_GAME_CENTER_2, 1, 7, EAST + db $ff + +GameCenter1_NPCs: + npc OW_MONOCLE_2, 7, 4, SOUTH, $0 + npc OW_DEALER_BOY_1, 1, 9, SOUTH, $0 + npc OW_DEALER_GIRL_1, 9, 10, WEST, $0 + npc OW_GR_GAL_3, 3, 5, EAST, $0 + npc OW_BUTCH_3, 8, 8, EAST, $0 + db $ff +; gap from 0x34bf1 to 0x34c06 + +SECTION "Bank d@4c06", ROMX[$4c06], BANK[$d] + +GameCenter1_OWInteractions: + ow_script 5, 4, $0d, $4d15 + ow_script 6, 4, $0d, $4d15 + ow_script 2, 9, $0d, $4d35 + db $ff + +GameCenter1_MapScripts: + dbw $06, $4c2c + dbw $08, $4c3c + dbw $07, $4c33 + db $ff +; gap from 0x34c2c to 0x34e4d + +SECTION "Bank d@4e4d", ROMX[$4e4d], BANK[$d] + +GameCenter2_MapHeader: + db MAP_GFX_GAME_CENTER_2 + dba GameCenter2_MapScripts + db MUSIC_GAMECORNER + +GameCenter2_StepEvents: + map_exit 0, 6, MAP_GAME_CENTER_1, 10, 6, WEST + map_exit 0, 7, MAP_GAME_CENTER_1, 10, 7, WEST + db $ff + +GameCenter2_NPCs: + npc OW_DEALER_BOY_2, 1, 10, SOUTH, $0 + npc OW_CHIP_GIRL_2, 10, 10, SOUTH, $0 + npc OW_DEALER_GIRL_2, 7, 3, SOUTH, $0 + npc OW_MANIA_7, 2, 4, EAST, $0 + npc OW_GAMBLER, 4, 10, NORTH, $0 + npc OW_GR_WOMAN_2, 8, 10, NORTH, $0 + db $ff + +GameCenter2_NPCInteractions: + npc_script OW_DEALER_BOY_2, $0d, $4f25 + npc_script OW_CHIP_GIRL_2, $0d, $4f50 + npc_script OW_DEALER_GIRL_2, $0d, $4f7b + npc_script OW_MANIA_7, $0d, $5016 + npc_script OW_GAMBLER, $0d, $5047 + npc_script OW_GR_WOMAN_2, $0d, $506f + db $ff + +GameCenter2_OWInteractions: + _ow_coordinate_function 2, 10, 1, 0, 0, 0, $07, $596e + _ow_coordinate_function 3, 10, 1, 0, 0, 0, $07, $596e + _ow_coordinate_function 4, 10, 1, 0, 0, 0, $07, $596e + _ow_coordinate_function 7, 10, 5, 0, 0, 0, $07, $596e + _ow_coordinate_function 8, 10, 5, 0, 0, 0, $07, $596e + _ow_coordinate_function 9, 10, 5, 0, 0, 0, $07, $596e + db $ff + +GameCenter2_MapScripts: + dbw $06, $4ee7 + dbw $08, $4ef7 + dbw $07, $4eee + dbw $02, $4f07 + db $ff +; gap from 0x34ee7 to 0x3509f + +SECTION "Bank d@509f", ROMX[$509f], BANK[$d] + +CardDungeonBishop_MapHeader: + db MAP_GFX_CARD_DUNGEON_BISHOP + dba CardDungeonBishop_MapScripts + db MUSIC_FORT_3 + +CardDungeonBishop_StepEvents: + map_exit 4, 0, MAP_CARD_DUNGEON_ROOK, 4, 8, NORTH + map_exit 5, 0, MAP_CARD_DUNGEON_ROOK, 5, 8, NORTH + db $ff + +CardDungeonBishop_NPCs: + npc OW_BISHOP, 5, 3, SOUTH, $0 + db $ff + +CardDungeonBishop_NPCInteractions: + npc_script OW_BISHOP, $0d, $512c + db $ff + +CardDungeonBishop_OWInteractions: + ow_script 4, 1, $0d, $5273 + ow_script 5, 1, $0d, $5273 + db $ff + +CardDungeonBishop_MapScripts: + dbw $06, $50e6 + dbw $08, $50f6 + dbw $09, $5127 + dbw $07, $50ed + dbw $02, $5106 + db $ff +; gap from 0x350e6 to 0x35288 + +SECTION "Bank d@5288", ROMX[$5288], BANK[$d] + +GrChallengeHallLobby_MapHeader: + db MAP_GFX_GR_CHALLENGE_HALL_LOBBY + dba GrChallengeHallLobby_MapScripts + db MUSIC_GROVERWORLD + +GrChallengeHallLobby_StepEvents: + map_exit 13, 6, MAP_GR_CHALLENGE_HALL_ENTRANCE, 1, 3, EAST + map_exit 13, 7, MAP_GR_CHALLENGE_HALL_ENTRANCE, 1, 4, EAST + db $ff + +GrChallengeHallLobby_NPCs: + npc OW_GR_GRANNY_1, 3, 5, WEST, $0 + npc OW_GAL_3, 2, 10, NORTH, $53ce + npc OW_GR_CHAP, 8, 9, EAST, $5444 + npc OW_GR_WOMAN_3, 12, 8, WEST, $0 + npc OW_GR_CLERK_3, 5, 2, SOUTH, $0 + npc OW_GR_CLERK_4, 8, 2, SOUTH, $0 + db $ff + +GrChallengeHallLobby_NPCInteractions: + npc_script OW_GR_GRANNY_1, $0d, $5342 + npc_script OW_GAL_3, $0d, $53a8 + npc_script OW_GR_WOMAN_3, $0d, $5451 + npc_script OW_GR_CHAP, $0d, $53e5 + db $ff + +GrChallengeHallLobby_OWInteractions: + ow_script 1, 2, $03, $5411 + ow_script 2, 2, $03, $5411 + ow_script 5, 4, $0f, $41d0 + ow_script 8, 4, $0f, $42d9 + db $ff + +GrChallengeHallLobby_MapScripts: + dbw $06, $5322 + dbw $08, $5332 + dbw $07, $5329 + dbw $01, $5308 + db $ff +; gap from 0x35308 to 0x354a2 + +SECTION "Bank d@54a2", ROMX[$54a2], BANK[$d] + +GrassFortMorino_MapHeader: + db MAP_GFX_GRASS_FORT_MORINO + dba GrassFortMorino_MapScripts + db MUSIC_FORT_1 + +GrassFortMorino_StepEvents: + map_exit 6, 15, MAP_GRASS_FORT_MIYUKI, 5, 1, SOUTH + map_exit 7, 15, MAP_GRASS_FORT_MIYUKI, 6, 1, SOUTH + db $ff + +GrassFortMorino_NPCs: + npc OW_MORINO, 7, 2, SOUTH, $0 + db $ff + +GrassFortMorino_NPCInteractions: + npc_script OW_MORINO, $0d, $54fb + db $ff + +GrassFortMorino_MapScripts: + dbw $06, $54d3 + dbw $08, $54e3 + dbw $09, $54eb + dbw $07, $54da + db $ff +; gap from 0x354d3 to 0x354f6 + +SECTION "Bank d@54f6", ROMX[$54f6], BANK[$d] + +GrassFortMorino_AfterDuelScripts: + npc_script OW_MORINO, $0d, $5596 + db $ff +; gap from 0x354fb to 0x355de + +SECTION "Bank d@55de", ROMX[$55de], BANK[$d] + +WaterFortSenta_MapHeader: + db MAP_GFX_WATER_FORT_SENTA + dba WaterFortSenta_MapScripts + db MUSIC_FORT_1 + +WaterFortSenta_StepEvents: + map_exit 6, 11, MAP_WATER_FORT_MIYAJIMA, 4, 1, SOUTH + map_exit 7, 11, MAP_WATER_FORT_MIYAJIMA, 5, 1, SOUTH + map_exit 13, 5, MAP_WATER_FORT_AIRA, 1, 6, EAST + map_exit 13, 6, MAP_WATER_FORT_AIRA, 1, 7, EAST + db $ff + +WaterFortSenta_NPCs: + npc OW_SENTA, 6, 3, SOUTH, $0 + db $ff + +WaterFortSenta_NPCInteractions: + npc_script OW_SENTA, $0d, $5679 + db $ff + +WaterFortSenta_MapScripts: + dbw $06, $5624 + dbw $08, $5661 + dbw $09, $5669 + dbw $07, $562b + dbw $02, $5634 + db $ff +; gap from 0x35624 to 0x35674 + +SECTION "Bank d@5674", ROMX[$5674], BANK[$d] + +WaterFortSenta_AfterDuelScripts: + npc_script OW_SENTA, $0d, $56e8 + db $ff +; gap from 0x35679 to 0x3580f + +SECTION "Bank d@580f", ROMX[$580f], BANK[$d] + +WaterFortAira_MapHeader: + db MAP_GFX_WATER_FORT_AIRA + dba WaterFortAira_MapScripts + db MUSIC_FORT_1 + +WaterFortAira_StepEvents: + map_exit 0, 6, MAP_WATER_FORT_SENTA, 12, 5, WEST + map_exit 0, 7, MAP_WATER_FORT_SENTA, 12, 6, WEST + map_exit 4, 0, MAP_WATER_FORT_KANOKO, 6, 12, NORTH + map_exit 5, 0, MAP_WATER_FORT_KANOKO, 7, 12, NORTH + db $ff + +WaterFortAira_NPCs: + npc OW_AIRA, 4, 5, SOUTH, $0 + db $ff + +WaterFortAira_NPCInteractions: + npc_script OW_AIRA, $0d, $589a + db $ff + +WaterFortAira_MapScripts: + dbw $06, $5855 + dbw $08, $5882 + dbw $09, $588a + dbw $07, $585c + dbw $02, $5865 + db $ff +; gap from 0x35855 to 0x35895 + +SECTION "Bank d@5895", ROMX[$5895], BANK[$d] + +WaterFortAira_AfterDuelScripts: + npc_script OW_AIRA, $0d, $58f3 + db $ff +; gap from 0x3589a to 0x35989 + +SECTION "Bank d@5989", ROMX[$5989], BANK[$d] + +FightingFort_MapHeader: + db MAP_GFX_FIGHTING_FORT + dba FightingFort_MapScripts + db MUSIC_FORT_3 + +FightingFort_StepEvents: + map_exit 7, 0, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 8, 0, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 7, 8, MAP_FIGHTING_FORT_ENTRANCE, 4, 1, SOUTH + map_exit 8, 8, MAP_FIGHTING_FORT_ENTRANCE, 5, 1, SOUTH + map_exit 3, 1, MAP_FIGHTING_FORT_MAZE_1, 4, 7, NORTH + map_exit 12, 1, MAP_FIGHTING_FORT_MAZE_3, 4, 7, NORTH + map_exit 1, 4, MAP_FIGHTING_FORT_BASEMENT, 1, 6, NORTH + db $ff + +FightingFort_NPCs: + npc OW_KAMIYA, 6, 2, SOUTH, $0 + db $ff + +FightingFort_NPCInteractions: + npc_script OW_KAMIYA, $0d, $5b16 + db $ff + +FightingFort_OWInteractions: + ow_script 7, 1, $0d, $5be4 + ow_script 8, 1, $0d, $5be4 + db $ff + +FightingFort_MapScripts: + dbw $06, $59fd + dbw $08, $5a7c + dbw $09, $5a8c + dbw $07, $5a04 + dbw $02, $5a0d + db $ff +; gap from 0x359fd to 0x35a97 + +SECTION "Bank d@5a97", ROMX[$5a97], BANK[$d] + +FightingFort_AfterDuelScripts: + npc_script OW_KAMIYA, $0d, $5b82 + db $ff +; gap from 0x35a9c to 0x35c10 + +SECTION "Bank d@5c10", ROMX[$5c10], BANK[$d] + +FightingFortMaze16_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_16 + dba FightingFortMaze16_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze16_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_11, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_11, 5, 1, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_20, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_20, 5, 7, NORTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_15, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_15, 8, 4, WEST + _ow_coordinate_function 4, 6, 104, 10, 1, 2, $0d, $5c86 + _ow_coordinate_function 5, 6, 104, 10, 1, 2, $0d, $5c86 + db $ff + +FightingFortMaze16_MapScripts: + dbw $06, $5c68 + dbw $0f, $5c6f + dbw $02, $5c7b + db $ff +; gap from 0x35c68 to 0x35c9a + +SECTION "Bank d@5c9a", ROMX[$5c9a], BANK[$d] + +FightingFortMaze18_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_18 + dba FightingFortMaze18_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze18_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_13, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_13, 5, 1, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_22, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_22, 5, 7, NORTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_17, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_17, 8, 4, WEST + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_19, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_19, 1, 4, EAST + _ow_coordinate_function 4, 6, 104, 10, 1, 2, $0d, $5d22 + _ow_coordinate_function 5, 6, 104, 10, 1, 2, $0d, $5d22 + db $ff + +FightingFortMaze18_MapScripts: + dbw $06, $5d04 + dbw $0f, $5d0b + dbw $02, $5d17 + db $ff +; gap from 0x35d04 to 0x35d36 + +SECTION "Bank d@5d36", ROMX[$5d36], BANK[$d] + +FightingFortGoda_MapHeader: + db MAP_GFX_FIGHTING_FORT_GODA + dba FightingFortGoda_MapScripts + db MUSIC_FORT_3 + +FightingFortGoda_StepEvents: + map_exit 5, 10, MAP_FIGHTING_FORT_MAZE_15, 4, 1, SOUTH + map_exit 6, 10, MAP_FIGHTING_FORT_MAZE_15, 5, 1, SOUTH + db $ff + +FightingFortGoda_NPCs: + npc OW_GODA, 5, 4, SOUTH, $0 + npc OW_MITCH, 6, 2, SOUTH, $5de2 + db $ff + +FightingFortGoda_NPCInteractions: + npc_script OW_GODA, $0d, $5def + db $ff + +FightingFortGoda_OWInteractions: + ow_script 6, 4, $0d, $5dc0 + db $ff + +FightingFortGoda_MapScripts: + dbw $06, $5d7a + dbw $08, $5da0 + dbw $09, $5db0 + dbw $07, $5d81 + dbw $02, $5d8a + db $ff +; gap from 0x35d7a to 0x35dbb + +SECTION "Bank d@5dbb", ROMX[$5dbb], BANK[$d] + +FightingFortGoda_AfterDuelScripts: + npc_script OW_GODA, $0d, $5e5e + db $ff +; gap from 0x35dc0 to 0x35f14 + +SECTION "Bank d@5f14", ROMX[$5f14], BANK[$d] + +FightingFortGrace_MapHeader: + db MAP_GFX_FIGHTING_FORT_GRACE + dba FightingFortGrace_MapScripts + db MUSIC_FORT_3 + +FightingFortGrace_StepEvents: + map_exit 4, 10, MAP_FIGHTING_FORT_MAZE_5, 4, 1, SOUTH + map_exit 5, 10, MAP_FIGHTING_FORT_MAZE_5, 5, 1, SOUTH + db $ff + +FightingFortGrace_NPCs: + npc OW_GRACE, 4, 2, SOUTH, $0 + npc OW_CHEST_CLOSED, 5, 1, SOUTH, $6062 + npc OW_CHEST_OPENED, 5, 1, SOUTH, $6082 + db $ff + +FightingFortGrace_NPCInteractions: + npc_script OW_GRACE, $0d, $5f81 + npc_script OW_CHEST_CLOSED, $0d, $6049 + npc_script OW_CHEST_OPENED, $0d, $6077 + db $ff + +FightingFortGrace_MapScripts: + dbw $06, $5f59 + dbw $08, $5f69 + dbw $09, $5f71 + dbw $07, $5f60 + db $ff +; gap from 0x35f59 to 0x35f7c + +SECTION "Bank d@5f7c", ROMX[$5f7c], BANK[$d] + +FightingFortGrace_AfterDuelScripts: + npc_script OW_GRACE, $0d, $5ffb + db $ff +; gap from 0x35f81 to 0x36097 + +SECTION "Bank d@6097", ROMX[$6097], BANK[$d] + +PsychicStrongholdEntrance_MapHeader: + db MAP_GFX_PSYCHIC_STRONGHOLD_ENTRANCE + dba PsychicStrongholdEntrance_MapScripts + db MUSIC_FORT_2 + +PsychicStrongholdEntrance_StepEvents: + map_exit 4, 8, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 5, 8, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 0, 3, MAP_PSYCHIC_STRONGHOLD_LOBBY, 12, 6, WEST + map_exit 0, 4, MAP_PSYCHIC_STRONGHOLD_LOBBY, 12, 7, WEST + map_exit 4, 0, MAP_PSYCHIC_STRONGHOLD, 7, 11, NORTH + map_exit 5, 0, MAP_PSYCHIC_STRONGHOLD, 8, 11, NORTH + db $ff + +PsychicStrongholdEntrance_NPCs: + npc OW_GR_CLERK_12, 3, 1, SOUTH, $0 + db $ff + +PsychicStrongholdEntrance_NPCInteractions: + npc_script OW_GR_CLERK_12, $0d, $6148 + db $ff + +PsychicStrongholdEntrance_MapScripts: + dbw $06, $6104 + dbw $08, $6140 + dbw $07, $610b + dbw $02, $6114 + dbw $10, $60ef + db $ff +; gap from 0x360ef to 0x36173 + +SECTION "Bank d@6173", ROMX[$6173], BANK[$d] + +PsychicStrongholdLobby_MapHeader: + db MAP_GFX_PSYCHIC_STRONGHOLD_LOBBY + dba PsychicStrongholdLobby_MapScripts + db MUSIC_FORT_2 + +PsychicStrongholdLobby_StepEvents: + map_exit 13, 6, MAP_PSYCHIC_STRONGHOLD_ENTRANCE, 1, 3, EAST + map_exit 13, 7, MAP_PSYCHIC_STRONGHOLD_ENTRANCE, 1, 4, EAST + db $ff + +PsychicStrongholdLobby_NPCs: + npc OW_GAL_1, 2, 6, WEST, $0 + npc OW_MANIA_6, 5, 9, EAST, $0 + npc OW_GR_LASS_5, 10, 4, EAST, $0 + npc OW_IMAKUNI_RED, 12, 1, NORTH, $6310 + npc OW_GR_CLERK_3, 5, 2, SOUTH, $0 + npc OW_GR_CLERK_4, 8, 2, SOUTH, $0 + db $ff + +PsychicStrongholdLobby_NPCInteractions: + npc_script OW_GAL_1, $0d, $6250 + npc_script OW_MANIA_6, $0d, $62c4 + npc_script OW_GR_LASS_5, $0d, $62ea + npc_script OW_IMAKUNI_RED, $0f, $44e0 + db $ff + +PsychicStrongholdLobby_OWInteractions: + ow_script 1, 2, $03, $5411 + ow_script 2, 2, $03, $5411 + ow_script 5, 4, $0f, $41d0 + ow_script 8, 4, $0f, $42d9 + db $ff + +PsychicStrongholdLobby_MapScripts: + dbw $06, $620e + dbw $08, $621e + dbw $09, $622e + dbw $0b, $6234 + dbw $07, $6215 + dbw $10, $61f9 + db $ff +; gap from 0x361f9 to 0x3631f + +SECTION "Bank d@631f", ROMX[$631f], BANK[$d] + +PsychicStronghold_MapHeader: + db MAP_GFX_PSYCHIC_STRONGHOLD + dba PsychicStronghold_MapScripts + db MUSIC_FORT_2 + +PsychicStronghold_StepEvents: + _ow_coordinate_function 7, 12, 107, 4, 1, 2, $0d, $6bc8 + _ow_coordinate_function 8, 12, 107, 5, 1, 2, $0d, $6bc8 + _ow_coordinate_function 7, 3, 110, 7, 10, 0, $0d, $6be5 + _ow_coordinate_function 8, 3, 110, 8, 10, 0, $0d, $6be5 + db $ff + +PsychicStronghold_NPCs: + npc OW_MIWA, 5, 7, SOUTH, $0 + npc OW_KEVIN, 3, 5, SOUTH, $0 + npc OW_YOSUKE, 10, 7, SOUTH, $0 + npc OW_RYOKO, 12, 5, SOUTH, $0 + npc OW_STRONGHOLD_PLATFORM, 6, 3, SOUTH, $6b8f + db $ff + +PsychicStronghold_NPCInteractions: + npc_script OW_MIWA, $0d, $6712 + npc_script OW_KEVIN, $0d, $682a + npc_script OW_YOSUKE, $0d, $6921 + npc_script OW_RYOKO, $0d, $6a2a + db $ff + +PsychicStronghold_MapScripts: + dbw $06, $638f + dbw $08, $6440 + dbw $12, $6448 + dbw $09, $6490 + dbw $07, $6396 + dbw $02, $639f + dbw $0f, $6434 + db $ff +; gap from 0x3638f to 0x3649b + +SECTION "Bank d@649b", ROMX[$649b], BANK[$d] + +PsychicStronghold_AfterDuelScripts: + npc_script OW_MIWA, $0d, $678e + npc_script OW_KEVIN, $0d, $6887 + npc_script OW_YOSUKE, $0d, $6990 + npc_script OW_RYOKO, $0d, $6ad3 + db $ff +; gap from 0x364ac to 0x36c9b + +SECTION "Bank d@6c9b", ROMX[$6c9b], BANK[$d] + +PsychicStrongholdMami_MapHeader: + db MAP_GFX_PSYCHIC_STRONGHOLD_MAMI + dba PsychicStrongholdMami_MapScripts + db MUSIC_FORT_2 + +PsychicStrongholdMami_StepEvents: + _ow_coordinate_function 7, 10, 109, 7, 3, 2, $0d, $6f7f + _ow_coordinate_function 8, 10, 109, 8, 3, 2, $0d, $6f7f + db $ff + +PsychicStrongholdMami_NPCs: + npc OW_MAMI, 7, 2, NORTH, $0 + npc OW_ROD, 8, 2, SOUTH, $6e03 + npc OW_STRONGHOLD_PLATFORM, 6, 10, SOUTH, $0 + db $ff + +PsychicStrongholdMami_NPCInteractions: + npc_script OW_MAMI, $0d, $6e18 + npc_script OW_ROD, $0d, $6de8 + db $ff + +PsychicStrongholdMami_MapScripts: + dbw $06, $6ce5 + dbw $08, $6d21 + dbw $12, $6d29 + dbw $09, $6d65 + dbw $07, $6cec + dbw $02, $6cf5 + dbw $0f, $6d1e + db $ff +; gap from 0x36ce5 to 0x36d70 + +SECTION "Bank d@6d70", ROMX[$6d70], BANK[$d] + +PsychicStrongholdMami_AfterDuelScripts: + npc_script OW_MAMI, $0d, $6e9b + db $ff +; gap from 0x36d75 to 0x36f9a + +SECTION "Bank d@6f9a", ROMX[$6f9a], BANK[$d] + +ColorlessAltar_MapHeader: + db MAP_GFX_COLORLESS_ALTAR + dba ColorlessAltar_MapScripts + db MUSIC_FORT_4 + +ColorlessAltar_StepEvents: + map_exit 5, 11, MAP_COLORLESS_ALTAR_ENTRANCE, 4, 1, SOUTH + map_exit 6, 11, MAP_COLORLESS_ALTAR_ENTRANCE, 5, 1, SOUTH + db $ff + +ColorlessAltar_NPCs: + npc OW_NISHIJIMA, 6, 6, NORTH, $0 + npc OW_ISHII, 6, 3, NORTH, $0 + npc OW_SAMEJIMA, 5, 4, SOUTH, $0 + db $ff + +ColorlessAltar_NPCInteractions: + npc_script OW_NISHIJIMA, $0d, $7082 + npc_script OW_ISHII, $0d, $7179 + npc_script OW_SAMEJIMA, $0d, $728d + db $ff + +ColorlessAltar_MapScripts: + dbw $06, $6fe2 + dbw $08, $7011 + dbw $09, $7019 + dbw $07, $6fe9 + dbw $02, $6ff2 + db $ff +; gap from 0x36fe2 to 0x37024 + +SECTION "Bank d@7024", ROMX[$7024], BANK[$d] + +ColorlessAltar_AfterDuelScripts: + npc_script OW_NISHIJIMA, $0d, $713b + npc_script OW_ISHII, $0d, $724a + npc_script OW_SAMEJIMA, $0d, $7329 + db $ff +; gap from 0x37031 to 0x37365 + +SECTION "Bank d@7365", ROMX[$7365], BANK[$d] + +GrCastleEntrance_MapHeader: + db MAP_GFX_GR_CASTLE_ENTRANCE + dba GrCastleEntrance_MapScripts + db MUSIC_GRCASTLE + +GrCastleEntrance_StepEvents: + map_exit 4, 8, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 5, 8, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 6, 8, OVERWORLD_MAP_GR, 4, 4, SOUTH + db $ff + +GrCastleEntrance_NPCs: + npc OW_GR_CLERK_14, 7, 3, SOUTH, $0 + npc OW_GR_CLERK_15, 3, 3, SOUTH, $0 + db $ff + +GrCastleEntrance_NPCInteractions: + npc_script OW_GR_CLERK_14, $0d, $7493 + npc_script OW_GR_CLERK_15, $0d, $7534 + db $ff + +GrCastleEntrance_OWInteractions: + ow_script 4, 3, $0d, $7480 + ow_script 5, 3, $0d, $7480 + ow_script 6, 3, $0d, $7480 + db $ff + +GrCastleEntrance_MapScripts: + dbw $00, $73cb + dbw $06, $740f + dbw $08, $746b + dbw $07, $7416 + dbw $02, $741f + dbw $09, $747b + db $ff +; gap from 0x373cb to 0x375df + +SECTION "Bank d@75df", ROMX[$75df], BANK[$d] + +GrCastle_MapHeader: + db MAP_GFX_GR_CASTLE + dba GrCastle_MapScripts + db MUSIC_GRCASTLE + +GrCastle_StepEvents: + map_exit 6, 15, MAP_GR_CASTLE_ENTRANCE, 4, 3, SOUTH + map_exit 7, 15, MAP_GR_CASTLE_ENTRANCE, 5, 3, SOUTH + map_exit 8, 15, MAP_GR_CASTLE_ENTRANCE, 6, 3, SOUTH + map_exit 6, 0, MAP_GR_CASTLE_BIRURITCHI, 6, 14, NORTH + map_exit 7, 0, MAP_GR_CASTLE_BIRURITCHI, 7, 14, NORTH + map_exit 8, 0, MAP_GR_CASTLE_BIRURITCHI, 8, 14, NORTH + ow_script 6, 5, $0d, $7a5f + ow_script 7, 5, $0d, $7a5f + ow_script 8, 5, $0d, $7a5f + db $ff + +GrCastle_NPCs: + npc OW_KANZAKI, 9, 9, WEST, $0 + npc OW_RUI, 5, 9, EAST, $0 + db $ff + +GrCastle_NPCInteractions: + npc_script OW_KANZAKI, $0d, $7809 + npc_script OW_RUI, $0d, $792d + db $ff + +GrCastle_MapScripts: + dbw $06, $765c + dbw $08, $76ed + dbw $09, $76f5 + dbw $07, $7663 + dbw $02, $766c + db $ff +; gap from 0x3765c to 0x37700 + +SECTION "Bank d@7700", ROMX[$7700], BANK[$d] + +GrCastle_AfterDuelScripts: + npc_script OW_KANZAKI, $0d, $78cf + npc_script OW_RUI, $0d, $7a21 + db $ff diff --git a/src/engine/bank0f.asm b/src/engine/bank0f.asm index fb18f7c..40fdb1a 100644 --- a/src/engine/bank0f.asm +++ b/src/engine/bank0f.asm @@ -226,3 +226,778 @@ Func_3c3ca: farcall PlayAfterCurrentSong ret ; 0x3c441 + +SECTION "Bank f@4603", ROMX[$4603], BANK[$f] +MasonLaboratorySide1_MapHeader: + db MAP_GFX_MASON_LABORATORY_SIDE_1 + dba MasonLaboratorySide1_MapScripts + db MUSIC_OVERWORLD + +MasonLaboratorySide1_StepEvents: + map_exit 0, 5, MAP_MASON_LABORATORY_MAIN, 12, 5, WEST + map_exit 0, 6, MAP_MASON_LABORATORY_MAIN, 12, 6, WEST + db $ff + +MasonLaboratorySide1_NPCs: + npc OW_TECH_13, 4, 3, SOUTH, $0 + npc OW_TECH_14, 7, 3, SOUTH, $0 + npc OW_TECH_15, 3, 8, NORTH, $0 + npc OW_TECH_16, 7, 9, EAST, $0 + db $ff + +MasonLaboratorySide1_NPCInteractions: + npc_script OW_TECH_13, $0f, $4739 + npc_script OW_TECH_14, $0f, $475f + npc_script OW_TECH_15, $0f, $477a + npc_script OW_TECH_16, $0f, $47ab + db $ff + +MasonLaboratorySide1_OWInteractions: + ow_script 2, 3, $0f, $46c3 + ow_script 3, 3, $0f, $46c3 + ow_script 8, 10, $0f, $46e8 + ow_script 9, 10, $0f, $46e8 + ow_script 8, 3, $0f, $4715 + ow_script 9, 3, $0f, $4715 + db $ff + +MasonLaboratorySide1_MapScripts: + dbw $06, $4689 + dbw $08, $46b3 + dbw $07, $4690 + dbw $02, $4697 + db $ff +; gap from 0x3c689 to 0x3c7dc + +SECTION "Bank f@47dc", ROMX[$47dc], BANK[$f] + +MasonLaboratorySide2_MapHeader: + db MAP_GFX_MASON_LABORATORY_SIDE_2 + dba MasonLaboratorySide2_MapScripts + db MUSIC_OVERWORLD + +MasonLaboratorySide2_StepEvents: + map_exit 13, 11, MAP_MASON_LABORATORY_MAIN, 1, 5, EAST + map_exit 13, 12, MAP_MASON_LABORATORY_MAIN, 1, 6, EAST + db $ff + +MasonLaboratorySide2_NPCs: + npc OW_AARON, 11, 2, NORTH, $0 + npc OW_TECH_17, 10, 11, EAST, $0 + db $ff + +MasonLaboratorySide2_NPCInteractions: + npc_script OW_AARON, $0f, $484c + npc_script OW_TECH_17, $0f, $4a4d + db $ff + +MasonLaboratorySide2_MapScripts: + dbw $06, $4817 + dbw $08, $4825 + dbw $09, $482d + dbw $07, $481e + db $ff +; gap from 0x3c817 to 0x3c83b + +SECTION "Bank f@483b", ROMX[$483b], BANK[$f] + +MasonLaboratorySide2_AfterDuelScripts: + npc_script OW_MINT, $0f, $4931 + npc_script OW_DR_MASON, $0f, $497e + npc_script OW_RONALD, $0f, $49cb + npc_script OW_ISHIHARA, $0f, $4a28 + db $ff +; gap from 0x3c84c to 0x3cb88 + +SECTION "Bank f@4b88", ROMX[$4b88], BANK[$f] + +LightningClubEntrance_MapHeader: + db MAP_GFX_LIGHTNING_CLUB_ENTRANCE + dba LightningClubEntrance_MapScripts + db MUSIC_OVERWORLD + +LightningClubEntrance_StepEvents: + map_exit 4, 8, OVERWORLD_MAP_TCG, 2, 5, SOUTH + map_exit 5, 8, OVERWORLD_MAP_TCG, 2, 5, SOUTH + map_exit 0, 3, MAP_LIGHTNING_CLUB_LOBBY, 14, 6, WEST + map_exit 0, 4, MAP_LIGHTNING_CLUB_LOBBY, 14, 7, WEST + map_exit 4, 0, MAP_LIGHTNING_CLUB, 6, 14, NORTH + map_exit 5, 0, MAP_LIGHTNING_CLUB, 7, 14, NORTH + db $ff + +LightningClubEntrance_MapScripts: + dbw $06, $4bf4 + dbw $02, $4bfb + dbw $0b, $4c37 + dbw $01, $4bd4 + dbw $10, $4be4 + db $ff +; gap from 0x3cbd4 to 0x3cc62 + +SECTION "Bank f@4c62", ROMX[$4c62], BANK[$f] + +LightningClubLobby_MapHeader: + db MAP_GFX_LIGHTNING_CLUB_LOBBY + dba LightningClubLobby_MapScripts + db MUSIC_OVERWORLD + +LightningClubLobby_StepEvents: + map_exit 15, 6, MAP_LIGHTNING_CLUB_ENTRANCE, 1, 3, EAST + map_exit 15, 7, MAP_LIGHTNING_CLUB_ENTRANCE, 1, 4, EAST + db $ff + +LightningClubLobby_NPCs: + npc OW_JENNIFER, 9, 8, EAST, $4db1 + npc OW_BRANDON, 9, 6, EAST, $4db1 + npc OW_LASS3_2, 11, 2, NORTH, $0 + npc OW_HOOD_4, 9, 4, SOUTH, $0 + npc OW_LASS1_3, 5, 6, EAST, $4e9b + npc OW_GR_LASS_7, 5, 6, EAST, $4ea8 + npc OW_CHAP_2, 8, 9, WEST, $0 + npc OW_CLERK_1, 2, 2, SOUTH, $0 + npc OW_CLERK_2, 4, 2, SOUTH, $0 + db $ff + +LightningClubLobby_NPCInteractions: + npc_script OW_JENNIFER, $0f, $4d4b + npc_script OW_BRANDON, $0f, $4d7e + npc_script OW_LASS3_2, $0f, $4dc6 + npc_script OW_HOOD_4, $0f, $4e39 + npc_script OW_LASS1_3, $0f, $4e6a + npc_script OW_GR_LASS_7, $0f, $4e6a + npc_script OW_CHAP_2, $0f, $4eb5 + db $ff + +LightningClubLobby_OWInteractions: + ow_script 8, 2, $03, $5411 + ow_script 9, 2, $03, $5411 + ow_script 2, 4, $0f, $41b9 + ow_script 4, 4, $0f, $42d9 + ow_script 12, 2, $10, $4294 + ow_script 13, 2, $10, $42aa + ow_script 14, 2, $10, $42c0 + db $ff + +LightningClubLobby_MapScripts: + dbw $06, $4d2b + dbw $08, $4d3b + dbw $07, $4d32 + dbw $01, $4d1b + db $ff +; gap from 0x3cd1b to 0x3cee6 + +SECTION "Bank f@4ee6", ROMX[$4ee6], BANK[$f] + +GrassClubLobby_MapHeader: + db MAP_GFX_GRASS_CLUB_LOBBY + dba GrassClubLobby_MapScripts + db MUSIC_OVERWORLD + +GrassClubLobby_StepEvents: + map_exit 15, 6, MAP_GRASS_CLUB_ENTRANCE, 1, 3, EAST + map_exit 15, 7, MAP_GRASS_CLUB_ENTRANCE, 1, 4, EAST + db $ff + +GrassClubLobby_NPCs: + npc OW_BRITTANY, 7, 9, WEST, $50ec + npc OW_KRISTIN, 6, 6, EAST, $50ec + npc OW_HEATHER, 10, 8, EAST, $50ec + npc OW_GRANNY, 3, 10, EAST, $5189 + npc OW_LASS2_3, 11, 4, SOUTH, $5189 + npc OW_GIRL_5, 7, 8, WEST, $5189 + npc OW_CLERK_1, 2, 2, SOUTH, $0 + npc OW_CLERK_2, 4, 2, SOUTH, $0 + db $ff + +GrassClubLobby_NPCInteractions: + npc_script OW_BRITTANY, $0f, $4fd8 + npc_script OW_KRISTIN, $0f, $5064 + npc_script OW_HEATHER, $0f, $50a8 + npc_script OW_GRANNY, $0f, $5101 + npc_script OW_LASS2_3, $0f, $5127 + npc_script OW_GIRL_5, $0f, $5158 + db $ff + +GrassClubLobby_OWInteractions: + ow_script 8, 2, $03, $5411 + ow_script 9, 2, $03, $5411 + ow_script 2, 4, $0f, $41b9 + ow_script 4, 4, $0f, $42d9 + ow_script 12, 2, $10, $418c + ow_script 13, 2, $10, $41a2 + ow_script 14, 2, $10, $41b8 + db $ff + +GrassClubLobby_MapScripts: + dbw $06, $4fa8 + dbw $08, $4fb8 + dbw $07, $4faf + dbw $09, $4fc8 + dbw $01, $4f98 + db $ff +; gap from 0x3cf98 to 0x3cfd3 + +SECTION "Bank f@4fd3", ROMX[$4fd3], BANK[$f] + +GrassClubLobby_AfterDuelScripts: + npc_script OW_BRITTANY, $0f, $502b + db $ff +; gap from 0x3cfd8 to 0x3d19e + +SECTION "Bank f@519e", ROMX[$519e], BANK[$f] + +TcgChallengeHallEntrance_MapHeader: + db MAP_GFX_TCG_CHALLENGE_HALL_ENTRANCE + dba TcgChallengeHallEntrance_MapScripts + db MUSIC_OVERWORLD + +TcgChallengeHallEntrance_StepEvents: + map_exit 4, 8, OVERWORLD_MAP_TCG, 4, 2, SOUTH + map_exit 5, 8, OVERWORLD_MAP_TCG, 4, 2, SOUTH + map_exit 0, 3, MAP_TCG_CHALLENGE_HALL_LOBBY, 14, 6, WEST + map_exit 0, 4, MAP_TCG_CHALLENGE_HALL_LOBBY, 14, 7, WEST + map_exit 4, 0, MAP_TCG_CHALLENGE_HALL, 7, 14, NORTH + map_exit 5, 0, MAP_TCG_CHALLENGE_HALL, 8, 14, NORTH + db $ff + +TcgChallengeHallEntrance_NPCs: + npc OW_CLERK_3, 3, 1, SOUTH, $0 + db $ff + +TcgChallengeHallEntrance_NPCInteractions: + npc_script OW_CLERK_3, $0f, $5271 + db $ff + +TcgChallengeHallEntrance_MapScripts: + dbw $06, $5259 + dbw $08, $5269 + dbw $07, $5260 + dbw $01, $51f6 + dbw $04, $5210 + db $ff +; gap from 0x3d1f6 to 0x3d2d7 + +SECTION "Bank f@52d7", ROMX[$52d7], BANK[$f] + +TcgChallengeHallLobby_MapHeader: + db MAP_GFX_TCG_CHALLENGE_HALL_LOBBY + dba TcgChallengeHallLobby_MapScripts + db MUSIC_OVERWORLD + +TcgChallengeHallLobby_StepEvents: + map_exit 15, 6, MAP_TCG_CHALLENGE_HALL_ENTRANCE, 1, 3, EAST + map_exit 15, 7, MAP_TCG_CHALLENGE_HALL_ENTRANCE, 1, 4, EAST + db $ff + +TcgChallengeHallLobby_NPCs: + npc OW_CHAP_3, 10, 4, SOUTH, $0 + npc OW_GAL_3, 7, 9, EAST, $55a3 + npc OW_HOOD_5, 5, 6, EAST, $55a3 + npc OW_PAPPY_4, 4, 9, EAST, $55ba + npc OW_TECH_7, 9, 10, NORTH, $55ba + npc OW_GIRL_6, 13, 9, WEST, $55ba + npc OW_CLERK_1, 2, 2, SOUTH, $0 + npc OW_CLERK_2, 4, 2, SOUTH, $0 + db $ff + +TcgChallengeHallLobby_NPCInteractions: + npc_script OW_CHAP_3, $0f, $53c0 + npc_script OW_GAL_3, $0f, $54e9 + npc_script OW_HOOD_5, $0f, $5511 + npc_script OW_PAPPY_4, $0f, $5539 + npc_script OW_TECH_7, $0f, $556d + npc_script OW_GIRL_6, $0f, $5588 + db $ff + +TcgChallengeHallLobby_OWInteractions: + ow_script 8, 2, $03, $5411 + ow_script 9, 2, $03, $5411 + ow_script 2, 4, $0f, $41b9 + ow_script 4, 4, $0f, $42d9 + ow_script 12, 2, $10, $4318 + ow_script 13, 2, $10, $432e + ow_script 14, 2, $10, $4344 + db $ff + +TcgChallengeHallLobby_MapScripts: + dbw $06, $53a0 + dbw $08, $53b0 + dbw $07, $53a7 + dbw $01, $5386 + db $ff +; gap from 0x3d386 to 0x3d5d1 + +SECTION "Bank f@55d1", ROMX[$55d1], BANK[$f] + +PokemonDome_MapHeader: + db MAP_GFX_POKEMON_DOME + dba PokemonDome_MapScripts + db MUSIC_OVERWORLD + +PokemonDome_StepEvents: + map_exit 7, 15, MAP_POKEMON_DOME_ENTRANCE, 11, 1, SOUTH + map_exit 8, 15, MAP_POKEMON_DOME_ENTRANCE, 12, 1, SOUTH + db $ff + +PokemonDome_NPCs: + npc OW_COURTNEY, 3, 6, EAST, $57e2 + npc OW_STEVE, 9, 6, EAST, $5889 + npc OW_JACK, 12, 6, WEST, $592c + npc OW_ROD, 6, 6, SOUTH, $59b1 + npc OW_GR_5, 7, 8, SOUTH, $59fc + npc OW_LASS1_5, 7, 4, SOUTH, $5af0 + npc OW_LASS2_5, 8, 4, SOUTH, $5af0 + npc OW_GR_LASS_8, 4, 12, EAST, $5af0 + npc OW_YOUNGSTER_5, 9, 8, SOUTH, $5af0 + npc OW_SWIMMER, 2, 5, EAST, $5af0 + db $ff + +PokemonDome_NPCInteractions: + npc_script OW_COURTNEY, $0f, $5768 + npc_script OW_STEVE, $0f, $5805 + npc_script OW_JACK, $0f, $58ac + npc_script OW_ROD, $0f, $594f + npc_script OW_GR_5, $0f, $59d4 + npc_script OW_LASS1_5, $0f, $5a09 + npc_script OW_LASS2_5, $0f, $5a09 + npc_script OW_GR_LASS_8, $0f, $5a6c + npc_script OW_YOUNGSTER_5, $0f, $5a97 + npc_script OW_SWIMMER, $0f, $5abf + db $ff + +PokemonDome_OWInteractions: + ow_script 7, 1, $0f, $5b13 + ow_script 8, 1, $0f, $5b13 + db $ff + +PokemonDome_MapScripts: + dbw $06, $56ba + dbw $08, $5740 + dbw $09, $5750 + dbw $07, $56c1 + dbw $02, $56ca + dbw $04, $5719 + dbw $0f, $5734 + dbw $01, $567b + db $ff +; gap from 0x3d67b to 0x3d75b + +SECTION "Bank f@575b", ROMX[$575b], BANK[$f] + +PokemonDome_AfterDuelScripts: + npc_script OW_COURTNEY, $0f, $57c6 + npc_script OW_STEVE, $0f, $586d + npc_script OW_JACK, $0f, $5910 + db $ff +; gap from 0x3d768 to 0x3dd58 + +SECTION "Bank f@5d58", ROMX[$5d58], BANK[$f] + +PokemonDomeBack_MapHeader: + db MAP_GFX_POKEMON_DOME_BACK + dba PokemonDomeBack_MapScripts + db MUSIC_POKEMONDOME + +PokemonDomeBack_StepEvents: + map_exit 7, 15, MAP_POKEMON_DOME, 7, 1, SOUTH + map_exit 8, 15, MAP_POKEMON_DOME, 8, 1, SOUTH + db $ff + +PokemonDomeBack_NPCs: + npc OW_COURTNEY, 7, 13, SOUTH, $0 + npc OW_STEVE, 8, 12, SOUTH, $0 + npc OW_JACK, 8, 13, SOUTH, $0 + npc OW_ROD, 7, 12, SOUTH, $0 + npc OW_GAL_3, 7, 2, SOUTH, $668b + db $ff + +PokemonDomeBack_MapScripts: + dbw $06, $5da8 + dbw $09, $5e72 + dbw $07, $5daf + dbw $02, $5db8 + dbw $04, $5e67 + dbw $0b, $5e91 + dbw $0e, $5eca + dbw $0f, $5e6f + db $ff +; gap from 0x3dda8 to 0x3e698 + +SECTION "Bank f@6698", ROMX[$6698], BANK[$f] + +IshiharasVilla1_MapHeader: + db MAP_GFX_ISHIHARAS_VILLA_1 + dba IshiharasVilla1_MapScripts + db MUSIC_ISHIHARA + +IshiharasVilla1_StepEvents: + map_exit 4, 10, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 5, 10, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 4, 0, MAP_ISHIHARAS_VILLA_2, 4, 7, NORTH + map_exit 5, 0, MAP_ISHIHARAS_VILLA_2, 5, 7, NORTH + db $ff + +IshiharasVilla1_NPCs: + npc OW_ISHIHARA, 6, 5, WEST, $67d6 + npc OW_GR_GAL_4, 2, 2, NORTH, $68d3 + db $ff +; gap from 0x3e6cf to 0x3e6d8 + +SECTION "Bank f@66d8", ROMX[$66d8], BANK[$f] + +IshiharasVilla1_OWInteractions: + ow_script 7, 2, $03, $5411 + ow_script 8, 2, $03, $5411 + db $ff + +IshiharasVilla1_MapScripts: + dbw $06, $672a + dbw $08, $673a + dbw $09, $67bb + dbw $07, $6731 + dbw $0c, $674a + dbw $0d, $6778 + dbw $0b, $6787 + dbw $01, $6704 + db $ff +; gap from 0x3e704 to 0x3e8e0 + +SECTION "Bank f@68e0", ROMX[$68e0], BANK[$f] + +IshiharasVilla2_MapHeader: + db MAP_GFX_ISHIHARAS_VILLA_2 + dba IshiharasVilla2_MapScripts + db MUSIC_ISHIHARA + +IshiharasVilla2_StepEvents: + map_exit 4, 8, MAP_ISHIHARAS_VILLA_1, 4, 1, SOUTH + map_exit 5, 8, MAP_ISHIHARAS_VILLA_1, 5, 1, SOUTH + db $ff + +IshiharasVilla2_NPCs: + npc OW_ISHIHARA, 5, 4, SOUTH, $6a55 + npc OW_GR_GAL_4, 4, 2, NORTH, $6cd5 + db $ff + +IshiharasVilla2_NPCInteractions: + npc_script OW_ISHIHARA, $0f, $6a12 + npc_script OW_GR_GAL_4, $0f, $6c75 + db $ff + +IshiharasVilla2_OWInteractions: + ow_script 1, 2, $10, $43de + ow_script 2, 2, $10, $43f4 + ow_script 3, 2, $10, $440a + ow_script 6, 2, $10, $4420 + ow_script 7, 2, $10, $4436 + ow_script 8, 2, $10, $444c + db $ff + +IshiharasVilla2_MapScripts: + dbw $06, $6981 + dbw $08, $6991 + dbw $07, $6988 + dbw $0c, $69a1 + dbw $0d, $69cf + dbw $0b, $69de + dbw $01, $695b + db $ff +; gap from 0x3e95b to 0x3ecea + +SECTION "Bank f@6cea", ROMX[$6cea], BANK[$f] + +GameCenterEntrance_MapHeader: + db MAP_GFX_GAME_CENTER_ENTRANCE + dba GameCenterEntrance_MapScripts + db MUSIC_GAMECORNER + +GameCenterEntrance_StepEvents: + map_exit 5, 15, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 6, 15, OVERWORLD_MAP_GR, 4, 4, SOUTH + map_exit 0, 6, MAP_GAME_CENTER_LOBBY, 12, 6, WEST + map_exit 0, 7, MAP_GAME_CENTER_LOBBY, 12, 7, WEST + map_exit 5, 0, MAP_GAME_CENTER_1, 5, 13, NORTH + map_exit 6, 0, MAP_GAME_CENTER_1, 6, 13, NORTH + ow_script 5, 9, $0d, $426f + ow_script 6, 9, $0d, $426f + ow_script 6, 2, $0f, $6e9e + ow_script 5, 10, $0f, $6ec7 + ow_script 6, 10, $0f, $6ec7 + db $ff + +GameCenterEntrance_NPCs: + npc OW_GR_CLERK_16, 9, 2, SOUTH, $0 + npc OW_GR_CLERK_17, 2, 2, SOUTH, $0 + npc OW_CHIP_GIRL_1, 5, 2, SOUTH, $0 + npc OW_MONOCLE_1, 4, 9, EAST, $0 + db $ff + +GameCenterEntrance_NPCInteractions: + npc_script OW_CHIP_GIRL_1, $0f, $6e11 + npc_script OW_MONOCLE_1, $0f, $6e83 + db $ff + +GameCenterEntrance_OWInteractions: + ow_script 9, 4, $0f, $6db2 + ow_script 2, 4, $0f, $6db7 + db $ff + +GameCenterEntrance_MapScripts: + dbw $06, $6d92 + dbw $08, $6da2 + dbw $07, $6d99 + db $ff +; gap from 0x3ed92 to 0x3eefa + +SECTION "Bank f@6efa", ROMX[$6efa], BANK[$f] + +GameCenterLobby_MapHeader: + db MAP_GFX_GAME_CENTER_LOBBY + dba GameCenterLobby_MapScripts + db MUSIC_GAMECORNER + +GameCenterLobby_StepEvents: + map_exit 13, 6, MAP_GAME_CENTER_ENTRANCE, 1, 6, EAST + map_exit 13, 7, MAP_GAME_CENTER_ENTRANCE, 1, 6, EAST + db $ff + +GameCenterLobby_NPCs: + npc OW_TECH_8, 10, 4, WEST, $0 + npc OW_GR_LASS_6, 8, 9, EAST, $0 + npc OW_GR_PAPPY_3, 3, 7, SOUTH, $0 + npc OW_IMAKUNI_RED, 12, 1, NORTH, $703d + npc OW_GR_CLERK_3, 5, 2, SOUTH, $0 + npc OW_GR_CLERK_4, 8, 2, SOUTH, $0 + db $ff + +GameCenterLobby_NPCInteractions: + npc_script OW_TECH_8, $0f, $6fd6 + npc_script OW_GR_LASS_6, $0f, $6ff1 + npc_script OW_GR_PAPPY_3, $0f, $7017 + npc_script OW_IMAKUNI_RED, $0f, $44e0 + db $ff + +GameCenterLobby_OWInteractions: + ow_script 1, 2, $03, $5411 + ow_script 2, 2, $03, $5411 + ow_script 5, 4, $0f, $41d0 + ow_script 8, 4, $0f, $42d9 + db $ff + +GameCenterLobby_MapScripts: + dbw $06, $6f95 + dbw $08, $6fa5 + dbw $09, $6fb5 + dbw $0b, $6fba + dbw $07, $6f9c + dbw $10, $6f80 + db $ff +; gap from 0x3ef80 to 0x3f04c + +SECTION "Bank f@704c", ROMX[$704c], BANK[$f] + +CardDungeonPawn_MapHeader: + db MAP_GFX_CARD_DUNGEON_PAWN + dba CardDungeonPawn_MapScripts + db MUSIC_FORT_3 + +CardDungeonPawn_StepEvents: + map_exit 4, 0, MAP_CARD_DUNGEON_KNIGHT, 4, 8, NORTH + map_exit 5, 0, MAP_CARD_DUNGEON_KNIGHT, 5, 8, NORTH + db $ff + +CardDungeonPawn_NPCs: + npc OW_PAWN, 4, 4, SOUTH, $0 + db $ff + +CardDungeonPawn_NPCInteractions: + npc_script OW_PAWN, $0f, $70d9 + db $ff + +CardDungeonPawn_OWInteractions: + ow_script 4, 1, $0f, $71de + ow_script 5, 1, $0f, $71de + db $ff + +CardDungeonPawn_MapScripts: + dbw $06, $7093 + dbw $08, $70a3 + dbw $09, $70d4 + dbw $07, $709a + dbw $02, $70b3 + db $ff +; gap from 0x3f093 to 0x3f1f2 + +SECTION "Bank f@71f2", ROMX[$71f2], BANK[$f] + +CardDungeonKnight_MapHeader: + db MAP_GFX_CARD_DUNGEON_KNIGHT + dba CardDungeonKnight_MapScripts + db MUSIC_FORT_3 + +CardDungeonKnight_StepEvents: + map_exit 4, 0, MAP_CARD_DUNGEON_BISHOP, 4, 8, NORTH + map_exit 5, 0, MAP_CARD_DUNGEON_BISHOP, 5, 8, NORTH + db $ff + +CardDungeonKnight_NPCs: + npc OW_KNIGHT, 4, 3, SOUTH, $0 + db $ff + +CardDungeonKnight_NPCInteractions: + npc_script OW_KNIGHT, $0f, $727f + db $ff + +CardDungeonKnight_OWInteractions: + ow_script 4, 1, $0f, $73ad + ow_script 5, 1, $0f, $73ad + db $ff + +CardDungeonKnight_MapScripts: + dbw $06, $7239 + dbw $08, $7249 + dbw $09, $727a + dbw $07, $7240 + dbw $02, $7259 + db $ff +; gap from 0x3f239 to 0x3f3c2 + +SECTION "Bank f@73c2", ROMX[$73c2], BANK[$f] + +CardDungeonRook_MapHeader: + db MAP_GFX_CARD_DUNGEON_ROOK + dba CardDungeonRook_MapScripts + db MUSIC_FORT_3 + +CardDungeonRook_StepEvents: + map_exit 4, 0, MAP_CARD_DUNGEON_QUEEN, 4, 10, NORTH + map_exit 5, 0, MAP_CARD_DUNGEON_QUEEN, 5, 10, NORTH + db $ff + +CardDungeonRook_NPCs: + npc OW_ROOK, 5, 3, SOUTH, $0 + db $ff + +CardDungeonRook_NPCInteractions: + npc_script OW_ROOK, $0f, $744f + db $ff + +CardDungeonRook_OWInteractions: + ow_script 4, 1, $0f, $7596 + ow_script 5, 1, $0f, $7596 + db $ff + +CardDungeonRook_MapScripts: + dbw $06, $7409 + dbw $08, $7419 + dbw $09, $744a + dbw $07, $7410 + dbw $02, $7429 + db $ff +; gap from 0x3f409 to 0x3f5ab + +SECTION "Bank f@75ab", ROMX[$75ab], BANK[$f] + +WaterFortLobby_MapHeader: + db MAP_GFX_WATER_FORT_LOBBY + dba WaterFortLobby_MapScripts + db MUSIC_FORT_1 + +WaterFortLobby_StepEvents: + map_exit 13, 6, MAP_WATER_FORT_ENTRANCE, 1, 3, EAST + map_exit 13, 7, MAP_WATER_FORT_ENTRANCE, 1, 4, EAST + db $ff + +WaterFortLobby_NPCs: + npc OW_SPECS_2, 10, 10, WEST, $7718 + npc OW_GR_LAD_3, 10, 10, WEST, $7735 + npc OW_GR_GRANNY_2, 2, 7, SOUTH, $0 + npc OW_GR_GAL_2, 5, 9, NORTH, $0 + npc OW_IMAKUNI_RED, 12, 1, NORTH, $77a6 + npc OW_GR_CLERK_3, 5, 2, SOUTH, $0 + npc OW_GR_CLERK_4, 8, 2, SOUTH, $0 + db $ff + +WaterFortLobby_NPCInteractions: + npc_script OW_SPECS_2, $0f, $7691 + npc_script OW_GR_LAD_3, $0f, $7691 + npc_script OW_GR_GRANNY_2, $0f, $7752 + npc_script OW_GR_GAL_2, $0f, $7780 + npc_script OW_IMAKUNI_RED, $0f, $44e0 + db $ff + +WaterFortLobby_OWInteractions: + ow_script 1, 2, $03, $5411 + ow_script 2, 2, $03, $5411 + ow_script 5, 4, $0f, $41d0 + ow_script 8, 4, $0f, $42d9 + db $ff + +WaterFortLobby_MapScripts: + dbw $06, $7650 + dbw $08, $7660 + dbw $09, $7670 + dbw $0b, $7675 + dbw $07, $7657 + dbw $10, $763b + db $ff +; gap from 0x3f63b to 0x3f7b5 + +SECTION "Bank f@77b5", ROMX[$77b5], BANK[$f] + +FightingFortMaze19_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_19 + dba FightingFortMaze19_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze19_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_14, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_14, 5, 1, SOUTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_18, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_18, 8, 4, WEST + db $ff + +FightingFortMaze19_NPCs: + npc OW_CHEST_CLOSED, 5, 3, SOUTH, $7830 + npc OW_CHEST_OPENED, 5, 3, SOUTH, $784b + db $ff + +FightingFortMaze19_NPCInteractions: + npc_script OW_CHEST_CLOSED, $0f, $7817 + npc_script OW_CHEST_OPENED, $0f, $783d + db $ff + +FightingFortMaze19_MapScripts: + dbw $06, $77ff + dbw $08, $780f + dbw $07, $7806 + db $ff +; gap from 0x3f7ff to 0x3f884 + +SECTION "Bank f@7884", ROMX[$7884], BANK[$f] + +FightingFortBasement_MapHeader: + db MAP_GFX_FIGHTING_FORT_BASEMENT + dba FightingFortBasement_MapScripts + db MUSIC_FORT_3 + +FightingFortBasement_StepEvents: + map_exit 1, 6, MAP_FIGHTING_FORT, 1, 4, SOUTH + db $ff + +FightingFortBasement_NPCs: + npc OW_CHEST_CLOSED, 1, 1, SOUTH, $7925 + npc OW_CHEST_OPENED, 1, 1, SOUTH, $7951 + db $ff + +FightingFortBasement_NPCInteractions: + npc_script OW_CHEST_CLOSED, $0f, $790c + npc_script OW_CHEST_OPENED, $0f, $7932 + db $ff + +FightingFortBasement_MapScripts: + dbw $06, $78b6 + dbw $08, $7904 + dbw $07, $78bd + dbw $02, $78c6 + db $ff diff --git a/src/engine/bank10.asm b/src/engine/bank10.asm index e480336..262f417 100644 --- a/src/engine/bank10.asm +++ b/src/engine/bank10.asm @@ -1,11 +1,11 @@ SECTION "Bank 10@4462", ROMX[$4462], BANK[$10] -OverworldTCG_MapHeader: +OverworldTcg_MapHeader: db OVERWORLD_MAP_GFX_TCG - dba OverworldTCG_MapScripts + dba OverworldTcg_MapScripts db MUSIC_OVERWORLD -OverworldTCG_MapScripts: +OverworldTcg_MapScripts: dbw $01, Func_40474 dbw $02, Func_4048a dbw $04, Func_4053b @@ -627,3 +627,313 @@ DoGRShipMovement: db $50, $78, EAST db $ff, $ff ; end ; 0x40db3 + +SECTION "Bank 10@4db3", ROMX[$4db3], BANK[$10] + +MasonLaboratoryMain_MapHeader: + db MAP_GFX_MASON_LABORATORY_MAIN + dba MasonLaboratoryMain_MapScripts + db MUSIC_OVERWORLD + +MasonLaboratoryMain_StepEvents: + _ow_coordinate_function 6, 14, 0, 1, 7, 2, $10, $4fff + _ow_coordinate_function 7, 14, 0, 1, 7, 2, $10, $4fff + map_exit 0, 5, MAP_MASON_LABORATORY_SIDE_2, 12, 11, WEST + map_exit 0, 6, MAP_MASON_LABORATORY_SIDE_2, 12, 12, WEST + map_exit 13, 5, MAP_MASON_LABORATORY_SIDE_1, 1, 5, EAST + map_exit 13, 6, MAP_MASON_LABORATORY_SIDE_1, 1, 6, EAST + db $ff + +MasonLaboratoryMain_NPCs: + npc OW_DR_MASON, 7, 5, SOUTH, $0 + npc OW_SAM, 2, 7, EAST, $0 + npc OW_TECH_9, 3, 2, SOUTH, $0 + npc OW_TECH_10, 11, 8, SOUTH, $0 + npc OW_TECH_11, 9, 10, WEST, $0 + npc OW_TECH_12, 10, 4, WEST, $0 + npc OW_RONALD, 3, 6, SOUTH, $521d + db $ff + +MasonLaboratoryMain_NPCInteractions: + npc_script OW_DR_MASON, $10, $5188 + npc_script OW_SAM, $10, $5233 + npc_script OW_TECH_9, $10, $5370 + npc_script OW_TECH_10, $10, $5396 + npc_script OW_TECH_11, $10, $53bc + npc_script OW_TECH_12, $10, $53e2 + npc_script OW_RONALD, $10, $51f2 + db $ff + +MasonLaboratoryMain_OWInteractions: + ow_script 1, 2, $03, $5411 + ow_script 2, 2, $03, $5411 + ow_script 6, 3, $10, $501d + ow_script 7, 3, $10, $501d + db $ff + +MasonLaboratoryMain_MapScripts: + dbw $06, $4e83 + dbw $08, $4f04 + dbw $09, $4f21 + dbw $11, $4f14 + dbw $07, $4e8a + dbw $02, $4e91 + dbw $01, $4e72 + db $ff +; gap from 0x40e72 to 0x40f3d + +SECTION "Bank 10@4f3d", ROMX[$4f3d], BANK[$10] + +MasonLaboratoryMain_AfterDuelScripts: + npc_script OW_DR_MASON, $10, $533e + npc_script OW_SAM, $10, $52c0 + db $ff +; gap from 0x40f46 to 0x41592 + +SECTION "Bank 10@5592", ROMX[$5592], BANK[$10] + +TcgChallengeHall_MapHeader: + db MAP_GFX_TCG_CHALLENGE_HALL + dba TcgChallengeHall_MapScripts + db MUSIC_OVERWORLD + +TcgChallengeHall_StepEvents: + map_exit 7, 15, MAP_TCG_CHALLENGE_HALL_ENTRANCE, 4, 1, SOUTH + map_exit 8, 15, MAP_TCG_CHALLENGE_HALL_ENTRANCE, 5, 1, SOUTH + db $ff + +TcgChallengeHall_NPCs: + npc OW_GAL_3, 7, 2, SOUTH, $5768 + npc OW_LASS2_5, 10, 9, SOUTH, $5768 + npc OW_LASS1_5, 5, 9, SOUTH, $5768 + npc OW_MAN_3, 7, 10, SOUTH, $5751 + db $ff + +TcgChallengeHall_NPCInteractions: + npc_script OW_LASS1_5, $10, $5662 + npc_script OW_LASS2_5, $10, $5705 + npc_script OW_MAN_3, $10, $5720 + db $ff + +TcgChallengeHall_MapScripts: + dbw $06, $55f3 + dbw $08, $5622 + dbw $09, $562a + dbw $07, $55fa + dbw $01, $55e6 + dbw $02, $5603 + dbw $0b, $563b + db $ff +; gap from 0x415e6 to 0x41be9 + +SECTION "Bank 10@5be9", ROMX[$5be9], BANK[$10] + +GrAirport_MapHeader: + db MAP_GFX_GR_AIRPORT + dba GrAirport_MapScripts + db MUSIC_GROVERWORLD + +GrAirport_StepEvents: + map_exit 13, 9, MAP_GR_AIRPORT_ENTRANCE, 1, 6, EAST + map_exit 13, 10, MAP_GR_AIRPORT_ENTRANCE, 1, 7, EAST + _ow_coordinate_function 5, 8, 0, 0, 0, 3, $10, $5dac + ow_script 4, 9, $10, $5dac + ow_script 3, 9, $10, $5dac + _ow_coordinate_function 2, 8, 0, 0, 0, 1, $10, $5dac + db $ff + +GrAirport_NPCs: + npc OW_GR_5, 4, 8, SOUTH, $0 + db $ff + +GrAirport_NPCInteractions: + npc_script OW_GR_5, $10, $5cd3 + db $ff + +GrAirport_MapScripts: + dbw $00, $5c44 + dbw $06, $5c50 + dbw $08, $5ccb + dbw $07, $5c57 + dbw $02, $5c60 + dbw $0f, $5ca1 + db $ff +; gap from 0x41c44 to 0x41e8e + +SECTION "Bank 10@5e8e", ROMX[$5e8e], BANK[$10] + +SealedFort_MapHeader: + db MAP_GFX_SEALED_FORT + dba SealedFort_MapScripts + db MUSIC_FORT_4 + +SealedFort_StepEvents: + map_exit 5, 12, MAP_SEALED_FORT_ENTRANCE, 4, 1, SOUTH + map_exit 6, 12, MAP_SEALED_FORT_ENTRANCE, 5, 1, SOUTH + map_exit 7, 12, MAP_SEALED_FORT_ENTRANCE, 6, 1, SOUTH + ow_script 6, 6, $10, $5f66 + db $ff + +SealedFort_OWInteractions: + ow_script 6, 2, $10, $5fe1 + ow_script 2, 2, $10, $607e + ow_script 3, 2, $10, $6119 + ow_script 4, 2, $10, $61b4 + ow_script 5, 2, $10, $624f + ow_script 9, 2, $10, $62ec + ow_script 7, 2, $10, $6387 + ow_script 8, 2, $10, $6424 + ow_script 10, 2, $10, $64bf + db $ff + +SealedFort_MapScripts: + dbw $06, $5f14 + dbw $08, $5f1b + dbw $09, $5f36 + db $ff +; gap from 0x41f14 to 0x41f41 + +SECTION "Bank 10@5f41", ROMX[$5f41], BANK[$10] + +SealedFort_AfterDuelScripts: + npc_script OW_TOBICHAN, $10, $6050 + npc_script OW_EIJI, $10, $60eb + npc_script OW_MAGICIAN, $10, $6186 + npc_script OW_TOSHIRON, $10, $6221 + npc_script OW_PIERROT, $10, $62be + npc_script OW_ANNA, $10, $6359 + npc_script OW_DEE, $10, $63f6 + npc_script OW_MASQUERADE, $10, $6491 + npc_script OW_YUI, $10, $652c + db $ff +; gap from 0x41f66 to 0x425cf + +SECTION "Bank 10@65cf", ROMX[$65cf], BANK[$10] + +GrChallengeHall_MapHeader: + db MAP_GFX_GR_CHALLENGE_HALL + dba GrChallengeHall_MapScripts + db MUSIC_GROVERWORLD + +GrChallengeHall_StepEvents: + map_exit 7, 15, MAP_GR_CHALLENGE_HALL_ENTRANCE, 4, 1, SOUTH + map_exit 8, 15, MAP_GR_CHALLENGE_HALL_ENTRANCE, 5, 1, SOUTH + db $ff + +GrChallengeHall_NPCs: + npc OW_GAL_3, 7, 2, SOUTH, $694a + npc OW_LASS1_6, 4, 8, SOUTH, $694a + npc OW_LASS2_7, 11, 8, SOUTH, $694a + npc OW_GR_STAFF, 8, 6, NORTH, $699f + db $ff + +GrChallengeHall_NPCInteractions: + npc_script OW_LASS1_6, $10, $688d + npc_script OW_LASS2_7, $10, $692f + npc_script OW_GR_STAFF, $10, $6961 + db $ff + +GrChallengeHall_OWInteractions: + ow_script 7, 3, $10, $671f + ow_script 8, 3, $10, $671f + db $ff + +GrChallengeHall_MapScripts: + dbw $06, $6639 + dbw $08, $66b9 + dbw $09, $66d6 + dbw $11, $66c9 + dbw $07, $6640 + dbw $02, $666e + dbw $01, $6649 + dbw $0b, $66f8 + db $ff +; gap from 0x42639 to 0x42e2b + +SECTION "Bank 10@6e2b", ROMX[$6e2b], BANK[$10] + +FightingFortMaze1_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_1 + dba FightingFortMaze1_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze1_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT, 3, 2, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT, 3, 2, SOUTH + map_exit 4, 0, MAP_FIGHTING_FORT_MAZE_6, 4, 7, NORTH + map_exit 5, 0, MAP_FIGHTING_FORT_MAZE_6, 5, 7, NORTH + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_2, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_2, 1, 4, EAST + db $ff + +FightingFortMaze1_MapScripts: + dbw $06, $6e6e + dbw $02, $6e75 + db $ff +; gap from 0x42e6e to 0x42e80 + +SECTION "Bank 10@6e80", ROMX[$6e80], BANK[$10] + +FightingFortMaze21_MapHeader: + db MAP_GFX_FIGHTING_FORT_MAZE_21 + dba FightingFortMaze21_MapScripts + db MUSIC_FORT_3 + +FightingFortMaze21_StepEvents: + map_exit 4, 8, MAP_FIGHTING_FORT_MAZE_17, 4, 1, SOUTH + map_exit 5, 8, MAP_FIGHTING_FORT_MAZE_17, 5, 1, SOUTH + map_exit 0, 3, MAP_FIGHTING_FORT_MAZE_20, 8, 3, WEST + map_exit 0, 4, MAP_FIGHTING_FORT_MAZE_20, 8, 4, WEST + map_exit 9, 3, MAP_FIGHTING_FORT_MAZE_22, 1, 3, EAST + map_exit 9, 4, MAP_FIGHTING_FORT_MAZE_22, 1, 4, EAST + db $ff + +FightingFortMaze21_MapScripts: + dbw $06, $6ec3 + dbw $02, $6eca + db $ff +; gap from 0x42ec3 to 0x42ed5 + +SECTION "Bank 10@6ed5", ROMX[$6ed5], BANK[$10] + +GrCastleBiruritchi_MapHeader: + db MAP_GFX_GR_CASTLE_BIRURITCHI + dba GrCastleBiruritchi_MapScripts + db MUSIC_GRCASTLE + +GrCastleBiruritchi_StepEvents: + map_exit 6, 15, MAP_GR_CASTLE, 6, 1, SOUTH + map_exit 7, 15, MAP_GR_CASTLE, 7, 1, SOUTH + map_exit 8, 15, MAP_GR_CASTLE, 8, 1, SOUTH + db $ff + +GrCastleBiruritchi_NPCs: + npc OW_BIRURITCHI, 7, 5, SOUTH, $0 + db $ff + +GrCastleBiruritchi_NPCInteractions: + npc_script OW_BIRURITCHI, $10, $7136 + db $ff + +GrCastleBiruritchi_OWInteractions: + ow_script 4, 12, $10, $71bf + ow_script 10, 12, $10, $71bf + db $ff + +GrCastleBiruritchi_MapScripts: + dbw $06, $6f2e + dbw $08, $6fad + dbw $09, $6fbd + dbw $07, $6f35 + dbw $02, $6f3e + dbw $0b, $6fcd + dbw $04, $6f86 + dbw $0f, $6fa1 + db $ff +; gap from 0x42f2e to 0x42fc8 + +SECTION "Bank 10@6fc8", ROMX[$6fc8], BANK[$10] + +GrCastleBiruritchi_AfterDuelScripts: + npc_script OW_BIRURITCHI, $10, $71a6 + db $ff diff --git a/tools/constants.py b/tools/constants.py index 0305093..5332b21 100644 --- a/tools/constants.py +++ b/tools/constants.py @@ -451,14 +451,552 @@ cards = { decks = {} -directions = [] +directions = [ + "NORTH", + "EAST", + "SOUTH", + "WEST" +] events = [] -maps = [] +maps = [ + "OVERWORLD_MAP_TCG", + "OVERWORLD_MAP_GR", + "MAP_MASON_LABORATORY_MAIN", + "MAP_MASON_LABORATORY_SIDE_1", + "MAP_MASON_LABORATORY_SIDE_2", + "MAP_ISHIHARAS_HOUSE", + "MAP_LIGHTNING_CLUB_ENTRANCE", + "MAP_LIGHTNING_CLUB_LOBBY", + "MAP_LIGHTNING_CLUB", + "MAP_PSYCHIC_CLUB_ENTRANCE", + "MAP_PSYCHIC_CLUB_LOBBY", + "MAP_PSYCHIC_CLUB", + "MAP_ROCK_CLUB_ENTRANCE", + "MAP_ROCK_CLUB_LOBBY", + "MAP_ROCK_CLUB", + "MAP_FIGHTING_CLUB_ENTRANCE", + "MAP_FIGHTING_CLUB_LOBBY", + "MAP_FIGHTING_CLUB", + "MAP_GRASS_CLUB_ENTRANCE", + "MAP_GRASS_CLUB_LOBBY", + "MAP_GRASS_CLUB", + "MAP_SCIENCE_CLUB_ENTRANCE", + "MAP_SCIENCE_CLUB_LOBBY", + "MAP_SCIENCE_CLUB", + "MAP_WATER_CLUB_ENTRANCE", + "MAP_WATER_CLUB_LOBBY", + "MAP_WATER_CLUB", + "MAP_FIRE_CLUB_ENTRANCE", + "MAP_FIRE_CLUB_LOBBY", + "MAP_FIRE_CLUB", + "MAP_TCG_AIRPORT_ENTRANCE", + "MAP_TCG_AIRPORT", + "MAP_TCG_CHALLENGE_HALL_ENTRANCE", + "MAP_TCG_CHALLENGE_HALL_LOBBY", + "MAP_TCG_CHALLENGE_HALL", + "MAP_POKEMON_DOME_ENTRANCE", + "MAP_POKEMON_DOME", + "MAP_POKEMON_DOME_BACK", + "MAP_OVERHEAD_ISLANDS", + "MAP_GR_AIRPORT_ENTRANCE", + "MAP_GR_AIRPORT", + "MAP_ISHIHARAS_VILLA_1", + "MAP_ISHIHARAS_VILLA_2", + "MAP_GAME_CENTER_ENTRANCE", + "MAP_GAME_CENTER_LOBBY", + "MAP_GAME_CENTER_1", + "MAP_GAME_CENTER_2", + "MAP_CARD_DUNGEON_PAWN", + "MAP_CARD_DUNGEON_KNIGHT", + "MAP_CARD_DUNGEON_BISHOP", + "MAP_CARD_DUNGEON_ROOK", + "MAP_CARD_DUNGEON_QUEEN", + "MAP_SEALED_FORT_ENTRANCE", + "MAP_SEALED_FORT", + "MAP_GR_CHALLENGE_HALL_ENTRANCE", + "MAP_GR_CHALLENGE_HALL_LOBBY", + "MAP_GR_CHALLENGE_HALL", + "MAP_GRASS_FORT_ENTRANCE", + "MAP_GRASS_FORT_LOBBY", + "MAP_GRASS_FORT_MIDORI", + "MAP_GRASS_FORT_YUTA", + "MAP_GRASS_FORT_MIYUKI", + "MAP_GRASS_FORT_MORINO", + "MAP_LIGHTNING_FORT_ENTRANCE", + "MAP_LIGHTNING_FORT_LOBBY", + "MAP_LIGHTNING_FORT_RENNA", + "MAP_LIGHTNING_FORT_ICHIKAWA", + "MAP_LIGHTNING_FORT_CATHERINE", + "MAP_FIRE_FORT_ENTRANCE", + "MAP_FIRE_FORT_LOBBY", + "MAP_FIRE_FORT_JES", + "MAP_FIRE_FORT_YUKI", + "MAP_FIRE_FORT_SHOKO", + "MAP_FIRE_FORT_HIDERO", + "MAP_WATER_FORT_ENTRANCE", + "MAP_WATER_FORT_LOBBY", + "MAP_WATER_FORT_MIYAJIMA", + "MAP_WATER_FORT_SENTA", + "MAP_WATER_FORT_AIRA", + "MAP_WATER_FORT_KANOKO", + "MAP_FIGHTING_FORT_ENTRANCE", + "MAP_FIGHTING_FORT", + "MAP_FIGHTING_FORT_MAZE_1", + "MAP_FIGHTING_FORT_MAZE_2", + "MAP_FIGHTING_FORT_MAZE_3", + "MAP_FIGHTING_FORT_MAZE_4", + "MAP_FIGHTING_FORT_MAZE_5", + "MAP_FIGHTING_FORT_MAZE_6", + "MAP_FIGHTING_FORT_MAZE_7", + "MAP_FIGHTING_FORT_MAZE_8", + "MAP_FIGHTING_FORT_MAZE_9", + "MAP_FIGHTING_FORT_MAZE_10", + "MAP_FIGHTING_FORT_MAZE_11", + "MAP_FIGHTING_FORT_MAZE_12", + "MAP_FIGHTING_FORT_MAZE_13", + "MAP_FIGHTING_FORT_MAZE_14", + "MAP_FIGHTING_FORT_MAZE_15", + "MAP_FIGHTING_FORT_MAZE_16", + "MAP_FIGHTING_FORT_MAZE_17", + "MAP_FIGHTING_FORT_MAZE_18", + "MAP_FIGHTING_FORT_MAZE_19", + "MAP_FIGHTING_FORT_MAZE_20", + "MAP_FIGHTING_FORT_MAZE_21", + "MAP_FIGHTING_FORT_MAZE_22", + "MAP_FIGHTING_FORT_BASEMENT", + "MAP_FIGHTING_FORT_GODA", + "MAP_FIGHTING_FORT_GRACE", + "MAP_PSYCHIC_STRONGHOLD_ENTRANCE", + "MAP_PSYCHIC_STRONGHOLD_LOBBY", + "MAP_PSYCHIC_STRONGHOLD", + "MAP_PSYCHIC_STRONGHOLD_MAMI", + "MAP_COLORLESS_ALTAR_ENTRANCE", + "MAP_COLORLESS_ALTAR", + "MAP_GR_CASTLE_ENTRANCE", + "MAP_GR_CASTLE", + "MAP_GR_CASTLE_BIRURITCHI" +] -npcs = [] +mapgfx = [ + "OVERWORLD_MAP_GFX_TCG", + "OVERWORLD_MAP_GFX_GR", + "MAP_GFX_MASON_LABORATORY_MAIN", + "MAP_GFX_MASON_LABORATORY_SIDE_1", + "MAP_GFX_MASON_LABORATORY_SIDE_2", + "MAP_GFX_ISHIHARAS_HOUSE", + "MAP_GFX_LIGHTNING_CLUB_ENTRANCE", + "MAP_GFX_LIGHTNING_CLUB_LOBBY", + "MAP_GFX_LIGHTNING_CLUB_1", + "MAP_GFX_LIGHTNING_CLUB_2", + "MAP_GFX_PSYCHIC_CLUB_ENTRANCE", + "MAP_GFX_PSYCHIC_CLUB_LOBBY", + "MAP_GFX_PSYCHIC_CLUB", + "MAP_GFX_ROCK_CLUB_ENTRANCE", + "MAP_GFX_ROCK_CLUB_LOBBY", + "MAP_GFX_ROCK_CLUB", + "MAP_GFX_FIGHTING_CLUB_ENTRANCE", + "MAP_GFX_FIGHTING_CLUB_LOBBY", + "MAP_GFX_FIGHTING_CLUB", + "MAP_GFX_GRASS_CLUB_ENTRANCE", + "MAP_GFX_GRASS_CLUB_LOBBY", + "MAP_GFX_GRASS_CLUB", + "MAP_GFX_SCIENCE_CLUB_ENTRANCE", + "MAP_GFX_SCIENCE_CLUB_LOBBY", + "MAP_GFX_SCIENCE_CLUB", + "MAP_GFX_WATER_CLUB_ENTRANCE", + "MAP_GFX_WATER_CLUB_LOBBY", + "MAP_GFX_WATER_CLUB", + "MAP_GFX_FIRE_CLUB_ENTRANCE", + "MAP_GFX_FIRE_CLUB_LOBBY", + "MAP_GFX_FIRE_CLUB", + "MAP_GFX_TCG_AIRPORT_ENTRANCE", + "MAP_GFX_TCG_AIRPORT", + "MAP_GFX_TCG_CHALLENGE_HALL_ENTRANCE", + "MAP_GFX_TCG_CHALLENGE_HALL_LOBBY", + "MAP_GFX_TCG_CHALLENGE_HALL", + "MAP_GFX_POKEMON_DOME_ENTRANCE", + "MAP_GFX_POKEMON_DOME", + "MAP_GFX_OVERHEAD_ISLANDS", + "MAP_GFX_GR_AIRPORT_ENTRANCE", + "MAP_GFX_GR_AIRPORT", + "MAP_GFX_ISHIHARAS_VILLA_1", + "MAP_GFX_ISHIHARAS_VILLA_2", + "MAP_GFX_GAME_CENTER_ENTRANCE", + "MAP_GFX_GAME_CENTER_LOBBY", + "MAP_GFX_GAME_CENTER_1", + "MAP_GFX_GAME_CENTER_2", + "MAP_GFX_CARD_DUNGEON_PAWN", + "MAP_GFX_CARD_DUNGEON_KNIGHT", + "MAP_GFX_CARD_DUNGEON_BISHOP", + "MAP_GFX_CARD_DUNGEON_ROOK", + "MAP_GFX_CARD_DUNGEON_QUEEN", + "MAP_GFX_SEALED_FORT_ENTRANCE", + "MAP_GFX_SEALED_FORT", + "MAP_GFX_GR_CHALLENGE_HALL_ENTRANCE", + "MAP_GFX_GR_CHALLENGE_HALL_LOBBY", + "MAP_GFX_GR_CHALLENGE_HALL", + "MAP_GFX_GRASS_FORT_ENTRANCE", + "MAP_GFX_GRASS_FORT_LOBBY", + "MAP_GFX_GRASS_FORT_MIDORI", + "MAP_GFX_GRASS_FORT_YUTA", + "MAP_GFX_GRASS_FORT_MIYUKI", + "MAP_GFX_GRASS_FORT_MORINO", + "MAP_GFX_LIGHTNING_FORT_ENTRANCE", + "MAP_GFX_LIGHTNING_FORT_LOBBY", + "MAP_GFX_LIGHTNING_FORT_RENNA", + "MAP_GFX_LIGHTNING_FORT_ICHIKAWA", + "MAP_GFX_LIGHTNING_FORT_CATHERINE", + "MAP_GFX_FIRE_FORT_ENTRANCE", + "MAP_GFX_FIRE_FORT_LOBBY", + "MAP_GFX_FIRE_FORT_JES", + "MAP_GFX_FIRE_FORT_YUKI", + "MAP_GFX_FIRE_FORT_SHOKO", + "MAP_GFX_FIRE_FORT_HIDERO", + "MAP_GFX_WATER_FORT_ENTRANCE", + "MAP_GFX_WATER_FORT_LOBBY", + "MAP_GFX_WATER_FORT_MIYAJIMA", + "MAP_GFX_WATER_FORT_SENTA", + "MAP_GFX_WATER_FORT_AIRA", + "MAP_GFX_WATER_FORT_KANOKO", + "MAP_GFX_FIGHTING_FORT_ENTRANCE", + "MAP_GFX_FIGHTING_FORT", + "MAP_GFX_FIGHTING_FORT_MAZE_1", + "MAP_GFX_FIGHTING_FORT_MAZE_2", + "MAP_GFX_FIGHTING_FORT_MAZE_3", + "MAP_GFX_FIGHTING_FORT_MAZE_4", + "MAP_GFX_FIGHTING_FORT_MAZE_5", + "MAP_GFX_FIGHTING_FORT_MAZE_6", + "MAP_GFX_FIGHTING_FORT_GODA", + "MAP_GFX_FIGHTING_FORT_GRACE", + "MAP_GFX_PSYCHIC_STRONGHOLD_ENTRANCE", + "MAP_GFX_PSYCHIC_STRONGHOLD_LOBBY", + "MAP_GFX_PSYCHIC_STRONGHOLD", + "MAP_GFX_PSYCHIC_STRONGHOLD_MAMI", + "MAP_GFX_COLORLESS_ALTAR_ENTRANCE", + "MAP_GFX_COLORLESS_ALTAR", + "MAP_GFX_GR_CASTLE_ENTRANCE", + "MAP_GFX_GR_CASTLE", + "MAP_GFX_GR_CASTLE_BIRURITCHI", + "MAP_GFX_POKEMON_DOME_BACK", + "MAP_GFX_FIGHTING_FORT_MAZE_7", + "MAP_GFX_FIGHTING_FORT_MAZE_8", + "MAP_GFX_FIGHTING_FORT_MAZE_9", + "MAP_GFX_FIGHTING_FORT_MAZE_10", + "MAP_GFX_FIGHTING_FORT_MAZE_11", + "MAP_GFX_FIGHTING_FORT_MAZE_12", + "MAP_GFX_FIGHTING_FORT_MAZE_13", + "MAP_GFX_FIGHTING_FORT_MAZE_14", + "MAP_GFX_FIGHTING_FORT_MAZE_15", + "MAP_GFX_FIGHTING_FORT_MAZE_16", + "MAP_GFX_FIGHTING_FORT_MAZE_17", + "MAP_GFX_FIGHTING_FORT_MAZE_18", + "MAP_GFX_FIGHTING_FORT_MAZE_19", + "MAP_GFX_FIGHTING_FORT_MAZE_20", + "MAP_GFX_FIGHTING_FORT_MAZE_21", + "MAP_GFX_FIGHTING_FORT_MAZE_22", + "MAP_GFX_FIGHTING_FORT_BASEMENT", + "MAP_GFX_GR_CHALLENGE_HALL_2" +] + +npcs = [ + "OW_MARK", + "OW_MINT", + "OW_DR_MASON", + "OW_RONALD", + "OW_ISHIHARA", + "OW_IMAKUNI_BLACK", + "OW_SAM", + "OW_AARON", + "OW_PAPPY_1", + "OW_GENE", + "OW_MATTHEW", + "OW_RYAN", + "OW_ANDREW", + "OW_MITCH", + "OW_MICHAEL", + "OW_CHRIS", + "OW_JESSICA", + "OW_NIKKI", + "OW_BRITTANY", + "OW_KRISTIN", + "OW_HEATHER", + "OW_RICK", + "OW_DAVID", + "OW_JOSEPH", + "OW_ERIK", + "OW_AMY", + "OW_AMY_LOUNGE", + "OW_JOSHUA", + "OW_SARA", + "OW_AMANDA", + "OW_KEN", + "OW_JOHN", + "OW_ADAM", + "OW_JONATHAN", + "OW_ISAAC", + "OW_JENNIFER", + "OW_NICHOLAS", + "OW_BRANDON", + "OW_MURRAY", + "OW_ROBERT", + "OW_DANIEL", + "OW_STEPHANIE", + "OW_COURTNEY", + "OW_STEVE", + "OW_JACK", + "OW_ROD", + "OW_GR_1", + "OW_GR_2", + "OW_GR_3", + "OW_GR_4", + "OW_GR_5", + "OW_GR_LAD_1", + "OW_MIDORI", + "OW_YUTA", + "OW_MIYUKI", + "OW_MORINO", + "OW_GR_LASS_1", + "OW_RENNA", + "OW_ICHIKAWA", + "OW_CATHERINE", + "OW_GR_GRANNY_1", + "OW_MIYAJIMA_ALT", + "OW_JES", + "OW_YUKI", + "OW_SHOKO", + "OW_HIDERO", + "OW_SPECS_2", + "OW_MIYAJIMA", + "OW_SENTA", + "OW_AIRA", + "OW_KANOKO", + "OW_GODA", + "OW_GRACE", + "OW_KAMIYA", + "OW_GAL_1", + "OW_MIWA", + "OW_KEVIN", + "OW_YOSUKE", + "OW_RYOKO", + "OW_MAMI", + "OW_NISHIJIMA", + "OW_ISHII", + "OW_SAMEJIMA", + "OW_KANZAKI", + "OW_RUI", + "OW_BIRURITCHI", + "OW_TOBICHAN", + "OW_EIJI", + "OW_MAGICIAN", + "OW_TOSHIRON", + "OW_PIERROT", + "OW_ANNA", + "OW_DEE", + "OW_MASQUERADE", + "OW_PAWN", + "OW_KNIGHT", + "OW_BISHOP", + "OW_ROOK", + "OW_QUEEN", + "OW_GR_X", + "OW_CLERK_1", + "OW_CLERK_2", + "OW_GR_CLERK_1", + "OW_GR_CLERK_2", + "OW_GR_CLERK_3", + "OW_GR_CLERK_4", + "OW_LASS2_2", + "OW_WOMAN", + "OW_CHAP_1", + "OW_LAD_3", + "OW_PAPPY_2", + "OW_SPECS_3", + "OW_LAD4", + "OW_GIRL_4", + "OW_GRANNY", + "OW_LASS2_3", + "OW_GIRL_5", + "OW_MAN_2", + "OW_LAD_5", + "OW_SPECS_4", + "OW_TECH_6", + "OW_PAPPY_3", + "OW_LASS1_2", + "OW_LASS2_4", + "OW_HOOD_3", + "OW_MANIA_4", + "OW_GAL_2", + "OW_LASS3_2", + "OW_HOOD_4", + "OW_LASS1_3", + "OW_CHAP_2", + "OW_SPECS_5", + "OW_LASS1_4", + "OW_LAD_6", + "OW_GR_LASS_2", + "OW_GR_CLERK_5", + "OW_GR_GAL_1", + "OW_MANIA_5", + "OW_CLERK_3", + "OW_CHAP_3", + "OW_GAL_3", + "OW_HOOD_5", + "OW_MAN_3", + "OW_PAPPY_4", + "OW_TECH_7", + "OW_GIRL_6", + "OW_LASS1_5", + "OW_LASS2_5", + "OW_GR_CLERK_6", + "OW_GR_PAPPY_1", + "OW_GR_LASS_3", + "OW_GR_CLERK_7", + "OW_GR_LAD_2", + "OW_GR_PAPPY_2", + "OW_GR_LASS_4", + "OW_GR_CLERK_8", + "OW_GR_WOMAN_1", + "OW_BUTCH_1", + "OW_TAP", + "OW_GR_CLERK_9", + "OW_YOUNGSTER_4", + "OW_GR_CLERK_10", + "OW_GR_GRANNY_2", + "OW_GR_GAL_2", + "OW_GR_CLERK_11", + "OW_GR_CLERK_12", + "OW_MANIA_6", + "OW_GR_LASS_5", + "OW_GR_CLERK_13", + "OW_TECH_8", + "OW_GR_LASS_6", + "OW_GR_PAPPY_3", + "OW_CAPTURED_AMY", + "OW_CAPTURED_SARA", + "OW_CAPTURED_AMANDA", + "OW_WARP_SPARKLES", + "OW_YUI", + "OW_IMAKUNI_RED", + "OW_BUTCH_2", + "OW_TECH_9", + "OW_TECH_10", + "OW_TECH_11", + "OW_TECH_12", + "OW_TECH_13", + "OW_TECH_14", + "OW_TECH_15", + "OW_TECH_16", + "OW_TECH_17", + "OW_GR_CLERK_14", + "OW_GR_CLERK_15", + "OW_GR_CLERK_16", + "OW_GR_CLERK_17", + "OW_CHIP_GIRL_1", + "OW_MONOCLE_1", + "OW_MONOCLE_2", + "OW_DEALER_BOY_1", + "OW_DEALER_GIRL_1", + "OW_DEALER_BOY_2", + "OW_CHIP_GIRL_2", + "OW_DEALER_GIRL_2", + "OW_VOLCANO_SMOKE_TCG", + "OW_VOLCANO_SMOKE_GR", + "OW_CURSOR_TCG", + "OW_CURSOR_GR", + "OW_GR_CROSS", + "OW_GR_CASTLE_FLAG", + "OW_CHEST_CLOSED", + "OW_CHEST_OPENED", + "OW_GR_BLIMP_BEAM", + "OW_GR_BLIMP", + "OW_POD_DOORS", + "OW_GR_LAD_3", + "OW_GR_LASS_7", + "OW_GR_LASS_8", + "OW_YOUNGSTER_5", + "OW_SWIMMER", + "OW_GR_GAL_3", + "OW_BUTCH_3", + "OW_MANIA_7", + "OW_GAMBLER", + "OW_GR_WOMAN_2", + "OW_GR_GAL_4", + "OW_GR_CLERK_18", + "OW_GR_CHAP", + "OW_GR_WOMAN_3", + "OW_GR_STAFF", + "OW_LASS1_6", + "OW_LASS2_7", + "OW_RED_FORT_COIN", + "OW_BLUE_FORT_COIN", + "OW_WHITE_CASTLE_COIN", + "OW_PURPLE_CASTLE_COIN", + "OW_STRONGHOLD_PLATFORM" +] sfxs = [] -songs = [] +songs = [ + "MUSIC_STOP", + "MUSIC_TITLESCREEN", + "MUSIC_DUELTHEME_1", + "MUSIC_DUELTHEME_2", + "MUSIC_DUELTHEME_3", + "MUSIC_PAUSEMENU", + "MUSIC_PCMAINMENU", + "MUSIC_DECKMACHINE", + "MUSIC_CARDPOP", + "MUSIC_OVERWORLD", + "MUSIC_POKEMONDOME", + "MUSIC_CHALLENGEHALL", + "MUSIC_CLUB_1", + "MUSIC_CLUB_2", + "MUSIC_CLUB_3", + "MUSIC_RONALD", + "MUSIC_IMAKUNI", + "MUSIC_HALLOFHONOR", + "MUSIC_12", + "MUSIC_13", + "MUSIC_HERECOMESGR", + "MUSIC_GROVERWORLD", + "MUSIC_FORT_1", + "MUSIC_FORT_2", + "MUSIC_FORT_3", + "MUSIC_FORT_4", + "MUSIC_GRCASTLE", + "MUSIC_1B", + "MUSIC_GRCHALLENGECUP", + "MUSIC_GAMECORNER", + "MUSIC_GRBLIMP", + "MUSIC_GRDUELTHEME_1", + "MUSIC_GRDUELTHEME_2", + "MUSIC_GRDUELTHEME_3", + "MUSIC_22", + "MUSIC_ISHIHARA", + "MUSIC_IMAKUNI2", + "MUSIC_CREDITS", + "MUSIC_26", + "MUSIC_27", + "MUSIC_MATCHSTART_1", + "MUSIC_MATCHSTART_2", + "MUSIC_MATCHSTART_3", + "MUSIC_MATCHVICTORY", + "MUSIC_MATCHLOSS", + "MUSIC_MATCHDRAW", + "MUSIC_UNUSED_2E", + "MUSIC_BOOSTER_PACK", + "MUSIC_MEDAL", + "MUSIC_UNUSED_31", + "MUSIC_DITTY_1", + "MUSIC_DITTY_2", + "MUSIC_DITTY_3", + "MUSIC_DITTY_4", + "MUSIC_DITTY_5", + "MUSIC_37", + "MUSIC_38", + "MUSIC_39", + "MUSIC_DITTY6", + "MUSIC_3B" +] diff --git a/tools/map_header_extractor.py b/tools/map_header_extractor.py new file mode 100644 index 0000000..89264f0 --- /dev/null +++ b/tools/map_header_extractor.py @@ -0,0 +1,391 @@ +#!/usr/bin/env python + +from __future__ import print_function + +import argparse +import sys + +from constants import cards +from constants import decks +from constants import directions +from constants import events +from constants import maps +from constants import mapgfx +from constants import npcs +from constants import sfxs +from constants import songs + +from script_extractor import sort_and_filter +from script_extractor import get_bank +from script_extractor import get_relative_address +from script_extractor import make_blob + +args = None +rom = None + +# get absolute pointer stored at an address in the rom +# if bank is None, assumes the pointer refers to the same bank as the bank it is located in +def get_pointer(address, bank=None): + raw_pointer = rom[address + 1] * 0x100 + rom[address] + if raw_pointer < 0x4000: + bank = 0 + if bank is None: + bank = get_bank(address) + return (raw_pointer % 0x4000) + bank * 0x4000 + +def make_address_comment(address): + if args.address_comments: + return ": ; {:x} ({:x}:{:x})\n".format(address, get_bank(address), get_relative_address(address)) + else: + return ":\n" + +def dump_npcs(function_address, map_name_camelcase): + # the functions should always start with + if rom[function_address] == 0x21: + table_start_address = get_pointer(function_address + 1) + else: + print("WARN: {}_NPCs table not found in function {:x}".format(map_name_camelcase, function_address)) + return [] + + address = table_start_address + + label = map_name_camelcase + "_NPCs" + output = label + make_address_comment(address) + + current_byte = rom[address] + while current_byte != 0xff: + npc_id = npcs[rom[address]] + x_coord = rom[address+1] + y_coord = rom[address+2] + direction = directions[rom[address+3]] + ptr = get_pointer(address+4) + raw_ptr = rom[address+4] + (rom[address+5])*0x100 + + if args.function_labels: + output += "\tnpc {}, {}, {}, {}, Func_{:x}\n".format( + npc_id, x_coord, y_coord, direction, ptr + ) + else: + output += "\tnpc {}, {}, {}, {}, ${:x}\n".format( + npc_id, x_coord, y_coord, direction, raw_ptr + ) + + address += 6 + current_byte = rom[address] + + output += "\tdb $ff\n" + + return [make_blob(table_start_address, output, address+1)] + +def dump_stepevents(function_address, map_name_camelcase): + # the functions should always have: + # + # + temp = function_address + while rom[temp] != 0xc9: # ret + if rom[temp] == 0x21 and rom[temp+3] == 0xcd and rom[temp+4] == 0x4d and rom[temp+5] == 0x32: + table_start_address = get_pointer(temp + 1) + break + temp += 1 + if table_start_address is None: + print("WARN: {}_StepEvents table not found in function {:x}".format(map_name_camelcase, function_address)) + return [] + + address = table_start_address + + label = map_name_camelcase + "_StepEvents" + output = label + make_address_comment(address) + + current_byte = rom[address] + while current_byte != 0xff: + output += dump_ow_coordinate_function(address) + + address += 9 + current_byte = rom[address] + + output += "\tdb $ff\n" + + return [make_blob(table_start_address, output, address+1)] + +def dump_npcinteractions(function_address, map_name_camelcase): + # the functions should always have: + # + # + # ONLY LightningFortCatherine calls + temp = function_address + table_start_address = None + while rom[temp] != 0xc9: # ret + if rom[temp] == 0x21 and rom[temp+3] == 0xcd and (rom[temp+4] in [0x8c,0xaa]) and rom[temp+5] == 0x32: + table_start_address = get_pointer(temp + 1) + break + temp += 1 + if table_start_address is None: + print("WARN: {}_NPCInteractions table not found in function {:x}".format(map_name_camelcase, function_address)) + return [] + + + address = table_start_address + + label = map_name_camelcase + "_NPCInteractions" + output = label + make_address_comment(address) + + current_byte = rom[address] + while current_byte != 0xff: + npc_id = npcs[rom[address]] + ptr = get_pointer(address+2) + bank = rom[address+1] + raw_ptr = rom[address+2] + (rom[address+3])*0x100 + + if args.function_labels: + output += "\tnpc_script {}, Func_{:x}\n".format(npc_id,ptr) + else: + output += "\tnpc_script {}, ${:02x}, ${:x}\n".format(npc_id, bank, raw_ptr) + + address += 4 + current_byte = rom[address] + + output += "\tdb $ff\n" + + return [make_blob(table_start_address, output, address+1)] + +def dump_afterduelscripts(function_address, map_name_camelcase): + # the functions should always have: + # + # + temp = function_address + table_start_address = None + while rom[temp] != 0xc9: # ret + if rom[temp] == 0x21: + table_start_address = get_pointer(temp + 1) + break + temp += 1 + if table_start_address is None: + print("WARN: {}_AfterDuelScripts table not found in function {:x}".format(map_name_camelcase, function_address)) + return [] + + + address = table_start_address + + label = map_name_camelcase +"_AfterDuelScripts" + output = label + make_address_comment(address) + + current_byte = rom[address] + while current_byte != 0xff: + npc_id = npcs[rom[address]] + ptr = get_pointer(address+2) + bank = rom[address+1] + raw_ptr = rom[address+2] + (rom[address+3])*0x100 + + if args.function_labels: + output += "\tnpc_script {}, Func_{:x}\n".format(npc_id,ptr) + else: + output += "\tnpc_script {}, ${:02x}, ${:x}\n".format(npc_id, bank, raw_ptr) + + address += 4 + current_byte = rom[address] + + output += "\tdb $ff\n" + + return [make_blob(table_start_address, output, address+1)] + +def dump_ow_coordinate_function(address): + x_coord = rom[address] + y_coord = rom[address+1] + a_register = rom[address+2] + d_register = rom[address+3] + e_register = rom[address+4] + b_register = rom[address+5] + function_addr = get_pointer(address+7, rom[address+6]) + bank = rom[address+6] + raw_ptr = rom[address+7] + (rom[address+8])*0x100 + + # see map_exit macro + if(function_addr == 0xd3c4): + output = "\tmap_exit {}, {}, {}, {}, {}, {}\n".format( + x_coord, y_coord, maps[a_register], d_register, e_register, directions[b_register] + ) + # see ow_script macro + elif a_register == 0 and d_register == 0 and e_register == 0 and b_register == 0: + if args.function_labels: + output = "\tow_script {}, {}, Func_{:x}\n".format( + x_coord, y_coord, function_addr + ) + else: + output = "\tow_script {}, {}, ${:02x}, ${:x}\n".format( + x_coord, y_coord, bank, raw_ptr + ) + # generic case + else: + if args.function_labels: + output = "\t_ow_coordinate_function {}, {}, {}, {}, {}, {}, Func_{:x}\n".format( + x_coord, y_coord, a_register, d_register, e_register, b_register, function_addr + ) + else: + output = "\t_ow_coordinate_function {}, {}, {}, {}, {}, {}, ${:02x}, ${:x}\n".format( + x_coord, y_coord, a_register, d_register, e_register, b_register, bank, raw_ptr + ) + return output + +def dump_owinteractions(function_address, map_name_camelcase): + # the functions should always have: + # + # + # Only the two SealedFort maps instead have: + table_start_address = None + temp = function_address + while rom[temp] != 0xc9: # ret + if rom[temp] == 0x21 and rom[temp+3] == 0xcd and (rom[temp+4] in [0xbf,0x54]) and rom[temp+5] == 0x32: + table_start_address = get_pointer(temp + 1) + break + temp += 1 + if table_start_address is None: + print("WARN: {}_OWInteractions table not found in function {:x}".format(map_name_camelcase,function_address)) + return [] + + address = table_start_address + + label = map_name_camelcase + "_OWInteractions" + output = label + make_address_comment(address) + + current_byte = rom[address] + while current_byte != 0xff: + output += dump_ow_coordinate_function(address) + + address += 9 + current_byte = rom[address] + + output += "\tdb $ff\n" + + return [make_blob(table_start_address, output, address+1)] + +def dump_mapscripts_table(address, map_name_camelcase): + blobs = [] + + start_address = address + output = "" + label = map_name_camelcase + "_MapScripts" + output += label + make_address_comment(start_address) + + current_byte = rom[address] + while current_byte != 0xff: + script_type = rom[address] + function_ptr = get_pointer(address+1) + raw_ptr = rom[address+1] + (rom[address+2])*0x100 + + if args.function_labels: + output += "\tdbw ${:02x}, Func_{:x}\n".format(script_type, function_ptr) + else: + output += "\tdbw ${:02x}, ${:04x}\n".format(script_type, raw_ptr) + + if script_type == 6: + blobs += dump_stepevents(function_ptr, map_name_camelcase) + elif script_type == 7: + blobs += dump_npcs(function_ptr, map_name_camelcase) + elif script_type == 8: + blobs += dump_npcinteractions(function_ptr, map_name_camelcase) + blobs += dump_owinteractions(function_ptr, map_name_camelcase) + elif script_type == 9: + blobs += dump_afterduelscripts(function_ptr, map_name_camelcase) + + address += 3 + current_byte = rom[address] + + output += "\tdb $ff\n" + + blobs.append(make_blob(start_address, output, address+1)) + return blobs + +def dump_mapheader(start_address, map_name_camelcase): + blobs = [] + + output = "" + address = start_address + + map_gfx = mapgfx[rom[address]] + mapscripts_ptr = get_pointer(address+2, rom[address+1]) + music = songs[rom[address+4]] + + output = map_name_camelcase + "_MapHeader" + make_address_comment(start_address) + output += "\tdb " + map_gfx + "\n" + output += "\tdba " + map_name_camelcase + "_MapScripts\n" + output += "\tdb " + music + "\n" + + blobs.append(make_blob(start_address, output, start_address+5)) + blobs += (dump_mapscripts_table(mapscripts_ptr, map_name_camelcase)) + + return blobs + +def macro_case_to_pascalcase(name: str): + return name.replace("MAP", "").replace("_", " ").title().replace(" ", "") + +def dump_mapheadersptrs_table(start_address): + blobs = [] + output = "MapHeaderPtrs::\n" + + address = start_address + + # there are 0x73 maps in the game + for i in range(0x73+1): + current_map = maps[i] + map_name_camelcase = macro_case_to_pascalcase(current_map) + map_header_address = get_pointer(address+1, rom[address]) + + output += "\tdba " + map_name_camelcase + "_MapHeader\n" + + blobs += dump_mapheader(map_header_address, map_name_camelcase) + address += 3 + + blobs.append(make_blob(start_address, output, address)) + return blobs + +def fill_gap(start, end): + output = "" + for address in range(start, end): + output += "\tdb ${:x}\n".format(rom[address]) + output += "\n" + return output + +def sort_and_filter(blobs): + blobs.sort(key=lambda b: (b["start"], b["end"], not b["output"].startswith(";"))) + filtered = [] + for blob, next in zip(blobs, blobs[1:]+[None]): + if next and blob["start"] == next["start"] and blob["output"] == next["output"]: + continue + if next and blob["end"] < next["start"] and get_bank(blob["end"]) == get_bank(next["start"]): + if args.fill_gaps: + blob["output"] += fill_gap(blob["end"], next["start"]) + else: + blob["output"] += "; gap from 0x{:x} to 0x{:x}\n\n".format(blob["end"], next["start"]) + + # bit of a sketchy place to add SECTIONs to the output, but it works well + bank = get_bank(next["start"]) + raw_addr = next["start"] - ((bank-1)*0x4000) + blob["output"] += 'SECTION "Bank {:x}@{:04x}", ROMX[${:04x}], BANK[${:x}]\n'.format(bank, raw_addr, raw_addr, bank) + blob["output"] += '\n' + filtered.append(blob) + if len(filtered) > 0: + filtered[-1]["output"] = filtered[-1]["output"].rstrip("\n") + return filtered + +if __name__ == "__main__": + ap = argparse.ArgumentParser(description="Pokemon TCG 2 Script Extractor") + ap.add_argument("-a", "--address-comments", action="store_true", help="add address comments after labels") + ap.add_argument("-b", "--allow-backward-jumps", action="store_true", help="extract scripts that are found before the starting address") + ap.add_argument("-g", "--fill-gaps", action="store_true", help="use 'db's to fill the gaps between visited locations") + ap.add_argument("-f", "--function-labels", action="store_true", help="use function labels (Func_xxx) instead of raw bank/addr bytes") + ap.add_argument("-i", "--ignore-errors", action="store_true", help="silently proceed to the next address if an error occurs") + ap.add_argument("-r", "--rom", default="baserom.gbc", help="rom file to extract script from") + ap.add_argument("-s", "--symfile", default="poketcg2.sym", help="symfile to extract symbols from") + + args = ap.parse_args() + rom = bytearray(open(args.rom, "rb").read()) + blobs = [] + + map_header_table_addr = 0xc651 + blobs += dump_mapheadersptrs_table(map_header_table_addr) + + blobs = sort_and_filter(blobs) + output = "" + for blob in blobs: + output += blob["output"] + print(output)