summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordannye <33dannye@gmail.com>2021-02-14 00:52:05 -0600
committerdannye <33dannye@gmail.com>2021-02-14 00:52:05 -0600
commit0955275fd9fd2b05d712f4c425e1a802130d02f7 (patch)
treee28a7e246c620789dd0f659dd8571fd1a2bed64e /src
parentbc25764d6c32bcabc756034123731ca9d1545504 (diff)
Disassemble scene data
still a WIP
Diffstat (limited to 'src')
-rw-r--r--src/constants.asm1
-rw-r--r--src/constants/booster_constants.asm6
-rw-r--r--src/constants/scene_constants.asm29
-rw-r--r--src/data/overworld_indexes.asm26
-rw-r--r--src/data/warps.asm282
-rw-r--r--src/engine/bank01.asm4
-rw-r--r--src/engine/bank04.asm662
-rw-r--r--src/engine/bank06.asm4
-rw-r--r--src/engine/bank07.asm6
-rw-r--r--src/engine/bank1c.asm116
-rw-r--r--src/engine/bank20.asm1
-rw-r--r--src/engine/effect_functions.asm2
-rw-r--r--src/engine/home.asm8
-rw-r--r--src/text/text3.asm8
-rw-r--r--src/text/text_offsets.asm8
-rw-r--r--src/wram.asm25
16 files changed, 990 insertions, 198 deletions
diff --git a/src/constants.asm b/src/constants.asm
index 733dd8c..5fcb2ac 100644
--- a/src/constants.asm
+++ b/src/constants.asm
@@ -13,6 +13,7 @@ INCLUDE "constants/music_constants.asm"
INCLUDE "constants/name_constants.asm"
INCLUDE "constants/npc_constants.asm"
INCLUDE "constants/palette_constants.asm"
+INCLUDE "constants/scene_constants.asm"
INCLUDE "constants/script_constants.asm"
INCLUDE "constants/sgb_constants.asm"
INCLUDE "constants/sfx_constants.asm"
diff --git a/src/constants/booster_constants.asm b/src/constants/booster_constants.asm
index f5efb9b..9bc9f09 100644
--- a/src/constants/booster_constants.asm
+++ b/src/constants/booster_constants.asm
@@ -13,6 +13,12 @@ NUM_CARDS_IN_BOOSTER EQU 10
NUM_BOOSTER_CARD_TYPES EQU const_value
const_def
+ const BOOSTER_COLOSSEUM ; $00
+ const BOOSTER_EVOLUTION ; $01
+ const BOOSTER_MYSTERY ; $02
+ const BOOSTER_LABORATORY ; $03
+
+ const_def
const BOOSTER_COLOSSEUM_NEUTRAL ; $00
const BOOSTER_COLOSSEUM_GRASS ; $01
const BOOSTER_COLOSSEUM_FIRE ; $02
diff --git a/src/constants/scene_constants.asm b/src/constants/scene_constants.asm
new file mode 100644
index 0000000..1a4a5be
--- /dev/null
+++ b/src/constants/scene_constants.asm
@@ -0,0 +1,29 @@
+ const_def
+ const SCENE_TITLE_SCREEN ; $00
+ const SCENE_COLOSSEUM_BOOSTER ; $01
+ const SCENE_EVOLUTION_BOOSTER ; $02
+ const SCENE_MYSTERY_BOOSTER ; $03
+ const SCENE_LABORATORY_BOOSTER ; $04
+ const SCENE_CHARIZARD_INTRO ; $05
+ const SCENE_SCYTHER_INTRO ; $06
+ const SCENE_AERODACTYL_INTRO ; $07
+ const SCENE_GRADIENT_BLACK_AND_RED ; $08
+ const SCENE_GRADIENT_WHITE_AND_RED ; $09
+ const SCENE_GRADIENT_BLACK_AND_GREEN ; $0a
+ const SCENE_GRADIENT_WHITE_AND_GREEN ; $0b
+ const SCENE_COLOR_WHEEL ; $0c
+ const SCENE_COLOR_TEST ; $0d
+ const SCENE_GAMEBOY_LINK_CONNECTING ; $0e
+ const SCENE_GAMEBOY_LINK_TRANSMITTING ; $0f
+ const SCENE_GAMEBOY_LINK_NOT_CONNECTED ; $10
+ const SCENE_GAMEBOY_PRINTER_TRANSMITTING ; $11
+ const SCENE_GAMEBOY_PRINTER_NOT_CONNECTED ; $12
+ const SCENE_CARD_POP ; $13
+ const SCENE_CARD_POP_ERROR ; $14
+ const SCENE_JAPANESE_TITLE_SCREEN ; $15
+ const SCENE_NINTENDO ; $16
+ const SCENE_COMPANIES ; $17
+ const SCENE_JAPANESE_TITLE_SCREEN_2 ; $18
+ const SCENE_COPYRIGHT ; $19
+ const SCENE_JAPANESE_TITLE_SCREEN_2_COPY ; $1a
+ const SCENE_COLOR_PALETTE ; $1b
diff --git a/src/data/overworld_indexes.asm b/src/data/overworld_indexes.asm
index 7df99de..86f20c2 100644
--- a/src/data/overworld_indexes.asm
+++ b/src/data/overworld_indexes.asm
@@ -4,16 +4,16 @@
; 2: player's y coordinate when entering the map
; 4: 00
OverworldMapIndexes: ; 10f88 (4:4f88)
- db $00,$00,$00,$00
- db MASON_LABORATORY, $0E,$1A,$00
- db ISHIHARAS_HOUSE, $08,$14,$00
- db FIGHTING_CLUB_ENTRANCE, $08,$0E,$00
- db ROCK_CLUB_ENTRANCE, $08,$0E,$00
- db WATER_CLUB_ENTRANCE, $08,$0E,$00
- db LIGHTNING_CLUB_ENTRANCE,$08,$0E,$00
- db GRASS_CLUB_ENTRANCE, $08,$0E,$00
- db PSYCHIC_CLUB_ENTRANCE, $08,$0E,$00
- db SCIENCE_CLUB_ENTRANCE, $08,$0E,$00
- db FIRE_CLUB_ENTRANCE, $08,$0E,$00
- db CHALLENGE_HALL_ENTRANCE,$08,$0E,$00
- db POKEMON_DOME_ENTRANCE, $0E,$0E,$00
+ db $00, $00, $00, $00
+ db MASON_LABORATORY, $0E, $1A, $00
+ db ISHIHARAS_HOUSE, $08, $14, $00
+ db FIGHTING_CLUB_ENTRANCE, $08, $0E, $00
+ db ROCK_CLUB_ENTRANCE, $08, $0E, $00
+ db WATER_CLUB_ENTRANCE, $08, $0E, $00
+ db LIGHTNING_CLUB_ENTRANCE, $08, $0E, $00
+ db GRASS_CLUB_ENTRANCE, $08, $0E, $00
+ db PSYCHIC_CLUB_ENTRANCE, $08, $0E, $00
+ db SCIENCE_CLUB_ENTRANCE, $08, $0E, $00
+ db FIRE_CLUB_ENTRANCE, $08, $0E, $00
+ db CHALLENGE_HALL_ENTRANCE, $08, $0E, $00
+ db POKEMON_DOME_ENTRANCE, $0E, $0E, $00
diff --git a/src/data/warps.asm b/src/data/warps.asm
index cba8053..828db63 100644
--- a/src/data/warps.asm
+++ b/src/data/warps.asm
@@ -43,208 +43,208 @@ WarpDataPointers: ; 1c099 (7:4099)
; 5: y coordinate of connected map
; double null terminated
MasonLaboratoryWarpData: ; 1c0dd (7:40dd)
- db $0E,$1C,OVERWORLD_MAP, $00,$00
- db $10,$1C,OVERWORLD_MAP, $00,$00
- db $1A,$0A,DECK_MACHINE_ROOM,$02,$0A
- db $1A,$0C,DECK_MACHINE_ROOM,$02,$0C
- db $00,$00
+ db $0E, $1C, OVERWORLD_MAP, $00, $00
+ db $10, $1C, OVERWORLD_MAP, $00, $00
+ db $1A, $0A, DECK_MACHINE_ROOM, $02, $0A
+ db $1A, $0C, DECK_MACHINE_ROOM, $02, $0C
+ db $00, $00
DeckMachineRoomWarpData: ; 1c0f3 (7:40f3)
- db $00,$0A,MASON_LABORATORY,$18,$0A
- db $00,$0C,MASON_LABORATORY,$18,$0C
- db $00,$00
+ db $00, $0A, MASON_LABORATORY, $18, $0A
+ db $00, $0C, MASON_LABORATORY, $18, $0C
+ db $00, $00
IshiharasHouseWarpData: ; 1c0ff (7:40ff)
- db $08,$16,OVERWORLD_MAP,$00,$00
- db $0A,$16,OVERWORLD_MAP,$00,$00
- db $00,$00
+ db $08, $16, OVERWORLD_MAP, $00, $00
+ db $0A, $16, OVERWORLD_MAP, $00, $00
+ db $00, $00
FightingClubEntranceWarpData: ; 1c10b (7:410b)
- db $08,$10,OVERWORLD_MAP, $00,$00
- db $0A,$10,OVERWORLD_MAP, $00,$00
- db $00,$06,FIGHTING_CLUB_LOBBY,$18,$0A
- db $00,$08,FIGHTING_CLUB_LOBBY,$18,$0C
- db $08,$00,FIGHTING_CLUB, $0A,$0E
- db $0A,$00,FIGHTING_CLUB, $0C,$0E
- db $00,$00
+ db $08, $10, OVERWORLD_MAP, $00, $00
+ db $0A, $10, OVERWORLD_MAP, $00, $00
+ db $00, $06, FIGHTING_CLUB_LOBBY, $18, $0A
+ db $00, $08, FIGHTING_CLUB_LOBBY, $18, $0C
+ db $08, $00, FIGHTING_CLUB, $0A, $0E
+ db $0A, $00, FIGHTING_CLUB, $0C, $0E
+ db $00, $00
FightingClubLobbyWarpData: ; 1c12b (7:412b)
- db $1A,$0A,FIGHTING_CLUB_ENTRANCE,$02,$06
- db $1A,$0C,FIGHTING_CLUB_ENTRANCE,$02,$08
- db $00,$00
+ db $1A, $0A, FIGHTING_CLUB_ENTRANCE, $02, $06
+ db $1A, $0C, FIGHTING_CLUB_ENTRANCE, $02, $08
+ db $00, $00
FightingClubWarpData: ; 1c137 (7:4137)
- db $0A,$10,FIGHTING_CLUB_ENTRANCE,$08,$02
- db $0C,$10,FIGHTING_CLUB_ENTRANCE,$0A,$02
- db $00,$00
+ db $0A, $10, FIGHTING_CLUB_ENTRANCE, $08, $02
+ db $0C, $10, FIGHTING_CLUB_ENTRANCE, $0A, $02
+ db $00, $00
RockClubEntranceWarpData: ; 1c143 (7:4143)
- db $08,$10,OVERWORLD_MAP, $00,$00
- db $0A,$10,OVERWORLD_MAP, $00,$00
- db $00,$06,ROCK_CLUB_LOBBY,$18,$0A
- db $00,$08,ROCK_CLUB_LOBBY,$18,$0C
- db $08,$00,ROCK_CLUB, $0C,$1A
- db $0A,$00,ROCK_CLUB, $0E,$1A
- db $00,$00
+ db $08, $10, OVERWORLD_MAP, $00, $00
+ db $0A, $10, OVERWORLD_MAP, $00, $00
+ db $00, $06, ROCK_CLUB_LOBBY, $18, $0A
+ db $00, $08, ROCK_CLUB_LOBBY, $18, $0C
+ db $08, $00, ROCK_CLUB, $0C, $1A
+ db $0A, $00, ROCK_CLUB, $0E, $1A
+ db $00, $00
RockClubLobbyWarpData: ; 1c163 (7:4163)
- db $1A,$0A,ROCK_CLUB_ENTRANCE,$02,$06
- db $1A,$0C,ROCK_CLUB_ENTRANCE,$02,$08
- db $00,$00
+ db $1A, $0A, ROCK_CLUB_ENTRANCE, $02, $06
+ db $1A, $0C, ROCK_CLUB_ENTRANCE, $02, $08
+ db $00, $00
RockClubWarpData: ; 1c16f (7:416f)
- db $0C,$1C,ROCK_CLUB_ENTRANCE,$08,$02
- db $0E,$1C,ROCK_CLUB_ENTRANCE,$0A,$02
- db $00,$00
+ db $0C, $1C, ROCK_CLUB_ENTRANCE, $08, $02
+ db $0E, $1C, ROCK_CLUB_ENTRANCE, $0A, $02
+ db $00, $00
WaterClubEntranceWarpData: ; 1c17b (7:417b)
- db $08,$10,OVERWORLD_MAP, $00,$00
- db $0A,$10,OVERWORLD_MAP, $00,$00
- db $00,$06,WATER_CLUB_LOBBY,$18,$0A
- db $00,$08,WATER_CLUB_LOBBY,$18,$0C
- db $08,$00,WATER_CLUB, $0C,$1C
- db $0A,$00,WATER_CLUB, $0E,$1C
- db $00,$00
+ db $08, $10, OVERWORLD_MAP, $00, $00
+ db $0A, $10, OVERWORLD_MAP, $00, $00
+ db $00, $06, WATER_CLUB_LOBBY, $18, $0A
+ db $00, $08, WATER_CLUB_LOBBY, $18, $0C
+ db $08, $00, WATER_CLUB, $0C, $1C
+ db $0A, $00, WATER_CLUB, $0E, $1C
+ db $00, $00
WaterClubLobbyWarpData: ; 1c19b (7:419b)
- db $1A,$0A,WATER_CLUB_ENTRANCE,$02,$06
- db $1A,$0C,WATER_CLUB_ENTRANCE,$02,$08
- db $00,$00
+ db $1A, $0A, WATER_CLUB_ENTRANCE, $02, $06
+ db $1A, $0C, WATER_CLUB_ENTRANCE, $02, $08
+ db $00, $00
WaterClubWarpData: ; 1c1a7 (7:41a7)
- db $0C,$1E,WATER_CLUB_ENTRANCE,$08,$02
- db $0E,$1E,WATER_CLUB_ENTRANCE,$0A,$02
- db $00,$00
+ db $0C, $1E, WATER_CLUB_ENTRANCE, $08, $02
+ db $0E, $1E, WATER_CLUB_ENTRANCE, $0A, $02
+ db $00, $00
LightningClubEntranceWarpData: ; 1c1b3 (7:41b3)
- db $08,$10,OVERWORLD_MAP, $00,$00
- db $0A,$10,OVERWORLD_MAP, $00,$00
- db $00,$06,LIGHTNING_CLUB_LOBBY,$18,$0A
- db $00,$08,LIGHTNING_CLUB_LOBBY,$18,$0C
- db $08,$00,LIGHTNING_CLUB, $0C,$1C
- db $0A,$00,LIGHTNING_CLUB, $0E,$1C
- db $00,$00
+ db $08, $10, OVERWORLD_MAP, $00, $00
+ db $0A, $10, OVERWORLD_MAP, $00, $00
+ db $00, $06, LIGHTNING_CLUB_LOBBY, $18, $0A
+ db $00, $08, LIGHTNING_CLUB_LOBBY, $18, $0C
+ db $08, $00, LIGHTNING_CLUB, $0C, $1C
+ db $0A, $00, LIGHTNING_CLUB, $0E, $1C
+ db $00, $00
LightningClubLobbyWarpData: ; 1c1d3 (7:41d3)
- db $1A,$0A,LIGHTNING_CLUB_ENTRANCE,$02,$06
- db $1A,$0C,LIGHTNING_CLUB_ENTRANCE,$02,$08
- db $00,$00
+ db $1A, $0A, LIGHTNING_CLUB_ENTRANCE, $02, $06
+ db $1A, $0C, LIGHTNING_CLUB_ENTRANCE, $02, $08
+ db $00, $00
LightningClubWarpData: ; 1c1df (7:41df)
- db $0C,$1E,LIGHTNING_CLUB_ENTRANCE,$08,$02
- db $0E,$1E,LIGHTNING_CLUB_ENTRANCE,$0A,$02
- db $00,$00
+ db $0C, $1E, LIGHTNING_CLUB_ENTRANCE, $08, $02
+ db $0E, $1E, LIGHTNING_CLUB_ENTRANCE, $0A, $02
+ db $00, $00
GrassClubEntranceWarpData: ; 1c1eb (7:41eb)
- db $08,$10,OVERWORLD_MAP, $00,$00
- db $0A,$10,OVERWORLD_MAP, $00,$00
- db $00,$06,GRASS_CLUB_LOBBY,$18,$0A
- db $00,$08,GRASS_CLUB_LOBBY,$18,$0C
- db $08,$00,GRASS_CLUB, $0C,$1C
- db $0A,$00,GRASS_CLUB, $0E,$1C
- db $00,$00
+ db $08, $10, OVERWORLD_MAP, $00, $00
+ db $0A, $10, OVERWORLD_MAP, $00, $00
+ db $00, $06, GRASS_CLUB_LOBBY, $18, $0A
+ db $00, $08, GRASS_CLUB_LOBBY, $18, $0C
+ db $08, $00, GRASS_CLUB, $0C, $1C
+ db $0A, $00, GRASS_CLUB, $0E, $1C
+ db $00, $00
GrassClubLobbyWarpData: ; 1c20b (7:420b)
- db $1A,$0A,GRASS_CLUB_ENTRANCE,$02,$06
- db $1A,$0C,GRASS_CLUB_ENTRANCE,$02,$08
- db $00,$00
+ db $1A, $0A, GRASS_CLUB_ENTRANCE, $02, $06
+ db $1A, $0C, GRASS_CLUB_ENTRANCE, $02, $08
+ db $00, $00
GrassClubWarpData: ; 1c217 (7:4217)
- db $0C,$1E,GRASS_CLUB_ENTRANCE,$08,$02
- db $0E,$1E,GRASS_CLUB_ENTRANCE,$0A,$02
- db $00,$00
+ db $0C, $1E, GRASS_CLUB_ENTRANCE, $08, $02
+ db $0E, $1E, GRASS_CLUB_ENTRANCE, $0A, $02
+ db $00, $00
PsychicClubEntranceWarpData: ; 1c223 (7:4223)
- db $08,$10,OVERWORLD_MAP, $00,$00
- db $0A,$10,OVERWORLD_MAP, $00,$00
- db $00,$06,PSYCHIC_CLUB_LOBBY,$18,$0A
- db $00,$08,PSYCHIC_CLUB_LOBBY,$18,$0C
- db $08,$00,PSYCHIC_CLUB, $0C,$18
- db $0A,$00,PSYCHIC_CLUB, $0E,$18
- db $00,$00
+ db $08, $10, OVERWORLD_MAP, $00, $00
+ db $0A, $10, OVERWORLD_MAP, $00, $00
+ db $00, $06, PSYCHIC_CLUB_LOBBY, $18, $0A
+ db $00, $08, PSYCHIC_CLUB_LOBBY, $18, $0C
+ db $08, $00, PSYCHIC_CLUB, $0C, $18
+ db $0A, $00, PSYCHIC_CLUB, $0E, $18
+ db $00, $00
PsychicClubLobbyWarpData: ; 1c243 (7:4243)
- db $1A,$0A,PSYCHIC_CLUB_ENTRANCE,$02,$06
- db $1A,$0C,PSYCHIC_CLUB_ENTRANCE,$02,$08
- db $00,$00
+ db $1A, $0A, PSYCHIC_CLUB_ENTRANCE, $02, $06
+ db $1A, $0C, PSYCHIC_CLUB_ENTRANCE, $02, $08
+ db $00, $00
PsychicClubWarpData: ; 1c24f (7:424f)
- db $0C,$1A,PSYCHIC_CLUB_ENTRANCE,$08,$02
- db $0E,$1A,PSYCHIC_CLUB_ENTRANCE,$0A,$02
- db $00,$00
+ db $0C, $1A, PSYCHIC_CLUB_ENTRANCE, $08, $02
+ db $0E, $1A, PSYCHIC_CLUB_ENTRANCE, $0A, $02
+ db $00, $00
ScienceClubEntranceWarpData: ; 1c25b (7:425b)
- db $08,$10,OVERWORLD_MAP, $00,$00
- db $0A,$10,OVERWORLD_MAP, $00,$00
- db $00,$06,SCIENCE_CLUB_LOBBY,$18,$0A
- db $00,$08,SCIENCE_CLUB_LOBBY,$18,$0C
- db $08,$00,SCIENCE_CLUB, $0C,$1C
- db $0A,$00,SCIENCE_CLUB, $0E,$1C
- db $00,$00
+ db $08, $10, OVERWORLD_MAP, $00, $00
+ db $0A, $10, OVERWORLD_MAP, $00, $00
+ db $00, $06, SCIENCE_CLUB_LOBBY, $18, $0A
+ db $00, $08, SCIENCE_CLUB_LOBBY, $18, $0C
+ db $08, $00, SCIENCE_CLUB, $0C, $1C
+ db $0A, $00, SCIENCE_CLUB, $0E, $1C
+ db $00, $00
ScienceClubLobbyWarpData: ; 1c27b (7:427b)
- db $1A,$0A,SCIENCE_CLUB_ENTRANCE,$02,$06
- db $1A,$0C,SCIENCE_CLUB_ENTRANCE,$02,$08
- db $00,$00
+ db $1A, $0A, SCIENCE_CLUB_ENTRANCE, $02, $06
+ db $1A, $0C, SCIENCE_CLUB_ENTRANCE, $02, $08
+ db $00, $00
ScienceClubWarpData: ; 1c287 (7:4287)
- db $0C,$1E,SCIENCE_CLUB_ENTRANCE,$08,$02
- db $0E,$1E,SCIENCE_CLUB_ENTRANCE,$0A,$02
- db $00,$00
+ db $0C, $1E, SCIENCE_CLUB_ENTRANCE, $08, $02
+ db $0E, $1E, SCIENCE_CLUB_ENTRANCE, $0A, $02
+ db $00, $00
FireClubEntranceWarpData: ; 1c293 (7:4293)
- db $08,$10,OVERWORLD_MAP, $00,$00
- db $0A,$10,OVERWORLD_MAP, $00,$00
- db $00,$06,FIRE_CLUB_LOBBY,$18,$0A
- db $00,$08,FIRE_CLUB_LOBBY,$18,$0C
- db $08,$00,FIRE_CLUB, $0C,$1C
- db $0A,$00,FIRE_CLUB, $0E,$1C
- db $00,$00
+ db $08, $10, OVERWORLD_MAP, $00, $00
+ db $0A, $10, OVERWORLD_MAP, $00, $00
+ db $00, $06, FIRE_CLUB_LOBBY, $18, $0A
+ db $00, $08, FIRE_CLUB_LOBBY, $18, $0C
+ db $08, $00, FIRE_CLUB, $0C, $1C
+ db $0A, $00, FIRE_CLUB, $0E, $1C
+ db $00, $00
FireClubLobbyWarpData: ; 1c2b3 (7:42b3)
- db $1A,$0A,FIRE_CLUB_ENTRANCE,$02,$06
- db $1A,$0C,FIRE_CLUB_ENTRANCE,$02,$08
- db $00,$00
+ db $1A, $0A, FIRE_CLUB_ENTRANCE, $02, $06
+ db $1A, $0C, FIRE_CLUB_ENTRANCE, $02, $08
+ db $00, $00
FireClubWarpData: ; 1c2bf (7:42bf)
- db $0C,$1E,FIRE_CLUB_ENTRANCE,$08,$02
- db $0E,$1E,FIRE_CLUB_ENTRANCE,$0A,$02
- db $00,$00
+ db $0C, $1E, FIRE_CLUB_ENTRANCE, $08, $02
+ db $0E, $1E, FIRE_CLUB_ENTRANCE, $0A, $02
+ db $00, $00
ChallengeHallEntranceWarpData: ; 1c2cb (7:42cb)
- db $08,$10,OVERWORLD_MAP, $00,$00
- db $0A,$10,OVERWORLD_MAP, $00,$00
- db $00,$06,CHALLENGE_HALL_LOBBY,$18,$0A
- db $00,$08,CHALLENGE_HALL_LOBBY,$18,$0C
- db $08,$00,CHALLENGE_HALL, $0E,$1C
- db $0A,$00,CHALLENGE_HALL, $10,$1C
- db $00,$00
+ db $08, $10, OVERWORLD_MAP, $00, $00
+ db $0A, $10, OVERWORLD_MAP, $00, $00
+ db $00, $06, CHALLENGE_HALL_LOBBY, $18, $0A
+ db $00, $08, CHALLENGE_HALL_LOBBY, $18, $0C
+ db $08, $00, CHALLENGE_HALL, $0E, $1C
+ db $0A, $00, CHALLENGE_HALL, $10, $1C
+ db $00, $00
ChallengeHallLobbyWarpData: ; 1c2eb (7:42eb)
- db $1A,$0A,CHALLENGE_HALL_ENTRANCE,$02,$06
- db $1A,$0C,CHALLENGE_HALL_ENTRANCE,$02,$08
- db $00,$00
+ db $1A, $0A, CHALLENGE_HALL_ENTRANCE, $02, $06
+ db $1A, $0C, CHALLENGE_HALL_ENTRANCE, $02, $08
+ db $00, $00
ChallengeHallWarpData: ; 1c2f7 (7:42f7)
- db $0E,$1E,CHALLENGE_HALL_ENTRANCE,$08,$02
- db $10,$1E,CHALLENGE_HALL_ENTRANCE,$0A,$02
- db $00,$00
+ db $0E, $1E, CHALLENGE_HALL_ENTRANCE, $08, $02
+ db $10, $1E, CHALLENGE_HALL_ENTRANCE, $0A, $02
+ db $00, $00
PokemonDomeEntranceWarpData: ; 1c303 (7:4303)
- db $0E,$10,OVERWORLD_MAP,$00,$00
- db $10,$10,OVERWORLD_MAP,$00,$00
- db $16,$00,POKEMON_DOME, $0E,$1C
- db $18,$00,POKEMON_DOME, $10,$1C
- db $00,$00
+ db $0E, $10, OVERWORLD_MAP, $00, $00
+ db $10, $10, OVERWORLD_MAP, $00, $00
+ db $16, $00, POKEMON_DOME, $0E, $1C
+ db $18, $00, POKEMON_DOME, $10, $1C
+ db $00, $00
PokemonDomeWarpData: ; 1c319 (7:4319)
- db $0E,$1E,POKEMON_DOME_ENTRANCE,$16,$02
- db $10,$1E,POKEMON_DOME_ENTRANCE,$18,$02
- db $0E,$00,HALL_OF_HONOR, $0A,$16
- db $10,$00,HALL_OF_HONOR, $0C,$16
- db $00,$00
+ db $0E, $1E, POKEMON_DOME_ENTRANCE, $16, $02
+ db $10, $1E, POKEMON_DOME_ENTRANCE, $18, $02
+ db $0E, $00, HALL_OF_HONOR, $0A, $16
+ db $10, $00, HALL_OF_HONOR, $0C, $16
+ db $00, $00
HallOfHonorWarpData: ; 1c32f (7:432f)
- db $0A,$18,POKEMON_DOME,$0E,$02
- db $0C,$18,POKEMON_DOME,$10,$02
- db $00,$00
+ db $0A, $18, POKEMON_DOME, $0E, $02
+ db $0C, $18, POKEMON_DOME, $10, $02
+ db $00, $00
diff --git a/src/engine/bank01.asm b/src/engine/bank01.asm
index 45fc576..adc73bb 100644
--- a/src/engine/bank01.asm
+++ b/src/engine/bank01.asm
@@ -8436,8 +8436,8 @@ Func_7594: ; 7594 (1:7594)
farcall Func_1a61f
ret
-Func_7599: ; 7599 (1:7599)
- farcall Func_1a68d
+OpenBoosterPack: ; 7599 (1:7599)
+ farcall _OpenBoosterPack
ret
rept $a62
diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm
index 19d60f1..767e133 100644
--- a/src/engine/bank04.asm
+++ b/src/engine/bank04.asm
@@ -125,20 +125,20 @@ GiveBoosterPack: ; 1031b (4:431b)
ld [wTextBoxFrameType], a
pop bc
push bc
- ld b, $0
- ld hl, Unknown_103a5
+ ld b, 0
+ ld hl, BoosterTypes
add hl, bc
ld a, [hl]
ld c, a
add a
add a
ld c, a
- ld hl, Unknown_103c2
+ ld hl, BoosterScenesAndNameTexts
add hl, bc
ld a, [hli]
push hl
- ld bc, $0600
- call Func_130ca
+ lb bc, 6, 0
+ call LoadBoosterGfx
pop hl
ld a, [hli]
ld [wTxRam3], a
@@ -157,10 +157,10 @@ GiveBoosterPack: ; 1031b (4:431b)
farcall GenerateBoosterPack
ldtx hl, ReceivedBoosterPackText
ld a, [wAnotherBoosterPack]
- cp $1
- jr nz, .asm_10373
+ cp TRUE
+ jr nz, .first_booster
ldtx hl, AndAnotherBoosterPackText
-.asm_10373
+.first_booster
call PrintScrollableText_NoTextBoxLabel
call WaitForSongToFinish
call ResumeSong
@@ -173,18 +173,56 @@ GiveBoosterPack: ; 1031b (4:431b)
ld [wVBlankOAMCopyToggle], a
ld a, $4
ld [wTextBoxFrameType], a
- farcall Func_7599
+ farcall OpenBoosterPack
farcall WhiteOutDMGPals
call DoFrameIfLCDEnabled
pop af
ld [wd291], a
ret
-Unknown_103a5: ; 103a5 (4:43a5)
- INCROM $103a5, $103c2
-
-Unknown_103c2: ; 103c2 (4:43c2)
- INCROM $103c2, $103d2
+BoosterTypes: ; 103a5 (4:43a5)
+ db BOOSTER_COLOSSEUM ; BOOSTER_COLOSSEUM_NEUTRAL
+ db BOOSTER_COLOSSEUM ; BOOSTER_COLOSSEUM_GRASS
+ db BOOSTER_COLOSSEUM ; BOOSTER_COLOSSEUM_FIRE
+ db BOOSTER_COLOSSEUM ; BOOSTER_COLOSSEUM_WATER
+ db BOOSTER_COLOSSEUM ; BOOSTER_COLOSSEUM_LIGHTNING
+ db BOOSTER_COLOSSEUM ; BOOSTER_COLOSSEUM_FIGHTING
+ db BOOSTER_COLOSSEUM ; BOOSTER_COLOSSEUM_TRAINER
+ db BOOSTER_EVOLUTION ; BOOSTER_EVOLUTION_NEUTRAL
+ db BOOSTER_EVOLUTION ; BOOSTER_EVOLUTION_GRASS
+ db BOOSTER_EVOLUTION ; BOOSTER_EVOLUTION_FIRE
+ db BOOSTER_EVOLUTION ; BOOSTER_EVOLUTION_WATER
+ db BOOSTER_EVOLUTION ; BOOSTER_EVOLUTION_FIGHTING
+ db BOOSTER_EVOLUTION ; BOOSTER_EVOLUTION_PSYCHIC
+ db BOOSTER_EVOLUTION ; BOOSTER_EVOLUTION_TRAINER
+ db BOOSTER_MYSTERY ; BOOSTER_MYSTERY_NEUTRAL
+ db BOOSTER_MYSTERY ; BOOSTER_MYSTERY_GRASS_COLORLESS
+ db BOOSTER_MYSTERY ; BOOSTER_MYSTERY_WATER_COLORLESS
+ db BOOSTER_MYSTERY ; BOOSTER_MYSTERY_LIGHTNING_COLORLESS
+ db BOOSTER_MYSTERY ; BOOSTER_MYSTERY_FIGHTING_COLORLESS
+ db BOOSTER_MYSTERY ; BOOSTER_MYSTERY_TRAINER_COLORLESS
+ db BOOSTER_LABORATORY ; BOOSTER_LABORATORY_NEUTRAL
+ db BOOSTER_LABORATORY ; BOOSTER_LABORATORY_GRASS
+ db BOOSTER_LABORATORY ; BOOSTER_LABORATORY_WATER
+ db BOOSTER_LABORATORY ; BOOSTER_LABORATORY_PSYCHIC
+ db BOOSTER_LABORATORY ; BOOSTER_LABORATORY_TRAINER
+ db BOOSTER_COLOSSEUM ; BOOSTER_ENERGY_LIGHTNING_FIRE
+ db BOOSTER_COLOSSEUM ; BOOSTER_ENERGY_WATER_FIGHTING
+ db BOOSTER_COLOSSEUM ; BOOSTER_ENERGY_GRASS_PSYCHIC
+ db BOOSTER_COLOSSEUM ; BOOSTER_ENERGY_RANDOM
+
+BoosterScenesAndNameTexts: ; 103c2 (4:43c2)
+ db SCENE_COLOSSEUM_BOOSTER, SCENE_COLOSSEUM_BOOSTER
+ tx ColosseumBoosterText
+
+ db SCENE_EVOLUTION_BOOSTER, SCENE_EVOLUTION_BOOSTER
+ tx EvolutionBoosterText
+
+ db SCENE_MYSTERY_BOOSTER, SCENE_MYSTERY_BOOSTER
+ tx MysteryBoosterText
+
+ db SCENE_LABORATORY_BOOSTER, SCENE_LABORATORY_BOOSTER
+ tx LaboratoryBoosterText
Func_103d2: ; 103d2 (4:43d2)
INCROM $103d2, $103d3
@@ -552,7 +590,7 @@ OverworldMap_CursorTransitions: ; 10ebc (4:4ebc)
Func_10ef0: ; 10ef0 (4:4ef0)
call Func_10efd
- ld c, $02
+ ld c, SPRITE_ANIM_COORD_X
call GetSpriteAnimBufferProperty
ld a, d
ld [hli], a
@@ -2000,14 +2038,600 @@ Func_12c4f: ; 12c4f (4:6c4f)
Func_12c5e: ; 12c5e (4:6c5e)
INCROM $12c5e, $12c7f
-Func_12c7f: ; 12c7f (4:6c7f)
- INCROM $12c7f, $12fc6
+; input:
+; a = scene ID (SCENE_* constant)
+; b = base X position of scene in tiles
+; c = base Y position of scene in tiles
+_LoadScene: ; 12c7f (4:6c7f)
+ push hl
+ push bc
+ push de
+ ld e, a
+ ld a, [wCurTilemap]
+ push af
+ ld a, [wd291]
+ push af
+ ld a, e
+ push bc
+ push af
+ ld a, b
+ add a
+ add a
+ add a
+ add $08
+ ld [wSceneBaseX], a
+ ld a, c
+ add a
+ add a
+ add a
+ add $10
+ ld [wSceneBaseY], a
+ pop af
+ add a
+ ld c, a
+ ld b, 0
+ ld hl, ScenePointers
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hli]
+ ld [wSceneSGBPacketPtr], a
+ ld a, [hli]
+ ld [wSceneSGBPacketPtr + 1], a
+ ld a, [hli]
+ ld [wSceneSGBRoutinePtr], a
+ ld a, [hli]
+ ld [wSceneSGBRoutinePtr + 1], a
+ call Func_12f45
+ ld a, %11100100
+ ld [wBGP], a
+ ld a, [wConsole]
+ cp CONSOLE_CGB
+ ld a, [hli]
+ jr nz, .not_cgb_1
+ ld a, [hl]
+.not_cgb_1
+ inc hl
+ push af
+ xor a
+ ld [wd4ca], a
+ ld a, [hli]
+ ld [wd4cb], a
+ ld [wd291], a
+ pop af
+ farcall Func_803c9
+ ld a, [wConsole]
+ cp CONSOLE_CGB
+ ld a, [hli]
+ jr nz, .not_cgb_2
+ ld a, [hl]
+.not_cgb_2
+ inc hl
+ ld [wCurTilemap], a
+ pop bc
+ push bc
+ farcall Func_8007e
+ pop bc
+ call Func_12f5b
+ ld a, [hli]
+ ld [wd4ca], a
+ ld a, [hli]
+ ld [wd4cb], a
+ farcall LoadTilesetGfx
+.asm_12d02
+ ld a, [hli]
+ or a
+ jr z, .done
+ ld [wSceneSprite], a
+ ld a, [wConsole]
+ cp CONSOLE_CGB
+ ld a, [hli]
+ jr nz, .not_cgb_3
+ ld a, [hl]
+.not_cgb_3
+ inc hl
+ push af
+ xor a
+ ld [wd4ca], a
+ ld a, [hli]
+ ld [wd4cb], a
+ pop af
+ farcall LoadPaletteData
+.asm_12d21
+ ld a, [hli]
+ or a
+ jr z, .asm_12d02
+ dec hl
+ ld a, [wConsole]
+ cp CONSOLE_CGB
+ ld a, [hli]
+ jr nz, .not_cgb_4
+ ld a, [hl]
+.not_cgb_4
+ inc hl
+ ld [wSceneSpriteAnimation], a
+ ld a, [wSceneSprite]
+ farcall CreateSpriteAndAnimBufferEntry
+ ld a, [wWhichSprite]
+ ld [wSceneSpriteIndex], a
+ push hl
+ ld c, SPRITE_ANIM_COORD_X
+ call GetSpriteAnimBufferProperty
+ ld e, l
+ ld d, h
+ pop hl
+ ld a, [wSceneBaseX]
+ add [hl]
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [wSceneBaseY]
+ add [hl]
+ ld [de], a
+ inc hl
+ ld a, [wSceneSpriteAnimation]
+ cp $ff
+ jr z, .no_animation
+ farcall StartSpriteAnimation
+.no_animation
+ jr .asm_12d21
+.done
+ pop af
+ ld [wd291], a
+ pop af
+ ld [wCurTilemap], a
+ pop de
+ pop bc
+ pop hl
+ ret
+
+ScenePointers: ; 12d6f (4:6d6f)
+ dw Scene_TitleScreen
+ dw Scene_ColosseumBooster
+ dw Scene_EvolutionBooster
+ dw Scene_MysteryBooster
+ dw Scene_LaboratoryBooster
+ dw Scene_CharizardIntro
+ dw Scene_ScytherIntro
+ dw Scene_AerodactylIntro
+ dw Scene_GradientBlackAndRed
+ dw Scene_GradientWhiteAndRed
+ dw Scene_GradientBlackAndGreen
+ dw Scene_GradientWhiteAndGreen
+ dw Scene_ColorWheel
+ dw Scene_ColorTest
+ dw Scene_GameBoyLinkConnecting
+ dw Scene_GameBoyLinkTransmitting
+ dw Scene_GameBoyLinkNotConnected
+ dw Scene_GameBoyPrinterTransmitting
+ dw Scene_GameBoyPrinterNotConnected
+ dw Scene_CardPop
+ dw Scene_CardPopError
+ dw Scene_JapaneseTitleScreen
+ dw Scene_Nintendo
+ dw Scene_Companies
+ dw Scene_JapaneseTitleScreen2
+ dw Scene_Copyright
+ dw Scene_JapaneseTitleScreen2
+ dw Scene_ColorPalette
+
+; format:
+; dw compressed sgb packet
+; dw custom sgb packet loading routine
+; db palette (non-cgb), palette (cgb), palette offset
+; db tilemap (non-cgb), tilemap (cgb), vram tile offset, vram0 or vram1
+; db sprite
+;
+; if sprite is non-zero:
+; db palette (non-cgb), palette (cgb), palette offset
+; db animation (non-cgb), animation (cgb), x offset, y offset
+; dw 0-terminator
+
+Scene_TitleScreen: ; 12da7 (4:6da7)
+ dw SGBData_TitleScreen
+ dw NULL
+ db PALETTE_25, PALETTE_25, $00
+ db TILEMAP_TITLE_SCREEN_5, TILEMAP_TITLE_SCREEN_6, $00, $00
+ db $00
+
+Scene_JapaneseTitleScreen: ; 12db3 (4:6db3)
+ dw SGBData_TitleScreen
+ dw NULL
+ db PALETTE_25, PALETTE_25, $00
+ db TILEMAP_TITLE_SCREEN_1, TILEMAP_TITLE_SCREEN_2, $80, $00
+ db $00
+
+Scene_ColosseumBooster: ; 12dbf (4:6dbf)
+ dw SGBData_ColosseumBooster
+ dw NULL
+ db PALETTE_108, PALETTE_101, $01
+ db TILEMAP_COLOSSEUM, TILEMAP_COLOSSEUM_CGB, $80, $00
+ db SPRITE_BOOSTER_PACK_OAM
+ db PALETTE_117, PALETTE_117, $00
+ db $ff, $bd, $00, $00
+ dw $00
+
+Scene_EvolutionBooster: ; 12dd4 (4:6dd4)
+ dw SGBData_EvolutionBooster
+ dw NULL
+ db PALETTE_108, PALETTE_102, $01
+ db TILEMAP_EVOLUTION, TILEMAP_EVOLUTION_CGB, $80, $00
+ db SPRITE_BOOSTER_PACK_OAM
+ db PALETTE_117, PALETTE_117, $00
+ db $ff, $bd, $00, $00
+ dw $00
+
+Scene_MysteryBooster: ; 12de9 (4:6de9)
+ dw SGBData_MysteryBooster
+ dw NULL
+ db PALETTE_108, PALETTE_103, $01
+ db TILEMAP_MYSTERY, TILEMAP_MYSTERY_CGB, $80, $00
+ db SPRITE_BOOSTER_PACK_OAM
+ db PALETTE_117, PALETTE_117, $00
+ db $ff, $bd, $00, $00
+ dw $00
+
+Scene_LaboratoryBooster: ; 12dfe (4:6dfe)
+ dw SGBData_LaboratoryBooster
+ dw NULL
+ db PALETTE_108, PALETTE_104, $01
+ db TILEMAP_LABORATORY, TILEMAP_LABORATORY_CGB, $80, $00
+ db SPRITE_BOOSTER_PACK_OAM
+ db PALETTE_117, PALETTE_117, $00
+ db $ff, $bd, $00, $00
+ dw $00
+
+Scene_CharizardIntro: ; 12e13 (4:6e13)
+ dw SGBData_CharizardIntro
+ dw NULL
+ db PALETTE_108, PALETTE_105, $01
+ db TILEMAP_CHARIZARD_INTRO, TILEMAP_CHARIZARD_INTRO_CGB, $80, $00
+ db $00
+
+Scene_ScytherIntro: ; 12e1f (4:6e1f)
+ dw SGBData_ScytherIntro
+ dw NULL
+ db PALETTE_108, PALETTE_106, $01
+ db TILEMAP_SCYTHER_INTRO, TILEMAP_SCYTHER_INTRO_CGB, $80, $00
+ db $00
+
+Scene_AerodactylIntro: ; 12e2b (4:6e2b)
+ dw SGBData_AerodactylIntro
+ dw NULL
+ db PALETTE_108, PALETTE_107, $01
+ db TILEMAP_AERODACTYL_INTRO, TILEMAP_AERODACTYL_INTRO_CGB, $80, $00
+ db $00
+
+Scene_GradientBlackAndRed: ; 12e37 (4:6e37)
+ dw NULL
+ dw NULL
+ db PALETTE_94, PALETTE_94, $00
+ db TILEMAP_SOLID_TILES_1, TILEMAP_SOLID_TILES_1, $01, $00
+ db $00
+
+Scene_GradientWhiteAndRed: ; 12e43 (4:6e43)
+ dw NULL
+ dw NULL
+ db PALETTE_95, PALETTE_95, $00
+ db TILEMAP_SOLID_TILES_1, TILEMAP_SOLID_TILES_1, $01, $00
+ db $00
+
+Scene_GradientBlackAndGreen: ; 12e4f (4:6e4f)
+ dw NULL
+ dw NULL
+ db PALETTE_96, PALETTE_96, $00
+ db TILEMAP_SOLID_TILES_1, TILEMAP_SOLID_TILES_1, $01, $00
+ db $00
+
+Scene_GradientWhiteAndGreen: ; 12e5b (4:6e5b)
+ dw NULL
+ dw NULL
+ db PALETTE_97, PALETTE_97, $00
+ db TILEMAP_SOLID_TILES_1, TILEMAP_SOLID_TILES_1, $01, $00
+ db $00
+
+Scene_ColorWheel: ; 12e67 (4:6e67)
+ dw NULL
+ dw NULL
+ db PALETTE_98, PALETTE_98, $00
+ db TILEMAP_SOLID_TILES_2, TILEMAP_SOLID_TILES_2, $01, $00
+ db $00
+
+Scene_ColorTest: ; 12e73 (4:6e73)
+ dw NULL
+ dw NULL
+ db PALETTE_99, PALETTE_99, $00
+ db TILEMAP_SOLID_TILES_3, TILEMAP_SOLID_TILES_3, $01, $00
+ db $00
+
+Scene_ColorPalette: ; 12e7f (4:6e7f)
+ dw NULL
+ dw NULL
+ db PALETTE_110, PALETTE_110, $00
+ db TILEMAP_SOLID_TILES_4, TILEMAP_SOLID_TILES_4, $fc, $01
+ db $00
+
+Scene_GameBoyLinkConnecting: ; 12e8b (4:6e8b)
+ dw SGBData_GameBoyLink
+ dw NULL
+ db PALETTE_111, PALETTE_111, $00
+ db TILEMAP_CARD_POP_2_UNKNOWN_2, TILEMAP_CARD_POP_2_UNKNOWN_1, $90, $00
+ db $00
+
+Scene_GameBoyLinkTransmitting: ; 12e97 (4:6e97)
+ dw SGBData_GameBoyLink
+ dw NULL
+ db PALETTE_111, PALETTE_111, $00
+ db TILEMAP_CARD_POP_2_CGB, TILEMAP_CARD_POP_2, $90, $00
+ db SPRITE_DUEL_52
+ db PALETTE_114, PALETTE_114, $00
+ db $b3, $b0, $50, $50
+ dw $00
+
+Scene_GameBoyLinkNotConnected: ; 12eac (4:6eac)
+ dw SGBData_GameBoyLink
+ dw NULL
+ db PALETTE_111, PALETTE_111, $00
+ db TILEMAP_CARD_POP_2_CGB, TILEMAP_CARD_POP_2, $90, $00
+ db SPRITE_DUEL_52
+ db PALETTE_114, PALETTE_114, $00
+ db $b4, $b1, $50, $50
+ dw $00
+
+Scene_GameBoyPrinterTransmitting: ; 12ec1 (4:6ec1)
+ dw SGBData_GameBoyPrinter
+ dw Func_12f8c
+ db PALETTE_112, PALETTE_112, $00
+ db TILEMAP_CARD_POP_3_CGB, TILEMAP_CARD_POP_3, $90, $00
+ db SPRITE_DUEL_53
+ db PALETTE_115, PALETTE_115, $00
+ db $b7, $b5, $50, $30
+ dw $00
+
+Scene_GameBoyPrinterNotConnected: ; 12ed6 (4:6ed6)
+ dw SGBData_GameBoyPrinter
+ dw Func_12f8c
+ db PALETTE_112, PALETTE_112, $00
+ db TILEMAP_CARD_POP_3_CGB, TILEMAP_CARD_POP_3, $90, $00
+ db SPRITE_DUEL_53
+ db PALETTE_115, PALETTE_115, $00
+ db $b8, $b6, $50, $30
+ dw $00
+
+Scene_CardPop: ; 12eeb (4:6eeb)
+ dw SGBData_CardPop
+ dw Func_12fa9
+ db PALETTE_113, PALETTE_113, $00
+ db TILEMAP_CARD_POP_1_CGB, TILEMAP_CARD_POP_1, $80, $00
+ db SPRITE_DUEL_54
+ db PALETTE_116, PALETTE_116, $00
+ db $bb, $b9, $50, $40
+ dw $00
+
+Scene_CardPopError: ; 12f00 (4:6f00)
+ dw SGBData_CardPop
+ dw Func_12fa9
+ db PALETTE_113, PALETTE_113, $00
+ db TILEMAP_CARD_POP_1_CGB, TILEMAP_CARD_POP_1, $80, $00
+ db SPRITE_DUEL_54
+ db PALETTE_116, PALETTE_116, $00
+ db $bc, $ba, $50, $40
+ dw $00
+
+Scene_Nintendo: ; 12f15 (4:6f15)
+ dw NULL
+ dw NULL
+ db PALETTE_27, PALETTE_27, $00
+ db TILEMAP_NINTENDO, TILEMAP_NINTENDO, $00, $00
+ db $00
+
+Scene_Companies: ; 12f21 (4:6f21)
+ dw NULL
+ dw NULL
+ db PALETTE_28, PALETTE_28, $00
+ db TILEMAP_COMPANIES, TILEMAP_COMPANIES, $00, $00
+ db $00
+
+Scene_Copyright: ; 12f2d (4:6f2d)
+ dw NULL
+ dw NULL
+ db PALETTE_26, PALETTE_26, $00
+ db TILEMAP_COPYRIGHT, TILEMAP_COPYRIGHT_CGB, $00, $00
+ db $00
+
+Scene_JapaneseTitleScreen2: ; 12f39 (4:6f39)
+ dw NULL
+ dw NULL
+ db PALETTE_109, PALETTE_100, $00
+ db TILEMAP_TITLE_SCREEN_3, TILEMAP_TITLE_SCREEN_4, $01, $00
+ db $00
+
+Func_12f45: ; 12f45 (4:6f45)
+ ld a, [wConsole]
+ cp CONSOLE_SGB
+ ret nz
+ push hl
+ ld hl, wSceneSGBPacketPtr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ jr z, .skip
+ farcall Func_703cb
+.skip
+ pop hl
+ ret
+
+Func_12f5b: ; 12f5b (4:6f5b)
+ ld a, [wConsole]
+ cp CONSOLE_SGB
+ ret nz
+ push hl
+ push bc
+ push de
+ ld hl, wSceneSGBPacketPtr
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_12f88
+ ld hl, wSceneSGBRoutinePtr + 1
+ ld a, [hld]
+ or [hl]
+ jr z, .asm_12f7a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call CallHL2
+ jr .asm_12f88
+.asm_12f7a
+ ld l, $0a
+ ld a, [wBGMapWidth]
+ ld d, a
+ ld a, [wBGMapHeight]
+ ld e, a
+ farcall Func_70498
+.asm_12f88
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_12f8c: ; 12f8c (4:6f8c)
+ push hl
+ push bc
+ push de
+ ld hl, SGCPacket_GameBoyPrinter
+ call SendSGB
+ pop de
+ pop bc
+ pop hl
+ ret
+
+SGCPacket_GameBoyPrinter: ; 12f99 (4:6f99)
+ INCROM $12f99, $12fa9
+
+Func_12fa9: ; 12fa9 (4:6fa9)
+ push hl
+ push bc
+ push de
+ ld hl, SGCPacket_CardPop
+ call SendSGB
+ pop de
+ pop bc
+ pop hl
+ ret
+
+SGCPacket_CardPop: ; 12fb6 (4:6fb6)
+ INCROM $12fb6, $12fc6
Func_12fc6: ; 12fc6 (4:6fc6)
INCROM $12fc6, $130ca
-Func_130ca: ; 130ca (4:70ca)
- INCROM $130ca, $131b3
+LoadBoosterGfx: ; 130ca (4:70ca)
+ push hl
+ push bc
+ push de
+ ld e, a
+ ld a, [wCurTilemap]
+ push af
+ push bc
+ ld a, e
+ call _LoadScene
+ call FlushAllPalettes
+ call SetBoosterLogoOAM
+ pop bc
+ pop af
+ ld [wCurTilemap], a
+ pop de
+ pop bc
+ pop hl
+ ret
+
+SetBoosterLogoOAM: ; 130e6 (4:70e6)
+ ld a, [wConsole]
+ cp CONSOLE_CGB
+ ret nz
+ push hl
+ push bc
+ push de
+ push bc
+ xor a
+ ld [wd4cb], a
+ ld [wd4ca], a
+ ld a, SPRITE_BOOSTER_PACK_OAM
+ farcall Func_8025b
+ pop bc
+ call ZeroObjectPositions
+ ld hl, BoosterLogoOAM
+ ld c, [hl]
+ inc hl
+.oam_loop
+ push bc
+ ldh a, [hSCX]
+ ld d, a
+ ldh a, [hSCY]
+ ld e, a
+ ld a, [wSceneBaseY]
+ sub e
+ add [hl]
+ ld e, a
+ inc hl
+ ld a, [wSceneBaseX]
+ sub d
+ add [hl]
+ ld d, a
+ inc hl
+ ld a, [wd61f]
+ add [hl]
+ ld c, a
+ inc hl
+ ld b, [hl]
+ inc hl
+ call SetOneObjectAttributes
+ pop bc
+ dec c
+ jr nz, .oam_loop
+ ld hl, wVBlankOAMCopyToggle
+ inc [hl]
+ pop de
+ pop bc
+ pop hl
+ ret
+
+BoosterLogoOAM: ; 13132 (4:7132)
+ db $20
+ db $00, $00, $00, $00
+ db $00, $08, $01, $00
+ db $00, $10, $02, $00
+ db $00, $18, $03, $00
+ db $00, $20, $04, $00
+ db $00, $28, $05, $00
+ db $00, $30, $06, $00
+ db $00, $38, $07, $00
+ db $08, $00, $10, $00
+ db $08, $08, $11, $00
+ db $08, $10, $12, $00
+ db $08, $18, $13, $00
+ db $08, $20, $14, $00
+ db $08, $28, $15, $00
+ db $08, $30, $16, $00
+ db $08, $38, $17, $00
+ db $10, $00, $08, $00
+ db $10, $08, $09, $00
+ db $10, $10, $0A, $00
+ db $10, $18, $0B, $00
+ db $10, $20, $0C, $00
+ db $10, $28, $0D, $00
+ db $10, $30, $0E, $00
+ db $10, $38, $0F, $00
+ db $18, $00, $18, $00
+ db $18, $08, $19, $00
+ db $18, $10, $1A, $00
+ db $18, $18, $1B, $00
+ db $18, $20, $1C, $00
+ db $18, $28, $1D, $00
+ db $18, $30, $1E, $00
+ db $18, $38, $1F, $00
Func_131b3: ; 131b3 (4:71b3)
INCROM $131b3, $131d3
diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm
index fb5b6b6..c96d2a1 100644
--- a/src/engine/bank06.asm
+++ b/src/engine/bank06.asm
@@ -1626,8 +1626,8 @@ Func_1a61f: ; 1a61f (6:661f)
bank1call OpenCardPage_FromHand
ret
-Func_1a68d: ; 1a68d (6:668d)
- ld a, $c2 ; player's turn
+_OpenBoosterPack: ; 1a68d (6:668d)
+ ld a, PLAYER_TURN
ldh [hWhoseTurn], a
ld h, a
ld l, $00
diff --git a/src/engine/bank07.asm b/src/engine/bank07.asm
index 3755410..376f2f1 100644
--- a/src/engine/bank07.asm
+++ b/src/engine/bank07.asm
@@ -1668,9 +1668,9 @@ Titlescreen_1d386: ; 1d386 (7:5386)
call DisableLCD
ld a, MUSIC_TITLESCREEN
call PlaySong
- ld bc, $0000
- ld a, $0
- call Func_3df3
+ lb bc, 0, 0
+ ld a, SCENE_TITLE_SCREEN
+ call LoadScene
call Func_1d59c
.asm_1d39f
call Func_3ca0
diff --git a/src/engine/bank1c.asm b/src/engine/bank1c.asm
index 08c607f..e9639a7 100644
--- a/src/engine/bank1c.asm
+++ b/src/engine/bank1c.asm
@@ -331,4 +331,118 @@ Unknown_7024a: ; 7024a (1c:424a)
INCROM $7024a, $7036a
Func_7036a: ; 7036a (1c:436a)
- INCROM $7036a, $74000
+ INCROM $7036a, $703cb
+
+Func_703cb: ; 703cb (1c:43cb)
+ ld a, [wConsole]
+ cp CONSOLE_SGB
+ ret nz
+ push hl
+ push bc
+ push de
+ call Func_70403
+ ld hl, wBGMapBuffer
+ ld de, wTempSGBPacket + $1
+ ld bc, $8
+ call CopyDataHLtoDE
+ ld hl, wBGMapBuffer + $22
+ ld de, wTempSGBPacket + $9
+ ld bc, $6
+ call CopyDataHLtoDE
+ xor a
+ ld [wTempSGBPacket + $f], a
+ ld hl, wTempSGBPacket
+ ld a, $09
+ ld [hl], a
+ call Func_704c7
+ call SendSGB
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_70403: ; 70403 (1c:4403)
+ push hl
+ push bc
+ push de
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ inc hl
+ push bc
+ ld e, l
+ ld d, h
+ ld b, HIGH(wc000)
+ call InitBGMapDecompression
+ pop bc
+ ld de, wBGMapBuffer
+ call DecompressBGMap
+ pop de
+ pop bc
+ pop hl
+ ret
+; 0x7041d
+
+ INCROM $7041d, $70498
+
+Func_70498: ; 70498 (1c:4498)
+ INCROM $70498, $704c7
+
+Func_704c7: ; 704c7 (1c:44c7)
+ push af
+ push hl
+ inc hl
+ ld a, $9c
+ ld [hli], a
+ ld a, $63
+ ld [hl], a
+ pop hl
+ pop af
+ ret
+; 0x704d3
+
+ INCROM $704d3, $73393
+
+SGBData_CharizardIntro: ; 73393 (1c:7393)
+ dw $20 ; width
+ INCROM $73395, $733b8
+
+SGBData_ScytherIntro: ; 733b8 (1c:73b8)
+ dw $20 ; width
+ INCROM $733ba, $733dd
+
+SGBData_AerodactylIntro: ; 733dd (1c:73dd)
+ dw $20 ; width
+ INCROM $733df, $73402
+
+SGBData_ColosseumBooster: ; 73402 (1c:7402)
+ dw $20 ; width
+ INCROM $73404, $73427
+
+SGBData_EvolutionBooster: ; 73427 (1c:7427)
+ dw $20 ; width
+ INCROM $73429, $7344c
+
+SGBData_MysteryBooster: ; 7344c (1c:744c)
+ dw $20 ; width
+ INCROM $7344e, $73471
+
+SGBData_LaboratoryBooster: ; 73471 (1c:7471)
+ dw $20 ; width
+ INCROM $73473, $73aa8
+
+SGBData_GameBoyLink: ; 73aa8 (1c:7aa8)
+ dw $40 ; width
+ INCROM $73aaa, $73ad8
+
+SGBData_CardPop: ; 73ad8 (1c:7ad8)
+ dw $40 ; width
+ INCROM $73ada, $73b05
+
+SGBData_GameBoyPrinter: ; 73b05 (1c:7b05)
+ dw $40 ; width
+ INCROM $73b07, $73b33
+
+SGBData_TitleScreen: ; 73b33 (1c:7b33)
+ dw $40 ; width
+ INCROM $73b35, $74000
diff --git a/src/engine/bank20.asm b/src/engine/bank20.asm
index e4cadba..12bdd54 100644
--- a/src/engine/bank20.asm
+++ b/src/engine/bank20.asm
@@ -42,6 +42,7 @@ Func_80077: ; 80077 (20:4077)
ld [wBGMapCopyMode], a
jr Func_80082
+Func_8007e: ; 8007e (20:407e)
xor a
ld [wBGMapCopyMode], a
; fallthrough
diff --git a/src/engine/effect_functions.asm b/src/engine/effect_functions.asm
index daaf402..f102910 100644
--- a/src/engine/effect_functions.asm
+++ b/src/engine/effect_functions.asm
@@ -7333,7 +7333,7 @@ Gigashock_AISelectEffect: ; 2e6c3 (b:66c3)
ret
.start_selection
-; has more than 3 Bench cards,proceed to sort them
+; has more than 3 Bench cards, proceed to sort them
; by lowest remaining HP to highest, and pick first 3.
call SwapTurn
dec a
diff --git a/src/engine/home.asm b/src/engine/home.asm
index 13089d7..56f4f68 100644
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -11644,22 +11644,22 @@ Func_3de7: ; 3de7 (0:3de7)
pop hl
ret
-Func_3df3: ; 3df3 (0:3df3)
+LoadScene: ; 3df3 (0:3df3)
push af
ldh a, [hBankROM]
push af
push hl
- ld a, BANK(Func_12c7f)
+ ld a, BANK(_LoadScene)
call BankswitchROM
ld hl, sp+$5
ld a, [hl]
- call Func_12c7f
+ call _LoadScene
call FlushAllPalettes
pop hl
pop af
call BankswitchROM
pop af
- ld a, [wd61b]
+ ld a, [wSceneSpriteIndex]
ret
; draws player's portrait at b,c
diff --git a/src/text/text3.asm b/src/text/text3.asm
index 7699e08..a05ca19 100644
--- a/src/text/text3.asm
+++ b/src/text/text3.asm
@@ -1604,19 +1604,19 @@ Text03a6: ; 3f631 (f:7631)
Text03a7: ; 3f643 (f:7643)
done
-Text03a8: ; 3f644 (f:7644)
+ColosseumBoosterText: ; 3f644 (f:7644)
text "COLOSSEUM"
done
-Text03a9: ; 3f64f (f:764f)
+EvolutionBoosterText: ; 3f64f (f:764f)
text "EVOLUTION"
done
-Text03aa: ; 3f65a (f:765a)
+MysteryBoosterText: ; 3f65a (f:765a)
text "MYSTERY"
done
-Text03ab: ; 3f663 (f:7663)
+LaboratoryBoosterText: ; 3f663 (f:7663)
text "LABORATORY"
done
diff --git a/src/text/text_offsets.asm b/src/text/text_offsets.asm
index ff757fe..3f1d87d 100644
--- a/src/text/text_offsets.asm
+++ b/src/text/text_offsets.asm
@@ -937,10 +937,10 @@ TextOffsets:: ; 34000 (d:4000)
textpointer Text03a5 ; 0x03a5
textpointer Text03a6 ; 0x03a6
textpointer Text03a7 ; 0x03a7
- textpointer Text03a8 ; 0x03a8
- textpointer Text03a9 ; 0x03a9
- textpointer Text03aa ; 0x03aa
- textpointer Text03ab ; 0x03ab
+ textpointer ColosseumBoosterText ; 0x03a8
+ textpointer EvolutionBoosterText ; 0x03a9
+ textpointer MysteryBoosterText ; 0x03aa
+ textpointer LaboratoryBoosterText ; 0x03ab
textpointer DrMasonNPCName ; 0x03ac
textpointer RonaldNPCName ; 0x03ad
textpointer IshiharaNPCName ; 0x03ae
diff --git a/src/wram.asm b/src/wram.asm
index 46345f9..8ccd57b 100644
--- a/src/wram.asm
+++ b/src/wram.asm
@@ -2583,17 +2583,34 @@ wSpriteVRAMBuffer:: ; d5d8
wSpriteVRAMBufferSize:: ; d618
ds $1
- ds $2
+wSceneSprite:: ; d619
+ ds $1
-wd61b:: ; d61b
+wSceneSpriteAnimation:: ; d61a
ds $1
- ds $2
+wSceneSpriteIndex:: ; d61b
+ ds $1
+
+; base X position in pixels of loaded scene
+wSceneBaseX:: ; d61c
+ ds $1
+
+; base Y position in pixels of loaded scene
+wSceneBaseY:: ; d61d
+ ds $1
wd61e:: ; d61e
ds $1
- ds $5
+wd61f:: ; d61f
+ ds $1
+
+wSceneSGBPacketPtr:: ; d620
+ ds $2
+
+wSceneSGBRoutinePtr:: ; d622
+ ds $2
wd624:: ; d624
ds $1