summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--audio.asm4
-rwxr-xr-xconstants/hide_show_constants.asm6
-rwxr-xr-xconstants/oam_constants.asm15
-rwxr-xr-xdata/mapObjects/silphco11.asm5
-rwxr-xr-xdata/mapObjects/unknowndungeon1.asm9
-rwxr-xr-xdata/mapObjects/unknowndungeon2.asm9
-rwxr-xr-xdata/mapObjects/unknowndungeon3.asm8
-rw-r--r--data/map_header_banks.asm64
-rw-r--r--data/map_header_pointers.asm78
-rwxr-xr-xdata/sgb_border.asm94
-rwxr-xr-xdata/town_map_entries.asm1
-rwxr-xr-xengine/animated_objects_3e.asm394
-rw-r--r--engine/bank30.binbin0 -> 16384 bytes
-rw-r--r--engine/bank3c.asm8
-rw-r--r--engine/bank3e.asm4495
-rwxr-xr-xengine/printer.asm31
-rwxr-xr-xengine/town_map.asm12
-rw-r--r--gfx/blueversion.pngbin0 -> 116 bytes
-rw-r--r--gfx/pikachu/unknown_e4000.pngbin0 -> 313 bytes
-rw-r--r--gfx/pikachu/unknown_e40cc.pngbin0 -> 143 bytes
-rw-r--r--gfx/pikachu/unknown_e411c.pngbin0 -> 296 bytes
-rw-r--r--gfx/pikachu/unknown_e41d2.pngbin0 -> 210 bytes
-rw-r--r--gfx/pikachu/unknown_e4272.pngbin0 -> 283 bytes
-rw-r--r--gfx/pikachu/unknown_e4323.pngbin0 -> 127 bytes
-rw-r--r--gfx/pikachu/unknown_e4383.pngbin0 -> 305 bytes
-rw-r--r--gfx/pikachu/unknown_e444b.pngbin0 -> 299 bytes
-rw-r--r--gfx/pikachu/unknown_e458b.pngbin0 -> 285 bytes
-rw-r--r--gfx/pikachu/unknown_e463b.pngbin0 -> 113 bytes
-rw-r--r--gfx/pikachu/unknown_e467b.pngbin0 -> 292 bytes
-rw-r--r--gfx/pikachu/unknown_e472e.pngbin0 -> 122 bytes
-rw-r--r--gfx/pikachu/unknown_e476e.pngbin0 -> 329 bytes
-rw-r--r--gfx/pikachu/unknown_e4841.pngbin0 -> 297 bytes
-rw-r--r--gfx/pikachu/unknown_e49d1.pngbin0 -> 308 bytes
-rw-r--r--gfx/pikachu/unknown_e4a99.pngbin0 -> 199 bytes
-rw-r--r--gfx/pikachu/unknown_e4b39.pngbin0 -> 279 bytes
-rw-r--r--gfx/pikachu/unknown_e4bde.pngbin0 -> 152 bytes
-rw-r--r--gfx/pikachu/unknown_e4c3e.pngbin0 -> 256 bytes
-rw-r--r--gfx/pikachu/unknown_e4ce0.pngbin0 -> 302 bytes
-rw-r--r--gfx/pikachu/unknown_e4e70.pngbin0 -> 304 bytes
-rw-r--r--gfx/pikachu/unknown_e5000.pngbin0 -> 285 bytes
-rw-r--r--gfx/pikachu/unknown_e50af.pngbin0 -> 279 bytes
-rw-r--r--gfx/pikachu/unknown_e523f.pngbin0 -> 299 bytes
-rw-r--r--gfx/pikachu/unknown_e52fe.pngbin0 -> 294 bytes
-rw-r--r--gfx/pikachu/unknown_e548e.pngbin0 -> 293 bytes
-rw-r--r--gfx/pikachu/unknown_e5541.pngbin0 -> 292 bytes
-rw-r--r--gfx/pikachu/unknown_e56d1.pngbin0 -> 317 bytes
-rw-r--r--gfx/pikachu/unknown_e5794.pngbin0 -> 333 bytes
-rw-r--r--gfx/pikachu/unknown_e5924.pngbin0 -> 316 bytes
-rw-r--r--gfx/pikachu/unknown_e59ed.pngbin0 -> 308 bytes
-rw-r--r--gfx/pikachu/unknown_e5b7d.pngbin0 -> 325 bytes
-rw-r--r--gfx/pikachu/unknown_e5c4d.pngbin0 -> 321 bytes
-rw-r--r--gfx/pikachu/unknown_e5ddd.pngbin0 -> 286 bytes
-rw-r--r--gfx/pikachu/unknown_e5e90.pngbin0 -> 281 bytes
-rw-r--r--gfx/pikachu/unknown_e6020.pngbin0 -> 283 bytes
-rw-r--r--gfx/pikachu/unknown_e61b0.pngbin0 -> 300 bytes
-rw-r--r--gfx/pikachu/unknown_e6340.pngbin0 -> 303 bytes
-rw-r--r--gfx/pikachu/unknown_e63f7.pngbin0 -> 313 bytes
-rw-r--r--gfx/pikachu/unknown_e6587.pngbin0 -> 287 bytes
-rw-r--r--gfx/pikachu/unknown_e6646.pngbin0 -> 340 bytes
-rw-r--r--gfx/pikachu/unknown_e67d6.pngbin0 -> 177 bytes
-rw-r--r--gfx/pikachu/unknown_e682f.pngbin0 -> 259 bytes
-rw-r--r--gfx/pikachu/unknown_e69bf.pngbin0 -> 317 bytes
-rw-r--r--gfx/pikachu/unknown_e6b4f.pngbin0 -> 281 bytes
-rw-r--r--gfx/pikachu/unknown_e6cdf.pngbin0 -> 254 bytes
-rw-r--r--gfx/pikachu/unknown_e6e6f.pngbin0 -> 226 bytes
-rw-r--r--gfx/pikachu/unknown_e6fff.pngbin0 -> 235 bytes
-rw-r--r--gfx/pikachu/unknown_e718f.pngbin0 -> 288 bytes
-rw-r--r--gfx/pikachu/unknown_e731f.pngbin0 -> 285 bytes
-rw-r--r--gfx/pikachu/unknown_e74af.pngbin0 -> 239 bytes
-rw-r--r--gfx/pikachu/unknown_e763f.pngbin0 -> 259 bytes
-rw-r--r--gfx/pikachu/unknown_e77cf.pngbin0 -> 251 bytes
-rw-r--r--gfx/pikachu/unknown_e7863.pngbin0 -> 297 bytes
-rw-r--r--gfx/pikachu/unknown_e79f3.pngbin0 -> 347 bytes
-rw-r--r--gfx/pikachu/unknown_e7b83.pngbin0 -> 259 bytes
-rw-r--r--gfx/pikachu/unknown_e7d13.pngbin0 -> 281 bytes
-rw-r--r--gfx/pikachu/unknown_f0abf.pngbin0 -> 270 bytes
-rw-r--r--gfx/pikachu/unknown_f0b64.pngbin0 -> 314 bytes
-rw-r--r--gfx/pikachu/unknown_f0cf4.pngbin0 -> 243 bytes
-rw-r--r--gfx/pikachu/unknown_f0d82.pngbin0 -> 230 bytes
-rw-r--r--gfx/tilemaps/sgbborder.mapbin1792 -> 1792 bytes
-rw-r--r--gfx/unknown_f8946.map1
-rw-r--r--gfx/unknown_f90bc.mapbin0 -> 240 bytes
-rw-r--r--gfx/unknown_f91ac.map1
-rw-r--r--gfx/unknown_f91bb.map2
-rw-r--r--gfx/unknown_f91c8.map1
-rw-r--r--gfx/unknown_f9b6e.mapbin0 -> 120 bytes
-rw-r--r--gfx/unknown_f9be6.map1
-rw-r--r--gfx/unknown_f9bf2.map1
-rw-r--r--gfx/unknown_f9c2c.pngbin0 -> 120 bytes
-rw-r--r--gfx/unknown_f9c6c.pngbin0 -> 117 bytes
-rw-r--r--home/audio.asm1
-rw-r--r--macros.asm4
-rwxr-xr-xmain.asm305
-rw-r--r--maps/unknowndungeon1.blk5
-rw-r--r--maps/unknowndungeon2.blk10
-rw-r--r--maps/unknowndungeon3.blk3
-rwxr-xr-xmaps/unusedblocks58d7d.blk2
-rw-r--r--scripts/beach_house.asm2
-rwxr-xr-xscripts/silphco11.asm566
-rwxr-xr-xscripts/silphco11_2.asm2
-rwxr-xr-xscripts/silphco7.asm24
-rwxr-xr-xscripts/unknowndungeon1.asm1
-rwxr-xr-xscripts/unknowndungeon2.asm1
-rwxr-xr-xscripts/unknowndungeon3.asm2
-rwxr-xr-xtext/map_names.asm2
-rw-r--r--text/maps/agatha.asm2
-rw-r--r--text/maps/bruno.asm2
-rwxr-xr-xwram.asm147
108 files changed, 5885 insertions, 436 deletions
diff --git a/audio.asm b/audio.asm
index dd9badea..23badb6b 100644
--- a/audio.asm
+++ b/audio.asm
@@ -666,7 +666,7 @@ INCLUDE "audio/engine_3.asm"
SECTION "Audio Engine 4", ROMX, BANK[AUDIO_4]
-SurfingPikachu1Graphics: INCBIN "gfx/surfing_pikachu_1.t4.2bpp"
+SurfingPikachu1Graphics:: INCBIN "gfx/surfing_pikachu_1.t4.2bpp"
INCLUDE "audio/engine_4.asm"
@@ -1061,4 +1061,4 @@ PikachuCry40_End:
PikachuCry42:: ; e2976 (38:6976)
dw (PikachuCry42_End - PikachuCry42) - 2 ; length of pcm data
INCBIN "audio/pikachu_cries/pikachu_cry_42.pcm"
-PikachuCry42_End: \ No newline at end of file
+PikachuCry42_End:
diff --git a/constants/hide_show_constants.asm b/constants/hide_show_constants.asm
index 4ca9e178..10cffac8 100755
--- a/constants/hide_show_constants.asm
+++ b/constants/hide_show_constants.asm
@@ -192,9 +192,9 @@
const HS_SILPH_CO_10F_ITEM_2 ; B9
const HS_SILPH_CO_10F_ITEM_3 ; BA
const HS_SILPH_CO_11F_1 ; BB
- const HS_SILPH_CO_11F_2 ; BC
- const HS_SILPH_CO_11F_JESSIE ; BD
- const HS_SILPH_CO_11F_JAMES ; BE
+ const HS_SILPH_CO_11F_JAMES ; BC
+ const HS_SILPH_CO_11F_2 ; BD
+ const HS_SILPH_CO_11F_JESSIE ; BE
const HS_MAP_F4_1 ; BF
const HS_MANSION_2_ITEM ; C0
const HS_MANSION_3_ITEM_1 ; C1
diff --git a/constants/oam_constants.asm b/constants/oam_constants.asm
index ddf95648..8e855fc9 100755
--- a/constants/oam_constants.asm
+++ b/constants/oam_constants.asm
@@ -7,3 +7,18 @@ OAMFLAG_VFLIPPED EQU %00100000 ; OAM flag flips the sprite vertically.
; OAM attribute flags
OAM_HFLIP EQU %00100000 ; horizontal flip
OAM_VFLIP EQU %01000000 ; vertical flip
+
+frame: MACRO
+ db \1
+x = \2
+REPT _NARG +- 2
+x = x | (\3 << 1)
+ shift
+endr
+ db x
+ endm
+
+delanim EQUS "db $fc"
+dorepeat EQUS "db $fd,"
+dorestart EQUS "db $fe"
+endanim EQUS "db $ff"
diff --git a/data/mapObjects/silphco11.asm b/data/mapObjects/silphco11.asm
index 8cba618e..bae7eda5 100755
--- a/data/mapObjects/silphco11.asm
+++ b/data/mapObjects/silphco11.asm
@@ -9,12 +9,13 @@ SilphCo11Object: ; 0x62380 (size=72)
db $0 ; signs
- db $5 ; objects
+ db $6 ; objects
object SPRITE_MR_MASTERBALL, $7, $5, STAY, DOWN, $1 ; person
object SPRITE_FOULARD_WOMAN, $a, $5, STAY, DOWN, $2 ; person
object SPRITE_GIOVANNI, $6, $9, STAY, DOWN, $3, OPP_GIOVANNI, $2
- object SPRITE_ROCKET, $3, $10, STAY, UP, $4, OPP_ROCKET, $29
+ object SPRITE_JAMES, $2, $8, STAY, UP, $4
object SPRITE_ROCKET, $f, $9, STAY, UP, $5, OPP_ROCKET, $28
+ object SPRITE_JESSIE, $3, $8, STAY, UP, $6
; warp-to
EVENT_DISP SILPH_CO_11F_WIDTH, $0, $9 ; SILPH_CO_10F
diff --git a/data/mapObjects/unknowndungeon1.asm b/data/mapObjects/unknowndungeon1.asm
index c55711b4..0635e9a7 100755
--- a/data/mapObjects/unknowndungeon1.asm
+++ b/data/mapObjects/unknowndungeon1.asm
@@ -14,10 +14,11 @@ UnknownDungeon1Object: ; 0x74d15 (size=97)
db $0 ; signs
- db $3 ; objects
- object SPRITE_BALL, $7, $d, STAY, NONE, $1, FULL_RESTORE
- object SPRITE_BALL, $13, $3, STAY, NONE, $2, MAX_ELIXER
- object SPRITE_BALL, $5, $0, STAY, NONE, $3, NUGGET
+ db $4 ; objects
+ object SPRITE_BALL, $1d, $10, STAY, NONE, $1, RARE_CANDY
+ object SPRITE_BALL, $7, $b, STAY, NONE, $2, MAX_ELIXER
+ object SPRITE_BALL, $1d, $9, STAY, NONE, $3, MAX_REVIVE
+ object SPRITE_BALL, $12, $3, STAY, NONE, $4, ULTRA_BALL
; warp-to
EVENT_DISP UNKNOWN_DUNGEON_1_WIDTH, $11, $18
diff --git a/data/mapObjects/unknowndungeon2.asm b/data/mapObjects/unknowndungeon2.asm
index e5ebca56..88cc6ba0 100755
--- a/data/mapObjects/unknowndungeon2.asm
+++ b/data/mapObjects/unknowndungeon2.asm
@@ -11,10 +11,11 @@ UnknownDungeon2Object: ; 0x45e14 (size=73)
db $0 ; signs
- db $3 ; objects
- object SPRITE_BALL, $1d, $9, STAY, NONE, $1, PP_UP
- object SPRITE_BALL, $4, $f, STAY, NONE, $2, ULTRA_BALL
- object SPRITE_BALL, $d, $6, STAY, NONE, $3, FULL_RESTORE
+ db $4 ; objects
+ object SPRITE_BALL, $0, $b, STAY, NONE, $1, RARE_CANDY
+ object SPRITE_BALL, $10, $7, STAY, NONE, $2, ULTRA_BALL
+ object SPRITE_BALL, $13, $b, STAY, NONE, $3, MAX_REVIVE
+ object SPRITE_BALL, $1b, $9, STAY, NONE, $4, FULL_RESTORE
; warp-to
EVENT_DISP UNKNOWN_DUNGEON_2_WIDTH, $1, $1d ; UNKNOWN_DUNGEON_1
diff --git a/data/mapObjects/unknowndungeon3.asm b/data/mapObjects/unknowndungeon3.asm
index 8b733e6b..cb2d8f83 100755
--- a/data/mapObjects/unknowndungeon3.asm
+++ b/data/mapObjects/unknowndungeon3.asm
@@ -6,10 +6,12 @@ UnknownDungeon3Object: ; 0x45f36 (size=34)
db $0 ; signs
- db $3 ; objects
+ db $5 ; objects
object SPRITE_SLOWBRO, $1b, $d, STAY, DOWN, $1, MEWTWO, 70
- object SPRITE_BALL, $10, $9, STAY, NONE, $2, ULTRA_BALL
- object SPRITE_BALL, $12, $1, STAY, NONE, $3, MAX_REVIVE
+ object SPRITE_BALL, $1a, $1, STAY, NONE, $2, ULTRA_BALL
+ object SPRITE_BALL, $2, $d, STAY, NONE, $3, ULTRA_BALL
+ object SPRITE_BALL, $3, $d, STAY, NONE, $4, MAX_REVIVE
+ object SPRITE_BALL, $f, $3, STAY, NONE, $5, MAX_ELIXER
; warp-to
EVENT_DISP UNKNOWN_DUNGEON_3_WIDTH, $6, $3 ; UNKNOWN_DUNGEON_1
diff --git a/data/map_header_banks.asm b/data/map_header_banks.asm
index 04bee42f..eef36242 100644
--- a/data/map_header_banks.asm
+++ b/data/map_header_banks.asm
@@ -207,36 +207,36 @@ MapHeaderBanks:: ; fc3e4 (3f:43e4)
db $01 ; unused
db $01 ; unused
db $01 ; unused
- db $16 ; db BANK(SilphCo2_h)
- db $16 ; db BANK(SilphCo3_h)
- db $06 ; db BANK(SilphCo4_h)
- db $06 ; db BANK(SilphCo5_h)
- db $06 ; db BANK(SilphCo6_h)
- db $14 ; db BANK(SilphCo7_h)
- db $15 ; db BANK(SilphCo8_h)
- db $14 ; db BANK(Mansion2_h)
- db $14 ; db BANK(Mansion3_h)
- db $14 ; db BANK(Mansion4_h)
- db $11 ; db BANK(SafariZoneEast_h)
- db $11 ; db BANK(SafariZoneNorth_h)
- db $12 ; db BANK(SafariZoneWest_h)
- db $11 ; db BANK(SafariZoneCenter_h)
- db $11 ; db BANK(SafariZoneRestHouse1_h)
- db $12 ; db BANK(SafariZoneSecretHouse_h)
- db $11 ; db BANK(SafariZoneRestHouse2_h)
- db $11 ; db BANK(SafariZoneRestHouse3_h)
- db $11 ; db BANK(SafariZoneRestHouse4_h)
- db $11 ; db BANK(UnknownDungeon2_h)
- db $11 ; db BANK(UnknownDungeon3_h)
- db $1d ; db BANK(UnknownDungeon1_h)
- db $07 ; db BANK(NameRater_h)
- db $1d ; db BANK(CeruleanHouse2_h)
+ db BANK(SilphCo2_h)
+ db BANK(SilphCo3_h)
+ db BANK(SilphCo4_h)
+ db BANK(SilphCo5_h)
+ db BANK(SilphCo6_h)
+ db BANK(SilphCo7_h)
+ db BANK(SilphCo8_h)
+ db BANK(Mansion2_h)
+ db BANK(Mansion3_h)
+ db BANK(Mansion4_h)
+ db BANK(SafariZoneEast_h)
+ db BANK(SafariZoneNorth_h)
+ db BANK(SafariZoneWest_h)
+ db BANK(SafariZoneCenter_h)
+ db BANK(SafariZoneRestHouse1_h)
+ db BANK(SafariZoneSecretHouse_h)
+ db BANK(SafariZoneRestHouse2_h)
+ db BANK(SafariZoneRestHouse3_h)
+ db BANK(SafariZoneRestHouse4_h)
+ db BANK(UnknownDungeon2_h)
+ db BANK(UnknownDungeon3_h)
+ db BANK(UnknownDungeon1_h)
+ db BANK(NameRater_h)
+ db BANK(CeruleanHouse2_h)
db $01 ; unused
- db $11 ; db BANK(RockTunnel2_h)
- db $17 ; db BANK(SilphCo9_h)
- db $16 ; db BANK(SilphCo10_h)
- db $18 ; db BANK(SilphCo11_h)
- db $11 ; db BANK(SilphCoElevator_h)
+ db BANK(RockTunnel2_h)
+ db BANK(SilphCo9_h)
+ db BANK(SilphCo10_h)
+ db BANK(SilphCo11_h)
+ db BANK(SilphCoElevator_h)
db $11 ; unused
db $11 ; unused
db BANK(TradeCenter_h)
@@ -245,7 +245,7 @@ MapHeaderBanks:: ; fc3e4 (3f:43e4)
db $11 ; unused
db $11 ; unused
db $11 ; unused
- db $1d ; db BANK(Lorelei_h)
- db $1d ; db BANK(Bruno_h)
- db $1d ; db BANK(Agatha_h)
+ db BANK(Lorelei_h)
+ db BANK(Bruno_h)
+ db BANK(Agatha_h)
db BANK(BeachHouse_h)
diff --git a/data/map_header_pointers.asm b/data/map_header_pointers.asm
index 501724af..730038f3 100644
--- a/data/map_header_pointers.asm
+++ b/data/map_header_pointers.asm
@@ -207,45 +207,45 @@ MapHeaderPointers:: ; fc1f2 (3f:41f2)
dw RocketHideoutElevator_h ; unused
dw RocketHideoutElevator_h ; unused
dw RocketHideoutElevator_h ; unused
- dw $5c80 ; dw SilphCo2_h
- dw $5eea ; dw SilphCo3_h
- dw $5e09 ; dw SilphCo4_h
- dw $6035 ; dw SilphCo5_h ;210
- dw $62a7 ; dw SilphCo6_h
- dw $5b97 ; dw SilphCo7_h
- dw $652a ; dw SilphCo8_h
- dw $5ff5 ; dw Mansion2_h
- dw $620b ; dw Mansion3_h
- dw $63d6 ; dw Mansion4_h
- dw $5ab3 ; dw SafariZoneEast_h
- dw $5bf3 ; dw SafariZoneNorth_h
- dw $635a ; dw SafariZoneWest_h
- dw $5dfa ; dw SafariZoneCenter_h ;220
- dw $5f35 ; dw SafariZoneRestHouse1_h
- dw $64bc ; dw SafariZoneSecretHouse_h
- dw $5f72 ; dw SafariZoneRestHouse2_h
- dw $5fbd ; dw SafariZoneRestHouse3_h
- dw $6008 ; dw SafariZoneRestHouse4_h
- dw $6053 ; dw UnknownDungeon2_h
- dw $6141 ; dw UnknownDungeon3_h
- dw $453d ; dw UnknownDungeon1_h
- dw $530e ; dw NameRater_h
- dw $4643 ; dw CeruleanHouse2_h
- dw $5649 ; dw Route16Gate_h ; unused
- dw $624e ; dw RockTunnel2_h
- dw $56ba ; dw SilphCo9_h
- dw $60c8 ; dw SilphCo10_h
- dw $6105 ; dw SilphCo11_h
- dw $5a08 ; dw SilphCoElevator_h
- dw $5c80 ; dw SilphCo2_h ; unused
- dw $5c80 ; dw SilphCo2_h ; unused
+ dw SilphCo2_h
+ dw SilphCo3_h
+ dw SilphCo4_h
+ dw SilphCo5_h ;210
+ dw SilphCo6_h
+ dw SilphCo7_h
+ dw SilphCo8_h
+ dw Mansion2_h
+ dw Mansion3_h
+ dw Mansion4_h
+ dw SafariZoneEast_h
+ dw SafariZoneNorth_h
+ dw SafariZoneWest_h
+ dw SafariZoneCenter_h ;220
+ dw SafariZoneRestHouse1_h
+ dw SafariZoneSecretHouse_h
+ dw SafariZoneRestHouse2_h
+ dw SafariZoneRestHouse3_h
+ dw SafariZoneRestHouse4_h
+ dw UnknownDungeon2_h
+ dw UnknownDungeon3_h
+ dw UnknownDungeon1_h
+ dw NameRater_h
+ dw CeruleanHouse2_h
+ dw Route16Gate_h ; unused
+ dw RockTunnel2_h
+ dw SilphCo9_h
+ dw SilphCo10_h
+ dw SilphCo11_h
+ dw SilphCoElevator_h
+ dw SilphCo2_h ; unused
+ dw SilphCo2_h ; unused
dw TradeCenter_h
dw Colosseum_h
- dw $5c80 ; dw SilphCo2_h ; unused
- dw $5c80 ; dw SilphCo2_h ; unused
- dw $5c80 ; dw SilphCo2_h ; unused
- dw $5c80 ; dw SilphCo2_h ; unused
- dw $59ef ; dw Lorelei_h
- dw $5b4a ; dw Bruno_h
- dw $5ca1 ; dw Agatha_h ;247
+ dw SilphCo2_h ; unused
+ dw SilphCo2_h ; unused
+ dw SilphCo2_h ; unused
+ dw SilphCo2_h ; unused
+ dw Lorelei_h
+ dw Bruno_h
+ dw Agatha_h ;247
dw BeachHouse_h
diff --git a/data/sgb_border.asm b/data/sgb_border.asm
index 401a55e9..694f97b6 100755
--- a/data/sgb_border.asm
+++ b/data/sgb_border.asm
@@ -1,29 +1,87 @@
BorderPalettes: ; 72c39 (1c:6c39)
- dr $72c39,$734b9
- ;INCBIN "gfx/tilemaps/sgbborder.map"
+ INCBIN "gfx/tilemaps/sgbborder.map"
- ;ds $100
+ ds $100
- ;RGB 30,29,29 ; PAL_SGB1
- ;RGB 25,22,25
- ;RGB 25,17,21
- ;RGB 24,14,12
+ RGB 24, 6, 6
+ RGB 31, 25, 9
+ RGB 25, 10, 10
+ RGB 0, 0, 0
- ;ds $18
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
- ;RGB 30,29,29 ; PAL_SGB2
- ;RGB 22,31,16
- ;RGB 27,20,6
- ;RGB 15,15,15
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
- ;ds $18
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
- ;RGB 30,29,29 ; PAL_SGB3
- ;RGB 31,31,17
- ;RGB 18,21,29
- ;RGB 15,15,15
+ RGB 18, 24, 18
+ RGB 25, 10, 10
+ RGB 15, 25, 15
+ RGB 0, 0, 0
- ;ds $18
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+
+ RGB 18, 6, 31
+ RGB 31, 25, 9
+ RGB 15, 25, 15
+ RGB 0, 0, 0
+
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+
+ RGB 12, 31, 6
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
+ RGB 31, 31, 25
SGBBorderGraphics: ; 734b9 (1c:74b9)
INCBIN "gfx/pokemon_yellow.t6.2bpp"
diff --git a/data/town_map_entries.asm b/data/town_map_entries.asm
index 865f14d8..5223f435 100755
--- a/data/town_map_entries.asm
+++ b/data/town_map_entries.asm
@@ -98,4 +98,5 @@ InternalMapEntries: ; 7140b (1c:540b)
IMAP ROCK_TUNNEL_2, $E,$3,RockTunnelName
IMAP SILPH_CO_ELEVATOR, $A,$5,SilphCoName
IMAP AGATHAS_ROOM, $0,$2,PokemonLeagueName
+ IMAP BEACH_HOUSE, $6,$F,Route19Name
db $FF
diff --git a/engine/animated_objects_3e.asm b/engine/animated_objects_3e.asm
new file mode 100755
index 00000000..9d21ff8b
--- /dev/null
+++ b/engine/animated_objects_3e.asm
@@ -0,0 +1,394 @@
+ClearObjectAnimationBuffers: ; fbb5a (3e:7b5a)
+ ld hl, wAnimatedObjectsData
+ ld bc, wAnimatedObjectsDataEnd - wAnimatedObjectsData
+ xor a
+ call FillMemory
+ ret
+
+RunObjectAnimations:
+ ld hl, wAnimatedObjectDataStructs
+ ld e, 10
+.loop
+ ld a, [hl]
+ and a
+ jr z, .next
+ ld c, l
+ ld b, h
+ push hl
+ push de
+ call ExecuteCurrentAnimatedObjectCallback
+ call UpdateCurrentAnimatedObjectFrame
+ pop de
+ pop hl
+ jr c, .quit
+.next
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .loop
+ ld a, [wCurrentAnimatedObjectOAMBufferOffset]
+ ld l, a
+ ld h, wOAMBuffer / $100
+.deinit_unused_oam_loop
+ ld a, l
+ cp wOAMBufferEnd % $100
+ jr nc, .quit
+ xor a
+ ld [hli], a
+ jr .deinit_unused_oam_loop
+
+.quit
+ ret
+
+SpawnAnimatedObject:
+ push de
+ push af
+ ld hl, wAnimatedObjectDataStructs
+ ld e, 10
+.loop
+ ld a, [hl]
+ and a
+ jr z, .init
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .loop
+ pop af
+ pop de
+ scf
+ ret
+
+.init
+ pop af
+ ld c, l
+ ld b, h
+ ld hl, wNumLoadedAnimatedObjects
+ inc [hl]
+ ld e, a
+ ld d, $0
+ ld a, [wAnimatedObjectSpawnStateDataPointer]
+ ld l, a
+ ld a, [wAnimatedObjectSpawnStateDataPointer + 1]
+ ld h, a
+ add hl, de
+ add hl, de
+ add hl, de
+ ld e, l
+ ld d, h
+ ld hl, $0
+ add hl, bc
+ ld a, [wNumLoadedAnimatedObjects]
+ ld [hli], a
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ xor a
+ ld [hli], a
+ pop de
+ ld hl, $4
+ add hl, bc
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ dec a
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ret
+
+MaskCurrentAnimatedObjectStruct:
+ ld hl, $0
+ add hl, bc
+ ld [hl], $0
+ ret
+
+MaskAllAnimatedObjectStructs:
+ ld hl, wAnimatedObjectDataStructs
+ ld e, 10
+.loop
+ ld [hl], $0
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .loop
+ ret
+
+UpdateCurrentAnimatedObjectFrame:
+ xor a
+ ld [wCurAnimatedObjectOAMAttributes], a
+ ld hl, $3
+ add hl, bc
+ ld a, [hli]
+ ld [wCurrentAnimatedObjectVTileOffset], a
+ ld a, [hli]
+ ld [wCurrentAnimatedObjectXCoord], a
+ ld a, [hli]
+ ld [wCurrentAnimatedObjectYCoord], a
+ ld a, [hli]
+ ld [wCurrentAnimatedObjectXOffset], a
+ ld a, [hl]
+ ld [wCurrentAnimatedObjectYOffset], a
+ call UpdateDurationTimerAndFrameStateForCurrentAnimatedObject
+ cp $fd
+ jr z, .finish
+ cp $fc
+ jr z, .delete_animation
+ call GetCurrentAnimatedObjectOAMDataPointer
+ ld a, [wCurrentAnimatedObjectVTileOffset]
+ add [hl]
+ ld [wCurrentAnimatedObjectVTileOffset], a
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push bc
+ ld a, [wCurrentAnimatedObjectOAMBufferOffset]
+ ld e, a
+ ld d, wOAMBuffer / $100
+ ld a, [hli]
+ ld c, a
+.loop
+ ld a, [wCurrentAnimatedObjectYCoord]
+ ld b, a
+ ld a, [wCurrentAnimatedObjectYOffset]
+ add b
+ ld b, a
+ ld a, [wAnimatedObjectGlobalYOffset]
+ add b
+ ld b, a
+ call GetCurrentAnimatedObjectTileYCoordinate
+ add b
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [wCurrentAnimatedObjectXCoord]
+ ld b, a
+ ld a, [wCurrentAnimatedObjectXOffset]
+ add b
+ ld b, a
+ ld a, [wAnimatedObjectGlobalXOffset]
+ add b
+ ld b, a
+ call GetCurrentAnimatedObjectTileXCoordinate
+ add b
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [wCurrentAnimatedObjectVTileOffset]
+ add [hl]
+ ld [de], a
+ inc hl
+ inc de
+ call SetCurrentAnimatedObjectOAMAttributes
+ ld b, a
+ ld a, [wc634]
+ cp $7
+ ld a, b
+ jr z, .skip_load
+ ld [de], a
+.skip_load
+ inc hl
+ inc de
+ ld a, e
+ ld [wCurrentAnimatedObjectOAMBufferOffset], a
+ cp wOAMBufferEnd % $100
+ jr nc, .oam_is_full
+ dec c
+ jr nz, .loop
+ pop bc
+ jr .finish
+
+.delete_animation
+ call MaskCurrentAnimatedObjectStruct
+.finish
+ and a
+ ret
+
+.oam_is_full
+ pop bc
+ scf
+ ret
+
+GetCurrentAnimatedObjectTileYCoordinate:
+ push hl
+ ld a, [hl]
+ ld hl, wCurAnimatedObjectOAMAttributes
+ bit 6, [hl]
+ jr z, .no_flip
+ add $8
+ xor $ff
+ inc a
+.no_flip
+ pop hl
+ ret
+
+GetCurrentAnimatedObjectTileXCoordinate:
+ push hl
+ ld a, [hl]
+ ld hl, wCurAnimatedObjectOAMAttributes
+ bit 5, [hl]
+ jr z, .no_flip
+ add $8
+ xor $ff
+ inc a
+.no_flip
+ pop hl
+ ret
+
+SetCurrentAnimatedObjectOAMAttributes:
+ ld a, [wCurAnimatedObjectOAMAttributes]
+ ld b, a
+ ld a, [hl]
+ xor b
+ and $e0
+ ld b, a
+ ld a, [hl]
+ and $10
+ or b
+ bit 4, a
+ ret z
+ or $4
+ ret
+
+GetCurrentAnimatedObjectOAMDataPointer:
+ ld e, a
+ ld d, $0
+ ld a, [wAnimatedObjectOAMDataPointer]
+ ld l, a
+ ld a, [wAnimatedObjectOAMDataPointer + 1]
+ ld h, a
+ add hl, de
+ add hl, de
+ add hl, de
+ ret
+
+SetCurrentAnimatedObjectCallbackAndResetFrameStateRegisters:
+ ld hl, $1
+ add hl, bc
+ ld [hl], a
+ ld hl, $8
+ add hl, bc
+ ld [hl], $0
+ ld hl, $9
+ add hl, bc
+ ld [hl], $0
+ ld hl, $a
+ add hl, bc
+ ld [hl], $ff
+ ret
+
+UpdateDurationTimerAndFrameStateForCurrentAnimatedObject:
+.loop
+ ld hl, $8
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .next_frame
+ dec [hl]
+ call GetPointerToCurrentAnimatedObjectFrameScript
+ ld a, [hli]
+ push af
+ jr .finish
+
+.next_frame
+ ld hl, $a
+ add hl, bc
+ inc [hl]
+ call GetPointerToCurrentAnimatedObjectFrameScript
+ ld a, [hli]
+ cp $fe
+ jr z, .restart_anim
+ cp $ff
+ jr z, .hold_last_frame_state
+ push af
+ ld a, [hl]
+ push hl
+ and $3f
+ ld hl, $9
+ add hl, bc
+ add [hl]
+ ld hl, $8
+ add hl, bc
+ ld [hl], a
+ pop hl
+.finish
+ ld a, [hl]
+ and $c0
+ srl a
+ ld [wCurAnimatedObjectOAMAttributes], a
+ pop af
+ ret
+
+.hold_last_frame_state
+ xor a
+ ld hl, $8
+ add hl, bc
+ ld [hl], a
+ ld hl, $a
+ add hl, bc
+ dec [hl]
+ dec [hl]
+ jr .loop
+
+.restart_anim
+ xor a
+ ld hl, $8
+ add hl, bc
+ ld [hl], a
+ dec a
+ ld hl, $a
+ add hl, bc
+ ld [hl], a
+ jr .loop
+
+GetPointerToCurrentAnimatedObjectFrameScript:
+ ld hl, $1
+ add hl, bc
+ ld e, [hl]
+ ld d, $0
+ ld a, [wAnimatedObjectFramesDataPointer]
+ ld l, a
+ ld a, [wAnimatedObjectFramesDataPointer + 1]
+ ld h, a
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $a
+ add hl, bc
+ ld l, [hl]
+ ld h, $0
+ add hl, hl
+ add hl, de
+ ret
+
+ExecuteCurrentAnimatedObjectCallback:
+ ld hl, $2
+ add hl, bc
+ ld e, [hl]
+ ld d, $0
+ ld a, [wAnimatedObjectJumptablePointer]
+ ld l, a
+ ld a, [wAnimatedObjectJumptablePointer + 1]
+ ld h, a
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
diff --git a/engine/bank30.bin b/engine/bank30.bin
new file mode 100644
index 00000000..6309c149
--- /dev/null
+++ b/engine/bank30.bin
Binary files differ
diff --git a/engine/bank3c.asm b/engine/bank3c.asm
index e7ac2a4e..44382257 100644
--- a/engine/bank3c.asm
+++ b/engine/bank3c.asm
@@ -322,13 +322,13 @@ Func_f0a82: ; f0a82
ret
Pic_f0abf: ; f0abf (3c:4abf)
- dr $f0abf, $f0b64
+INCBIN "gfx/pikachu/unknown_f0abf.pic"
GFX_f0b64: ; f0b64 (3c:4b64)
- dr $f0b64, $f0cf4
+INCBIN "gfx/pikachu/unknown_f0b64.2bpp"
Pic_f0cf4: ; f0cf4 (3c:4cf4)
- dr $f0cf4, $f0d82
+INCBIN "gfx/pikachu/unknown_f0cf4.pic"
GFX_f0d82: ; f0d82 (3c:4d82)
- dr $f0d82, $f0f12
+INCBIN "gfx/pikachu/unknown_f0d82.2bpp"
PokecenterChanseyText:
ld hl, NurseChanseyText
diff --git a/engine/bank3e.asm b/engine/bank3e.asm
index af7cc074..023f9b20 100644
--- a/engine/bank3e.asm
+++ b/engine/bank3e.asm
@@ -1,5 +1,1719 @@
-Func_f8000: ; f8000 (3e:4000)
- dr $f8000,$f8bcb
+SurfingPikachuMinigame:
+ call SurfingPikachuMinigame_BlankPals
+ call DelayFrame
+ call DelayFrame
+ call DelayFrame
+ ld a, [hTilesetType]
+ push af
+ xor a
+ ld [hTilesetType], a
+ ld a, [wUpdateSpritesEnabled]
+ push af
+ ld a, $ff
+ ld [wUpdateSpritesEnabled], a
+ ld a, [rIE]
+ push af
+ xor a
+ ld [rIF], a
+ ld a, $f
+ ld [rIE], a
+ ld a, $8
+ ld [rSTAT], a
+ ld a, [H_AUTOBGTRANSFERDEST + 1]
+ push af
+ ld a, $98
+ ld [H_AUTOBGTRANSFERDEST + 1], a
+ call Func_f8fb3
+ call Func_f807a
+ xor a
+ ld [rBGP], a
+ ld [rOBP0], a
+ ld [rOBP1], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ call UpdateGBCPal_OBP1
+ call ClearObjectAnimationBuffers
+ call ClearSprites
+ xor a
+ ld [hLCDCPointer], a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $90
+ ld [hWY], a
+ call DelayFrame
+ pop af
+ ld [H_AUTOBGTRANSFERDEST + 1], a
+ xor a
+ ld [rIF], a
+ pop af
+ ld [rIE], a
+ xor a
+ ld [rSTAT], a
+ call RunDefaultPaletteCommand
+ call Func_0f16
+ call PlayDefaultMusic
+ call GBPalNormal
+ pop af
+ ld [wUpdateSpritesEnabled], a
+ pop af
+ ld [hTilesetType], a
+ ret
+
+Func_f807a:
+ call Func_f8116
+ call DelayFrame
+ ld b, $e
+ call RunPaletteCommand
+.loop
+ ld a, [wc5d1]
+ bit 7, a
+ ret nz
+ call Func_f923f
+ call Func_f80ac
+ ret nz
+ call Func_f8282
+ ld a, $3c
+ ld [wCurrentAnimatedObjectOAMBufferOffset], a
+ call RunObjectAnimations
+ call Func_f8848
+ call Func_f80a8
+ call Func_f80c4
+ jr .loop
+
+Func_f80a8:
+ call DelayFrame
+ ret
+
+Func_f80ac:
+ ld hl, wPreventBlackout
+ bit 1, [hl]
+ ret z
+ ld a, [hJoyPressed]
+ and $4
+ ret
+
+Func_f80b7:
+ ld a, [hJoyPressed]
+ and $8
+ ret z
+ ld hl, wc5e2
+ ld a, [hl]
+ xor $1
+ ld [hl], a
+ ret
+
+Func_f80c4:
+ ld a, [wc634]
+ and a
+ ret z
+ ld hl, wChannelNoteDelayCounters
+ ld a, $1
+ cp [hl]
+ ret nz
+ inc hl
+ cp [hl]
+ ret nz
+ inc hl
+ cp [hl]
+ ret nz
+ ld a, [wc5e3]
+ ld e, a
+ ld a, [wc5e3 + 1]
+ and $3
+ ld d, a
+ sla e
+ rl d
+ ld e, d
+ ld d, $0
+ ld hl, Unkn_f80f5
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld [wMusicTempo + 1], a
+ ld a, [hl]
+ ld [wMusicTempo], a
+ ret
+
+Unkn_f80f5:
+ dw $75
+ dw $6d
+ dw $65
+ dw $5d
+ dw $55
+
+Func_f80ff:
+ ld hl, wChannelNoteDelayCounters
+ ld a, $1
+ cp [hl]
+ ret nz
+ inc hl
+ cp [hl]
+ ret nz
+ inc hl
+ cp [hl]
+ ret nz
+ ld a, $75
+ ld [wMusicTempo + 1], a
+ xor a
+ ld [wMusicTempo], a
+ ret
+
+Func_f8116:
+ call Func_f9279
+ call ClearSprites
+ call DisableLCD
+ ld hl, wSerialEnemyMonsPatchList
+ ld bc, $67
+ xor a
+ call FillMemory
+ ld hl, wc700
+ ld bc, $200
+ xor a
+ call FillMemory
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call ClearObjectAnimationBuffers
+
+ ld hl, SurfingPikachu1Graphics
+ ld de, $9000
+ ld bc, $500
+ ld a, BANK(SurfingPikachu1Graphics)
+ call FarCopyData
+
+ ld hl, SurfingPikachu1Graphics + $410
+ ld de, $8000
+ ld bc, $1000
+ ld a, BANK(SurfingPikachu1Graphics)
+ call FarCopyData
+
+ ld a, Unkn_f93d3 % $100
+ ld [wAnimatedObjectSpawnStateDataPointer], a
+ ld a, Unkn_f93d3 / $100
+ ld [wAnimatedObjectSpawnStateDataPointer + 1], a
+ ld a, Jumptable_f93fa % $100
+ ld [wAnimatedObjectJumptablePointer], a
+ ld a, Jumptable_f93fa / $100
+ ld [wAnimatedObjectJumptablePointer + 1], a
+ ld a, Unkn_f9507 % $100
+ ld [wAnimatedObjectOAMDataPointer], a
+ ld a, Unkn_f9507 / $100
+ ld [wAnimatedObjectOAMDataPointer + 1], a
+ ld a, Unkn_f9405 % $100
+ ld [wAnimatedObjectFramesDataPointer], a
+ ld a, Unkn_f9405 / $100
+ ld [wAnimatedObjectFramesDataPointer + 1], a
+ ld hl, vBGMap0
+ ld bc, $800
+ ld a, $0
+ call FillMemory
+ ld hl, $98c0
+ ld bc, $180
+ ld a, $b
+ call FillMemory
+ ld a, $1
+ lb de, $74, $58
+ call SpawnAnimatedObject
+ ld a, $74
+ ld [wc5ea], a
+ call Func_f9223
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7e
+ ld [hWY], a
+ ld a, $42
+ ld [hLCDCPointer], a
+ ld a, $40
+ ld [wc5e3], a
+ xor a
+ ld [wc5e3 + 1], a
+ xor a
+ ld [wc5d6], a
+ ld a, $60
+ ld [wc5d7], a
+ ld hl, wc61a
+ ld bc, $14
+ ld a, $74
+ call FillMemory
+ call Func_f81ff
+ call Func_f8256
+ ld a, $e3
+ ld [rLCDC], a
+ call Func_f81e9
+ ld a, $e4
+ ld [rOBP0], a
+ ld a, $e0
+ ld [rOBP1], a
+ call UpdateGBCPal_OBP0
+ call UpdateGBCPal_OBP1
+ ret
+
+Func_f81e9:
+ ld a, [wOnSGB]
+ and a
+ jr nz, .asm_f81f7
+ ld a, $d0
+ ld [rBGP], a
+ call UpdateGBCPal_BGP
+ ret
+
+.asm_f81f7
+ ld a, $e4
+ ld [rBGP], a
+ call UpdateGBCPal_BGP
+ ret
+
+Func_f81ff:
+ ld hl, wSpriteDataEnd
+ ld de, Unkn_f8249
+ ld b, $97
+ ld c, $80
+ ld a, $4
+ call Func_f8233
+ ld de, Unkn_f8248
+ ld b, $96
+ ld c, $50
+ ld a, $1
+ call Func_f8233
+ ld de, Unkn_f824d
+ ld b, $14
+ ld c, $20
+ ld a, $5
+ call Func_f8233
+ ld de, Unkn_f8252
+ ld b, $20
+ ld c, $80
+ ld a, $4
+ call Func_f8233
+ ret
+
+Func_f8233:
+.asm_f8233
+ push af
+ ld [hl], b
+ inc hl
+ ld [hl], c
+ inc hl
+ ld a, [de]
+ ld [hl], a
+ inc hl
+ ld [hl], $0
+ inc hl
+ ld a, c
+ add $8
+ ld c, a
+ inc de
+ pop af
+ dec a
+ jr nz, .asm_f8233
+ ret
+
+Unkn_f8248:
+ db $fe
+
+Unkn_f8249:
+ db $d0
+ db $d0
+ db $d0
+ db $d0
+
+Unkn_f824d:
+ db $ec
+ db $ed
+ db $ed
+ db $ee
+ db $ef
+
+Unkn_f8252:
+ db $ec
+ db $ed
+ db $ee
+ db $ef
+
+Func_f8256:
+ ld de, $9c21
+ ld hl, Unkn_f8279
+ ld c, $9
+.asm_f825e
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_f825e
+ ld hl, $9c01
+ ld [hl], $15
+ ld hl, $9c02
+ ld [hl], $16
+ ld hl, $9c2c
+ ld [hl], $1b
+ ld hl, $9c2d
+ ld [hl], $1c
+ ret
+
+Unkn_f8279:
+ db $17
+ db $18
+ db $19
+ db $19
+ db $19
+ db $19
+ db $19
+ db $19
+ db $19
+
+Func_f8282:
+ ld a, [wc5d1]
+ ld e, a
+ ld d, $0
+ ld hl, Jumptable_f8291
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_f8291:
+ dw Func_f82ab
+ dw Func_f82bd
+ dw Func_f8324
+ dw Func_f835c
+ dw Func_f838c
+ dw Func_f8399
+ dw Func_f83aa
+ dw Func_f83bb
+ dw Func_f83cc
+ dw Func_f83e3
+ dw Func_f8406
+ dw Func_f840f
+ dw Func_f841d
+
+Func_f82ab:
+ ld a, $2
+ lb de, $48, $e0
+ call SpawnAnimatedObject
+ ld hl, wc5d1
+ inc [hl]
+ ld a, $1
+ ld [wc634], a
+ ret
+
+Func_f82bd:
+ ld a, [wc5e5]
+ cp $18
+ jr nc, .asm_f82e8
+ ld hl, wc5d6
+ ld a, [hli]
+ or [hl]
+ and a
+ jr z, .asm_f82f6
+ call Random
+ ld [wc5d5], a
+ call Func_f9210
+ call Func_f88ae
+ call Func_f886b
+ call Func_f8cb0
+ call Func_f844c
+ call Func_f88e4
+ call Func_f88fd
+ ret
+
+.asm_f82e8
+ ld hl, wc5d1
+ inc [hl]
+ xor a
+ ld [wc634], a
+ ld a, $c0
+ ld [wc632], a
+ ret
+
+.asm_f82f6
+ ld a, $1
+Func_f82f8:
+ ld [wc630], a
+ ld a, $c
+ ld [wc5d1], a
+Func_f8300:
+ ld a, $80
+ ld [wc631], a
+ ld a, $b
+ lb de, $88, $58
+ call SpawnAnimatedObject
+ ld hl, $7
+ add hl, bc
+ ld [hl], $80
+ ld hl, $b
+ add hl, bc
+ ld [hl], $80
+ ld hl, $c
+ add hl, bc
+ ld [hl], $30
+ xor a
+ ld [wc634], a
+ ret
+
+Func_f8324:
+ call Func_f8440
+ jr c, .asm_f833d
+ xor a
+ ld [wc5d5], a
+ call Func_f9210
+ call Func_f88ae
+ call Func_f886b
+ call Func_f8c97
+ call Func_f80ff
+ ret
+
+.asm_f833d
+ ld hl, wc5d1
+ inc [hl]
+ ld a, $90
+ ld [hSCX], a
+ ld a, $72
+ ld [wc5d3], a
+ ld a, $4
+ ld [wc5d2], a
+ xor a
+ ld [hLCDCPointer], a
+ ld [wc617], a
+ ld [wc618], a
+ ld [wc619], a
+ ret
+
+Func_f835c:
+ ld a, [hSCX]
+ and a
+ jr z, .asm_f837b
+ call Func_f9210
+ call Func_f88ae
+ call Func_f886b
+ ld a, [hSCX]
+ dec a
+ dec a
+ dec a
+ dec a
+ ld [hSCX], a
+ ld a, $e0
+ ld [wc62e], a
+ call Func_f8cc7
+ ret
+
+.asm_f837b
+ xor a
+ ld [wc5e3], a
+ ld [wc5e3 + 1], a
+ ld hl, wc5d1
+ inc [hl]
+ ld a, $5
+ ld [wc5d2], a
+ ret
+
+Func_f838c:
+ call Func_f891e
+ ld a, $20
+ ld [wc632], a
+ ld hl, wc5d1
+ inc [hl]
+ ret
+
+Func_f8399:
+ call Func_f8440
+ ret nc
+ call Func_f8a92
+ ld a, $40
+ ld [wc632], a
+ ld hl, wc5d1
+ inc [hl]
+ ret
+
+Func_f83aa:
+ call Func_f8440
+ ret nc
+ call Func_f8ae4
+ ld a, $40
+ ld [wc632], a
+ ld hl, wc5d1
+ inc [hl]
+ ret
+
+Func_f83bb:
+ call Func_f8440
+ ret nc
+ call Func_f8b7a
+ ld a, $40
+ ld [wc632], a
+ ld hl, wc5d1
+ inc [hl]
+ ret
+
+Func_f83cc:
+ call Func_f8440
+ ret nc
+ call Func_f8aa9
+ push af
+ call Func_f8b5d
+ pop af
+ ret nc
+ ld a, $40
+ ld [wc632], a
+ ld hl, wc5d1
+ inc [hl]
+ ret
+
+Func_f83e3:
+ call Func_f8440
+ ret nc
+ call Func_f8afb
+ push af
+ call Func_f8b5d
+ pop af
+ ret nc
+ ld a, $80
+ ld [wc632], a
+ ld hl, wc5d1
+ inc [hl]
+ call Func_f8b92
+ ret nc
+ call Func_f8a7c
+Func_f83ff:
+ ld a, $6
+ ld [wc5d2], a
+ ret
+
+Func_f8406:
+ call Func_f8440
+Func_f8408:
+ ret nc
+ ld hl, wc5d1
+ inc [hl]
+ ret
+
+Func_f840f:
+ call Func_f9210
+ ld a, [hJoyPressed]
+ and $1
+ ret z
+ ld hl, wc5d1
+ set 7, [hl]
+ ret
+
+Func_f841d:
+ call Func_f9210
+ call Func_f88ae
+ call Func_f886b
+ call Func_f8cb0
+ call Func_f80ff
+ ld hl, wc631
+ ld a, [hl]
+ and a
+ jr z, .asm_f8435
+ dec [hl]
+ ret
+
+.asm_f8435
+ ld a, [hJoyPressed]
+ and $1
+ ret z
+ ld hl, wc5d1
+ set 7, [hl]
+ ret
+
+Func_f8440:
+ ld hl, wc632
+ ld a, [hl]
+ and a
+ jr z, .asm_f844a
+ dec [hl]
+ and a
+ ret
+
+.asm_f844a
+ scf
+ ret
+
+Func_f844c:
+ ld a, [wc5e6]
+ ld h, a
+ ld a, [wc5e7]
+ ld l, a
+ ld a, [wc5e3]
+ ld e, a
+ ld a, [wc5e3 + 1]
+ ld d, a
+ add hl, de
+ ld a, h
+ ld [wc5e6], a
+ ld a, l
+ ld [wc5e7], a
+ ret nc
+ ld hl, wc5e5
+ inc [hl]
+ ld hl, wOAMBuffer + 4 * 4 + 1
+ dec [hl]
+ dec [hl]
+ ret
+
+Func_f8470
+ ld a, [wc5d2]
+ ld e, a
+ ld d, $0
+ ld hl, Jumptable_f847f
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_f847f:
+ dw Func_f848d
+ dw Func_f84e2
+ dw Func_f8516
+ dw Func_f8545
+ dw Func_f8561
+ dw Func_f856d
+ dw Func_f8579
+
+Func_f848d:
+ ld a, [wc630]
+ and a
+ jr nz, .asm_f84d2
+ call Func_f87b5
+ ld a, [wc5ea]
+ ld hl, $5
+ add hl, bc
+ ld [hl], a
+ call Func_f871e
+ jr c, .asm_f84aa
+ call Func_f8742
+ call Func_f86b8
+ ret
+
+.asm_f84aa
+ call Func_f8742
+ ld a, $1
+ ld [wc5d2], a
+ xor a
+ ld hl, $c
+ add hl, bc
+ ld [hl], a
+ ld hl, $d
+ add hl, bc
+ ld [hl], a
+ ld hl, $e
+ add hl, bc
+ ld [hl], a
+ ld [wc5d9], a
+ ld [wc62f], a
+ xor a
+ ld [wChannelSoundIDs + CH7], a
+ ld a, $91
+ call PlaySound
+ ret
+
+.asm_f84d2
+ xor a
+ ld [wc5e3], a
+ ld [wc5e3 + 1], a
+ ld a, $4
+ ld [wc5d2], a
+ call Func_f8742
+ ret
+
+Func_f84e2:
+ call Func_f8598
+ call Func_f928c
+ ret nc
+ call Func_f8606
+ jr c, .asm_f84fd
+ call Func_f8bed
+ ld hl, $c
+ add hl, bc
+ ld [hl], $0
+ ld a, $2
+ ld [wc5d2], a
+ ret
+
+.asm_f84fd
+ ld a, $3
+ ld [wc5d2], a
+ ld a, $60
+ ld [wc5e1], a
+ ld a, $10
+ call SetCurrentAnimatedObjectCallbackAndResetFrameStateRegisters
+ xor a
+ ld [wChannelSoundIDs + CH7], a
+ ld a, $93
+ call PlaySound
+ ret
+
+Func_f8516:
+ ld hl, $c
+ add hl, bc
+ ld a, [hl]
+ cp $20
+ jr nc, .asm_f8539
+ inc [hl]
+ inc [hl]
+ inc [hl]
+ inc [hl]
+ ld d, $4
+ call Func_f9362
+ ld hl, $7
+ add hl, bc
+ ld [hl], a
+ call Func_f87b5
+ ld a, [wc5ea]
+ ld hl, $5
+ add hl, bc
+ ld [hl], a
+ ret
+
+.asm_f8539
+ ld hl, $7
+ add hl, bc
+ ld [hl], $0
+ ld a, $0
+ ld [wc5d2], a
+ ret
+
+Func_f8545:
+ ld hl, wc5e1
+ ld a, [hl]
+ and a
+ jr z, .asm_f8556
+ dec [hl]
+ ld a, [wc5ea]
+ ld hl, $5
+ add hl, bc
+ ld [hl], a
+ ret
+
+.asm_f8556
+ ld a, $0
+ ld [wc5d2], a
+ ld a, $4
+ call SetCurrentAnimatedObjectCallbackAndResetFrameStateRegisters
+ ret
+
+Func_f8561:
+ ld a, [wc5ea]
+ ld hl, $5
+ add hl, bc
+ ld [hl], a
+ call Func_f8742
+ ret
+
+Func_f856d:
+ ld a, $f
+ call SetCurrentAnimatedObjectCallbackAndResetFrameStateRegisters
+ ld hl, $c
+ add hl, bc
+ ld [hl], $0
+ ret
+
+Func_f8579:
+ ld hl, $c
+ add hl, bc
+ ld a, [hl]
+ inc [hl]
+ inc [hl]
+ and $3f
+ cp $20
+ jr c, .asm_f8591
+ ld d, $10
+ call Func_f9362
+ ld hl, $7
+ add hl, bc
+ ld [hl], a
+ ret
+
+.asm_f8591
+ ld hl, $7
+ add hl, bc
+ ld [hl], $0
+ ret
+
+Func_f8598:
+ ld de, hJoy5
+ ld a, [de]
+ and $20
+ jr nz, .asm_f85a6
+ ld a, [de]
+ and $10
+ jr nz, .asm_f85cc
+ ret
+
+.asm_f85a6
+ ld hl, $e
+ add hl, bc
+ ld [hl], $0
+ ld hl, $d
+ add hl, bc
+ ld a, [hl]
+ inc [hl]
+ cp $b
+ jr c, .asm_f85be
+ call Func_f85f2
+ ld hl, wc62f
+ set 0, [hl]
+.asm_f85be
+ ld hl, $1
+ add hl, bc
+ ld a, [hl]
+ cp $e
+ jr nc, .asm_f85c9
+ inc [hl]
+ ret
+
+.asm_f85c9
+ ld [hl], $1
+ ret
+
+.asm_f85cc
+ ld hl, $d
+ add hl, bc
+ ld [hl], $0
+ ld hl, $e
+ add hl, bc
+ ld a, [hl]
+ inc [hl]
+ cp $d
+ jr c, .asm_f85e4
+ call Func_f85f2
+ ld hl, wc62f
+ set 1, [hl]
+.asm_f85e4
+ ld hl, $1
+ add hl, bc
+ ld a, [hl]
+ cp $1
+ jr z, .asm_f85ef
+ dec [hl]
+ ret
+
+.asm_f85ef
+ ld [hl], $e
+ ret
+
+Func_f85f2:
+ call Func_f8bdf
+ xor a
+ ld hl, $d
+ add hl, bc
+ ld [hl], a
+ ld hl, $e
+ add hl, bc
+ ld [hl], a
+ ld a, $92
+ call PlaySound
+ ret
+
+Func_f8606:
+ ld hl, $1
+ add hl, bc
+ ld a, [wc5ef]
+ cp $6
+ jr z, .asm_f863d
+ cp $14
+ jr z, .asm_f867b
+ cp $12
+ jr z, .asm_f867b
+ cp $7
+ jr z, .asm_f865c
+ ld a, [hl]
+ cp $1
+ jp z, .asm_f86ad
+ cp $2
+ jr z, .asm_f869a
+ cp $3
+ jr z, .asm_f869f
+ cp $4
+ jr z, .asm_f86a2
+ cp $5
+ jr z, .asm_f869f
+ cp $6
+ jr z, .asm_f869a
+ cp $7
+ jr z, .asm_f86ad
+ jr .asm_f86ad
+
+.asm_f863d
+ ld a, [hl]
+ cp $1
+ jr z, .asm_f86ad
+ cp $2
+ jr z, .asm_f86ad
+ cp $3
+ jr z, .asm_f86ad
+ cp $4
+ jr z, .asm_f869a
+ cp $5
+ jr z, .asm_f869f
+ cp $6
+ jr z, .asm_f86a2
+ cp $7
+ jr z, .asm_f869f
+ jr .asm_f86ad
+
+.asm_f865c
+ ld a, [hl]
+ cp $1
+ jr z, .asm_f869f
+ cp $2
+ jr z, .asm_f86a2
+ cp $3
+ jr z, .asm_f869f
+ cp $4
+ jr z, .asm_f869a
+ cp $5
+ jr z, .asm_f86ad
+ cp $6
+ jr z, .asm_f86ad
+ cp $7
+ jr z, .asm_f86ad
+ jr .asm_f86ad
+
+.asm_f867b
+ ld a, [hl]
+ cp $1
+ jr z, .asm_f86ad
+ cp $2
+ jr z, .asm_f869a
+ cp $3
+ jr z, .asm_f869f
+ cp $4
+ jr z, .asm_f86a2
+ cp $5
+ jr z, .asm_f86a2
+ cp $6
+ jr z, .asm_f869f
+ cp $7
+ jr z, .asm_f869a
+ jr .asm_f86ad
+
+.asm_f869a
+ call Func_f86f7
+ jr .asm_f86a2
+
+.asm_f869f
+ call Func_f86d0
+.asm_f86a2
+ xor a
+ ld [wChannelSoundIDs + CH7], a
+ ld a, $95
+ call PlaySound
+ and a
+ ret
+
+.asm_f86ad
+ ld a, $40
+ ld [wc5e3], a
+ xor a
+ ld [wc5e3 + 1], a
+ scf
+ ret
+
+Func_f86b8:
+ ld a, [wc5e3 + 1]
+ cp $2
+ ret nc
+ ld h, a
+ ld a, [wc5e3]
+ ld l, a
+ ld de, $2
+ add hl, de
+ ld a, h
+ ld [wc5e3 + 1], a
+ ld a, l
+ ld [wc5e3], a
+ ret
+
+Func_f86d0:
+ ld a, [wc5e3 + 1]
+ and a
+ jr nz, .asm_f86e2
+ ld a, [wc5e3]
+ cp $40
+ jr nc, .asm_f86e2
+ xor a
+ ld [wc5e3], a
+ ret
+
+.asm_f86e2
+ ld a, [wc5e3 + 1]
+ ld h, a
+ ld a, [wc5e3]
+ ld l, a
+ ld de, $ffc0
+ add hl, de
+ ld a, h
+ ld [wc5e3 + 1], a
+ ld a, l
+ ld [wc5e3], a
+ ret
+
+Func_f86f7:
+ ld a, [wc5e3 + 1]
+ and a
+ jr nz, .asm_f8709
+ ld a, [wc5e3]
+ cp $80
+ jr nc, .asm_f8709
+ xor a
+ ld [wc5e3], a
+ ret
+
+.asm_f8709
+ ld a, [wc5e3 + 1]
+ ld h, a
+ ld a, [wc5e3]
+ ld l, a
+ ld de, $ff80
+ add hl, de
+ ld a, h
+ ld [wc5e3 + 1], a
+ ld a, l
+ ld [wc5e3], a
+ ret
+
+Func_f871e:
+ ld a, [hSCX]
+ and $7
+ cp $3
+ jr c, .asm_f8740
+ cp $5
+ jr nc, .asm_f8740
+ ld a, [wc5ef]
+ cp $14
+ jr nz, .asm_f8740
+ call Func_f87a8
+ cp $a
+ jr c, .asm_f8740
+ ld [wc5ec], a
+ call Func_f9284
+ scf
+ ret
+
+.asm_f8740
+ and a
+ ret
+
+Func_f8742:
+ ld a, [hSCX]
+ and $7
+ cp $3
+ ret c
+ cp $5
+ ret nc
+ ld a, [wc5ef]
+ cp $6
+ jr z, .asm_f8766
+ cp $14
+ jr z, .asm_f8766
+ cp $7
+ jr z, .asm_f876a
+ call Func_f8778
+ ld a, $4
+ ld hl, $1
+ add hl, bc
+ ld [hl], a
+ ret
+
+.asm_f8766
+ ld a, $6
+ jr .asm_f876c
+
+.asm_f876a
+ ld a, $2
+.asm_f876c
+ ld e, a
+ ld a, [wc5de]
+ dec a
+ add e
+ ld hl, $1
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_f8778:
+ ld hl, wc5e0
+ ld a, [hl]
+ inc [hl]
+ and $7
+ ret nz
+ ld a, [wc5df]
+ and a
+ jr z, .asm_f8796
+ ld a, [wc5de]
+ and a
+ jr z, .asm_f8791
+ dec a
+ ld [wc5de], a
+ ret
+
+.asm_f8791
+ xor a
+ ld [wc5df], a
+ ret
+
+.asm_f8796
+ ld a, [wc5de]
+ cp $2
+ jr z, .asm_f87a2
+ inc a
+ ld [wc5de], a
+ ret
+
+.asm_f87a2
+ ld a, $1
+ ld [wc5df], a
+ ret
+
+Func_f87a8:
+ ld a, [wc5e3]
+ ld l, a
+ ld a, [wc5e3 + 1]
+ ld h, a
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld a, h
+ ret
+
+Func_f87b5:
+ ld hl, wc5eb
+ ld a, [hl]
+ inc [hl]
+ and $3
+ ret nz
+ call Func_f87ce
+ ld d, a
+ ld hl, $4
+ add hl, bc
+ ld e, [hl]
+ ld a, $a
+ push bc
+ call SpawnAnimatedObject
+ pop bc
+ ret
+
+Func_f87ce:
+ ld a, [hSCX]
+ and $8
+ jr nz, .asm_f87d9
+ ld hl, wc622
+ jr .asm_f87dc
+
+.asm_f87d9
+ ld hl, wc623
+.asm_f87dc
+ ld a, [wc5f0]
+ cp $6
+ jr z, .asm_f87ed
+ cp $14
+ jr z, .asm_f87ed
+ cp $7
+ jr z, .asm_f87f5
+ ld a, [hl]
+ ret
+
+.asm_f87ed
+ ld a, [hSCX]
+ and $7
+ ld e, a
+ ld a, [hl]
+ sub e
+ ret
+
+.asm_f87f5
+ ld a, [hSCX]
+ and $7
+ add [hl]
+ ret
+
+Func_f87fb:
+ ld hl, $4
+ add hl, bc
+ ld a, [hl]
+ cp $58
+ ret z
+ add $4
+ ld [hl], a
+ ret
+
+Func_f8807:
+ call MaskCurrentAnimatedObjectStruct
+ ret
+
+Func_f880b:
+ ld hl, $b
+ add hl, bc
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ dec [hl]
+ ld d, a
+ ld hl, $c
+ add hl, bc
+ ld a, [hl]
+ inc [hl]
+ call Func_f9362
+ cp $80
+ jr nc, .asm_f8825
+ xor $ff
+ inc a
+.asm_f8825
+ ld hl, $7
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_f882b:
+ ld hl, $b
+ add hl, bc
+ ld a, [hl]
+ inc [hl]
+ and $1
+ ret z
+ ld hl, $4
+ add hl, bc
+ ld a, [hl]
+ cp $c0
+ jr z, .asm_f883f
+ inc [hl]
+ ret
+
+.asm_f883f
+ ld a, $1
+ ld [wc633], a
+ call MaskCurrentAnimatedObjectStruct
+ ret
+
+Func_f8848:
+ ld a, [wc635]
+ ld e, a
+ ld d, $0
+ ld a, [wc5e3]
+ ld l, a
+ ld a, [wc5e3 + 1]
+ ld h, a
+ add hl, de
+ ld a, l
+ ld [wc635], a
+ ld d, h
+ ld hl, wOAMBuffer + 5 * 4 + 1
+ ld e, $9
+.asm_f8861
+ ld a, [hl]
+ add d
+ ld [hli], a
+ inc hl
+ inc hl
+ inc hl
+ dec e
+ jr nz, .asm_f8861
+ ret
+
+Func_f886b:
+ ld a, [wc5ef]
+ ld a, [hSCX]
+ add $48
+ ld e, a
+ srl e
+ srl e
+ srl e
+ ld d, $0
+ ld hl, vBGMap0
+ add hl, de
+ ld a, [wc5ea]
+ srl a
+ srl a
+ srl a
+ ld c, a
+.asm_f8889
+ ld a, c
+ and a
+ jr z, .asm_f889a
+ dec c
+ ld de, $20
+ add hl, de
+ ld a, h
+ and $3
+ or $98
+ ld h, a
+ jr .asm_f8889
+
+.asm_f889a
+ ld de, wc5ef
+ ld a, e
+ ld [H_VBCOPYDEST], a
+ ld a, d
+ ld [H_VBCOPYDEST + 1], a
+ ld a, l
+ ld [H_VBCOPYSRC], a
+ ld a, h
+ ld [H_VBCOPYSRC + 1], a
+ ld a, $1
+ ld [H_VBCOPYSIZE], a
+ ret
+
+Func_f88ae:
+ ld a, [hSCX]
+ and $8
+ jr nz, .asm_f88b9
+ ld hl, wc621
+ jr .asm_f88bc
+
+.asm_f88b9
+ ld hl, wc622
+.asm_f88bc
+ ld a, [wc5ef]
+ cp $6
+ jr z, .asm_f88d0
+ cp $14
+ jr z, .asm_f88d0
+ cp $7
+ jr z, .asm_f88db
+ ld a, [hl]
+ ld [wc5ea], a
+ ret
+
+.asm_f88d0
+ ld a, [hSCX]
+ and $7
+ ld e, a
+ ld a, [hl]
+ sub e
+ ld [wc5ea], a
+ ret
+
+.asm_f88db
+ ld a, [hSCX]
+ and $7
+ add [hl]
+ ld [wc5ea], a
+ ret
+
+Func_f88e4:
+ ld hl, wc5d6
+ ld e, $99
+ call Func_f88f0
+ ret nc
+ inc hl
+ ld e, $99
+Func_f88f0:
+ ld a, [hl]
+ and a
+ jr z, .asm_f88fa
+ sub $1
+ daa
+ ld [hl], a
+ and a
+ ret
+
+.asm_f88fa
+ ld [hl], e
+ scf
+ ret
+
+Func_f88fd:
+ ld de, wc5d7
+ ld hl, wOAMBuffer + 0 * 4 + 2
+ ld a, [de]
+ call Func_f890b
+ ld hl, wOAMBuffer + 2 * 4 + 2
+ ld a, [de]
+Func_f890b:
+ ld c, a
+ swap a
+ and $f
+ add $d0
+ ld [hli], a
+ inc hl
+ inc hl
+ inc hl
+ ld a, c
+ and $f
+ add $d0
+ ld [hl], a
+ dec de
+ ret
+
+Func_f891e:
+ ld hl, wTileMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ xor a
+ call FillMemory
+ ld hl, Tilemap_f8946
+ coord de, 0, 6
+ ld bc, Tilemap_f8946End - Tilemap_f8946
+ call CopyData
+ call Func_f8a0e
+ ld hl, wOAMBuffer + 5 * 4 + 1
+ ld bc, $24
+ xor a
+ call FillMemory
+ ld a, $1
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ret
+
+Tilemap_f8946:
+INCBIN "gfx/unknown_f8946.map"
+Tilemap_f8946End:
+
+Func_f8a0e:
+ coord hl, 1, 1
+ lb de, $3b, $3c
+ ld a, $40
+ call Func_f8a72
+ coord hl, 1, 2
+ lb de, $3f, $3f
+ ld a, $ff
+ call Func_f8a72
+ coord hl, 1, 3
+ lb de, $3f, $3f
+ ld a, $ff
+ call Func_f8a72
+ coord hl, 1, 4
+ lb de, $3f, $3f
+ ld a, $ff
+ call Func_f8a72
+ coord hl, 1, 5
+ lb de, $3f, $3f
+ ld a, $ff
+ call Func_f8a72
+ coord hl, 1, 6
+ lb de, $3f, $3f
+ ld a, $ff
+ call Func_f8a72
+ coord hl, 1, 7
+ lb de, $3f, $3f
+ ld a, $ff
+ call Func_f8a72
+ coord hl, 1, 8
+ lb de, $3f, $3f
+ ld a, $ff
+ call Func_f8a72
+ coord hl, 1, 9
+ lb de, $3d, $3e
+ ld a, $40
+ call Func_f8a72
+ ret
+
+Func_f8a72:
+ ld [hl], d
+ inc hl
+ ld c, $10
+.asm_f8a76
+ ld [hli], a
+ dec c
+ jr nz, .asm_f8a76
+ ld [hl], e
+ ret
+
+Func_f8a7c:
+ ld hl, Tilemap_f8a89
+ coord de, 6, 8
+ ld bc, $9
+ call CopyData
+ ret
+
+Tilemap_f8a89:
+ db $20,$2e,$2f,$30,$31,$2c,$32,$23,$33
+
+Func_f8a92:
+ ld hl, Tilemap_f8aa2
+ coord de, 2, 2
+ ld bc, $7
+ call CopyData
+ call Func_f8aca
+ ret
+
+Tilemap_f8aa2:
+ db $20,$21,$ff,$22,$23,$24,$25
+
+Func_f8aa9:
+ ld c, $63
+.asm_f8aab
+ push bc
+ ld hl, wc5d6
+ ld a, [hli]
+ or [hl]
+ and a
+ jr z, .asm_f8ac7
+ call Func_f88e4
+ ld e, $1
+.asm_f8ab9
+ call Func_f8b42
+ pop bc
+ dec c
+ jr nz, .asm_f8aab
+.asm_f8abf
+ ld a, $90
+ call PlaySound
+.asm_f8ac5
+ and a
+ ret
+
+.asm_f8ac7
+ pop bc
+ scf
+ ret
+
+Func_f8aca:
+ coord hl, 10, 2
+ ld de, wc5d7
+ ld a, [de]
+ call Func_f9350
+ inc hl
+ ld a, [de]
+ call Func_f9350
+ inc hl
+ inc hl
+ ld [hl], $21
+ inc hl
+ ld [hl], $25
+ inc hl
+ ld [hl], $26
+ ret
+
+Func_f8ae4:
+ ld hl, Tilemap_f8af4
+ coord de, 2, 4
+ ld bc, $7
+ call CopyData
+ call Func_f8b25
+ ret
+
+Tilemap_f8af4:
+ db $27,$28,$29,$2a,$23,$26,$26
+
+Func_f8afb:
+ ld c, $63
+.asm_f8afd
+ push bc
+ ld hl, wc5da
+ ld a, [hli]
+ ld e, a
+ or [hl]
+ jr z, .asm_f8b22
+ ld d, [hl]
+ ld a, e
+ sub $1
+ daa
+ ld e, a
+ ld a, d
+ sbc $0
+ daa
+ ld [hld], a
+ ld [hl], e
+ ld e, $1
+ call Func_f8b42
+ pop bc
+ dec c
+ jr nz, .asm_f8afd
+ ld a, $90
+ call PlaySound
+.asm_f8b20
+ and a
+ ret
+
+.asm_f8b22
+ pop bc
+ scf
+ ret
+
+Func_f8b25:
+ ld a, [wc5db]
+ coord hl, 10, 4
+ call Func_f9350
+ ld a, [wc5da]
+ coord hl, 12, 4
+ call Func_f9350
+ inc hl
+ inc hl
+ ld [hl], $21
+ inc hl
+ ld [hl], $25
+ inc hl
+ ld [hl], $26
+ ret
+
+Func_f8b42:
+ ld a, [wc5dc]
+ add e
+ daa
+ ld [wc5dc], a
+ ld a, [wc5dd]
+ adc $0
+ daa
+ ld [wc5dd], a
+ ret nc
+ ld a, $99
+ ld [wc5dc], a
+ ld [wc5dd], a
+ ret
+
+Func_f8b5d:
+ ld a, [wc5dd]
+ coord hl, 10, 6
+ call Func_f9350
+ ld a, [wc5dc]
+ coord hl, 12, 6
+ call Func_f9350
+ inc hl
+ inc hl
+ ld [hl], $21
+ inc hl
+ ld [hl], $25
+ inc hl
+ ld [hl], $26
+ ret
+
+Func_f8b7a:
+ ld hl, Tilemap_f8b8d
+ coord de, 2, 6
+ ld bc, $5
+ call CopyData
+ call Func_f8b25
+ call Func_f8b5d
+ ret
+
+Tilemap_f8b8d:
+ db $2b,$2c,$25,$28,$2d
+
+Func_f8b92:
+ ld hl, wd496
+ ld a, [wc5dd]
+ cp [hl]
+ jr c, .asm_f8ba6
+ jr nz, .asm_f8bb0
+ dec hl
+ ld a, [wc5dc]
+ cp [hl]
+ jr c, .asm_f8ba6
+ jr nz, .asm_f8bb0
+.asm_f8ba6
+ call WaitForSoundToFinish
+ ld e, $1b
+ call Func_f8bcb
+ and a
+ ret
+
+.asm_f8bb0
+ ld a, [wc5dc]
+ ld [wd495], a
+ ld a, [wc5dd]
+ ld [wd496], a
+ call WaitForSoundToFinish
+ ld e, $21
+ call Func_f8bcb
+ ld a, $96
+ call PlaySound
+ scf
+ ret
Func_f8bcb: ; f8bcb (3e:4bcb)
push de
@@ -9,19 +1723,2776 @@ Func_f8bcb: ; f8bcb (3e:4bcb)
callab PlayPikachuSoundClip
ret
-Func_f8bdf: ; f8bdf (3e:4bdf)
- dr $f8bdf,$f982d
-PlayIntroScene: ; f982d (3e:582d)
- dr $f982d,$fa35a
+Func_f8bdf:
+ ld a, [wc5d9]
+ inc a
+ cp $4
+ jr c, .asm_f8be9
+ ld a, $3
+.asm_f8be9
+ ld [wc5d9], a
+ ret
+
+Func_f8bed:
+ ld a, [wc5d9]
+ and a
+ ret z
+ ld a, [wc62f]
+ and $3
+ cp $3
+ jr z, .asm_f8c2b
+ ld a, [wc5d9]
+ ld d, a
+ ld e, $1
+ ld a, $0
+.asm_f8c03
+ add e
+ sla e
+ dec d
+ jr nz, .asm_f8c03
+.asm_f8c09
+ push af
+ ld e, $50
+ call Func_f8c7c
+ pop af
+ dec a
+ jr nz, .asm_f8c09
+ ld hl, $5
+ add hl, bc
+ ld a, [hl]
+ sub $10
+ ld d, a
+ ld hl, $4
+ add hl, bc
+ ld e, [hl]
+ ld a, [wc5d9]
+ add $3
+ push bc
+ call SpawnAnimatedObject
+ pop bc
+ ret
-YellowIntroGraphics: INCBIN "gfx/yellow_intro.2bpp"
+.asm_f8c2b
+ ld a, [wc5d9]
+ cp $3
+ jr c, .asm_f8c53
+ ld a, $a
+.asm_f8c34
+ push af
+ ld e, $50
+ call Func_f8c7c
+ pop af
+ dec a
+ jr nz, .asm_f8c34
+ ld hl, $5
+ add hl, bc
+ ld a, [hl]
+ sub $10
+ ld d, a
+ ld hl, $4
+ add hl, bc
+ ld e, [hl]
+ ld a, $9
+ push bc
+ call SpawnAnimatedObject
+ pop bc
+ ret
+
+.asm_f8c53
+ ld e, $50
+ call Func_f8c7c
+ ld e, $50
+ call Func_f8c7c
+ ld e, $50
+ call Func_f8c7c
+ ld e, $30
+ call Func_f8c7c
+ ld hl, $5
+ add hl, bc
+ ld a, [hl]
+ sub $10
+ ld d, a
+ ld hl, $4
+ add hl, bc
+ ld e, [hl]
+ ld a, $8
+ push bc
+ call SpawnAnimatedObject
+ pop bc
+ ret
+
+Func_f8c7c:
+ ld a, [wc5da]
+ add e
+ daa
+ ld [wc5da], a
+ ld a, [wc5db]
+ adc $0
+ daa
+ ld [wc5db], a
+ ret nc
+ ld a, $99
+ ld [wc5da], a
+ ld [wc5db], a
+ ret
+
+Func_f8c97:
+ ld a, $a0
+ ld [wc62e], a
+ ld a, [hSCX]
+ ld h, a
+ ld a, [wc617]
+ ld l, a
+ ld de, $900
+ add hl, de
+ ld a, l
+ ld [wc617], a
+ ld a, h
+ ld [hSCX], a
+ jr Func_f8cc7
+
+Func_f8cb0:
+ ld a, $a0
+ ld [wc62e], a
+ ld a, [hSCX]
+ ld h, a
+ ld a, [wc617]
+ ld l, a
+ ld de, $180
+ add hl, de
+ ld a, l
+ ld [wc617], a
+ ld a, h
+ ld [hSCX], a
+Func_f8cc7:
+ ld hl, wc618
+ ld a, [hSCX]
+ cp [hl]
+ ret z
+ ld [hl], a
+ and $f0
+ ld hl, wc619
+ cp [hl]
+ ret z
+ ld [hl], a
+ call Func_f8d44
+ ld a, b
+ ld [wc5e8], a
+ ld a, c
+ ld [wc5e9], a
+ push de
+ ld hl, wc61a
+ ld de, wc61c
+ ld c, $12
+.asm_f8ceb
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .asm_f8ceb
+ ld a, [wc5e8]
+ ld [hli], a
+ ld a, [wc5e9]
+ ld [hl], a
+ pop de
+ ld hl, wRedrawRowOrColumnSrcTiles
+ ld c, $8
+.asm_f8cff
+ ld a, [de]
+ call Func_f8d28
+ inc de
+ dec c
+ jr nz, .asm_f8cff
+ ld a, [wc62e]
+ ld e, a
+ ld a, [hSCX]
+ add e
+ and $f0
+ srl a
+ srl a
+ srl a
+ ld e, a
+ ld d, $0
+ ld hl, vBGMap0
+ add hl, de
+ ld a, l
+ ld [hRedrawRowOrColumnDest], a
+ ld a, h
+ ld [hRedrawRowOrColumnDest + 1], a
+ ld a, $1
+ ld [hRedrawRowOrColumnMode], a
+ ret
+
+Func_f8d28:
+ push de
+ push hl
+ ld l, a
+ ld h, $0
+ ld de, Unkn_f96e5
+ add hl, hl
+ add hl, hl
+ add hl, de
+ ld e, l
+ ld d, h
+ pop hl
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ pop de
+ ret
+
+Func_f8d44:
+ ld a, [wc5d3]
+ ld e, a
+ ld d, $0
+ ld hl, Jumptable_f8d53
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_f8d53:
+ dw Func_f8e4b
+ dw Func_f8f28
+ dw Func_f8f31
+ dw Func_f8f3a
+ dw Func_f8f43
+ dw Func_f8e7d
+ dw Func_f8f4c
+ dw Func_f8f55
+ dw Func_f8f5e
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8f94
+ dw Func_f8ec5
+ dw Func_f8ece
+ dw Func_f8ed7
+ dw Func_f8ee0
+ dw Func_f8ee9
+ dw Func_f8ef2
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8f94
+ dw Func_f8efb
+ dw Func_f8f04
+ dw Func_f8f0d
+ dw Func_f8f16
+ dw Func_f8f1f
+ dw Func_f8efb
+ dw Func_f8f04
+ dw Func_f8f0d
+ dw Func_f8f16
+ dw Func_f8f1f
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8f94
+ dw Func_f8f28
+ dw Func_f8f31
+ dw Func_f8f3a
+ dw Func_f8f43
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8f94
+ dw Func_f8f4c
+ dw Func_f8f55
+ dw Func_f8f5e
+ dw Func_f8f4c
+ dw Func_f8f55
+ dw Func_f8f5e
+ dw Func_f8f4c
+ dw Func_f8f55
+ dw Func_f8f5e
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8f94
+ dw Func_f8f67
+ dw Func_f8f70
+ dw Func_f8efb
+ dw Func_f8f04
+ dw Func_f8f0d
+ dw Func_f8f16
+ dw Func_f8f1f
+ dw Func_f8f67
+ dw Func_f8f70
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8f94
+ dw Func_f8ec5
+ dw Func_f8ece
+ dw Func_f8ed7
+ dw Func_f8ee0
+ dw Func_f8ee9
+ dw Func_f8ef2
+ dw Func_f8e7d
+ dw Func_f8f67
+ dw Func_f8f70
+ dw Func_f8f67
+ dw Func_f8f70
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8f94
+ dw Func_f8efb
+ dw Func_f8f04
+ dw Func_f8f0d
+ dw Func_f8f16
+ dw Func_f8f1f
+ dw Func_f8f28
+ dw Func_f8f31
+ dw Func_f8f3a
+ dw Func_f8f43
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8e7d
+ dw Func_f8f94
+ dw Func_f8e86
+ dw Func_f8e8f
+ dw Func_f8e98
+ dw Func_f8ea1
+ dw Func_f8eaa
+ dw Func_f8eb3
+ dw Func_f8ebc
+ dw Func_f8f9d
+ dw Func_f8e7d
+ dw Func_f8f79
+ dw Func_f8f82
+ dw Func_f8f82
+ dw Func_f8f82
+ dw Func_f8f82
+ dw Func_f8f82
+ dw Func_f8f82
+ dw Func_f8f82
+ dw Func_f8f8b
+
+Func_f8e4b:
+ ld a, [wc5e5]
+ cp $16
+ jr c, .asm_f8e5a
+ jr z, .asm_f8e56
+ jr nc, .asm_f8e6e
+.asm_f8e56
+ ld a, $6a
+ jr .asm_f8e6b
+
+.asm_f8e5a
+ ld a, [wc5d5]
+ and a
+ jr z, .asm_f8e6e
+ dec a
+ and $7
+ ld e, a
+ ld d, $0
+ ld hl, Unkn_f8e75
+ add hl, de
+ ld a, [hl]
+.asm_f8e6b
+ ld [wc5d3], a
+.asm_f8e6e
+ lb bc, $74, $74
+ ld de, Unkn_f973d
+ ret
+
+Unkn_f8e75:
+ db $01,$0e,$1a,$29,$32,$40,$4d,$5c
+
+Func_f8e7d:
+ lb bc, $74, $74
+ ld de, Unkn_f973d
+ jp Func_f8fa9
+
+Func_f8e86:
+ lb bc, $74, $6c
+ ld de, Unkn_f9745
+ jp Func_f8fa9
+
+Func_f8e8f:
+ lb bc, $64, $5c
+ ld de, Unkn_f974d
+ jp Func_f8fa9
+
+Func_f8e98:
+ lb bc, $54, $4c
+ ld de, Unkn_f9755
+ jp Func_f8fa9
+
+Func_f8ea1:
+ lb bc, $44, $44
+ ld de, Unkn_f975d
+ jp Func_f8fa9
+
+Func_f8eaa:
+ lb bc, $44, $4c
+ ld de, Unkn_f9765
+ jp Func_f8fa9
+
+Func_f8eb3:
+ lb bc, $54, $5c
+ ld de, Unkn_f976d
+ jp Func_f8fa9
+
+Func_f8ebc:
+ lb bc, $64, $6c
+ ld de, Unkn_f9775
+ jp Func_f8fa9
+
+Func_f8ec5:
+ lb bc, $74, $6c
+ ld de, Unkn_f977d
+ jp Func_f8fa9
+
+Func_f8ece:
+ lb bc, $64, $5c
+ ld de, Unkn_f9785
+ jp Func_f8fa9
+
+Func_f8ed7:
+ lb bc, $54, $4c
+ ld de, Unkn_f978d
+ jp Func_f8fa9
+
+Func_f8ee0:
+ lb bc, $4c, $4c
+ ld de, Unkn_f9795
+ jp Func_f8fa9
+
+Func_f8ee9:
+ lb bc, $54, $5c
+ ld de, Unkn_f979d
+ jp Func_f8fa9
+
+Func_f8ef2:
+ lb bc, $64, $6c
+ ld de, Unkn_f97a5
+ jp Func_f8fa9
+
+Func_f8efb:
+ lb bc, $74, $6c
+ ld de, Unkn_f97ad
+ jp Func_f8fa9
+
+Func_f8f04:
+ lb bc, $64, $5c
+ ld de, Unkn_f97b5
+ jp Func_f8fa9
-Func_fbb5a: ; fbb5a (3e:7b5a)
- ld hl, wTileMapBackup
- ld bc, 10 * SCREEN_WIDTH
+Func_f8f0d:
+ lb bc, $54, $54
+ ld de, Unkn_f97bd
+ jp Func_f8fa9
+
+Func_f8f16:
+ lb bc, $54, $5c
+ ld de, Unkn_f97c5
+ jp Func_f8fa9
+
+Func_f8f1f:
+ lb bc, $64, $6c
+ ld de, Unkn_f97cd
+ jp Func_f8fa9
+
+Func_f8f28:
+ lb bc, $74, $6c
+ ld de, Unkn_f97d5
+ jp Func_f8fa9
+
+Func_f8f31:
+ lb bc, $64, $5c
+ ld de, Unkn_f97dd
+ jp Func_f8fa9
+
+Func_f8f3a:
+ lb bc, $5c, $5c
+ ld de, Unkn_f97e5
+ jp Func_f8fa9
+
+Func_f8f43:
+ lb bc, $64, $6c
+ ld de, Unkn_f97ed
+ jp Func_f8fa9
+
+Func_f8f4c:
+ lb bc, $74, $6c
+ ld de, Unkn_f97f5
+ jp Func_f8fa9
+
+Func_f8f55:
+ lb bc, $64, $64
+ ld de, Unkn_f97fd
+ jp Func_f8fa9
+
+Func_f8f5e:
+ lb bc, $64, $6c
+ ld de, Unkn_f9805
+ jp Func_f8fa9
+
+Func_f8f67:
+ lb bc, $74, $6c
+ ld de, Unkn_f980d
+ jp Func_f8fa9
+
+Func_f8f70:
+ lb bc, $6c, $6c
+ ld de, Unkn_f9815
+ jp Func_f8fa9
+
+Func_f8f79:
+ lb bc, $74, $74
+ ld de, Unkn_f981d
+ jp Func_f8fa9
+
+Func_f8f82:
+ lb bc, $74, $74
+ ld de, Unkn_f9825
+ jp Func_f8fa9
+
+Func_f8f8b:
+ lb bc, $74, $74
+ ld de, Unkn_f9825
+ jp Func_f8fae
+
+Func_f8f94:
+ lb bc, $74, $74
+ ld de, Unkn_f973d
+ jp Func_f8fae
+
+Func_f8f9d:
+ lb bc, $74, $74
+ ld de, Unkn_f973d
+ ret
+
+Func_f8fa4:
+ inc a
+ ld [wc5d3], a
+ ret
+
+Func_f8fa9:
+ ld hl, wc5d3
+ inc [hl]
+ ret
+
+Func_f8fae:
+ xor a
+ ld [wc5d3], a
+ ret
+
+Func_f8fb3:
+ call Func_f9279
+ call ClearSprites
+ call DisableLCD
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call ClearObjectAnimationBuffers
+ ld hl, $6324
+ ld de, $8800
+ ld bc, $900
+ ld a, $20
+ call FarCopyData
+ ld a, Unkn_f93d3 % $100
+ ld [wAnimatedObjectSpawnStateDataPointer], a
+ ld a, Unkn_f93d3 / $100
+ ld [wAnimatedObjectSpawnStateDataPointer + 1], a
+ ld a, Jumptable_f93fa % $100
+ ld [wAnimatedObjectJumptablePointer], a
+ ld a, Jumptable_f93fa / $100
+ ld [wAnimatedObjectJumptablePointer + 1], a
+ ld a, Unkn_f9507 % $100
+ ld [wAnimatedObjectOAMDataPointer], a
+ ld a, Unkn_f9507 / $100
+ ld [wAnimatedObjectOAMDataPointer + 1], a
+ ld a, Unkn_f9405 % $100
+ ld [wAnimatedObjectFramesDataPointer], a
+ ld a, Unkn_f9405 / $100
+ ld [wAnimatedObjectFramesDataPointer + 1], a
+ ld a, $c
+ lb de, $74, $58
+ call SpawnAnimatedObject
+ call Func_f9053
xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $90
+ ld [hWY], a
+ ld b, $f
+ call RunPaletteCommand
+ ld a, $e3
+ ld [rLCDC], a
+ ld a, $1
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call DelayFrame
+ call DelayFrame
+ call DelayFrame
+ call Func_f81e9
+ ld a, $e4
+ ld [rOBP0], a
+ ld a, $e0
+ ld [rOBP1], a
+ call UpdateGBCPal_OBP0
+ call UpdateGBCPal_OBP1
+ call DelayFrame
+ ld a, $99
+ ld c, $20
+ call PlayMusic
+ xor a
+ ld [wc633], a
+.asm_f9041
+ ld a, [wc633]
+ and a
+ ret nz
+ ld a, $0
+ ld [wCurrentAnimatedObjectOAMBufferOffset], a
+ call RunObjectAnimations
+ call DelayFrame
+ jr .asm_f9041
+
+Func_f9053:
+ ld hl, wTileMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, $ff
call FillMemory
+ ld hl, Tilemap_f90bc
+ coord de, 0, 6
+ ld bc, 12 * SCREEN_WIDTH
+ call CopyData
+ ld de, Tilemap_f91c8
+ coord hl, 4, 0
+ lb bc, 6, 12
+ call .CopyBox
+ coord hl, 3, 7
+ lb bc, 3, 15
+ call .FillBoxWithFF
+ ld hl, Tilemap_f91ac
+ coord de, 3, 7
+ ld bc, 15
+ call CopyData
+ ld hl, Tilemap_f91bb
+ coord de, 4, 9
+ ld bc, 13
+ call CopyData
+ ret
+
+.CopyBox:
+.copy_row
+ push bc
+ push hl
+.copy_col
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .copy_col
+ ld bc, SCREEN_WIDTH
+ pop hl
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .copy_row
+ ret
+
+.FillBoxWithFF:
+.fill_row
+ push bc
+ push hl
+.fill_col
+ ld [hl], $ff
+ inc hl
+ dec c
+ jr nz, .fill_col
+ pop hl
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .fill_row
+ ret
+
+Tilemap_f90bc: INCBIN "gfx/unknown_f90bc.map"
+Tilemap_f91ac: INCBIN "gfx/unknown_f91ac.map"
+Tilemap_f91bb: INCBIN "gfx/unknown_f91bb.map"
+Tilemap_f91c8: INCBIN "gfx/unknown_f91c8.map"
+
+Func_f9210:
+ ld hl, wc710
+ ld de, wc710 + 1
+ ld c, $80
+ ld a, [hl]
+ push af
+.asm_f921a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .asm_f921a
+ pop af
+ ld [hl], a
+ ret
+
+Func_f9223:
+ ld hl, wc700
+ ld bc, $100
+ ld de, $0
+.asm_f922c
+ ld a, e
+ and $1f
+ ld e, a
+ push hl
+ ld hl, Unkn_f96c5
+ add hl, de
+ ld a, [hl]
+ pop hl
+ ld [hli], a
+ inc e
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_f922c
+ ret
+
+Func_f923f:
+ call Joypad
+ ld a, [H_FRAMECOUNTER]
+ and a
+ jr nz, .asm_f9250
+ ld a, [hJoyHeld]
+ ld [hJoy5], a
+ ld a, $2
+ ld [H_FRAMECOUNTER], a
+ ret
+
+.asm_f9250
+ xor a
+ ld [hJoy5], a
+ ret
+
+SurfingPikachuMinigame_BlankPals:
+ xor a
+ ld [rBGP], a
+ ld [rOBP0], a
+ ld [rOBP1], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ call UpdateGBCPal_OBP1
+ ret
+
+SurfingPikachuMinigame_NormalPals:
+ ld a, $e4
+ ld [rBGP], a
+ ld [rOBP0], a
+ ld a, $e0
+ ld [rOBP1], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ call UpdateGBCPal_OBP1
+ ret
+
+Func_f9279:
+ ld hl, wTileMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ xor a
+ call FillMemory
+ ret
+
+Func_f9284:
+ xor a
+ ld [wc5ed], a
+ ld [wc5ee], a
+ ret
+
+Func_f928c:
+ ld a, [wc5ed]
+ and a
+ jr nz, .asm_f92e4
+ ld a, [wc5ec]
+ ld d, a
+ ld a, [wc5ee]
+ or d
+ jr z, .asm_f92dd
+ ld a, [wc5ee]
+ ld e, a
+ ld hl, $ff80
+ add hl, de
+ ld a, l
+ ld [wc5ee], a
+ ld a, h
+ ld [wc5ec], a
+ ld e, a
+ ld d, $0
+ call Func_f9340
+ ld e, l
+ ld d, h
+ ld a, $4
+ call Func_f9340
+ ld a, l
+ xor $ff
+ inc a
+ ld l, a
+ ld a, h
+ xor $ff
+ ld h, a
+ push hl
+ ld hl, $5
+ add hl, bc
+ ld d, [hl]
+ ld hl, $c
+ add hl, bc
+ ld e, [hl]
+ pop hl
+ add hl, de
+ ld e, l
+ ld d, h
+ ld hl, $5
+ add hl, bc
+ ld [hl], d
+ ld hl, $c
+ add hl, bc
+ ld [hl], e
+ and a
+ ret
+
+.asm_f92dd
+ ld a, $1
+ ld [wc5ed], a
+ and a
+ ret
+
+.asm_f92e4
+ ld a, [wc5ea]
+ ld e, a
+ ld hl, $5
+ add hl, bc
+ ld a, [hl]
+ cp $90
+ jr nc, .asm_f92f4
+ cp e
+ jr nc, .asm_f9330
+.asm_f92f4
+ ld a, [wc5ec]
+ ld d, a
+ ld a, [wc5ee]
+ ld e, a
+ ld hl, $80
+ add hl, de
+ ld a, l
+ ld [wc5ee], a
+ ld a, h
+ ld [wc5ec], a
+ ld e, a
+ ld d, $0
+ call Func_f9340
+ ld e, l
+ ld d, h
+ ld a, $4
+ call Func_f9340
+ push hl
+ ld hl, $5
+ add hl, bc
+ ld d, [hl]
+ ld hl, $c
+ add hl, bc
+ ld e, [hl]
+ pop hl
+ add hl, de
+ ld e, l
+ ld d, h
+ ld hl, $5
+ add hl, bc
+ ld [hl], d
+ ld hl, $c
+ add hl, bc
+ ld [hl], e
+ and a
+ ret
+
+.asm_f9330
+ ld hl, $5
+ add hl, bc
+ ld a, [wc5ea]
+ ld [hl], a
+ ld hl, $c
+ add hl, bc
+ ld [hl], $0
+ scf
+ ret
+
+Func_f9340:
+ ld hl, $0
+.asm_f9343
+ srl a
+ jr nc, .asm_f9348
+ add hl, de
+.asm_f9348
+ sla e
+ rl d
+ and a
+ jr nz, .asm_f9343
+ ret
+
+Func_f9350:
+ ld c, a
+ swap a
+ and $f
+ add $d0
+ ld [hli], a
+ ld a, c
+ and $f
+ add $d0
+ ld [hl], a
+ dec de
+ ret
+
+Func_f9360: ; cosine
+ add $10
+Func_f9362: ; sine
+ and $3f
+ cp $20
+ jr nc, .asm_f936d
+ call Func_f9377
+ ld a, h
+ ret
+
+.asm_f936d
+ and $1f
+ call Func_f9377
+ ld a, h
+ xor $ff
+ inc a
+ ret
+
+Func_f9377:
+ ld e, a
+ ld a, d
+ ld d, $0
+ ld hl, Unkn_f9393
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0
+.asm_f9386
+ srl a
+ jr nc, .asm_f938b
+ add hl, de
+.asm_f938b
+ sla e
+ rl d
+ and a
+ jr nz, .asm_f9386
+ ret
+
+Unkn_f9393:
+ sine_wave $100
+
+Unkn_f93d3:
+ db $00, $00, $00
+ db $04, $01, $00
+ db $11, $02, $00
+ db $12, $02, $00
+ db $15, $00, $00
+ db $16, $00, $00
+ db $17, $00, $00
+ db $18, $00, $00
+ db $19, $00, $00
+ db $1a, $00, $00
+ db $14, $00, $00
+ db $13, $03, $00
+ db $1b, $04, $00
+
+Jumptable_f93fa:
+ dw Func_f9404
+ dw Func_f8470
+ dw Func_f87fb
+ dw Func_f880b
+ dw Func_f882b
+
+Func_f9404:
+ ret
+
+Unkn_f9405:
+ dw Unkn_f943d
+ dw Unkn_f9440
+ dw Unkn_f9445
+ dw Unkn_f944a
+ dw Unkn_f944f
+ dw Unkn_f9454
+ dw Unkn_f9459
+ dw Unkn_f945e
+ dw Unkn_f9463
+ dw Unkn_f9468
+ dw Unkn_f946d
+ dw Unkn_f9472
+ dw Unkn_f9477
+ dw Unkn_f947c
+ dw Unkn_f9481
+ dw Unkn_f9486
+ dw Unkn_f948b
+ dw Unkn_f9494
+ dw Unkn_f9499
+ dw Unkn_f949e
+ dw Unkn_f94fb
+ dw Unkn_f94a1
+ dw Unkn_f94b0
+ dw Unkn_f94bf
+ dw Unkn_f94ce
+ dw Unkn_f94dd
+ dw Unkn_f94ec
+ dw Unkn_f94fe
+
+Unkn_f943d:
+ frame $00, 32
+ endanim
+
+Unkn_f9440:
+ frame $01, 8
+ frame $02, 8
+ dorestart
+
+Unkn_f9445:
+ frame $03, 8
+ frame $04, 8
+ dorestart
+
+Unkn_f944a:
+ frame $05, 8
+ frame $06, 8
+ dorestart
+
+Unkn_f944f:
+ frame $07, 8
+ frame $08, 8
+ dorestart
+
+Unkn_f9454:
+ frame $09, 8
+ frame $0a, 8
+ dorestart
+
+Unkn_f9459:
+ frame $0b, 8
+ frame $0c, 8
+ dorestart
+
+Unkn_f945e:
+ frame $0d, 8
+ frame $0e, 8
+ dorestart
+
+Unkn_f9463:
+ frame $01, 8, OAM_HFLIP, OAM_VFLIP
+ frame $02, 8, OAM_HFLIP, OAM_VFLIP
+ dorestart
+
+Unkn_f9468:
+ frame $03, 8, OAM_HFLIP, OAM_VFLIP
+ frame $04, 8, OAM_HFLIP, OAM_VFLIP
+ dorestart
+
+Unkn_f946d:
+ frame $05, 8, OAM_HFLIP, OAM_VFLIP
+ frame $06, 8, OAM_HFLIP, OAM_VFLIP
+ dorestart
+
+Unkn_f9472:
+ frame $07, 8, OAM_HFLIP, OAM_VFLIP
+ frame $08, 8, OAM_HFLIP, OAM_VFLIP
+ dorestart
+
+Unkn_f9477:
+ frame $09, 8, OAM_HFLIP, OAM_VFLIP
+ frame $0a, 8, OAM_HFLIP, OAM_VFLIP
+ dorestart
+
+Unkn_f947c:
+ frame $0b, 8, OAM_HFLIP, OAM_VFLIP
+ frame $0c, 8, OAM_HFLIP, OAM_VFLIP
+ dorestart
+
+Unkn_f9481:
+ frame $0d, 8, OAM_HFLIP, OAM_VFLIP
+ frame $0e, 8, OAM_HFLIP, OAM_VFLIP
+ dorestart
+
+Unkn_f9486:
+ frame $11, 7
+ frame $12, 7
+ dorestart
+
+Unkn_f948b:
+ frame $13, 2
+ frame $14, 2
+ dorepeat 8
+ frame $15, 2
+ endanim
+
+Unkn_f9494:
+ frame $16, 32
+ frame $16, 32
+ delanim
+
+Unkn_f9499:
+ frame $17, 32
+ frame $17, 32
+ delanim
+
+Unkn_f949e:
+ frame $18, 32
+ endanim
+
+Unkn_f94a1:
+ frame $1a, 4
+ dorepeat 1
+ frame $1a, 3
+ dorepeat 1
+ frame $1a, 2
+ dorepeat 1
+ frame $1a, 1
+ delanim
+
+Unkn_f94b0:
+ frame $1b, 4
+ dorepeat 1
+ frame $1b, 3
+ dorepeat 1
+ frame $1b, 2
+ dorepeat 1
+ frame $1b, 1
+ delanim
+
+Unkn_f94bf:
+ frame $1c, 4
+ dorepeat 1
+ frame $1c, 3
+ dorepeat 1
+ frame $1c, 2
+ dorepeat 1
+ frame $1c, 1
+ delanim
+
+Unkn_f94ce:
+ frame $1d, 4
+ dorepeat 1
+ frame $1d, 3
+ dorepeat 1
+ frame $1d, 2
+ dorepeat 1
+ frame $1d, 1
+ delanim
+
+Unkn_f94dd:
+ frame $1e, 4
+ dorepeat 1
+ frame $1e, 3
+ dorepeat 1
+ frame $1e, 2
+ dorepeat 1
+ frame $1e, 1
+ delanim
+
+Unkn_f94ec:
+ frame $1f, 4
+ dorepeat 1
+ frame $1f, 3
+ dorepeat 1
+ frame $1f, 2
+ dorepeat 1
+ frame $1f, 1
+ delanim
+
+Unkn_f94fb:
+ frame $19, 1
+ delanim
+
+Unkn_f94fe:
+ frame $20, 7
+ frame $21, 7
+ frame $22, 7
+ frame $23, 7
+ dorestart
+
+Unkn_f9507:
+ dbw $00, Unkn_f9573
+ dbw $00, Unkn_f9578
+ dbw $36, Unkn_f9578
+ dbw $03, Unkn_f9578
+ dbw $39, Unkn_f9578
+ dbw $06, Unkn_f9578
+ dbw $3c, Unkn_f9578
+ dbw $09, Unkn_f9578
+ dbw $60, Unkn_f9578
+ dbw $0c, Unkn_f9578
+ dbw $63, Unkn_f9578
+ dbw $30, Unkn_f9578
+ dbw $66, Unkn_f9578
+ dbw $33, Unkn_f9578
+ dbw $69, Unkn_f9578
+ dbw $6c, Unkn_f9578
+ dbw $9c, Unkn_f9578
+ dbw $a0, Unkn_f9578
+ dbw $a3, Unkn_f9578
+ dbw $a7, Unkn_f95db
+ dbw $a8, Unkn_f95f4
+ dbw $98, Unkn_f9625
+ dbw $e0, Unkn_f959d
+ dbw $e6, Unkn_f959d
+ dbw $ca, Unkn_f959d
+ dbw $a7, Unkn_f95ce
+ dbw $00, Unkn_f9632
+ dbw $00, Unkn_f963f
+ dbw $00, Unkn_f9650
+ dbw $00, Unkn_f9661
+ dbw $00, Unkn_f9672
+ dbw $00, Unkn_f9683
+ dbw $80, Unkn_f9694
+ dbw $84, Unkn_f9694
+ dbw $88, Unkn_f9694
+ dbw $8c, Unkn_f9694
+
+Unkn_f9573:
+ db 1
+ db $fc, $fc, $00, $00
+
+Unkn_f9578:
+ db 9
+ db $f4, $f4, $00, $00
+ db $f4, $fc, $01, $00
+ db $f4, $04, $02, $00
+ db $fc, $f4, $10, $00
+ db $fc, $fc, $11, $00
+ db $fc, $04, $12, $00
+ db $04, $f4, $20, $00
+ db $04, $fc, $21, $00
+ db $04, $04, $22, $00
+
+Unkn_f959d:
+ db 12
+ db $f8, $e8, $00, $00
+ db $f8, $f0, $01, $00
+ db $f8, $f8, $02, $00
+ db $f8, $00, $03, $00
+ db $f8, $08, $04, $00
+ db $f8, $10, $05, $00
+ db $00, $e8, $10, $00
+ db $00, $f0, $11, $00
+ db $00, $f8, $12, $00
+ db $00, $00, $13, $00
+ db $00, $08, $14, $00
+ db $00, $10, $15, $00
+
+Unkn_f95ce:
+ db 3
+ db $fc, $0b, $00, $10
+ db $04, $03, $0f, $10
+ db $04, $0b, $10, $10
+
+Unkn_f95db:
+ db 6
+ db $fc, $f0, $00, $30
+ db $fc, $08, $00, $10
+ db $04, $f0, $10, $30
+ db $04, $f8, $0f, $30
+ db $04, $00, $0f, $10
+ db $04, $08, $10, $10
+
+Unkn_f95f4:
+ db 12
+ db $f4, $f0, $00, $10
+ db $f4, $f8, $01, $10
+ db $f4, $00, $01, $30
+ db $f4, $08, $00, $30
+ db $fc, $f0, $10, $10
+ db $fc, $f8, $11, $10
+ db $fc, $00, $11, $30
+ db $fc, $08, $10, $30
+ db $04, $f0, $20, $10
+ db $04, $f8, $21, $10
+ db $04, $00, $21, $30
+ db $04, $08, $20, $30
+
+Unkn_f9625:
+ db 3
+ db $04, $f4, $00, $00
+ db $04, $fc, $01, $00
+ db $04, $04, $02, $00
+
+Unkn_f9632:
+ db 3
+ db $fc, $f4, $bf, $00
+ db $fc, $fc, $d5, $00
+ db $fc, $04, $d0, $00
+
+Unkn_f963f:
+ db 4
+ db $fc, $f0, $bf, $00
+ db $fc, $f8, $d1, $00
+ db $fc, $00, $d5, $00
+ db $fc, $08, $d0, $00
+
+Unkn_f9650:
+ db 4
+ db $fc, $f0, $bf, $00
+ db $fc, $f8, $d3, $00
+ db $fc, $00, $d5, $00
+ db $fc, $08, $d0, $00
+
+Unkn_f9661:
+ db 4
+ db $fc, $f0, $bf, $00
+ db $fc, $f8, $d7, $00
+ db $fc, $00, $d5, $00
+ db $fc, $08, $d0, $00
+
+Unkn_f9672:
+ db 4
+ db $fc, $f0, $bf, $00
+ db $fc, $f8, $d1, $00
+ db $fc, $00, $d8, $00
+ db $fc, $08, $d0, $00
+
+Unkn_f9683:
+ db 4
+ db $fc, $f0, $bf, $00
+ db $fc, $f8, $d5, $00
+ db $fc, $00, $d0, $00
+ db $fc, $08, $d0, $00
+
+Unkn_f9694:
+ db 12
+ db $f4, $f0, $03, $20
+ db $f4, $f8, $02, $20
+ db $f4, $00, $01, $20
+ db $f4, $08, $00, $20
+ db $fc, $f0, $13, $20
+ db $fc, $f8, $12, $20
+ db $fc, $00, $11, $20
+ db $fc, $08, $10, $20
+ db $04, $f0, $23, $20
+ db $04, $f8, $22, $20
+ db $04, $00, $21, $20
+ db $04, $08, $20, $20
+
+Unkn_f96c5:
+ db 0, 0, 0, 1, 1, 1, 1, 2
+ db 2, 2, 1, 1, 1, 1, 0, 0
+ db 0, 0, 0, -1, -1, -1, -1, -2
+ db -2, -2, -1, -1, -1, -1, 0, 0
+
+Unkn_f96e5:
+ db $00, $00, $00, $00
+ db $0b, $0b, $0b, $0b
+ db $0b, $02, $02, $06
+ db $03, $0b, $07, $03
+ db $06, $06, $06, $06
+ db $07, $07, $07, $07
+ db $06, $04, $04, $08
+ db $05, $07, $08, $05
+ db $0b, $0b, $11, $12
+ db $0b, $0b, $13, $03
+ db $14, $12, $04, $08
+ db $13, $07, $08, $05
+ db $06, $14, $06, $14
+ db $13, $07, $13, $07
+ db $08, $08, $08, $08
+ db $14, $12, $14, $12
+ db $0b, $11, $02, $14
+ db $06, $14, $06, $14
+ db $0c, $0c, $0d, $0d
+ db $0d, $0d, $0d, $0d
+ db $0e, $0f, $10, $0b
+ db $12, $13, $12, $13
+
+Unkn_f973d:
+ db $00, $00, $00, $01, $01, $01, $01, $01
+Unkn_f9745:
+ db $00, $00, $00, $01, $01, $02, $04, $06
+Unkn_f974d:
+ db $00, $00, $00, $01, $02, $04, $06, $0e
+Unkn_f9755:
+ db $00, $00, $00, $10, $11, $06, $0e, $0e
+Unkn_f975d:
+ db $00, $00, $00, $15, $15, $0e, $0e, $0e
+Unkn_f9765:
+ db $00, $00, $00, $03, $05, $07, $0e, $0e
+Unkn_f976d:
+ db $00, $00, $00, $01, $03, $05, $07, $0e
+Unkn_f9775:
+ db $00, $00, $00, $01, $01, $03, $05, $07
+Unkn_f977d:
+ db $00, $00, $00, $01, $01, $02, $04, $06
+Unkn_f9785:
+ db $00, $00, $00, $01, $02, $04, $06, $0e
+Unkn_f978d:
+ db $00, $00, $00, $08, $0f, $0a, $0e, $0e
+Unkn_f9795:
+ db $00, $00, $00, $09, $0d, $0b, $0e, $0e
+Unkn_f979d:
+ db $00, $00, $00, $01, $03, $05, $07, $0e
+Unkn_f97a5:
+ db $00, $00, $00, $01, $01, $03, $05, $07
+Unkn_f97ad:
+ db $00, $00, $00, $01, $01, $02, $04, $06
+Unkn_f97b5:
+ db $00, $00, $00, $01, $10, $11, $06, $0e
+Unkn_f97bd:
+ db $00, $00, $00, $01, $15, $15, $0e, $0e
+Unkn_f97c5:
+ db $00, $00, $00, $01, $03, $05, $07, $0e
+Unkn_f97cd:
+ db $00, $00, $00, $01, $01, $03, $05, $07
+Unkn_f97d5:
+ db $00, $00, $00, $01, $01, $02, $04, $06
+Unkn_f97dd:
+ db $00, $00, $00, $01, $08, $0f, $0a, $0e
+Unkn_f97e5:
+ db $00, $00, $00, $01, $09, $0d, $0b, $0e
+Unkn_f97ed:
+ db $00, $00, $00, $01, $01, $03, $05, $07
+Unkn_f97f5:
+ db $00, $00, $00, $01, $01, $10, $11, $06
+Unkn_f97fd:
+ db $00, $00, $00, $01, $01, $15, $15, $0e
+Unkn_f9805:
+ db $00, $00, $00, $01, $01, $03, $05, $07
+Unkn_f980d:
+ db $00, $00, $00, $01, $01, $08, $0f, $0a
+Unkn_f9815:
+ db $00, $00, $00, $01, $01, $09, $0d, $0b
+Unkn_f981d:
+ db $00, $00, $00, $14, $14, $14, $14, $14
+Unkn_f9825:
+ db $00, $00, $00, $12, $13, $13, $13, $13
+
+PlayIntroScene:
+ ld a, [rIE]
+ push af
+ xor a
+ ld [rIF], a
+ ld a, $f
+ ld [rIE], a
+ ld a, $8
+ ld [rSTAT], a
+ call Func_f9f0d
+ call DelayFrame
+.asm_f9841
+ ld a, [wc634]
+ bit 7, a
+ jr nz, .asm_f986e
+ call JoypadLowSensitivity
+ ld a, [hJoyPressed]
+ and $b
+ jr nz, .asm_f986e
+ call Func_f98fc
+ ld a, $0
+ ld [wCurrentAnimatedObjectOAMBufferOffset], a
+ call RunObjectAnimations
+ ld a, [wc634]
+ cp $7
+ call z, Func_f98a2
+ cp $b
+ call z, Func_f98cb
+ call DelayFrame
+ jr .asm_f9841
+
+.asm_f986e
+ call Func_f9fc9
+ xor a
+ ld [hLCDCPointer], a
+ call DelayFrame
+ xor a
+ ld [rIF], a
+ pop af
+ ld [rIE], a
+ ld a, $90
+ ld [hWY], a
+ call ClearObjectAnimationBuffers
+ ld hl, wTileMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ xor a
+ call Func_f9fb3
+ call Func_f9fbe
+ ld a, $1
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call DelayFrame
+ call DelayFrame
+ call DelayFrame
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ret
+
+Func_f98a2:
+ ld a, [wOAMBuffer + 8 * 4 + 3]
+ or $1
+ ld [wOAMBuffer + 8 * 4 + 3], a
+ ld a, [wOAMBuffer + 14 * 4 + 3]
+ or $1
+ ld [wOAMBuffer + 14 * 4 + 3], a
+ ld a, [wOAMBuffer + 16 * 4 + 3]
+ or $1
+ ld [wOAMBuffer + 16 * 4 + 3], a
+Func_f98b8:
+ ld a, [wOAMBuffer + 18 * 4 + 3]
+ or $1
+ ld [wOAMBuffer + 18 * 4 + 3], a
+ ld a, [wOAMBuffer + 19 * 4 + 3]
+ or $1
+ ld [wOAMBuffer + 19 * 4 + 3], a
+ ret
+
+Func_f98cb:
+ ld a, [wOAMBuffer + 18 * 4 + 3]
+ or $1
+ ld [wOAMBuffer + 18 * 4 + 3], a
+ ld a, [wOAMBuffer + 19 * 4 + 3]
+ or $1
+ ld [wOAMBuffer + 19 * 4 + 3], a
+ ld a, [wOAMBuffer + 20 * 4 + 3]
+ or $1
+ ld [wOAMBuffer + 20 * 4 + 3], a
+ ld a, [wOAMBuffer + 25 * 4 + 3]
+ or $1
+ ld [wOAMBuffer + 25 * 4 + 3], a
+ ld a, [wOAMBuffer + 26 * 4 + 3]
+ or $1
+ ld [wOAMBuffer + 26 * 4 + 3], a
+ ld a, [wOAMBuffer + 28 * 4 + 3]
+ or $1
+ ld [wOAMBuffer + 28 * 4 + 3], a
+ ret
+
+Func_f98fc:
+ ld a, [wc634]
+ ld hl, Jumptable_f9906
+ call Func_fa06e
+ jp [hl]
+
+Jumptable_f9906:
+ dw Func_f992f
+ dw Func_f995f
+ dw Func_f996a
+ dw Func_f9a08
+ dw Func_f9a1e
+ dw Func_f9a60
+ dw Func_f9a6b
+ dw Func_f9ab1
+ dw Func_f9ad8
+ dw Func_f9af9
+ dw Func_f9b04
+ dw Func_f9bf6
+ dw Func_f9cac
+ dw Func_f9d12
+ dw Func_f9d22
+ dw Func_f9d8f
+ dw Func_f9dbf
+ dw Func_f9e12
+
+Func_f992a:
+ ld hl, wc634
+ inc [hl]
+ ret
+
+Func_f992f:
+ xor a
+ ld [hLCDCPointer], a
+ lb de, $58, $58
+ ld a, $1
+ call Func_f9e1d
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $90
+ ld [hWY], a
+ ld a, $e4
+ ld [rBGP], a
+ ld [rOBP0], a
+ ld a, $c4
+ ld [rOBP1], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ call UpdateGBCPal_OBP1
+ ld a, $82
+ ld [wc635], a
+ call Func_f992a
+ ret
+
+Func_f995f:
+ call Func_f9e41
+ ret nc
+ call Func_f9e29
+ call Func_f992a
+ ret
+
+Func_f996a:
+ call Func_f9e80
+ ld c, $8
+ call UpdateMusicCTimes
+ xor a
+ ld [hLCDCPointer], a
+ ld hl, vBGMap0
+ ld bc, $400
+ xor a
+ call Func_f9fb3
+ call Func_f9996
+ lb de, $58, $b8 ; overloaded
+ ld a, $4 ; overloaded
+ call Func_f99d2
+ ld a, $1
+ call Func_f9e9a
+ call Func_f9e35
+ call Func_f992a
+ ret
+
+Func_f9996:
+ ld hl, $98d4
+ ld de, $20
+ ld b, $6
+ ld a, $90
+.asm_f99a0
+ ld c, $6
+ push af
+ push hl
+.asm_f99a4
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .asm_f99a4
+ pop hl
+ add hl, de
+ pop af
+ add $10
+ dec b
+ jr nz, .asm_f99a0
+ ld a, [hGBC]
+ and a
+ jr z, .asm_f99d1
+ ld hl, $98d4
+ ld de, $20
+ ld b, $6
+ ld a, $1
+ ld [rVBK], a
+.asm_f99c2
+ ld c, $6
+ push hl
+.asm_f99c5
+ ld [hli], a
+ dec c
+ jr nz, .asm_f99c5
+ pop hl
+ add hl, de
+ dec b
+ jr nz, .asm_f99c2
+ xor a
+ ld [rVBK], a
+.asm_f99d1
+ ret
+
+Func_f99d2:
+ ld hl, Unkn_f99f0
+ ld a, $8
+.asm_f99d7
+ push af
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ ld a, [hli]
+ push hl
+ push af
+ ld a, $8
+ call SpawnAnimatedObject
+ pop af
+ ld hl, $b
+ add hl, bc
+ ld [hl], a
+ pop hl
+ pop af
+ dec a
+ jr nz, .asm_f99d7
+ ret
+
+Unkn_f99f0:
+ db $d0, $20, $02
+ db $f0, $30, $04
+ db $d0, $40, $06
+ db $c0, $50, $08
+ db $e0, $60, $08
+ db $c0, $70, $06
+ db $e0, $80, $04
+ db $f0, $90, $02
+
+Func_f9a08:
+ call Func_f9e41
+ jr c, .asm_f9a17
+ ld a, [hSCX]
+ cp $68
+ ret z
+ add $4
+ ld [hSCX], a
+ ret
+
+.asm_f9a17
+ call MaskAllAnimatedObjectStructs
+ call Func_f992a
ret
-Func_fbb65: ; fbb65 (3e:7b65)
- dr $fbb65,$fbd76 \ No newline at end of file
+Func_f9a1e:
+ call Func_f9e80
+ ld c, $5
+ call UpdateMusicCTimes
+ ld a, [hGBC]
+ and a
+ jr z, .asm_f9a47
+ ld hl, $98d4
+ ld de, $20
+ ld b, $6
+ ld a, $1
+ ld [rVBK], a
+ xor a
+.asm_f9a38
+ ld c, $6
+ push hl
+.asm_f9a3b
+ ld [hli], a
+ dec c
+ jr nz, .asm_f9a3b
+ pop hl
+ add hl, de
+ dec b
+ jr nz, .asm_f9a38
+ xor a
+ ld [rVBK], a
+.asm_f9a47
+ xor a
+ ld [hLCDCPointer], a
+ call Func_f9e5f
+ lb de, $58, $58
+ ld a, $2
+ call Func_f9e1d
+ xor a
+ call Func_f9e9a
+ call Func_f9e35
+ call Func_f992a
+ ret
+
+Func_f9a60:
+ call Func_f9e41
+ ret nc
+ call Func_f9e29
+ call Func_f992a
+ ret
+
+Func_f9a6b:
+ call Func_f9e80
+ ld c, $5
+ call UpdateMusicCTimes
+ ld a, $42
+ ld [hLCDCPointer], a
+ call Func_f9ec4
+ ld hl, vBGMap0
+ ld bc, $60
+ xor a
+ call Func_f9fb3
+ ld hl, $9860
+ ld c, $10
+ ld a, $20
+.asm_f9a8b
+ ld [hli], a
+ inc a
+ ld [hli], a
+ dec a
+ dec c
+ jr nz, .asm_f9a8b
+ ld hl, $9880
+ ld bc, $300
+ ld a, $10
+ call Func_f9fb3
+ lb de, $40, $f8
+ ld a, $5
+ call Func_f9e1d
+ ld a, $1
+ call Func_f9e9a
+ call Func_f9e3b
+ call Func_f992a
+ ret
+
+Func_f9ab1:
+ call Func_f9e41
+ jr c, .asm_f9ad1
+ ld hl, hSCX
+ inc [hl]
+ inc [hl]
+ ld hl, wc800
+ ld de, wc800 + 1
+ ld a, [hl]
+ push af
+ ld c, $ff
+.asm_f9ac5
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .asm_f9ac5
+ pop af
+ ld [hl], a
+ call Func_f9ef8
+ ret
+
+.asm_f9ad1
+ call Func_f9e29
+ call Func_f992a
+ ret
+
+Func_f9ad8:
+ call Func_f9e80
+ ld c, $5
+ call UpdateMusicCTimes
+ xor a
+ ld [hLCDCPointer], a
+ call Func_f9e5f
+ lb de, $58, $58
+ ld a, $3
+ call Func_f9e1d
+ xor a
+ call Func_f9e9a
+ call Func_f9e35
+ call Func_f992a
+ ret
+
+Func_f9af9:
+ call Func_f9e41
+ ret nc
+ call Func_f9e29
+ call Func_f992a
+ ret
+
+Func_f9b04:
+ call Func_f9e80
+ ld c, $5
+ call UpdateMusicCTimes
+ xor a
+ ld [hLCDCPointer], a
+ ld hl, vBGMap0
+ ld bc, $400
+ xor a
+ call Func_f9fb3
+ ld hl, vBGMap0
+ ld bc, $100
+ ld a, $2
+ call Func_f9fb3
+ ld hl, $9900
+ ld de, Unkn_f9b6e
+ lb bc, 6, 20
+ call .FillBGMapBox
+ ld hl, $988c
+ ld de, Unkn_f9be6
+ lb bc, 3, 4
+ call .FillBGMapBox
+ ld hl, $98e3
+ ld de, Unkn_f9bf2
+ lb bc, 2, 2
+ call .FillBGMapBox
+ lb de, $98, $58
+ ld a, $6
+ call Func_f9e1d
+ ld a, $1
+ call Func_f9e9a
+ call Func_f9e35
+ call Func_f992a
+ ret
+
+.FillBGMapBox:
+.fill_row
+ push bc
+ push hl
+.fill_col
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .fill_col
+ pop hl
+ ld bc, $20
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .fill_row
+ ret
+
+Unkn_f9b6e: INCBIN "gfx/unknown_f9b6e.map"
+Unkn_f9be6: INCBIN "gfx/unknown_f9be6.map"
+Unkn_f9bf2: INCBIN "gfx/unknown_f9bf2.map"
+
+Func_f9bf6:
+ call Func_f9e41
+ jr c, .asm_f9c25
+ ld a, [wc635]
+ and $7
+ ret nz
+ ld a, [wc635]
+ and $8
+ sla a
+ sla a
+ sla a
+ ld e, a
+ ld d, $0
+ ld hl, GFX_f9c2c
+ add hl, de
+ ld a, l
+ ld [H_VBCOPYSRC], a
+ ld a, h
+ ld [H_VBCOPYSRC + 1], a
+ xor a
+ ld [H_VBCOPYDEST], a
+ ld a, $96
+ ld [H_VBCOPYDEST + 1], a
+ ld a, $4
+ ld [H_VBCOPYSIZE], a
+ ret
+
+.asm_f9c25
+ call Func_f9e29
+ call Func_f992a
+ ret
+
+GFX_f9c2c: INCBIN "gfx/unknown_f9c2c.2bpp"
+GFX_f9c6c: INCBIN "gfx/unknown_f9c6c.2bpp" ; indirectly referenced
+
+Func_f9cac:
+ call Func_f9e80
+ ld c, $5
+ call UpdateMusicCTimes
+ xor a
+ ld [hLCDCPointer], a
+ ld hl, vBGMap0
+ ld bc, $80
+ ld a, $1
+ call Func_f9fb3
+ ld hl, $9880
+ ld bc, $140
+ xor a
+ call Func_f9fb3
+ ld hl, $99c0
+ ld bc, $80
+ ld a, $1
+ call Func_f9fb3
+ ld hl, $98c5
+ ld de, $20
+ ld a, $4
+ ld b, $8
+.asm_f9ce1
+ ld c, $c
+ push hl
+.asm_f9ce4
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .asm_f9ce4
+ pop hl
+ add hl, de
+ add $4
+ dec b
+ jr nz, .asm_f9ce1
+ ld hl, $98c4
+ ld [hl], $3
+ ld hl, $98e4
+ ld [hl], $74
+ ld hl, $99a5
+ ld [hl], $0
+ lb de, $60, $58
+ ld a, $9
+ call Func_f9e1d
+ xor a
+ call Func_f9e9a
+ call Func_f9e35
+ call Func_f992a
+ ret
+
+Func_f9d12:
+ call Func_f9e41
+ ret nc
+ lb de, $68, $58
+ ld a, $a
+ call SpawnAnimatedObject
+ call Func_f992a
+ ret
+
+Func_f9d22:
+ ld de, Unkn_f9dd6
+ call Func_f9e4d
+ jr c, .asm_f9d3c
+ ld [rBGP], a
+ ld [rOBP0], a
+ and $f0
+ ld [rOBP1], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ call UpdateGBCPal_OBP1
+ ret
+
+.asm_f9d3c
+ call MaskAllAnimatedObjectStructs
+ call Func_f9fbe
+ ld hl, wTileMap
+ ld bc, $50
+ ld a, $1
+ call Func_f9fb3
+ coord hl, 0, 4
+ ld bc, CopyVideoDataAlternate
+ xor a
+ call Func_f9fb3
+ coord hl, 0, 14
+ ld bc, $50
+ ld a, $1
+ call Func_f9fb3
+ ld a, $1
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call DelayFrame
+ call DelayFrame
+ call DelayFrame
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ld a, $e4
+ ld [rOBP0], a
+ ld [rBGP], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ lb de, $58, $58
+ ld a, $7
+ call Func_f9e1d
+ call Func_f992a
+ ld a, $28
+ ld [wc635], a
+ ret
+
+Func_f9d8f:
+ call Func_f9e41
+ jr c, .asm_f9dad
+ ld a, [wc635]
+ and $3
+ ret nz
+ ld a, [rOBP0]
+ xor $ff
+ ld [rOBP0], a
+ ld a, [rBGP]
+ xor $3
+ ld [rBGP], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ ret
+
+.asm_f9dad
+ xor a
+ ld [hLCDCPointer], a
+ ld a, $e4
+ ld [rBGP], a
+ ld [rOBP0], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ call Func_f992a
+Func_f9dbf:
+ ld de, Unkn_f9e0a
+ call Func_f9e4d
+ jr c, .asm_f9dd2
+ ld [rOBP0], a
+ ld [rBGP], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ ret
+
+.asm_f9dd2
+ call Func_f992a
+ ret
+
+Unkn_f9dd6:
+ db $e4, $c0, $c0, $e4
+ db $e4, $c0, $c0, $e4
+ db $e4, $c0, $c0, $e4
+ db $e4, $c0, $c0, $e4
+ db $e4, $c0, $c0, $e4
+ db $e4, $c0, $c0, $e4
+ db $e4, $c0, $c0, $e4
+ db $e4, $c0, $c0, $e4
+ db $e4, $c0, $c0, $e4
+ db $e4, $c0, $c0, $e4
+ db $e4, $c0, $c0, $e4
+ db $e4, $c0, $c0, $e4
+ db $e4, $c0, $c0, $ff
+
+Unkn_f9e0a:
+ db $e4, $90, $90, $40
+ db $40, $00, $00, $ff
+
+Func_f9e12:
+ ld c, 64
+ call DelayFrames
+ ld hl, wc634
+ set 7, [hl]
+ ret
+
+Func_f9e1d:
+ call SpawnAnimatedObject
+ ld a, c
+ ld [wc636], a
+ ld a, b
+ ld [wc636 + 1], a
+ ret
+
+Func_f9e29:
+ ld a, [wc636]
+ ld c, a
+ ld a, [wc636 + 1]
+ ld b, a
+ call MaskCurrentAnimatedObjectStruct
+ ret
+
+Func_f9e35:
+ ld a, $80
+ ld [wc635], a
+ ret
+
+Func_f9e3b:
+ ld a, $58
+ ld [wc635], a
+ ret
+
+Func_f9e41:
+ ld hl, wc635
+ ld a, [hl]
+ and a
+ jr z, .asm_f9e4b
+ dec [hl]
+ and a
+ ret
+
+.asm_f9e4b
+ scf
+ ret
+
+Func_f9e4d:
+ ld hl, wc635
+ ld a, [hl]
+ inc [hl]
+ ld l, a
+ ld h, $0
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_f9e5d
+ and a
+ ret
+
+.asm_f9e5d
+ scf
+ ret
+
+Func_f9e5f:
+ ld hl, vBGMap0
+ ld bc, $80
+ ld a, $1
+ call Func_f9fb3
+ ld hl, $9880
+ ld bc, $140
+ xor a
+ call Func_f9fb3
+ ld hl, $99c0
+ ld bc, $80
+ ld a, $1
+ call Func_f9fb3
+ ret
+
+Func_f9e80:
+ xor a
+ ld [rBGP], a
+ ld [rOBP0], a
+ ld [rOBP1], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ call UpdateGBCPal_OBP1
+ call DelayFrame
+ call DelayFrame
+ call DisableLCD
+ ret
+
+Func_f9e9a:
+ ld e, a
+ callab Func_720ad
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $90
+ ld [hWY], a
+ ld a, $e3
+ ld [rLCDC], a
+ ld a, $e4
+ ld [rBGP], a
+ ld [rOBP0], a
+ ld a, $e0
+ ld [rOBP1], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ call UpdateGBCPal_OBP1
+ ret
+
+Func_f9ec4:
+ ld de, wc800
+ ld a, $8
+.asm_f9ec9
+ push af
+ ld hl, Unkn_f9ed8
+ ld bc, $20
+ call Func_f9faa
+ pop af
+ dec a
+ jr nz, .asm_f9ec9
+ ret
+
+Unkn_f9ed8:
+ db 0, 0, 1, 2, 2, 3, 3, 3
+ db 4, 3, 3, 3, 2, 2, 1, 0
+ db 0, 0, -1, -2, -2, -3, -3, -3
+ db -4, -3, -3, -3, -2, -2, -1, 0
+
+Func_f9ef8:
+ ld a, $10
+ ld [H_VBCOPYSRC], a
+ ld a, $c8
+ ld [H_VBCOPYSRC + 1], a
+ ld a, $10
+ ld [H_VBCOPYDEST], a
+ ld a, $c7
+ ld [H_VBCOPYDEST + 1], a
+ ld a, $7
+ ld [H_VBCOPYSIZE], a
+ ret
+
+Func_f9f0d:
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld [H_AUTOBGTRANSFERDEST], a
+ ld a, $98
+ ld [H_AUTOBGTRANSFERDEST + 1], a
+ call Func_f9f9e
+ ld hl, wTileMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, $1
+ call Func_f9fb3
+ coord hl, 0, 4
+ ld bc, CopyVideoDataAlternate
+ xor a
+ call Func_f9fb3
+ ld a, $1
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call DelayFrame
+ call DelayFrame
+ call DelayFrame
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ld de, $6b5a
+ ld hl, $8000
+ ld bc, $3eff
+ call CopyVideoData
+ ld de, $635a
+ ld hl, $9000
+ ld bc, $3e80
+ call CopyVideoData
+ call ClearObjectAnimationBuffers
+ call Func_f9f75
+ ld b, $8
+ call RunPaletteCommand
+ xor a
+ ld hl, wc634
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld a, MUSIC_INTRO_BATTLE
+ ld c, BANK(Music_IntroBattle)
+ call PlayMusic
+ ret
+
+Func_f9f75:
+ ld a, Unkn_f9fda % $100
+ ld [wAnimatedObjectSpawnStateDataPointer], a
+ ld a, Unkn_f9fda / $100
+ ld [wAnimatedObjectSpawnStateDataPointer + 1], a
+ ld a, Jumptable_f9ffb % $100
+ ld [wAnimatedObjectJumptablePointer], a
+ ld a, Jumptable_f9ffb / $100
+ ld [wAnimatedObjectJumptablePointer + 1], a
+ ld a, Unkn_fa13d % $100
+ ld [wAnimatedObjectOAMDataPointer], a
+ ld a, Unkn_fa13d / $100
+ ld [wAnimatedObjectOAMDataPointer + 1], a
+ ld a, Unkn_fa0ea % $100
+ ld [wAnimatedObjectFramesDataPointer], a
+ ld a, Unkn_fa0ea / $100
+ ld [wAnimatedObjectFramesDataPointer + 1], a
+ ret
+
+Func_f9f9e:
+ ld hl, wTileMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, $7f
+ call Func_f9fb3
+ ret
+
+Func_f9faa:
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec bc
+ ld a, c
+ or b
+ jr nz, Func_f9faa
+ ret
+
+Func_f9fb3:
+ push de
+ ld e, a
+.asm_f9fb5
+ ld a, e
+ ld [hli], a
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_f9fb5
+ pop de
+ ret
+
+Func_f9fbe:
+ ld hl, wSpriteDataEnd
+ ld bc, $a0
+ xor a
+ call Func_f9fb3
+ ret
+
+Func_f9fc9:
+ xor a
+ ld [rBGP], a
+ ld [rOBP0], a
+ ld [rOBP1], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ call UpdateGBCPal_OBP1
+ ret
+
+Unkn_f9fda:
+ db $00, $00, $00
+ db $01, $01, $00
+ db $02, $01, $00
+ db $03, $01, $00
+ db $04, $02, $00
+ db $05, $03, $00
+ db $06, $04, $00
+ db $07, $01, $00
+ db $08, $05, $00
+ db $09, $01, $00
+ db $0a, $01, $00
+
+Jumptable_f9ffb:
+ dw Func_fa007
+ dw Func_fa007
+ dw Func_fa008
+ dw Func_fa014
+ dw Func_fa02b
+ dw Func_fa062
+
+Func_fa007:
+ ret
+
+Func_fa008:
+ ld hl, $4
+ add hl, bc
+ ld a, [hl]
+ cp $58
+ ret z
+ sub $4
+ ld [hl], a
+ ret
+
+Func_fa014:
+ ld hl, $4
+ add hl, bc
+ ld a, [hl]
+ cp $58
+ jr z, .asm_fa020
+ add $4
+ ld [hl], a
+.asm_fa020
+ ld hl, $5
+ add hl, bc
+ cp $58
+ ret z
+ add $1
+ ld [hl], a
+ ret
+
+Func_fa02b:
+ ld hl, $b
+ add hl, bc
+ ld e, [hl]
+ ld d, $0
+ ld hl, Jumptable_fa03b
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_fa03b:
+ dw Func_fa03f
+ dw Func_fa051
+
+Func_fa03f:
+ ld hl, $5
+ add hl, bc
+ ld a, [hl]
+ cp $58
+ jr z, .asm_fa04c
+ sub $2
+ ld [hl], a
+ ret
+
+.asm_fa04c
+ ld hl, $b
+ add hl, bc
+ inc [hl]
+Func_fa051:
+ ld hl, $c
+ add hl, bc
+ ld a, [hl]
+ inc [hl]
+ ld d, $8
+ call Func_fa079
+ ld hl, $7
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_fa062:
+ ld hl, $b
+ add hl, bc
+ ld a, [hl]
+ ld hl, $4
+ add hl, bc
+ add [hl]
+ ld [hl], a
+ ret
+
+Func_fa06e:
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+
+Func_fa077: ; cosine
+ add $10
+Func_fa079:
+ and $3f
+ cp $20
+ jr nc, .asm_fa084
+ call Func_fa08e
+ ld a, h
+ ret
+
+.asm_fa084
+ and $1f
+ call Func_fa08e
+ ld a, h
+ xor $ff
+ inc a
+ ret
+
+Func_fa08e:
+ ld e, a
+ ld a, d
+ ld d, $0
+ ld hl, Unkn_fa0aa
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0
+.asm_fa09d
+ srl a
+ jr nc, .asm_fa0a2
+ add hl, de
+.asm_fa0a2
+ sla e
+ rl d
+ and a
+ jr nz, .asm_fa09d
+ ret
+
+Unkn_fa0aa:
+ sine_wave $100
+
+Unkn_fa0ea:
+ dw Unkn_fa100
+ dw Unkn_fa103
+ dw Unkn_fa10a
+ dw Unkn_fa111
+ dw Unkn_fa118
+ dw Unkn_fa11b
+ dw Unkn_fa11e
+ dw Unkn_fa121
+ dw Unkn_fa124
+ dw Unkn_fa127
+ dw Unkn_fa138
+
+Unkn_fa100:
+ frame $00, 32
+ endanim
+
+Unkn_fa103:
+ frame $01, 4
+ frame $02, 4
+ frame $03, 4
+ dorestart
+
+Unkn_fa10a:
+ frame $04, 4
+ frame $05, 4
+ frame $06, 4
+ dorestart
+
+Unkn_fa111:
+ frame $07, 4
+ frame $08, 4
+ frame $09, 4
+ dorestart
+
+Unkn_fa118:
+ frame $0a, 32
+ endanim
+
+Unkn_fa11b:
+ frame $0b, 32
+ endanim
+
+Unkn_fa11e:
+ frame $0c, 32
+ endanim
+
+Unkn_fa121:
+ frame $0d, 32
+ endanim
+
+Unkn_fa124:
+ frame $0e, 32
+ endanim
+
+Unkn_fa127:
+ frame $0f, 31
+ frame $11, 2
+ frame $0f, 2
+ frame $11, 2
+ frame $0f, 31
+ frame $11, 2
+ frame $0f, 23
+ frame $10, 32
+ endanim
+
+Unkn_fa138:
+ frame $12, 4
+ frame $13, 4
+ dorestart
+
+Unkn_fa13d:
+ dbw $00, Unkn_fa179
+ dbw $96, Unkn_fa17e
+ dbw $98, Unkn_fa17e
+ dbw $9a, Unkn_fa17e
+ dbw $0c, Unkn_fa18f
+ dbw $0e, Unkn_fa18f
+ dbw $3c, Unkn_fa18f
+ dbw $60, Unkn_fa1b0
+ dbw $70, Unkn_fa1b0
+ dbw $80, Unkn_fa1b0
+ dbw $90, Unkn_fa201
+ dbw $00, Unkn_fa201
+ dbw $06, Unkn_fa201
+ dbw $c6, Unkn_fa292
+ dbw $6d, Unkn_fa2f7
+ dbw $f0, Unkn_fa308
+ dbw $f4, Unkn_fa308
+ dbw $f8, Unkn_fa308
+ dbw $9c, Unkn_fa329
+ dbw $ec, Unkn_fa329
+
+Unkn_fa179:
+ db 1
+ db $fc, $fc, $00, $00
+Unkn_fa17e:
+ db 4
+ db $f8, $f8, $00, $00
+ db $f8, $00, $01, $00
+ db $00, $f8, $10, $00
+ db $00, $00, $11, $00
+
+Unkn_fa18f:
+ db 8
+ db $f0, $f8, $00, $00
+ db $f0, $00, $01, $00
+ db $f8, $f8, $10, $00
+ db $f8, $00, $11, $00
+ db $00, $f8, $20, $00
+ db $00, $00, $20, $20
+ db $08, $f8, $21, $00
+ db $08, $00, $21, $20
+
+Unkn_fa1b0:
+ db 20
+ db $e8, $f8, $00, $00
+ db $e8, $00, $01, $00
+ db $f0, $f8, $02, $00
+ db $f0, $00, $03, $00
+ db $f8, $f0, $04, $00
+ db $f8, $f8, $05, $00
+ db $f8, $00, $06, $00
+ db $f8, $08, $04, $20
+ db $00, $f0, $07, $00
+ db $00, $f8, $08, $00
+ db $00, $00, $08, $20
+ db $00, $08, $07, $20
+ db $08, $f0, $09, $00
+ db $08, $f8, $0a, $00
+ db $08, $00, $0a, $20
+ db $08, $08, $09, $20
+ db $10, $f0, $0b, $00
+ db $10, $f8, $0c, $00
+ db $10, $00, $0c, $20
+ db $10, $08, $0b, $20
+
+Unkn_fa201:
+ db 36
+ db $e8, $e8, $00, $00
+ db $e8, $f0, $01, $00
+ db $e8, $f8, $02, $00
+ db $e8, $00, $03, $00
+ db $e8, $08, $04, $00
+ db $e8, $10, $05, $00
+ db $f0, $e8, $10, $00
+ db $f0, $f0, $11, $00
+ db $f0, $f8, $12, $00
+ db $f0, $00, $13, $00
+ db $f0, $08, $14, $00
+ db $f0, $10, $15, $00
+ db $f8, $e8, $20, $00
+ db $f8, $f0, $21, $00
+ db $f8, $f8, $22, $00
+ db $f8, $00, $23, $00
+ db $f8, $08, $24, $00
+ db $f8, $10, $25, $00
+ db $00, $e8, $30, $00
+ db $00, $f0, $31, $00
+ db $00, $f8, $32, $00
+ db $00, $00, $33, $00
+ db $00, $08, $34, $00
+ db $00, $10, $35, $00
+ db $08, $e8, $40, $00
+ db $08, $f0, $41, $00
+ db $08, $f8, $42, $00
+ db $08, $00, $43, $00
+ db $08, $08, $44, $00
+ db $08, $10, $45, $00
+ db $10, $e8, $50, $00
+ db $10, $f0, $51, $00
+ db $10, $f8, $52, $00
+ db $10, $00, $53, $00
+ db $10, $08, $54, $00
+ db $10, $10, $55, $00
+
+Unkn_fa292:
+ db 25
+ db $ec, $f0, $00, $00
+ db $ec, $f8, $01, $00
+ db $ec, $00, $02, $00
+ db $ec, $08, $03, $00
+ db $ec, $10, $04, $00
+ db $f4, $f0, $05, $00
+ db $f4, $f8, $06, $00
+ db $f4, $00, $07, $00
+ db $f4, $08, $08, $00
+ db $f4, $10, $09, $00
+ db $fc, $f0, $10, $00
+ db $fc, $f8, $11, $00
+ db $fc, $00, $12, $00
+ db $fc, $08, $13, $00
+ db $fc, $10, $14, $00
+ db $04, $f0, $15, $00
+ db $04, $f8, $16, $00
+ db $04, $00, $17, $00
+ db $04, $08, $18, $00
+ db $04, $10, $19, $00
+ db $0c, $f0, $20, $00
+ db $0c, $f8, $21, $00
+ db $0c, $00, $22, $00
+ db $0c, $08, $23, $00
+ db $0c, $10, $24, $00
+
+Unkn_fa2f7:
+ db 4
+ db $fc, $f0, $00, $00
+ db $fc, $f8, $01, $00
+ db $fc, $00, $01, $20
+ db $fc, $08, $00, $20
+
+Unkn_fa308:
+ db 8
+ db $f8, $e8, $00, $10
+ db $f8, $f0, $01, $10
+ db $00, $e8, $02, $10
+ db $00, $f0, $03, $10
+ db $f8, $08, $01, $30
+ db $f8, $10, $00, $30
+ db $00, $08, $03, $30
+ db $00, $10, $02, $30
+
+Unkn_fa329:
+ db 12
+ db $f8, $d8, $00, $10
+ db $f8, $e0, $01, $10
+ db $f8, $e8, $02, $10
+ db $00, $d8, $10, $10
+ db $00, $e0, $11, $10
+ db $00, $e8, $12, $10
+ db $f8, $10, $02, $30
+ db $f8, $18, $01, $30
+ db $f8, $20, $00, $30
+ db $00, $10, $12, $30
+ db $00, $18, $11, $30
+ db $00, $20, $10, $30
+
+YellowIntroGraphics: INCBIN "gfx/yellow_intro.2bpp"
+
+INCLUDE "engine/animated_objects_3e.asm"
diff --git a/engine/printer.asm b/engine/printer.asm
index 95f70087..d2e5c6e3 100755
--- a/engine/printer.asm
+++ b/engine/printer.asm
@@ -1162,8 +1162,35 @@ Func_e8f51: ; e8f51 (3a:4f51)
ld [wcae0], a
ret
-Func_e8f82: ; e8f82 (3a:4f82)
- dr $e8f82,$e8fb8
+Func_e8f82:
+ ld a, [wcae0]
+ and a
+ ret z
+ push af
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ coord hl, 0, 5
+ lb bc, 10, 18
+ call TextBoxBorder
+ pop af
+ ld e, a
+ ld d, $0
+ ld hl, Table_e8fca
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ coord hl, 1, 7
+ call PlaceString
+ coord hl, 2, 15
+ ld de, String_e8fb8
+ call PlaceString
+ ld a, $1
+ ld [H_AUTOBGTRANSFERENABLED], a
+ xor a
+ ld [wcae0], a
+ ret
String_e8fb8:
db "Press B to Cancel@"
diff --git a/engine/town_map.asm b/engine/town_map.asm
index aff126ee..2d4f0023 100755
--- a/engine/town_map.asm
+++ b/engine/town_map.asm
@@ -588,14 +588,14 @@ LoadTownMapEntry: ; 7137a (1c:537a)
ld l, a
ret
-ExternalMapEntries: ; 7139c (1c:539c)
- dr $7139c,$7140b
-InternalMapEntries: ; 7140b (1c:540b)
- dr $7140b,$7174b
+; ExternalMapEntries: ; 7139c (1c:539c)
+ ; dr $7139c,$7140b
+; InternalMapEntries: ; 7140b (1c:540b)
+ ; dr $7140b,$7174b
-;INCLUDE "data/town_map_entries.asm"
+INCLUDE "data/town_map_entries.asm"
-;INCLUDE "text/map_names.asm" ; TODO: relabel addresses
+INCLUDE "text/map_names.asm" ; TODO: relabel addresses
MonNestIcon: ; 7174b (1c:574b)
INCBIN "gfx/mon_nest_icon.1bpp"
diff --git a/gfx/blueversion.png b/gfx/blueversion.png
new file mode 100644
index 00000000..a9c87be8
--- /dev/null
+++ b/gfx/blueversion.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e4000.png b/gfx/pikachu/unknown_e4000.png
new file mode 100644
index 00000000..75a54919
--- /dev/null
+++ b/gfx/pikachu/unknown_e4000.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e40cc.png b/gfx/pikachu/unknown_e40cc.png
new file mode 100644
index 00000000..adce99ad
--- /dev/null
+++ b/gfx/pikachu/unknown_e40cc.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e411c.png b/gfx/pikachu/unknown_e411c.png
new file mode 100644
index 00000000..40e3d336
--- /dev/null
+++ b/gfx/pikachu/unknown_e411c.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e41d2.png b/gfx/pikachu/unknown_e41d2.png
new file mode 100644
index 00000000..34d71c02
--- /dev/null
+++ b/gfx/pikachu/unknown_e41d2.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e4272.png b/gfx/pikachu/unknown_e4272.png
new file mode 100644
index 00000000..8b23b56e
--- /dev/null
+++ b/gfx/pikachu/unknown_e4272.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e4323.png b/gfx/pikachu/unknown_e4323.png
new file mode 100644
index 00000000..6d8d5c22
--- /dev/null
+++ b/gfx/pikachu/unknown_e4323.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e4383.png b/gfx/pikachu/unknown_e4383.png
new file mode 100644
index 00000000..5ac60dc3
--- /dev/null
+++ b/gfx/pikachu/unknown_e4383.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e444b.png b/gfx/pikachu/unknown_e444b.png
new file mode 100644
index 00000000..d0240c72
--- /dev/null
+++ b/gfx/pikachu/unknown_e444b.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e458b.png b/gfx/pikachu/unknown_e458b.png
new file mode 100644
index 00000000..e374a571
--- /dev/null
+++ b/gfx/pikachu/unknown_e458b.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e463b.png b/gfx/pikachu/unknown_e463b.png
new file mode 100644
index 00000000..2e31d6f6
--- /dev/null
+++ b/gfx/pikachu/unknown_e463b.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e467b.png b/gfx/pikachu/unknown_e467b.png
new file mode 100644
index 00000000..d088d590
--- /dev/null
+++ b/gfx/pikachu/unknown_e467b.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e472e.png b/gfx/pikachu/unknown_e472e.png
new file mode 100644
index 00000000..1a1ac334
--- /dev/null
+++ b/gfx/pikachu/unknown_e472e.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e476e.png b/gfx/pikachu/unknown_e476e.png
new file mode 100644
index 00000000..2ca64b68
--- /dev/null
+++ b/gfx/pikachu/unknown_e476e.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e4841.png b/gfx/pikachu/unknown_e4841.png
new file mode 100644
index 00000000..f3425637
--- /dev/null
+++ b/gfx/pikachu/unknown_e4841.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e49d1.png b/gfx/pikachu/unknown_e49d1.png
new file mode 100644
index 00000000..1414cd6e
--- /dev/null
+++ b/gfx/pikachu/unknown_e49d1.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e4a99.png b/gfx/pikachu/unknown_e4a99.png
new file mode 100644
index 00000000..e97998c1
--- /dev/null
+++ b/gfx/pikachu/unknown_e4a99.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e4b39.png b/gfx/pikachu/unknown_e4b39.png
new file mode 100644
index 00000000..948c46fe
--- /dev/null
+++ b/gfx/pikachu/unknown_e4b39.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e4bde.png b/gfx/pikachu/unknown_e4bde.png
new file mode 100644
index 00000000..18209284
--- /dev/null
+++ b/gfx/pikachu/unknown_e4bde.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e4c3e.png b/gfx/pikachu/unknown_e4c3e.png
new file mode 100644
index 00000000..698c15e8
--- /dev/null
+++ b/gfx/pikachu/unknown_e4c3e.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e4ce0.png b/gfx/pikachu/unknown_e4ce0.png
new file mode 100644
index 00000000..68a6832b
--- /dev/null
+++ b/gfx/pikachu/unknown_e4ce0.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e4e70.png b/gfx/pikachu/unknown_e4e70.png
new file mode 100644
index 00000000..ee849b32
--- /dev/null
+++ b/gfx/pikachu/unknown_e4e70.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e5000.png b/gfx/pikachu/unknown_e5000.png
new file mode 100644
index 00000000..9b2685e4
--- /dev/null
+++ b/gfx/pikachu/unknown_e5000.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e50af.png b/gfx/pikachu/unknown_e50af.png
new file mode 100644
index 00000000..04acf34f
--- /dev/null
+++ b/gfx/pikachu/unknown_e50af.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e523f.png b/gfx/pikachu/unknown_e523f.png
new file mode 100644
index 00000000..810c752a
--- /dev/null
+++ b/gfx/pikachu/unknown_e523f.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e52fe.png b/gfx/pikachu/unknown_e52fe.png
new file mode 100644
index 00000000..7a33deec
--- /dev/null
+++ b/gfx/pikachu/unknown_e52fe.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e548e.png b/gfx/pikachu/unknown_e548e.png
new file mode 100644
index 00000000..442025a2
--- /dev/null
+++ b/gfx/pikachu/unknown_e548e.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e5541.png b/gfx/pikachu/unknown_e5541.png
new file mode 100644
index 00000000..889fa5f6
--- /dev/null
+++ b/gfx/pikachu/unknown_e5541.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e56d1.png b/gfx/pikachu/unknown_e56d1.png
new file mode 100644
index 00000000..85f96a92
--- /dev/null
+++ b/gfx/pikachu/unknown_e56d1.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e5794.png b/gfx/pikachu/unknown_e5794.png
new file mode 100644
index 00000000..4926e791
--- /dev/null
+++ b/gfx/pikachu/unknown_e5794.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e5924.png b/gfx/pikachu/unknown_e5924.png
new file mode 100644
index 00000000..b4f15591
--- /dev/null
+++ b/gfx/pikachu/unknown_e5924.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e59ed.png b/gfx/pikachu/unknown_e59ed.png
new file mode 100644
index 00000000..971075ab
--- /dev/null
+++ b/gfx/pikachu/unknown_e59ed.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e5b7d.png b/gfx/pikachu/unknown_e5b7d.png
new file mode 100644
index 00000000..2b141191
--- /dev/null
+++ b/gfx/pikachu/unknown_e5b7d.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e5c4d.png b/gfx/pikachu/unknown_e5c4d.png
new file mode 100644
index 00000000..07f70a39
--- /dev/null
+++ b/gfx/pikachu/unknown_e5c4d.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e5ddd.png b/gfx/pikachu/unknown_e5ddd.png
new file mode 100644
index 00000000..e95e11ba
--- /dev/null
+++ b/gfx/pikachu/unknown_e5ddd.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e5e90.png b/gfx/pikachu/unknown_e5e90.png
new file mode 100644
index 00000000..8e896836
--- /dev/null
+++ b/gfx/pikachu/unknown_e5e90.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e6020.png b/gfx/pikachu/unknown_e6020.png
new file mode 100644
index 00000000..7b938b8d
--- /dev/null
+++ b/gfx/pikachu/unknown_e6020.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e61b0.png b/gfx/pikachu/unknown_e61b0.png
new file mode 100644
index 00000000..d0260da7
--- /dev/null
+++ b/gfx/pikachu/unknown_e61b0.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e6340.png b/gfx/pikachu/unknown_e6340.png
new file mode 100644
index 00000000..1bb0b1d9
--- /dev/null
+++ b/gfx/pikachu/unknown_e6340.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e63f7.png b/gfx/pikachu/unknown_e63f7.png
new file mode 100644
index 00000000..71ed5a1f
--- /dev/null
+++ b/gfx/pikachu/unknown_e63f7.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e6587.png b/gfx/pikachu/unknown_e6587.png
new file mode 100644
index 00000000..0ec65607
--- /dev/null
+++ b/gfx/pikachu/unknown_e6587.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e6646.png b/gfx/pikachu/unknown_e6646.png
new file mode 100644
index 00000000..c45de678
--- /dev/null
+++ b/gfx/pikachu/unknown_e6646.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e67d6.png b/gfx/pikachu/unknown_e67d6.png
new file mode 100644
index 00000000..ee5bdacf
--- /dev/null
+++ b/gfx/pikachu/unknown_e67d6.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e682f.png b/gfx/pikachu/unknown_e682f.png
new file mode 100644
index 00000000..d0f522dc
--- /dev/null
+++ b/gfx/pikachu/unknown_e682f.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e69bf.png b/gfx/pikachu/unknown_e69bf.png
new file mode 100644
index 00000000..ce8de250
--- /dev/null
+++ b/gfx/pikachu/unknown_e69bf.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e6b4f.png b/gfx/pikachu/unknown_e6b4f.png
new file mode 100644
index 00000000..4ea34714
--- /dev/null
+++ b/gfx/pikachu/unknown_e6b4f.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e6cdf.png b/gfx/pikachu/unknown_e6cdf.png
new file mode 100644
index 00000000..f0f96237
--- /dev/null
+++ b/gfx/pikachu/unknown_e6cdf.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e6e6f.png b/gfx/pikachu/unknown_e6e6f.png
new file mode 100644
index 00000000..608af942
--- /dev/null
+++ b/gfx/pikachu/unknown_e6e6f.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e6fff.png b/gfx/pikachu/unknown_e6fff.png
new file mode 100644
index 00000000..a722794a
--- /dev/null
+++ b/gfx/pikachu/unknown_e6fff.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e718f.png b/gfx/pikachu/unknown_e718f.png
new file mode 100644
index 00000000..1276764c
--- /dev/null
+++ b/gfx/pikachu/unknown_e718f.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e731f.png b/gfx/pikachu/unknown_e731f.png
new file mode 100644
index 00000000..2d6d6bdb
--- /dev/null
+++ b/gfx/pikachu/unknown_e731f.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e74af.png b/gfx/pikachu/unknown_e74af.png
new file mode 100644
index 00000000..0aa1592b
--- /dev/null
+++ b/gfx/pikachu/unknown_e74af.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e763f.png b/gfx/pikachu/unknown_e763f.png
new file mode 100644
index 00000000..72f9ef29
--- /dev/null
+++ b/gfx/pikachu/unknown_e763f.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e77cf.png b/gfx/pikachu/unknown_e77cf.png
new file mode 100644
index 00000000..ad94af7a
--- /dev/null
+++ b/gfx/pikachu/unknown_e77cf.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e7863.png b/gfx/pikachu/unknown_e7863.png
new file mode 100644
index 00000000..cd02d18d
--- /dev/null
+++ b/gfx/pikachu/unknown_e7863.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e79f3.png b/gfx/pikachu/unknown_e79f3.png
new file mode 100644
index 00000000..07b8230d
--- /dev/null
+++ b/gfx/pikachu/unknown_e79f3.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e7b83.png b/gfx/pikachu/unknown_e7b83.png
new file mode 100644
index 00000000..8a835dfb
--- /dev/null
+++ b/gfx/pikachu/unknown_e7b83.png
Binary files differ
diff --git a/gfx/pikachu/unknown_e7d13.png b/gfx/pikachu/unknown_e7d13.png
new file mode 100644
index 00000000..3204f702
--- /dev/null
+++ b/gfx/pikachu/unknown_e7d13.png
Binary files differ
diff --git a/gfx/pikachu/unknown_f0abf.png b/gfx/pikachu/unknown_f0abf.png
new file mode 100644
index 00000000..dd553a8a
--- /dev/null
+++ b/gfx/pikachu/unknown_f0abf.png
Binary files differ
diff --git a/gfx/pikachu/unknown_f0b64.png b/gfx/pikachu/unknown_f0b64.png
new file mode 100644
index 00000000..6b0424a8
--- /dev/null
+++ b/gfx/pikachu/unknown_f0b64.png
Binary files differ
diff --git a/gfx/pikachu/unknown_f0cf4.png b/gfx/pikachu/unknown_f0cf4.png
new file mode 100644
index 00000000..a4a4e5f4
--- /dev/null
+++ b/gfx/pikachu/unknown_f0cf4.png
Binary files differ
diff --git a/gfx/pikachu/unknown_f0d82.png b/gfx/pikachu/unknown_f0d82.png
new file mode 100644
index 00000000..1af4b770
--- /dev/null
+++ b/gfx/pikachu/unknown_f0d82.png
Binary files differ
diff --git a/gfx/tilemaps/sgbborder.map b/gfx/tilemaps/sgbborder.map
index 4077ed8e..9c97c339 100644
--- a/gfx/tilemaps/sgbborder.map
+++ b/gfx/tilemaps/sgbborder.map
Binary files differ
diff --git a/gfx/unknown_f8946.map b/gfx/unknown_f8946.map
new file mode 100644
index 00000000..a89a52b8
--- /dev/null
+++ b/gfx/unknown_f8946.map
@@ -0,0 +1 @@
+           \ No newline at end of file
diff --git a/gfx/unknown_f90bc.map b/gfx/unknown_f90bc.map
new file mode 100644
index 00000000..98b8ba51
--- /dev/null
+++ b/gfx/unknown_f90bc.map
Binary files differ
diff --git a/gfx/unknown_f91ac.map b/gfx/unknown_f91ac.map
new file mode 100644
index 00000000..8a1f06b7
--- /dev/null
+++ b/gfx/unknown_f91ac.map
@@ -0,0 +1 @@
+íîïÿðñòóôõöÿ÷øù \ No newline at end of file
diff --git a/gfx/unknown_f91bb.map b/gfx/unknown_f91bb.map
new file mode 100644
index 00000000..6d8ebb43
--- /dev/null
+++ b/gfx/unknown_f91bb.map
@@ -0,0 +1,2 @@
+úûÿüýþÿ
+ÿ \ No newline at end of file
diff --git a/gfx/unknown_f91c8.map b/gfx/unknown_f91c8.map
new file mode 100644
index 00000000..20d18de5
--- /dev/null
+++ b/gfx/unknown_f91c8.map
@@ -0,0 +1 @@
+¶·¸¹ÿÿÿºÿÿÿÿ»¼½¾¿ÀÁÂÃÄÅÿÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÿÿÿÝÞßàáâãäÿÿÿÿåæçèéêëìÿÿ \ No newline at end of file
diff --git a/gfx/unknown_f9b6e.map b/gfx/unknown_f9b6e.map
new file mode 100644
index 00000000..3ce924dc
--- /dev/null
+++ b/gfx/unknown_f9b6e.map
Binary files differ
diff --git a/gfx/unknown_f9be6.map b/gfx/unknown_f9be6.map
new file mode 100644
index 00000000..18560135
--- /dev/null
+++ b/gfx/unknown_f9be6.map
@@ -0,0 +1 @@
+0123@ABCPQRS \ No newline at end of file
diff --git a/gfx/unknown_f9bf2.map b/gfx/unknown_f9bf2.map
new file mode 100644
index 00000000..e587b7ce
--- /dev/null
+++ b/gfx/unknown_f9bf2.map
@@ -0,0 +1 @@
+"# \ No newline at end of file
diff --git a/gfx/unknown_f9c2c.png b/gfx/unknown_f9c2c.png
new file mode 100644
index 00000000..b5c68424
--- /dev/null
+++ b/gfx/unknown_f9c2c.png
Binary files differ
diff --git a/gfx/unknown_f9c6c.png b/gfx/unknown_f9c6c.png
new file mode 100644
index 00000000..3725d6cc
--- /dev/null
+++ b/gfx/unknown_f9c6c.png
Binary files differ
diff --git a/home/audio.asm b/home/audio.asm
index f1daa4f1..69e81dd8 100644
--- a/home/audio.asm
+++ b/home/audio.asm
@@ -88,6 +88,7 @@ CheckForNoBikingMusicMap:: ; 21c8 (0:21c8)
UpdateMusic6Times:: ; 21e3 (0:21e3)
ld c, $6
+UpdateMusicCTimes::
.loop
push bc
push hl
diff --git a/macros.asm b/macros.asm
index 6e1ebc9d..b0c38140 100644
--- a/macros.asm
+++ b/macros.asm
@@ -239,7 +239,7 @@ EMAP: MACRO ; emap x-coordinate,y-coordinate,textpointer
; nybble: y-coordinate
; nybble: x-coordinate
; word : pointer to map name
- db (\1 + (\2 << 4))
+ dn \2, \1
dw \3
ENDM
@@ -251,7 +251,7 @@ IMAP: MACRO ; imap mapid_less_than,x-coordinate,y-coordinate,textpointer
; nybble: x-coordinate
; word : pointer to map name
db \1 + 1
- db \2 + \3 << 4
+ dn \3, \2
dw \4
ENDM
diff --git a/main.asm b/main.asm
index 3a445583..cc67186d 100755
--- a/main.asm
+++ b/main.asm
@@ -282,7 +282,21 @@ INCLUDE "data/mapHeaders/indigoplateaulobby.asm"
INCLUDE "scripts/indigoplateaulobby.asm"
INCLUDE "data/mapObjects/indigoplateaulobby.asm"
IndigoPlateauLobbyBlocks: INCBIN "maps/indigoplateaulobby.blk"
- dr $19e09,$1a4ea
+
+INCLUDE "data/mapHeaders/silphco4.asm"
+INCLUDE "scripts/silphco4.asm"
+INCLUDE "data/mapObjects/silphco4.asm"
+SilphCo4Blocks: INCBIN "maps/silphco4.blk"
+
+INCLUDE "data/mapHeaders/silphco5.asm"
+INCLUDE "scripts/silphco5.asm"
+INCLUDE "data/mapObjects/silphco5.asm"
+SilphCo5Blocks: INCBIN "maps/silphco5.blk"
+
+INCLUDE "data/mapHeaders/silphco6.asm"
+INCLUDE "scripts/silphco6.asm"
+INCLUDE "data/mapObjects/silphco6.asm"
+SilphCo6Blocks: INCBIN "maps/silphco6.blk"
INCLUDE "engine/overworld/npc_movement.asm"
INCLUDE "engine/overworld/doors.asm"
@@ -309,7 +323,8 @@ LavenderHouse1Blocks:
LavenderHouse2Blocks:
SaffronHouse1Blocks:
SaffronHouse2Blocks:
-Route16HouseBlocks: INCBIN "maps/viridianhouse.blk"
+Route16HouseBlocks:
+NameRaterBlocks: INCBIN "maps/viridianhouse.blk"
SchoolBlocks:
CeladonMansion5Blocks: INCBIN "maps/school.blk"
CeruleanHouseTrashedBlocks: INCBIN "maps/ceruleanhousetrashed.blk"
@@ -368,7 +383,10 @@ INCLUDE "data/mapObjects/lavenderhouse1.asm"
INCLUDE "data/mapHeaders/lavenderhouse2.asm"
INCLUDE "scripts/lavenderhouse2.asm"
INCLUDE "data/mapObjects/lavenderhouse2.asm"
- dr $1d30e,$1d3f8 ; map scripts
+
+INCLUDE "data/mapHeaders/namerater.asm"
+INCLUDE "scripts/namerater.asm"
+INCLUDE "data/mapObjects/namerater.asm"
INCLUDE "data/mapHeaders/vermilionhouse1.asm"
INCLUDE "scripts/vermilionhouse1.asm"
@@ -840,7 +858,10 @@ INCLUDE "data/mapHeaders/lavendertown.asm"
INCLUDE "data/mapObjects/lavendertown.asm"
LavenderTownBlocks: INCBIN "maps/lavendertown.blk"
ViridianPokecenterBlocks: INCBIN "maps/viridianpokecenter.blk"
- dr $440fb,$4410b
+SafariZoneRestHouse1Blocks:
+SafariZoneRestHouse2Blocks:
+SafariZoneRestHouse3Blocks:
+SafariZoneRestHouse4Blocks: INCBIN "maps/safarizoneresthouse1.blk"
INCLUDE "scripts/lavendertown.asm"
@@ -904,7 +925,57 @@ INCLUDE "data/mapHeaders/rockethideoutelevator.asm"
INCLUDE "scripts/rockethideoutelevator.asm"
INCLUDE "data/mapObjects/rockethideoutelevator.asm"
RocketHideoutElevatorBlocks: INCBIN "maps/rockethideoutelevator.blk"
- dr $45a08,$46578
+
+INCLUDE "data/mapHeaders/silphcoelevator.asm"
+INCLUDE "scripts/silphcoelevator.asm"
+INCLUDE "data/mapObjects/silphcoelevator.asm"
+SilphCoElevatorBlocks: INCBIN "maps/silphcoelevator.blk"
+
+INCLUDE "data/mapHeaders/safarizoneeast.asm"
+INCLUDE "scripts/safarizoneeast.asm"
+INCLUDE "data/mapObjects/safarizoneeast.asm"
+SafariZoneEastBlocks: INCBIN "maps/safarizoneeast.blk"
+
+INCLUDE "data/mapHeaders/safarizonenorth.asm"
+INCLUDE "scripts/safarizonenorth.asm"
+INCLUDE "data/mapObjects/safarizonenorth.asm"
+SafariZoneNorthBlocks: INCBIN "maps/safarizonenorth.blk"
+
+INCLUDE "data/mapHeaders/safarizonecenter.asm"
+INCLUDE "scripts/safarizonecenter.asm"
+INCLUDE "data/mapObjects/safarizonecenter.asm"
+SafariZoneCenterBlocks: INCBIN "maps/safarizonecenter.blk"
+
+INCLUDE "data/mapHeaders/safarizoneresthouse1.asm"
+INCLUDE "scripts/safarizoneresthouse1.asm"
+INCLUDE "data/mapObjects/safarizoneresthouse1.asm"
+
+INCLUDE "data/mapHeaders/safarizoneresthouse2.asm"
+INCLUDE "scripts/safarizoneresthouse2.asm"
+INCLUDE "data/mapObjects/safarizoneresthouse2.asm"
+
+INCLUDE "data/mapHeaders/safarizoneresthouse3.asm"
+INCLUDE "scripts/safarizoneresthouse3.asm"
+INCLUDE "data/mapObjects/safarizoneresthouse3.asm"
+
+INCLUDE "data/mapHeaders/safarizoneresthouse4.asm"
+INCLUDE "scripts/safarizoneresthouse4.asm"
+INCLUDE "data/mapObjects/safarizoneresthouse4.asm"
+
+INCLUDE "data/mapHeaders/unknowndungeon2.asm"
+INCLUDE "scripts/unknowndungeon2.asm"
+INCLUDE "data/mapObjects/unknowndungeon2.asm"
+UnknownDungeon2Blocks: INCBIN "maps/unknowndungeon2.blk"
+
+INCLUDE "data/mapHeaders/unknowndungeon3.asm"
+INCLUDE "scripts/unknowndungeon3.asm"
+INCLUDE "data/mapObjects/unknowndungeon3.asm"
+UnknownDungeon3Blocks: INCBIN "maps/unknowndungeon3.blk"
+
+INCLUDE "data/mapHeaders/rocktunnel2.asm"
+INCLUDE "scripts/rocktunnel2.asm"
+INCLUDE "data/mapObjects/rocktunnel2.asm"
+RockTunnel2Blocks: INCBIN "maps/rocktunnel2.blk"
INCLUDE "data/mapHeaders/seafoamislands2.asm"
INCLUDE "scripts/seafoamislands2.asm"
@@ -1118,7 +1189,15 @@ MtMoon3Script_4a325: ; pikachu-related function?
call Func_159b
ret
- dr $4a35a,$4a540
+INCLUDE "data/mapHeaders/safarizonewest.asm"
+INCLUDE "scripts/safarizonewest.asm"
+INCLUDE "data/mapObjects/safarizonewest.asm"
+SafariZoneWestBlocks: INCBIN "maps/safarizonewest.blk"
+
+INCLUDE "data/mapHeaders/safarizonesecrethouse.asm"
+INCLUDE "scripts/safarizonesecrethouse.asm"
+INCLUDE "data/mapObjects/safarizonesecrethouse.asm"
+SafariZoneSecretHouseBlocks: INCBIN "maps/safarizonesecrethouse.blk"
SECTION "bank13",ROMX,BANK[$13]
@@ -1234,13 +1313,26 @@ INCLUDE "scripts/mtmoon2.asm"
INCLUDE "data/mapObjects/mtmoon2.asm"
MtMoon2Blocks: INCBIN "maps/mtmoon2.blk"
- dr $51b97,$52060
-Mansion2Script_Switches:
- dr $52060,$522a3
-Mansion3Script_Switches:
- dr $522a3,$52449
-Mansion4Script_Switches:
- dr $52449,$525d8
+INCLUDE "data/mapHeaders/silphco7.asm"
+INCLUDE "scripts/silphco7.asm"
+INCLUDE "data/mapObjects/silphco7.asm"
+SilphCo7Blocks: INCBIN "maps/silphco7.blk"
+
+INCLUDE "data/mapHeaders/mansion2.asm"
+INCLUDE "scripts/mansion2.asm"
+INCLUDE "data/mapObjects/mansion2.asm"
+Mansion2Blocks: INCBIN "maps/mansion2.blk"
+
+INCLUDE "data/mapHeaders/mansion3.asm"
+INCLUDE "scripts/mansion3.asm"
+INCLUDE "data/mapObjects/mansion3.asm"
+Mansion3Blocks: INCBIN "maps/mansion3.blk"
+
+INCLUDE "data/mapHeaders/mansion4.asm"
+INCLUDE "scripts/mansion4.asm"
+INCLUDE "data/mapObjects/mansion4.asm"
+Mansion4Blocks: INCBIN "maps/mansion4.blk"
+
INCLUDE "engine/overworld/card_key.asm"
INCLUDE "engine/menu/prize_menu.asm"
@@ -1326,7 +1418,11 @@ INCLUDE "data/mapObjects/daycarem.asm"
INCLUDE "data/mapHeaders/route12house.asm"
INCLUDE "scripts/route12house.asm"
INCLUDE "data/mapObjects/route12house.asm"
- dr $5652a,$56714
+
+INCLUDE "data/mapHeaders/silphco8.asm"
+INCLUDE "scripts/silphco8.asm"
+INCLUDE "data/mapObjects/silphco8.asm"
+SilphCo8Blocks: INCBIN "maps/silphco8.blk"
INCLUDE "engine/menu/diploma_1.asm"
@@ -1366,7 +1462,8 @@ Route16Blocks: INCBIN "maps/route16.blk" ; 58b84
INCLUDE "data/mapHeaders/route18.asm"
INCLUDE "data/mapObjects/route18.asm"
Route18Blocks: INCBIN "maps/route18.blk"
- dr $58d7d,$58d99
+
+INCBIN "maps/unusedblocks58d7d.blk"
INCLUDE "engine/experience.asm"
@@ -1387,7 +1484,21 @@ INCLUDE "data/mapHeaders/fanclub.asm"
INCLUDE "scripts/fanclub.asm"
INCLUDE "data/mapObjects/fanclub.asm"
FanClubBlocks: INCBIN "maps/fanclub.blk"
- dr $59c80,$5a23d
+
+INCLUDE "data/mapHeaders/silphco2.asm"
+INCLUDE "scripts/silphco2.asm"
+INCLUDE "data/mapObjects/silphco2.asm"
+SilphCo2Blocks: INCBIN "maps/silphco2.blk"
+
+INCLUDE "data/mapHeaders/silphco3.asm"
+INCLUDE "scripts/silphco3.asm"
+INCLUDE "data/mapObjects/silphco3.asm"
+SilphCo3Blocks: INCBIN "maps/silphco3.blk"
+
+INCLUDE "data/mapHeaders/silphco10.asm"
+INCLUDE "scripts/silphco10.asm"
+INCLUDE "data/mapObjects/silphco10.asm"
+SilphCo10Blocks: INCBIN "maps/silphco10.blk"
INCLUDE "data/mapHeaders/lance.asm"
INCLUDE "scripts/lance.asm"
@@ -1541,7 +1652,11 @@ INCLUDE "data/mapObjects/undergroundpathentranceroute7.asm"
INCLUDE "data/mapHeaders/undergroundpathentranceroute7copy.asm"
INCLUDE "scripts/undergroundpathentranceroute7copy.asm"
INCLUDE "data/mapObjects/undergroundpathentranceroute7copy.asm"
- dr $5d6ba,$5d909
+
+INCLUDE "data/mapHeaders/silphco9.asm"
+INCLUDE "scripts/silphco9.asm"
+INCLUDE "data/mapObjects/silphco9.asm"
+SilphCo9Blocks: INCBIN "maps/silphco9.blk"
INCLUDE "data/mapHeaders/victoryroad1.asm"
INCLUDE "scripts/victoryroad1.asm"
@@ -1571,7 +1686,8 @@ SECTION "bank18",ROMX,BANK[$18]
ViridianForestBlocks: INCBIN "maps/viridianforest.blk"
UndergroundPathNSBlocks: INCBIN "maps/undergroundpathns.blk"
UndergroundPathWEBlocks: INCBIN "maps/undergroundpathwe.blk"
- dr $60258,$603c0
+
+INCBIN "maps/unusedblocks60258.blk"
SSAnne9Blocks:
SSAnne10Blocks: INCBIN "maps/ssanne9.blk"
@@ -1674,7 +1790,11 @@ INCLUDE "data/mapHeaders/diglettscave.asm"
INCLUDE "scripts/diglettscave.asm"
INCLUDE "data/mapObjects/diglettscave.asm"
DiglettsCaveBlocks: INCBIN "maps/diglettscave.blk"
- dr $62105,$625e8
+
+INCLUDE "data/mapHeaders/silphco11.asm"
+INCLUDE "scripts/silphco11.asm"
+INCLUDE "data/mapObjects/silphco11.asm"
+SilphCo11Blocks: INCBIN "maps/silphco11.blk"
INCLUDE "engine/hidden_object_functions18.asm"
@@ -1697,7 +1817,8 @@ Plateau_GFX: INCBIN "gfx/tilesets/plateau.t10.2bpp"
Plateau_Block: INCBIN "gfx/blocksets/plateau.bst"
SECTION "bank1A",ROMX,BANK[$1A]
- dr $68000,$68040
+Unknown_68000: INCBIN "gfx/blueversion.1bpp"
+
Dojo_GFX:
Gym_GFX: INCBIN "gfx/tilesets/gym.2bpp"
Dojo_Block:
@@ -1756,7 +1877,7 @@ CinnabarMartBlocks: INCBIN "maps/pewtermart.blk"
FuchsiaHouse1Blocks: INCBIN "maps/fuchsiahouse1.blk"
FuchsiaPokecenterBlocks:
CinnabarPokecenterBlocks: INCBIN "maps/fuchsiapokecenter.blk"
- dr $7404c,$7405c
+CeruleanHouse2Blocks: INCBIN "maps/ceruleanhouse2.blk"
INCLUDE "engine/items/itemfinder.asm"
INCLUDE "scripts/ceruleancity2.asm"
@@ -1770,7 +1891,14 @@ INCLUDE "data/mapHeaders/pewtermart.asm"
INCLUDE "scripts/pewtermart.asm"
INCLUDE "data/mapObjects/pewtermart.asm"
- dr $7453d,$74726
+INCLUDE "data/mapHeaders/unknowndungeon1.asm"
+INCLUDE "scripts/unknowndungeon1.asm"
+INCLUDE "data/mapObjects/unknowndungeon1.asm"
+UnknownDungeon1Blocks: INCBIN "maps/unknowndungeon1.blk"
+
+INCLUDE "data/mapHeaders/ceruleanhouse2.asm"
+INCLUDE "scripts/ceruleanhouse2.asm"
+INCLUDE "data/mapObjects/ceruleanhouse2.asm"
INCLUDE "engine/menu/vending_machine.asm"
@@ -1862,7 +1990,21 @@ INCLUDE "data/mapHeaders/gary.asm"
INCLUDE "scripts/gary.asm"
INCLUDE "data/mapObjects/gary.asm"
GaryBlocks: INCBIN "maps/gary.blk"
- dr $759ef,$75dfe
+
+INCLUDE "data/mapHeaders/lorelei.asm"
+INCLUDE "scripts/lorelei.asm"
+INCLUDE "data/mapObjects/lorelei.asm"
+LoreleiBlocks: INCBIN "maps/lorelei.blk"
+
+INCLUDE "data/mapHeaders/bruno.asm"
+INCLUDE "scripts/bruno.asm"
+INCLUDE "data/mapObjects/bruno.asm"
+BrunoBlocks: INCBIN "maps/bruno.blk"
+
+INCLUDE "data/mapHeaders/agatha.asm"
+INCLUDE "scripts/agatha.asm"
+INCLUDE "data/mapObjects/agatha.asm"
+AgathaBlocks: INCBIN "maps/agatha.blk"
INCLUDE "engine/menu/league_pc.asm"
@@ -1891,123 +2033,124 @@ INCLUDE "engine/bg_map_attributes.asm"
SECTION "bank30",ROMX,BANK[$30]
- dr $c0000,$c4000
+; This whole bank is garbage data.
+INCBIN "engine/bank30.bin"
SECTION "bank39",ROMX,BANK[$39]
Pic_e4000: ; e4000
- dr $e4000, $e40cc
+INCBIN "gfx/pikachu/unknown_e4000.pic"
GFX_e40cc: ; e40cc
- dr $e40cc, $e411c
+INCBIN "gfx/pikachu/unknown_e40cc.2bpp"
Pic_e411c: ; e411c
- dr $e411c, $e41d2
+INCBIN "gfx/pikachu/unknown_e411c.pic"
GFX_e41d2: ; e41d2
- dr $e41d2, $e4272
+INCBIN "gfx/pikachu/unknown_e41d2.2bpp"
Pic_e4272: ; e4272
- dr $e4272, $e4323
+INCBIN "gfx/pikachu/unknown_e4272.pic"
GFX_e4323: ; e4323
- dr $e4323, $e4383
+INCBIN "gfx/pikachu/unknown_e4323.2bpp"
Pic_e4383: ; e4383
- dr $e4383, $e444b
+INCBIN "gfx/pikachu/unknown_e4383.pic"
GFX_e444b: ; e444b
- dr $e444b, $e458b
+INCBIN "gfx/pikachu/unknown_e444b.2bpp"
Pic_e458b: ; e458b
- dr $e458b, $e463b
+INCBIN "gfx/pikachu/unknown_e458b.pic"
GFX_e463b: ; e463b
- dr $e463b, $e467b
+INCBIN "gfx/pikachu/unknown_e463b.2bpp"
Pic_e467b: ; e467b
- dr $e467b, $e472e
+INCBIN "gfx/pikachu/unknown_e467b.pic"
GFX_e472e: ; e472e
- dr $e472e, $e476e
+INCBIN "gfx/pikachu/unknown_e472e.2bpp"
Pic_e476e: ; e476e
- dr $e476e, $e4841
+INCBIN "gfx/pikachu/unknown_e476e.pic"
GFX_e4841: ; e4841
- dr $e4841, $e49d1
+INCBIN "gfx/pikachu/unknown_e4841.2bpp"
Pic_e49d1: ; e49d1
- dr $e49d1, $e4a99
+INCBIN "gfx/pikachu/unknown_e49d1.pic"
GFX_e4a99: ; e4a99
- dr $e4a99, $e4b39
+INCBIN "gfx/pikachu/unknown_e4a99.2bpp"
Pic_e4b39: ; e4b39
- dr $e4b39, $e4bde
+INCBIN "gfx/pikachu/unknown_e4b39.pic"
GFX_e4bde: ; e4bde
- dr $e4bde, $e4c3e
+INCBIN "gfx/pikachu/unknown_e4bde.2bpp"
Pic_e4c3e: ; e4c3e
- dr $e4c3e, $e4ce0
+INCBIN "gfx/pikachu/unknown_e4c3e.pic"
GFX_e4ce0: ; e4ce0
- dr $e4ce0, $e4e70
+INCBIN "gfx/pikachu/unknown_e4ce0.2bpp"
GFX_e4e70: ; e4e70
- dr $e4e70, $e5000
+INCBIN "gfx/pikachu/unknown_e4e70.2bpp"
Pic_e5000: ; e5000
- dr $e5000, $e50af
+INCBIN "gfx/pikachu/unknown_e5000.pic"
GFX_e50af: ; e50af
- dr $e50af, $e523f
+INCBIN "gfx/pikachu/unknown_e50af.2bpp"
Pic_e523f: ; e523f
- dr $e523f, $e52fe
+INCBIN "gfx/pikachu/unknown_e523f.pic"
GFX_e52fe: ; e52fe
- dr $e52fe, $e548e
+INCBIN "gfx/pikachu/unknown_e52fe.2bpp"
Pic_e548e: ; e548e
- dr $e548e, $e5541
+INCBIN "gfx/pikachu/unknown_e548e.pic"
GFX_e5541: ; e5541
- dr $e5541, $e56d1
+INCBIN "gfx/pikachu/unknown_e5541.2bpp"
Pic_e56d1: ; e56d1
- dr $e56d1, $e5794
+INCBIN "gfx/pikachu/unknown_e56d1.pic"
GFX_e5794: ; e5794
- dr $e5794, $e5924
+INCBIN "gfx/pikachu/unknown_e5794.2bpp"
Pic_e5924: ; e5924
- dr $e5924, $e59ed
+INCBIN "gfx/pikachu/unknown_e5924.pic"
GFX_e59ed: ; e59ed
- dr $e59ed, $e5b7d
+INCBIN "gfx/pikachu/unknown_e59ed.2bpp"
Pic_e5b7d: ; e5b7d
- dr $e5b7d, $e5c4d
+INCBIN "gfx/pikachu/unknown_e5b7d.pic"
GFX_e5c4d: ; e5c4d
- dr $e5c4d, $e5ddd
+INCBIN "gfx/pikachu/unknown_e5c4d.2bpp"
Pic_e5ddd: ; e5ddd
- dr $e5ddd, $e5e90
+INCBIN "gfx/pikachu/unknown_e5ddd.pic"
GFX_e5e90: ; e5e90
- dr $e5e90, $e6020
+INCBIN "gfx/pikachu/unknown_e5e90.2bpp"
GFX_e6020: ; e6020
- dr $e6020, $e61b0
+INCBIN "gfx/pikachu/unknown_e6020.2bpp"
GFX_e61b0: ; e61b0
- dr $e61b0, $e6340
+INCBIN "gfx/pikachu/unknown_e61b0.2bpp"
Pic_e6340: ; e6340
- dr $e6340, $e63f7
+INCBIN "gfx/pikachu/unknown_e6340.pic"
GFX_e63f7: ; e63f7
- dr $e63f7, $e6587
+INCBIN "gfx/pikachu/unknown_e63f7.2bpp"
Pic_e6587: ; e6587
- dr $e6587, $e6646
+INCBIN "gfx/pikachu/unknown_e6587.pic"
GFX_e6646: ; e6646
- dr $e6646, $e67d6
+INCBIN "gfx/pikachu/unknown_e6646.2bpp"
Pic_e67d6: ; e67d6
- dr $e67d6, $e682f
+INCBIN "gfx/pikachu/unknown_e67d6.pic"
GFX_e682f: ; e682f
- dr $e682f, $e69bf
+INCBIN "gfx/pikachu/unknown_e682f.2bpp"
GFX_e69bf: ; e69bf
- dr $e69bf, $e6b4f
+INCBIN "gfx/pikachu/unknown_e69bf.2bpp"
GFX_e6b4f: ; e6b4f
- dr $e6b4f, $e6cdf
+INCBIN "gfx/pikachu/unknown_e6b4f.2bpp"
GFX_e6cdf: ; e6cdf
- dr $e6cdf, $e6e6f
+INCBIN "gfx/pikachu/unknown_e6cdf.2bpp"
GFX_e6e6f: ; e6e6f
- dr $e6e6f, $e6fff
+INCBIN "gfx/pikachu/unknown_e6e6f.2bpp"
GFX_e6fff: ; e6fff
- dr $e6fff, $e718f
+INCBIN "gfx/pikachu/unknown_e6fff.2bpp"
GFX_e718f: ; e718f
- dr $e718f, $e731f
+INCBIN "gfx/pikachu/unknown_e718f.2bpp"
GFX_e731f: ; e731f
- dr $e731f, $e74af
+INCBIN "gfx/pikachu/unknown_e731f.2bpp"
GFX_e74af: ; e74af
- dr $e74af, $e763f
+INCBIN "gfx/pikachu/unknown_e74af.2bpp"
GFX_e763f: ; e763f
- dr $e763f, $e77cf
+INCBIN "gfx/pikachu/unknown_e763f.2bpp"
Pic_e77cf: ; e77cf
- dr $e77cf, $e7863
+INCBIN "gfx/pikachu/unknown_e77cf.pic"
GFX_e7863: ; e7863
- dr $e7863, $e79f3
+INCBIN "gfx/pikachu/unknown_e7863.2bpp"
GFX_e79f3: ; e79f3
- dr $e79f3, $e7b83
+INCBIN "gfx/pikachu/unknown_e79f3.2bpp"
GFX_e7b83: ; e7b83
- dr $e7b83, $e7d13
+INCBIN "gfx/pikachu/unknown_e7b83.2bpp"
GFX_e7d13: ; e7d13
- dr $e7d13, $e7ea3
+INCBIN "gfx/pikachu/unknown_e7d13.2bpp"
SECTION "bank3A",ROMX,BANK[$3A]
INCLUDE "text/monster_names.asm"
diff --git a/maps/unknowndungeon1.blk b/maps/unknowndungeon1.blk
index 574613af..7cc9d4d5 100644
--- a/maps/unknowndungeon1.blk
+++ b/maps/unknowndungeon1.blk
@@ -1,2 +1,3 @@
- "||b -}f N_vvvvvvvv#vvvvr}|qvv,-Xv=,vtfvvvfvf+}_ "vv-
- } "$ \ No newline at end of file
+ "b ^|bz qmf_fX
+z'n  n>}MMt "__ ">nzr fvvv_r " 
+^t "vv "_ "_Onnvvvvvvvvvvvv$L \ No newline at end of file
diff --git a/maps/unknowndungeon2.blk b/maps/unknowndungeon2.blk
index 6eb27eee..f82b5aed 100644
--- a/maps/unknowndungeon2.blk
+++ b/maps/unknowndungeon2.blk
@@ -1,3 +1,7 @@
-}( ((  
- 
-}( #  (      }    \ No newline at end of file
+  ( ((   }
+   (# }( 
+  }
+}
+
+ 
+  \ No newline at end of file
diff --git a/maps/unknowndungeon3.blk b/maps/unknowndungeon3.blk
index 858f0529..581ade79 100644
--- a/maps/unknowndungeon3.blk
+++ b/maps/unknowndungeon3.blk
@@ -1 +1,2 @@
-,--Nr02a}f D+,v "pfvvv} fXfvv^tvvtvv)   "vvvSvvvv \ No newline at end of file
+  n z " rf- j[o  "nrfaX rO "}
+ Qmn } "__rv "m v}vvv) r "vvQr)Svvvvvvvvvvvvr \ No newline at end of file
diff --git a/maps/unusedblocks58d7d.blk b/maps/unusedblocks58d7d.blk
index 9641efe4..dd54efd9 100755
--- a/maps/unusedblocks58d7d.blk
+++ b/maps/unusedblocks58d7d.blk
@@ -1,2 +1,2 @@
-  !"#
+  '"#
 \ No newline at end of file
diff --git a/scripts/beach_house.asm b/scripts/beach_house.asm
index 6d53b7ce..fb0d78f2 100644
--- a/scripts/beach_house.asm
+++ b/scripts/beach_house.asm
@@ -35,7 +35,7 @@ SurfinDudeText:
jr nz, .asm_f226b
ld a, 1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- callba Func_f8000
+ callba SurfingPikachuMinigame
ld hl, wPreventBlackout
set 1, [hl]
jr .done
diff --git a/scripts/silphco11.asm b/scripts/silphco11.asm
index 6cb2e7ed..a2354a69 100755
--- a/scripts/silphco11.asm
+++ b/scripts/silphco11.asm
@@ -1,5 +1,5 @@
-SilphCo11Script: ; 620fa (18:60fa)
- call SilphCo11Script_62110
+SilphCo11Script: ; 62111 (18:60fa)
+ call SilphCo11Script_62127
call EnableAutoTextBoxDrawing
ld hl, SilphCo11TrainerHeaders
ld de, SilphCo11ScriptPointers
@@ -8,26 +8,27 @@ SilphCo11Script: ; 620fa (18:60fa)
ld [W_SILPHCO11CURSCRIPT], a
ret
-SilphCo11Script_62110: ; 62110 (18:6110)
+SilphCo11Script_62127: ; 62127 (18:6110)
ld hl, wd126
bit 5, [hl]
res 5, [hl]
ret z
ld hl, SilphCo11GateCoords
- call SilphCo11Script_62137
- call SilphCo11Script_62163
+ call SilphCo11Script_6214f
+ call SilphCo11Script_6217b
CheckEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR
ret nz
ld a, $20
ld [wNewTileBlockID], a
lb bc, 6, 3
- predef_jump ReplaceTileBlock
+ predef ReplaceTileBlock
+ ret
SilphCo11GateCoords: ; 62134 (18:6134)
db $06,$03
db $FF
-SilphCo11Script_62137: ; 62137 (18:6137)
+SilphCo11Script_6214f: ; 6214f (18:6137)
push hl
ld hl, wCardKeyDoorY
ld a, [hli]
@@ -63,108 +64,48 @@ SilphCo11Script_62137: ; 62137 (18:6137)
ld [$ffe0], a
ret
-SilphCo11Script_62163: ; 62163 (18:6163)
+SilphCo11Script_6217b: ; 6217b (18:6163)
ld a, [$ffe0]
and a
ret z
SetEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR
ret
-SilphCo11Script_6216d: ; 6216d (18:616d)
- ld hl, MissableObjectIDs_6219b
-.asm_62170
- ld a, [hli]
- cp $ff
- jr z, .asm_62181
- push hl
- ld [wMissableObjectIndex], a
- predef HideObject
- pop hl
- jr .asm_62170
-.asm_62181
- ld hl, MissableObjectIDs_62194
-.asm_62184
- ld a, [hli]
- cp $ff
- ret z
- push hl
- ld [wMissableObjectIndex], a
- predef ShowObject
- pop hl
- jr .asm_62184
-
-MissableObjectIDs_62194: ; 62194 (18:6194)
- db HS_SAFFRON_CITY_8
- db HS_SAFFRON_CITY_9
- db HS_SAFFRON_CITY_A
- db HS_SAFFRON_CITY_B
- db HS_SAFFRON_CITY_C
- db HS_SAFFRON_CITY_D
- db $FF
-
-MissableObjectIDs_6219b: ; 6219b (18:619b)
- db HS_SAFFRON_CITY_1
- db HS_SAFFRON_CITY_2
- db HS_SAFFRON_CITY_3
- db HS_SAFFRON_CITY_4
- db HS_SAFFRON_CITY_5
- db HS_SAFFRON_CITY_6
- db HS_SAFFRON_CITY_7
- db HS_SAFFRON_CITY_E
- db HS_SAFFRON_CITY_F
- db HS_SILPH_CO_2F_2
- db HS_SILPH_CO_2F_3
- db HS_SILPH_CO_2F_4
- db HS_SILPH_CO_2F_5
- db HS_SILPH_CO_3F_1
- db HS_SILPH_CO_3F_2
- db HS_SILPH_CO_4F_1
- db HS_SILPH_CO_4F_2
- db HS_SILPH_CO_4F_3
- db HS_SILPH_CO_5F_1
- db HS_SILPH_CO_5F_2
- db HS_SILPH_CO_5F_3
- db HS_SILPH_CO_5F_4
- db HS_SILPH_CO_6F_1
- db HS_SILPH_CO_6F_2
- db HS_SILPH_CO_6F_3
- db HS_SILPH_CO_7F_1
- db HS_SILPH_CO_7F_2
- db HS_SILPH_CO_7F_3
- db HS_SILPH_CO_7F_4
- db HS_SILPH_CO_8F_1
- db HS_SILPH_CO_8F_2
- db HS_SILPH_CO_8F_3
- db HS_SILPH_CO_9F_1
- db HS_SILPH_CO_9F_2
- db HS_SILPH_CO_9F_3
- db HS_SILPH_CO_10F_1
- db HS_SILPH_CO_10F_2
- db HS_SILPH_CO_11F_1
- db HS_SILPH_CO_11F_2
- db HS_SILPH_CO_11F_3
- db $FF
-
-SilphCo11Script_621c4: ; 621c4 (18:61c4)
+SilphCo11Script_62185: ; 62185 (18:61c4)
xor a
ld [wJoyIgnore], a
-
-SilphCo11Script_621c8: ; 621c8 (18:61c8)
+SilphCo11Script_62189: ; 62189 (18:61c8)
ld [W_SILPHCO11CURSCRIPT], a
ld [W_CURMAPSCRIPT], a
ret
-SilphCo11ScriptPointers: ; 621cf (18:61cf)
- dw SilphCo11Script0
+SilphCo11ScriptPointers: ; 62190 (18:6190)
+ dw SilphCo11Script0 ; 61ae
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
- dw SilphCo11Script3
- dw SilphCo11Script4
- dw SilphCo11Script5
+ dw SilphCo11Script3 ; 620c
+ dw SilphCo11Script4 ; 6254
+ dw SilphCo11Script5 ; 6318
+ dw SilphCo11Script6 ; 633f
+ dw SilphCo11Script7 ; 634a
+ dw SilphCo11Script8 ; 6366
+ dw SilphCo11Script9 ; 638d
+ dw SilphCo11Script10 ; 639d
+ dw SilphCo11Script11 ; 63bb
+ dw SilphCo11Script12 ; 63e1
+ dw SilphCo11Script13 ; 6427
+ dw SilphCo11Script14 ; 6448
SilphCo11Script0: ; 621db (18:61db)
- CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
+ CheckEvent EVENT_BEAT_SILPH_CO_11F_TRAINER_0
+ call z, SilphCo11Script_6229c
+ CheckEvent EVENT_782
ret nz
+ CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
+ call z, SilphCo11Script_621c5
+ ret
+
+SilphCo11Script_621c5:
ld hl, CoordsData_62211
call ArePlayerCoordsInArray
jp nc, CheckFightingMapTrainers
@@ -182,8 +123,9 @@ SilphCo11Script0: ; 621db (18:61db)
call SetSpriteMovementBytesToFF
ld de, MovementData_62216
call MoveSprite
- ld a, $3
- jp SilphCo11Script_621c8
+ ld a, $4
+ call SilphCo11Script_62189
+ ret
CoordsData_62211: ; 62211 (18:6211)
db $0D,$06
@@ -196,18 +138,18 @@ MovementData_62216: ; 62216 (18:6216)
db NPC_MOVEMENT_DOWN
db $FF
-SilphCo11Script_6221a: ; 6221a (18:621a)
+SilphCo11Script_621ff:
ld [wPlayerMovingDirection], a
- ld a, $3
- ld [H_SPRITEINDEX], a
ld a, b
- ld [hSpriteFacingDirection], a
- jp SetSpriteFacingDirectionAndDelay
+ ld [wSpriteStateData1 + 3 * $10 + 9], a
+ ld a, $2
+ ld [wSpriteStateData1 + 3 * $10 + 1], a
+ ret
-SilphCo11Script5: ; 62227 (18:6227)
+SilphCo11Script3: ; 62227 (18:6227)
ld a, [wIsInBattle]
cp $ff
- jp z, SilphCo11Script_621c4
+ jp z, SilphCo11Script_62185
ld a, [wcf0d]
cp $1
jr z, .asm_6223c
@@ -218,23 +160,23 @@ SilphCo11Script5: ; 62227 (18:6227)
ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN
.asm_62240
- call SilphCo11Script_6221a
+ call SilphCo11Script_621ff
ld a, $f0
ld [wJoyIgnore], a
- ld a, $6
+ ld a, $7
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call GBFadeOutToBlack
- call SilphCo11Script_6216d
+ callba Func_f25a0
call UpdateSprites
call Delay3
call GBFadeInFromBlack
SetEvent EVENT_BEAT_SILPH_CO_GIOVANNI
xor a
ld [wJoyIgnore], a
- jp SilphCo11Script_621c8
+ jp SilphCo11Script_62189
-SilphCo11Script3: ; 6226a (18:626a)
+SilphCo11Script4: ; 62254 (18:626a)
ld a, [wd730]
bit 0, a
ret nz
@@ -251,155 +193,405 @@ SilphCo11Script3: ; 6226a (18:626a)
ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN
.asm_62288
- call SilphCo11Script_6221a
+ call SilphCo11Script_621ff
call Delay3
- ld a, $4
- jp SilphCo11Script_621c8
-
-SilphCo11Script4: ; 62293 (18:6293)
+ xor a
+ ld [wJoyIgnore], a
ld hl, wd72d
set 6, [hl]
set 7, [hl]
- ld hl, SilphCo10Text_62330
- ld de, SilphCo10Text_62330
+ ld hl, SilphCo10Text_62528
+ ld de, SilphCo10Text_62528
call SaveEndBattleTextPointers
ld a, [H_SPRITEINDEX]
ld [wSpriteIndex], a
call EngageMapTrainer
call InitBattleEnemyParameters
+ ld a, $3
+ jp SilphCo11Script_62189
+
+SilphCo11Script_6229c:
+ ld a, [wYCoord]
+ cp $3
+ ret nz
+ ld a, [wXCoord]
+ cp $4
+ ret nc
+ ResetEvents EVENT_780, EVENT_781
+ ld a, [wXCoord]
+ cp $3
+ jr z, .asm_622c3
+ SetEventReuseHL EVENT_780
+ ld a, [wXCoord]
+ cp $2
+ jr z, .asm_622c3
+ ResetEventReuseHL EVENT_780
+ SetEventReuseHL EVENT_781
+.asm_622c3
+ call StopAllMusic
+ ld c, BANK(Music_JessieAndJames)
+ ld a, MUSIC_JESSIE_AND_JAMES
+ call PlayMusic
+ xor a
+ ld [hJoyHeld], a
+ ld a, $fc
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $8
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $ff
ld [wJoyIgnore], a
+ SetEvent EVENT_782
ld a, $5
- jp SilphCo11Script_621c8
+ call SilphCo11Script_62189
+ ret
+; 622f4
+
+SilphCo11MovementData_622f5:
+ db $5
+ db $5
+ db $5
+ db $5
+ db $5
+ db $ff
+
+SilphCo11MovementData_622fb:
+ db $5
+ db $5
+ db $5
+ db $5
+ db $ff
+
+SilphCo11MovementData_62300:
+ db $5
+ db $5
+ db $5
+ db $5
+ db $ff
+
+SilphCo11MovementData_62305:
+ db $5
+ db $5
+ db $5
+ db $5
+ db $5
+ db $ff
+
+SilphCo11MovementData_6230b:
+ db $5
+ db $5
+ db $6
+ db $5
+ db $5
+ db $ff
+
+SilphCo11MovementData_62311:
+ db $5
+ db $5
+ db $5
+ db $6
+ db $5
+ db $5
+ db $ff
+
+SilphCo11Script5:
+ ld de, SilphCo11MovementData_622f5
+ CheckEitherEventSet EVENT_780, EVENT_781
+ and a
+ jr z, .asm_6232d
+ ld de, SilphCo11MovementData_62300
+ cp $1
+ jr z, .asm_6232d
+ ld de, SilphCo11MovementData_6230b
+.asm_6232d
+ ld a, $4
+ ld [hSpriteIndexOrTextID], a
+ call MoveSprite
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $6
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11Script6:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+SilphCo11Script7:
+ ld a, $2
+ ld [wSpriteStateData1 + 4 * $10 + 1], a
+ ld hl, wSpriteStateData1 + 4 * $10 + 9
+ ld [hl], SPRITE_FACING_RIGHT
+ CheckEitherEventSet EVENT_780, EVENT_781
+ and a
+ jr z, .asm_6235e
+ ld [hl], SPRITE_FACING_UP
+.asm_6235e
+ call Delay3
+ ld a, $fc
+ ld [wJoyIgnore], a
+SilphCo11Script8:
+ ld de, SilphCo11MovementData_622fb
+ CheckEitherEventSet EVENT_780, EVENT_781
+ and a
+ jr z, .asm_6237b
+ ld de, SilphCo11MovementData_62305
+ cp $1
+ jr z, .asm_6237b
+ ld de, SilphCo11MovementData_62311
+.asm_6237b
+ ld a, $6
+ ld [hSpriteIndexOrTextID], a
+ call MoveSprite
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $9
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11Script9:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+ ld a, $fc
+ ld [wJoyIgnore], a
+SilphCo11Script10:
+ ld a, $2
+ ld [wSpriteStateData1 + 6 * $10 + 1], a
+ ld hl, wSpriteStateData1 + 6 * $10 + 9
+ ld [hl], SPRITE_FACING_UP
+ CheckEitherEventSet EVENT_780, EVENT_781
+ and a
+ jr z, .asm_623b1
+ ld [hl], SPRITE_FACING_LEFT
+.asm_623b1
+ call Delay3
+ ld a, $9
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+SilphCo11Script11:
+ ld hl, wd72d
+ set 6, [hl]
+ set 7, [hl]
+ ld hl, SilphCo11Text_624c2
+ ld de, SilphCo11Text_624c2
+ call SaveEndBattleTextPointers
+ ld a, OPP_ROCKET
+ ld [wCurOpponent], a
+ ld a, $2d
+ ld [wTrainerNo], a
+ xor a
+ ld [hJoyHeld], a
+ ld [wJoyIgnore], a
+ ld a, $c
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11Script12:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wIsInBattle]
+ cp $ff
+ jp z, SilphCo11Script_62185
+ ld a, $2
+ ld [wSpriteStateData1 + 4 * $10 + 1], a
+ ld [wSpriteStateData1 + 6 * $10 + 1], a
+ xor a
+ ld [wSpriteStateData1 + 4 * $10 + 9], a
+ ld [wSpriteStateData1 + 6 * $10 + 9], a
+ ld a, $fc
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $a
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call StopAllMusic
+ ld c, BANK(Music_JessieAndJames)
+ ld a, MUSIC_JESSIE_AND_JAMES
+ call PlayMusic
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $d
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11Script13:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ call GBFadeOutToBlack
+ ld a, HS_SILPH_CO_11F_JAMES
+ call SilphCo11Script_6246d
+ ld a, HS_SILPH_CO_11F_JESSIE
+ call SilphCo11Script_6246d
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, $e
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11Script14:
+ call PlayDefaultMusic
+ xor a
+ ld [hJoyHeld], a
+ ld [wJoyIgnore], a
+ ResetEvent EVENT_782
+ SetEventReuseHL EVENT_BEAT_SILPH_CO_11F_TRAINER_0
+ ld a, $0
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11Script_6245e:
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ call UpdateSprites
+ call Delay3
+ ret
-SilphCo11TextPointers: ; 622b7 (18:62b7)
+SilphCo11Script_6246d:
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ret
+
+SilphCo11TextPointers: ; 62476 (18:62b7)
dw SilphCo11Text1
dw SilphCo11Text2
dw SilphCo11Text3
dw SilphCo11Text4
dw SilphCo11Text5
dw SilphCo11Text6
+ dw SilphCo11Text7
+ dw SilphCo11Text8
+ dw SilphCo11Text9
+ dw SilphCo11Text10
-SilphCo11TrainerHeaders: ; 622c3 (18:62c3)
-SilphCo11TrainerHeader0: ; 622c3 (18:62c3)
- dbEventFlagBit EVENT_BEAT_SILPH_CO_11F_TRAINER_0
- db ($4 << 4) ; trainer's view range
- dwEventFlagAddress EVENT_BEAT_SILPH_CO_11F_TRAINER_0
- dw SilphCo11BattleText1 ; TextBeforeBattle
- dw SilphCo11AfterBattleText1 ; TextAfterBattle
- dw SilphCo11EndBattleText1 ; TextEndBattle
- dw SilphCo11EndBattleText1 ; TextEndBattle
-
-SilphCo11TrainerHeader1: ; 622cf (18:62cf)
+SilphCo11TrainerHeaders: ; 6248a
+SilphCo11TrainerHeader0: ; 6248a
dbEventFlagBit EVENT_BEAT_SILPH_CO_11F_TRAINER_1
- db ($3 << 4) ; trainer's view range
+ db ($3 << 4)
dwEventFlagAddress EVENT_BEAT_SILPH_CO_11F_TRAINER_1
- dw SilphCo11BattleText2 ; TextBeforeBattle
- dw SilphCo11AfterBattleText2 ; TextAfterBattle
- dw SilphCo11EndBattleText2 ; TextEndBattle
- dw SilphCo11EndBattleText2 ; TextEndBattle
+ dw SilphCo11Trainer1BattleText
+ dw SilphCo11Trainer1AfterBattleText
+ dw SilphCo11Trainer1EndBattleText
+ dw SilphCo11Trainer1EndBattleText
- db $ff
+ db $ff ; no more trainers
+
+SilphCo11Text4:
+SilphCo11Text6:
+SilphCo11Text8:
+ TX_FAR _SilphCoJessieJamesText1
+ TX_ASM
+ ld c, 10
+ call DelayFrames
+ ld a, $4
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, $0
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
+ jp TextScriptEnd
+
+SilphCo11Text9:
+ TX_FAR _SilphCoJessieJamesText2
+ db "@"
+
+SilphCo11Text_624c2:
+ TX_FAR _SilphCoJessieJamesText3
+ db "@"
+
+SilphCo11Text10:
+ TX_FAR _SilphCoJessieJamesText4
+ TX_ASM
+ ld c, 64
+ call DelayFrames
+ jp TextScriptEnd
-SilphCo11Text1: ; 622dc (18:62dc)
+SilphCo11Text1:
TX_ASM
CheckEvent EVENT_GOT_MASTER_BALL
- jp nz, .asm_62308
- ld hl, SilphCoPresidentText
+ jp nz, .asm_62500
+ ld hl, SilphCo11Text_62509
call PrintText
lb bc, MASTER_BALL, 1
call GiveItem
- jr nc, .BagFull
- ld hl, ReceivedSilphCoMasterBallText
+ jr nc, .asm_624f8
+ ld hl, SilphCo11Text_6250e
call PrintText
SetEvent EVENT_GOT_MASTER_BALL
- jr .asm_6230e
-.BagFull
- ld hl, SilphCoMasterBallNoRoomText
+ jr .asm_62506
+.asm_624f8
+ ld hl, SilphCo11Text_62519
call PrintText
- jr .asm_6230e
-.asm_62308
- ld hl, SilphCo10Text_6231c
+ jr .asm_62506
+
+.asm_62500
+ ld hl, SilphCo11Text_62514
call PrintText
-.asm_6230e
+.asm_62506
jp TextScriptEnd
-SilphCoPresidentText: ; 62311 (18:6311)
+SilphCo11Text_62509:
TX_FAR _SilphCoPresidentText
db "@"
-ReceivedSilphCoMasterBallText: ; 62316 (18:6316)
+SilphCo11Text_6250e:
TX_FAR _ReceivedSilphCoMasterBallText
- db $11, "@"
+ TX_SFX_KEY_ITEM
+ db "@"
-SilphCo10Text_6231c: ; 6231c (18:631c)
+SilphCo11Text_62514:
TX_FAR _SilphCo10Text_6231c
db "@"
-SilphCoMasterBallNoRoomText: ; 62321 (18:6321)
+SilphCo11Text_62519:
TX_FAR _SilphCoMasterBallNoRoomText
db "@"
-SilphCo11Text2: ; 62326 (18:6326)
+SilphCo11Text2:
TX_FAR _SilphCo11Text2
db "@"
-SilphCo11Text3: ; 6232b (18:632b)
+SilphCo11Text3:
TX_FAR _SilphCo11Text3
db "@"
-SilphCo10Text_62330: ; 62330 (18:6330)
+SilphCo10Text_62528:
TX_FAR _SilphCo10Text_62330
db "@"
-SilphCo11Text6: ; 62335 (18:6335)
+SilphCo11Text7:
TX_FAR _SilphCo10Text_62335
db "@"
-SilphCo11Text4: ; 6233a (18:633a)
+SilphCo11Text5:
TX_ASM
ld hl, SilphCo11TrainerHeader0
call TalkToTrainer
jp TextScriptEnd
-SilphCo11BattleText1: ; 62344 (18:6344)
- TX_FAR _SilphCo11BattleText1
- db "@"
-
-SilphCo11EndBattleText1: ; 62349 (18:6349)
- TX_FAR _SilphCo11EndBattleText1
- db "@"
-
-SilphCo11AfterBattleText1: ; 6234e (18:634e)
- TX_FAR _SilphCo11AfterBattleText1
- db "@"
-
-SilphCo11Text5: ; 62353 (18:6353)
- TX_ASM
- ld hl, SilphCo11TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
-
-SilphCo11BattleText2: ; 6235d (18:635d)
+SilphCo11Trainer1BattleText:
TX_FAR _SilphCo11BattleText2
db "@"
-SilphCo11EndBattleText2: ; 62362 (18:6362)
+SilphCo11Trainer1EndBattleText:
TX_FAR _SilphCo11EndBattleText2
db "@"
-SilphCo11AfterBattleText2: ; 62367 (18:6367)
+SilphCo11Trainer1AfterBattleText:
TX_FAR _SilphCo11AfterBattleText2
db "@"
-
-SilphCo10Text_6236c: ; 6236c (18:636c)
- TX_ASM
- ld hl, SilphCo10Text_6237b
- call PrintText
- ld a, PORYGON
- call DisplayPokedex
- jp TextScriptEnd
-
-SilphCo10Text_6237b: ; 6237b (18:637b)
- TX_FAR _SilphCo10Text_6237b
- db "@"
diff --git a/scripts/silphco11_2.asm b/scripts/silphco11_2.asm
index 22e19a02..419efe24 100755
--- a/scripts/silphco11_2.asm
+++ b/scripts/silphco11_2.asm
@@ -70,7 +70,7 @@ MissableObjects_f25ce
db HS_SILPH_CO_10F_1
db HS_SILPH_CO_10F_2
db HS_SILPH_CO_11F_1
+ db HS_SILPH_CO_11F_JAMES
db HS_SILPH_CO_11F_2
db HS_SILPH_CO_11F_JESSIE
- db HS_SILPH_CO_11F_JAMES
db $ff \ No newline at end of file
diff --git a/scripts/silphco7.asm b/scripts/silphco7.asm
index 0735d437..1634472b 100755
--- a/scripts/silphco7.asm
+++ b/scripts/silphco7.asm
@@ -130,9 +130,7 @@ SilphCo7Script0: ; 51c23 (14:5c23)
ld [wJoyIgnore], a
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
@@ -186,21 +184,11 @@ SilphCo7Script3: ; 51c82 (14:5c82)
ld a, OPP_SONY2
ld [wCurOpponent], a
ld a, [W_RIVALSTARTER]
- cp STARTER2
- jr nz, .asm_51cb6
- ld a, $7
- jr .asm_51cc0
-.asm_51cb6
- cp STARTER3
- jr nz, .asm_51cbe
- ld a, $8
- jr .asm_51cc0
-.asm_51cbe
- ld a, $9
-.asm_51cc0
+ add 4
ld [wTrainerNo], a
ld a, $4
- jp SilphCo7Text_51c10
+ call SilphCo7Text_51c10
+ ret
SilphCo7Script4: ; 51cc8 (14:5cc8)
ld a, [wIsInBattle]
@@ -219,9 +207,7 @@ SilphCo7Script4: ; 51cc8 (14:5cc8)
ld a, $f
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStart
ld de, MovementData_51d1d
ld a, [wcf0d]
diff --git a/scripts/unknowndungeon1.asm b/scripts/unknowndungeon1.asm
index 696ddafa..9951dc52 100755
--- a/scripts/unknowndungeon1.asm
+++ b/scripts/unknowndungeon1.asm
@@ -5,3 +5,4 @@ UnknownDungeon1TextPointers: ; 74d0f (1d:4d0f)
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
+ dw PickUpItemText
diff --git a/scripts/unknowndungeon2.asm b/scripts/unknowndungeon2.asm
index f3cbb6a5..2bf9fdb4 100755
--- a/scripts/unknowndungeon2.asm
+++ b/scripts/unknowndungeon2.asm
@@ -5,3 +5,4 @@ UnknownDungeon2TextPointers: ; 45e0e (11:5e0e)
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
+ dw PickUpItemText
diff --git a/scripts/unknowndungeon3.asm b/scripts/unknowndungeon3.asm
index 42459766..265df358 100755
--- a/scripts/unknowndungeon3.asm
+++ b/scripts/unknowndungeon3.asm
@@ -16,6 +16,8 @@ UnknownDungeon3TextPointers: ; 45f09 (11:5f09)
dw UnknownDungeon3Text1
dw PickUpItemText
dw PickUpItemText
+ dw PickUpItemText
+ dw PickUpItemText
UnknownDungeon3TrainerHeaders: ; 45f0f (11:5f0f)
UnknownDungeon3TrainerHeader0: ; 45f0f (11:5f0f)
diff --git a/text/map_names.asm b/text/map_names.asm
index dd8592be..0338cba3 100755
--- a/text/map_names.asm
+++ b/text/map_names.asm
@@ -98,7 +98,7 @@ RocketHQName: ; 7167a (1c:567a)
SilphCoName: ; 71684 (1c:5684)
db "SILPH CO.@"
PokemonMansionName: ; 7168e (1c:568e)
- db $4a," MANSION@"
+ db "<pkmn> MANSION@"
SafariZoneName: ; 71698 (1c:5698)
db "SAFARI ZONE@"
CeruleanCaveName: ; 716a4 (1c:56a4)
diff --git a/text/maps/agatha.asm b/text/maps/agatha.asm
index 7d1b97bb..95b455c8 100644
--- a/text/maps/agatha.asm
+++ b/text/maps/agatha.asm
@@ -38,7 +38,7 @@ _AgathaAfterBattleText::
cont "along now, child!"
done
-_AgathaText2::
+_AgathaDontRunAwayText::
text "Someone's voice:"
line "Don't run away!"
done
diff --git a/text/maps/bruno.asm b/text/maps/bruno.asm
index dea3d201..ddcbdb59 100644
--- a/text/maps/bruno.asm
+++ b/text/maps/bruno.asm
@@ -31,7 +31,7 @@ _BrunoAfterBattleText::
cont "challenge!"
done
-_UnnamedText_763d2::
+_BrunoDontRunAwayText::
text "Someone's voice:"
line "Don't run away!"
done
diff --git a/wram.asm b/wram.asm
index 70d973c7..be995089 100755
--- a/wram.asm
+++ b/wram.asm
@@ -263,10 +263,11 @@ SECTION "OAM Buffer", WRAM0[$c300]
wOAMBuffer:: ; c300
; buffer for OAM data. Copied to OAM by DMA
ds 4 * 40
+wOAMBufferEnd::
wTileMap:: ; c3a0
; buffer for tiles that are visible on screen (20 columns by 18 rows)
- ds 20 * 18
+ ds SCREEN_HEIGHT * SCREEN_WIDTH
wSerialPartyMonsPatchList:: ; c508
; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer
@@ -276,18 +277,156 @@ wTileMapBackup:: ; c508
; (e.g. if menus are drawn on top)
; ds 20 * 18
- ds 200
+wAnimatedObjectsData::
+; Used by functions in BANK 3E
+; This looks similar to the address structure for Gen 2 OAM animations.
+
+wAnimatedObjectStartTileOffsets::
+ ds 10 * 2
+wAnimatedObjectDataStructs:: ; c51c
+ ds 10 * $10
+wNumLoadedAnimatedObjects:: ; c5bc
+ ds 1
+wCurrentAnimatedObjectOAMBufferOffset:: ; c5bd
+ ds 3
+wAnimatedObjectSpawnStateDataPointer:: ; c5c0
+ dw
+wAnimatedObjectFramesDataPointer:: ; c5c2
+ dw
+wAnimatedObjectJumptablePointer:: ; c5c4
+ dw
+wAnimatedObjectOAMDataPointer:: ; c5c6
+ dw
+wCurAnimatedObjectOAMAttributes:: ; c5c8
+ ds 1
+wCurrentAnimatedObjectVTileOffset:: ; c5c9
+ ds 1
+wCurrentAnimatedObjectXCoord:: ; c5ca
+ ds 1
+wCurrentAnimatedObjectYCoord:: ; c5cb
+ ds 1
+wCurrentAnimatedObjectXOffset:: ; c5cc
+ ds 1
+wCurrentAnimatedObjectYOffset:: ; c5cd
+ ds 1
+wAnimatedObjectGlobalYOffset:: ; c5ce
+ ds 1
+wAnimatedObjectGlobalXOffset:: ; c5cf
+ ds 1
+wAnimatedObjectsDataEnd::
wSerialEnemyMonsPatchList:: ; c5d0
; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer
- ds 200
+ ds 1
+wc5d1:: ; c5d1
+ ds 1
+wc5d2:: ; c5d2
+ ds 1
+wc5d3:: ; c5d3
+ ds 2
+wc5d5:: ; c5d5
+ ds 1
+wc5d6:: ; c5d6
+ ds 1
+wc5d7:: ; c5d7
+ ds 2
+wc5d9:: ; c5d9
+ ds 1
+wc5da:: ; c5da
+ ds 1
+wc5db:: ; c5db
+ ds 1
+wc5dc:: ; c5dc
+ ds 1
+wc5dd:: ; c5dd
+ ds 1
+wc5de:: ; c5de
+ ds 1
+wc5df:: ; c5df
+ ds 1
+wc5e0:: ; c5e0
+ ds 1
+wc5e1:: ; c5e1
+ ds 1
+wc5e2:: ; c5e2
+ ds 1
+wc5e3:: ; c5e3
+ ds 2
+wc5e5:: ; c5e5
+ ds 1
+wc5e6:: ; c5e6
+ ds 1
+wc5e7:: ; c5e7
+ ds 1
+wc5e8:: ; c5e8
+ ds 1
+wc5e9:: ; c5e9
+ ds 1
+wc5ea:: ; c5ea
+ ds 1
+wc5eb:: ; c5eb
+ ds 1
+wc5ec:: ; c5ec
+ ds 1
+wc5ed:: ; c5ed
+ ds 1
+wc5ee:: ; c5ee
+ ds 1
+wc5ef:: ; c5ef
+ ds 1
+wc5f0:: ; c5f0
+ ds 39
+wc617:: ; c617
+ ds 1
+wc618:: ; c618
+ ds 1
+wc619:: ; c619
+ ds 1
+wc61a:: ; c61a
+ ds 2
+wc61c:: ; c61c
+ ds 5
+wc621:: ; c621
+ ds 1
+wc622:: ; c622
+ ds 1
+wc623:: ; c623
+ ds 11
+wc62e:: ; c62e
+ ds 1
+wc62f:: ; c62f
+ ds 1
+wc630:: ; c630
+ ds 1
+wc631:: ; c631
+ ds 1
+wc632:: ; c632
+ ds 1
+wc633:: ; c633
+ ds 1
+wc634:: ; c634
+ ds 1
+wc635:: ; c635
+ ds 1
+wc636:: ; c636
+ ds 2
+
+; c638
+ ds 96
+; c698
ds 80
wTempPic::
wOverworldMap:: ; c6e8
; ds 1300
- ds $290
+ ds $18
+wc700:: ; c700
+ ds $10
+wc710:: ; c710
+ ds $f0
+wc800:: ; c800
+ ds $178
wPrinterTileBuffer:: ; c978
ds SCREEN_HEIGHT * SCREEN_WIDTH