diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/constants/map_constants.asm | 14 | ||||
-rw-r--r-- | src/constants/printer_constants.asm | 9 | ||||
-rw-r--r-- | src/constants/tilemap_constants.asm | 212 | ||||
-rw-r--r-- | src/data/maps/permissions/challenge_machine_map_event.bin (renamed from src/data/maps/permissions/unknown1.bin) | 0 | ||||
-rw-r--r-- | src/data/maps/permissions/challenge_machine_map_event_cgb.bin (renamed from src/data/maps/permissions/unknown1_cgb.bin) | 0 | ||||
-rw-r--r-- | src/data/maps/permissions/deck_machine_map_event.bin (renamed from src/data/maps/permissions/unknown_2.bin) | 0 | ||||
-rw-r--r-- | src/data/maps/permissions/deck_machine_map_event_cgb.bin (renamed from src/data/maps/permissions/unknown_2_cgb.bin) | 0 | ||||
-rw-r--r-- | src/data/maps/permissions/hall_of_honor_door_map_event.bin (renamed from src/data/maps/permissions/unknown_3.bin) | bin | 3 -> 3 bytes | |||
-rw-r--r-- | src/data/maps/permissions/hall_of_honor_door_map_event_cgb.bin (renamed from src/data/maps/permissions/unknown_3_cgb.bin) | bin | 3 -> 3 bytes | |||
-rw-r--r-- | src/data/maps/permissions/pokemon_dome_door_map_event.bin (renamed from src/data/maps/permissions/unknown_4.bin) | bin | 3 -> 3 bytes | |||
-rw-r--r-- | src/data/maps/permissions/pokemon_dome_door_map_event_cgb.bin (renamed from src/data/maps/permissions/unknown_4_cgb.bin) | bin | 3 -> 3 bytes | |||
-rw-r--r-- | src/data/maps/tiles/challenge_machine_map_event.bin (renamed from src/data/maps/tiles/unknown1.bin) | 0 | ||||
-rw-r--r-- | src/data/maps/tiles/challenge_machine_map_event_cgb.bin (renamed from src/data/maps/tiles/unknown1_cgb.bin) | 0 | ||||
-rw-r--r-- | src/data/maps/tiles/deck_machine_map_event.bin (renamed from src/data/maps/tiles/unknown_2.bin) | 0 | ||||
-rw-r--r-- | src/data/maps/tiles/deck_machine_map_event_cgb.bin (renamed from src/data/maps/tiles/unknown_2_cgb.bin) | 0 | ||||
-rw-r--r-- | src/data/maps/tiles/hall_of_honor_door_map_event.bin (renamed from src/data/maps/tiles/unknown_4.bin) | 0 | ||||
-rw-r--r-- | src/data/maps/tiles/hall_of_honor_door_map_event_cgb.bin (renamed from src/data/maps/tiles/unknown_4_cgb.bin) | 0 | ||||
-rw-r--r-- | src/data/maps/tiles/pokemon_dome_door_map_event.bin (renamed from src/data/maps/tiles/unknown_3.bin) | bin | 10 -> 10 bytes | |||
-rw-r--r-- | src/data/maps/tiles/pokemon_dome_door_map_event_cgb.bin (renamed from src/data/maps/tiles/unknown_3_cgb.bin) | bin | 15 -> 15 bytes | |||
-rw-r--r-- | src/engine/bank01.asm | 108 | ||||
-rw-r--r-- | src/engine/bank03.asm | 52 | ||||
-rw-r--r-- | src/engine/bank04.asm | 543 | ||||
-rw-r--r-- | src/engine/bank07.asm | 2 | ||||
-rw-r--r-- | src/engine/bank20.asm | 716 | ||||
-rw-r--r-- | src/engine/effect_functions.asm | 4 | ||||
-rw-r--r-- | src/engine/home.asm | 12 | ||||
-rw-r--r-- | src/macros/scripts.asm | 1 | ||||
-rw-r--r-- | src/sram.asm | 4 | ||||
-rw-r--r-- | src/text/text1.asm | 2 | ||||
-rw-r--r-- | src/text/text3.asm | 6 | ||||
-rw-r--r-- | src/text/text_offsets.asm | 8 | ||||
-rw-r--r-- | src/wram.asm | 13 |
32 files changed, 1303 insertions, 403 deletions
diff --git a/src/constants/map_constants.asm b/src/constants/map_constants.asm index be5ee7d..a2654f8 100644 --- a/src/constants/map_constants.asm +++ b/src/constants/map_constants.asm @@ -78,3 +78,17 @@ MAP_SCRIPT_CLOSE_TEXTBOX EQU $0e const MAP_SGB_PALS_8 ; $8 const MAP_SGB_PALS_9 ; $9 const MAP_SGB_PALS_10 ; $a + + const_def 0 + const MAP_EVENT_POKEMON_DOME_DOOR ; $0 + const MAP_EVENT_HALL_OF_HONOR_DOOR ; $1 + const MAP_EVENT_FIGHTING_DECK_MACHINE ; $2 + const MAP_EVENT_ROCK_DECK_MACHINE ; $3 + const MAP_EVENT_WATER_DECK_MACHINE ; $4 + const MAP_EVENT_LIGHTNING_DECK_MACHINE ; $5 + const MAP_EVENT_GRASS_DECK_MACHINE ; $6 + const MAP_EVENT_PSYCHIC_DECK_MACHINE ; $7 + const MAP_EVENT_SCIENCE_DECK_MACHINE ; $8 + const MAP_EVENT_FIRE_DECK_MACHINE ; $9 + const MAP_EVENT_CHALLENGE_MACHINE ; $a +NUM_MAP_EVENTS EQU const_value diff --git a/src/constants/printer_constants.asm b/src/constants/printer_constants.asm new file mode 100644 index 0000000..ed6b663 --- /dev/null +++ b/src/constants/printer_constants.asm @@ -0,0 +1,9 @@ +; wPrinterStatus
+ const_def 1
+ const PRINTER_STATUS_CHECKING
+ const PRINTER_STATUS_TRANSMITTING
+ const PRINTER_STATUS_PRINTING
+ const PRINTER_ERROR_1
+ const PRINTER_ERROR_PAPER_JAMMED
+ const PRINTER_ERROR_CABLE_PRINTER_SWITCH
+ const PRINTER_ERROR_BATTERIES_LOST_CHARGE
diff --git a/src/constants/tilemap_constants.asm b/src/constants/tilemap_constants.asm index 4a64930..a3a1538 100644 --- a/src/constants/tilemap_constants.asm +++ b/src/constants/tilemap_constants.asm @@ -1,107 +1,107 @@ const_def - const TILEMAP_OVERWORLD_MAP ; $00 - const TILEMAP_OVERWORLD_MAP_CGB ; $01 - const TILEMAP_MASON_LABORATORY ; $02 - const TILEMAP_MASON_LABORATORY_CGB ; $03 - const TILEMAP_UNKNOWN_1 ; $04 - const TILEMAP_UNKNOWN_1_CGB ; $05 - const TILEMAP_DECK_MACHINE_ROOM ; $06 - const TILEMAP_DECK_MACHINE_ROOM_CGB ; $07 - const TILEMAP_UNKNOWN_2 ; $08 - const TILEMAP_UNKNOWN_2_CGB ; $09 - const TILEMAP_ISHIHARA ; $0a - const TILEMAP_ISHIHARA_CGB ; $0b - const TILEMAP_FIGHTING_CLUB_ENTRANCE ; $0c - const TILEMAP_FIGHTING_CLUB_ENTRANCE_CGB ; $0d - const TILEMAP_ROCK_CLUB_ENTRANCE ; $0e - const TILEMAP_ROCK_CLUB_ENTRANCE_CGB ; $0f - const TILEMAP_WATER_CLUB_ENTRANCE ; $10 - const TILEMAP_WATER_CLUB_ENTRANCE_CGB ; $11 - const TILEMAP_LIGHTNING_CLUB_ENTRANCE ; $12 - const TILEMAP_LIGHTNING_CLUB_ENTRANCE_CGB ; $13 - const TILEMAP_GRASS_CLUB_ENTRANCE ; $14 - const TILEMAP_GRASS_CLUB_ENTRANCE_CGB ; $15 - const TILEMAP_PSYCHIC_CLUB_ENTRANCE ; $16 - const TILEMAP_PSYCHIC_CLUB_ENTRANCE_CGB ; $17 - const TILEMAP_SCIENCE_CLUB_ENTRANCE ; $18 - const TILEMAP_SCIENCE_CLUB_ENTRANCE_CGB ; $19 - const TILEMAP_FIRE_CLUB_ENTRANCE ; $1a - const TILEMAP_FIRE_CLUB_ENTRANCE_CGB ; $1b - const TILEMAP_CHALLENGE_HALL_ENTRANCE ; $1c - const TILEMAP_CHALLENGE_HALL_ENTRANCE_CGB ; $1d - const TILEMAP_CLUB_LOBBY ; $1e - const TILEMAP_CLUB_LOBBY_CGB ; $1f - const TILEMAP_FIGHTING_CLUB ; $20 - const TILEMAP_FIGHTING_CLUB_CGB ; $21 - const TILEMAP_ROCK_CLUB ; $22 - const TILEMAP_ROCK_CLUB_CGB ; $23 - const TILEMAP_WATER_CLUB ; $24 - const TILEMAP_WATER_CLUB_CGB ; $25 - const TILEMAP_LIGHTNING_CLUB ; $26 - const TILEMAP_LIGHTNING_CLUB_CGB ; $27 - const TILEMAP_GRASS_CLUB ; $28 - const TILEMAP_GRASS_CLUB_CGB ; $29 - const TILEMAP_PSYCHIC_CLUB ; $2a - const TILEMAP_PSYCHIC_CLUB_CGB ; $2b - const TILEMAP_SCIENCE_CLUB ; $2c - const TILEMAP_SCIENCE_CLUB_CGB ; $2d - const TILEMAP_FIRE_CLUB ; $2e - const TILEMAP_FIRE_CLUB_CGB ; $2f - const TILEMAP_CHALLENGE_HALL ; $30 - const TILEMAP_CHALLENGE_HALL_CGB ; $31 - const TILEMAP_POKEMON_DOME_ENTRANCE ; $32 - const TILEMAP_POKEMON_DOME_ENTRANCE_CGB ; $33 - const TILEMAP_UNKNOWN_3 ; $34 - const TILEMAP_UNKNOWN_3_CGB ; $35 - const TILEMAP_POKEMON_DOME ; $36 - const TILEMAP_POKEMON_DOME_CGB ; $37 - const TILEMAP_UNKNOWN_4 ; $38 - const TILEMAP_UNKNOWN_4_CGB ; $39 - const TILEMAP_HALL_OF_HONOR ; $3a - const TILEMAP_HALL_OF_HONOR_CGB ; $3b - const TILEMAP_CARD_POP_CGB ; $3c - const TILEMAP_CARD_POP ; $3d - const TILEMAP_GRASS_MEDAL ; $3e - const TILEMAP_SCIENCE_MEDAL ; $3f - const TILEMAP_FIRE_MEDAL ; $40 - const TILEMAP_WATER_MEDAL ; $41 - const TILEMAP_LIGHTNING_MEDAL ; $42 - const TILEMAP_FIGHTING_MEDAL ; $43 - const TILEMAP_ROCK_MEDAL ; $44 - const TILEMAP_PSYCHIC_MEDAL ; $45 - const TILEMAP_GAMEBOY_LINK_CGB ; $46 - const TILEMAP_GAMEBOY_LINK ; $47 - const TILEMAP_GAMEBOY_LINK_CONNECTING_CGB ; $48 - const TILEMAP_GAMEBOY_LINK_CONNECTING ; $49 - const TILEMAP_GAMEBOY_PRINTER_CGB ; $4a - const TILEMAP_GAMEBOY_PRINTER ; $4b - const TILEMAP_COLOSSEUM ; $4c - const TILEMAP_COLOSSEUM_CGB ; $4d - const TILEMAP_EVOLUTION ; $4e - const TILEMAP_EVOLUTION_CGB ; $4f - const TILEMAP_MYSTERY ; $50 - const TILEMAP_MYSTERY_CGB ; $51 - const TILEMAP_LABORATORY ; $52 - const TILEMAP_LABORATORY_CGB ; $53 - const TILEMAP_CHARIZARD_INTRO ; $54 - const TILEMAP_CHARIZARD_INTRO_CGB ; $55 - const TILEMAP_SCYTHER_INTRO ; $56 - const TILEMAP_SCYTHER_INTRO_CGB ; $57 - const TILEMAP_AERODACTYL_INTRO ; $58 - const TILEMAP_AERODACTYL_INTRO_CGB ; $59 - const TILEMAP_JAPANESE_TITLE_SCREEN ; $5a - const TILEMAP_JAPANESE_TITLE_SCREEN_CGB ; $5b - const TILEMAP_SOLID_TILES_1 ; $5c - const TILEMAP_SOLID_TILES_2 ; $5d - const TILEMAP_SOLID_TILES_3 ; $5e - const TILEMAP_JAPANESE_TITLE_SCREEN_2 ; $5f - const TILEMAP_JAPANESE_TITLE_SCREEN_2_CGB ; $60 - const TILEMAP_SOLID_TILES_4 ; $61 - const TILEMAP_PLAYER ; $62 - const TILEMAP_OPPONENT ; $63 - const TILEMAP_TITLE_SCREEN ; $64 - const TILEMAP_TITLE_SCREEN_CGB ; $65 - const TILEMAP_COPYRIGHT ; $66 - const TILEMAP_COPYRIGHT_CGB ; $67 - const TILEMAP_NINTENDO ; $68 - const TILEMAP_COMPANIES ; $69 + const TILEMAP_OVERWORLD_MAP ; $00 + const TILEMAP_OVERWORLD_MAP_CGB ; $01 + const TILEMAP_MASON_LABORATORY ; $02 + const TILEMAP_MASON_LABORATORY_CGB ; $03 + const TILEMAP_CHALLENGE_MACHINE_MAP_EVENT ; $04 + const TILEMAP_CHALLENGE_MACHINE_MAP_EVENT_CGB ; $05 + const TILEMAP_DECK_MACHINE_ROOM ; $06 + const TILEMAP_DECK_MACHINE_ROOM_CGB ; $07 + const TILEMAP_DECK_MACHINE_MAP_EVENT ; $08 + const TILEMAP_DECK_MACHINE_MAP_EVENT_CGB ; $09 + const TILEMAP_ISHIHARA ; $0a + const TILEMAP_ISHIHARA_CGB ; $0b + const TILEMAP_FIGHTING_CLUB_ENTRANCE ; $0c + const TILEMAP_FIGHTING_CLUB_ENTRANCE_CGB ; $0d + const TILEMAP_ROCK_CLUB_ENTRANCE ; $0e + const TILEMAP_ROCK_CLUB_ENTRANCE_CGB ; $0f + const TILEMAP_WATER_CLUB_ENTRANCE ; $10 + const TILEMAP_WATER_CLUB_ENTRANCE_CGB ; $11 + const TILEMAP_LIGHTNING_CLUB_ENTRANCE ; $12 + const TILEMAP_LIGHTNING_CLUB_ENTRANCE_CGB ; $13 + const TILEMAP_GRASS_CLUB_ENTRANCE ; $14 + const TILEMAP_GRASS_CLUB_ENTRANCE_CGB ; $15 + const TILEMAP_PSYCHIC_CLUB_ENTRANCE ; $16 + const TILEMAP_PSYCHIC_CLUB_ENTRANCE_CGB ; $17 + const TILEMAP_SCIENCE_CLUB_ENTRANCE ; $18 + const TILEMAP_SCIENCE_CLUB_ENTRANCE_CGB ; $19 + const TILEMAP_FIRE_CLUB_ENTRANCE ; $1a + const TILEMAP_FIRE_CLUB_ENTRANCE_CGB ; $1b + const TILEMAP_CHALLENGE_HALL_ENTRANCE ; $1c + const TILEMAP_CHALLENGE_HALL_ENTRANCE_CGB ; $1d + const TILEMAP_CLUB_LOBBY ; $1e + const TILEMAP_CLUB_LOBBY_CGB ; $1f + const TILEMAP_FIGHTING_CLUB ; $20 + const TILEMAP_FIGHTING_CLUB_CGB ; $21 + const TILEMAP_ROCK_CLUB ; $22 + const TILEMAP_ROCK_CLUB_CGB ; $23 + const TILEMAP_WATER_CLUB ; $24 + const TILEMAP_WATER_CLUB_CGB ; $25 + const TILEMAP_LIGHTNING_CLUB ; $26 + const TILEMAP_LIGHTNING_CLUB_CGB ; $27 + const TILEMAP_GRASS_CLUB ; $28 + const TILEMAP_GRASS_CLUB_CGB ; $29 + const TILEMAP_PSYCHIC_CLUB ; $2a + const TILEMAP_PSYCHIC_CLUB_CGB ; $2b + const TILEMAP_SCIENCE_CLUB ; $2c + const TILEMAP_SCIENCE_CLUB_CGB ; $2d + const TILEMAP_FIRE_CLUB ; $2e + const TILEMAP_FIRE_CLUB_CGB ; $2f + const TILEMAP_CHALLENGE_HALL ; $30 + const TILEMAP_CHALLENGE_HALL_CGB ; $31 + const TILEMAP_POKEMON_DOME_ENTRANCE ; $32 + const TILEMAP_POKEMON_DOME_ENTRANCE_CGB ; $33 + const TILEMAP_POKEMON_DOME_DOOR_MAP_EVENT ; $34 + const TILEMAP_POKEMON_DOME_DOOR_MAP_EVENT_CGB ; $35 + const TILEMAP_POKEMON_DOME ; $36 + const TILEMAP_POKEMON_DOME_CGB ; $37 + const TILEMAP_HALL_OF_HONOR_DOOR_MAP_EVENT ; $38 + const TILEMAP_HALL_OF_HONOR_DOOR_MAP_EVENT_CGB ; $39 + const TILEMAP_HALL_OF_HONOR ; $3a + const TILEMAP_HALL_OF_HONOR_CGB ; $3b + const TILEMAP_CARD_POP_CGB ; $3c + const TILEMAP_CARD_POP ; $3d + const TILEMAP_GRASS_MEDAL ; $3e + const TILEMAP_SCIENCE_MEDAL ; $3f + const TILEMAP_FIRE_MEDAL ; $40 + const TILEMAP_WATER_MEDAL ; $41 + const TILEMAP_LIGHTNING_MEDAL ; $42 + const TILEMAP_FIGHTING_MEDAL ; $43 + const TILEMAP_ROCK_MEDAL ; $44 + const TILEMAP_PSYCHIC_MEDAL ; $45 + const TILEMAP_GAMEBOY_LINK_CGB ; $46 + const TILEMAP_GAMEBOY_LINK ; $47 + const TILEMAP_GAMEBOY_LINK_CONNECTING_CGB ; $48 + const TILEMAP_GAMEBOY_LINK_CONNECTING ; $49 + const TILEMAP_GAMEBOY_PRINTER_CGB ; $4a + const TILEMAP_GAMEBOY_PRINTER ; $4b + const TILEMAP_COLOSSEUM ; $4c + const TILEMAP_COLOSSEUM_CGB ; $4d + const TILEMAP_EVOLUTION ; $4e + const TILEMAP_EVOLUTION_CGB ; $4f + const TILEMAP_MYSTERY ; $50 + const TILEMAP_MYSTERY_CGB ; $51 + const TILEMAP_LABORATORY ; $52 + const TILEMAP_LABORATORY_CGB ; $53 + const TILEMAP_CHARIZARD_INTRO ; $54 + const TILEMAP_CHARIZARD_INTRO_CGB ; $55 + const TILEMAP_SCYTHER_INTRO ; $56 + const TILEMAP_SCYTHER_INTRO_CGB ; $57 + const TILEMAP_AERODACTYL_INTRO ; $58 + const TILEMAP_AERODACTYL_INTRO_CGB ; $59 + const TILEMAP_JAPANESE_TITLE_SCREEN ; $5a + const TILEMAP_JAPANESE_TITLE_SCREEN_CGB ; $5b + const TILEMAP_SOLID_TILES_1 ; $5c + const TILEMAP_SOLID_TILES_2 ; $5d + const TILEMAP_SOLID_TILES_3 ; $5e + const TILEMAP_JAPANESE_TITLE_SCREEN_2 ; $5f + const TILEMAP_JAPANESE_TITLE_SCREEN_2_CGB ; $60 + const TILEMAP_SOLID_TILES_4 ; $61 + const TILEMAP_PLAYER ; $62 + const TILEMAP_OPPONENT ; $63 + const TILEMAP_TITLE_SCREEN ; $64 + const TILEMAP_TITLE_SCREEN_CGB ; $65 + const TILEMAP_COPYRIGHT ; $66 + const TILEMAP_COPYRIGHT_CGB ; $67 + const TILEMAP_NINTENDO ; $68 + const TILEMAP_COMPANIES ; $69 diff --git a/src/data/maps/permissions/unknown1.bin b/src/data/maps/permissions/challenge_machine_map_event.bin index 26b782d..26b782d 100644 --- a/src/data/maps/permissions/unknown1.bin +++ b/src/data/maps/permissions/challenge_machine_map_event.bin diff --git a/src/data/maps/permissions/unknown1_cgb.bin b/src/data/maps/permissions/challenge_machine_map_event_cgb.bin index 26b782d..26b782d 100644 --- a/src/data/maps/permissions/unknown1_cgb.bin +++ b/src/data/maps/permissions/challenge_machine_map_event_cgb.bin diff --git a/src/data/maps/permissions/unknown_2.bin b/src/data/maps/permissions/deck_machine_map_event.bin index 7f65eeb..7f65eeb 100644 --- a/src/data/maps/permissions/unknown_2.bin +++ b/src/data/maps/permissions/deck_machine_map_event.bin diff --git a/src/data/maps/permissions/unknown_2_cgb.bin b/src/data/maps/permissions/deck_machine_map_event_cgb.bin index 7f65eeb..7f65eeb 100644 --- a/src/data/maps/permissions/unknown_2_cgb.bin +++ b/src/data/maps/permissions/deck_machine_map_event_cgb.bin diff --git a/src/data/maps/permissions/unknown_3.bin b/src/data/maps/permissions/hall_of_honor_door_map_event.bin Binary files differindex 10bc8da..10bc8da 100644 --- a/src/data/maps/permissions/unknown_3.bin +++ b/src/data/maps/permissions/hall_of_honor_door_map_event.bin diff --git a/src/data/maps/permissions/unknown_3_cgb.bin b/src/data/maps/permissions/hall_of_honor_door_map_event_cgb.bin Binary files differindex 10bc8da..10bc8da 100644 --- a/src/data/maps/permissions/unknown_3_cgb.bin +++ b/src/data/maps/permissions/hall_of_honor_door_map_event_cgb.bin diff --git a/src/data/maps/permissions/unknown_4.bin b/src/data/maps/permissions/pokemon_dome_door_map_event.bin Binary files differindex 10bc8da..10bc8da 100644 --- a/src/data/maps/permissions/unknown_4.bin +++ b/src/data/maps/permissions/pokemon_dome_door_map_event.bin diff --git a/src/data/maps/permissions/unknown_4_cgb.bin b/src/data/maps/permissions/pokemon_dome_door_map_event_cgb.bin Binary files differindex 10bc8da..10bc8da 100644 --- a/src/data/maps/permissions/unknown_4_cgb.bin +++ b/src/data/maps/permissions/pokemon_dome_door_map_event_cgb.bin diff --git a/src/data/maps/tiles/unknown1.bin b/src/data/maps/tiles/challenge_machine_map_event.bin index 1793914..1793914 100644 --- a/src/data/maps/tiles/unknown1.bin +++ b/src/data/maps/tiles/challenge_machine_map_event.bin diff --git a/src/data/maps/tiles/unknown1_cgb.bin b/src/data/maps/tiles/challenge_machine_map_event_cgb.bin index 2a021bb..2a021bb 100644 --- a/src/data/maps/tiles/unknown1_cgb.bin +++ b/src/data/maps/tiles/challenge_machine_map_event_cgb.bin diff --git a/src/data/maps/tiles/unknown_2.bin b/src/data/maps/tiles/deck_machine_map_event.bin index 7fb778f..7fb778f 100644 --- a/src/data/maps/tiles/unknown_2.bin +++ b/src/data/maps/tiles/deck_machine_map_event.bin diff --git a/src/data/maps/tiles/unknown_2_cgb.bin b/src/data/maps/tiles/deck_machine_map_event_cgb.bin index ccd413f..ccd413f 100644 --- a/src/data/maps/tiles/unknown_2_cgb.bin +++ b/src/data/maps/tiles/deck_machine_map_event_cgb.bin diff --git a/src/data/maps/tiles/unknown_4.bin b/src/data/maps/tiles/hall_of_honor_door_map_event.bin index e5fa7a6..e5fa7a6 100644 --- a/src/data/maps/tiles/unknown_4.bin +++ b/src/data/maps/tiles/hall_of_honor_door_map_event.bin diff --git a/src/data/maps/tiles/unknown_4_cgb.bin b/src/data/maps/tiles/hall_of_honor_door_map_event_cgb.bin index 89b40ac..89b40ac 100644 --- a/src/data/maps/tiles/unknown_4_cgb.bin +++ b/src/data/maps/tiles/hall_of_honor_door_map_event_cgb.bin diff --git a/src/data/maps/tiles/unknown_3.bin b/src/data/maps/tiles/pokemon_dome_door_map_event.bin Binary files differindex b861de6..b861de6 100644 --- a/src/data/maps/tiles/unknown_3.bin +++ b/src/data/maps/tiles/pokemon_dome_door_map_event.bin diff --git a/src/data/maps/tiles/unknown_3_cgb.bin b/src/data/maps/tiles/pokemon_dome_door_map_event_cgb.bin Binary files differindex f621932..f621932 100644 --- a/src/data/maps/tiles/unknown_3_cgb.bin +++ b/src/data/maps/tiles/pokemon_dome_door_map_event_cgb.bin diff --git a/src/engine/bank01.asm b/src/engine/bank01.asm index 2d0ca69..82ccfc5 100644 --- a/src/engine/bank01.asm +++ b/src/engine/bank01.asm @@ -8184,6 +8184,11 @@ Func_7344: ; 7344 (1:7344) BuildVersion: ; 7354 (1:7354) db "VER 12/20 09:36", TX_END +; possibly unreferenced, used for testing +; enters computer opponent selection screen +; handles input to select/cancel/scroll through deck IDs +; loads the NPC duel configurations if one was selected +; returns carry if selection was cancelled Func_7364: ; 7364 (1:7364) xor a ld [wTileMapFill], a @@ -8194,75 +8199,91 @@ Func_7364: ; 7364 (1:7364) call SetupText call DrawWideTextBox call EnableLCD + xor a ld [wOpponentDeckID], a - call Func_73d8 -.asm_7384 + call DrawOpponentSelectionScreen +.wait_input call DoFrame ldh a, [hDPadHeld] or a - jr z, .asm_7384 + jr z, .wait_input ld b, a + + ; handle selection/cancellation buttons and A_BUTTON | START - jr nz, .asm_73cd + jr nz, .select_opp bit B_BUTTON_F, b - jr nz, .asm_73cb + jr nz, .cancel + +; handle D-pad inputs +; check right ld a, [wOpponentDeckID] bit D_RIGHT_F, b - jr z, .asm_73a2 - inc a - cp $35 - jr c, .asm_73a2 - xor a -.asm_73a2 + jr z, .check_left + inc a ; next deck ID + cp DECK_IDS_END + 1 + jr c, .check_left + xor a ; wrap around to first deck ID + +.check_left bit D_LEFT_F, b - jr z, .asm_73ae + jr z, .check_up or a - jr nz, .asm_73ad - ld a, IMAKUNI_DECK_ID - jr .asm_73ae -.asm_73ad - dec a -.asm_73ae + jr nz, .not_first_deck_id + ld a, DECK_IDS_END ; wrap around to last deck ID + jr .check_up +.not_first_deck_id + dec a ; previous deck ID + +.check_up bit D_UP_F, b - jr z, .asm_73b9 - add $0a - cp $35 - jr c, .asm_73b9 - xor a -.asm_73b9 + jr z, .check_down + add 10 + cp DECK_IDS_END + 1 + jr c, .check_down + xor a ; wrap around to first deck ID + +.check_down bit D_DOWN_F, b - jr z, .asm_73c3 - sub $0a - jr nc, .asm_73c3 - ld a, IMAKUNI_DECK_ID -.asm_73c3 + jr z, .got_deck_id + sub 10 + jr nc, .got_deck_id + ld a, DECK_IDS_END ; wrap around to last deck ID + +.got_deck_id ld [wOpponentDeckID], a - call Func_73d8 - jr .asm_7384 -.asm_73cb + call DrawOpponentSelectionScreen + jr .wait_input + +.cancel scf ret -.asm_73cd +.select_opp ld a, [wOpponentDeckID] ld [wNPCDuelDeckID], a - call Func_3ae8 + call GetNPCDuelConfigurations or a ret ; 0x73d8 -Func_73d8: ; 73d8 (1:73d8) +; draws the current opponent to be selected +; (his/her portrait and name) +; and prints text box for selection +DrawOpponentSelectionScreen: ; 73d8 (1:73d8) ld a, [wOpponentDeckID] ld [wNPCDuelDeckID], a - call Func_3ae8 - jr c, .asm_73ec + call GetNPCDuelConfigurations + jr c, .ok + ; duel configuration not found for the NPC + ; so load a default portrait and name xor a ld [wOpponentPortrait], a ld hl, wOpponentName ld [hli], a ld [hl], a -.asm_73ec - ld hl, Data_7408 +.ok + ld hl, SelectComputerOpponentData call PlaceTextItems call DrawDuelistPortraitsAndNames ld a, [wOpponentDeckID] @@ -8272,9 +8293,14 @@ Func_73d8: ; 73d8 (1:73d8) lb bc, 15, 10 call WriteTwoByteNumberInTxSymbolFormat ret +; 0x7408 -Data_7408: ; 7408 (1:7408) - INCROM $7408, $7415 +SelectComputerOpponentData: ; 7408 (1:7408) + textitem 10, 0, Text0089 + textitem 10, 10, NumberOfPrizesText + textitem 3, 14, SelectComputerOpponentText + db $ff +; 0x7415 Func_7415: ; 7415 (1:7415) xor a diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm index c29f75a..d2065ae 100644 --- a/src/engine/bank03.asm +++ b/src/engine/bank03.asm @@ -38,7 +38,7 @@ LoadMap: ; c000 (3:4000) call Func_c36a call Func_c184 call Func_c49c - farcall Func_80000 + farcall LoadMapGfxAndPermissions call Func_c4b9 call Func_c943 call Func_c158 @@ -147,7 +147,7 @@ CloseAdvancedDialogueBox: ; c111 (3:4111) ; redraws the background and removes textbox control CloseTextBox: ; c135 (3:4135) push hl - farcall Func_80028 + farcall ReloadMapAfterTextClose ld hl, wd0c1 res 0, [hl] pop hl @@ -402,7 +402,7 @@ Func_c2db: ; c2db (3:42db) call EmptyScreen ld a, [wDefaultSong] push af - farcall Func_80000 + farcall LoadMapGfxAndPermissions pop af ld [wDefaultSong], a ld hl, wd0c1 @@ -459,12 +459,12 @@ Func_c34e: ; c34e (3:434e) Func_c36a: ; c36a (3:436a) xor a - ld [wd323], a + ld [wOWMapEvents], a ld a, [wCurMap] cp POKEMON_DOME_ENTRANCE jr nz, .asm_c379 xor a - ld [wd323 + 1], a + ld [wOWMapEvents + 1], a .asm_c379 ret @@ -566,17 +566,19 @@ Func_c3ca: ; c3ca (3:43ca) pop hl ret +; removes flag in whole wPermissionMap +; most likely relate to menu and text boxes Func_c3ee: ; c3ee (3:43ee) push hl push bc ld c, $00 - ld hl, wBoosterViableCardList -.asm_c3f5 + ld hl, wPermissionMap +.loop ld a, [hl] - and $ef + and ~$10 ; removes this flag ld [hli], a dec c - jr nz, .asm_c3f5 + jr nz, .loop pop bc pop hl ret @@ -3451,7 +3453,7 @@ MasonLabLoadMap: ; d549 (3:5549) jp SetNextNPCAndScript MasonLabCloseTextBox: ; d55e (3:555e) - ld a, $0a + ld a, MAP_EVENT_CHALLENGE_MACHINE farcall Func_80b89 ret @@ -3943,13 +3945,13 @@ DeckMachineRoomAfterDuel: ; d89f (3:589f) db $00 DeckMachineRoomCloseTextBox: ; d8ad (3:58ad) - ld a, $02 + ld a, MAP_EVENT_FIGHTING_DECK_MACHINE .asm_d8af push af farcall Func_80b89 pop af inc a - cp $0a + cp MAP_EVENT_FIRE_DECK_MACHINE + 1 jr c, .asm_d8af ret @@ -4044,7 +4046,7 @@ Script_d93f: ; d93f (3:593f) .ows_d95a play_sfx SFX_5A max_out_event_value EVENT_FIGHTING_DECK_MACHINE_ACTIVE - replace_map_blocks $02 + replace_map_blocks MAP_EVENT_FIGHTING_DECK_MACHINE print_text Text060a .ows_d963 ask_question_jump_default_yes Text060b, .ows_d969 @@ -4097,7 +4099,7 @@ Script_d995: ; d995 (3:5995) .ows_d9b0 play_sfx SFX_5A max_out_event_value EVENT_ROCK_DECK_MACHINE_ACTIVE - replace_map_blocks $03 + replace_map_blocks MAP_EVENT_ROCK_DECK_MACHINE print_text Text060a .ows_d9b9 ask_question_jump_default_yes Text060b, .ows_d9bf @@ -4125,7 +4127,7 @@ Script_d9c2: ; d9c2 (3:59c2) .ows_d9dd play_sfx SFX_5A max_out_event_value EVENT_WATER_DECK_MACHINE_ACTIVE - replace_map_blocks $04 + replace_map_blocks MAP_EVENT_WATER_DECK_MACHINE print_text Text060a .ows_d9e6 ask_question_jump_default_yes Text060b, .ows_d9ec @@ -4153,7 +4155,7 @@ Script_d9ef: ; d9ef (3:59ef) .ows_da0a play_sfx SFX_5A max_out_event_value EVENT_LIGHTNING_DECK_MACHINE_ACTIVE - replace_map_blocks $05 + replace_map_blocks MAP_EVENT_LIGHTNING_DECK_MACHINE print_text Text060a .ows_da13 ask_question_jump_default_yes Text060b, .ows_da19 @@ -4181,7 +4183,7 @@ Script_da1c: ; da1c (3:5a1c) .ows_da37 play_sfx SFX_5A max_out_event_value EVENT_GRASS_DECK_MACHINE_ACTIVE - replace_map_blocks $06 + replace_map_blocks MAP_EVENT_GRASS_DECK_MACHINE print_text Text060a .ows_da40 ask_question_jump_default_yes Text060b, .ows_da46 @@ -4209,7 +4211,7 @@ Script_da49: ; da49 (3:5a49) .ows_da64 play_sfx SFX_5A max_out_event_value EVENT_PSYCHIC_DECK_MACHINE_ACTIVE - replace_map_blocks $07 + replace_map_blocks MAP_EVENT_PSYCHIC_DECK_MACHINE print_text Text060a .ows_da6d ask_question_jump_default_yes Text060b, .ows_da73 @@ -4237,7 +4239,7 @@ Script_da76: ; da76 (3:5a76) .ows_da91 play_sfx SFX_5A max_out_event_value EVENT_SCIENCE_DECK_MACHINE_ACTIVE - replace_map_blocks $08 + replace_map_blocks MAP_EVENT_SCIENCE_DECK_MACHINE print_text Text060a .ows_da9a ask_question_jump_default_yes Text060b, .ows_daa0 @@ -4265,7 +4267,7 @@ Script_daa3: ; daa3 (3:5aa3) .ows_dabe play_sfx SFX_5A max_out_event_value EVENT_FIRE_DECK_MACHINE_ACTIVE - replace_map_blocks $09 + replace_map_blocks MAP_EVENT_FIRE_DECK_MACHINE print_text Text060a .ows_dac7 ask_question_jump_default_yes Text060b, .ows_dacd @@ -8385,7 +8387,7 @@ PokemonDomeEntranceLoadMap: ; f607 (3:7607) ret PokemonDomeEntranceCloseTextBox: ; f62a (3:762a) - ld a, $00 + ld a, MAP_EVENT_POKEMON_DOME_DOOR farcall Func_80b89 ret @@ -8477,7 +8479,7 @@ Script_f6af: ; f6af (3:76af) .ows_f6b9 print_npc_text Text0559 play_sfx SFX_0F - replace_map_blocks $00 + replace_map_blocks MAP_EVENT_POKEMON_DOME_DOOR do_frames 30 move_player NORTH, 1 quit_script_fully @@ -8538,7 +8540,7 @@ PokemonDomeLoadMap: ; f706 (3:7706) jp SetNextScript PokemonDomeCloseTextBox: ; f718 (3:7718) - ld a, $01 + ld a, MAP_EVENT_HALL_OF_HONOR_DOOR farcall Func_80b89 ret @@ -9038,7 +9040,7 @@ Script_BeatRod: ; faae (3:7aae) move_active_npc NPCMovement_fb96 set_active_npc_direction SOUTH play_sfx SFX_0F - replace_map_blocks $01 + replace_map_blocks MAP_EVENT_HALL_OF_HONOR_DOOR set_event EVENT_POKEMON_DOME_STATE, POKEMON_DOME_DEFEATED max_out_event_value EVENT_HALL_OF_HONOR_DOORS_OPEN print_text_quit_fully Text05a4 @@ -9048,7 +9050,7 @@ Script_BeatRod: ; faae (3:7aae) override_song MUSIC_STOP set_event EVENT_RONALD_POKEMON_DOME_STATE, RONALD_CHALLENGED play_sfx SFX_0F - replace_map_blocks $01 + replace_map_blocks MAP_EVENT_HALL_OF_HONOR_DOOR move_active_npc NPCMovement_fbd2 set_default_song MUSIC_RONALD play_default_song diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm index 90f04c3..7a6c0b5 100644 --- a/src/engine/bank04.asm +++ b/src/engine/bank04.asm @@ -1194,7 +1194,7 @@ Func_11430: ; 11430 (4:5430) dw wNPCDuelist, 1, $ff00 ; sNPCDuelist dw wChallengeHallNPC, 1, $ff00 ; sChallengeHallNPC dw wd698, 4, $ff00 ; sb818 - dw wd323, 11, $ff00 ; sb81c + dw wOWMapEvents, 11, $ff00 ; sOWMapEvents dw Data_1156c, 1, $ff00 ; sb827 dw wd0b8, 1, $ff00 ; sb828 dw wd0b9, 1, $ff00 ; sb829 @@ -1379,8 +1379,543 @@ SetNPCMatchStartTheme: ; 118d3 (4:58d3) INCLUDE "data/npcs.asm" -Func_11f4e: ; 11f4e (4:5f4e) - INCROM $11f4e, $1217b +_GetNPCDuelConfigurations: ; 11f4e (4:5f4e) + push hl + push bc + push de + ld a, [wNPCDuelDeckID] + ld e, a + ld bc, 9 ; size of struct - 1 + ld hl, DeckIDDuelConfigurations +.loop_deck_ids + ld a, [hli] + cp -1 ; end of list? + jr z, .done + cp e + jr nz, .next_deck_id + ld a, [hli] + ld [wOpponentPortrait], a + ld a, [hli] + ld [wOpponentName], a + ld a, [hli] + ld [wOpponentName + 1], a + ld a, [hl] + ld [wNPCDuelPrizes], a + scf + jr .done +.next_deck_id + add hl, bc + jr .loop_deck_ids +.done + pop de + pop bc + pop hl + ret +; 0x11f7d + +; this is most likely unreferenced +; since it expects the duel theme song +; to be stored in the duel configuration +; associated with the NPC deck ID, +; but this isn't found in the actual data +Func_11f7d: ; 11f7d (4:5f7d) + push bc + push de + ld a, [wNPCDuelDeckID] + ld e, a + ld bc, 9 ; size of struct - 1 + ld hl, DeckIDDuelConfigurations +.loop_deck_ids + ld a, [hli] + cp -1 ; end of list? + jr z, .done + cp e + jr nz, .next_deck_id + push hl + ld a, [hli] + ld [wOpponentPortrait], a + ld a, [hli] + ld [wOpponentName], a + ld a, [hli] + ld [wOpponentName + 1], a + inc hl + ld a, [hli] + ld [wDuelTheme], a + pop hl + dec hl + scf + jr .done +.next_deck_id + add hl, bc + jr .loop_deck_ids +.done + pop de + pop bc + ret +; 0x11fae + +DeckIDDuelConfigurations: ; 11fae (4:5fae) + db SAMS_PRACTICE_DECK_ID ; deck ID + db SAM_PIC ; NPC portrait + tx SamNPCName ; name text ID + db 2 ; number of prize cards + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + + db SAMS_NORMAL_DECK_ID ; deck ID + db SAM_PIC ; NPC portrait + tx SamNPCName ; name text ID + db 2 ; number of prize cards + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + + db LIGHTNING_AND_FIRE_DECK_ID ; deck ID + db AARON_PIC ; NPC portrait + tx AaronNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $eb ; unknown + db $07 ; unknown + db $00 ; unknown + db $00 ; unknown + + db WATER_AND_FIGHTING_DECK_ID ; deck ID + db AARON_PIC ; NPC portrait + tx AaronNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $eb ; unknown + db $07 ; unknown + db $00 ; unknown + db $00 ; unknown + + db GRASS_AND_PSYCHIC_DECK_ID ; deck ID + db AARON_PIC ; NPC portrait + tx AaronNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $eb ; unknown + db $07 ; unknown + db $00 ; unknown + db $00 ; unknown + + db LEGENDARY_MOLTRES_DECK_ID ; deck ID + db COURTNEY_PIC ; NPC portrait + tx CourtneyNPCName ; name text ID + db 6 ; number of prize cards + db $04 ; unknown + db $ed ; unknown + db $07 ; unknown + db $00 ; unknown + db $00 ; unknown + + db LEGENDARY_ZAPDOS_DECK_ID ; deck ID + db STEVE_PIC ; NPC portrait + tx SteveNPCName ; name text ID + db 6 ; number of prize cards + db $04 ; unknown + db $ed ; unknown + db $07 ; unknown + db $00 ; unknown + db $00 ; unknown + + db LEGENDARY_ARTICUNO_DECK_ID ; deck ID + db JACK_PIC ; NPC portrait + tx JackNPCName ; name text ID + db 6 ; number of prize cards + db $04 ; unknown + db $ed ; unknown + db $07 ; unknown + db $00 ; unknown + db $00 ; unknown + + db LEGENDARY_DRAGONITE_DECK_ID ; deck ID + db ROD_PIC ; NPC portrait + tx RodNPCName ; name text ID + db 6 ; number of prize cards + db $04 ; unknown + db $ed ; unknown + db $07 ; unknown + db $00 ; unknown + db $00 ; unknown + + db FIRST_STRIKE_DECK_ID ; deck ID + db MITCH_PIC ; NPC portrait + tx MitchNPCName ; name text ID + db 6 ; number of prize cards + db $03 ; unknown + db $ea ; unknown + db $07 ; unknown + db $f9 ; unknown + db $07 ; unknown + + db ROCK_CRUSHER_DECK_ID ; deck ID + db GENE_PIC ; NPC portrait + tx GeneNPCName ; name text ID + db 6 ; number of prize cards + db $03 ; unknown + db $ea ; unknown + db $07 ; unknown + db $f9 ; unknown + db $07 ; unknown + + db GO_GO_RAIN_DANCE_DECK_ID ; deck ID + db AMY_PIC ; NPC portrait + tx AmyNPCName ; name text ID + db 6 ; number of prize cards + db $03 ; unknown + db $ea ; unknown + db $07 ; unknown + db $f8 ; unknown + db $07 ; unknown + + db ZAPPING_SELFDESTRUCT_DECK_ID ; deck ID + db ISAAC_PIC ; NPC portrait + tx IsaacNPCName ; name text ID + db 6 ; number of prize cards + db $03 ; unknown + db $ea ; unknown + db $07 ; unknown + db $f7 ; unknown + db $07 ; unknown + + db FLOWER_POWER_DECK_ID ; deck ID + db NIKKI_PIC ; NPC portrait + tx NikkiNPCName ; name text ID + db 6 ; number of prize cards + db $03 ; unknown + db $ea ; unknown + db $07 ; unknown + db $fb ; unknown + db $07 ; unknown + + db STRANGE_PSYSHOCK_DECK_ID ; deck ID + db MURRAY_PIC ; NPC portrait + tx MurrayNPCName ; name text ID + db 6 ; number of prize cards + db $03 ; unknown + db $ea ; unknown + db $07 ; unknown + db $fa ; unknown + db $07 ; unknown + + db WONDERS_OF_SCIENCE_DECK_ID ; deck ID + db RICK_PIC ; NPC portrait + tx RickNPCName ; name text ID + db 6 ; number of prize cards + db $03 ; unknown + db $ea ; unknown + db $07 ; unknown + db $fb ; unknown + db $07 ; unknown + + db FIRE_CHARGE_DECK_ID ; deck ID + db KEN_PIC ; NPC portrait + tx KenNPCName ; name text ID + db 6 ; number of prize cards + db $03 ; unknown + db $ea ; unknown + db $07 ; unknown + db $f6 ; unknown + db $07 ; unknown + + db IM_RONALD_DECK_ID ; deck ID + db RONALD_PIC ; NPC portrait + tx RonaldNPCName ; name text ID + db 6 ; number of prize cards + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + + db POWERFUL_RONALD_DECK_ID ; deck ID + db RONALD_PIC ; NPC portrait + tx RonaldNPCName ; name text ID + db 6 ; number of prize cards + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + + db INVINCIBLE_RONALD_DECK_ID ; deck ID + db RONALD_PIC ; NPC portrait + tx RonaldNPCName ; name text ID + db 4 ; number of prize cards + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + + db LEGENDARY_RONALD_DECK_ID ; deck ID + db RONALD_PIC ; NPC portrait + tx RonaldNPCName ; name text ID + db 6 ; number of prize cards + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + db $00 ; unknown + + db MUSCLES_FOR_BRAINS_DECK_ID ; deck ID + db CHRIS_PIC ; NPC portrait + tx ChrisNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f9 ; unknown + db $07 ; unknown + + db HEATED_BATTLE_DECK_ID ; deck ID + db MICHAEL_PIC ; NPC portrait + tx MichaelNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f9 ; unknown + db $07 ; unknown + + db LOVE_TO_BATTLE_DECK_ID ; deck ID + db JESSICA_PIC ; NPC portrait + tx JessicaNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f9 ; unknown + db $07 ; unknown + + db EXCAVATION_DECK_ID ; deck ID + db RYAN_PIC ; NPC portrait + tx RyanNPCName ; name text ID + db 3 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f9 ; unknown + db $07 ; unknown + + db BLISTERING_POKEMON_DECK_ID ; deck ID + db ANDREW_PIC ; NPC portrait + tx AndrewNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f9 ; unknown + db $07 ; unknown + + db HARD_POKEMON_DECK_ID ; deck ID + db MATTHEW_PIC ; NPC portrait + tx MatthewNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f9 ; unknown + db $07 ; unknown + + db WATERFRONT_POKEMON_DECK_ID ; deck ID + db SARA_PIC ; NPC portrait + tx SaraNPCName ; name text ID + db 2 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f8 ; unknown + db $07 ; unknown + + db LONELY_FRIENDS_DECK_ID ; deck ID + db AMANDA_PIC ; NPC portrait + tx AmandaNPCName ; name text ID + db 3 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f8 ; unknown + db $07 ; unknown + + db SOUND_OF_THE_WAVES_DECK_ID ; deck ID + db JOSHUA_PIC ; NPC portrait + tx JoshuaNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f8 ; unknown + db $07 ; unknown + + db PIKACHU_DECK_ID ; deck ID + db JENNIFER_PIC ; NPC portrait + tx JenniferNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f7 ; unknown + db $07 ; unknown + + db BOOM_BOOM_SELFDESTRUCT_DECK_ID ; deck ID + db NICHOLAS_PIC ; NPC portrait + tx NicholasNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f7 ; unknown + db $07 ; unknown + + db POWER_GENERATOR_DECK_ID ; deck ID + db BRANDON_PIC ; NPC portrait + tx BrandonNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f7 ; unknown + db $07 ; unknown + + db ETCETERA_DECK_ID ; deck ID + db BRITTANY_PIC ; NPC portrait + tx BrittanyNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $fb ; unknown + db $07 ; unknown + + db FLOWER_GARDEN_DECK_ID ; deck ID + db KRISTIN_PIC ; NPC portrait + tx KristinNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $fb ; unknown + db $07 ; unknown + + db KALEIDOSCOPE_DECK_ID ; deck ID + db HEATHER_PIC ; NPC portrait + tx HeatherNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $fb ; unknown + db $07 ; unknown + + db GHOST_DECK_ID ; deck ID + db ROBERT_PIC ; NPC portrait + tx RobertNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $fa ; unknown + db $07 ; unknown + + db NAP_TIME_DECK_ID ; deck ID + db DANIEL_PIC ; NPC portrait + tx DanielNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $fa ; unknown + db $07 ; unknown + + db STRANGE_POWER_DECK_ID ; deck ID + db STEPHANIE_PIC ; NPC portrait + tx StephanieNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $fa ; unknown + db $07 ; unknown + + db FLYIN_POKEMON_DECK_ID ; deck ID + db JOSEPH_PIC ; NPC portrait + tx JosephNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $fb ; unknown + db $07 ; unknown + + db LOVELY_NIDORAN_DECK_ID ; deck ID + db DAVID_PIC ; NPC portrait + tx DavidNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $fb ; unknown + db $07 ; unknown + + db POISON_DECK_ID ; deck ID + db ERIK_PIC ; NPC portrait + tx ErikNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $fb ; unknown + db $07 ; unknown + + db ANGER_DECK_ID ; deck ID + db JOHN_PIC ; NPC portrait + tx JohnNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f6 ; unknown + db $07 ; unknown + + db FLAMETHROWER_DECK_ID ; deck ID + db ADAM_PIC ; NPC portrait + tx AdamNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f6 ; unknown + db $07 ; unknown + + db RESHUFFLE_DECK_ID ; deck ID + db JONATHAN_PIC ; NPC portrait + tx JonathanNPCName ; name text ID + db 4 ; number of prize cards + db $02 ; unknown + db $e9 ; unknown + db $07 ; unknown + db $f6 ; unknown + db $07 ; unknown + + db IMAKUNI_DECK_ID ; deck ID + db IMAKUNI_PIC ; NPC portrait + tx ImakuniNPCName ; name text ID + db 6 ; number of prize cards + db $10 ; unknown + db $ec ; unknown + db $07 ; unknown + db $00 ; unknown + db $00 ; unknown + + db -1 ; end OverworldScriptTable: ; 1217b (4:617b) dw ScriptCommand_EndScript @@ -2979,7 +3514,7 @@ _LoadScene: ; 12c7f (4:6c7f) ld [wd4cb], a ; palette offset ld [wd291], a ; palette offset pop af ; palette - farcall Func_803c9 ; load palette + farcall SetBGPAndLoadedPal ; load palette ld a, [wConsole] cp CONSOLE_CGB ld a, [hli] diff --git a/src/engine/bank07.asm b/src/engine/bank07.asm index 018787e..85de56b 100644 --- a/src/engine/bank07.asm +++ b/src/engine/bank07.asm @@ -1710,7 +1710,7 @@ Credits_1d6ad: ; 1d6ad (7:56ad) call Func_1d705 call Func_1c858 xor a - ld [wd323 + 1], a + ld [wOWMapEvents + 1], a ld a, MUSIC_CREDITS call PlaySong farcall Func_10031 diff --git a/src/engine/bank20.asm b/src/engine/bank20.asm index 8460836..951a699 100644 --- a/src/engine/bank20.asm +++ b/src/engine/bank20.asm @@ -1,8 +1,12 @@ -Func_80000: ; 80000 (20:4000) +; loads the graphics and permissions for the current map +; according to its Map Header configurations +; if it's the Overworld Map, also prints the map name +; and sets up the volcano animation +LoadMapGfxAndPermissions: ; 80000 (20:4000) call ClearSRAMBGMaps xor a ld [wTextBoxFrameType], a - call Func_8003d + call LoadMapTilesAndPals farcall LoadPermissionMap farcall Func_c9c7 call SafelyCopyBGMapFromSRAMToVRAM @@ -15,9 +19,11 @@ Func_80000: ; 80000 (20:4000) ret ; 0x80028 -Func_80028: ; 80028 (20:4028) +; reloads the map tiles and permissions +; after a textbox has been closed +ReloadMapAfterTextClose: ; 80028 (20:4028) call ClearSRAMBGMaps - ld bc, $0000 + lb bc, 0, 0 call LoadTilemap_ToSRAM farcall Func_c9c7 call SafelyCopyBGMapFromSRAMToVRAM @@ -25,10 +31,9 @@ Func_80028: ; 80028 (20:4028) ret ; 0x8003d -Func_8003d: ; 8003d (20:403d) +LoadMapTilesAndPals: ; 8003d (20:403d) farcall LoadMapHeader farcall SetSGB2AndSGB3MapPalette - lb bc, 0, 0 call LoadTilemap_ToSRAM @@ -43,22 +48,26 @@ Func_8003d: ; 8003d (20:403d) ld a, [wd291] ld [wd4cb], a ld a, [wd28f] - call Func_803c9 + call SetBGPAndLoadedPal ld a, [wd291] ld [wd4cb], a ld a, [wd290] or a jr z, .asm_80076 - call Func_803c9 + call SetBGPAndLoadedPal .asm_80076 ret ; 0x80077 +; loads the BG map corresponding to wCurTilemap to SRAM +; bc = starting coordinates LoadTilemap_ToSRAM: ; 80077 (20:4077) ld a, TRUE ld [wWriteBGMapToSRAM], a jr LoadTilemap +; loads the BG map corresponding to wCurTilemap to VRAM +; bc = starting coordinates LoadTilemap_ToVRAM: ; 8007e (20:407e) xor a ; FALSE ld [wWriteBGMapToSRAM], a @@ -394,7 +403,25 @@ LoadGraphicsPointerFromHL: ; 80229 (20:4229) ret ; 0x80238 - INCROM $80238, $8025b +; unreferenced? +Func_80238: ; 80238 (20:4238) + push hl + ld l, $2 + ld a, [wCurTileset] + call GetMapDataPointer + call LoadGraphicsPointerFromHL + ld a, [hl] + ld [wTotalNumTiles], a + ld a, $10 + ld [wCurSpriteTileSize], a + xor a + ld [wd4cb], a + ld a, $80 + ld [wd4ca], a + call LoadGfxDataFromTempPointerToVRAMBank_Tiles0ToTiles2 + pop hl + ret +; 0x8025b ; loads graphics data from third map data pointers ; input: @@ -422,8 +449,9 @@ LoadGfxDataFromTempPointerToVRAMBank: ; 80274 (20:4274) call GetTileOffsetPointerAndSwitchVRAM jr LoadGfxDataFromTempPointer -Func_80279: ; 80279 (20:4279) +LoadGfxDataFromTempPointerToVRAMBank_Tiles0ToTiles2: ; 80279 (20:4279) call GetTileOffsetPointerAndSwitchVRAM_Tiles0ToTiles2 +; fallthrough ; loads graphics data pointed by wTempPointer in wTempPointerBank ; to wVRAMPointer @@ -670,8 +698,10 @@ Func_803b9: ; 803b9 (20:43b9) ret ; 0x803c9 +; sets BGP in wLoadedPalData (if any) +; then loads the rest of the palette data ; a = palette index to load -Func_803c9: ; 803c9 (20:43c9) +SetBGPAndLoadedPal: ; 803c9 (20:43c9) push hl push bc push de @@ -837,7 +867,12 @@ LoadPaletteDataToBuffer: ; 80456 (20:4456) ret ; 0x8047b - INCROM $8047b, $80480 +; unreferenced? +Func_8047b: ; 8047b (20:447b) + xor a + ld [wNumLoadedFramesetSubgroups], a + ret +; 0x80480 ; for the current map, process the animation ; data of its corresponding OW tiles @@ -877,7 +912,7 @@ ProcessOWFrameset: ; 804a2 (20:44a2) ld a, h ld [wCurMapOWFrameset + 1], a xor a - ld [wumLoadedFramesetSubgroups], a + ld [wNumLoadedFramesetSubgroups], a call ClearOWFramesetSubgroups ld c, 0 .loop_subgroups @@ -886,9 +921,9 @@ ProcessOWFrameset: ; 804a2 (20:44a2) ld a, [wCurOWFrameDataOffset] cp -1 jr z, .next_subgroup - ld a, [wumLoadedFramesetSubgroups] + ld a, [wNumLoadedFramesetSubgroups] inc a - ld [wumLoadedFramesetSubgroups], a + ld [wNumLoadedFramesetSubgroups], a call LoadOWFrameTiles call StoreOWFramesetSubgroup .next_subgroup @@ -904,7 +939,7 @@ ProcessOWFrameset: ; 804a2 (20:44a2) ; for each of the loaded frameset subgroups ; load their tiles and advance their durations DoLoadedFramesetSubgroupsFrame: ; 804d8 (20:44d8) - ld a, [wumLoadedFramesetSubgroups] + ld a, [wNumLoadedFramesetSubgroups] or a ret z ld c, 0 @@ -1125,12 +1160,12 @@ StoreOWFramesetSubgroup: ; 805c1 (20:45c1) INCLUDE "data/map_ow_framesets.asm" -; clears wd323 +; clears wOWMapEvents Func_80b7a: ; 80b7a (20:4b7a) push hl push bc ld c, $b - ld hl, wd323 + ld hl, wOWMapEvents xor a .loop ld [hli], a @@ -1141,6 +1176,7 @@ Func_80b7a: ; 80b7a (20:4b7a) ret ; 0x80b89 +; a = MAP_EVENT_* constant Func_80b89: ; 80b89 (20:4b89) push hl push bc @@ -1148,8 +1184,8 @@ Func_80b89: ; 80b89 (20:4b89) ld c, a ld a, TRUE ld [wWriteBGMapToSRAM], a - ld b, $00 - ld hl, wd323 + ld b, $0 + ld hl, wOWMapEvents add hl, bc ld a, [hl] or a @@ -1188,7 +1224,7 @@ Func_80baa: ; 80baa (20:4baa) push af ld b, $0 - ld hl, wd323 + ld hl, wOWMapEvents add hl, bc ld a, $1 ld [hl], a @@ -1197,7 +1233,7 @@ Func_80baa: ; 80baa (20:4baa) add a ld c, a ld b, $0 - ld hl, .unknown_80c21 + ld hl, .tilemap_pointers add hl, bc ld a, [hli] ld h, [hl] @@ -1206,14 +1242,15 @@ Func_80baa: ; 80baa (20:4baa) inc hl ld c, [hl] inc hl + ld a, [wConsole] cp CONSOLE_CGB - jr nz, .asm_80be7 + jr nz, .got_tilemap inc hl - -.asm_80be7 +.got_tilemap ld a, [hl] ld [wCurTilemap], a + push bc farcall LoadTilemap ; unnecessary farcall pop bc @@ -1245,43 +1282,306 @@ Func_80baa: ; 80baa (20:4baa) pop hl ret -.unknown_80c21 - dw .data_1 - dw .data_2 - dw .data_3 - dw .data_4 - dw .data_5 - dw .data_6 - dw .data_7 - dw .data_8 - dw .data_9 - dw .data_10 - dw .data_11 - -.data_1 - db $16, $00, TILEMAP_UNKNOWN_3, TILEMAP_UNKNOWN_3_CGB -.data_2 - db $0e, $00, TILEMAP_UNKNOWN_4, TILEMAP_UNKNOWN_4_CGB -.data_3 - db $06, $02, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB -.data_4 - db $0a, $02, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB -.data_5 - db $0e, $02, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB -.data_6 - db $12, $02, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB -.data_7 - db $0e, $0a, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB -.data_8 - db $12, $0a, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB -.data_9 - db $0e, $12, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB -.data_10 - db $12, $12, TILEMAP_UNKNOWN_2, TILEMAP_UNKNOWN_2_CGB -.data_11 - db $0a, $00, TILEMAP_UNKNOWN_1, TILEMAP_UNKNOWN_1_CGB - - INCROM $80c63, $80e5a +.tilemap_pointers + dw .PokemonDomeDoor ; MAP_EVENT_POKEMON_DOME_DOOR + dw .HallOfHonorDoor ; MAP_EVENT_HALL_OF_HONOR_DOOR + dw .FightingDeckMachine ; MAP_EVENT_FIGHTING_DECK_MACHINE + dw .RockDeckMachine ; MAP_EVENT_ROCK_DECK_MACHINE + dw .WaterDeckMachine ; MAP_EVENT_WATER_DECK_MACHINE + dw .LightningDeckMachine ; MAP_EVENT_LIGHTNING_DECK_MACHINE + dw .GrassDeckMachine ; MAP_EVENT_GRASS_DECK_MACHINE + dw .PsychicDeckMachine ; MAP_EVENT_PSYCHIC_DECK_MACHINE + dw .ScienceDeckMachine ; MAP_EVENT_SCIENCE_DECK_MACHINE + dw .FireDeckMachine ; MAP_EVENT_FIRE_DECK_MACHINE + dw .ChallengeMachine ; MAP_EVENT_CHALLENGE_MACHINE + +; x coordinate, y coordinate, non-cgb tilemap, cgb tilemap +.PokemonDomeDoor + db $16, $00, TILEMAP_POKEMON_DOME_DOOR_MAP_EVENT, TILEMAP_POKEMON_DOME_DOOR_MAP_EVENT_CGB +.HallOfHonorDoor + db $0e, $00, TILEMAP_HALL_OF_HONOR_DOOR_MAP_EVENT, TILEMAP_HALL_OF_HONOR_DOOR_MAP_EVENT_CGB +.FightingDeckMachine + db $06, $02, TILEMAP_DECK_MACHINE_MAP_EVENT, TILEMAP_DECK_MACHINE_MAP_EVENT_CGB +.RockDeckMachine + db $0a, $02, TILEMAP_DECK_MACHINE_MAP_EVENT, TILEMAP_DECK_MACHINE_MAP_EVENT_CGB +.WaterDeckMachine + db $0e, $02, TILEMAP_DECK_MACHINE_MAP_EVENT, TILEMAP_DECK_MACHINE_MAP_EVENT_CGB +.LightningDeckMachine + db $12, $02, TILEMAP_DECK_MACHINE_MAP_EVENT, TILEMAP_DECK_MACHINE_MAP_EVENT_CGB +.GrassDeckMachine + db $0e, $0a, TILEMAP_DECK_MACHINE_MAP_EVENT, TILEMAP_DECK_MACHINE_MAP_EVENT_CGB +.PsychicDeckMachine + db $12, $0a, TILEMAP_DECK_MACHINE_MAP_EVENT, TILEMAP_DECK_MACHINE_MAP_EVENT_CGB +.ScienceDeckMachine + db $0e, $12, TILEMAP_DECK_MACHINE_MAP_EVENT, TILEMAP_DECK_MACHINE_MAP_EVENT_CGB +.FireDeckMachine + db $12, $12, TILEMAP_DECK_MACHINE_MAP_EVENT, TILEMAP_DECK_MACHINE_MAP_EVENT_CGB +.ChallengeMachine + db $0a, $00, TILEMAP_CHALLENGE_MACHINE_MAP_EVENT, TILEMAP_CHALLENGE_MACHINE_MAP_EVENT_CGB + + ret ; unreferenced stray ret? + +; unreferenced? +Func_80c64: ; 80c64 (20:4c64) + ld a, [wLineSeparation] + push af + ld a, $01 ; no line separatior + ld [wLineSeparation], a + ; load opponent's name + ld a, [wOpponentName] + ld [wTxRam2], a + ld a, [wOpponentName + 1] + ld [wTxRam2 + 1], a + ld a, [wNPCDuelistCopy] + ld [wTxRam3_b], a + xor a + ld [wTxRam3_b + 1], a + ; load number of duel prizes + ld a, [wNPCDuelPrizes] + ld [wTxRam3], a + xor a + ld [wTxRam3 + 1], a + + lb de, 2, 13 + call InitTextPrinting + ldtx hl, WinLosePrizesDuelWithText + call PrintTextNoDelay + + ld a, [wNPCDuelDeckID] + ld [wTxRam3], a + xor a + ld [wTxRam3 + 1], a + lb de, 2, 15 + call InitTextPrinting + ldtx hl, UseDuelistsDeckText + call PrintTextNoDelay + + pop af + ld [wLineSeparation], a + xor a + ld hl, .menu_parameters + call InitializeMenuParameters + ret + +.menu_parameters ; 80cbb (20:4cbb) + db 1, 13 ; cursor x, cursor y + db 1 ; y displacement between items + db 2 ; number of items + db SYM_CURSOR_R ; cursor tile number + db SYM_SPACE ; tile behind cursor + dw NULL ; function pointer if non-0 + +; unreferenced? +; fills Tiles0 with random bytes +Func_80cc3: ; 80cc3 (20:4cc3) + call DisableLCD + ld hl, v0Tiles0 + ld bc, $800 +.loop + call UpdateRNGSources + ld [hli], a + dec bc + ld a, b + or c + jr nz, .loop + ret +; 0x80cd6 + + ret ; stray ret + +; unreferenced? +; seems to be used to look at each OW NPC sprites +; with functions to rotate NPC and animate them +Func_80cd7: ; 80cd7 (20:4cd7) + call DisableLCD + call EmptyScreen + call Func_3ca4 + xor a + ld [wd4ca], a + ld [wd4cb], a + ld a, PALETTE_0 + farcall SetBGPAndLoadedPal + xor a + ld [wd4ca], a + ld [wd4cb], a + ld a, PALETTE_29 + farcall LoadPaletteData + ld a, SOUTH + ld [wLoadNPCDirection], a + ld a, $01 + ld [wLoadedNPCTempIndex], a + call .DrawNPCSprite + call .PrintNPCInfo + call EnableLCD +.loop + call DoFrameIfLCDEnabled + call .HandleInput + call Func_3cb4 + ldh a, [hKeysPressed] + and SELECT ; if select is pressed, exit + jr z, .loop + ret + + ret ; stray ret + +; A button makes NPC rotate +; D-pad scrolls through the NPCs +; from $01 to $2c +; these are not aligned with the regular NPC indices +.HandleInput + ldh a, [hKeysPressed] + and A_BUTTON + jr z, .no_a_button + ld a, [wLoadNPCDirection] + inc a ; rotate NPC + and %11 + ld [wLoadNPCDirection], a + call Func_3ca4 + call .DrawNPCSprite +.no_a_button + ldh a, [hKeysPressed] + and D_PAD + ret z + farcall GetDirectionFromDPad + ld hl, .func_table + jp JumpToFunctionInTable + +.func_table + dw .up ; D_UP + dw .right ; D_RIGHT + dw .down ; D_DOWN + dw .left ; D_LEFT +.up + ld a, 10 + jr .decr_npc_id +.down + ld a, 10 + jr .incr_npc_id +.right + ld a, 1 + jr .incr_npc_id +.left + ld a, 1 + jr .decr_npc_id + +.incr_npc_id + ld c, a + ld a, [wLoadedNPCTempIndex] + cp $2c + jr z, .load_first_npc + add c + jr c, .load_last_npc + cp $2c + jr nc, .load_last_npc + jr .got_npc + +.decr_npc_id + ld c, a + ld a, [wLoadedNPCTempIndex] + cp $01 + jr z, .load_last_npc + sub c + jr c, .load_first_npc + cp $01 + jr c, .load_first_npc + jr .got_npc +.load_first_npc + ld a, $01 + jr .got_npc +.load_last_npc + ld a, $2c + +.got_npc + ld [wLoadedNPCTempIndex], a + call Func_3ca4 + call .DrawNPCSprite + jr .PrintNPCInfo + +.PrintNPCInfo + lb de, 0, 4 + call InitTextPrinting + ldtx hl, SPRText + call ProcessTextFromID + ld bc, FlushAllPalettes + ld a, [wLoadedNPCTempIndex] + farcall WriteTwoByteNumberInTxSymbolFormat + ret + +.DrawNPCSprite + ld a, [wLoadedNPCTempIndex] + ld c, a + add a + add c ; *3 + ld c, a + ld b, $0 + ld hl, .NPCSpriteAnimData - 3 + add hl, bc + ld a, [hli] + cp $ff + jr z, .skip_draw_sprite + farcall CreateSpriteAndAnimBufferEntry + ld a, [wConsole] + cp CONSOLE_CGB + jr nz, .not_cgb + inc hl +.not_cgb + ld a, [wLoadNPCDirection] + add [hl] + farcall StartNewSpriteAnimation + ld c, SPRITE_ANIM_COORD_X + call GetSpriteAnimBufferProperty + ld a, $48 + ld [hli], a + ld a, $40 + ld [hl], a ; SPRITE_ANIM_COORD_Y +.skip_draw_sprite + ret + +.NPCSpriteAnimData + db SPRITE_OW_PLAYER, $00, $1e ; $01 + db $ff, $00, $00 ; $02 + db SPRITE_OW_RONALD, $04, $0e ; $03 + db $ff, $00, $00 ; $04 + db SPRITE_OW_DRMASON, $00, $26 ; $05 + db SPRITE_OW_ISHIHARA, $04, $22 ; $06 + db SPRITE_OW_IMAKUNI, $00, $0e ; $07 + db SPRITE_OW_NIKKI, $00, $1a ; $08 + db SPRITE_OW_RICK, $00, $0e ; $09 + db SPRITE_OW_KEN, $04, $1e ; $0a + db SPRITE_OW_AMY, $04, $0e ; $0b + db SPRITE_OW_ISAAC, $00, $16 ; $0c + db SPRITE_OW_MITCH, $00, $0e ; $0d + db SPRITE_OW_GENE, $04, $22 ; $0e + db SPRITE_OW_MURRAY, $00, $12 ; $0f + db SPRITE_OW_COURTNEY, $00, $12 ; $10 + db $ff, $00, $00 ; $11 + db SPRITE_OW_STEVE, $00, $2a ; $12 + db $ff, $00, $00 ; $13 + db SPRITE_OW_JACK, $00, $26 ; $14 + db $ff, $00, $00 ; $15 + db SPRITE_OW_ROD, $00, $0e ; $16 + db $ff, $00, $00 ; $17 + db SPRITE_OW_BOY, $04, $16 ; $18 + db SPRITE_OW_LAD, $04, $1a ; $19 + db SPRITE_OW_SPECS, $00, $22 ; $1a + db SPRITE_OW_BUTCH, $00, $16 ; $1b + db SPRITE_OW_MANIA, $00, $26 ; $1c + db SPRITE_OW_JOSHUA, $00, $26 ; $1d + db SPRITE_OW_HOOD, $04, $1e ; $1e + db SPRITE_OW_TECH, $00, $0e ; $1f + db SPRITE_OW_CHAP, $00, $1a ; $20 + db SPRITE_OW_MAN, $00, $16 ; $21 + db SPRITE_OW_PAPPY, $00, $22 ; $22 + db SPRITE_OW_GIRL, $04, $0e ; $23 + db SPRITE_OW_LASS1, $04, $22 ; $24 + db SPRITE_OW_LASS2, $00, $1e ; $25 + db SPRITE_OW_LASS3, $04, $1a ; $26 + db SPRITE_OW_SWIMMER, $00, $16 ; $27 + db SPRITE_OW_CLERK, $0a, $30 ; $28 + db SPRITE_OW_GAL, $00, $16 ; $29 + db SPRITE_OW_WOMAN, $04, $1e ; $2a + db SPRITE_OW_GRANNY, $00, $16 ; $2b + db SPRITE_OW_AMY, $08, $2e ; $2c SpriteNullAnimationPointer: ; 80e5a (20:4e5a) dw SpriteNullAnimationFrame @@ -1305,112 +1605,112 @@ tilemap: MACRO ENDM Tilemaps: ; 80e67 (20:4e67) - tilemap OverworldMapTilemap, TILESET_OVERWORLD_MAP ; TILEMAP_OVERWORLD_MAP - tilemap OverworldMapCGBTilemap, TILESET_OVERWORLD_MAP ; TILEMAP_OVERWORLD_MAP_CGB - tilemap MasonLaboratoryTilemap, TILESET_MASON_LABORATORY ; TILEMAP_MASON_LABORATORY - tilemap MasonLaboratoryCGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_MASON_LABORATORY_CGB - tilemap Unknown1Tilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNKNOWN_1 - tilemap Unknown1CGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNKNOWN_1_CGB - tilemap DeckMachineRoomTilemap, TILESET_MASON_LABORATORY ; TILEMAP_DECK_MACHINE_ROOM - tilemap DeckMachineRoomCGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_DECK_MACHINE_ROOM_CGB - tilemap Unknown2Tilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNKNOWN_2 - tilemap Unknown2CGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_UNKNOWN_2_CGB - tilemap IshiharaTilemap, TILESET_ISHIHARA ; TILEMAP_ISHIHARA - tilemap IshiharaCGBTilemap, TILESET_ISHIHARA ; TILEMAP_ISHIHARA_CGB - tilemap FightingClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIGHTING_CLUB_ENTRANCE - tilemap FightingClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIGHTING_CLUB_ENTRANCE_CGB - tilemap RockClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_ROCK_CLUB_ENTRANCE - tilemap RockClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_ROCK_CLUB_ENTRANCE_CGB - tilemap WaterClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_WATER_CLUB_ENTRANCE - tilemap WaterClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_WATER_CLUB_ENTRANCE_CGB - tilemap LightningClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_LIGHTNING_CLUB_ENTRANCE - tilemap LightningClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_LIGHTNING_CLUB_ENTRANCE_CGB - tilemap GrassClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_GRASS_CLUB_ENTRANCE - tilemap GrassClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_GRASS_CLUB_ENTRANCE_CGB - tilemap PsychicClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_PSYCHIC_CLUB_ENTRANCE - tilemap PsychicClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_PSYCHIC_CLUB_ENTRANCE_CGB - tilemap ScienceClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_SCIENCE_CLUB_ENTRANCE - tilemap ScienceClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_SCIENCE_CLUB_ENTRANCE_CGB - tilemap FireClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIRE_CLUB_ENTRANCE - tilemap FireClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIRE_CLUB_ENTRANCE_CGB - tilemap ChallengeHallEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_CHALLENGE_HALL_ENTRANCE - tilemap ChallengeHallEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_CHALLENGE_HALL_ENTRANCE_CGB - tilemap ClubLobbyTilemap, TILESET_CLUB_LOBBY ; TILEMAP_CLUB_LOBBY - tilemap ClubLobbyCGBTilemap, TILESET_CLUB_LOBBY ; TILEMAP_CLUB_LOBBY_CGB - tilemap FightingClubTilemap, TILESET_FIGHTING_CLUB ; TILEMAP_FIGHTING_CLUB - tilemap FightingClubCGBTilemap, TILESET_FIGHTING_CLUB ; TILEMAP_FIGHTING_CLUB_CGB - tilemap RockClubTilemap, TILESET_ROCK_CLUB ; TILEMAP_ROCK_CLUB - tilemap RockClubCGBTilemap, TILESET_ROCK_CLUB ; TILEMAP_ROCK_CLUB_CGB - tilemap WaterClubTilemap, TILESET_WATER_CLUB ; TILEMAP_WATER_CLUB - tilemap WaterClubCGBTilemap, TILESET_WATER_CLUB ; TILEMAP_WATER_CLUB_CGB - tilemap LightningClubTilemap, TILESET_LIGHTNING_CLUB ; TILEMAP_LIGHTNING_CLUB - tilemap LightningClubCGBTilemap, TILESET_LIGHTNING_CLUB ; TILEMAP_LIGHTNING_CLUB_CGB - tilemap GrassClubTilemap, TILESET_GRASS_CLUB ; TILEMAP_GRASS_CLUB - tilemap GrassClubCGBTilemap, TILESET_GRASS_CLUB ; TILEMAP_GRASS_CLUB_CGB - tilemap PsychicClubTilemap, TILESET_PSYCHIC_CLUB ; TILEMAP_PSYCHIC_CLUB - tilemap PsychicClubCGBTilemap, TILESET_PSYCHIC_CLUB ; TILEMAP_PSYCHIC_CLUB_CGB - tilemap ScienceClubTilemap, TILESET_SCIENCE_CLUB ; TILEMAP_SCIENCE_CLUB - tilemap ScienceClubCGBTilemap, TILESET_SCIENCE_CLUB ; TILEMAP_SCIENCE_CLUB_CGB - tilemap FireClubTilemap, TILESET_FIRE_CLUB ; TILEMAP_FIRE_CLUB - tilemap FireClubCGBTilemap, TILESET_FIRE_CLUB ; TILEMAP_FIRE_CLUB_CGB - tilemap ChallengeHallTilemap, TILESET_CHALLENGE_HALL ; TILEMAP_CHALLENGE_HALL - tilemap ChallengeHallCGBTilemap, TILESET_CHALLENGE_HALL ; TILEMAP_CHALLENGE_HALL_CGB - tilemap PokemonDomeEntranceTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_POKEMON_DOME_ENTRANCE - tilemap PokemonDomeEntranceCGBTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_POKEMON_DOME_ENTRANCE_CGB - tilemap Unknown3Tilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_UNKNOWN_3 - tilemap Unknown3CGBTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_UNKNOWN_3_CGB - tilemap PokemonDomeTilemap, TILESET_POKEMON_DOME ; TILEMAP_POKEMON_DOME - tilemap PokemonDomeCGBTilemap, TILESET_POKEMON_DOME ; TILEMAP_POKEMON_DOME_CGB - tilemap Unknown4Tilemap, TILESET_POKEMON_DOME ; TILEMAP_UNKNOWN_4 - tilemap Unknown4CGBTilemap, TILESET_POKEMON_DOME ; TILEMAP_UNKNOWN_4_CGB - tilemap HallOfHonorTilemap, TILESET_HALL_OF_HONOR ; TILEMAP_HALL_OF_HONOR - tilemap HallOfHonorCGBTilemap, TILESET_HALL_OF_HONOR ; TILEMAP_HALL_OF_HONOR_CGB - tilemap CardPopCGBTilemap, TILESET_CARD_POP ; TILEMAP_CARD_POP_CGB - tilemap CardPopTilemap, TILESET_CARD_POP ; TILEMAP_CARD_POP - tilemap GrassMedalTilemap, TILESET_MEDAL ; TILEMAP_GRASS_MEDAL - tilemap ScienceMedalTilemap, TILESET_MEDAL ; TILEMAP_SCIENCE_MEDAL - tilemap FireMedalTilemap, TILESET_MEDAL ; TILEMAP_FIRE_MEDAL - tilemap WaterMedalTilemap, TILESET_MEDAL ; TILEMAP_WATER_MEDAL - tilemap LightningMedalTilemap, TILESET_MEDAL ; TILEMAP_LIGHTNING_MEDAL - tilemap FightingMedalTilemap, TILESET_MEDAL ; TILEMAP_FIGHTING_MEDAL - tilemap RockMedalTilemap, TILESET_MEDAL ; TILEMAP_ROCK_MEDAL - tilemap PsychicMedalTilemap, TILESET_MEDAL ; TILEMAP_PSYCHIC_MEDAL - tilemap GameBoyLinkCGBTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK_CGB - tilemap GameBoyLinkTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK - tilemap GameBoyLinkConnectingCGBTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK_CONNECTING_CGB - tilemap GameBoyLinkConnectingTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK_CONNECTING - tilemap GameBoyPrinterCGBTilemap, TILESET_GAMEBOY_PRINTER ; TILEMAP_GAMEBOY_PRINTER_CGB - tilemap GameBoyPrinterTilemap, TILESET_GAMEBOY_PRINTER ; TILEMAP_GAMEBOY_PRINTER - tilemap ColosseumTilemap, TILESET_COLOSSEUM_1 ; TILEMAP_COLOSSEUM - tilemap ColosseumCGBTilemap, TILESET_COLOSSEUM_2 ; TILEMAP_COLOSSEUM_CGB - tilemap EvolutionTilemap, TILESET_EVOLUTION_1 ; TILEMAP_EVOLUTION - tilemap EvolutionCGBTilemap, TILESET_EVOLUTION_2 ; TILEMAP_EVOLUTION_CGB - tilemap MysteryTilemap, TILESET_MYSTERY_1 ; TILEMAP_MYSTERY - tilemap MysteryCGBTilemap, TILESET_MYSTERY_2 ; TILEMAP_MYSTERY_CGB - tilemap LaboratoryTilemap, TILESET_LABORATORY_1 ; TILEMAP_LABORATORY - tilemap LaboratoryCGBTilemap, TILESET_LABORATORY_2 ; TILEMAP_LABORATORY_CGB - tilemap CharizardIntroTilemap, TILESET_CHARIZARD_INTRO_1 ; TILEMAP_CHARIZARD_INTRO - tilemap CharizardIntroCGBTilemap, TILESET_CHARIZARD_INTRO_2 ; TILEMAP_CHARIZARD_INTRO_CGB - tilemap ScytherIntroTilemap, TILESET_SCYTHER_INTRO_1 ; TILEMAP_SCYTHER_INTRO - tilemap ScytherIntroCGBTilemap, TILESET_SCYTHER_INTRO_2 ; TILEMAP_SCYTHER_INTRO_CGB - tilemap AerodactylIntroTilemap, TILESET_AERODACTYL_INTRO_1 ; TILEMAP_AERODACTYL_INTRO - tilemap AerodactylIntroCGBTilemap, TILESET_AERODACTYL_INTRO_2 ; TILEMAP_AERODACTYL_INTRO_CGB - tilemap JapaneseTitleScreenTilemap, TILESET_JAPANESE_TITLE_SCREEN ; TILEMAP_JAPANESE_TITLE_SCREEN - tilemap JapaneseTitleScreenCGBTilemap, TILESET_JAPANESE_TITLE_SCREEN_CGB ; TILEMAP_JAPANESE_TITLE_SCREEN_CGB - tilemap SolidTiles1Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_1 - tilemap SolidTiles2Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_2 - tilemap SolidTiles3Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_3 - tilemap JapaneseTitleScreen2Tilemap, TILESET_JAPANESE_TITLE_SCREEN_2 ; TILEMAP_JAPANESE_TITLE_SCREEN_2 - tilemap JapaneseTitleScreen2CGBTilemap, TILESET_JAPANESE_TITLE_SCREEN_2_CGB ; TILEMAP_JAPANESE_TITLE_SCREEN_2_CGB - tilemap SolidTiles4Tilemap, TILESET_SOLID_TILES_2 ; TILEMAP_SOLID_TILES_4 - tilemap PlayerTilemap, TILESET_PLAYER ; TILEMAP_PLAYER - tilemap OpponentTilemap, TILESET_RONALD ; TILEMAP_OPPONENT - tilemap TitleScreenTilemap, TILESET_TITLE_SCREEN ; TILEMAP_TITLE_SCREEN - tilemap TitleScreenCGBTilemap, TILESET_TITLE_SCREEN_CGB ; TILEMAP_TITLE_SCREEN_CGB - tilemap CopyrightTilemap, TILESET_COPYRIGHT ; TILEMAP_COPYRIGHT - tilemap CopyrightCGBTilemap, TILESET_COPYRIGHT ; TILEMAP_COPYRIGHT_CGB - tilemap NintendoTilemap, TILESET_NINTENDO ; TILEMAP_NINTENDO - tilemap CompaniesTilemap, TILESET_COMPANIES ; TILEMAP_COMPANIES + tilemap OverworldMapTilemap, TILESET_OVERWORLD_MAP ; TILEMAP_OVERWORLD_MAP + tilemap OverworldMapCGBTilemap, TILESET_OVERWORLD_MAP ; TILEMAP_OVERWORLD_MAP_CGB + tilemap MasonLaboratoryTilemap, TILESET_MASON_LABORATORY ; TILEMAP_MASON_LABORATORY + tilemap MasonLaboratoryCGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_MASON_LABORATORY_CGB + tilemap ChallengeMachineMapEventTilemap, TILESET_MASON_LABORATORY ; TILEMAP_CHALLENGE_MACHINE_MAP_EVENT + tilemap ChallengeMachineMapEventCGBTilemap,TILESET_MASON_LABORATORY ; TILEMAP_CHALLENGE_MACHINE_MAP_EVENT_CGB + tilemap DeckMachineRoomTilemap, TILESET_MASON_LABORATORY ; TILEMAP_DECK_MACHINE_ROOM + tilemap DeckMachineRoomCGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_DECK_MACHINE_ROOM_CGB + tilemap DeckMachineMapEventTilemap, TILESET_MASON_LABORATORY ; TILEMAP_DECK_MACHINE_MAP_EVENT + tilemap DeckMachineMapEventCGBTilemap, TILESET_MASON_LABORATORY ; TILEMAP_DECK_MACHINE_MAP_EVENT_CGB + tilemap IshiharaTilemap, TILESET_ISHIHARA ; TILEMAP_ISHIHARA + tilemap IshiharaCGBTilemap, TILESET_ISHIHARA ; TILEMAP_ISHIHARA_CGB + tilemap FightingClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIGHTING_CLUB_ENTRANCE + tilemap FightingClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIGHTING_CLUB_ENTRANCE_CGB + tilemap RockClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_ROCK_CLUB_ENTRANCE + tilemap RockClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_ROCK_CLUB_ENTRANCE_CGB + tilemap WaterClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_WATER_CLUB_ENTRANCE + tilemap WaterClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_WATER_CLUB_ENTRANCE_CGB + tilemap LightningClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_LIGHTNING_CLUB_ENTRANCE + tilemap LightningClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_LIGHTNING_CLUB_ENTRANCE_CGB + tilemap GrassClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_GRASS_CLUB_ENTRANCE + tilemap GrassClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_GRASS_CLUB_ENTRANCE_CGB + tilemap PsychicClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_PSYCHIC_CLUB_ENTRANCE + tilemap PsychicClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_PSYCHIC_CLUB_ENTRANCE_CGB + tilemap ScienceClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_SCIENCE_CLUB_ENTRANCE + tilemap ScienceClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_SCIENCE_CLUB_ENTRANCE_CGB + tilemap FireClubEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIRE_CLUB_ENTRANCE + tilemap FireClubEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_FIRE_CLUB_ENTRANCE_CGB + tilemap ChallengeHallEntranceTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_CHALLENGE_HALL_ENTRANCE + tilemap ChallengeHallEntranceCGBTilemap, TILESET_CLUB_ENTRANCE ; TILEMAP_CHALLENGE_HALL_ENTRANCE_CGB + tilemap ClubLobbyTilemap, TILESET_CLUB_LOBBY ; TILEMAP_CLUB_LOBBY + tilemap ClubLobbyCGBTilemap, TILESET_CLUB_LOBBY ; TILEMAP_CLUB_LOBBY_CGB + tilemap FightingClubTilemap, TILESET_FIGHTING_CLUB ; TILEMAP_FIGHTING_CLUB + tilemap FightingClubCGBTilemap, TILESET_FIGHTING_CLUB ; TILEMAP_FIGHTING_CLUB_CGB + tilemap RockClubTilemap, TILESET_ROCK_CLUB ; TILEMAP_ROCK_CLUB + tilemap RockClubCGBTilemap, TILESET_ROCK_CLUB ; TILEMAP_ROCK_CLUB_CGB + tilemap WaterClubTilemap, TILESET_WATER_CLUB ; TILEMAP_WATER_CLUB + tilemap WaterClubCGBTilemap, TILESET_WATER_CLUB ; TILEMAP_WATER_CLUB_CGB + tilemap LightningClubTilemap, TILESET_LIGHTNING_CLUB ; TILEMAP_LIGHTNING_CLUB + tilemap LightningClubCGBTilemap, TILESET_LIGHTNING_CLUB ; TILEMAP_LIGHTNING_CLUB_CGB + tilemap GrassClubTilemap, TILESET_GRASS_CLUB ; TILEMAP_GRASS_CLUB + tilemap GrassClubCGBTilemap, TILESET_GRASS_CLUB ; TILEMAP_GRASS_CLUB_CGB + tilemap PsychicClubTilemap, TILESET_PSYCHIC_CLUB ; TILEMAP_PSYCHIC_CLUB + tilemap PsychicClubCGBTilemap, TILESET_PSYCHIC_CLUB ; TILEMAP_PSYCHIC_CLUB_CGB + tilemap ScienceClubTilemap, TILESET_SCIENCE_CLUB ; TILEMAP_SCIENCE_CLUB + tilemap ScienceClubCGBTilemap, TILESET_SCIENCE_CLUB ; TILEMAP_SCIENCE_CLUB_CGB + tilemap FireClubTilemap, TILESET_FIRE_CLUB ; TILEMAP_FIRE_CLUB + tilemap FireClubCGBTilemap, TILESET_FIRE_CLUB ; TILEMAP_FIRE_CLUB_CGB + tilemap ChallengeHallTilemap, TILESET_CHALLENGE_HALL ; TILEMAP_CHALLENGE_HALL + tilemap ChallengeHallCGBTilemap, TILESET_CHALLENGE_HALL ; TILEMAP_CHALLENGE_HALL_CGB + tilemap PokemonDomeEntranceTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_POKEMON_DOME_ENTRANCE + tilemap PokemonDomeEntranceCGBTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_POKEMON_DOME_ENTRANCE_CGB + tilemap PokemonDomeDoorMapEventTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_POKEMON_DOME_DOOR_MAP_EVENT + tilemap PokemonDomeDoorMapEventCGBTilemap, TILESET_POKEMON_DOME_ENTRANCE ; TILEMAP_POKEMON_DOME_DOOR_MAP_EVENT_CGB + tilemap PokemonDomeTilemap, TILESET_POKEMON_DOME ; TILEMAP_POKEMON_DOME + tilemap PokemonDomeCGBTilemap, TILESET_POKEMON_DOME ; TILEMAP_POKEMON_DOME_CGB + tilemap HallOfHonorDoorMapEventTilemap, TILESET_POKEMON_DOME ; TILEMAP_HALL_OF_HONOR_DOOR_MAP_EVENT + tilemap HallOfHonorDoorMapEventCGBTilemap, TILESET_POKEMON_DOME ; TILEMAP_HALL_OF_HONOR_DOOR_MAP_EVENT_CGB + tilemap HallOfHonorTilemap, TILESET_HALL_OF_HONOR ; TILEMAP_HALL_OF_HONOR + tilemap HallOfHonorCGBTilemap, TILESET_HALL_OF_HONOR ; TILEMAP_HALL_OF_HONOR_CGB + tilemap CardPopCGBTilemap, TILESET_CARD_POP ; TILEMAP_CARD_POP_CGB + tilemap CardPopTilemap, TILESET_CARD_POP ; TILEMAP_CARD_POP + tilemap GrassMedalTilemap, TILESET_MEDAL ; TILEMAP_GRASS_MEDAL + tilemap ScienceMedalTilemap, TILESET_MEDAL ; TILEMAP_SCIENCE_MEDAL + tilemap FireMedalTilemap, TILESET_MEDAL ; TILEMAP_FIRE_MEDAL + tilemap WaterMedalTilemap, TILESET_MEDAL ; TILEMAP_WATER_MEDAL + tilemap LightningMedalTilemap, TILESET_MEDAL ; TILEMAP_LIGHTNING_MEDAL + tilemap FightingMedalTilemap, TILESET_MEDAL ; TILEMAP_FIGHTING_MEDAL + tilemap RockMedalTilemap, TILESET_MEDAL ; TILEMAP_ROCK_MEDAL + tilemap PsychicMedalTilemap, TILESET_MEDAL ; TILEMAP_PSYCHIC_MEDAL + tilemap GameBoyLinkCGBTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK_CGB + tilemap GameBoyLinkTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK + tilemap GameBoyLinkConnectingCGBTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK_CONNECTING_CGB + tilemap GameBoyLinkConnectingTilemap, TILESET_GAMEBOY_LINK ; TILEMAP_GAMEBOY_LINK_CONNECTING + tilemap GameBoyPrinterCGBTilemap, TILESET_GAMEBOY_PRINTER ; TILEMAP_GAMEBOY_PRINTER_CGB + tilemap GameBoyPrinterTilemap, TILESET_GAMEBOY_PRINTER ; TILEMAP_GAMEBOY_PRINTER + tilemap ColosseumTilemap, TILESET_COLOSSEUM_1 ; TILEMAP_COLOSSEUM + tilemap ColosseumCGBTilemap, TILESET_COLOSSEUM_2 ; TILEMAP_COLOSSEUM_CGB + tilemap EvolutionTilemap, TILESET_EVOLUTION_1 ; TILEMAP_EVOLUTION + tilemap EvolutionCGBTilemap, TILESET_EVOLUTION_2 ; TILEMAP_EVOLUTION_CGB + tilemap MysteryTilemap, TILESET_MYSTERY_1 ; TILEMAP_MYSTERY + tilemap MysteryCGBTilemap, TILESET_MYSTERY_2 ; TILEMAP_MYSTERY_CGB + tilemap LaboratoryTilemap, TILESET_LABORATORY_1 ; TILEMAP_LABORATORY + tilemap LaboratoryCGBTilemap, TILESET_LABORATORY_2 ; TILEMAP_LABORATORY_CGB + tilemap CharizardIntroTilemap, TILESET_CHARIZARD_INTRO_1 ; TILEMAP_CHARIZARD_INTRO + tilemap CharizardIntroCGBTilemap, TILESET_CHARIZARD_INTRO_2 ; TILEMAP_CHARIZARD_INTRO_CGB + tilemap ScytherIntroTilemap, TILESET_SCYTHER_INTRO_1 ; TILEMAP_SCYTHER_INTRO + tilemap ScytherIntroCGBTilemap, TILESET_SCYTHER_INTRO_2 ; TILEMAP_SCYTHER_INTRO_CGB + tilemap AerodactylIntroTilemap, TILESET_AERODACTYL_INTRO_1 ; TILEMAP_AERODACTYL_INTRO + tilemap AerodactylIntroCGBTilemap, TILESET_AERODACTYL_INTRO_2 ; TILEMAP_AERODACTYL_INTRO_CGB + tilemap JapaneseTitleScreenTilemap, TILESET_JAPANESE_TITLE_SCREEN ; TILEMAP_JAPANESE_TITLE_SCREEN + tilemap JapaneseTitleScreenCGBTilemap, TILESET_JAPANESE_TITLE_SCREEN_CGB ; TILEMAP_JAPANESE_TITLE_SCREEN_CGB + tilemap SolidTiles1Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_1 + tilemap SolidTiles2Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_2 + tilemap SolidTiles3Tilemap, TILESET_SOLID_TILES_1 ; TILEMAP_SOLID_TILES_3 + tilemap JapaneseTitleScreen2Tilemap, TILESET_JAPANESE_TITLE_SCREEN_2 ; TILEMAP_JAPANESE_TITLE_SCREEN_2 + tilemap JapaneseTitleScreen2CGBTilemap, TILESET_JAPANESE_TITLE_SCREEN_2_CGB ; TILEMAP_JAPANESE_TITLE_SCREEN_2_CGB + tilemap SolidTiles4Tilemap, TILESET_SOLID_TILES_2 ; TILEMAP_SOLID_TILES_4 + tilemap PlayerTilemap, TILESET_PLAYER ; TILEMAP_PLAYER + tilemap OpponentTilemap, TILESET_RONALD ; TILEMAP_OPPONENT + tilemap TitleScreenTilemap, TILESET_TITLE_SCREEN ; TILEMAP_TITLE_SCREEN + tilemap TitleScreenCGBTilemap, TILESET_TITLE_SCREEN_CGB ; TILEMAP_TITLE_SCREEN_CGB + tilemap CopyrightTilemap, TILESET_COPYRIGHT ; TILEMAP_COPYRIGHT + tilemap CopyrightCGBTilemap, TILESET_COPYRIGHT ; TILEMAP_COPYRIGHT_CGB + tilemap NintendoTilemap, TILESET_NINTENDO ; TILEMAP_NINTENDO + tilemap CompaniesTilemap, TILESET_COMPANIES ; TILEMAP_COMPANIES ; \1 = pointer ; \2 = number of tiles @@ -2059,23 +2359,23 @@ MasonLaboratoryCGBTilemap:: ; 81d2e (20:5d2e) MasonLaboratoryCGBPermissions: INCBIN "data/maps/permissions/mason_laboratory_cgb.bin" -Unknown1Tilemap:: ; 81ed1 (20:5ed1) +ChallengeMachineMapEventTilemap:: ; 81ed1 (20:5ed1) db $04 ; width db $06 ; height - dw Unknown1Permissions + dw ChallengeMachineMapEventPermissions db FALSE ; cgb mode - INCBIN "data/maps/tiles/unknown1.bin" -Unknown1Permissions: - INCBIN "data/maps/permissions/unknown1.bin" + INCBIN "data/maps/tiles/challenge_machine_map_event.bin" +ChallengeMachineMapEventPermissions: + INCBIN "data/maps/permissions/challenge_machine_map_event.bin" -Unknown1CGBTilemap:: ; 81ef5 (20:5ef5) +ChallengeMachineMapEventCGBTilemap:: ; 81ef5 (20:5ef5) db $04 ; width db $06 ; height - dw Unknown1CGBPermissions + dw ChallengeMachineMapEventCGBPermissions db TRUE ; cgb mode - INCBIN "data/maps/tiles/unknown1_cgb.bin" -Unknown1CGBPermissions: - INCBIN "data/maps/permissions/unknown1_cgb.bin" + INCBIN "data/maps/tiles/challenge_machine_map_event_cgb.bin" +ChallengeMachineMapEventCGBPermissions: + INCBIN "data/maps/permissions/challenge_machine_map_event_cgb.bin" DeckMachineRoomTilemap:: ; 81f26 (20:5f26) db $18 ; width @@ -2095,23 +2395,23 @@ DeckMachineRoomCGBTilemap:: ; 81feb (20:5feb) DeckMachineRoomCGBPermissions: INCBIN "data/maps/permissions/deck_machine_room_cgb.bin" -Unknown2Tilemap:: ; 82143 (20:6143) +DeckMachineMapEventTilemap:: ; 82143 (20:6143) db $04 ; width db $01 ; height - dw Unknown2Permissions + dw DeckMachineMapEventPermissions db FALSE ; cgb mode - INCBIN "data/maps/tiles/unknown_2.bin" -Unknown2Permissions: - INCBIN "data/maps/permissions/unknown_2.bin" + INCBIN "data/maps/tiles/deck_machine_map_event.bin" +DeckMachineMapEventPermissions: + INCBIN "data/maps/permissions/deck_machine_map_event.bin" -Unknown2CGBTilemap:: ; 82150 (20:6150) +DeckMachineMapEventCGBTilemap:: ; 82150 (20:6150) db $04 ; width db $01 ; height - dw Unknown2CGBPermissions + dw DeckMachineMapEventCGBPermissions db TRUE ; cgb mode - INCBIN "data/maps/tiles/unknown_2_cgb.bin" -Unknown2CGBPermissions: - INCBIN "data/maps/permissions/unknown_2_cgb.bin" + INCBIN "data/maps/tiles/deck_machine_map_event_cgb.bin" +DeckMachineMapEventCGBPermissions: + INCBIN "data/maps/permissions/deck_machine_map_event_cgb.bin" IshiharaTilemap:: ; 82160 (20:6160) db $14 ; width @@ -2347,41 +2647,41 @@ RockClubCGBTilemap:: ; 839d6 (20:79d6) RockClubCGBPermissions: INCBIN "data/maps/permissions/rock_club_cgb.bin" -Unknown3Tilemap:: ; 83bf1 (20:7bf1) +PokemonDomeDoorMapEventTilemap:: ; 83bf1 (20:7bf1) db $04 ; width db $03 ; height - dw Unknown3Permissions + dw PokemonDomeDoorMapEventPermissions db FALSE ; cgb mode - INCBIN "data/maps/tiles/unknown_3.bin" -Unknown3Permissions: - INCBIN "data/maps/permissions/unknown_3.bin" + INCBIN "data/maps/tiles/pokemon_dome_door_map_event.bin" +PokemonDomeDoorMapEventPermissions: + INCBIN "data/maps/permissions/pokemon_dome_door_map_event.bin" -Unknown3CGBTilemap:: ; 83c03 (20:7c03) +PokemonDomeDoorMapEventCGBTilemap:: ; 83c03 (20:7c03) db $04 ; width db $03 ; height - dw Unknown3CGBPermissions + dw PokemonDomeDoorMapEventCGBPermissions db TRUE ; cgb mode - INCBIN "data/maps/tiles/unknown_3_cgb.bin" -Unknown3CGBPermissions: - INCBIN "data/maps/permissions/unknown_3_cgb.bin" + INCBIN "data/maps/tiles/pokemon_dome_door_map_event_cgb.bin" +PokemonDomeDoorMapEventCGBPermissions: + INCBIN "data/maps/permissions/pokemon_dome_door_map_event_cgb.bin" -Unknown4Tilemap:: ; 83c1a (20:7c1a) +HallOfHonorDoorMapEventTilemap:: ; 83c1a (20:7c1a) db $04 ; width db $03 ; height - dw Unknown4Permissions + dw HallOfHonorDoorMapEventPermissions db FALSE ; cgb mode - INCBIN "data/maps/tiles/unknown_4.bin" -Unknown4Permissions: - INCBIN "data/maps/permissions/unknown_4.bin" + INCBIN "data/maps/tiles/hall_of_honor_door_map_event.bin" +HallOfHonorDoorMapEventPermissions: + INCBIN "data/maps/permissions/hall_of_honor_door_map_event.bin" -Unknown4CGBTilemap:: ; 83c26 (20:7c26) +HallOfHonorDoorMapEventCGBTilemap:: ; 83c26 (20:7c26) db $04 ; width db $03 ; height - dw Unknown4CGBPermissions + dw HallOfHonorDoorMapEventCGBPermissions db TRUE ; cgb mode - INCBIN "data/maps/tiles/unknown_4_cgb.bin" -Unknown4CGBPermissions: - INCBIN "data/maps/permissions/unknown_4_cgb.bin" + INCBIN "data/maps/tiles/hall_of_honor_door_map_event_cgb.bin" +HallOfHonorDoorMapEventCGBPermissions: + INCBIN "data/maps/permissions/hall_of_honor_door_map_event_cgb.bin" GrassMedalTilemap:: ; 83c36 (20:7c36) db $03 ; width diff --git a/src/engine/effect_functions.asm b/src/engine/effect_functions.asm index cfed469..b8b4914 100644 --- a/src/engine/effect_functions.asm +++ b/src/engine/effect_functions.asm @@ -1335,8 +1335,8 @@ HandleColorChangeScreen: ; 2c588 (b:4588) ld a, [wConsole] cp CONSOLE_CGB jr nz, .skip_vram1 - pop hl ; unnecessary - push hl ; unnecessary + pop hl + push hl call BankswitchVRAM1 ld a, [hl] lb hl, 0, 0 diff --git a/src/engine/home.asm b/src/engine/home.asm index 5a8c822..0651e8d 100644 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -11084,8 +11084,16 @@ GetMapScriptPointer: ; 3abd (0:3abd) pop bc ret -Func_3ae8: ; 3ae8 (0:3ae8) - farcall Func_11f4e +; loads some configurations for the duel against +; the NPC whose deck ID is stored in wNPCDuelDeckID +; this includes NPC portrait, his/her name text ID, +; and the number of prize cards +; this was used in testing since these configurations +; are stored in the script-related NPC data for normal gameplay +; returns carry if a duel configuration was found +; for the given NPC deck ID +GetNPCDuelConfigurations: ; 3ae8 (0:3ae8) + farcall _GetNPCDuelConfigurations ret ; finds a Script from the first byte and puts the next two bytes (usually arguments?) into cb diff --git a/src/macros/scripts.asm b/src/macros/scripts.asm index bd500a2..10336ef 100644 --- a/src/macros/scripts.asm +++ b/src/macros/scripts.asm @@ -461,6 +461,7 @@ ENDM ; Replaces map blocks ; used for deck machines, challenge machine, Pokemon Dome doors, Hall of Honor doors etc +; accepts as argument any of MAP_EVENT_* constants replace_map_blocks: MACRO run_command ScriptCommand_ReplaceMapBlocks db \1 ; id diff --git a/src/sram.asm b/src/sram.asm index f2ffbf2..dfcf9c9 100644 --- a/src/sram.asm +++ b/src/sram.asm @@ -122,8 +122,8 @@ sChallengeHallNPC:: ; b817 sb818:: ; b818 ds $4 -sb81c:: ; b81c - ds $b +sOWMapEvents:: ; b81c + ds NUM_MAP_EVENTS sb827:: ; b827 ds $1 diff --git a/src/text/text1.asm b/src/text/text1.asm index bdc5fa9..e94cb49 100644 --- a/src/text/text1.asm +++ b/src/text/text1.asm @@ -620,7 +620,7 @@ SelectComputerOpponentText: ; 36f65 (d:6f65) text "Select a computer opponent." done -Text008b: ; 36f82 (d:6f82) +NumberOfPrizesText: ; 36f82 (d:6f82) text "Number of Prizes" done diff --git a/src/text/text3.asm b/src/text/text3.asm index 96e039a..4fccc9c 100644 --- a/src/text/text3.asm +++ b/src/text/text3.asm @@ -1450,16 +1450,16 @@ Text0383: ; 3f2b9 (f:72b9) text "Right" done -Text0384: ; 3f2c0 (f:72c0) +SPRText: ; 3f2c0 (f:72c0) text "SPR_" done -Text0385: ; 3f2c6 (f:72c6) +WinLosePrizesDuelWithText: ; 3f2c6 (f:72c6) text "WIN <RAMNUM> Prizes Duel" line "LOSE with <RAMTEXT>(<RAMNUM>)" done -Text0386: ; 3f2f1 (f:72f1) +UseDuelistsDeckText: ; 3f2f1 (f:72f1) text " Use <RAMNUM>'s Deck" done diff --git a/src/text/text_offsets.asm b/src/text/text_offsets.asm index 3f1d87d..a62e8e7 100644 --- a/src/text/text_offsets.asm +++ b/src/text/text_offsets.asm @@ -140,7 +140,7 @@ TextOffsets:: ; 34000 (d:4000) textpointer DuelistIsThinkingText ; 0x0088 textpointer Text0089 ; 0x0089 textpointer SelectComputerOpponentText ; 0x008a - textpointer Text008b ; 0x008b + textpointer NumberOfPrizesText ; 0x008b textpointer Text008c ; 0x008c textpointer Text008d ; 0x008d textpointer Text008e ; 0x008e @@ -901,9 +901,9 @@ TextOffsets:: ; 34000 (d:4000) textpointer Text0381 ; 0x0381 textpointer Text0382 ; 0x0382 textpointer Text0383 ; 0x0383 - textpointer Text0384 ; 0x0384 - textpointer Text0385 ; 0x0385 - textpointer Text0386 ; 0x0386 + textpointer SPRText ; 0x0384 + textpointer WinLosePrizesDuelWithText ; 0x0385 + textpointer UseDuelistsDeckText ; 0x0386 textpointer ReceivedBoosterPackText ; 0x0387 textpointer AndAnotherBoosterPackText ; 0x0388 textpointer CheckedCardsInBoosterPackText ; 0x0389 diff --git a/src/wram.asm b/src/wram.asm index 15910e7..9a6dffb 100644 --- a/src/wram.asm +++ b/src/wram.asm @@ -28,7 +28,7 @@ NEXTU ; before $ef is initialized to 0 when starting decompression. wDecompressionSecondaryBuffer:: ; c000 ds $ef -wDecompressionSecondaryBufferStart:: ; ; c0ef +wDecompressionSecondaryBufferStart:: ; c0ef ds $11 ENDU @@ -2137,6 +2137,7 @@ NEXTU ; permission map of the current room with impassable objects (walls, NPCs, etc). ; $00: passable (floor) +; $10: text/menu box tile ; $40: impassable and talkable (NPC or talkable wall) ; $80: impassable and untalkable (wall) wPermissionMap:: ; d133 @@ -2242,11 +2243,15 @@ wCurOWFrameDuration:: ; d321 ; number of valid subgroups ; that are currently loaded in wOWFramesetSubgroups -wumLoadedFramesetSubgroups:: ; d322 +wNumLoadedFramesetSubgroups:: ; d322 ds $1 -wd323:: ; d323 - ds $b +; holds the current state of each event +; each corresponding to a MAP_EVENT_* constant +; if $0, doors are closed / deck machines are deactivated +; if $1, doors are open / deck machines are activated +wOWMapEvents:: ; d323 + ds NUM_MAP_EVENTS ; the OWMAP_* value for the current overworld map selection wOverworldMapSelection:: ; d32e |