summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluckytyphlosion <alan.rj.huang@gmail.com>2016-05-30 18:20:41 -0400
committerluckytyphlosion <alan.rj.huang@gmail.com>2016-05-30 18:20:41 -0400
commit3330662296eabb6b3b7f0eed1c79003c8873c712 (patch)
treedae9a2f40425a236a3ef6ecce453cf16b4359c26
parent5b53dbe15d0f24c0ebcb537d7e11c106abd99867 (diff)
parentd00b70b33ee909ad163f2cb1c639ce799db118d0 (diff)
Merge pull request #9 from PikalaxALT/master
Disassemble banks 3A, 3F, and all outdoor maps
-rw-r--r--charmap.asm2
-rw-r--r--constants.asm2
-rw-r--r--constants/credits_constants.asm160
-rw-r--r--constants/event_constants.asm14
-rw-r--r--constants/event_macros.asm53
-rwxr-xr-xconstants/hide_show_constants.asm352
-rw-r--r--constants/map_constants.asm505
-rwxr-xr-xconstants/map_dimensions.asm896
-rw-r--r--constants/pikachu_emotion_constants.asm6
-rw-r--r--constants/pokedex_constants.asm2
-rw-r--r--constants/pokemon_constants.asm2
-rw-r--r--constants/predef_constants.asm8
-rwxr-xr-xconstants/trainer_constants.asm94
-rw-r--r--constants/tx_pre_constants.asm70
-rwxr-xr-xdata/credit_mons.asm4
-rwxr-xr-xdata/credits_order.asm69
-rwxr-xr-xdata/hidden_item_coords.asm111
-rwxr-xr-xdata/hidden_objects.asm1396
-rwxr-xr-xdata/hide_show_data.asm2
-rw-r--r--data/mapHeaders/beach_house.asm2
-rwxr-xr-xdata/mapHeaders/route5.asm2
-rwxr-xr-xdata/mapObjects/blueshouse.asm6
-rwxr-xr-xdata/mapObjects/ceruleancity.asm20
-rwxr-xr-xdata/mapObjects/ceruleanhouse1.asm8
-rwxr-xr-xdata/mapObjects/ceruleanpokecenter.asm5
-rwxr-xr-xdata/mapObjects/fuchsiacity.asm2
-rwxr-xr-xdata/mapObjects/mtmoon3.asm15
-rwxr-xr-xdata/mapObjects/mtmoonpokecenter.asm3
-rwxr-xr-xdata/mapObjects/oakslab.asm20
-rwxr-xr-xdata/mapObjects/pallettown.asm2
-rwxr-xr-xdata/mapObjects/pewterpokecenter.asm6
-rwxr-xr-xdata/mapObjects/rocktunnelpokecenter.asm5
-rwxr-xr-xdata/mapObjects/route11.asm4
-rwxr-xr-xdata/mapObjects/route12.asm2
-rwxr-xr-xdata/mapObjects/route15.asm4
-rwxr-xr-xdata/mapObjects/route16.asm8
-rwxr-xr-xdata/mapObjects/route18.asm4
-rwxr-xr-xdata/mapObjects/route19.asm17
-rwxr-xr-xdata/mapObjects/route2.asm7
-rwxr-xr-xdata/mapObjects/route24.asm3
-rwxr-xr-xdata/mapObjects/route5.asm4
-rwxr-xr-xdata/mapObjects/route6.asm4
-rwxr-xr-xdata/mapObjects/route7.asm4
-rwxr-xr-xdata/mapObjects/route7gate.asm2
-rwxr-xr-xdata/mapObjects/route8.asm4
-rwxr-xr-xdata/mapObjects/route8gate.asm4
-rwxr-xr-xdata/mapObjects/route9.asm2
-rwxr-xr-xdata/mapObjects/saffroncity.asm5
-rwxr-xr-xdata/mapObjects/school.asm3
-rwxr-xr-xdata/mapObjects/vermilioncity.asm19
-rwxr-xr-xdata/mapObjects/viridiancity.asm15
-rwxr-xr-xdata/mapObjects/viridianforest.asm26
-rwxr-xr-xdata/mapObjects/viridianforestentrance.asm2
-rwxr-xr-xdata/mapObjects/viridianpokecenter.asm5
-rw-r--r--data/map_header_banks.asm499
-rw-r--r--data/map_header_pointers.asm499
-rwxr-xr-xdata/town_map_entries.asm2
-rwxr-xr-xengine/HoF_room_pc.asm333
-rw-r--r--engine/bank3c.asm521
-rw-r--r--engine/bank3f.asm2432
-rwxr-xr-xengine/evolution.asm10
-rwxr-xr-xengine/game_corner_slots2.asm4
-rwxr-xr-xengine/hidden_object_functions17.asm111
-rwxr-xr-xengine/hidden_object_functions18.asm74
-rwxr-xr-xengine/items/itemfinder.asm4
-rwxr-xr-xengine/items/items.asm4
-rw-r--r--engine/menu/bills_pc.asm2
-rwxr-xr-xengine/menu/party_menu.asm2
-rwxr-xr-xengine/menu/pokedex.asm526
-rw-r--r--engine/overworld/advance_player_sprite.asm2
-rwxr-xr-xengine/overworld/cable_club_npc.asm2
-rwxr-xr-xengine/overworld/hidden_items.asm17
-rwxr-xr-xengine/overworld/hidden_objects.asm26
-rw-r--r--engine/overworld/missable_objects.asm2
-rwxr-xr-xengine/overworld/pokecenter.asm8
-rwxr-xr-xengine/pikachu_pic_animation.asm3449
-rwxr-xr-xengine/printer.asm254
-rw-r--r--gfx/unknown_fd86b.pngbin0 -> 92 bytes
-rw-r--r--home.asm2369
-rw-r--r--home/overworld.asm6
-rwxr-xr-xhome/pikachu.asm113
-rw-r--r--home/text.asm440
-rw-r--r--hram.asm6
-rw-r--r--macros.asm245
-rwxr-xr-xmain.asm794
-rw-r--r--maps/celadonpokecenter.blk2
-rw-r--r--maps/ceruleanmart.blk2
-rw-r--r--maps/ceruleanpokecenter.blk2
-rw-r--r--maps/cinnabarmart.blk2
-rw-r--r--maps/cinnabarpokecenter.blk2
-rw-r--r--maps/fuchsiamart.blk2
-rw-r--r--maps/fuchsiapokecenter.blk2
-rw-r--r--maps/lavendermart.blk2
-rw-r--r--maps/lavenderpokecenter.blk2
-rw-r--r--maps/mtmoonpokecenter.blk2
-rw-r--r--maps/pewtermart.blk2
-rw-r--r--maps/pewterpokecenter.blk2
-rw-r--r--maps/rocktunnelpokecenter.blk2
-rw-r--r--maps/route19.blk2
-rw-r--r--maps/route4.blk2
-rw-r--r--maps/saffronmart.blk2
-rw-r--r--maps/saffronpokecenter.blk2
-rw-r--r--maps/vermilionmart.blk2
-rw-r--r--maps/vermilionpokecenter.blk2
-rw-r--r--maps/viridianmart.blk2
-rw-r--r--maps/viridianpokecenter.blk2
-rw-r--r--scripts/beach_house.asm160
-rwxr-xr-xscripts/beach_house2.asm33
-rwxr-xr-xscripts/bikeshop.asm23
-rwxr-xr-xscripts/billshouse.asm2
-rwxr-xr-xscripts/billshouse2.asm158
-rwxr-xr-xscripts/blueshouse.asm33
-rwxr-xr-xscripts/celadoncity.asm16
-rwxr-xr-xscripts/celadoncity2.asm8
-rwxr-xr-xscripts/celadongamecorner.asm2
-rwxr-xr-xscripts/ceruleancity.asm27
-rwxr-xr-xscripts/ceruleangym.asm3
-rwxr-xr-xscripts/ceruleanhouse1.asm99
-rwxr-xr-xscripts/ceruleanpokecenter.asm6
-rwxr-xr-xscripts/cinnabargym.asm2
-rwxr-xr-xscripts/cinnabarisland.asm2
-rwxr-xr-xscripts/daycarem.asm29
-rwxr-xr-xscripts/gary.asm2
-rwxr-xr-xscripts/halloffameroom.asm2
-rwxr-xr-xscripts/mtmoon1.asm19
-rwxr-xr-xscripts/mtmoon3.asm562
-rwxr-xr-xscripts/mtmoonpokecenter.asm72
-rwxr-xr-xscripts/mtmoonpokecenter2.asm66
-rwxr-xr-xscripts/museum1f.asm203
-rwxr-xr-xscripts/museum1f2.asm211
-rwxr-xr-xscripts/museum2f.asm34
-rwxr-xr-xscripts/oakslab.asm1080
-rwxr-xr-xscripts/oakslab2.asm28
-rwxr-xr-xscripts/pallettown.asm288
-rwxr-xr-xscripts/pewtercity.asm22
-rwxr-xr-xscripts/pewtergym.asm22
-rwxr-xr-xscripts/pewterhouse1.asm3
-rwxr-xr-xscripts/pewterpokecenter.asm80
-rwxr-xr-xscripts/pewterpokecenter2.asm72
-rwxr-xr-xscripts/pokemontower2.asm2
-rwxr-xr-xscripts/redshouse1f.asm60
-rwxr-xr-xscripts/redshouse1f2.asm58
-rwxr-xr-xscripts/redshouse2f.asm23
-rwxr-xr-xscripts/rockethideout2.asm2
-rwxr-xr-xscripts/rocktunnelpokecenter.asm10
-rwxr-xr-xscripts/route1.asm46
-rwxr-xr-xscripts/route16gate.asm2
-rwxr-xr-xscripts/route18.asm1
-rwxr-xr-xscripts/route18gate.asm2
-rwxr-xr-xscripts/route19.asm30
-rwxr-xr-xscripts/route1_2.asm53
-rwxr-xr-xscripts/route22.asm135
-rwxr-xr-xscripts/route22_2.asm50
-rwxr-xr-xscripts/route22gate.asm2
-rwxr-xr-xscripts/route23.asm2
-rwxr-xr-xscripts/route24.asm64
-rwxr-xr-xscripts/route25.asm23
-rwxr-xr-xscripts/route5.asm6
-rwxr-xr-xscripts/route5gate.asm2
-rwxr-xr-xscripts/route6.asm6
-rwxr-xr-xscripts/route6gate.asm2
-rwxr-xr-xscripts/route7.asm9
-rwxr-xr-xscripts/route7gate.asm2
-rwxr-xr-xscripts/route8gate.asm4
-rwxr-xr-xscripts/route9.asm24
-rwxr-xr-xscripts/safarizoneentrance.asm2
-rwxr-xr-xscripts/school.asm14
-rwxr-xr-xscripts/school2.asm17
-rwxr-xr-xscripts/seafoamislands4.asm2
-rwxr-xr-xscripts/seafoamislands5.asm2
-rwxr-xr-xscripts/silphco11_2.asm76
-rwxr-xr-xscripts/ssanne2.asm2
-rwxr-xr-xscripts/ssanne9_2.asm35
-rwxr-xr-xscripts/vermilioncity.asm75
-rwxr-xr-xscripts/vermilioncity2.asm111
-rwxr-xr-xscripts/viridiancity.asm470
-rwxr-xr-xscripts/viridiancity2.asm218
-rwxr-xr-xscripts/viridianforest.asm102
-rwxr-xr-xscripts/viridianforest2.asm53
-rwxr-xr-xscripts/viridianforestentrance.asm3
-rwxr-xr-xscripts/viridianmart.asm16
-rwxr-xr-xscripts/viridianpokecenter.asm6
-rwxr-xr-xtext/credits_text.asm338
-rw-r--r--text/maps/bike_shop.asm2
-rw-r--r--text/maps/museum_1f.asm2
-rw-r--r--text/maps/oaks_lab.asm80
-rw-r--r--text/maps/route_24.asm31
-rw-r--r--text/maps/route_25.asm28
-rw-r--r--text/maps/vermilion_city.asm18
-rw-r--r--text/maps/viridian_city.asm2
-rwxr-xr-xwram.asm72
191 files changed, 13709 insertions, 8847 deletions
diff --git a/charmap.asm b/charmap.asm
index c794549f..e4368d40 100644
--- a/charmap.asm
+++ b/charmap.asm
@@ -149,6 +149,8 @@ charmap "ー", $E3
charmap "<pkmn>", $4a ; PkMn
charmap "@", $50
+charmap "<PLAYER>", $52
+charmap "<RIVAL>", $53
charmap "#", $54
;charmap "POKé", $54
charmap "′", $71
diff --git a/constants.asm b/constants.asm
index 24730d77..ba2d76c6 100644
--- a/constants.asm
+++ b/constants.asm
@@ -21,7 +21,6 @@ INCLUDE "constants/palette_constants.asm"
INCLUDE "constants/evolution_constants.asm"
INCLUDE "constants/list_constants.asm"
INCLUDE "constants/map_constants.asm"
-INCLUDE "constants/map_dimensions.asm"
INCLUDE "constants/connection_constants.asm"
INCLUDE "constants/hide_show_constants.asm"
INCLUDE "constants/credits_constants.asm"
@@ -29,7 +28,6 @@ INCLUDE "constants/music_constants.asm"
INCLUDE "constants/tilesets.asm"
INCLUDE "constants/starter_mons.asm"
INCLUDE "constants/predef_constants.asm"
-INCLUDE "constants/tx_pre_constants.asm"
INCLUDE "constants/event_constants.asm"
INCLUDE "constants/event_macros.asm"
INCLUDE "constants/pikachu_emotion_constants.asm" \ No newline at end of file
diff --git a/constants/credits_constants.asm b/constants/credits_constants.asm
index f5715072..013ceceb 100644
--- a/constants/credits_constants.asm
+++ b/constants/credits_constants.asm
@@ -1,67 +1,95 @@
-const_value = 0
-
- const CRED_VERSION ; $00
- const CRED_TAJIRI ; $01
- const CRED_TA_OOTA ; $02
- const CRED_MORIMOTO ; $03
- const CRED_WATANABE ; $04
- const CRED_MASUDE ; $05
- const CRED_NISINO ; $06
- const CRED_SUGIMORI ; $07
- const CRED_NISHIDA ; $08
- const CRED_MIYAMOTO ; $09
- const CRED_KAWAGUCHI ; $0A
- const CRED_ISHIHARA ; $0B
- const CRED_YAMAUCHI ; $0C
- const CRED_ZINNAI ; $0D
- const CRED_HISHIDA ; $0E
- const CRED_SAKAI ; $0F
- const CRED_YAMAGUCHI ; $10
- const CRED_YAMAMOTO ; $11
- const CRED_TANIGUCHI ; $12
- const CRED_NONOMURA ; $13
- const CRED_FUZIWARA ; $14
- const CRED_MATSUSIMA ; $15
- const CRED_TOMISAWA ; $16
- const CRED_KAWAMOTO ; $17
- const CRED_KAKEI ; $18
- const CRED_TSUCHIYA ; $19
- const CRED_TA_NAKAMURA ; $1A
- const CRED_YUDA ; $1B
- const CRED_MON ; $1C
- const CRED_DIRECTOR ; $1D
- const CRED_PROGRAMMERS ; $1E
- const CRED_CHAR_DESIGN ; $1F
- const CRED_MUSIC ; $20
- const CRED_SOUND_EFFECTS ; $21
- const CRED_GAME_DESIGN ; $22
- const CRED_MONSTER_DESIGN ; $23
- const CRED_GAME_SCENE ; $24
- const CRED_PARAM ; $25
- const CRED_MAP ; $26
- const CRED_TEST ; $27
- const CRED_SPECIAL ; $28
- const CRED_PRODUCERS ; $29
- const CRED_PRODUCER ; $2A
- const CRED_EXECUTIVE ; $2B
- const CRED_TAMADA ; $2C
- const CRED_SA_OOTA ; $2D
- const CRED_YOSHIKAWA ; $2E
- const CRED_TO_OOTA ; $2F
- const CRED_US_STAFF ; $30
- const CRED_US_COORD ; $31
- const CRED_TILDEN ; $32
- const CRED_KAWAKAMI ; $33
- const CRED_HI_NAKAMURA ; $34
- const CRED_GIESE ; $35
- const CRED_OSBORNE ; $36
- const CRED_TRANS ; $37
- const CRED_OGASAWARA ; $38
- const CRED_IWATA ; $39
- const CRED_IZUSHI ; $3A
- const CRED_HARADA ; $3B
- const CRED_MURAKAWA ; $3C
- const CRED_FUKUI ; $3D
- const CRED_CLUB ; $3E
- const CRED_PAAD ; $3F
+ const_def
+ const CRED_VERSION ; 00
+ const CRED_TAJIRI ; 01
+ const CRED_OOTA ; 02
+ const CRED_MORIMOTO ; 03
+ const CRED_WATANABE ; 04
+ const CRED_MASUDA ; 05
+ const CRED_NISHINO ; 06
+ const CRED_SUGIMORI ; 07
+ const CRED_NISHIDA ; 08
+ const CRED_MIYAMOTO ; 09
+ const CRED_KAWAGUCHI ; 0a
+ const CRED_ISHIHARA ; 0b
+ const CRED_YAMAUCHI ; 0c
+ const CRED_ZINNAI ; 0d
+ const CRED_HISHIDA ; 0e
+ const CRED_SAKAI ; 0f
+ const CRED_YAMAGUCHI ; 10
+ const CRED_YAMAMOTO ; 11
+ const CRED_TANIGUCHI ; 12
+ const CRED_NONOMURA ; 13
+ const CRED_FUZIWARA ; 14
+ const CRED_MATSUSIMA ; 15
+ const CRED_TOMISAWA ; 16
+ const CRED_KAWAMOTO ; 17
+ const CRED_KAKEI ; 18
+ const CRED_TSUCHIYA ; 19
+ const CRED_NAKAMURA ; 1a
+ const CRED_YUDA ; 1b
+ const CRED_POKEMON ; 1c
+ const CRED_DIRECTOR ; 1d
+ const CRED_PROGRAMMERS ; 1e
+ const CRED_CHARACTER_DESIGN ; 1f
+ const CRED_MUSIC ; 20
+ const CRED_SOUND_EFFECTS ; 21
+ const CRED_GAME_DESIGN ; 22
+ const CRED_MONSTER_DESIGN ; 23
+ const CRED_GAME_SCENARIO ; 24
+ const CRED_PARAMETRIC_DESIGN ; 25
+ const CRED_MAP_DESIGN ; 26
+ const CRED_TESTING ; 27
+ const CRED_SPECIAL_THANKS ; 28
+ const CRED_PRODUCER ; 29
+ const CRED_EXECUTIVE_PRODUCER ; 2a
+ const CRED_TAMADA ; 2b
+ const CRED_OOTA2 ; 2c
+ const CRED_YOSHIKAWA ; 2d
+ const CRED_OOTA23 ; 2e
+ const CRED_YOSHIDA ; 2f
+ const CRED_MATSUMITA ; 30
+ const CRED_SEYA ; 31
+ const CRED_SEKINE ; 32
+ const CRED_SHIMAMURA ; 33
+ const CRED_SHIMOYAMADA ; 34
+ const CRED_SUPER_MARIO_CLUB ; 35
+ const CRED_IZUSHI ; 36
+ const CRED_NOMURA ; 37
+ const CRED_HARADA ; 38
+ const CRED_YAMAGAMI ; 39
+ const CRED_NISHIMURA ; 3a
+ const CRED_SAEKI ; 3b
+ const CRED_FUZII ; 3c
+ const CRED_SHOGAKUKAN ; 3d
+ const CRED_OOTANI ; 3e
+ const CRED_PIKACHU_VOICE ; 3f
+ const CRED_U_S_STAFF ; 40
+ const CRED_U_S_COORD ; 41
+ const CRED_TILDEN ; 42
+ const CRED_KAWAKAMI ; 43
+ const CRED_NAKAMURA2 ; 44
+ const CRED_SHOEMAKE ; 45
+ const CRED_OSBORNE ; 46
+ const CRED_TRANSLATION ; 47
+ const CRED_OGASAWARA ; 48
+ const CRED_IWATA ; 49
+ const CRED_IZUSHI2 ; 4a
+ const CRED_HARADA2 ; 4b
+ const CRED_MURAKAWA ; 4c
+ const CRED_FUKUI ; 4d
+ const CRED_SUPER_MARIO_CLUB2 ; 4e
+ const CRED_PAAD ; 4f
+ const CRED_PRODUCERS ; 50
+ const CRED_HOSOKAWA ; 51
+ const CRED_OKUBO ; 52
+ const CRED_NAKAMICHI ; 53
+ const CRED_YOSHIMURA ; 54
+ const CRED_YAMAZAKI ; 55
+const_value SET $fa
+ const CRED_THE_END
+ const CRED_COPYRIGHT
+ const CRED_TEXT
+ const CRED_TEXT_FADE
+ const CRED_TEXT_MON
+ const CRED_TEXT_FADE_MON
diff --git a/constants/event_constants.asm b/constants/event_constants.asm
index f284c967..2d1fab45 100644
--- a/constants/event_constants.asm
+++ b/constants/event_constants.asm
@@ -5,7 +5,7 @@ const_value = 0
const EVENT_002 ; 002, (D747, bit 2)
const EVENT_HALL_OF_FAME_DEX_RATING ; 003, (D747, bit 3)
const EVENT_004 ; 004, (D747, bit 4)
- const EVENT_005 ; 005, (D747, bit 5)
+ const EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN ; 005, (D747, bit 5)
const EVENT_PALLET_AFTER_GETTING_POKEBALLS ; 006, (D747, bit 6)
const EVENT_007 ; 007, (D747, bit 7)
const EVENT_008 ; 008, (D748, bit 0)
@@ -168,7 +168,7 @@ const_value = 0
const EVENT_0A5 ; 0A5, (D75B, bit 5)
const EVENT_0A6 ; 0A6, (D75B, bit 6)
const EVENT_BEAT_CERULEAN_ROCKET_THIEF ; 0A7, (D75B, bit 7)
- const EVENT_0A8 ; 0A8, (D75C, bit 0)
+ const EVENT_GOT_BULBASAUR_IN_CERULEAN ; 0A8, (D75C, bit 0)
const EVENT_0A9 ; 0A9, (D75C, bit 1)
const EVENT_0AA ; 0AA, (D75C, bit 2)
const EVENT_0AB ; 0AB, (D75C, bit 3)
@@ -327,7 +327,7 @@ const_value = 0
const EVENT_144 ; 144, (D76F, bit 4)
const EVENT_145 ; 145, (D76F, bit 5)
const EVENT_146 ; 146, (D76F, bit 6)
- const EVENT_147 ; 147, (D76F, bit 7)
+ const EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY ; 147, (D76F, bit 7)
const EVENT_148 ; 148, (D770, bit 0)
const EVENT_149 ; 149, (D770, bit 1)
const EVENT_14A ; 14A, (D770, bit 2)
@@ -1381,8 +1381,8 @@ const_value = 0
const EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_0 ; 562, (D7F3, bit 2)
const EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_1 ; 563, (D7F3, bit 3)
const EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_2 ; 564, (D7F3, bit 4)
- const EVENT_565 ; 565, (D7F3, bit 5)
- const EVENT_566 ; 566, (D7F3, bit 6)
+ const EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3 ; 565, (D7F3, bit 5)
+ const EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4 ; 566, (D7F3, bit 6)
const EVENT_567 ; 567, (D7F3, bit 7)
const EVENT_568 ; 568, (D7F4, bit 0)
const EVENT_569 ; 569, (D7F4, bit 1)
@@ -1400,13 +1400,13 @@ const_value = 0
const EVENT_BEAT_MT_MOON_1_TRAINER_5 ; 575, (D7F5, bit 5)
const EVENT_BEAT_MT_MOON_1_TRAINER_6 ; 576, (D7F5, bit 6)
const EVENT_BEAT_MT_MOON_1_TRAINER_7 ; 577, (D7F5, bit 7)
- const EVENT_578 ; 578, (D7F6, bit 0)
+ const EVENT_GOT_DOME_FOSSIL ; 578, (D7F6, bit 0)
const EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD ; 579, (D7F6, bit 1)
const EVENT_BEAT_MT_MOON_3_TRAINER_0 ; 57A, (D7F6, bit 2)
const EVENT_BEAT_MT_MOON_3_TRAINER_2 ; 57B, (D7F6, bit 3)
const EVENT_BEAT_MT_MOON_3_TRAINER_3 ; 57C, (D7F6, bit 4)
const EVENT_BEAT_MT_MOON_3_TRAINER_4 ; 57D, (D7F6, bit 5)
- const EVENT_GOT_DOME_FOSSIL ; 57E, (D7F6, bit 6)
+ const EVENT_57E ; 57E, (D7F6, bit 6)
const EVENT_GOT_HELIX_FOSSIL ; 57F, (D7F6, bit 7)
const EVENT_580 ; 580, (D7F7, bit 0)
const EVENT_581 ; 581, (D7F7, bit 1)
diff --git a/constants/event_macros.asm b/constants/event_macros.asm
index 9f24ace7..bf0a95b5 100644
--- a/constants/event_macros.asm
+++ b/constants/event_macros.asm
@@ -125,6 +125,27 @@ CheckAndResetEventA: MACRO
ld [wEventFlags + ((\1) / 8)], a
ENDM
+CheckAndSetEventReuseHL: MACRO
+ IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ ENDC
+
+ bit (\1) % 8, [hl]
+ set (\1) % 8, [hl]
+ ENDM
+
+CheckAndResetEventReuseHL: MACRO
+ IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ ENDC
+
+ bit (\1) % 8, [hl]
+ res (\1) % 8, [hl]
+ ENDM
+
+
;\1 = event index
SetEvent: MACRO
event_byte = ((\1) / 8)
@@ -431,6 +452,36 @@ CheckEitherEventSet: MACRO
ENDC
ENDM
+CheckEitherEventSetReuseA: MACRO
+ IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld a, [wEventFlags + event_byte]
+ ENDC
+ IF ((\1) / 8) == ((\2) / 8)
+ ld a, [wEventFlags + ((\1) / 8)]
+ and (1 << ((\1) % 8)) | (1 << ((\2) % 8))
+ ELSE
+ ; This case doesn't happen in the original ROM.
+ IF ((\1) % 8) == ((\2) % 8)
+ push hl
+ ld a, [wEventFlags + ((\1) / 8)]
+ ld hl, wEventFlags + ((\2) / 8)
+ or [hl]
+ bit ((\1) % 8), a
+ pop hl
+ ELSE
+ push bc
+ ld a, [wEventFlags + ((\1) / 8)]
+ and (1 << ((\1) % 8))
+ ld b, a
+ ld a, [wEventFlags + ((\2) / 8)]
+ and (1 << ((\2) % 8))
+ or b
+ pop bc
+ ENDC
+ ENDC
+ ENDM
+
; for handling fixed event bits when events are inserted/removed
;\1 = event index
;\2 = fixed flag bit
@@ -438,4 +489,4 @@ AdjustEventBit: MACRO
IF ((\1) % 8) != (\2)
add ((\1) % 8) - (\2)
ENDC
- ENDM \ No newline at end of file
+ ENDM
diff --git a/constants/hide_show_constants.asm b/constants/hide_show_constants.asm
index 1a44b1e7..f41477a5 100755
--- a/constants/hide_show_constants.asm
+++ b/constants/hide_show_constants.asm
@@ -8,57 +8,57 @@ const_value = 0
const HS_PALLET_TOWN_OAK ; 00
const HS_LYING_OLD_MAN ; 01
- const HS_OLD_MAN ; 02
- const HS_MUSEUM_GUY ; 03
- const HS_GYM_GUY ; 04
- const HS_CERULEAN_RIVAL ; 05
- const HS_CERULEAN_ROCKET ; 06
- const HS_CERULEAN_GUARD_1 ; 07
- const HS_UNKNOWN_DUNGEON_GUY ; 08
- const HS_CERULEAN_GUARD_2 ; 09
- const HS_SAFFRON_CITY_1 ; 0A
- const HS_SAFFRON_CITY_2 ; 0B
- const HS_SAFFRON_CITY_3 ; 0C
- const HS_SAFFRON_CITY_4 ; 0D
- const HS_SAFFRON_CITY_5 ; 0E
- const HS_SAFFRON_CITY_6 ; 0F
- const HS_SAFFRON_CITY_7 ; 10
- const HS_SAFFRON_CITY_8 ; 11
- const HS_SAFFRON_CITY_9 ; 12
- const HS_SAFFRON_CITY_A ; 13
- const HS_SAFFRON_CITY_B ; 14
- const HS_SAFFRON_CITY_C ; 15
- const HS_SAFFRON_CITY_D ; 16
- const HS_SAFFRON_CITY_E ; 17
- const HS_SAFFRON_CITY_F ; 18
- const HS_ROUTE_2_ITEM_1 ; 19 X
- const HS_ROUTE_2_ITEM_2 ; 1A X
- const HS_ROUTE_4_ITEM ; 1B X
- const HS_ROUTE_9_ITEM ; 1C X
- const HS_ROUTE_12_SNORLAX ; 1D
- const HS_ROUTE_12_ITEM_1 ; 1E X
- const HS_ROUTE_12_ITEM_2 ; 1F X
- const HS_ROUTE_15_ITEM ; 20 X
- const HS_ROUTE_16_SNORLAX ; 21
- const HS_ROUTE_22_RIVAL_1 ; 22
- const HS_ROUTE_22_RIVAL_2 ; 23
- const HS_NUGGET_BRIDGE_GUY ; 24
- const HS_ROUTE_24_ITEM ; 25 X
- const HS_ROUTE_25_ITEM ; 26 X
- const HS_DAISY_SITTING ; 27
- const HS_DAISY_WALKING ; 28
- const HS_TOWN_MAP ; 29
- const HS_OAKS_LAB_RIVAL ; 2A
- const HS_STARTER_BALL_1 ; 2B
- const HS_STARTER_BALL_2 ; 2C
- const HS_STARTER_BALL_3 ; 2D
- const HS_OAKS_LAB_OAK_1 ; 2E
- const HS_POKEDEX_1 ; 2F
- const HS_POKEDEX_2 ; 30
- const HS_OAKS_LAB_OAK_2 ; 31
- const HS_VIRIDIAN_GYM_GIOVANNI ; 32
- const HS_VIRIDIAN_GYM_ITEM ; 33 X
- const HS_OLD_AMBER ; 34
+ const HS_OLD_MAN_1 ; 02
+ const HS_OLD_MAN ; 03
+ const HS_MUSEUM_GUY ; 04
+ const HS_GYM_GUY ; 05
+ const HS_CERULEAN_RIVAL ; 06
+ const HS_CERULEAN_ROCKET ; 07
+ const HS_CERULEAN_GUARD_1 ; 08
+ const HS_UNKNOWN_DUNGEON_GUY ; 09
+ const HS_CERULEAN_GUARD_2 ; 0A
+ const HS_SAFFRON_CITY_1 ; 0B
+ const HS_SAFFRON_CITY_2 ; 0C
+ const HS_SAFFRON_CITY_3 ; 0D
+ const HS_SAFFRON_CITY_4 ; 0E
+ const HS_SAFFRON_CITY_5 ; 0F
+ const HS_SAFFRON_CITY_6 ; 10
+ const HS_SAFFRON_CITY_7 ; 11
+ const HS_SAFFRON_CITY_8 ; 12
+ const HS_SAFFRON_CITY_9 ; 13
+ const HS_SAFFRON_CITY_A ; 14
+ const HS_SAFFRON_CITY_B ; 15
+ const HS_SAFFRON_CITY_C ; 16
+ const HS_SAFFRON_CITY_D ; 17
+ const HS_SAFFRON_CITY_E ; 18
+ const HS_SAFFRON_CITY_F ; 19 X
+ const HS_ROUTE_2_ITEM_1 ; 1A X
+ const HS_ROUTE_2_ITEM_2 ; 1B X
+ const HS_ROUTE_4_ITEM ; 1C X
+ const HS_ROUTE_9_ITEM ; 1D
+ const HS_ROUTE_12_SNORLAX ; 1E X
+ const HS_ROUTE_12_ITEM_1 ; 1F X
+ const HS_ROUTE_12_ITEM_2 ; 20 X
+ const HS_ROUTE_15_ITEM ; 21
+ const HS_ROUTE_16_SNORLAX ; 22
+ const HS_ROUTE_22_RIVAL_1 ; 23
+ const HS_ROUTE_22_RIVAL_2 ; 24
+ const HS_NUGGET_BRIDGE_GUY ; 25 X
+ const HS_ROUTE_24_ITEM ; 26 X
+ const HS_ROUTE_25_ITEM ; 27
+ const HS_DAISY_SITTING ; 28
+ const HS_DAISY_WALKING ; 29
+ const HS_TOWN_MAP ; 2A
+ const HS_OAKS_LAB_RIVAL ; 2B
+ const HS_STARTER_BALL_1 ; 2C
+ const HS_OAKS_LAB_OAK_1 ; 2D
+ const HS_POKEDEX_1 ; 2E
+ const HS_POKEDEX_2 ; 2F
+ const HS_OAKS_LAB_OAK_2 ; 30
+ const HS_VIRIDIAN_GYM_GIOVANNI ; 31
+ const HS_VIRIDIAN_GYM_ITEM ; 32
+ const HS_OLD_AMBER ; 33 X
+ const HS_CERULEAN_BULBASAUR ; 34
const HS_UNKNOWN_DUNGEON_1_ITEM_1 ; 35 X
const HS_UNKNOWN_DUNGEON_1_ITEM_2 ; 36 X
const HS_UNKNOWN_DUNGEON_1_ITEM_3 ; 37 X
@@ -72,7 +72,7 @@ const_value = 0
const HS_POKEMONTOWER_6_ITEM_2 ; 3F X
const HS_POKEMONTOWER_7_ROCKET_1 ; 40 X
const HS_POKEMONTOWER_7_ROCKET_2 ; 41 X
- const HS_POKEMONTOWER_7_ROCKET_3 ; 42 X
+ const HS_POKEMONTOWER_7_ROCKET_3 ; 42
const HS_POKEMONTOWER_7_MR_FUJI ; 43
const HS_LAVENDER_HOUSE_1_MR_FUJI ; 44
const HS_CELADON_MANSION_5_GIFT ; 45
@@ -109,128 +109,134 @@ const_value = 0
const HS_VIRIDIAN_FOREST_ITEM_1 ; 64 X
const HS_VIRIDIAN_FOREST_ITEM_2 ; 65 X
const HS_VIRIDIAN_FOREST_ITEM_3 ; 66 X
- const HS_MT_MOON_1_ITEM_1 ; 67 X
- const HS_MT_MOON_1_ITEM_2 ; 68 X
+ const HS_MT_MOON_1_ITEM_1 ; 67
+ const HS_MT_MOON_1_ITEM_2 ; 68
const HS_MT_MOON_1_ITEM_3 ; 69 X
const HS_MT_MOON_1_ITEM_4 ; 6A X
const HS_MT_MOON_1_ITEM_5 ; 6B X
const HS_MT_MOON_1_ITEM_6 ; 6C X
- const HS_MT_MOON_3_FOSSIL_1 ; 6D
- const HS_MT_MOON_3_FOSSIL_2 ; 6E
- const HS_MT_MOON_3_ITEM_1 ; 6F X
- const HS_MT_MOON_3_ITEM_2 ; 70 X
- const HS_SS_ANNE_2_RIVAL ; 71
- const HS_SS_ANNE_8_ITEM ; 72 X
- const HS_SS_ANNE_9_ITEM_1 ; 73 X
- const HS_SS_ANNE_9_ITEM_2 ; 74 X
- const HS_SS_ANNE_10_ITEM_1 ; 75 X
- const HS_SS_ANNE_10_ITEM_2 ; 76 X
- const HS_SS_ANNE_10_ITEM_3 ; 77 X
- const HS_VICTORY_ROAD_3_ITEM_1 ; 78 X
- const HS_VICTORY_ROAD_3_ITEM_2 ; 79 X
- const HS_VICTORY_ROAD_3_BOULDER ; 7A
- const HS_ROCKET_HIDEOUT_1_ITEM_1 ; 7B X
- const HS_ROCKET_HIDEOUT_1_ITEM_2 ; 7C X
- const HS_ROCKET_HIDEOUT_2_ITEM_1 ; 7D X
- const HS_ROCKET_HIDEOUT_2_ITEM_2 ; 7E X
- const HS_ROCKET_HIDEOUT_2_ITEM_3 ; 7F X
- const HS_ROCKET_HIDEOUT_2_ITEM_4 ; 80 X
- const HS_ROCKET_HIDEOUT_3_ITEM_1 ; 81 X
- const HS_ROCKET_HIDEOUT_3_ITEM_2 ; 82 X
- const HS_ROCKET_HIDEOUT_4_GIOVANNI ; 83
- const HS_ROCKET_HIDEOUT_4_ITEM_1 ; 84 X
- const HS_ROCKET_HIDEOUT_4_ITEM_2 ; 85 X
- const HS_ROCKET_HIDEOUT_4_ITEM_3 ; 86 X
- const HS_ROCKET_HIDEOUT_4_ITEM_4 ; 87
- const HS_ROCKET_HIDEOUT_4_ITEM_5 ; 88
- const HS_SILPH_CO_2F_1 ; 89 XXX never (de)activated?
- const HS_SILPH_CO_2F_2 ; 8A
- const HS_SILPH_CO_2F_3 ; 8B
- const HS_SILPH_CO_2F_4 ; 8C
- const HS_SILPH_CO_2F_5 ; 8D
- const HS_SILPH_CO_3F_1 ; 8E
- const HS_SILPH_CO_3F_2 ; 8F
- const HS_SILPH_CO_3F_ITEM ; 90 X
- const HS_SILPH_CO_4F_1 ; 91
- const HS_SILPH_CO_4F_2 ; 92
- const HS_SILPH_CO_4F_3 ; 93
- const HS_SILPH_CO_4F_ITEM_1 ; 94 X
- const HS_SILPH_CO_4F_ITEM_2 ; 95 X
- const HS_SILPH_CO_4F_ITEM_3 ; 96 X
- const HS_SILPH_CO_5F_1 ; 97
- const HS_SILPH_CO_5F_2 ; 98
- const HS_SILPH_CO_5F_3 ; 99
- const HS_SILPH_CO_5F_4 ; 9A
- const HS_SILPH_CO_5F_ITEM_1 ; 9B X
- const HS_SILPH_CO_5F_ITEM_2 ; 9C X
- const HS_SILPH_CO_5F_ITEM_3 ; 9D X
- const HS_SILPH_CO_6F_1 ; 9E
- const HS_SILPH_CO_6F_2 ; 9F
- const HS_SILPH_CO_6F_3 ; A0
- const HS_SILPH_CO_6F_ITEM_1 ; A1 X
- const HS_SILPH_CO_6F_ITEM_2 ; A2 X
- const HS_SILPH_CO_7F_1 ; A3
- const HS_SILPH_CO_7F_2 ; A4
- const HS_SILPH_CO_7F_3 ; A5
- const HS_SILPH_CO_7F_4 ; A6
- const HS_SILPH_CO_7F_RIVAL ; A7
- const HS_SILPH_CO_7F_ITEM_1 ; A8 X
- const HS_SILPH_CO_7F_ITEM_2 ; A9 X
- const HS_SILPH_CO_7F_8 ; AA XXX sprite doesn't exist
- const HS_SILPH_CO_8F_1 ; AB
- const HS_SILPH_CO_8F_2 ; AC
- const HS_SILPH_CO_8F_3 ; AD
- const HS_SILPH_CO_9F_1 ; AE
- const HS_SILPH_CO_9F_2 ; AF
- const HS_SILPH_CO_9F_3 ; B0
- const HS_SILPH_CO_10F_1 ; B1
- const HS_SILPH_CO_10F_2 ; B2
- const HS_SILPH_CO_10F_3 ; B3 XXX never (de)activated?
- const HS_SILPH_CO_10F_ITEM_1 ; B4 X
- const HS_SILPH_CO_10F_ITEM_2 ; B5 X
- const HS_SILPH_CO_10F_ITEM_3 ; B6 X
- const HS_SILPH_CO_11F_1 ; B7
- const HS_SILPH_CO_11F_2 ; B8
- const HS_SILPH_CO_11F_3 ; B9
- const HS_MAP_F4_1 ; BA XXX sprite doesn't exist
- const HS_MANSION_2_ITEM ; BB X
- const HS_MANSION_3_ITEM_1 ; BC X
- const HS_MANSION_3_ITEM_2 ; BD X
- const HS_MANSION_4_ITEM_1 ; BE X
- const HS_MANSION_4_ITEM_2 ; BF X
- const HS_MANSION_4_ITEM_3 ; C0 X
- const HS_MANSION_4_ITEM_4 ; C1 X
- const HS_MANSION_4_ITEM_5 ; C2 X
- const HS_SAFARI_ZONE_EAST_ITEM_1 ; C3 X
- const HS_SAFARI_ZONE_EAST_ITEM_2 ; C4 X
- const HS_SAFARI_ZONE_EAST_ITEM_3 ; C5 X
- const HS_SAFARI_ZONE_EAST_ITEM_4 ; C6 X
- const HS_SAFARI_ZONE_NORTH_ITEM_1 ; C7 X
- const HS_SAFARI_ZONE_NORTH_ITEM_2 ; C8 X
- const HS_SAFARI_ZONE_WEST_ITEM_1 ; C9 X
- const HS_SAFARI_ZONE_WEST_ITEM_2 ; CA X
- const HS_SAFARI_ZONE_WEST_ITEM_3 ; CB X
- const HS_SAFARI_ZONE_WEST_ITEM_4 ; CC X
- const HS_SAFARI_ZONE_CENTER_ITEM ; CD X
- const HS_UNKNOWN_DUNGEON_2_ITEM_1 ; CE X
- const HS_UNKNOWN_DUNGEON_2_ITEM_2 ; CF X
- const HS_UNKNOWN_DUNGEON_2_ITEM_3 ; D0 X
- const HS_MEWTWO ; D1 X
- const HS_UNKNOWN_DUNGEON_3_ITEM_1 ; D2 X
- const HS_UNKNOWN_DUNGEON_3_ITEM_2 ; D3 X
- const HS_VICTORY_ROAD_1_ITEM_1 ; D4 X
- const HS_VICTORY_ROAD_1_ITEM_2 ; D5 X
- const HS_CHAMPIONS_ROOM_OAK ; D6
- const HS_SEAFOAM_ISLANDS_1_BOULDER_1 ; D7
- const HS_SEAFOAM_ISLANDS_1_BOULDER_2 ; D8
- const HS_SEAFOAM_ISLANDS_2_BOULDER_1 ; D9
- const HS_SEAFOAM_ISLANDS_2_BOULDER_2 ; DA
- const HS_SEAFOAM_ISLANDS_3_BOULDER_1 ; DB
- const HS_SEAFOAM_ISLANDS_3_BOULDER_2 ; DC
- const HS_SEAFOAM_ISLANDS_4_BOULDER_1 ; DD
- const HS_SEAFOAM_ISLANDS_4_BOULDER_2 ; DE
- const HS_SEAFOAM_ISLANDS_4_BOULDER_3 ; DF
- const HS_SEAFOAM_ISLANDS_4_BOULDER_4 ; E0
- const HS_SEAFOAM_ISLANDS_5_BOULDER_1 ; E1
- const HS_SEAFOAM_ISLANDS_5_BOULDER_2 ; E2
- const HS_ARTICUNO ; E3 X
+ const HS_MT_MOON_JESSIE ; 6D
+ const HS_MT_MOON_JAMES ; 6E
+ const HS_MT_MOON_3_FOSSIL_1 ; 6F X
+ const HS_MT_MOON_3_FOSSIL_2 ; 70 X
+ const HS_MT_MOON_3_ITEM_1 ; 71
+ const HS_MT_MOON_3_ITEM_2 ; 72 X
+ const HS_SS_ANNE_2_RIVAL ; 73 X
+ const HS_SS_ANNE_8_ITEM ; 74 X
+ const HS_SS_ANNE_9_ITEM_1 ; 75 X
+ const HS_SS_ANNE_9_ITEM_2 ; 76 X
+ const HS_SS_ANNE_10_ITEM_1 ; 77 X
+ const HS_SS_ANNE_10_ITEM_2 ; 78 X
+ const HS_SS_ANNE_10_ITEM_3 ; 79 X
+ const HS_VICTORY_ROAD_3_ITEM_1 ; 7A
+ const HS_VICTORY_ROAD_3_ITEM_2 ; 7B
+ const HS_VICTORY_ROAD_3_BOULDER ; 7C X
+ const HS_ROCKET_HIDEOUT_1_ITEM_1 ; 7D X
+ const HS_ROCKET_HIDEOUT_1_ITEM_2 ; 7E X
+ const HS_ROCKET_HIDEOUT_2_ITEM_1 ; 7F X
+ const HS_ROCKET_HIDEOUT_2_ITEM_2 ; 80 X
+ const HS_ROCKET_HIDEOUT_2_ITEM_3 ; 81 X
+ const HS_ROCKET_HIDEOUT_2_ITEM_4 ; 82 X
+ const HS_ROCKET_HIDEOUT_3_ITEM_1 ; 83
+ const HS_ROCKET_HIDEOUT_3_ITEM_2 ; 84 X
+ const HS_ROCKET_HIDEOUT_4_GIOVANNI ; 85 X
+ const HS_ROCKET_HIDEOUT_4_ITEM_1 ; 86 X
+ const HS_ROCKET_HIDEOUT_4_ITEM_2 ; 87
+ const HS_ROCKET_HIDEOUT_4_ITEM_3 ; 88
+ const HS_ROCKET_HIDEOUT_4_ITEM_4 ; 89 XXX never (de)activated?
+ const HS_ROCKET_HIDEOUT_4_ITEM_5 ; 8A
+
+const_value SET $8d
+ const HS_SILPH_CO_2F_1 ; 8D
+ const HS_SILPH_CO_2F_2 ; 8E
+ const HS_SILPH_CO_2F_3 ; 8F
+ const HS_SILPH_CO_2F_4 ; 90 X
+ const HS_SILPH_CO_2F_5 ; 91
+ const HS_SILPH_CO_3F_1 ; 92
+ const HS_SILPH_CO_3F_2 ; 93
+ const HS_SILPH_CO_3F_ITEM ; 94 X
+ const HS_SILPH_CO_4F_1 ; 95 X
+ const HS_SILPH_CO_4F_2 ; 96 X
+ const HS_SILPH_CO_4F_3 ; 97
+ const HS_SILPH_CO_4F_ITEM_1 ; 98
+ const HS_SILPH_CO_4F_ITEM_2 ; 99
+ const HS_SILPH_CO_4F_ITEM_3 ; 9A
+ const HS_SILPH_CO_5F_1 ; 9B X
+ const HS_SILPH_CO_5F_2 ; 9C X
+ const HS_SILPH_CO_5F_3 ; 9D X
+ const HS_SILPH_CO_5F_4 ; 9E
+ const HS_SILPH_CO_5F_ITEM_1 ; 9F
+ const HS_SILPH_CO_5F_ITEM_2 ; A0
+ const HS_SILPH_CO_5F_ITEM_3 ; A1 X
+ const HS_SILPH_CO_6F_1 ; A2 X
+ const HS_SILPH_CO_6F_2 ; A3
+ const HS_SILPH_CO_6F_3 ; A4
+ const HS_SILPH_CO_6F_ITEM_1 ; A5
+ const HS_SILPH_CO_6F_ITEM_2 ; A6
+ const HS_SILPH_CO_7F_1 ; A7
+ const HS_SILPH_CO_7F_2 ; A8 X
+ const HS_SILPH_CO_7F_3 ; A9 X
+ const HS_SILPH_CO_7F_4 ; AA XXX sprite doesn't exist
+ const HS_SILPH_CO_7F_RIVAL ; AB
+ const HS_SILPH_CO_7F_ITEM_1 ; AC
+ const HS_SILPH_CO_7F_ITEM_2 ; AD
+ const HS_SILPH_CO_7F_8 ; AE
+ const HS_SILPH_CO_8F_1 ; AF
+ const HS_SILPH_CO_8F_2 ; B0
+ const HS_SILPH_CO_8F_3 ; B1
+ const HS_SILPH_CO_9F_1 ; B2
+ const HS_SILPH_CO_9F_2 ; B3 XXX never (de)activated?
+ const HS_SILPH_CO_9F_3 ; B4 X
+ const HS_SILPH_CO_10F_1 ; B5 X
+ const HS_SILPH_CO_10F_2 ; B6 X
+ const HS_SILPH_CO_10F_3 ; B7
+ const HS_SILPH_CO_10F_ITEM_1 ; B8
+ const HS_SILPH_CO_10F_ITEM_2 ; B9
+ const HS_SILPH_CO_10F_ITEM_3 ; BA XXX sprite doesn't exist
+ const HS_SILPH_CO_11F_1 ; BB X
+ const HS_SILPH_CO_11F_2 ; BC X
+ const HS_SILPH_CO_11F_3 ; BD X
+ const HS_MAP_F4_1 ; BE X
+ const HS_MANSION_2_ITEM ; BF X
+ const HS_MANSION_3_ITEM_1 ; C0 X
+ const HS_MANSION_3_ITEM_2 ; C1 X
+ const HS_MANSION_4_ITEM_1 ; C2 X
+ const HS_MANSION_4_ITEM_2 ; C3 X
+ const HS_MANSION_4_ITEM_3 ; C4 X
+ const HS_MANSION_4_ITEM_4 ; C5 X
+ const HS_MANSION_4_ITEM_5 ; C6 X
+ const HS_SAFARI_ZONE_EAST_ITEM_1 ; C7 X
+ const HS_SAFARI_ZONE_EAST_ITEM_2 ; C8 X
+ const HS_SAFARI_ZONE_EAST_ITEM_3 ; C9 X
+ const HS_SAFARI_ZONE_EAST_ITEM_4 ; CA X
+ const HS_SAFARI_ZONE_NORTH_ITEM_1 ; CB X
+ const HS_SAFARI_ZONE_NORTH_ITEM_2 ; CC X
+ const HS_SAFARI_ZONE_WEST_ITEM_1 ; CD X
+ const HS_SAFARI_ZONE_WEST_ITEM_2 ; CE X
+ const HS_SAFARI_ZONE_WEST_ITEM_3 ; CF X
+ const HS_SAFARI_ZONE_WEST_ITEM_4 ; D0 X
+ const HS_SAFARI_ZONE_CENTER_ITEM ; D1 X
+ const HS_UNKNOWN_DUNGEON_2_ITEM_1 ; D2 X
+ const HS_UNKNOWN_DUNGEON_2_ITEM_2 ; D3 X
+ const HS_UNKNOWN_DUNGEON_2_ITEM_3 ; D4 X
+ const HS_MEWTWO ; D5 X
+ const HS_UNKNOWN_DUNGEON_3_ITEM_1 ; D6
+ const HS_UNKNOWN_DUNGEON_3_ITEM_2 ; D7
+ const HS_VICTORY_ROAD_1_ITEM_1 ; D8
+ const HS_VICTORY_ROAD_1_ITEM_2 ; D9
+ const HS_CHAMPIONS_ROOM_OAK ; DA
+
+const_value SET $df
+ const HS_SEAFOAM_ISLANDS_1_BOULDER_1 ; DF
+ const HS_SEAFOAM_ISLANDS_1_BOULDER_2 ; E0
+ const HS_SEAFOAM_ISLANDS_2_BOULDER_1 ; E1
+ const HS_SEAFOAM_ISLANDS_2_BOULDER_2 ; E2
+ const HS_SEAFOAM_ISLANDS_3_BOULDER_1 ; E3
+ const HS_SEAFOAM_ISLANDS_3_BOULDER_2 ; E4
+ const HS_SEAFOAM_ISLANDS_4_BOULDER_1 ; E5
+ const HS_SEAFOAM_ISLANDS_4_BOULDER_2 ; E6
+ const HS_SEAFOAM_ISLANDS_4_BOULDER_3 ; E7
+ const HS_SEAFOAM_ISLANDS_4_BOULDER_4 ; E8
+ const HS_SEAFOAM_ISLANDS_5_BOULDER_1 ; E9
+ const HS_SEAFOAM_ISLANDS_5_BOULDER_2 ; EA
+ const HS_ARTICUNO ; EB
diff --git a/constants/map_constants.asm b/constants/map_constants.asm
index 9ff23355..c2068dd9 100644
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -1,251 +1,256 @@
-const_value = 0
+mapconst: MACRO
+ const \1
+\1_HEIGHT EQU \2
+\1_WIDTH EQU \3
+ENDM
- const PALLET_TOWN ; $00
- const VIRIDIAN_CITY ; $01
- const PEWTER_CITY ; $02
- const CERULEAN_CITY ; $03
- const LAVENDER_TOWN ; $04
- const VERMILION_CITY ; $05
- const CELADON_CITY ; $06
- const FUCHSIA_CITY ; $07
- const CINNABAR_ISLAND ; $08
- const INDIGO_PLATEAU ; $09
- const SAFFRON_CITY ; $0A
- const UNUSED_MAP_0B ; $0B
- const ROUTE_1 ; $0C
- const ROUTE_2 ; $0D
- const ROUTE_3 ; $0E
- const ROUTE_4 ; $0F
- const ROUTE_5 ; $10
- const ROUTE_6 ; $11
- const ROUTE_7 ; $12
- const ROUTE_8 ; $13
- const ROUTE_9 ; $14
- const ROUTE_10 ; $15
- const ROUTE_11 ; $16
- const ROUTE_12 ; $17
- const ROUTE_13 ; $18
- const ROUTE_14 ; $19
- const ROUTE_15 ; $1A
- const ROUTE_16 ; $1B
- const ROUTE_17 ; $1C
- const ROUTE_18 ; $1D
- const ROUTE_19 ; $1E
- const ROUTE_20 ; $1F
- const ROUTE_21 ; $20
- const ROUTE_22 ; $21
- const ROUTE_23 ; $22
- const ROUTE_24 ; $23
- const ROUTE_25 ; $24
- const REDS_HOUSE_1F ; $25
- const REDS_HOUSE_2F ; $26
- const BLUES_HOUSE ; $27
- const OAKS_LAB ; $28
- const VIRIDIAN_POKECENTER ; $29
- const VIRIDIAN_MART ; $2A
- const VIRIDIAN_SCHOOL ; $2B
- const VIRIDIAN_HOUSE ; $2C
- const VIRIDIAN_GYM ; $2D
- const DIGLETTS_CAVE_EXIT ; $2E
- const VIRIDIAN_FOREST_EXIT ; $2F
- const ROUTE_2_HOUSE ; $30
- const ROUTE_2_GATE ; $31
- const VIRIDIAN_FOREST_ENTRANCE ; $32
- const VIRIDIAN_FOREST ; $33
- const MUSEUM_1F ; $34
- const MUSEUM_2F ; $35
- const PEWTER_GYM ; $36
- const PEWTER_HOUSE_1 ; $37
- const PEWTER_MART ; $38
- const PEWTER_HOUSE_2 ; $39
- const PEWTER_POKECENTER ; $3A
- const MT_MOON_1 ; $3B
- const MT_MOON_2 ; $3C
- const MT_MOON_3 ; $3D
- const TRASHED_HOUSE ; $3E
- const CERULEAN_HOUSE ; $3F
- const CERULEAN_POKECENTER ; $40
- const CERULEAN_GYM ; $41
- const BIKE_SHOP ; $42
- const CERULEAN_MART ; $43
- const MT_MOON_POKECENTER ; $44
- const TRASHED_HOUSE_COPY ; $45
- const ROUTE_5_GATE ; $46
- const PATH_ENTRANCE_ROUTE_5 ; $47
- const DAYCAREM ; $48
- const ROUTE_6_GATE ; $49
- const PATH_ENTRANCE_ROUTE_6 ; $4A
- const PATH_ENTRANCE_ROUTE_6_COPY ; $4B
- const ROUTE_7_GATE ; $4C
- const PATH_ENTRANCE_ROUTE_7 ; $4D
- const PATH_ENTRANCE_ROUTE_7_COPY ; $4E
- const ROUTE_8_GATE ; $4F
- const PATH_ENTRANCE_ROUTE_8 ; $50
- const ROCK_TUNNEL_POKECENTER ; $51
- const ROCK_TUNNEL_1 ; $52
- const POWER_PLANT ; $53
- const ROUTE_11_GATE_1F ; $54
- const DIGLETTS_CAVE_ENTRANCE ; $55
- const ROUTE_11_GATE_2F ; $56
- const ROUTE_12_GATE_1F ; $57
- const BILLS_HOUSE ; $58
- const VERMILION_POKECENTER ; $59
- const POKEMON_FAN_CLUB ; $5A
- const VERMILION_MART ; $5B
- const VERMILION_GYM ; $5C
- const VERMILION_HOUSE_1 ; $5D
- const VERMILION_DOCK ; $5E
- const SS_ANNE_1 ; $5F
- const SS_ANNE_2 ; $60
- const SS_ANNE_3 ; $61
- const SS_ANNE_4 ; $62
- const SS_ANNE_5 ; $63
- const SS_ANNE_6 ; $64
- const SS_ANNE_7 ; $65
- const SS_ANNE_8 ; $66
- const SS_ANNE_9 ; $67
- const SS_ANNE_10 ; $68
- const UNUSED_MAP_69 ; $69
- const UNUSED_MAP_6A ; $6A
- const UNUSED_MAP_6B ; $6B
- const VICTORY_ROAD_1 ; $6C
- const UNUSED_MAP_6D ; $6D
- const UNUSED_MAP_6E ; $6E
- const UNUSED_MAP_6F ; $6F
- const UNUSED_MAP_70 ; $70
- const LANCES_ROOM ; $71
- const UNUSED_MAP_72 ; $72
- const UNUSED_MAP_73 ; $73
- const UNUSED_MAP_74 ; $74
- const UNUSED_MAP_75 ; $75
- const HALL_OF_FAME ; $76
- const UNDERGROUND_PATH_NS ; $77
- const CHAMPIONS_ROOM ; $78
- const UNDERGROUND_PATH_WE ; $79
- const CELADON_MART_1 ; $7A
- const CELADON_MART_2 ; $7B
- const CELADON_MART_3 ; $7C
- const CELADON_MART_4 ; $7D
- const CELADON_MART_ROOF ; $7E
- const CELADON_MART_ELEVATOR ; $7F
- const CELADON_MANSION_1 ; $80
- const CELADON_MANSION_2 ; $81
- const CELADON_MANSION_3 ; $82
- const CELADON_MANSION_4 ; $83
- const CELADON_MANSION_5 ; $84
- const CELADON_POKECENTER ; $85
- const CELADON_GYM ; $86
- const GAME_CORNER ; $87
- const CELADON_MART_5 ; $88
- const CELADON_PRIZE_ROOM ; $89
- const CELADON_DINER ; $8A
- const CELADON_HOUSE ; $8B
- const CELADON_HOTEL ; $8C
- const LAVENDER_POKECENTER ; $8D
- const POKEMONTOWER_1 ; $8E
- const POKEMONTOWER_2 ; $8F
- const POKEMONTOWER_3 ; $90
- const POKEMONTOWER_4 ; $91
- const POKEMONTOWER_5 ; $92
- const POKEMONTOWER_6 ; $93
- const POKEMONTOWER_7 ; $94
- const LAVENDER_HOUSE_1 ; $95
- const LAVENDER_MART ; $96
- const LAVENDER_HOUSE_2 ; $97
- const FUCHSIA_MART ; $98
- const FUCHSIA_HOUSE_1 ; $99
- const FUCHSIA_POKECENTER ; $9A
- const FUCHSIA_HOUSE_2 ; $9B
- const SAFARI_ZONE_ENTRANCE ; $9C
- const FUCHSIA_GYM ; $9D
- const FUCHSIA_MEETING_ROOM ; $9E
- const SEAFOAM_ISLANDS_2 ; $9F
- const SEAFOAM_ISLANDS_3 ; $A0
- const SEAFOAM_ISLANDS_4 ; $A1
- const SEAFOAM_ISLANDS_5 ; $A2
- const VERMILION_HOUSE_2 ; $A3
- const FUCHSIA_HOUSE_3 ; $A4
- const MANSION_1 ; $A5
- const CINNABAR_GYM ; $A6
- const CINNABAR_LAB_1 ; $A7
- const CINNABAR_LAB_2 ; $A8
- const CINNABAR_LAB_3 ; $A9
- const CINNABAR_LAB_4 ; $AA
- const CINNABAR_POKECENTER ; $AB
- const CINNABAR_MART ; $AC
- const CINNABAR_MART_COPY ; $AD
- const INDIGO_PLATEAU_LOBBY ; $AE
- const COPYCATS_HOUSE_1F ; $AF
- const COPYCATS_HOUSE_2F ; $B0
- const FIGHTING_DOJO ; $B1
- const SAFFRON_GYM ; $B2
- const SAFFRON_HOUSE_1 ; $B3
- const SAFFRON_MART ; $B4
- const SILPH_CO_1F ; $B5
- const SAFFRON_POKECENTER ; $B6
- const SAFFRON_HOUSE_2 ; $B7
- const ROUTE_15_GATE_1F ; $B8
- const ROUTE_15_GATE_2F ; $B9
- const ROUTE_16_GATE_1F ; $BA
- const ROUTE_16_GATE_2F ; $BB
- const ROUTE_16_HOUSE ; $BC
- const ROUTE_12_HOUSE ; $BD
- const ROUTE_18_GATE_1F ; $BE
- const ROUTE_18_GATE_2F ; $BF
- const SEAFOAM_ISLANDS_1 ; $C0
- const ROUTE_22_GATE ; $C1
- const VICTORY_ROAD_2 ; $C2
- const ROUTE_12_GATE_2F ; $C3
- const VERMILION_HOUSE_3 ; $C4
- const DIGLETTS_CAVE ; $C5
- const VICTORY_ROAD_3 ; $C6
- const ROCKET_HIDEOUT_1 ; $C7
- const ROCKET_HIDEOUT_2 ; $C8
- const ROCKET_HIDEOUT_3 ; $C9
- const ROCKET_HIDEOUT_4 ; $CA
- const ROCKET_HIDEOUT_ELEVATOR ; $CB
- const UNUSED_MAP_CC ; $CC
- const UNUSED_MAP_CD ; $CD
- const UNUSED_MAP_CE ; $CE
- const SILPH_CO_2F ; $CF
- const SILPH_CO_3F ; $D0
- const SILPH_CO_4F ; $D1
- const SILPH_CO_5F ; $D2
- const SILPH_CO_6F ; $D3
- const SILPH_CO_7F ; $D4
- const SILPH_CO_8F ; $D5
- const MANSION_2 ; $D6
- const MANSION_3 ; $D7
- const MANSION_4 ; $D8
- const SAFARI_ZONE_EAST ; $D9
- const SAFARI_ZONE_NORTH ; $DA
- const SAFARI_ZONE_WEST ; $DB
- const SAFARI_ZONE_CENTER ; $DC
- const SAFARI_ZONE_REST_HOUSE_1 ; $DD
- const SAFARI_ZONE_SECRET_HOUSE ; $DE
- const SAFARI_ZONE_REST_HOUSE_2 ; $DF
- const SAFARI_ZONE_REST_HOUSE_3 ; $E0
- const SAFARI_ZONE_REST_HOUSE_4 ; $E1
- const UNKNOWN_DUNGEON_2 ; $E2
- const UNKNOWN_DUNGEON_3 ; $E3
- const UNKNOWN_DUNGEON_1 ; $E4
- const NAME_RATERS_HOUSE ; $E5
- const CERULEAN_HOUSE_3 ; $E6
- const UNUSED_MAP_E7 ; $E7
- const ROCK_TUNNEL_2 ; $E8
- const SILPH_CO_9F ; $E9
- const SILPH_CO_10F ; $EA
- const SILPH_CO_11F ; $EB
- const SILPH_CO_ELEVATOR ; $EC
- const UNUSED_MAP_ED ; $ED
- const UNUSED_MAP_EE ; $EE
- const TRADE_CENTER ; $EF
- const COLOSSEUM ; $F0
- const UNUSED_MAP_F1 ; $F1
- const UNUSED_MAP_F2 ; $F2
- const UNUSED_MAP_F3 ; $F3
- const UNUSED_MAP_F4 ; $F4
- const LORELEIS_ROOM ; $F5
- const BRUNOS_ROOM ; $F6
- const AGATHAS_ROOM ; $F7
- const BEACH_HOUSE ; $F8
+ const_def
+ mapconst PALLET_TOWN, 9, 10 ; $00
+ mapconst VIRIDIAN_CITY, 18, 20 ; $01
+ mapconst PEWTER_CITY, 18, 20 ; $02
+ mapconst CERULEAN_CITY, 18, 20 ; $03
+ mapconst LAVENDER_TOWN, 9, 10 ; $04
+ mapconst VERMILION_CITY, 18, 20 ; $05
+ mapconst CELADON_CITY, 18, 25 ; $06
+ mapconst FUCHSIA_CITY, 18, 20 ; $07
+ mapconst CINNABAR_ISLAND, 9, 10 ; $08
+ mapconst INDIGO_PLATEAU, 9, 10 ; $09
+ mapconst SAFFRON_CITY, 18, 20 ; $0A
+ mapconst UNUSED_MAP_0B, 0, 0 ; $0B
+ mapconst ROUTE_1, 18, 10 ; $0C
+ mapconst ROUTE_2, 36, 10 ; $0D
+ mapconst ROUTE_3, 9, 35 ; $0E
+ mapconst ROUTE_4, 9, 45 ; $0F
+ mapconst ROUTE_5, 18, 10 ; $10
+ mapconst ROUTE_6, 18, 10 ; $11
+ mapconst ROUTE_7, 9, 10 ; $12
+ mapconst ROUTE_8, 9, 30 ; $13
+ mapconst ROUTE_9, 9, 30 ; $14
+ mapconst ROUTE_10, 36, 10 ; $15
+ mapconst ROUTE_11, 9, 30 ; $16
+ mapconst ROUTE_12, 54, 10 ; $17
+ mapconst ROUTE_13, 9, 30 ; $18
+ mapconst ROUTE_14, 27, 10 ; $19
+ mapconst ROUTE_15, 9, 30 ; $1A
+ mapconst ROUTE_16, 9, 20 ; $1B
+ mapconst ROUTE_17, 72, 10 ; $1C
+ mapconst ROUTE_18, 9, 25 ; $1D
+ mapconst ROUTE_19, 27, 10 ; $1E
+ mapconst ROUTE_20, 9, 50 ; $1F
+ mapconst ROUTE_21, 45, 10 ; $20
+ mapconst ROUTE_22, 9, 20 ; $21
+ mapconst ROUTE_23, 72, 10 ; $22
+ mapconst ROUTE_24, 18, 10 ; $23
+ mapconst ROUTE_25, 9, 30 ; $24
+ mapconst REDS_HOUSE_1F, 4, 4 ; $25
+ mapconst REDS_HOUSE_2F, 4, 4 ; $26
+ mapconst BLUES_HOUSE, 4, 4 ; $27
+ mapconst OAKS_LAB, 6, 5 ; $28
+ mapconst VIRIDIAN_POKECENTER, 4, 7 ; $29
+ mapconst VIRIDIAN_MART, 4, 4 ; $2A
+ mapconst VIRIDIAN_SCHOOL, 4, 4 ; $2B
+ mapconst VIRIDIAN_HOUSE, 4, 4 ; $2C
+ mapconst VIRIDIAN_GYM, 9, 10 ; $2D
+ mapconst DIGLETTS_CAVE_EXIT, 4, 4 ; $2E
+ mapconst VIRIDIAN_FOREST_EXIT, 4, 5 ; $2F
+ mapconst ROUTE_2_HOUSE, 4, 4 ; $30
+ mapconst ROUTE_2_GATE, 4, 5 ; $31
+ mapconst VIRIDIAN_FOREST_ENTRANCE, 4, 5 ; $32
+ mapconst VIRIDIAN_FOREST, 24, 17 ; $33
+ mapconst MUSEUM_1F, 4, 10 ; $34
+ mapconst MUSEUM_2F, 4, 7 ; $35
+ mapconst PEWTER_GYM, 7, 5 ; $36
+ mapconst PEWTER_HOUSE_1, 4, 4 ; $37
+ mapconst PEWTER_MART, 4, 4 ; $38
+ mapconst PEWTER_HOUSE_2, 4, 4 ; $39
+ mapconst PEWTER_POKECENTER, 4, 7 ; $3A
+ mapconst MT_MOON_1, 18, 20 ; $3B
+ mapconst MT_MOON_2, 14, 14 ; $3C
+ mapconst MT_MOON_3, 18, 20 ; $3D
+ mapconst TRASHED_HOUSE, 4, 4 ; $3E
+ mapconst CERULEAN_HOUSE_1, 4, 4 ; $3F
+ mapconst CERULEAN_POKECENTER, 4, 7 ; $40
+ mapconst CERULEAN_GYM, 7, 5 ; $41
+ mapconst BIKE_SHOP, 4, 4 ; $42
+ mapconst CERULEAN_MART, 4, 4 ; $43
+ mapconst MT_MOON_POKECENTER, 4, 7 ; $44
+ mapconst TRASHED_HOUSE_COPY, 4, 4 ; $45
+ mapconst ROUTE_5_GATE, 3, 4 ; $46
+ mapconst PATH_ENTRANCE_ROUTE_5, 4, 4 ; $47
+ mapconst DAYCAREM, 4, 4 ; $48
+ mapconst ROUTE_6_GATE, 3, 4 ; $49
+ mapconst PATH_ENTRANCE_ROUTE_6, 4, 4 ; $4A
+ mapconst PATH_ENTRANCE_ROUTE_6_COPY, 4, 4 ; $4B
+ mapconst ROUTE_7_GATE, 4, 3 ; $4C
+ mapconst PATH_ENTRANCE_ROUTE_7, 4, 4 ; $4D
+ mapconst PATH_ENTRANCE_ROUTE_7_COPY, 4, 4 ; $4E
+ mapconst ROUTE_8_GATE, 4, 3 ; $4F
+ mapconst PATH_ENTRANCE_ROUTE_8, 4, 4 ; $50
+ mapconst ROCK_TUNNEL_POKECENTER, 4, 7 ; $51
+ mapconst ROCK_TUNNEL_1, 18, 20 ; $52
+ mapconst POWER_PLANT, 18, 20 ; $53
+ mapconst ROUTE_11_GATE_1F, 5, 4 ; $54
+ mapconst DIGLETTS_CAVE_ENTRANCE, 4, 4 ; $55
+ mapconst ROUTE_11_GATE_2F, 4, 4 ; $56
+ mapconst ROUTE_12_GATE_1F, 4, 5 ; $57
+ mapconst BILLS_HOUSE, 4, 4 ; $58
+ mapconst VERMILION_POKECENTER, 4, 7 ; $59
+ mapconst POKEMON_FAN_CLUB, 4, 4 ; $5A
+ mapconst VERMILION_MART, 4, 4 ; $5B
+ mapconst VERMILION_GYM, 9, 5 ; $5C
+ mapconst VERMILION_HOUSE_1, 4, 4 ; $5D
+ mapconst VERMILION_DOCK, 6, 14 ; $5E
+ mapconst SS_ANNE_1, 9, 20 ; $5F
+ mapconst SS_ANNE_2, 9, 20 ; $60
+ mapconst SS_ANNE_3, 3, 10 ; $61
+ mapconst SS_ANNE_4, 4, 15 ; $62
+ mapconst SS_ANNE_5, 7, 10 ; $63
+ mapconst SS_ANNE_6, 8, 7 ; $64
+ mapconst SS_ANNE_7, 4, 3 ; $65
+ mapconst SS_ANNE_8, 8, 12 ; $66
+ mapconst SS_ANNE_9, 8, 12 ; $67
+ mapconst SS_ANNE_10, 8, 12 ; $68
+ mapconst UNUSED_MAP_69, 0, 0 ; $69
+ mapconst UNUSED_MAP_6A, 0, 0 ; $6A
+ mapconst UNUSED_MAP_6B, 0, 0 ; $6B
+ mapconst VICTORY_ROAD_1, 9, 10 ; $6C
+ mapconst UNUSED_MAP_6D, 0, 0 ; $6D
+ mapconst UNUSED_MAP_6E, 0, 0 ; $6E
+ mapconst UNUSED_MAP_6F, 0, 0 ; $6F
+ mapconst UNUSED_MAP_70, 0, 0 ; $70
+ mapconst LANCES_ROOM, 13, 13 ; $71
+ mapconst UNUSED_MAP_72, 0, 0 ; $72
+ mapconst UNUSED_MAP_73, 0, 0 ; $73
+ mapconst UNUSED_MAP_74, 0, 0 ; $74
+ mapconst UNUSED_MAP_75, 0, 0 ; $75
+ mapconst HALL_OF_FAME, 4, 5 ; $76
+ mapconst UNDERGROUND_PATH_NS, 24, 4 ; $77
+ mapconst CHAMPIONS_ROOM, 4, 4 ; $78
+ mapconst UNDERGROUND_PATH_WE, 4, 25 ; $79
+ mapconst CELADON_MART_1, 4, 10 ; $7A
+ mapconst CELADON_MART_2, 4, 10 ; $7B
+ mapconst CELADON_MART_3, 4, 10 ; $7C
+ mapconst CELADON_MART_4, 4, 10 ; $7D
+ mapconst CELADON_MART_ROOF, 4, 10 ; $7E
+ mapconst CELADON_MART_ELEVATOR, 2, 2 ; $7F
+ mapconst CELADON_MANSION_1, 6, 4 ; $80
+ mapconst CELADON_MANSION_2, 6, 4 ; $81
+ mapconst CELADON_MANSION_3, 6, 4 ; $82
+ mapconst CELADON_MANSION_4, 6, 4 ; $83
+ mapconst CELADON_MANSION_5, 4, 4 ; $84
+ mapconst CELADON_POKECENTER, 4, 7 ; $85
+ mapconst CELADON_GYM, 9, 5 ; $86
+ mapconst GAME_CORNER, 9, 10 ; $87
+ mapconst CELADON_MART_5, 4, 10 ; $88
+ mapconst CELADON_PRIZE_ROOM, 4, 5 ; $89
+ mapconst CELADON_DINER, 4, 5 ; $8A
+ mapconst CELADON_HOUSE, 4, 4 ; $8B
+ mapconst CELADON_HOTEL, 4, 7 ; $8C
+ mapconst LAVENDER_POKECENTER, 4, 7 ; $8D
+ mapconst POKEMONTOWER_1, 9, 10 ; $8E
+ mapconst POKEMONTOWER_2, 9, 10 ; $8F
+ mapconst POKEMONTOWER_3, 9, 10 ; $90
+ mapconst POKEMONTOWER_4, 9, 10 ; $91
+ mapconst POKEMONTOWER_5, 9, 10 ; $92
+ mapconst POKEMONTOWER_6, 9, 10 ; $93
+ mapconst POKEMONTOWER_7, 9, 10 ; $94
+ mapconst LAVENDER_HOUSE_1, 4, 4 ; $95
+ mapconst LAVENDER_MART, 4, 4 ; $96
+ mapconst LAVENDER_HOUSE_2, 4, 4 ; $97
+ mapconst FUCHSIA_MART, 4, 4 ; $98
+ mapconst FUCHSIA_HOUSE_1, 4, 4 ; $99
+ mapconst FUCHSIA_POKECENTER, 4, 7 ; $9A
+ mapconst FUCHSIA_HOUSE_2, 4, 5 ; $9B
+ mapconst SAFARI_ZONE_ENTRANCE, 3, 4 ; $9C
+ mapconst FUCHSIA_GYM, 9, 5 ; $9D
+ mapconst FUCHSIA_MEETING_ROOM, 4, 7 ; $9E
+ mapconst SEAFOAM_ISLANDS_2, 9, 15 ; $9F
+ mapconst SEAFOAM_ISLANDS_3, 9, 15 ; $A0
+ mapconst SEAFOAM_ISLANDS_4, 9, 15 ; $A1
+ mapconst SEAFOAM_ISLANDS_5, 9, 15 ; $A2
+ mapconst VERMILION_HOUSE_2, 4, 4 ; $A3
+ mapconst FUCHSIA_HOUSE_3, 4, 4 ; $A4
+ mapconst MANSION_1, 14, 15 ; $A5
+ mapconst CINNABAR_GYM, 9, 10 ; $A6
+ mapconst CINNABAR_LAB_1, 4, 9 ; $A7
+ mapconst CINNABAR_LAB_2, 4, 4 ; $A8
+ mapconst CINNABAR_LAB_3, 4, 4 ; $A9
+ mapconst CINNABAR_LAB_4, 4, 4 ; $AA
+ mapconst CINNABAR_POKECENTER, 4, 7 ; $AB
+ mapconst CINNABAR_MART, 4, 4 ; $AC
+ mapconst CINNABAR_MART_COPY, 4, 4 ; $AD
+ mapconst INDIGO_PLATEAU_LOBBY, 6, 8 ; $AE
+ mapconst COPYCATS_HOUSE_1F, 4, 4 ; $AF
+ mapconst COPYCATS_HOUSE_2F, 4, 4 ; $B0
+ mapconst FIGHTING_DOJO, 6, 5 ; $B1
+ mapconst SAFFRON_GYM, 9, 10 ; $B2
+ mapconst SAFFRON_HOUSE_1, 4, 4 ; $B3
+ mapconst SAFFRON_MART, 4, 4 ; $B4
+ mapconst SILPH_CO_1F, 9, 15 ; $B5
+ mapconst SAFFRON_POKECENTER, 4, 7 ; $B6
+ mapconst SAFFRON_HOUSE_2, 4, 4 ; $B7
+ mapconst ROUTE_15_GATE_1F, 5, 4 ; $B8
+ mapconst ROUTE_15_GATE_2F, 4, 4 ; $B9
+ mapconst ROUTE_16_GATE_1F, 7, 4 ; $BA
+ mapconst ROUTE_16_GATE_2F, 4, 4 ; $BB
+ mapconst ROUTE_16_HOUSE, 4, 4 ; $BC
+ mapconst ROUTE_12_HOUSE, 4, 4 ; $BD
+ mapconst ROUTE_18_GATE_1F, 5, 4 ; $BE
+ mapconst ROUTE_18_GATE_2F, 4, 4 ; $BF
+ mapconst SEAFOAM_ISLANDS_1, 9, 15 ; $C0
+ mapconst ROUTE_22_GATE, 4, 5 ; $C1
+ mapconst VICTORY_ROAD_2, 9, 15 ; $C2
+ mapconst ROUTE_12_GATE_2F, 4, 4 ; $C3
+ mapconst VERMILION_HOUSE_3, 4, 4 ; $C4
+ mapconst DIGLETTS_CAVE, 18, 20 ; $C5
+ mapconst VICTORY_ROAD_3, 9, 15 ; $C6
+ mapconst ROCKET_HIDEOUT_1, 14, 15 ; $C7
+ mapconst ROCKET_HIDEOUT_2, 14, 15 ; $C8
+ mapconst ROCKET_HIDEOUT_3, 14, 15 ; $C9
+ mapconst ROCKET_HIDEOUT_4, 12, 15 ; $CA
+ mapconst ROCKET_HIDEOUT_ELEVATOR, 4, 3 ; $CB
+ mapconst UNUSED_MAP_CC, 0, 0 ; $CC
+ mapconst UNUSED_MAP_CD, 0, 0 ; $CD
+ mapconst UNUSED_MAP_CE, 0, 0 ; $CE
+ mapconst SILPH_CO_2F, 9, 15 ; $CF
+ mapconst SILPH_CO_3F, 9, 15 ; $D0
+ mapconst SILPH_CO_4F, 9, 15 ; $D1
+ mapconst SILPH_CO_5F, 9, 15 ; $D2
+ mapconst SILPH_CO_6F, 9, 13 ; $D3
+ mapconst SILPH_CO_7F, 9, 13 ; $D4
+ mapconst SILPH_CO_8F, 9, 13 ; $D5
+ mapconst MANSION_2, 14, 15 ; $D6
+ mapconst MANSION_3, 9, 15 ; $D7
+ mapconst MANSION_4, 14, 15 ; $D8
+ mapconst SAFARI_ZONE_EAST, 13, 15 ; $D9
+ mapconst SAFARI_ZONE_NORTH, 18, 20 ; $DA
+ mapconst SAFARI_ZONE_WEST, 13, 15 ; $DB
+ mapconst SAFARI_ZONE_CENTER, 13, 15 ; $DC
+ mapconst SAFARI_ZONE_REST_HOUSE_1, 4, 4 ; $DD
+ mapconst SAFARI_ZONE_SECRET_HOUSE, 4, 4 ; $DE
+ mapconst SAFARI_ZONE_REST_HOUSE_2, 4, 4 ; $DF
+ mapconst SAFARI_ZONE_REST_HOUSE_3, 4, 4 ; $E0
+ mapconst SAFARI_ZONE_REST_HOUSE_4, 4, 4 ; $E1
+ mapconst UNKNOWN_DUNGEON_2, 9, 15 ; $E2
+ mapconst UNKNOWN_DUNGEON_3, 9, 15 ; $E3
+ mapconst UNKNOWN_DUNGEON_1, 9, 15 ; $E4
+ mapconst NAME_RATERS_HOUSE, 4, 4 ; $E5
+ mapconst CERULEAN_HOUSE_2, 4, 4 ; $E6
+ mapconst UNUSED_MAP_E7, 0, 0 ; $E7
+ mapconst ROCK_TUNNEL_2, 18, 20 ; $E8
+ mapconst SILPH_CO_9F, 9, 13 ; $E9
+ mapconst SILPH_CO_10F, 9, 8 ; $EA
+ mapconst SILPH_CO_11F, 9, 9 ; $EB
+ mapconst SILPH_CO_ELEVATOR, 2, 2 ; $EC
+ mapconst UNUSED_MAP_ED, 0, 0 ; $ED
+ mapconst UNUSED_MAP_EE, 0, 0 ; $EE
+ mapconst TRADE_CENTER, 4, 5 ; $EF
+ mapconst COLOSSEUM, 4, 5 ; $F0
+ mapconst UNUSED_MAP_F1, 0, 0 ; $F1
+ mapconst UNUSED_MAP_F2, 0, 0 ; $F2
+ mapconst UNUSED_MAP_F3, 0, 0 ; $F3
+ mapconst UNUSED_MAP_F4, 0, 0 ; $F4
+ mapconst LORELEIS_ROOM, 6, 5 ; $F5
+ mapconst BRUNOS_ROOM, 6, 5 ; $F6
+ mapconst AGATHAS_ROOM, 6, 5 ; $F7
+ mapconst BEACH_HOUSE, 4, 7 ; $F8
diff --git a/constants/map_dimensions.asm b/constants/map_dimensions.asm
deleted file mode 100755
index 22fa3c6e..00000000
--- a/constants/map_dimensions.asm
+++ /dev/null
@@ -1,896 +0,0 @@
-; Map sizes (y, x)
-
-; PalletTown_h map_id=0
-PALLET_TOWN_HEIGHT EQU $09
-PALLET_TOWN_WIDTH EQU $0a
-
-; ViridianCity_h map_id=1
-VIRIDIAN_CITY_HEIGHT EQU $12
-VIRIDIAN_CITY_WIDTH EQU $14
-
-; PewterCity_h map_id=2
-PEWTER_CITY_HEIGHT EQU $12
-PEWTER_CITY_WIDTH EQU $14
-
-; CeruleanCity_h map_id=3
-CERULEAN_CITY_HEIGHT EQU $12
-CERULEAN_CITY_WIDTH EQU $14
-
-; LavenderTown_h map_id=4
-LAVENDER_TOWN_HEIGHT EQU $09
-LAVENDER_TOWN_WIDTH EQU $0a
-
-; VermilionCity_h map_id=5
-VERMILION_CITY_HEIGHT EQU $12
-VERMILION_CITY_WIDTH EQU $14
-
-; CeladonCity_h map_id=6
-CELADON_CITY_HEIGHT EQU $12
-CELADON_CITY_WIDTH EQU $19
-
-; FuchsiaCity_h map_id=7
-FUCHSIA_CITY_HEIGHT EQU $12
-FUCHSIA_CITY_WIDTH EQU $14
-
-; CinnabarIsland_h map_id=8
-CINNABAR_ISLAND_HEIGHT EQU $09
-CINNABAR_ISLAND_WIDTH EQU $0a
-
-; IndigoPlateau_h map_id=9
-INDIGO_PLATEAU_HEIGHT EQU $09
-INDIGO_PLATEAU_WIDTH EQU $0a
-
-; SaffronCity_h map_id=10
-SAFFRON_CITY_HEIGHT EQU $12
-SAFFRON_CITY_WIDTH EQU $14
-
-; Route1_h map_id=12
-ROUTE_1_HEIGHT EQU $12
-ROUTE_1_WIDTH EQU $0a
-
-; Route2_h map_id=13
-ROUTE_2_HEIGHT EQU $24
-ROUTE_2_WIDTH EQU $0a
-
-; Route3_h map_id=14
-ROUTE_3_HEIGHT EQU $09
-ROUTE_3_WIDTH EQU $23
-
-; Route4_h map_id=15
-ROUTE_4_HEIGHT EQU $09
-ROUTE_4_WIDTH EQU $2d
-
-; Route5_h map_id=16
-ROUTE_5_HEIGHT EQU $12
-ROUTE_5_WIDTH EQU $0a
-
-; Route6_h map_id=17
-ROUTE_6_HEIGHT EQU $12
-ROUTE_6_WIDTH EQU $0a
-
-; Route7_h map_id=18
-ROUTE_7_HEIGHT EQU $09
-ROUTE_7_WIDTH EQU $0a
-
-; Route8_h map_id=19
-ROUTE_8_HEIGHT EQU $09
-ROUTE_8_WIDTH EQU $1e
-
-; Route9_h map_id=20
-ROUTE_9_HEIGHT EQU $09
-ROUTE_9_WIDTH EQU $1e
-
-; Route10_h map_id=21
-ROUTE_10_HEIGHT EQU $24
-ROUTE_10_WIDTH EQU $0a
-
-; Route11_h map_id=22
-ROUTE_11_HEIGHT EQU $09
-ROUTE_11_WIDTH EQU $1e
-
-; Route12_h map_id=23
-ROUTE_12_HEIGHT EQU $36
-ROUTE_12_WIDTH EQU $0a
-
-; Route13_h map_id=24
-ROUTE_13_HEIGHT EQU $09
-ROUTE_13_WIDTH EQU $1e
-
-; Route14_h map_id=25
-ROUTE_14_HEIGHT EQU $1b
-ROUTE_14_WIDTH EQU $0a
-
-; Route15_h map_id=26
-ROUTE_15_HEIGHT EQU $09
-ROUTE_15_WIDTH EQU $1e
-
-; Route16_h map_id=27
-ROUTE_16_HEIGHT EQU $09
-ROUTE_16_WIDTH EQU $14
-
-; Route17_h map_id=28
-ROUTE_17_HEIGHT EQU $48
-ROUTE_17_WIDTH EQU $0a
-
-; Route18_h map_id=29
-ROUTE_18_HEIGHT EQU $09
-ROUTE_18_WIDTH EQU $19
-
-; Route19_h map_id=30
-ROUTE_19_HEIGHT EQU $1b
-ROUTE_19_WIDTH EQU $0a
-
-; Route20_h map_id=31
-ROUTE_20_HEIGHT EQU $09
-ROUTE_20_WIDTH EQU $32
-
-; Route21_h map_id=32
-ROUTE_21_HEIGHT EQU $2d
-ROUTE_21_WIDTH EQU $0a
-
-; Route22_h map_id=33
-ROUTE_22_HEIGHT EQU $09
-ROUTE_22_WIDTH EQU $14
-
-; Route23_h map_id=34
-ROUTE_23_HEIGHT EQU $48
-ROUTE_23_WIDTH EQU $0a
-
-; Route24_h map_id=35
-ROUTE_24_HEIGHT EQU $12
-ROUTE_24_WIDTH EQU $0a
-
-; Route25_h map_id=36
-ROUTE_25_HEIGHT EQU $09
-ROUTE_25_WIDTH EQU $1e
-
-; RedsHouse1F_h map_id=37
-REDS_HOUSE_1F_HEIGHT EQU $04
-REDS_HOUSE_1F_WIDTH EQU $04
-
-; RedsHouse2F_h map_id=38
-REDS_HOUSE_2F_HEIGHT EQU $04
-REDS_HOUSE_2F_WIDTH EQU $04
-
-; BluesHouse_h map_id=39
-BLUES_HOUSE_HEIGHT EQU $04
-BLUES_HOUSE_WIDTH EQU $04
-
-; OaksLab_h map_id=40
-OAKS_LAB_HEIGHT EQU $06
-OAKS_LAB_WIDTH EQU $05
-
-; ViridianPokeCenter_h map_id=41
-VIRIDIAN_POKECENTER_HEIGHT EQU $04
-VIRIDIAN_POKECENTER_WIDTH EQU $07
-
-; ViridianMart_h map_id=42
-VIRIDIAN_MART_HEIGHT EQU $04
-VIRIDIAN_MART_WIDTH EQU $04
-
-; School_h map_id=43
-VIRIDIAN_SCHOOL_HEIGHT EQU $04
-VIRIDIAN_SCHOOL_WIDTH EQU $04
-
-; ViridianHouse_h map_id=44
-VIRIDIAN_HOUSE_HEIGHT EQU $04
-VIRIDIAN_HOUSE_WIDTH EQU $04
-
-; ViridianGym_h map_id=45
-VIRIDIAN_GYM_HEIGHT EQU $09
-VIRIDIAN_GYM_WIDTH EQU $0a
-
-; DiglettsCaveRoute2_h map_id=46
-DIGLETTS_CAVE_EXIT_HEIGHT EQU $04
-DIGLETTS_CAVE_EXIT_WIDTH EQU $04
-
-; ViridianForestExit_h map_id=47
-VIRIDIAN_FOREST_EXIT_HEIGHT EQU $04
-VIRIDIAN_FOREST_EXIT_WIDTH EQU $05
-
-; Route2House_h map_id=48
-ROUTE_2_HOUSE_HEIGHT EQU $04
-ROUTE_2_HOUSE_WIDTH EQU $04
-
-; Route2Gate_h map_id=49
-ROUTE_2_GATE_HEIGHT EQU $04
-ROUTE_2_GATE_WIDTH EQU $05
-
-; ViridianForestEntrance_h map_id=50
-VIRIDIAN_FOREST_ENTRANCE_HEIGHT EQU $04
-VIRIDIAN_FOREST_ENTRANCE_WIDTH EQU $05
-
-; ViridianForest_h map_id=51
-VIRIDIAN_FOREST_HEIGHT EQU $18
-VIRIDIAN_FOREST_WIDTH EQU $11
-
-; MuseumF1_h map_id=52
-MUSEUM_1F_HEIGHT EQU $04
-MUSEUM_1F_WIDTH EQU $0a
-
-; MuseumF2_h map_id=53
-MUSEUM_2F_HEIGHT EQU $04
-MUSEUM_2F_WIDTH EQU $07
-
-; PewterGym_h map_id=54
-PEWTER_GYM_HEIGHT EQU $07
-PEWTER_GYM_WIDTH EQU $05
-
-; PewterHouse1_h map_id=55
-PEWTER_HOUSE_1_HEIGHT EQU $04
-PEWTER_HOUSE_1_WIDTH EQU $04
-
-; PewterMart_h map_id=56
-PEWTER_MART_HEIGHT EQU $04
-PEWTER_MART_WIDTH EQU $04
-
-; PewterHouse2_h map_id=57
-PEWTER_HOUSE_2_HEIGHT EQU $04
-PEWTER_HOUSE_2_WIDTH EQU $04
-
-; PewterPokecenter_h map_id=58
-PEWTER_POKECENTER_HEIGHT EQU $04
-PEWTER_POKECENTER_WIDTH EQU $07
-
-; MtMoon1_h map_id=59
-MT_MOON_1_HEIGHT EQU $12
-MT_MOON_1_WIDTH EQU $14
-
-; MtMoon2_h map_id=60
-MT_MOON_2_HEIGHT EQU $0e
-MT_MOON_2_WIDTH EQU $0e
-
-; MtMoon3_h map_id=61
-MT_MOON_3_HEIGHT EQU $12
-MT_MOON_3_WIDTH EQU $14
-
-; CeruleanHouseTrashed_h map_id=62
-TRASHED_HOUSE_HEIGHT EQU $04
-TRASHED_HOUSE_WIDTH EQU $04
-
-; CeruleanHouse1_h map_id=63
-CERULEAN_HOUSE_1_HEIGHT EQU $04
-CERULEAN_HOUSE_1_WIDTH EQU $04
-
-; CeruleanPokecenter_h map_id=64
-CERULEAN_POKECENTER_HEIGHT EQU $04
-CERULEAN_POKECENTER_WIDTH EQU $07
-
-; CeruleanGym_h map_id=65
-CERULEAN_GYM_HEIGHT EQU $07
-CERULEAN_GYM_WIDTH EQU $05
-
-; BikeShop_h map_id=66
-BIKE_SHOP_HEIGHT EQU $04
-BIKE_SHOP_WIDTH EQU $04
-
-; CeruleanMart_h map_id=67
-CERULEAN_MART_HEIGHT EQU $04
-CERULEAN_MART_WIDTH EQU $04
-
-; MtMoonPokecenter_h map_id=68
-MT_MOON_POKECENTER_HEIGHT EQU $04
-MT_MOON_POKECENTER_WIDTH EQU $07
-
-; Route5Gate_h map_id=70
-ROUTE_5_GATE_HEIGHT EQU $03
-ROUTE_5_GATE_WIDTH EQU $04
-
-; UndergroundTunnelEntranceRoute5_h map_id=71
-PATH_ENTRANCE_ROUTE_5_HEIGHT EQU $04
-PATH_ENTRANCE_ROUTE_5_WIDTH EQU $04
-
-; DayCareM_h map_id=72
-DAYCAREM_HEIGHT EQU $04
-DAYCAREM_WIDTH EQU $04
-
-; Route6Gate_h map_id=73
-ROUTE_6_GATE_HEIGHT EQU $03
-ROUTE_6_GATE_WIDTH EQU $04
-
-; UndergroundTunnelEntranceRoute6_h map_id=74
-PATH_ENTRANCE_ROUTE_6_HEIGHT EQU $04
-PATH_ENTRANCE_ROUTE_6_WIDTH EQU $04
-
-; Route7Gate_h map_id=76
-ROUTE_7_GATE_HEIGHT EQU $04
-ROUTE_7_GATE_WIDTH EQU $03
-
-; UndergroundPathEntranceRoute7_h map_id=77
-PATH_ENTRANCE_ROUTE_7_HEIGHT EQU $04
-PATH_ENTRANCE_ROUTE_7_WIDTH EQU $04
-
-; UndergroundPathEntranceRoute7Copy_h map_id=78
-PATH_ENTRANCE_ROUTE_7_COPY_HEIGHT EQU $04
-PATH_ENTRANCE_ROUTE_7_COPY_WIDTH EQU $04
-
-; Route8Gate_h map_id=79
-ROUTE_8_GATE_HEIGHT EQU $04
-ROUTE_8_GATE_WIDTH EQU $03
-
-; UndergroundPathEntranceRoute8_h map_id=80
-PATH_ENTRANCE_ROUTE_8_HEIGHT EQU $04
-PATH_ENTRANCE_ROUTE_8_WIDTH EQU $04
-
-; RockTunnelPokecenter_h map_id=81
-ROCK_TUNNEL_POKECENTER_HEIGHT EQU $04
-ROCK_TUNNEL_POKECENTER_WIDTH EQU $07
-
-; RockTunnel1_h map_id=82
-ROCK_TUNNEL_1_HEIGHT EQU $12
-ROCK_TUNNEL_1_WIDTH EQU $14
-
-; PowerPlant_h map_id=83
-POWER_PLANT_HEIGHT EQU $12
-POWER_PLANT_WIDTH EQU $14
-
-; Route11Gate_h map_id=84
-ROUTE_11_GATE_1F_HEIGHT EQU $05
-ROUTE_11_GATE_1F_WIDTH EQU $04
-
-; DiglettsCaveEntranceRoute11_h map_id=85
-DIGLETTS_CAVE_ENTRANCE_HEIGHT EQU $04
-DIGLETTS_CAVE_ENTRANCE_WIDTH EQU $04
-
-; Route11GateUpstairs_h map_id=86
-ROUTE_11_GATE_2F_HEIGHT EQU $04
-ROUTE_11_GATE_2F_WIDTH EQU $04
-
-; Route12Gate_h map_id=87
-ROUTE_12_GATE_1F_HEIGHT EQU $04
-ROUTE_12_GATE_1F_WIDTH EQU $05
-
-; BillsHouse_h map_id=88
-BILLS_HOUSE_HEIGHT EQU $04
-BILLS_HOUSE_WIDTH EQU $04
-
-; VermilionPokecenter_h map_id=89
-VERMILION_POKECENTER_HEIGHT EQU $04
-VERMILION_POKECENTER_WIDTH EQU $07
-
-; FanClub_h map_id=90
-POKEMON_FAN_CLUB_HEIGHT EQU $04
-POKEMON_FAN_CLUB_WIDTH EQU $04
-
-; VermilionMart_h map_id=91
-VERMILION_MART_HEIGHT EQU $04
-VERMILION_MART_WIDTH EQU $04
-
-; VermilionGym_h map_id=92
-VERMILION_GYM_HEIGHT EQU $09
-VERMILION_GYM_WIDTH EQU $05
-
-; VermilionHouse1_h map_id=93
-VERMILION_HOUSE_1_HEIGHT EQU $04
-VERMILION_HOUSE_1_WIDTH EQU $04
-
-; VermilionDock_h map_id=94
-VERMILION_DOCK_HEIGHT EQU $06
-VERMILION_DOCK_WIDTH EQU $0e
-
-; SSAnne1_h map_id=95
-SS_ANNE_1_HEIGHT EQU $09
-SS_ANNE_1_WIDTH EQU $14
-
-; SSAnne2_h map_id=96
-SS_ANNE_2_HEIGHT EQU $09
-SS_ANNE_2_WIDTH EQU $14
-
-; SSAnne3_h map_id=97
-SS_ANNE_3_HEIGHT EQU $03
-SS_ANNE_3_WIDTH EQU $0a
-
-; SSAnne4_h map_id=98
-SS_ANNE_4_HEIGHT EQU $04
-SS_ANNE_4_WIDTH EQU $0f
-
-; SSAnne5_h map_id=99
-SS_ANNE_5_HEIGHT EQU $07
-SS_ANNE_5_WIDTH EQU $0a
-
-; SSAnne6_h map_id=100
-SS_ANNE_6_HEIGHT EQU $08
-SS_ANNE_6_WIDTH EQU $07
-
-; SSAnne7_h map_id=101
-SS_ANNE_7_HEIGHT EQU $04
-SS_ANNE_7_WIDTH EQU $03
-
-; SSAnne8_h map_id=102
-SS_ANNE_8_HEIGHT EQU $08
-SS_ANNE_8_WIDTH EQU $0c
-
-; SSAnne9_h map_id=103
-SS_ANNE_9_HEIGHT EQU $08
-SS_ANNE_9_WIDTH EQU $0c
-
-; SSAnne10_h map_id=104
-SS_ANNE_10_HEIGHT EQU $08
-SS_ANNE_10_WIDTH EQU $0c
-
-; VictoryRoad1_h map_id=108
-VICTORY_ROAD_1_HEIGHT EQU $09
-VICTORY_ROAD_1_WIDTH EQU $0a
-
-; Lance_h map_id=113
-LANCES_ROOM_HEIGHT EQU $0d
-LANCES_ROOM_WIDTH EQU $0d
-
-; HallofFameRoom_h map_id=118
-HALL_OF_FAME_HEIGHT EQU $04
-HALL_OF_FAME_WIDTH EQU $05
-
-; UndergroundPathNS_h map_id=119
-UNDERGROUND_PATH_NS_HEIGHT EQU $18
-UNDERGROUND_PATH_NS_WIDTH EQU $04
-
-; Gary_h map_id=120
-CHAMPIONS_ROOM_HEIGHT EQU $04
-CHAMPIONS_ROOM_WIDTH EQU $04
-
-; UndergroundPathWE_h map_id=121
-UNDERGROUND_PATH_WE_HEIGHT EQU $04
-UNDERGROUND_PATH_WE_WIDTH EQU $19
-
-; CeladonMart1_h map_id=122
-CELADON_MART_1_HEIGHT EQU $04
-CELADON_MART_1_WIDTH EQU $0a
-
-; CeladonMart2_h map_id=123
-CELADON_MART_2_HEIGHT EQU $04
-CELADON_MART_2_WIDTH EQU $0a
-
-; CeladonMart3_h map_id=124
-CELADON_MART_3_HEIGHT EQU $04
-CELADON_MART_3_WIDTH EQU $0a
-
-; CeladonMart4_h map_id=125
-CELADON_MART_4_HEIGHT EQU $04
-CELADON_MART_4_WIDTH EQU $0a
-
-; CeladonMartRoof_h map_id=126
-CELADON_MART_ROOF_HEIGHT EQU $04
-CELADON_MART_ROOF_WIDTH EQU $0a
-
-; CeladonMartElevator_h map_id=127
-CELADON_MART_ELEVATOR_HEIGHT EQU $02
-CELADON_MART_ELEVATOR_WIDTH EQU $02
-
-; CeladonMansion1_h map_id=128
-CELADON_MANSION_1_HEIGHT EQU $06
-CELADON_MANSION_1_WIDTH EQU $04
-
-; CeladonMansion2_h map_id=129
-CELADON_MANSION_2_HEIGHT EQU $06
-CELADON_MANSION_2_WIDTH EQU $04
-
-; CeladonMansion3_h map_id=130
-CELADON_MANSION_3_HEIGHT EQU $06
-CELADON_MANSION_3_WIDTH EQU $04
-
-; CeladonMansion4_h map_id=131
-CELADON_MANSION_4_HEIGHT EQU $06
-CELADON_MANSION_4_WIDTH EQU $04
-
-; CeladonMansion5_h map_id=132
-CELADON_MANSION_5_HEIGHT EQU $04
-CELADON_MANSION_5_WIDTH EQU $04
-
-; CeladonPokecenter_h map_id=133
-CELADON_POKECENTER_HEIGHT EQU $04
-CELADON_POKECENTER_WIDTH EQU $07
-
-; CeladonGym_h map_id=134
-CELADON_GYM_HEIGHT EQU $09
-CELADON_GYM_WIDTH EQU $05
-
-; CeladonGameCorner_h map_id=135
-GAME_CORNER_HEIGHT EQU $09
-GAME_CORNER_WIDTH EQU $0a
-
-; CeladonMart5_h map_id=136
-CELADON_MART_5_HEIGHT EQU $04
-CELADON_MART_5_WIDTH EQU $0a
-
-; CeladonPrizeRoom_h map_id=137
-CELADON_PRIZE_ROOM_HEIGHT EQU $04
-CELADON_PRIZE_ROOM_WIDTH EQU $05
-
-; CeladonDiner_h map_id=138
-CELADON_DINER_HEIGHT EQU $04
-CELADON_DINER_WIDTH EQU $05
-
-; CeladonHouse_h map_id=139
-CELADON_HOUSE_HEIGHT EQU $04
-CELADON_HOUSE_WIDTH EQU $04
-
-; CeladonHotel_h map_id=140
-CELADON_HOTEL_HEIGHT EQU $04
-CELADON_HOTEL_WIDTH EQU $07
-
-; LavenderPokecenter_h map_id=141
-LAVENDER_POKECENTER_HEIGHT EQU $04
-LAVENDER_POKECENTER_WIDTH EQU $07
-
-; PokemonTower1_h map_id=142
-POKEMONTOWER_1_HEIGHT EQU $09
-POKEMONTOWER_1_WIDTH EQU $0a
-
-; PokemonTower2_h map_id=143
-POKEMONTOWER_2_HEIGHT EQU $09
-POKEMONTOWER_2_WIDTH EQU $0a
-
-; PokemonTower3_h map_id=144
-POKEMONTOWER_3_HEIGHT EQU $09
-POKEMONTOWER_3_WIDTH EQU $0a
-
-; PokemonTower4_h map_id=145
-POKEMONTOWER_4_HEIGHT EQU $09
-POKEMONTOWER_4_WIDTH EQU $0a
-
-; PokemonTower5_h map_id=146
-POKEMONTOWER_5_HEIGHT EQU $09
-POKEMONTOWER_5_WIDTH EQU $0a
-
-; PokemonTower6_h map_id=147
-POKEMONTOWER_6_HEIGHT EQU $09
-POKEMONTOWER_6_WIDTH EQU $0a
-
-; PokemonTower7_h map_id=148
-POKEMONTOWER_7_HEIGHT EQU $09
-POKEMONTOWER_7_WIDTH EQU $0a
-
-; LavenderHouse1_h map_id=149
-LAVENDER_HOUSE_1_HEIGHT EQU $04
-LAVENDER_HOUSE_1_WIDTH EQU $04
-
-; LavenderMart_h map_id=150
-LAVENDER_MART_HEIGHT EQU $04
-LAVENDER_MART_WIDTH EQU $04
-
-; LavenderHouse2_h map_id=151
-LAVENDER_HOUSE_2_HEIGHT EQU $04
-LAVENDER_HOUSE_2_WIDTH EQU $04
-
-; FuchsiaMart_h map_id=152
-FUCHSIA_MART_HEIGHT EQU $04
-FUCHSIA_MART_WIDTH EQU $04
-
-; FuchsiaHouse1_h map_id=153
-FUCHSIA_HOUSE_1_HEIGHT EQU $04
-FUCHSIA_HOUSE_1_WIDTH EQU $04
-
-; FuchsiaPokecenter_h map_id=154
-FUCHSIA_POKECENTER_HEIGHT EQU $04
-FUCHSIA_POKECENTER_WIDTH EQU $07
-
-; FuchsiaHouse2_h map_id=155
-FUCHSIA_HOUSE_2_HEIGHT EQU $04
-FUCHSIA_HOUSE_2_WIDTH EQU $05
-
-; SafariZoneEntrance_h map_id=156
-SAFARI_ZONE_ENTRANCE_HEIGHT EQU $03
-SAFARI_ZONE_ENTRANCE_WIDTH EQU $04
-
-; FuchsiaGym_h map_id=157
-FUCHSIA_GYM_HEIGHT EQU $09
-FUCHSIA_GYM_WIDTH EQU $05
-
-; FuchsiaMeetingRoom_h map_id=158
-FUCHSIA_MEETING_ROOM_HEIGHT EQU $04
-FUCHSIA_MEETING_ROOM_WIDTH EQU $07
-
-; SeafoamIslands2_h map_id=159
-SEAFOAM_ISLANDS_2_HEIGHT EQU $09
-SEAFOAM_ISLANDS_2_WIDTH EQU $0f
-
-; SeafoamIslands3_h map_id=160
-SEAFOAM_ISLANDS_3_HEIGHT EQU $09
-SEAFOAM_ISLANDS_3_WIDTH EQU $0f
-
-; SeafoamIslands4_h map_id=161
-SEAFOAM_ISLANDS_4_HEIGHT EQU $09
-SEAFOAM_ISLANDS_4_WIDTH EQU $0f
-
-; SeafoamIslands5_h map_id=162
-SEAFOAM_ISLANDS_5_HEIGHT EQU $09
-SEAFOAM_ISLANDS_5_WIDTH EQU $0f
-
-; VermilionHouse2_h map_id=163
-VERMILION_HOUSE_2_HEIGHT EQU $04
-VERMILION_HOUSE_2_WIDTH EQU $04
-
-; FuchsiaHouse3_h map_id=164
-FUCHSIA_HOUSE_3_HEIGHT EQU $04
-FUCHSIA_HOUSE_3_WIDTH EQU $04
-
-; Mansion1_h map_id=165
-MANSION_1_HEIGHT EQU $0e
-MANSION_1_WIDTH EQU $0f
-
-; CinnabarGym_h map_id=166
-CINNABAR_GYM_HEIGHT EQU $09
-CINNABAR_GYM_WIDTH EQU $0a
-
-; Lab1_h map_id=167
-CINNABAR_LAB_1_HEIGHT EQU $04
-CINNABAR_LAB_1_WIDTH EQU $09
-
-; Lab2_h map_id=168
-CINNABAR_LAB_2_HEIGHT EQU $04
-CINNABAR_LAB_2_WIDTH EQU $04
-
-; Lab3_h map_id=169
-CINNABAR_LAB_3_HEIGHT EQU $04
-CINNABAR_LAB_3_WIDTH EQU $04
-
-; Lab4_h map_id=170
-CINNABAR_LAB_4_HEIGHT EQU $04
-CINNABAR_LAB_4_WIDTH EQU $04
-
-; CinnabarPokecenter_h map_id=171
-CINNABAR_POKECENTER_HEIGHT EQU $04
-CINNABAR_POKECENTER_WIDTH EQU $07
-
-; CinnabarMart_h map_id=172
-CINNABAR_MART_HEIGHT EQU $04
-CINNABAR_MART_WIDTH EQU $04
-
-; IndigoPlateauLobby_h map_id=174
-INDIGO_PLATEAU_LOBBY_HEIGHT EQU $06
-INDIGO_PLATEAU_LOBBY_WIDTH EQU $08
-
-; CopycatsHouse1F_h map_id=175
-COPYCATS_HOUSE_1F_HEIGHT EQU $04
-COPYCATS_HOUSE_1F_WIDTH EQU $04
-
-; CopycatsHouse2F_h map_id=176
-COPYCATS_HOUSE_2F_HEIGHT EQU $04
-COPYCATS_HOUSE_2F_WIDTH EQU $04
-
-; FightingDojo_h map_id=177
-FIGHTING_DOJO_HEIGHT EQU $06
-FIGHTING_DOJO_WIDTH EQU $05
-
-; SaffronGym_h map_id=178
-SAFFRON_GYM_HEIGHT EQU $09
-SAFFRON_GYM_WIDTH EQU $0a
-
-; SaffronHouse1_h map_id=179
-SAFFRON_HOUSE_1_HEIGHT EQU $04
-SAFFRON_HOUSE_1_WIDTH EQU $04
-
-; SaffronMart_h map_id=180
-SAFFRON_MART_HEIGHT EQU $04
-SAFFRON_MART_WIDTH EQU $04
-
-; SilphCo1_h map_id=181
-SILPH_CO_1F_HEIGHT EQU $09
-SILPH_CO_1F_WIDTH EQU $0f
-
-; SaffronPokecenter_h map_id=182
-SAFFRON_POKECENTER_HEIGHT EQU $04
-SAFFRON_POKECENTER_WIDTH EQU $07
-
-; SaffronHouse2_h map_id=183
-SAFFRON_HOUSE_2_HEIGHT EQU $04
-SAFFRON_HOUSE_2_WIDTH EQU $04
-
-; Route15Gate1F_h map_id=184
-ROUTE_15_GATE_1F_HEIGHT EQU $05
-ROUTE_15_GATE_1F_WIDTH EQU $04
-
-; Route15GateUpstairs_h map_id=185
-ROUTE_15_GATE_2F_HEIGHT EQU $04
-ROUTE_15_GATE_2F_WIDTH EQU $04
-
-; Route16GateMap_h map_id=186
-ROUTE_16_GATE_1F_HEIGHT EQU $07
-ROUTE_16_GATE_1F_WIDTH EQU $04
-
-; Route16GateUpstairs_h map_id=187
-ROUTE_16_GATE_2F_HEIGHT EQU $04
-ROUTE_16_GATE_2F_WIDTH EQU $04
-
-; Route16House_h map_id=188
-ROUTE_16_HOUSE_HEIGHT EQU $04
-ROUTE_16_HOUSE_WIDTH EQU $04
-
-; Route12House_h map_id=189
-ROUTE_12_HOUSE_HEIGHT EQU $04
-ROUTE_12_HOUSE_WIDTH EQU $04
-
-; Route18Gate_h map_id=190
-ROUTE_18_GATE_1F_HEIGHT EQU $05
-ROUTE_18_GATE_1F_WIDTH EQU $04
-
-; Route18GateHeader_h map_id=191
-ROUTE_18_GATE_2F_HEIGHT EQU $04
-ROUTE_18_GATE_2F_WIDTH EQU $04
-
-; SeafoamIslands1_h map_id=192
-SEAFOAM_ISLANDS_1_HEIGHT EQU $09
-SEAFOAM_ISLANDS_1_WIDTH EQU $0f
-
-; Route22Gate_h map_id=193
-ROUTE_22_GATE_HEIGHT EQU $04
-ROUTE_22_GATE_WIDTH EQU $05
-
-; VictoryRoad2_h map_id=194
-VICTORY_ROAD_2_HEIGHT EQU $09
-VICTORY_ROAD_2_WIDTH EQU $0f
-
-; Route12GateUpstairs_h map_id=195
-ROUTE_12_GATE_2F_HEIGHT EQU $04
-ROUTE_12_GATE_2F_WIDTH EQU $04
-
-; VermilionHouse3_h map_id=196
-VERMILION_HOUSE_3_HEIGHT EQU $04
-VERMILION_HOUSE_3_WIDTH EQU $04
-
-; DiglettsCave_h map_id=197
-DIGLETTS_CAVE_HEIGHT EQU $12
-DIGLETTS_CAVE_WIDTH EQU $14
-
-; VictoryRoad3_h map_id=198
-VICTORY_ROAD_3_HEIGHT EQU $09
-VICTORY_ROAD_3_WIDTH EQU $0f
-
-; RocketHideout1_h map_id=199
-ROCKET_HIDEOUT_1_HEIGHT EQU $0e
-ROCKET_HIDEOUT_1_WIDTH EQU $0f
-
-; RocketHideout2_h map_id=200
-ROCKET_HIDEOUT_2_HEIGHT EQU $0e
-ROCKET_HIDEOUT_2_WIDTH EQU $0f
-
-; RocketHideout3_h map_id=201
-ROCKET_HIDEOUT_3_HEIGHT EQU $0e
-ROCKET_HIDEOUT_3_WIDTH EQU $0f
-
-; RocketHideout4_h map_id=202
-ROCKET_HIDEOUT_4_HEIGHT EQU $0c
-ROCKET_HIDEOUT_4_WIDTH EQU $0f
-
-; RocketHideoutElevator_h map_id=203
-ROCKET_HIDEOUT_ELEVATOR_HEIGHT EQU $04
-ROCKET_HIDEOUT_ELEVATOR_WIDTH EQU $03
-
-; SilphCo2_h map_id=207
-SILPH_CO_2F_HEIGHT EQU $09
-SILPH_CO_2F_WIDTH EQU $0f
-
-; SilphCo3_h map_id=208
-SILPH_CO_3F_HEIGHT EQU $09
-SILPH_CO_3F_WIDTH EQU $0f
-
-; SilphCo4_h map_id=209
-SILPH_CO_4F_HEIGHT EQU $09
-SILPH_CO_4F_WIDTH EQU $0f
-
-; SilphCo5_h map_id=210
-SILPH_CO_5F_HEIGHT EQU $09
-SILPH_CO_5F_WIDTH EQU $0f
-
-; SilphCo6_h map_id=211
-SILPH_CO_6F_HEIGHT EQU $09
-SILPH_CO_6F_WIDTH EQU $0d
-
-; SilphCo7_h map_id=212
-SILPH_CO_7F_HEIGHT EQU $09
-SILPH_CO_7F_WIDTH EQU $0d
-
-; SilphCo8_h map_id=213
-SILPH_CO_8F_HEIGHT EQU $09
-SILPH_CO_8F_WIDTH EQU $0d
-
-; Mansion2_h map_id=214
-MANSION_2_HEIGHT EQU $0e
-MANSION_2_WIDTH EQU $0f
-
-; Mansion3_h map_id=215
-MANSION_3_HEIGHT EQU $09
-MANSION_3_WIDTH EQU $0f
-
-; Mansion4_h map_id=216
-MANSION_4_HEIGHT EQU $0e
-MANSION_4_WIDTH EQU $0f
-
-; SafariZoneEast_h map_id=217
-SAFARI_ZONE_EAST_HEIGHT EQU $0d
-SAFARI_ZONE_EAST_WIDTH EQU $0f
-
-; SafariZoneNorth_h map_id=218
-SAFARI_ZONE_NORTH_HEIGHT EQU $12
-SAFARI_ZONE_NORTH_WIDTH EQU $14
-
-; SafariZoneWest_h map_id=219
-SAFARI_ZONE_WEST_HEIGHT EQU $0d
-SAFARI_ZONE_WEST_WIDTH EQU $0f
-
-; SafariZoneCenter_h map_id=220
-SAFARI_ZONE_CENTER_HEIGHT EQU $0d
-SAFARI_ZONE_CENTER_WIDTH EQU $0f
-
-; SafariZoneRestHouse1_h map_id=221
-SAFARI_ZONE_REST_HOUSE_1_HEIGHT EQU $04
-SAFARI_ZONE_REST_HOUSE_1_WIDTH EQU $04
-
-; SafariZoneSecretHouse_h map_id=222
-SAFARI_ZONE_SECRET_HOUSE_HEIGHT EQU $04
-SAFARI_ZONE_SECRET_HOUSE_WIDTH EQU $04
-
-; SafariZoneRestHouse2_h map_id=223
-SAFARI_ZONE_REST_HOUSE_2_HEIGHT EQU $04
-SAFARI_ZONE_REST_HOUSE_2_WIDTH EQU $04
-
-; SafariZoneRestHouse3_h map_id=224
-SAFARI_ZONE_REST_HOUSE_3_HEIGHT EQU $04
-SAFARI_ZONE_REST_HOUSE_3_WIDTH EQU $04
-
-; SafariZoneRestHouse4_h map_id=225
-SAFARI_ZONE_REST_HOUSE_4_HEIGHT EQU $04
-SAFARI_ZONE_REST_HOUSE_4_WIDTH EQU $04
-
-; UnknownDungeon2_h map_id=226
-UNKNOWN_DUNGEON_2_HEIGHT EQU $09
-UNKNOWN_DUNGEON_2_WIDTH EQU $0f
-
-; UnknownDungeon3_h map_id=227
-UNKNOWN_DUNGEON_3_HEIGHT EQU $09
-UNKNOWN_DUNGEON_3_WIDTH EQU $0f
-
-; UnknownDungeon1_h map_id=228
-UNKNOWN_DUNGEON_1_HEIGHT EQU $09
-UNKNOWN_DUNGEON_1_WIDTH EQU $0f
-
-; NameRater_h map_id=229
-NAME_RATERS_HOUSE_HEIGHT EQU $04
-NAME_RATERS_HOUSE_WIDTH EQU $04
-
-; CeruleanHouse2_h map_id=230
-CERULEAN_HOUSE_2_HEIGHT EQU $04
-CERULEAN_HOUSE_2_WIDTH EQU $04
-
-; RockTunnel2_h map_id=232
-ROCK_TUNNEL_2_HEIGHT EQU $12
-ROCK_TUNNEL_2_WIDTH EQU $14
-
-; SilphCo9_h map_id=233
-SILPH_CO_9F_HEIGHT EQU $09
-SILPH_CO_9F_WIDTH EQU $0d
-
-; SilphCo10_h map_id=234
-SILPH_CO_10F_HEIGHT EQU $09
-SILPH_CO_10F_WIDTH EQU $08
-
-; SilphCo11_h map_id=235
-SILPH_CO_11F_HEIGHT EQU $09
-SILPH_CO_11F_WIDTH EQU $09
-
-; SilphCoElevator_h map_id=236
-SILPH_CO_ELEVATOR_HEIGHT EQU $02
-SILPH_CO_ELEVATOR_WIDTH EQU $02
-
-; TradeCenter_h map_id=239
-TRADE_CENTER_HEIGHT EQU $04
-TRADE_CENTER_WIDTH EQU $05
-
-; Colosseum_h map_id=240
-COLOSSEUM_HEIGHT EQU $04
-COLOSSEUM_WIDTH EQU $05
-
-; Lorelei_h map_id=245
-LORELEIS_ROOM_HEIGHT EQU $06
-LORELEIS_ROOM_WIDTH EQU $05
-
-; Bruno_h map_id=246
-BRUNOS_ROOM_HEIGHT EQU $06
-BRUNOS_ROOM_WIDTH EQU $05
-
-; Agatha_h map_id=247
-AGATHAS_ROOM_HEIGHT EQU $06
-AGATHAS_ROOM_WIDTH EQU $05
-
-BEACH_HOUSE_HEIGHT EQU 4
-BEACH_HOUSE_WIDTH EQU 7
diff --git a/constants/pikachu_emotion_constants.asm b/constants/pikachu_emotion_constants.asm
index bce84eb7..22c1d8ea 100644
--- a/constants/pikachu_emotion_constants.asm
+++ b/constants/pikachu_emotion_constants.asm
@@ -35,7 +35,11 @@ ENDM
pikaemotion_pcm: MACRO
db PIKAEMOTION_PLAYPCMSOUNDCLIP
- db \1
+IF _NARG > 0
+ dpikacry \1
+ELSE
+ db $ff
+ENDC
ENDM
pikaemotion_emotebubble: MACRO
diff --git a/constants/pokedex_constants.asm b/constants/pokedex_constants.asm
index 07cda548..360fbb4c 100644
--- a/constants/pokedex_constants.asm
+++ b/constants/pokedex_constants.asm
@@ -82,7 +82,7 @@ const_value = 1
const DEX_SLOWBRO ; 80
const DEX_MAGNEMITE ; 81
const DEX_MAGNETON ; 82
- const DEX_FARFETCHD ; 83
+ const DEX_FARFETCHD ; 83
const DEX_DODUO ; 84
const DEX_DODRIO ; 85
const DEX_SEEL ; 86
diff --git a/constants/pokemon_constants.asm b/constants/pokemon_constants.asm
index 773495e3..96d44ef5 100644
--- a/constants/pokemon_constants.asm
+++ b/constants/pokemon_constants.asm
@@ -63,7 +63,7 @@ const_value = 1
const MISSINGNO_3D ; $3D
const MISSINGNO_3E ; $3E
const MISSINGNO_3F ; $3F
- const FARFETCHD ; $40
+ const FARFETCHD ; $40
const VENONAT ; $41
const DRAGONITE ; $42
const MISSINGNO_43 ; $43
diff --git a/constants/predef_constants.asm b/constants/predef_constants.asm
index 14d1029d..76ff24a9 100644
--- a/constants/predef_constants.asm
+++ b/constants/predef_constants.asm
@@ -16,15 +16,15 @@ const_value = 0
predef_const DivideBCDPredef3
predef_const DivideBCDPredef4
predef_const InitPlayerData
- predef_const FlagActionPredef
- predef_const HideObject
+ predef_const FlagActionPredef ; 10
+ predef_const HideObject ; 11
predef_const IsObjectHidden
predef_const ApplyOutOfBattlePoisonDamage
predef_const AnyPartyAlive
predef_const ShowObject
predef_const ShowObject2
predef_const ReplaceTileBlock
- predef_const InitPlayerData2
+ predef_const InitPlayerData2 ; 18
predef_const LoadTilesetHeader
predef_const LearnMoveFromLevelUp
predef_const LearnMove
@@ -98,4 +98,4 @@ const_value = 0
predef_const DrawHP ; 5F
predef_const DrawHP2
predef_const Func_1c9c6
- predef_const OaksAideScript \ No newline at end of file
+ predef_const OaksAideScript
diff --git a/constants/trainer_constants.asm b/constants/trainer_constants.asm
index a710b5fa..e11cc4aa 100755
--- a/constants/trainer_constants.asm
+++ b/constants/trainer_constants.asm
@@ -6,50 +6,50 @@ ENDM
const_value = 1
- trainer_const YOUNGSTER ; $01
- trainer_const BUG_CATCHER ; $02
- trainer_const LASS ; $03
- trainer_const SAILOR ; $04
- trainer_const JR_TRAINER_M ; $05
- trainer_const JR_TRAINER_F ; $06
- trainer_const POKEMANIAC ; $07
- trainer_const SUPER_NERD ; $08
- trainer_const HIKER ; $09
- trainer_const BIKER ; $0A
- trainer_const BURGLAR ; $0B
- trainer_const ENGINEER ; $0C
- trainer_const JUGGLER_X ; $0D
- trainer_const FISHER ; $0E
- trainer_const SWIMMER ; $0F
- trainer_const CUE_BALL ; $10
- trainer_const GAMBLER ; $11
- trainer_const BEAUTY ; $12
- trainer_const PSYCHIC_TR ; $13
- trainer_const ROCKER ; $14
- trainer_const JUGGLER ; $15
- trainer_const TAMER ; $16
- trainer_const BIRD_KEEPER ; $17
- trainer_const BLACKBELT ; $18
- trainer_const SONY1 ; $19
- trainer_const PROF_OAK ; $1A
- trainer_const CHIEF ; $1B
- trainer_const SCIENTIST ; $1C
- trainer_const GIOVANNI ; $1D
- trainer_const ROCKET ; $1E
- trainer_const COOLTRAINER_M ; $1F
- trainer_const COOLTRAINER_F ; $20
- trainer_const BRUNO ; $21
- trainer_const BROCK ; $22
- trainer_const MISTY ; $23
- trainer_const LT_SURGE ; $24
- trainer_const ERIKA ; $25
- trainer_const KOGA ; $26
- trainer_const BLAINE ; $27
- trainer_const SABRINA ; $28
- trainer_const GENTLEMAN ; $29
- trainer_const SONY2 ; $2A
- trainer_const SONY3 ; $2B
- trainer_const LORELEI ; $2C
- trainer_const CHANNELER ; $2D
- trainer_const AGATHA ; $2E
- trainer_const LANCE ; $2F
+ trainer_const YOUNGSTER ; $01 | OPP = $C9
+ trainer_const BUG_CATCHER ; $02 | OPP = $CA
+ trainer_const LASS ; $03 | OPP = $CB
+ trainer_const SAILOR ; $04 | OPP = $CC
+ trainer_const JR_TRAINER_M ; $05 | OPP = $CD
+ trainer_const JR_TRAINER_F ; $06 | OPP = $CE
+ trainer_const POKEMANIAC ; $07 | OPP = $CF
+ trainer_const SUPER_NERD ; $08 | OPP = $D0
+ trainer_const HIKER ; $09 | OPP = $D1
+ trainer_const BIKER ; $0A | OPP = $D2
+ trainer_const BURGLAR ; $0B | OPP = $D3
+ trainer_const ENGINEER ; $0C | OPP = $D4
+ trainer_const JUGGLER_X ; $0D | OPP = $D5
+ trainer_const FISHER ; $0E | OPP = $D6
+ trainer_const SWIMMER ; $0F | OPP = $D7
+ trainer_const CUE_BALL ; $10 | OPP = $D8
+ trainer_const GAMBLER ; $11 | OPP = $D9
+ trainer_const BEAUTY ; $12 | OPP = $DA
+ trainer_const PSYCHIC_TR ; $13 | OPP = $DB
+ trainer_const ROCKER ; $14 | OPP = $DC
+ trainer_const JUGGLER ; $15 | OPP = $DD
+ trainer_const TAMER ; $16 | OPP = $DE
+ trainer_const BIRD_KEEPER ; $17 | OPP = $DF
+ trainer_const BLACKBELT ; $18 | OPP = $E0
+ trainer_const SONY1 ; $19 | OPP = $E1
+ trainer_const PROF_OAK ; $1A | OPP = $E2
+ trainer_const CHIEF ; $1B | OPP = $E3
+ trainer_const SCIENTIST ; $1C | OPP = $E4
+ trainer_const GIOVANNI ; $1D | OPP = $E5
+ trainer_const ROCKET ; $1E | OPP = $E6
+ trainer_const COOLTRAINER_M ; $1F | OPP = $E7
+ trainer_const COOLTRAINER_F ; $20 | OPP = $E8
+ trainer_const BRUNO ; $21 | OPP = $E9
+ trainer_const BROCK ; $22 | OPP = $EA
+ trainer_const MISTY ; $23 | OPP = $EB
+ trainer_const LT_SURGE ; $24 | OPP = $EC
+ trainer_const ERIKA ; $25 | OPP = $ED
+ trainer_const KOGA ; $26 | OPP = $EE
+ trainer_const BLAINE ; $27 | OPP = $EF
+ trainer_const SABRINA ; $28 | OPP = $F0
+ trainer_const GENTLEMAN ; $29 | OPP = $F1
+ trainer_const SONY2 ; $2A | OPP = $F2
+ trainer_const SONY3 ; $2B | OPP = $F3
+ trainer_const LORELEI ; $2C | OPP = $F4
+ trainer_const CHANNELER ; $2D | OPP = $F5
+ trainer_const AGATHA ; $2E | OPP = $F6
+ trainer_const LANCE ; $2F | OPP = $F7
diff --git a/constants/tx_pre_constants.asm b/constants/tx_pre_constants.asm
deleted file mode 100644
index e2bade58..00000000
--- a/constants/tx_pre_constants.asm
+++ /dev/null
@@ -1,70 +0,0 @@
-const_value = 1
-
- tx_pre_const CardKeySuccessText ; 01
- tx_pre_const CardKeyFailText ; 02
- tx_pre_const RedBedroomPCText ; 03
- tx_pre_const RedBedroomSNESText ; 04
- tx_pre_const PushStartText ; 05
- tx_pre_const SaveOptionText ; 06
- tx_pre_const StrengthsAndWeaknessesText ; 07
- tx_pre_const OakLabEmailText ; 08
- tx_pre_const AerodactylFossilText ; 09
- tx_pre_const Route15UpstairsBinocularsText ; 0A
- tx_pre_const KabutopsFossilText ; 0B
- tx_pre_const GymStatueText1 ; 0C
- tx_pre_const GymStatueText2 ; 0D
- tx_pre_const BookcaseText ; 0E
- tx_pre_const ViridianCityPokecenterBenchGuyText ; 0F
- tx_pre_const PewterCityPokecenterBenchGuyText ; 10
- tx_pre_const CeruleanCityPokecenterBenchGuyText ; 11
- tx_pre_const LavenderCityPokecenterBenchGuyText ; 12
- tx_pre_const VermilionCityPokecenterBenchGuyText ; 13
- tx_pre_const CeladonCityPokecenterBenchGuyText ; 14
- tx_pre_const CeladonCityHotelText ; 15
- tx_pre_const FuchsiaCityPokecenterBenchGuyText ; 16
- tx_pre_const CinnabarIslandPokecenterBenchGuyText ; 17
- tx_pre_const SaffronCityPokecenterBenchGuyText ; 18
- tx_pre_const MtMoonPokecenterBenchGuyText ; 19
- tx_pre_const RockTunnelPokecenterBenchGuyText ; 1A
- tx_pre_const UnusedBenchGuyText1 ; 1B XXX unused
- tx_pre_const UnusedBenchGuyText2 ; 1C XXX unused
- tx_pre_const UnusedBenchGuyText3 ; 1D XXX unused
- tx_pre_const UnusedPredefText ; 1E XXX unused
- tx_pre_const PokemonCenterPCText ; 1F
- tx_pre_const ViridianSchoolNotebook ; 20
- tx_pre_const ViridianSchoolBlackboard ; 21
- tx_pre_const FakeTextPredef22
- tx_pre_const FakeTextPredef23
- tx_pre_const JustAMomentText ; 22
- tx_pre_const OpenBillsPCText ; 23
- tx_pre_const FoundHiddenItemText ; 24
- tx_pre_const HiddenItemBagFullText ; 25 XXX unused
- tx_pre_const VermilionGymTrashText ; 26
- tx_pre_const IndigoPlateauHQText ; 27
- tx_pre_const GameCornerOutOfOrderText ; 28
- tx_pre_const GameCornerOutToLunchText ; 29
- tx_pre_const GameCornerSomeonesKeysText ; 2A
- tx_pre_const FoundHiddenCoinsText ; 2B
- tx_pre_const DroppedHiddenCoinsText ; 2C
- tx_pre_const BillsHouseMonitorText ; 2D
- tx_pre_const BillsHouseInitiatedText ; 2E
- tx_pre_const BillsHousePokemonList ; 2F
- tx_pre_const MagazinesText ; 30
- tx_pre_const CinnabarGymQuiz ; 31
- tx_pre_const GameCornerNoCoinsText ; 32
- tx_pre_const GameCornerCoinCaseText ; 33
- tx_pre_const LinkCableHelp ; 34
- tx_pre_const TMNotebook ; 35
- tx_pre_const FightingDojoText ; 36
- tx_pre_const EnemiesOnEverySideText ; 37
- tx_pre_const WhatGoesAroundComesAroundText ; 38
- tx_pre_const NewBicycleText ; 39
- tx_pre_const IndigoPlateauStatues ; 3A
- tx_pre_const VermilionGymTrashSuccesText1 ; 3B
- tx_pre_const VermilionGymTrashSuccesText2 ; 3C XXX unused
- tx_pre_const VermilionGymTrashSuccesText3 ; 3D
- tx_pre_const VermilionGymTrashFailText ; 3E
- tx_pre_const TownMapText ; 3F
- tx_pre_const BookOrSculptureText ; 40
- tx_pre_const ElevatorText ; 41
- tx_pre_const PokemonStuffText ; 42 \ No newline at end of file
diff --git a/data/credit_mons.asm b/data/credit_mons.asm
index 6a8bb416..c271db68 100755
--- a/data/credit_mons.asm
+++ b/data/credit_mons.asm
@@ -14,3 +14,7 @@ CreditsMons: ; 74131 (1d:4131)
db VILEPLUME
db NIDOKING
db PARASECT
+
+rept 9
+ db GENGAR
+endr
diff --git a/data/credits_order.asm b/data/credits_order.asm
index 5a71a26a..e84a2a09 100755
--- a/data/credits_order.asm
+++ b/data/credits_order.asm
@@ -2,38 +2,37 @@ CreditsOrder: ; 74243 (1d:4243)
; subsequent credits elements will be displayed on separate lines.
; $FF, $FE, $FD, $FC, $FB, and $FA are commands that are used
; to go to the next set of credits texts.
- db CRED_MON, CRED_VERSION, $FF
- db CRED_DIRECTOR, CRED_TAJIRI, $FF
- db CRED_PROGRAMMERS, CRED_TA_OOTA, CRED_MORIMOTO, $FD
- db CRED_PROGRAMMERS, CRED_WATANABE, CRED_MASUDE, CRED_TAMADA, $FE
- db CRED_CHAR_DESIGN, CRED_SUGIMORI, CRED_NISHIDA, $FF
- db CRED_MUSIC, CRED_MASUDE, $FD
- db CRED_SOUND_EFFECTS, CRED_MASUDE, $FE
- db CRED_GAME_DESIGN, CRED_TAJIRI, $FF
- db CRED_MONSTER_DESIGN, CRED_SUGIMORI, CRED_NISHIDA, CRED_FUZIWARA, $FD
- db CRED_MONSTER_DESIGN, CRED_MORIMOTO, CRED_SA_OOTA, CRED_YOSHIKAWA, $FE
- db CRED_GAME_SCENE, CRED_TAJIRI, $FD
- db CRED_GAME_SCENE, CRED_TANIGUCHI, CRED_NONOMURA, CRED_ZINNAI, $FE
- db CRED_PARAM, CRED_NISINO, CRED_TA_NAKAMURA, $FF
- db CRED_MAP, CRED_TAJIRI, CRED_NISINO, $FD
- db CRED_MAP, CRED_MATSUSIMA, CRED_NONOMURA, CRED_TANIGUCHI, $FE
- db CRED_TEST, CRED_KAKEI, CRED_TSUCHIYA, $FD
- db CRED_TEST, CRED_TA_NAKAMURA, CRED_YUDA, $FE
- db CRED_SPECIAL, CRED_HISHIDA, CRED_SAKAI, $FD
- db CRED_SPECIAL, CRED_YAMAGUCHI, CRED_YAMAMOTO, $FC
- db CRED_SPECIAL, CRED_TOMISAWA, CRED_KAWAMOTO, CRED_TO_OOTA, $FE
- db CRED_PRODUCERS, CRED_MIYAMOTO, $FD
- db CRED_PRODUCERS, CRED_KAWAGUCHI, $FC
- db CRED_PRODUCERS, CRED_ISHIHARA, $FE
- db CRED_US_STAFF, $FD
- db CRED_US_COORD, CRED_TILDEN, $FD
- db CRED_US_COORD, CRED_KAWAKAMI, CRED_HI_NAKAMURA, $FC
- db CRED_US_COORD, CRED_GIESE, CRED_OSBORNE, $FC
- db CRED_TRANS, CRED_OGASAWARA, $FD
- db CRED_PROGRAMMERS, CRED_MURAKAWA, CRED_FUKUI, $FD
- db CRED_SPECIAL, CRED_IWATA, $FD
- db CRED_SPECIAL, CRED_HARADA, $FC
- db CRED_TEST, CRED_PAAD, CRED_CLUB, $FD
- db CRED_PRODUCER, CRED_IZUSHI, $FD
- db CRED_EXECUTIVE, CRED_YAMAUCHI, $FF
- db $FB, $FF, $FA
+ db CRED_POKEMON, CRED_VERSION, CRED_TEXT_FADE_MON
+ db CRED_DIRECTOR, CRED_TAJIRI, CRED_TEXT_FADE_MON
+ db CRED_PROGRAMMERS, CRED_OOTA, CRED_MORIMOTO, CRED_WATANABE, CRED_TEXT_FADE
+ db CRED_PROGRAMMERS, CRED_MASUDA, CRED_TAMADA, CRED_TEXT_MON
+ db CRED_CHARACTER_DESIGN, CRED_SUGIMORI, CRED_NISHIDA, CRED_TEXT_FADE_MON
+ db CRED_MUSIC, CRED_MASUDA, CRED_TEXT_FADE
+ db CRED_SOUND_EFFECTS, CRED_MASUDA, CRED_WATANABE, CRED_TEXT_MON
+ db CRED_GAME_DESIGN, CRED_TAJIRI, CRED_NISHINO, CRED_TEXT_FADE_MON
+ db CRED_MONSTER_DESIGN, CRED_SUGIMORI, CRED_NISHIDA, CRED_YOSHIDA, CRED_TEXT_FADE_MON
+ db CRED_GAME_SCENARIO, CRED_TAJIRI, CRED_TEXT_FADE
+ db CRED_GAME_SCENARIO, CRED_MATSUMITA, CRED_TEXT_MON
+ db CRED_PARAMETRIC_DESIGN, CRED_NISHINO, CRED_TEXT_FADE_MON
+ db CRED_MAP_DESIGN, CRED_TAJIRI, CRED_NISHINO, CRED_SEYA, CRED_TEXT_FADE_MON
+ db CRED_TESTING, CRED_SEKINE, CRED_SEYA, CRED_TEXT_FADE
+ db CRED_TESTING, CRED_SHIMAMURA, CRED_SHIMOYAMADA, CRED_TEXT_MON
+ db CRED_SPECIAL_THANKS, CRED_SHOGAKUKAN, CRED_TEXT_FADE_MON
+ db CRED_PIKACHU_VOICE, CRED_OOTANI, CRED_TEXT_FADE_MON
+ db CRED_PRODUCER, CRED_IZUSHI, CRED_TEXT_FADE
+ db CRED_PRODUCER, CRED_KAWAGUCHI, CRED_TEXT
+ db CRED_PRODUCER, CRED_ISHIHARA, CRED_TEXT_MON
+ db CRED_U_S_STAFF, CRED_TEXT_FADE
+ db CRED_U_S_COORD, CRED_TILDEN, CRED_TEXT_FADE
+ db CRED_U_S_COORD, CRED_KAWAKAMI, CRED_NAKAMURA2, CRED_TEXT
+ db CRED_U_S_COORD, CRED_SHOEMAKE, CRED_OSBORNE, CRED_TEXT
+ db CRED_TRANSLATION, CRED_OGASAWARA, CRED_TEXT_FADE
+ db CRED_PROGRAMMERS, CRED_MURAKAWA, CRED_FUKUI, CRED_TEXT_FADE
+ db CRED_CHARACTER_DESIGN, CRED_HOSOKAWA, CRED_TEXT_FADE
+ db CRED_SPECIAL_THANKS, CRED_OKUBO, CRED_HARADA2, CRED_TEXT_FADE
+ db CRED_SPECIAL_THANKS, CRED_NAKAMICHI, CRED_YOSHIMURA, CRED_YAMAZAKI, CRED_TEXT
+ db CRED_TESTING, CRED_PAAD, CRED_SUPER_MARIO_CLUB2, CRED_TEXT_FADE
+ db CRED_EXECUTIVE_PRODUCER, CRED_YAMAUCHI, CRED_TEXT_FADE_MON
+ db CRED_COPYRIGHT
+ db CRED_TEXT_FADE_MON
+ db CRED_THE_END
diff --git a/data/hidden_item_coords.asm b/data/hidden_item_coords.asm
index 54c785f5..051fdfe5 100755
--- a/data/hidden_item_coords.asm
+++ b/data/hidden_item_coords.asm
@@ -1,57 +1,58 @@
-HiddenItemCoords: ; 766b8 (1d:66b8)
+HiddenItemCoords: ; 75faa (1d:5faa)
; map ID, then coords
- db VIRIDIAN_FOREST,$12,$01
- db VIRIDIAN_FOREST,$2a,$10
- db MT_MOON_3,$0c,$12
- db ROUTE_25,$03,$26
- db ROUTE_9,$07,$0e
- db SS_ANNE_6,$09,$0d
- db SS_ANNE_10,$01,$03
- db ROUTE_10,$11,$09
- db ROUTE_10,$35,$10
- db ROCKET_HIDEOUT_1,$0f,$15
- db ROCKET_HIDEOUT_3,$11,$1b
- db ROCKET_HIDEOUT_4,$01,$19
- db POKEMONTOWER_5,$0c,$04
- db ROUTE_13,$0e,$01
- db ROUTE_13,$0d,$10
- db MANSION_4,$09,$01
- db SAFARI_ZONE_ENTRANCE,$01,$0a
- db SAFARI_ZONE_WEST,$05,$06
- db SILPH_CO_5F,$03,$0c
- db SILPH_CO_9F,$0f,$02
- db COPYCATS_HOUSE_2F,$01,$01
- db UNKNOWN_DUNGEON_1,$0b,$0e
- db UNKNOWN_DUNGEON_3,$03,$1b
- db POWER_PLANT,$10,$11
- db POWER_PLANT,$01,$0c
- db SEAFOAM_ISLANDS_3,$0f,$0f
- db SEAFOAM_ISLANDS_5,$11,$19
- db MANSION_1,$10,$08
- db MANSION_3,$09,$01
- db ROUTE_23,$2c,$09
- db ROUTE_23,$46,$13
- db ROUTE_23,$5a,$08
- db VICTORY_ROAD_2,$02,$05
- db VICTORY_ROAD_2,$07,$1a
- db $6f,$0b,$0e
- db VIRIDIAN_CITY,$04,$0e
- db ROUTE_11,$05,$30
- db ROUTE_12,$3f,$02
- db ROUTE_17,$0e,$0f
- db ROUTE_17,$2d,$08
- db ROUTE_17,$48,$11
- db ROUTE_17,$5b,$04
- db ROUTE_17,$79,$08
- db UNDERGROUND_PATH_NS,$04,$03
- db UNDERGROUND_PATH_NS,$22,$04
- db UNDERGROUND_PATH_WE,$02,$0c
- db UNDERGROUND_PATH_WE,$05,$15
- db CELADON_CITY,$0f,$30
- db ROUTE_25,$01,$0a
- db MT_MOON_3,$09,$21
- db SEAFOAM_ISLANDS_4,$10,$09
- db VERMILION_CITY,$0b,$0e
- db CERULEAN_CITY,$08,$0f
- db ROUTE_4,$03,$28
+ db SILPH_CO_5F, $03, $0c
+ db SILPH_CO_9F, $0f, $02
+ db MANSION_3, $09, $01
+ db MANSION_4, $09, $01
+ db SAFARI_ZONE_WEST, $05, $06
+ db UNKNOWN_DUNGEON_2, $0d, $10
+ db UNKNOWN_DUNGEON_3, $0e, $08
+ db UNUSED_MAP_6F, $0b, $0e
+ db SEAFOAM_ISLANDS_3, $0f, $0f
+ db SEAFOAM_ISLANDS_4, $10, $09
+ db SEAFOAM_ISLANDS_5, $11, $19
+ db VIRIDIAN_FOREST, $12, $01
+ db VIRIDIAN_FOREST, $2a, $10
+ db MT_MOON_3, $0c, $12
+ db MT_MOON_3, $09, $21
+ db SS_ANNE_10, $01, $03
+ db SS_ANNE_6, $09, $0d
+ db UNDERGROUND_PATH_NS, $04, $03
+ db UNDERGROUND_PATH_NS, $22, $04
+ db UNDERGROUND_PATH_WE, $02, $0c
+ db UNDERGROUND_PATH_WE, $05, $15
+ db ROCKET_HIDEOUT_1, $0f, $15
+ db ROCKET_HIDEOUT_3, $11, $1b
+ db ROCKET_HIDEOUT_4, $01, $19
+ db ROUTE_10, $11, $09
+ db ROUTE_10, $35, $10
+ db POWER_PLANT, $10, $11
+ db POWER_PLANT, $01, $0c
+ db ROUTE_11, $05, $30
+ db ROUTE_12, $3f, $02
+ db ROUTE_13, $0e, $01
+ db ROUTE_13, $0d, $10
+ db ROUTE_17, $0e, $0f
+ db ROUTE_17, $2d, $08
+ db ROUTE_17, $48, $11
+ db ROUTE_17, $5b, $04
+ db ROUTE_17, $79, $08
+ db ROUTE_23, $2c, $09
+ db ROUTE_23, $46, $13
+ db ROUTE_23, $5a, $08
+ db VICTORY_ROAD_2, $02, $05
+ db VICTORY_ROAD_2, $07, $1a
+ db ROUTE_25, $03, $26
+ db ROUTE_25, $01, $0a
+ db ROUTE_4, $03, $28
+ db ROUTE_9, $07, $0e
+ db COPYCATS_HOUSE_2F, $01, $01
+ db VIRIDIAN_CITY, $04, $0e
+ db CERULEAN_CITY, $08, $0f
+ db UNKNOWN_DUNGEON_1, $07, $12
+ db POKEMONTOWER_5, $0c, $04
+ db VERMILION_CITY, $0b, $0e
+ db CELADON_CITY, $0f, $30
+ db SAFARI_ZONE_ENTRANCE, $01, $0a
+ db MANSION_1, $10, $08
db $ff
diff --git a/data/hidden_objects.asm b/data/hidden_objects.asm
index 8170cf5a..ccf32510 100755
--- a/data/hidden_objects.asm
+++ b/data/hidden_objects.asm
@@ -1,853 +1,547 @@
-HiddenObjectMaps: ; 46a40 (11:6a40)
- db REDS_HOUSE_2F
- db BLUES_HOUSE
- db OAKS_LAB
- db VIRIDIAN_POKECENTER
- db VIRIDIAN_MART
- db VIRIDIAN_SCHOOL
- db VIRIDIAN_GYM
- db MUSEUM_1F
- db PEWTER_GYM
- db PEWTER_MART
- db PEWTER_POKECENTER
- db CERULEAN_POKECENTER
- db CERULEAN_GYM
- db CERULEAN_MART
- db LAVENDER_POKECENTER
- db VERMILION_POKECENTER
- db VERMILION_GYM
- db CELADON_MANSION_2
- db CELADON_POKECENTER
- db CELADON_GYM
- db GAME_CORNER
- db CELADON_HOTEL
- db FUCHSIA_POKECENTER
- db FUCHSIA_GYM
- db CINNABAR_GYM
- db CINNABAR_POKECENTER
- db SAFFRON_GYM
- db MT_MOON_POKECENTER
- db ROCK_TUNNEL_POKECENTER
- db TRADE_CENTER
- db COLOSSEUM
- db VIRIDIAN_FOREST
- db MT_MOON_3
- db INDIGO_PLATEAU
- db ROUTE_25
- db ROUTE_9
- db SS_ANNE_6
- db SS_ANNE_10
- db ROCKET_HIDEOUT_1
- db ROCKET_HIDEOUT_3
- db ROCKET_HIDEOUT_4
- db SAFFRON_POKECENTER
- db POKEMONTOWER_5
- db ROUTE_13
- db SAFARI_ZONE_ENTRANCE
- db SAFARI_ZONE_WEST
- db SILPH_CO_5F
- db SILPH_CO_9F
- db COPYCATS_HOUSE_2F
- db UNKNOWN_DUNGEON_1
- db UNKNOWN_DUNGEON_3
- db POWER_PLANT
- db SEAFOAM_ISLANDS_3
- db SEAFOAM_ISLANDS_5
- db MANSION_1
- db MANSION_3
- db ROUTE_23
- db VICTORY_ROAD_2
- db $6F
- db BILLS_HOUSE
- db VIRIDIAN_CITY
- db SAFARI_ZONE_REST_HOUSE_2
- db SAFARI_ZONE_REST_HOUSE_3
- db SAFARI_ZONE_REST_HOUSE_4
- db ROUTE_15_GATE_2F
- db LAVENDER_HOUSE_1
- db CELADON_MANSION_5
- db FIGHTING_DOJO
- db ROUTE_10
- db INDIGO_PLATEAU_LOBBY
- db CINNABAR_LAB_4
- db BIKE_SHOP
- db ROUTE_11
- db ROUTE_12
- db MANSION_2
- db MANSION_4
- db SILPH_CO_11F
- db ROUTE_17
- db UNDERGROUND_PATH_NS
- db UNDERGROUND_PATH_WE
- db CELADON_CITY
- db SEAFOAM_ISLANDS_4
- db VERMILION_CITY
- db CERULEAN_CITY
- db ROUTE_4
- db $FF
-
-HiddenObjectPointers: ; 46a96 (11:6a96)
-; each of these pointers is for the corresponding map in HiddenObjectMaps
- dw RedsHouse2FHiddenObjects
- dw BluesHouseHiddenObjects
- dw OaksLabHiddenObjects
- dw ViridianPokecenterHiddenObjects
- dw ViridianMartHiddenObjects
- dw ViridianSchoolHiddenObjects
- dw ViridianGymHiddenObjects
- dw Museum1FHiddenObjects
- dw PewterGymHiddenObjects
- dw PewterMartHiddenObjects
- dw PewterPokecenterHiddenObjects
- dw CeruleanPokecenterHiddenObjects
- dw CeruleanGymHiddenObjects
- dw CeruleanMartHiddenObjects
- dw LavenderPokecenterHiddenObjects
- dw VermilionPokecenterHiddenObjects
- dw VermilionGymHiddenObjects
- dw CeladonMansion2HiddenObjects
- dw CeladonPokecenterHiddenObjects
- dw CeladonGymHiddenObjects
- dw GameCornerHiddenObjects
- dw CeladonHotelHiddenObjects
- dw FuchsiaPokecenterHiddenObjects
- dw FuchsiaGymHiddenObjects
- dw CinnabarGymHiddenObjects
- dw CinnabarPokecenterHiddenObjects
- dw SaffronGymHiddenObjects
- dw MtMoonPokecenterHiddenObjects
- dw RockTunnelPokecenterHiddenObjects
- dw TradeCenterHiddenObjects
- dw ColosseumHiddenObjects
- dw ViridianForestHiddenObjects
- dw MtMoon3HiddenObjects
- dw IndigoPlateauHiddenObjects
- dw Route25HiddenObjects
- dw Route9HiddenObjects
- dw SSAnne6HiddenObjects
- dw SSAnne10HiddenObjects
- dw RocketHideout1HiddenObjects
- dw RocketHideout3HiddenObjects
- dw RocketHideout4HiddenObjects
- dw SaffronPokecenterHiddenObjects
- dw PokemonTower5HiddenObjects
- dw Route13HiddenObjects
- dw SafariZoneEntranceHiddenObjects
- dw SafariZoneWestHiddenObjects
- dw SilphCo5FHiddenObjects
- dw SilphCo9FHiddenObjects
- dw CopycatsHouse2FHiddenObjects
- dw UnknownDungeon1HiddenObjects
- dw UnknownDungeon3HiddenObjects
- dw PowerPlantHiddenObjects
- dw SeafoamIslands3HiddenObjects
- dw SeafoamIslands5HiddenObjects
- dw Mansion1HiddenObjects
- dw Mansion3HiddenObjects
- dw Route23HiddenObjects
- dw VictoryRoad2HiddenObjects
- dw Unused6FHiddenObjects
- dw BillsHouseHiddenObjects
- dw ViridianCityHiddenObjects
- dw SafariZoneRestHouse2HiddenObjects
- dw SafariZoneRestHouse3HiddenObjects
- dw SafariZoneRestHouse4HiddenObjects
- dw Route15GateUpstairsHiddenObjects
- dw LavenderHouse1HiddenObjects
- dw CeladonMansion5HiddenObjects
- dw FightingDojoHiddenObjects
- dw Route10HiddenObjects
- dw IndigoPlateauLobbyHiddenObjects
- dw CinnabarLab4HiddenObjects
- dw BikeShopHiddenObjects
- dw Route11HiddenObjects
- dw Route12HiddenObjects
- dw Mansion2HiddenObjects
- dw Mansion4HiddenObjects
- dw SilphCo11FHiddenObjects
- dw Route17HiddenObjects
- dw UndergroundPathNsHiddenObjects
- dw UndergroundPathWeHiddenObjects
- dw CeladonCityHiddenObjects
- dw SeafoamIslands4HiddenObjects
- dw VermilionCityHiddenObjects
- dw CeruleanCityHiddenObjects
- dw Route4HiddenObjects
+HiddenObjectMaps: ; f268d (3c:668d)
+ dbw SILPH_CO_11F, SilphCo11FHiddenObjects
+ dbw SILPH_CO_5F, SilphCo5FHiddenObjects
+ dbw SILPH_CO_9F, SilphCo9FHiddenObjects
+ dbw MANSION_2, Mansion2HiddenObjects
+ dbw MANSION_3, Mansion3HiddenObjects
+ dbw MANSION_4, Mansion4HiddenObjects
+ dbw SAFARI_ZONE_WEST, SafariZoneWestHiddenObjects
+ dbw UNKNOWN_DUNGEON_2, UnknownDungeon2HiddenObjects
+ dbw UNKNOWN_DUNGEON_3, UnknownDungeon3HiddenObjects
+ dbw UNUSED_MAP_6F, UnusedMap6FHiddenObjects
+ dbw SEAFOAM_ISLANDS_3, SeafoamIslands3HiddenObjects
+ dbw SEAFOAM_ISLANDS_4, SeafoamIslands4HiddenObjects
+ dbw SEAFOAM_ISLANDS_5, SeafoamIslands5HiddenObjects
+ dbw VIRIDIAN_FOREST, ViridianForestHiddenObjects
+ dbw MT_MOON_3, MtMoon3HiddenObjects
+ dbw SS_ANNE_10, SSAnne10HiddenObjects
+ dbw SS_ANNE_6, SSAnne6HiddenObjects
+ dbw UNDERGROUND_PATH_NS, UndergroundPathNsHiddenObjects
+ dbw UNDERGROUND_PATH_WE, UndergroundPathWeHiddenObjects
+ dbw ROCKET_HIDEOUT_1, RocketHideout1HiddenObjects
+ dbw ROCKET_HIDEOUT_3, RocketHideout3HiddenObjects
+ dbw ROCKET_HIDEOUT_4, RocketHideout4HiddenObjects
+ dbw ROUTE_10, Route10HiddenObjects
+ dbw ROCK_TUNNEL_POKECENTER, RockTunnelPokecenterHiddenObjects
+ dbw POWER_PLANT, PowerPlantHiddenObjects
+ dbw ROUTE_11, Route11HiddenObjects
+ dbw ROUTE_12, Route12HiddenObjects
+ dbw ROUTE_13, Route13HiddenObjects
+ dbw ROUTE_15_GATE_2F, Route15Gate2FHiddenObjects
+ dbw ROUTE_17, Route17HiddenObjects
+ dbw ROUTE_23, Route23HiddenObjects
+ dbw VICTORY_ROAD_2, VictoryRoad2HiddenObjects
+ dbw ROUTE_25, Route25HiddenObjects
+ dbw BILLS_HOUSE, BillsHouseHiddenObjects
+ dbw ROUTE_4, Route4HiddenObjects
+ dbw MT_MOON_POKECENTER, MtMoonPokecenterHiddenObjects
+ dbw ROUTE_9, Route9HiddenObjects
+ dbw TRADE_CENTER, TradeCenterHiddenObjects
+ dbw COLOSSEUM, ColosseumHiddenObjects
+ dbw INDIGO_PLATEAU, IndigoPlateauHiddenObjects
+ dbw INDIGO_PLATEAU_LOBBY, IndigoPlateauLobbyHiddenObjects
+ dbw COPYCATS_HOUSE_2F, CopycatsHouse2FHiddenObjects
+ dbw FIGHTING_DOJO, FightingDojoHiddenObjects
+ dbw SAFFRON_GYM, SaffronGymHiddenObjects
+ dbw SAFFRON_POKECENTER, SaffronPokecenterHiddenObjects
+ dbw REDS_HOUSE_2F, RedsHouse2FHiddenObjects
+ dbw BLUES_HOUSE, BluesHouseHiddenObjects
+ dbw OAKS_LAB, OaksLabHiddenObjects
+ dbw VIRIDIAN_CITY, ViridianCityHiddenObjects
+ dbw VIRIDIAN_POKECENTER, ViridianPokecenterHiddenObjects
+ dbw VIRIDIAN_SCHOOL, ViridianSchoolHiddenObjects
+ dbw VIRIDIAN_GYM, ViridianGymHiddenObjects
+ dbw MUSEUM_1F, Museum1FHiddenObjects
+ dbw PEWTER_GYM, PewterGymHiddenObjects
+ dbw PEWTER_POKECENTER, PewterPokecenterHiddenObjects
+ dbw CERULEAN_CITY, CeruleanCityHiddenObjects
+ dbw CERULEAN_POKECENTER, CeruleanPokecenterHiddenObjects
+ dbw CERULEAN_GYM, CeruleanGymHiddenObjects
+ dbw BIKE_SHOP, BikeShopHiddenObjects
+ dbw UNKNOWN_DUNGEON_1, UnknownDungeon1HiddenObjects
+ dbw LAVENDER_POKECENTER, LavenderPokecenterHiddenObjects
+ dbw POKEMONTOWER_5, Pokemontower5HiddenObjects
+ dbw LAVENDER_HOUSE_1, LavenderHouse1HiddenObjects
+ dbw VERMILION_CITY, VermilionCityHiddenObjects
+ dbw VERMILION_POKECENTER, VermilionPokecenterHiddenObjects
+ dbw POKEMON_FAN_CLUB, PokemonFanClubHiddenObjects
+ dbw VERMILION_GYM, VermilionGymHiddenObjects
+ dbw CELADON_CITY, CeladonCityHiddenObjects
+ dbw CELADON_HOTEL, CeladonHotelHiddenObjects
+ dbw CELADON_MANSION_2, CeladonMansion2HiddenObjects
+ dbw CELADON_MANSION_5, CeladonMansion5HiddenObjects
+ dbw CELADON_POKECENTER, CeladonPokecenterHiddenObjects
+ dbw CELADON_GYM, CeladonGymHiddenObjects
+ dbw GAME_CORNER, GameCornerHiddenObjects
+ dbw FUCHSIA_POKECENTER, FuchsiaPokecenterHiddenObjects
+ dbw SAFARI_ZONE_ENTRANCE, SafariZoneEntranceHiddenObjects
+ dbw FUCHSIA_GYM, FuchsiaGymHiddenObjects
+ dbw MANSION_1, Mansion1HiddenObjects
+ dbw CINNABAR_GYM, CinnabarGymHiddenObjects
+ dbw CINNABAR_LAB_4, CinnabarLab4HiddenObjects
+ dbw CINNABAR_POKECENTER, CinnabarPokecenterHiddenObjects
+ db $ff
; format: y-coord, x-coord, text id/item id, object routine
-TradeCenterHiddenObjects: ; 46b40 (11:6b40)
- db $04,$05,$d0
- db BANK(CableClubRightGameboy)
- dw CableClubRightGameboy
- db $04,$04,$d0
- db BANK(CableClubLeftGameboy)
- dw CableClubLeftGameboy
- db $FF
-ColosseumHiddenObjects: ; 46b4d (11:6b4d)
- db $04,$05,$d0
- db BANK(CableClubRightGameboy)
- dw CableClubRightGameboy
- db $04,$04,$d0
- db BANK(CableClubLeftGameboy)
- dw CableClubLeftGameboy
- db $FF
-RedsHouse2FHiddenObjects: ; 46b5a (11:6b5a)
- db $01,$00,$04
- dbw BANK(OpenRedsPC), OpenRedsPC
- db $05,$03,$d0
- dbw BANK(PrintRedsNESText), PrintRedsNESText
- db $FF
-BluesHouseHiddenObjects: ; 46b67 (11:6b67)
- db $01,$00,$04
- db BANK(PrintBookcaseText)
- dw PrintBookcaseText
- db $01,$01,$04
- db BANK(PrintBookcaseText)
- dw PrintBookcaseText
- db $01,$07,$04
- db BANK(PrintBookcaseText)
- dw PrintBookcaseText
- db $FF
-OaksLabHiddenObjects: ; 46b7a (11:6b7a)
- db $00,$04,$04
- db BANK(DisplayOakLabLeftPoster)
- dw DisplayOakLabLeftPoster
- db $00,$05,$04
- db BANK(DisplayOakLabRightPoster)
- dw DisplayOakLabRightPoster
- db $01,$00,$04
- db BANK(DisplayOakLabEmailText)
- dw DisplayOakLabEmailText
- db $01,$01,$04
- db BANK(DisplayOakLabEmailText)
- dw DisplayOakLabEmailText
- db $FF
-ViridianPokecenterHiddenObjects: ; 46b93 (11:6b93)
- db $04,$00,$08
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-ViridianMartHiddenObjects: ; 46ba0 (11:6ba0)
- db $FF
-ViridianSchoolHiddenObjects: ; 46ba1 (11:6ba1)
- db $04,$03,(ViridianSchoolNotebook_id - TextPredefs) / 2 + 1
- db Bank(PrintNotebookText)
- dw PrintNotebookText
- db $00,$03,(ViridianSchoolBlackboard_id - TextPredefs) / 2 + 1
- db BANK(PrintBlackboardLinkCableText)
- dw PrintBlackboardLinkCableText
- db $FF
-ViridianGymHiddenObjects: ; 46bae (11:6bae)
- db $0f,$0f,$04
- dbw BANK(GymStatues),GymStatues
- db $0f,$12,$04
- dbw BANK(GymStatues),GymStatues
- db $FF
-Museum1FHiddenObjects: ; 46bbb (11:6bbb)
- db $03,$02,$04
- dbw BANK(AerodactylFossil), AerodactylFossil
- db $06,$02,$04
- dbw BANK(KabutopsFossil), KabutopsFossil
- db $FF
-PewterGymHiddenObjects: ; 46bc8 (11:6bc8)
- db $0a,$03,$04
- dbw BANK(GymStatues),GymStatues
- db $0a,$06,$04
- dbw BANK(GymStatues),GymStatues
- db $FF
-PewterMartHiddenObjects: ; 46bd5 (11:6bd5)
- db $FF
-PewterPokecenterHiddenObjects: ; 46bd6 (11:6bd6)
- db $04,$00,$08
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-CeruleanPokecenterHiddenObjects: ; 46be3 (11:6be3)
- db $04,$00,$08
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-CeruleanGymHiddenObjects: ; 46bf0 (11:6bf0)
- db $0b,$03,$04
- dbw BANK(GymStatues),GymStatues
- db $0b,$06,$04
- dbw BANK(GymStatues),GymStatues
- db $FF
-CeruleanMartHiddenObjects: ; 46bfd (11:6bfd)
- db $FF
-LavenderPokecenterHiddenObjects: ; 46bfe (11:6bfe)
- db $04,$00,$08
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-VermilionPokecenterHiddenObjects: ; 46c0b (11:6c0b)
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $04,$00,$04
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $FF
-VermilionGymHiddenObjects: ; 46c18 (11:6c18)
- db $0e,$03,$04
- dbw BANK(GymStatues), GymStatues
- db $0e,$06,$04
- dbw BANK(GymStatues), GymStatues
- db $01,$06,$00
- dbw BANK(PrintTrashText), PrintTrashText
- db $07,$01,$00
- dbw BANK(GymTrashScript), GymTrashScript
- db $09,$01,$01
- dbw BANK(GymTrashScript), GymTrashScript
- db $0b,$01,$02
- dbw BANK(GymTrashScript), GymTrashScript
- db $07,$03,$03
- dbw BANK(GymTrashScript), GymTrashScript
- db $09,$03,$04
- dbw BANK(GymTrashScript), GymTrashScript
- db $0b,$03,$05
- dbw BANK(GymTrashScript), GymTrashScript
- db $07,$05,$06
- dbw BANK(GymTrashScript), GymTrashScript
- db $09,$05,$07
- dbw BANK(GymTrashScript), GymTrashScript
- db $0b,$05,$08
- dbw BANK(GymTrashScript), GymTrashScript
- db $07,$07,$09
- dbw BANK(GymTrashScript), GymTrashScript
- db $09,$07,$0a
- dbw BANK(GymTrashScript), GymTrashScript
- db $0b,$07,$0b
- dbw BANK(GymTrashScript), GymTrashScript
- db $07,$09,$0c
- dbw BANK(GymTrashScript), GymTrashScript
- db $09,$09,$0d
- dbw BANK(GymTrashScript), GymTrashScript
- db $0b,$09,$0e
- dbw BANK(GymTrashScript), GymTrashScript
- db $FF
-CeladonMansion2HiddenObjects: ; 46c85 (11:6c85)
- db $05,$00,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-CeladonPokecenterHiddenObjects: ; 46c8c (11:6c8c)
- db $04,$00,$08
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-CeladonGymHiddenObjects: ; 46c99 (11:6c99)
- db $0f,$03,$04
- dbw BANK(GymStatues),GymStatues
- db $0f,$06,$04
- dbw BANK(GymStatues),GymStatues
- db $FF
-GameCornerHiddenObjects: ; 46ca6 (11:6ca6)
- db $0f,$12,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0e,$12,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0d,$12,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0c,$12,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0b,$12,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0a,$12,$ff ; "Someone's Keys"
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0a,$0d,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0b,$0d,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0c,$0d,$fe ; "Out To Lunch"
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0d,$0d,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0e,$0d,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0f,$0d,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0f,$0c,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0e,$0c,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0d,$0c,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0c,$0c,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0b,$0c,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0a,$0c,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0a,$07,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0b,$07,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0c,$07,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0d,$07,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0e,$07,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0f,$07,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0f,$06,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0e,$06,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0d,$06,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0c,$06,$fd ; "Out Of Order"
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0b,$06,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0a,$06,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0a,$01,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0b,$01,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0c,$01,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0d,$01,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0e,$01,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $0f,$01,$d0
- dbw BANK(StartSlotMachine), StartSlotMachine
- db $08,$00,COIN+10
- dbw BANK(HiddenCoins),HiddenCoins
- db $10,$01,COIN+10
- dbw BANK(HiddenCoins),HiddenCoins
- db $0b,$03,COIN+20
- dbw BANK(HiddenCoins),HiddenCoins
- db $0e,$03,COIN+10
- dbw BANK(HiddenCoins),HiddenCoins
- db $0c,$04,COIN+10
- dbw BANK(HiddenCoins),HiddenCoins
- db $0c,$09,COIN+20
- dbw BANK(HiddenCoins),HiddenCoins
- db $0f,$09,COIN+10
- dbw BANK(HiddenCoins),HiddenCoins
- db $0e,$10,COIN+10
- dbw BANK(HiddenCoins),HiddenCoins
- db $10,$0a,COIN+10
- dbw BANK(HiddenCoins),HiddenCoins
- db $07,$0b,COIN+40
- dbw BANK(HiddenCoins),HiddenCoins
- db $08,$0f,COIN+100
- dbw BANK(HiddenCoins),HiddenCoins
- db $0f,$0c,COIN+10
- dbw BANK(HiddenCoins),HiddenCoins
- db $FF
-CeladonHotelHiddenObjects: ; 46dc7 (11:6dc7)
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $04,$00,$08
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $FF
-FuchsiaPokecenterHiddenObjects: ; 46dd4 (11:6dd4)
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $04,$00,$04
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $FF
-FuchsiaGymHiddenObjects: ; 46de1 (11:6de1)
- db $0f,$03,$04
- dbw BANK(GymStatues),GymStatues
- db $0f,$06,$04
- dbw BANK(GymStatues),GymStatues
- db $FF
-CinnabarGymHiddenObjects: ; 46dee (11:6dee)
- db $0d,$11,$04
- dbw BANK(GymStatues),GymStatues
- db $07,$0f,$01
- db Bank(PrintCinnabarQuiz)
- dw PrintCinnabarQuiz
- db $01,$0a,$12
- db Bank(PrintCinnabarQuiz)
- dw PrintCinnabarQuiz
- db $07,$09,$13
- db Bank(PrintCinnabarQuiz)
- dw PrintCinnabarQuiz
- db $0d,$09,$14
- db Bank(PrintCinnabarQuiz)
- dw PrintCinnabarQuiz
- db $0d,$01,$05
- db Bank(PrintCinnabarQuiz)
- dw PrintCinnabarQuiz
- db $07,$01,$16
- db Bank(PrintCinnabarQuiz)
- dw PrintCinnabarQuiz
- db $FF
-CinnabarPokecenterHiddenObjects: ; 46e19 (11:6e19)
- db $04,$00,$04
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-SaffronGymHiddenObjects: ; 46e26 (11:6e26)
- db $0f,$09,$04
- dbw BANK(GymStatues),GymStatues
- db $FF
-MtMoonPokecenterHiddenObjects: ; 46e2d (11:6e2d)
- db $04,$00,$08
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-RockTunnelPokecenterHiddenObjects: ; 46e3a (11:6e3a)
- db $04,$00,$08
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-ViridianForestHiddenObjects: ; 46e47 (11:6e47)
- db $12,$01,POTION
- dbw BANK(HiddenItems),HiddenItems
- db $2a,$10,ANTIDOTE
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-MtMoon3HiddenObjects: ; 46e54 (11:6e54)
- db $0c,$12,MOON_STONE
- dbw BANK(HiddenItems),HiddenItems
- db $09,$21,ETHER
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-IndigoPlateauHiddenObjects: ; 46e61 (11:6e61)
- db $0d,$08,$ff
- db BANK(PrintIndigoPlateauHQText)
- dw PrintIndigoPlateauHQText
- db $0d,$0b,$00
- db BANK(PrintIndigoPlateauHQText)
- dw PrintIndigoPlateauHQText
- db $FF
-Route25HiddenObjects: ; 46e6e (11:6e6e)
- db $03,$26,ETHER
- dbw BANK(HiddenItems),HiddenItems
- db $01,$0a,ELIXER
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-Route9HiddenObjects: ; 46e7b (11:6e7b)
- db $07,$0e,ETHER
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-SSAnne6HiddenObjects: ; 46e82 (11:6e82)
- db $05,$0d,$00
- dbw BANK(PrintTrashText), PrintTrashText
- db $07,$0d,$00
- dbw BANK(PrintTrashText), PrintTrashText
- db $09,$0d,GREAT_BALL
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-SSAnne10HiddenObjects: ; 46e95 (11:6e95)
- db $01,$03,HYPER_POTION
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-Route10HiddenObjects: ; 46e9c (11:6e9c)
- db $11,$09,SUPER_POTION
- dbw BANK(HiddenItems),HiddenItems
- db $35,$10,MAX_ETHER
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-RocketHideout1HiddenObjects: ; 46ea9 (11:6ea9)
- db $0f,$15,PP_UP
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-RocketHideout3HiddenObjects: ; 46eb0 (11:6eb0)
- db $11,$1b,NUGGET
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-RocketHideout4HiddenObjects: ; 46eb7 (11:6eb7)
- db $01,$19,SUPER_POTION
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-SaffronPokecenterHiddenObjects: ; 46ebe (11:6ebe)
- db $04,$00,$04
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-PokemonTower5HiddenObjects: ; 46ecb (11:6ecb)
- db $0c,$04,ELIXER
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-Route13HiddenObjects: ; 46ed2 (11:6ed2)
- db $0e,$01,PP_UP
- dbw BANK(HiddenItems),HiddenItems
- db $0d,$10,CALCIUM
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-SafariZoneEntranceHiddenObjects: ; 46edf (11:6edf)
- db $01,$0a,NUGGET
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-SafariZoneWestHiddenObjects: ; 46ee6 (11:6ee6)
- db $05,$06,REVIVE
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-SilphCo5FHiddenObjects: ; 46eed (11:6eed)
- db $03,$0c,ELIXER
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-SilphCo9FHiddenObjects: ; 46ef4 (11:6ef4)
- db $0f,$02,MAX_POTION
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-CopycatsHouse2FHiddenObjects: ; 46efb (11:6efb)
- db $01,$01,NUGGET
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-UnknownDungeon1HiddenObjects: ; 46f02 (11:6f02)
- db $0b,$0e,RARE_CANDY
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-UnknownDungeon3HiddenObjects: ; 46f09 (11:6f09)
- db $03,$1b,ULTRA_BALL
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-PowerPlantHiddenObjects: ; 46f10 (11:6f10)
- db $10,$11,MAX_ELIXER
- dbw BANK(HiddenItems),HiddenItems
- db $01,$0c,PP_UP
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-SeafoamIslands3HiddenObjects: ; 46f1d (11:6f1d)
- db $0f,$0f,NUGGET
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-SeafoamIslands5HiddenObjects: ; 46f24 (11:6f24)
- db $11,$19,ULTRA_BALL
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-Mansion1HiddenObjects: ; 46f2b (11:6f2b)
- db $10,$08,MOON_STONE
- dbw BANK(HiddenItems),HiddenItems
- db $05,$02,$04
- db BANK(Mansion1Script_Switches)
- dw Mansion1Script_Switches
- db $FF
-Mansion2HiddenObjects: ; 46f38 (11:6f38)
- db $0b,$02,$04
- db BANK(Mansion2Script_Switches)
- dw Mansion2Script_Switches
- db $FF
-Mansion3HiddenObjects: ; 46f3f (11:6f3f)
- db $09,$01,MAX_REVIVE
- dbw BANK(HiddenItems),HiddenItems
- db $05,$0a,$04
- db BANK(Mansion3Script_Switches)
- dw Mansion3Script_Switches
- db $FF
-Mansion4HiddenObjects: ; 46f4c (11:6f4c)
- db $09,$01,RARE_CANDY
- dbw BANK(HiddenItems),HiddenItems
- db $03,$14,$04
- db BANK(Mansion4Script_Switches)
- dw Mansion4Script_Switches
- db $19,$12,$04
- db BANK(Mansion4Script_Switches)
- dw Mansion4Script_Switches
- db $FF
-Route23HiddenObjects: ; 46f5f (11:6f5f)
- db $2c,$09,FULL_RESTORE
- dbw BANK(HiddenItems),HiddenItems
- db $46,$13,ULTRA_BALL
- dbw BANK(HiddenItems),HiddenItems
- db $5a,$08,MAX_ETHER
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-VictoryRoad2HiddenObjects: ; 46f72 (11:6f72)
- db $02,$05,ULTRA_BALL
- dbw BANK(HiddenItems),HiddenItems
- db $07,$1a,FULL_RESTORE
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-Unused6FHiddenObjects: ; 46f7f (11:6f7f)
- db $0b,$0e,MAX_ELIXER
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-BillsHouseHiddenObjects: ; 46f86 (11:6f86)
- db $04,$01,$04
- dbw BANK(BillsHousePC), BillsHousePC
- db $FF
-ViridianCityHiddenObjects: ; 46f8d (11:6f8d)
- db $04,$0e,POTION
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-SafariZoneRestHouse2HiddenObjects: ; 46f94 (11:6f94)
- db $04,$00,$08
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-SafariZoneRestHouse3HiddenObjects: ; 46fa1 (11:6fa1)
- db $04,$00,$08
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-SafariZoneRestHouse4HiddenObjects: ; 46fae (11:6fae)
- db $04,$00,$08
- db Bank(PrintBenchGuyText)
- dw PrintBenchGuyText
- db $03,$0d,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-Route15GateUpstairsHiddenObjects: ; 46fbb (11:6fbb)
- db $02,$01,$04
- db BANK(Route15GateLeftBinoculars)
- dw Route15GateLeftBinoculars
- db $FF
-LavenderHouse1HiddenObjects: ; 46fc2 (11:6fc2)
- db $01,$00,$00
- db BANK(PrintMagazinesText)
- dw PrintMagazinesText
- db $01,$01,$00
- db BANK(PrintMagazinesText)
- dw PrintMagazinesText
- db $01,$07,$00
- db BANK(PrintMagazinesText)
- dw PrintMagazinesText
- db $FF
-CeladonMansion5HiddenObjects: ; 46fd5 (11:6fd5)
- db $00,$03,(LinkCableHelp_id - TextPredefs) / 2 + 1
- db BANK(PrintBlackboardLinkCableText)
- dw PrintBlackboardLinkCableText
- db $00,$04,(LinkCableHelp_id - TextPredefs) / 2 + 1
- db BANK(PrintBlackboardLinkCableText)
- dw PrintBlackboardLinkCableText
- db $04,$03,(TMNotebook_id - TextPredefs) / 2 + 1
- db Bank(PrintNotebookText)
- dw PrintNotebookText
- db $FF
-FightingDojoHiddenObjects: ; 46fe8 (11:6fe8)
- db $09,$03,$04
- db BANK(PrintFightingDojoText)
- dw PrintFightingDojoText
- db $09,$06,$04
- db BANK(PrintFightingDojoText)
- dw PrintFightingDojoText
- db $00,$04,$04
- db BANK(PrintFightingDojoText2)
- dw PrintFightingDojoText2
- db $00,$05,$04
- db BANK(PrintFightingDojoText3)
- dw PrintFightingDojoText3
- db $FF
-IndigoPlateauLobbyHiddenObjects: ; 47001 (11:7001)
- db $07,$0f,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-CinnabarLab4HiddenObjects: ; 47008 (11:7008)
- db $04,$00,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $04,$02,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-BikeShopHiddenObjects: ; 47015 (11:7015)
- db $00,$01,$d0
- dbw BANK(PrintNewBikeText), PrintNewBikeText
- db $01,$02,$d0
- dbw BANK(PrintNewBikeText), PrintNewBikeText
- db $02,$01,$d0
- dbw BANK(PrintNewBikeText), PrintNewBikeText
- db $02,$03,$d0
- dbw BANK(PrintNewBikeText), PrintNewBikeText
- db $04,$00,$d0
- dbw BANK(PrintNewBikeText), PrintNewBikeText
- db $05,$01,$d0
- dbw BANK(PrintNewBikeText), PrintNewBikeText
- db $FF
-Route11HiddenObjects: ; 4703a (11:703a)
- db $05,$30,ESCAPE_ROPE
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-Route12HiddenObjects: ; 47041 (11:7041)
- db $3f,$02,HYPER_POTION
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-SilphCo11FHiddenObjects: ; 47048 (11:7048)
- db $0c,$0a,$04
- db BANK(OpenPokemonCenterPC)
- dw OpenPokemonCenterPC
- db $FF
-Route17HiddenObjects: ; 4704f (11:704f)
- db $0e,$0f,RARE_CANDY
- dbw BANK(HiddenItems),HiddenItems
- db $2d,$08,FULL_RESTORE
- dbw BANK(HiddenItems),HiddenItems
- db $48,$11,PP_UP
- dbw BANK(HiddenItems),HiddenItems
- db $5b,$04,MAX_REVIVE
- dbw BANK(HiddenItems),HiddenItems
- db $79,$08,MAX_ELIXER
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-UndergroundPathNsHiddenObjects: ; 4706e (11:706e)
- db $04,$03,FULL_RESTORE
- dbw BANK(HiddenItems),HiddenItems
- db $22,$04,X_SPECIAL
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-UndergroundPathWeHiddenObjects: ; 4707b (11:707b)
- db $02,$0c,NUGGET
- dbw BANK(HiddenItems),HiddenItems
- db $05,$15,ELIXER
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-CeladonCityHiddenObjects: ; 47088 (11:7088)
- db $0f,$30,PP_UP
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-SeafoamIslands4HiddenObjects: ; 4708f (11:708f)
- db $10,$09,MAX_ELIXER
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-VermilionCityHiddenObjects: ; 47096 (11:7096)
- db $0b,$0e,MAX_ETHER
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-CeruleanCityHiddenObjects: ; 4709d (11:709d)
- db $08,$0f,RARE_CANDY
- dbw BANK(HiddenItems),HiddenItems
- db $FF
-Route4HiddenObjects: ; 470a4 (11:70a4)
- db $03,$28,GREAT_BALL
- dbw BANK(HiddenItems),HiddenItems
- db $FF
+hidden_object: macro
+ db \1, \2, \3
+ dba \4
+ endm
+
+SilphCo11FHiddenObjects:
+ hidden_object 12, 10, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+SilphCo5FHiddenObjects:
+ hidden_object 3, 12, ELIXER, HiddenItems
+ db $ff
+
+SilphCo9FHiddenObjects:
+ hidden_object 15, 2, MAX_POTION, HiddenItems
+ db $ff
+
+Mansion2HiddenObjects:
+ hidden_object 11, 2, SPRITE_FACING_UP, Mansion2Script_Switches
+ db $ff
+
+Mansion3HiddenObjects:
+ hidden_object 9, 1, MAX_REVIVE, HiddenItems
+ hidden_object 5, 10, SPRITE_FACING_UP, Mansion3Script_Switches
+ db $ff
+
+Mansion4HiddenObjects:
+ hidden_object 9, 1, RARE_CANDY, HiddenItems
+ hidden_object 3, 20, SPRITE_FACING_UP, Mansion4Script_Switches
+ hidden_object 25, 18, SPRITE_FACING_UP, Mansion4Script_Switches
+ db $ff
+
+SafariZoneWestHiddenObjects:
+ hidden_object 5, 6, REVIVE, HiddenItems
+ db $ff
+
+UnknownDungeon2HiddenObjects:
+ hidden_object 13, 16, PP_UP, HiddenItems
+ db $ff
+
+UnknownDungeon3HiddenObjects:
+ hidden_object 14, 8, PP_UP, HiddenItems
+ db $ff
+
+UnusedMap6FHiddenObjects:
+ hidden_object 11, 14, MAX_ELIXER, HiddenItems
+ db $ff
+
+SeafoamIslands3HiddenObjects:
+ hidden_object 15, 15, NUGGET, HiddenItems
+ db $ff
+
+SeafoamIslands4HiddenObjects:
+ hidden_object 16, 9, MAX_ELIXER, HiddenItems
+ db $ff
+
+SeafoamIslands5HiddenObjects:
+ hidden_object 17, 25, ULTRA_BALL, HiddenItems
+ db $ff
+
+ViridianForestHiddenObjects:
+ hidden_object 18, 1, POTION, HiddenItems
+ hidden_object 42, 16, ANTIDOTE, HiddenItems
+ db $ff
+
+MtMoon3HiddenObjects:
+ hidden_object 12, 18, MOON_STONE, HiddenItems
+ hidden_object 9, 33, ETHER, HiddenItems
+ db $ff
+
+SSAnne10HiddenObjects:
+ hidden_object 1, 3, HYPER_POTION, HiddenItems
+ db $ff
+
+SSAnne6HiddenObjects:
+ hidden_object 5, 13, SPRITE_FACING_DOWN, PrintTrashText
+ hidden_object 7, 13, SPRITE_FACING_DOWN, PrintTrashText
+ hidden_object 9, 13, GREAT_BALL, HiddenItems
+ db $ff
+
+UndergroundPathNsHiddenObjects:
+ hidden_object 4, 3, FULL_RESTORE, HiddenItems
+ hidden_object 34, 4, X_SPECIAL, HiddenItems
+ db $ff
+
+UndergroundPathWeHiddenObjects:
+ hidden_object 2, 12, NUGGET, HiddenItems
+ hidden_object 5, 21, ELIXER, HiddenItems
+ db $ff
+
+RocketHideout1HiddenObjects:
+ hidden_object 15, 21, PP_UP, HiddenItems
+ db $ff
+
+RocketHideout3HiddenObjects:
+ hidden_object 17, 27, NUGGET, HiddenItems
+ db $ff
+
+RocketHideout4HiddenObjects:
+ hidden_object 1, 25, SUPER_POTION, HiddenItems
+ db $ff
+
+Route10HiddenObjects:
+ hidden_object 17, 9, SUPER_POTION, HiddenItems
+ hidden_object 53, 16, MAX_ETHER, HiddenItems
+ db $ff
+
+RockTunnelPokecenterHiddenObjects:
+ hidden_object 4, 0, SPRITE_FACING_LEFT, PrintBenchGuyText
+ hidden_object 3, 13, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+PowerPlantHiddenObjects:
+ hidden_object 16, 17, MAX_ELIXER, HiddenItems
+ hidden_object 1, 12, PP_UP, HiddenItems
+ db $ff
+
+Route11HiddenObjects:
+ hidden_object 5, 48, ESCAPE_ROPE, HiddenItems
+ db $ff
+
+Route12HiddenObjects:
+ hidden_object 63, 2, HYPER_POTION, HiddenItems
+ db $ff
+
+Route13HiddenObjects:
+ hidden_object 14, 1, PP_UP, HiddenItems
+ hidden_object 13, 16, CALCIUM, HiddenItems
+ db $ff
+
+Route15Gate2FHiddenObjects:
+ hidden_object 2, 1, SPRITE_FACING_UP, Route15GateLeftBinoculars
+ db $ff
+
+Route17HiddenObjects:
+ hidden_object 14, 15, RARE_CANDY, HiddenItems
+ hidden_object 45, 8, FULL_RESTORE, HiddenItems
+ hidden_object 72, 17, PP_UP, HiddenItems
+ hidden_object 91, 4, MAX_REVIVE, HiddenItems
+ hidden_object 121, 8, MAX_ELIXER, HiddenItems
+ db $ff
+
+Route23HiddenObjects:
+ hidden_object 44, 9, FULL_RESTORE, HiddenItems
+ hidden_object 70, 19, ULTRA_BALL, HiddenItems
+ hidden_object 90, 8, MAX_ETHER, HiddenItems
+ db $ff
+
+VictoryRoad2HiddenObjects:
+ hidden_object 2, 5, ULTRA_BALL, HiddenItems
+ hidden_object 7, 26, FULL_RESTORE, HiddenItems
+ db $ff
+
+Route25HiddenObjects:
+ hidden_object 3, 38, ETHER, HiddenItems
+ hidden_object 1, 10, ELIXER, HiddenItems
+ db $ff
+
+BillsHouseHiddenObjects:
+ hidden_object 4, 1, SPRITE_FACING_UP, BillsHousePC
+ db $ff
+
+Route4HiddenObjects:
+ hidden_object 3, 40, GREAT_BALL, HiddenItems
+ db $ff
+
+MtMoonPokecenterHiddenObjects:
+ hidden_object 4, 0, SPRITE_FACING_LEFT, PrintBenchGuyText
+ hidden_object 3, 13, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+Route9HiddenObjects:
+ hidden_object 7, 14, ETHER, HiddenItems
+ db $ff
+
+TradeCenterHiddenObjects:
+ hidden_object 4, 5, $d0, CableClubRightGameboy
+ hidden_object 4, 4, $d0, CableClubLeftGameboy
+ db $ff
+
+ColosseumHiddenObjects:
+ hidden_object 4, 5, $d0, CableClubRightGameboy
+ hidden_object 4, 4, $d0, CableClubLeftGameboy
+ db $ff
+
+IndigoPlateauHiddenObjects:
+ hidden_object 13, 8, $ff, PrintIndigoPlateauHQText
+ hidden_object 13, 11, SPRITE_FACING_DOWN, PrintIndigoPlateauHQText
+ db $ff
+
+IndigoPlateauLobbyHiddenObjects:
+ hidden_object 7, 15, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+CopycatsHouse2FHiddenObjects:
+ hidden_object 1, 1, NUGGET, HiddenItems
+ db $ff
+
+FightingDojoHiddenObjects:
+ hidden_object 9, 3, SPRITE_FACING_UP, PrintFightingDojoText
+ hidden_object 9, 6, SPRITE_FACING_UP, PrintFightingDojoText
+ hidden_object 0, 4, SPRITE_FACING_UP, PrintFightingDojoText2
+ hidden_object 0, 5, SPRITE_FACING_UP, PrintFightingDojoText3
+ db $ff
+
+SaffronGymHiddenObjects:
+ hidden_object 15, 9, SPRITE_FACING_UP, GymStatues
+ db $ff
+
+SaffronPokecenterHiddenObjects:
+ hidden_object 4, 0, SPRITE_FACING_UP, PrintBenchGuyText
+ hidden_object 3, 13, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+RedsHouse2FHiddenObjects:
+ hidden_object 1, 0, SPRITE_FACING_UP, OpenRedsPC
+ hidden_object 5, 3, $d0, PrintRedsNESText
+ db $ff
+
+BluesHouseHiddenObjects:
+ hidden_object 1, 0, SPRITE_FACING_UP, PrintBookcaseText
+ hidden_object 1, 1, SPRITE_FACING_UP, PrintBookcaseText
+ hidden_object 1, 7, SPRITE_FACING_UP, PrintBookcaseText
+ db $ff
+
+OaksLabHiddenObjects:
+ hidden_object 0, 4, SPRITE_FACING_UP, DisplayOakLabLeftPoster
+ hidden_object 0, 5, SPRITE_FACING_UP, DisplayOakLabRightPoster
+ hidden_object 1, 0, SPRITE_FACING_UP, DisplayOakLabEmailText
+ hidden_object 1, 1, SPRITE_FACING_UP, DisplayOakLabEmailText
+ db $ff
+
+ViridianCityHiddenObjects:
+ hidden_object 4, 14, POTION, HiddenItems
+ db $ff
+
+ViridianPokecenterHiddenObjects:
+ hidden_object 4, 0, SPRITE_FACING_LEFT, PrintBenchGuyText
+ hidden_object 3, 13, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+ViridianSchoolHiddenObjects:
+ hidden_object 4, 3, (ViridianSchoolNotebook_id - TextPredefs) / 2 + 1, PrintNotebookText
+ hidden_object 0, 3, (ViridianSchoolBlackboard_id - TextPredefs) / 2 + 1, PrintBlackboardLinkCableText
+ db $ff
+
+ViridianGymHiddenObjects:
+ hidden_object 15, 15, SPRITE_FACING_UP, GymStatues
+ hidden_object 15, 18, SPRITE_FACING_UP, GymStatues
+ db $ff
+
+Museum1FHiddenObjects:
+ hidden_object 3, 2, SPRITE_FACING_UP, AerodactylFossil
+ hidden_object 6, 2, SPRITE_FACING_UP, KabutopsFossil
+ db $ff
+
+PewterGymHiddenObjects:
+ hidden_object 10, 3, SPRITE_FACING_UP, GymStatues
+ hidden_object 10, 6, SPRITE_FACING_UP, GymStatues
+ db $ff
+
+PewterPokecenterHiddenObjects:
+ hidden_object 4, 0, SPRITE_FACING_LEFT, PrintBenchGuyText
+ hidden_object 3, 13, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+CeruleanCityHiddenObjects:
+ hidden_object 8, 15, RARE_CANDY, HiddenItems
+ db $ff
+
+CeruleanPokecenterHiddenObjects:
+ hidden_object 4, 0, SPRITE_FACING_LEFT, PrintBenchGuyText
+ hidden_object 3, 13, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+CeruleanGymHiddenObjects:
+ hidden_object 11, 3, SPRITE_FACING_UP, GymStatues
+ hidden_object 11, 6, SPRITE_FACING_UP, GymStatues
+ db $ff
+
+BikeShopHiddenObjects:
+ hidden_object 0, 1, $d0, PrintNewBikeText
+ hidden_object 1, 2, $d0, PrintNewBikeText
+ hidden_object 2, 1, $d0, PrintNewBikeText
+ hidden_object 2, 3, $d0, PrintNewBikeText
+ hidden_object 4, 0, $d0, PrintNewBikeText
+ hidden_object 5, 1, $d0, PrintNewBikeText
+ db $ff
+
+UnknownDungeon1HiddenObjects:
+ hidden_object 7, 18, PP_UP, HiddenItems
+ db $ff
+
+LavenderPokecenterHiddenObjects:
+ hidden_object 4, 0, SPRITE_FACING_LEFT, PrintBenchGuyText
+ hidden_object 3, 13, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+Pokemontower5HiddenObjects:
+ hidden_object 12, 4, ELIXER, HiddenItems
+ db $ff
+
+LavenderHouse1HiddenObjects:
+ hidden_object 1, 0, SPRITE_FACING_DOWN, PrintMagazinesText
+ hidden_object 1, 1, SPRITE_FACING_DOWN, PrintMagazinesText
+ hidden_object 1, 7, SPRITE_FACING_DOWN, PrintMagazinesText
+ db $ff
+
+VermilionCityHiddenObjects:
+ hidden_object 11, 14, MAX_ETHER, HiddenItems
+ db $ff
+
+VermilionPokecenterHiddenObjects:
+ hidden_object 3, 13, SPRITE_FACING_UP, OpenPokemonCenterPC
+ hidden_object 4, 0, SPRITE_FACING_UP, PrintBenchGuyText
+ db $ff
+
+PokemonFanClubHiddenObjects:
+ hidden_object 0, 1, SPRITE_FACING_UP, FanClubPicture1
+ hidden_object 0, 6, SPRITE_FACING_UP, FanClubPicture2
+ db $ff
+
+VermilionGymHiddenObjects:
+ hidden_object 14, 3, SPRITE_FACING_UP, GymStatues
+ hidden_object 14, 6, SPRITE_FACING_UP, GymStatues
+ hidden_object 1, 6, SPRITE_FACING_DOWN, PrintTrashText
+ hidden_object 7, 1, 0, GymTrashScript
+ hidden_object 9, 1, 1, GymTrashScript
+ hidden_object 11, 1, 2, GymTrashScript
+ hidden_object 7, 3, 3, GymTrashScript
+ hidden_object 9, 3, 4, GymTrashScript
+ hidden_object 11, 3, 5, GymTrashScript
+ hidden_object 7, 5, 6, GymTrashScript
+ hidden_object 9, 5, 7, GymTrashScript
+ hidden_object 11, 5, 8, GymTrashScript
+ hidden_object 7, 7, 9, GymTrashScript
+ hidden_object 9, 7, 10, GymTrashScript
+ hidden_object 11, 7, 11, GymTrashScript
+ hidden_object 7, 9, 12, GymTrashScript
+ hidden_object 9, 9, 13, GymTrashScript
+ hidden_object 11, 9, 14, GymTrashScript
+ db $ff
+
+CeladonCityHiddenObjects:
+ hidden_object 15, 48, PP_UP, HiddenItems
+ db $ff
+
+CeladonHotelHiddenObjects:
+ hidden_object 4, 0, SPRITE_FACING_LEFT, PrintBenchGuyText
+ db $ff
+
+CeladonMansion2HiddenObjects:
+ hidden_object 5, 0, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+CeladonMansion5HiddenObjects:
+ hidden_object 0, 3, (LinkCableHelp_id - TextPredefs) / 2 + 1, PrintBlackboardLinkCableText
+ hidden_object 0, 4, (LinkCableHelp_id - TextPredefs) / 2 + 1, PrintBlackboardLinkCableText
+ hidden_object 4, 3, (TMNotebook_id - TextPredefs) / 2 + 1, PrintNotebookText
+ db $ff
+
+CeladonPokecenterHiddenObjects:
+ hidden_object 4, 0, SPRITE_FACING_LEFT, PrintBenchGuyText
+ hidden_object 3, 13, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+CeladonGymHiddenObjects:
+ hidden_object 15, 3, SPRITE_FACING_UP, GymStatues
+ hidden_object 15, 6, SPRITE_FACING_UP, GymStatues
+ db $ff
+
+GameCornerHiddenObjects:
+ hidden_object 15, 18, $d0, StartSlotMachine
+ hidden_object 14, 18, $d0, StartSlotMachine
+ hidden_object 13, 18, $d0, StartSlotMachine
+ hidden_object 12, 18, $d0, StartSlotMachine
+ hidden_object 11, 18, $d0, StartSlotMachine
+ hidden_object 10, 18, $ff, StartSlotMachine ; "Someone's Keys"
+ hidden_object 10, 13, $d0, StartSlotMachine
+ hidden_object 11, 13, $d0, StartSlotMachine
+ hidden_object 12, 13, $fe, StartSlotMachine ; "Out To Lunch"
+ hidden_object 13, 13, $d0, StartSlotMachine
+ hidden_object 14, 13, $d0, StartSlotMachine
+ hidden_object 15, 13, $d0, StartSlotMachine
+ hidden_object 15, 12, $d0, StartSlotMachine
+ hidden_object 14, 12, $d0, StartSlotMachine
+ hidden_object 13, 12, $d0, StartSlotMachine
+ hidden_object 12, 12, $d0, StartSlotMachine
+ hidden_object 11, 12, $d0, StartSlotMachine
+ hidden_object 10, 12, $d0, StartSlotMachine
+ hidden_object 10, 7, $d0, StartSlotMachine
+ hidden_object 11, 7, $d0, StartSlotMachine
+ hidden_object 12, 7, $d0, StartSlotMachine
+ hidden_object 13, 7, $d0, StartSlotMachine
+ hidden_object 14, 7, $d0, StartSlotMachine
+ hidden_object 15, 7, $d0, StartSlotMachine
+ hidden_object 15, 6, $d0, StartSlotMachine
+ hidden_object 14, 6, $d0, StartSlotMachine
+ hidden_object 13, 6, $d0, StartSlotMachine
+ hidden_object 12, 6, $fd, StartSlotMachine ; "Out Of Order"
+ hidden_object 11, 6, $d0, StartSlotMachine
+ hidden_object 10, 6, $d0, StartSlotMachine
+ hidden_object 10, 1, $d0, StartSlotMachine
+ hidden_object 11, 1, $d0, StartSlotMachine
+ hidden_object 12, 1, $d0, StartSlotMachine
+ hidden_object 13, 1, $d0, StartSlotMachine
+ hidden_object 14, 1, $d0, StartSlotMachine
+ hidden_object 15, 1, $d0, StartSlotMachine
+ hidden_object 8, 0, COIN + 10, HiddenCoins
+ hidden_object 16, 1, COIN + 10, HiddenCoins
+ hidden_object 11, 3, COIN + 20, HiddenCoins
+ hidden_object 14, 3, COIN + 10, HiddenCoins
+ hidden_object 12, 4, COIN + 10, HiddenCoins
+ hidden_object 12, 9, COIN + 20, HiddenCoins
+ hidden_object 15, 9, COIN + 10, HiddenCoins
+ hidden_object 14, 16, COIN + 10, HiddenCoins
+ hidden_object 16, 10, COIN + 10, HiddenCoins
+ hidden_object 7, 11, COIN + 40, HiddenCoins
+ hidden_object 8, 15, COIN + 100, HiddenCoins
+ hidden_object 15, 12, COIN + 10, HiddenCoins
+ db $ff
+
+FuchsiaPokecenterHiddenObjects:
+ hidden_object 3, 13, SPRITE_FACING_UP, OpenPokemonCenterPC
+ hidden_object 4, 0, SPRITE_FACING_UP, PrintBenchGuyText
+ db $ff
+
+SafariZoneEntranceHiddenObjects:
+ hidden_object 1, 10, NUGGET, HiddenItems
+ db $ff
+
+FuchsiaGymHiddenObjects:
+ hidden_object 15, 3, SPRITE_FACING_UP, GymStatues
+ hidden_object 15, 6, SPRITE_FACING_UP, GymStatues
+ db $ff
+
+Mansion1HiddenObjects:
+ hidden_object 16, 8, MOON_STONE, HiddenItems
+ hidden_object 5, 2, SPRITE_FACING_UP, Mansion1Script_Switches
+ db $ff
+
+CinnabarGymHiddenObjects:
+ hidden_object 13, 17, SPRITE_FACING_UP, GymStatues
+ hidden_object 7, 15, (0 << 4) | 1, PrintCinnabarQuiz
+ hidden_object 1, 10, (1 << 4) | 2, PrintCinnabarQuiz
+ hidden_object 7, 9, (1 << 4) | 3, PrintCinnabarQuiz
+ hidden_object 13, 9, (1 << 4) | 4, PrintCinnabarQuiz
+ hidden_object 13, 1, (0 << 4) | 5, PrintCinnabarQuiz
+ hidden_object 7, 1, (1 << 4) | 6, PrintCinnabarQuiz
+ db $ff
+
+CinnabarLab4HiddenObjects:
+ hidden_object 4, 0, SPRITE_FACING_UP, OpenPokemonCenterPC
+ hidden_object 4, 2, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+CinnabarPokecenterHiddenObjects: ; 6cc3
+ hidden_object 4, 0, SPRITE_FACING_UP, PrintBenchGuyText
+ hidden_object 3, 13, SPRITE_FACING_UP, OpenPokemonCenterPC
+ db $ff
+
+; 6cd0
diff --git a/data/hide_show_data.asm b/data/hide_show_data.asm
index 4e3fe2c2..71a76e47 100755
--- a/data/hide_show_data.asm
+++ b/data/hide_show_data.asm
@@ -343,7 +343,7 @@ MapHS2D: ; c925 (3:4925)
MapHS34: ; c92b (3:492b)
db MUSEUM_1F,$05,Show
MapHS3F: ; c92e (3:492e) ; bulbasaur adoption house
- db CERULEAN_HOUSE,$02,Show
+ db CERULEAN_HOUSE_1,$02,Show
MapHSE4: ; c931 (3:4931)
db UNKNOWN_DUNGEON_1,$01,Show
db UNKNOWN_DUNGEON_1,$02,Show
diff --git a/data/mapHeaders/beach_house.asm b/data/mapHeaders/beach_house.asm
index 99d237f6..04652643 100644
--- a/data/mapHeaders/beach_house.asm
+++ b/data/mapHeaders/beach_house.asm
@@ -1,4 +1,4 @@
-BeachHouse_h:
+BeachHouse_h: ; f220e (3c:620e)
db BEACH_HOUSE_TILESET
db BEACH_HOUSE_HEIGHT, BEACH_HOUSE_WIDTH ; dimensions (y, x)
diff --git a/data/mapHeaders/route5.asm b/data/mapHeaders/route5.asm
index d35a8dab..1b8c3ee1 100755
--- a/data/mapHeaders/route5.asm
+++ b/data/mapHeaders/route5.asm
@@ -1,4 +1,4 @@
-Route5_h: ; 0x54581 to 0x545a3 (34 bytes) (id=16)
+Route5_h: ; 0x54589 to 0x545ab (34 bytes) (id=16)
db OVERWORLD ; tileset
db ROUTE_5_HEIGHT, ROUTE_5_WIDTH ; dimensions (y, x)
dw Route5Blocks, Route5TextPointers, Route5Script ; blocks, texts, scripts
diff --git a/data/mapObjects/blueshouse.asm b/data/mapObjects/blueshouse.asm
index 43ba02e4..3dfce6e1 100755
--- a/data/mapObjects/blueshouse.asm
+++ b/data/mapObjects/blueshouse.asm
@@ -8,9 +8,9 @@ BluesHouseObject: ; 19bce (6:5bce)
db $0 ; signs
db $3 ; objects
- object SPRITE_DAISY, $2, $3, STAY, RIGHT, $1 ; Daisy, sitting by map
- object SPRITE_DAISY, $6, $4, WALK, $1, $2, $0 ; Daisy, walking around
- object SPRITE_BOOK_MAP_DEX, $3, $3, STAY, NONE, $3, $0 ; map on table
+ object SPRITE_DAISY, $2, $3, STAY, RIGHT, $81, $0 ; Daisy, sitting by map
+ object SPRITE_DAISY, $6, $4, WALK, $1, $82, $0 ; Daisy, walking around
+ object SPRITE_BOOK_MAP_DEX, $3, $3, STAY, NONE, $83, $0 ; map on table
; warp-to
EVENT_DISP BLUES_HOUSE_WIDTH, $7, $2
diff --git a/data/mapObjects/ceruleancity.asm b/data/mapObjects/ceruleancity.asm
index 8c429695..ff0f2c66 100755
--- a/data/mapObjects/ceruleancity.asm
+++ b/data/mapObjects/ceruleancity.asm
@@ -1,17 +1,17 @@
CeruleanCityObject: ; 0x18786 (size=170)
- db $f ; border block
+ db $a ; border block
db $a ; warps
db $b, $1b, $0, TRASHED_HOUSE
- db $f, $d, $0, CERULEAN_HOUSE
+ db $f, $d, $0, CERULEAN_HOUSE_1
db $11, $13, $0, CERULEAN_POKECENTER
db $13, $1e, $0, CERULEAN_GYM
db $19, $d, $0, BIKE_SHOP
db $19, $19, $0, CERULEAN_MART
db $b, $4, $0, UNKNOWN_DUNGEON_1
db $9, $1b, $2, TRASHED_HOUSE
- db $b, $9, $1, CERULEAN_HOUSE_3
- db $9, $9, $0, CERULEAN_HOUSE_3
+ db $b, $9, $1, CERULEAN_HOUSE_2
+ db $9, $9, $0, CERULEAN_HOUSE_2
db $6 ; signs
db $13, $17, $c ; CeruleanCityText12
@@ -27,21 +27,21 @@ CeruleanCityObject: ; 0x18786 (size=170)
object SPRITE_BLACK_HAIR_BOY_1, $1f, $14, STAY, DOWN, $3 ; person
object SPRITE_BLACK_HAIR_BOY_2, $f, $12, WALK, $1, $4 ; person
object SPRITE_BLACK_HAIR_BOY_2, $9, $15, WALK, $2, $5 ; person
- object SPRITE_GUARD, $1c, $c, STAY, DOWN, $6 ; person
+ object SPRITE_OFFICER_JENNY, $1c, $c, STAY, DOWN, $6 ; person
object SPRITE_LASS, $1d, $1a, STAY, LEFT, $7 ; person
- object SPRITE_SLOWBRO, $1c, $1a, STAY, DOWN, $8 ; person
+ object SPRITE_BALL, $1c, $1a, STAY, DOWN, $8 ; person
object SPRITE_LASS, $9, $1b, WALK, $2, $9 ; person
object SPRITE_BLACK_HAIR_BOY_2, $4, $c, STAY, DOWN, $a ; person
- object SPRITE_GUARD, $1b, $c, STAY, DOWN, $b ; person
+ object SPRITE_OFFICER_JENNY, $1b, $c, STAY, DOWN, $b ; person
; warp-to
EVENT_DISP CERULEAN_CITY_WIDTH, $b, $1b ; TRASHED_HOUSE
- EVENT_DISP CERULEAN_CITY_WIDTH, $f, $d ; CERULEAN_HOUSE
+ EVENT_DISP CERULEAN_CITY_WIDTH, $f, $d ; CERULEAN_HOUSE_1
EVENT_DISP CERULEAN_CITY_WIDTH, $11, $13 ; CERULEAN_POKECENTER
EVENT_DISP CERULEAN_CITY_WIDTH, $13, $1e ; CERULEAN_GYM
EVENT_DISP CERULEAN_CITY_WIDTH, $19, $d ; BIKE_SHOP
EVENT_DISP CERULEAN_CITY_WIDTH, $19, $19 ; CERULEAN_MART
EVENT_DISP CERULEAN_CITY_WIDTH, $b, $4 ; UNKNOWN_DUNGEON_1
EVENT_DISP CERULEAN_CITY_WIDTH, $9, $1b ; TRASHED_HOUSE
- EVENT_DISP CERULEAN_CITY_WIDTH, $b, $9 ; CERULEAN_HOUSE_3
- EVENT_DISP CERULEAN_CITY_WIDTH, $9, $9 ; CERULEAN_HOUSE_3
+ EVENT_DISP CERULEAN_CITY_WIDTH, $b, $9 ; CERULEAN_HOUSE_2
+ EVENT_DISP CERULEAN_CITY_WIDTH, $9, $9 ; CERULEAN_HOUSE_2
diff --git a/data/mapObjects/ceruleanhouse1.asm b/data/mapObjects/ceruleanhouse1.asm
index db0be014..aa9f66a4 100755
--- a/data/mapObjects/ceruleanhouse1.asm
+++ b/data/mapObjects/ceruleanhouse1.asm
@@ -7,9 +7,11 @@ CeruleanHouse1Object: ; 0x1d710 (size=32)
db $0 ; signs
- db $2 ; objects
- object SPRITE_OLD_MEDIUM_WOMAN, $5, $4, STAY, LEFT, $1 ; person
- object SPRITE_GAMBLER, $1, $2, STAY, NONE, $2 ; person
+ db $4 ; objects
+ object SPRITE_GIRL, $3, $1, STAY, DOWN, $1 ; person
+ object SPRITE_BULBASAUR, $4, $1, STAY, DOWN, $2 ; person
+ object SPRITE_ODDISH, $1, $4, STAY, NONE, $3 ; person
+ object SPRITE_SANDSHREW, $5, $3, STAY, LEFT, $4 ; person
; warp-to
EVENT_DISP CERULEAN_HOUSE_1_WIDTH, $7, $2
diff --git a/data/mapObjects/ceruleanpokecenter.asm b/data/mapObjects/ceruleanpokecenter.asm
index 930995dd..4b92f0d8 100755
--- a/data/mapObjects/ceruleanpokecenter.asm
+++ b/data/mapObjects/ceruleanpokecenter.asm
@@ -7,11 +7,12 @@ CeruleanPokecenterObject: ; 0x5c65f (size=44)
db $0 ; signs
- db $4 ; objects
+ db $5 ; objects
object SPRITE_NURSE, $3, $1, STAY, DOWN, $1 ; person
object SPRITE_BLACK_HAIR_BOY_2, $a, $5, WALK, $0, $2 ; person
- object SPRITE_GENTLEMAN, $4, $3, STAY, DOWN, $3 ; person
+ object SPRITE_GENTLEMAN, $4, $3, STAY, UP, $3 ; person
object SPRITE_CABLE_CLUB_WOMAN, $b, $2, STAY, DOWN, $4 ; person
+ object SPRITE_CHANSEY, $4, $1, STAY, DOWN, $5 ; person
; warp-to
EVENT_DISP CERULEAN_POKECENTER_WIDTH, $7, $3
diff --git a/data/mapObjects/fuchsiacity.asm b/data/mapObjects/fuchsiacity.asm
index 85f801d9..c64760c0 100755
--- a/data/mapObjects/fuchsiacity.asm
+++ b/data/mapObjects/fuchsiacity.asm
@@ -33,7 +33,7 @@ FuchsiaCityObject: ; 0x18bd4 (size=178)
object SPRITE_GAMBLER, $1c, $11, WALK, $2, $2 ; person
object SPRITE_FISHER2, $1e, $e, STAY, DOWN, $3 ; person
object SPRITE_BUG_CATCHER, $18, $8, STAY, UP, $4 ; person
- object SPRITE_CLEFAIRY, $1f, $5, WALK, $0, $5 ; person
+ object SPRITE_CHANSEY, $1f, $5, STAY, DOWN, $5 ; person
object SPRITE_BALL, $19, $6, STAY, NONE, $6 ; person
object SPRITE_SLOWBRO, $c, $6, WALK, $2, $7 ; person
object SPRITE_SLOWBRO, $1e, $c, WALK, $2, $8 ; person
diff --git a/data/mapObjects/mtmoon3.asm b/data/mapObjects/mtmoon3.asm
index 4f8f911c..4a9b1946 100755
--- a/data/mapObjects/mtmoon3.asm
+++ b/data/mapObjects/mtmoon3.asm
@@ -9,16 +9,17 @@ MtMoon3Object: ; 0x49fdb (size=102)
db $0 ; signs
- db $9 ; objects
+ db $a ; objects
object SPRITE_BLACK_HAIR_BOY_2, $c, $8, STAY, RIGHT, $1, OPP_SUPER_NERD, $2
- object SPRITE_ROCKET, $b, $10, STAY, DOWN, $2, OPP_ROCKET, $1
+ object SPRITE_JESSIE, $9, $3, STAY, LEFT, $2
object SPRITE_ROCKET, $f, $16, STAY, DOWN, $3, OPP_ROCKET, $2
object SPRITE_ROCKET, $1d, $b, STAY, UP, $4, OPP_ROCKET, $3
- object SPRITE_ROCKET, $1d, $11, STAY, LEFT, $5, OPP_ROCKET, $4
- object SPRITE_OMANYTE, $c, $6, STAY, NONE, $6 ; person
- object SPRITE_OMANYTE, $d, $6, STAY, NONE, $7 ; person
- object SPRITE_BALL, $19, $15, STAY, NONE, $8, HP_UP
- object SPRITE_BALL, $1d, $5, STAY, NONE, $9, TM_01
+ object SPRITE_ROCKET, $1d, $11, STAY, LEFT, $5, OPP_ROCKET, $1
+ object SPRITE_JAMES, $9, $4, STAY, LEFT, $6
+ object SPRITE_OMANYTE, $c, $6, STAY, NONE, $7 ; person
+ object SPRITE_OMANYTE, $d, $6, STAY, NONE, $8 ; person
+ object SPRITE_BALL, $19, $15, STAY, NONE, $9, HP_UP
+ object SPRITE_BALL, $1d, $5, STAY, NONE, $a, TM_01
; warp-to
EVENT_DISP MT_MOON_3_WIDTH, $9, $19 ; MT_MOON_2
diff --git a/data/mapObjects/mtmoonpokecenter.asm b/data/mapObjects/mtmoonpokecenter.asm
index d6cd35ba..935c4a40 100755
--- a/data/mapObjects/mtmoonpokecenter.asm
+++ b/data/mapObjects/mtmoonpokecenter.asm
@@ -7,13 +7,14 @@ MtMoonPokecenterObject: ; 0x49376 (size=56)
db $0 ; signs
- db $6 ; objects
+ db $7 ; objects
object SPRITE_NURSE, $3, $1, STAY, DOWN, $1 ; person
object SPRITE_BUG_CATCHER, $4, $3, STAY, UP, $2 ; person
object SPRITE_GENTLEMAN, $7, $3, STAY, UP, $3 ; person
object SPRITE_FAT_BALD_GUY, $a, $6, WALK, $2, $4 ; person
object SPRITE_CLIPBOARD, $7, $2, STAY, NONE, $5 ; person
object SPRITE_CABLE_CLUB_WOMAN, $b, $2, STAY, DOWN, $6 ; person
+ object SPRITE_CHANSEY, $4, $1, STAY, DOWN, $7 ; person
; warp-to
EVENT_DISP MT_MOON_POKECENTER_WIDTH, $7, $3
diff --git a/data/mapObjects/oakslab.asm b/data/mapObjects/oakslab.asm
index 53d6b85b..5b9a01d5 100755
--- a/data/mapObjects/oakslab.asm
+++ b/data/mapObjects/oakslab.asm
@@ -7,18 +7,16 @@ OaksLabObject: ; 0x1d40a (size=88)
db $0 ; signs
- db $b ; objects
+ db $9 ; objects
object SPRITE_BLUE, $4, $3, STAY, NONE, $1, OPP_SONY1, $1
- object SPRITE_BALL, $6, $3, STAY, NONE, $2 ; person
- object SPRITE_BALL, $7, $3, STAY, NONE, $3 ; person
- object SPRITE_BALL, $8, $3, STAY, NONE, $4 ; person
- object SPRITE_OAK, $5, $2, STAY, DOWN, $5 ; person
- object SPRITE_BOOK_MAP_DEX, $2, $1, STAY, NONE, $6 ; person
- object SPRITE_BOOK_MAP_DEX, $3, $1, STAY, NONE, $7 ; person
- object SPRITE_OAK, $5, $a, STAY, UP, $8 ; person
- object SPRITE_GIRL, $1, $9, WALK, $1, $9 ; person
- object SPRITE_OAK_AIDE, $2, $a, STAY, NONE, $a ; person
- object SPRITE_OAK_AIDE, $8, $a, STAY, NONE, $b ; person
+ object SPRITE_BALL, $7, $3, STAY, NONE, $2 ; person
+ object SPRITE_OAK, $5, $2, STAY, DOWN, $3 ; person
+ object SPRITE_BOOK_MAP_DEX, $2, $1, STAY, NONE, $4 ; person
+ object SPRITE_BOOK_MAP_DEX, $3, $1, STAY, NONE, $5 ; person
+ object SPRITE_OAK, $5, $a, STAY, UP, $6 ; person
+ object SPRITE_GIRL, $1, $9, WALK, $1, $7 ; person
+ object SPRITE_OAK_AIDE, $2, $a, STAY, NONE, $8 ; person
+ object SPRITE_OAK_AIDE, $8, $a, STAY, NONE, $9 ; person
; warp-to
EVENT_DISP OAKS_LAB_WIDTH, $b, $4
diff --git a/data/mapObjects/pallettown.asm b/data/mapObjects/pallettown.asm
index 4832246f..0d45fea3 100755
--- a/data/mapObjects/pallettown.asm
+++ b/data/mapObjects/pallettown.asm
@@ -13,7 +13,7 @@ PalletTownObject: ; 0x182c3 (size=58)
db $5, $b, $7 ; PalletTownText7
db $3 ; objects
- object SPRITE_OAK, $8, $5, STAY, NONE, $1 ; person
+ object SPRITE_OAK, $a, $4, STAY, NONE, $1 ; person
object SPRITE_GIRL, $3, $8, WALK, $0, $2 ; person
object SPRITE_FISHER2, $b, $e, WALK, $0, $3 ; person
diff --git a/data/mapObjects/pewterpokecenter.asm b/data/mapObjects/pewterpokecenter.asm
index 86757244..d3f87326 100755
--- a/data/mapObjects/pewterpokecenter.asm
+++ b/data/mapObjects/pewterpokecenter.asm
@@ -7,11 +7,13 @@ PewterPokecenterObject: ; 0x5c60d (size=44)
db $0 ; signs
- db $4 ; objects
+ db $6 ; objects
object SPRITE_NURSE, $3, $1, STAY, DOWN, $1 ; person
object SPRITE_GENTLEMAN, $b, $7, STAY, LEFT, $2 ; person
- object SPRITE_CLEFAIRY, $1, $3, STAY, DOWN, $3 ; person
+ object SPRITE_JIGGLYPUFF, $1, $3, STAY, DOWN, $3 ; person
object SPRITE_CABLE_CLUB_WOMAN, $b, $2, STAY, DOWN, $4 ; person
+ object SPRITE_LASS, $4, $3, STAY, UP, $5 ; person
+ object SPRITE_CHANSEY, $4, $1, STAY, DOWN, $6 ; person
; warp-to
EVENT_DISP PEWTER_POKECENTER_WIDTH, $7, $3
diff --git a/data/mapObjects/rocktunnelpokecenter.asm b/data/mapObjects/rocktunnelpokecenter.asm
index d2645165..3cd937cf 100755
--- a/data/mapObjects/rocktunnelpokecenter.asm
+++ b/data/mapObjects/rocktunnelpokecenter.asm
@@ -7,11 +7,12 @@ RockTunnelPokecenterObject: ; 0x493d4 (size=44)
db $0 ; signs
- db $4 ; objects
+ db $5 ; objects
object SPRITE_NURSE, $3, $1, STAY, DOWN, $1 ; person
- object SPRITE_GENTLEMAN, $7, $3, WALK, $2, $2 ; person
+ object SPRITE_GENTLEMAN, $7, $3, STAY, DOWN, $2 ; person
object SPRITE_FISHER2, $2, $5, STAY, NONE, $3 ; person
object SPRITE_CABLE_CLUB_WOMAN, $b, $2, STAY, DOWN, $4 ; person
+ object SPRITE_CHANSEY, $4, $1, STAY, DOWN, $5 ; person
; warp-to
EVENT_DISP ROCK_TUNNEL_POKECENTER_WIDTH, $7, $3
diff --git a/data/mapObjects/route11.asm b/data/mapObjects/route11.asm
index 4e196b20..d0c9af20 100755
--- a/data/mapObjects/route11.asm
+++ b/data/mapObjects/route11.asm
@@ -3,9 +3,9 @@ Route11Object: ; 0x584e0 (size=127)
db $5 ; warps
db $8, $31, $0, ROUTE_11_GATE_1F
- db $9, $31, $1, ROUTE_11_GATE_1F
+ db $9, $31, $0, ROUTE_11_GATE_1F
db $8, $3a, $2, ROUTE_11_GATE_1F
- db $9, $3a, $3, ROUTE_11_GATE_1F
+ db $9, $3a, $2, ROUTE_11_GATE_1F
db $5, $4, $0, DIGLETTS_CAVE_ENTRANCE
db $1 ; signs
diff --git a/data/mapObjects/route12.asm b/data/mapObjects/route12.asm
index 8ed43ff4..783fd49b 100755
--- a/data/mapObjects/route12.asm
+++ b/data/mapObjects/route12.asm
@@ -3,7 +3,7 @@ Route12Object: ; 0x5869a (size=118)
db $4 ; warps
db $f, $a, $0, ROUTE_12_GATE_1F
- db $f, $b, $1, ROUTE_12_GATE_1F
+ db $f, $b, $0, ROUTE_12_GATE_1F
db $15, $a, $2, ROUTE_12_GATE_1F
db $4d, $b, $0, ROUTE_12_HOUSE
diff --git a/data/mapObjects/route15.asm b/data/mapObjects/route15.asm
index e0d19e5c..bd6283b0 100755
--- a/data/mapObjects/route15.asm
+++ b/data/mapObjects/route15.asm
@@ -3,9 +3,9 @@ Route15Object: ; 0x5894e (size=126)
db $4 ; warps
db $8, $7, $0, ROUTE_15_GATE_1F
- db $9, $7, $1, ROUTE_15_GATE_1F
+ db $9, $7, $0, ROUTE_15_GATE_1F
db $8, $e, $2, ROUTE_15_GATE_1F
- db $9, $e, $3, ROUTE_15_GATE_1F
+ db $9, $e, $2, ROUTE_15_GATE_1F
db $1 ; signs
db $9, $27, $c ; Route15Text12
diff --git a/data/mapObjects/route16.asm b/data/mapObjects/route16.asm
index 600dbbf1..529b59bf 100755
--- a/data/mapObjects/route16.asm
+++ b/data/mapObjects/route16.asm
@@ -3,13 +3,13 @@ Route16Object: ; 0x58afc (size=136)
db $9 ; warps
db $a, $11, $0, ROUTE_16_GATE_1F
- db $b, $11, $1, ROUTE_16_GATE_1F
+ db $b, $11, $0, ROUTE_16_GATE_1F
db $a, $18, $2, ROUTE_16_GATE_1F
- db $b, $18, $3, ROUTE_16_GATE_1F
+ db $b, $18, $2, ROUTE_16_GATE_1F
db $4, $11, $4, ROUTE_16_GATE_1F
- db $5, $11, $5, ROUTE_16_GATE_1F
+ db $5, $11, $4, ROUTE_16_GATE_1F
db $4, $18, $6, ROUTE_16_GATE_1F
- db $5, $18, $7, ROUTE_16_GATE_1F
+ db $5, $18, $6, ROUTE_16_GATE_1F
db $5, $7, $0, ROUTE_16_HOUSE
db $2 ; signs
diff --git a/data/mapObjects/route18.asm b/data/mapObjects/route18.asm
index 88547941..40b50b08 100755
--- a/data/mapObjects/route18.asm
+++ b/data/mapObjects/route18.asm
@@ -3,9 +3,9 @@ Route18Object: ; 0x58c5a (size=66)
db $4 ; warps
db $8, $21, $0, ROUTE_18_GATE_1F
- db $9, $21, $1, ROUTE_18_GATE_1F
+ db $9, $21, $0, ROUTE_18_GATE_1F
db $8, $28, $2, ROUTE_18_GATE_1F
- db $9, $28, $3, ROUTE_18_GATE_1F
+ db $9, $28, $2, ROUTE_18_GATE_1F
db $2 ; signs
db $7, $2b, $4 ; Route18Text4
diff --git a/data/mapObjects/route19.asm b/data/mapObjects/route19.asm
index 7377e1e6..ec2b8774 100755
--- a/data/mapObjects/route19.asm
+++ b/data/mapObjects/route19.asm
@@ -9,13 +9,16 @@ Route19Object: ; 0x54e9a (size=87)
db $a ; objects
- object SPRITE_BLACK_HAIR_BOY_1, $9, $7, STAY, RIGHT, 1, OPP_SWIMMER, 2
- object SPRITE_BLACK_HAIR_BOY_1, $c, $9, STAY, LEFT, 2, OPP_SWIMMER, 3
- object SPRITE_SWIMMER, $9, $d, STAY, DOWN, $6, OPP_SWIMMER, $7
- object SPRITE_SWIMMER, $8, $2b, STAY, LEFT, $7, OPP_BEAUTY, $c
- object SPRITE_SWIMMER, $b, $2b, STAY, RIGHT, $8, OPP_BEAUTY, $d
- object SPRITE_SWIMMER, $9, $2a, STAY, UP, $9, OPP_SWIMMER, $8
- object SPRITE_SWIMMER, $a, $2c, STAY, DOWN, $a, OPP_BEAUTY, $e
+ object SPRITE_BLACK_HAIR_BOY_1, $09, $07, STAY, RIGHT, $1, OPP_SWIMMER, $2
+ object SPRITE_BLACK_HAIR_BOY_1, $0c, $09, STAY, LEFT, $2, OPP_SWIMMER, $3
+ object SPRITE_SWIMMER, $0d, $19, STAY, LEFT, $3, OPP_SWIMMER, $4
+ object SPRITE_SWIMMER, $04, $1b, STAY, RIGHT, $4, OPP_SWIMMER, $5
+ object SPRITE_SWIMMER, $10, $1f, STAY, UP, $5, OPP_SWIMMER, $6
+ object SPRITE_SWIMMER, $09, $0d, STAY, DOWN, $6, OPP_SWIMMER, $7
+ object SPRITE_SWIMMER, $08, $2b, STAY, LEFT, $7, OPP_BEAUTY, $c
+ object SPRITE_SWIMMER, $0b, $2b, STAY, RIGHT, $8, OPP_BEAUTY, $d
+ object SPRITE_SWIMMER, $09, $2a, STAY, UP, $9, OPP_SWIMMER, $8
+ object SPRITE_SWIMMER, $0a, $2c, STAY, DOWN, $a, OPP_BEAUTY, $e
; warp-to
EVENT_DISP ROUTE_19_WIDTH, $9, $5 ; BEACH_HOUSE
diff --git a/data/mapObjects/route2.asm b/data/mapObjects/route2.asm
index 0e6784b2..9731f450 100755
--- a/data/mapObjects/route2.asm
+++ b/data/mapObjects/route2.asm
@@ -1,13 +1,14 @@
Route2Object: ; 0x54022 (size=72)
db $f ; border block
- db $6 ; warps
+ db $7 ; warps
db $9, $c, $0, DIGLETTS_CAVE_EXIT
db $b, $3, $1, VIRIDIAN_FOREST_EXIT
db $13, $f, $0, ROUTE_2_HOUSE
db $23, $10, $1, ROUTE_2_GATE
db $27, $f, $2, ROUTE_2_GATE
db $2b, $3, $2, VIRIDIAN_FOREST_ENTRANCE
+ db $23, $11, $1, ROUTE_2_GATE
db $2 ; signs
db $41, $5, $3 ; Route2Text3
@@ -24,10 +25,12 @@ Route2Object: ; 0x54022 (size=72)
EVENT_DISP ROUTE_2_WIDTH, $23, $10 ; ROUTE_2_GATE
EVENT_DISP ROUTE_2_WIDTH, $27, $f ; ROUTE_2_GATE
EVENT_DISP ROUTE_2_WIDTH, $2b, $3 ; VIRIDIAN_FOREST_ENTRANCE
+ EVENT_DISP ROUTE_2_WIDTH, $23, $11 ; ROUTE_2_GATE
; unused
EVENT_DISP $4, $7, $2
- db $12, $c7, $9, $7
+ dw $c712
+ db $9, $7
EVENT_DISP $4, $7, $2
EVENT_DISP $4, $7, $2
EVENT_DISP $4, $7, $2
diff --git a/data/mapObjects/route24.asm b/data/mapObjects/route24.asm
index f8173c9d..115f08d3 100755
--- a/data/mapObjects/route24.asm
+++ b/data/mapObjects/route24.asm
@@ -5,7 +5,7 @@ Route24Object: ; 0x506a4 (size=67)
db $0 ; signs
- db $8 ; objects
+ db $9 ; objects
object SPRITE_BLACK_HAIR_BOY_1, $b, $f, STAY, LEFT, $1, OPP_ROCKET, $6
object SPRITE_BLACK_HAIR_BOY_1, $5, $14, STAY, UP, $2, OPP_JR_TRAINER_M, $2
object SPRITE_BLACK_HAIR_BOY_1, $b, $13, STAY, LEFT, $3, OPP_JR_TRAINER_M, $3
@@ -14,3 +14,4 @@ Route24Object: ; 0x506a4 (size=67)
object SPRITE_LASS, $a, $1c, STAY, RIGHT, $6, OPP_LASS, $8
object SPRITE_BUG_CATCHER, $b, $1f, STAY, LEFT, $7, OPP_BUG_CATCHER, $9
object SPRITE_BALL, $a, $5, STAY, NONE, $8, TM_45
+ object SPRITE_BLACK_HAIR_BOY_1, $6, $5, STAY, DOWN, $9
diff --git a/data/mapObjects/route5.asm b/data/mapObjects/route5.asm
index d11f8417..7ace428a 100755
--- a/data/mapObjects/route5.asm
+++ b/data/mapObjects/route5.asm
@@ -1,8 +1,8 @@
-Route5Object: ; 0x545a3 (size=47)
+Route5Object: ; 0x545ab (size=47)
db $a ; border block
db $5 ; warps
- db $1d, $a, $3, ROUTE_5_GATE
+ db $1d, $a, $2, ROUTE_5_GATE
db $1d, $9, $2, ROUTE_5_GATE
db $21, $a, $0, ROUTE_5_GATE
db $1b, $11, $0, PATH_ENTRANCE_ROUTE_5
diff --git a/data/mapObjects/route6.asm b/data/mapObjects/route6.asm
index 19ac2a8a..c854c91f 100755
--- a/data/mapObjects/route6.asm
+++ b/data/mapObjects/route6.asm
@@ -11,8 +11,8 @@ Route6Object: ; 0x58022 (size=87)
db $f, $13, $7 ; Route6Text7
db $6 ; objects
- object SPRITE_BLACK_HAIR_BOY_1, $a, $15, STAY, RIGHT, $1, OPP_JR_TRAINER_M, $4
- object SPRITE_LASS, $b, $15, STAY, LEFT, $2, OPP_JR_TRAINER_F, $2
+ object SPRITE_BLACK_HAIR_BOY_1, $a, $15, STAY, RIGHT, $1, OPP_JR_TRAINER_M, $a
+ object SPRITE_LASS, $b, $15, STAY, LEFT, $2, OPP_JR_TRAINER_F, $19
object SPRITE_BUG_CATCHER, $0, $f, STAY, RIGHT, $3, OPP_BUG_CATCHER, $a
object SPRITE_BLACK_HAIR_BOY_1, $b, $1f, STAY, LEFT, $4, OPP_JR_TRAINER_M, $5
object SPRITE_LASS, $b, $1e, STAY, LEFT, $5, OPP_JR_TRAINER_F, $3
diff --git a/data/mapObjects/route7.asm b/data/mapObjects/route7.asm
index 485a8694..b84fa190 100755
--- a/data/mapObjects/route7.asm
+++ b/data/mapObjects/route7.asm
@@ -3,9 +3,9 @@ Route7Object: ; 0x48022 (size=47)
db $5 ; warps
db $9, $12, $2, ROUTE_7_GATE
- db $a, $12, $3, ROUTE_7_GATE
+ db $a, $12, $2, ROUTE_7_GATE
db $9, $b, $0, ROUTE_7_GATE
- db $a, $b, $1, ROUTE_7_GATE
+ db $a, $b, $0, ROUTE_7_GATE
db $d, $5, $0, PATH_ENTRANCE_ROUTE_7
db $1 ; signs
diff --git a/data/mapObjects/route7gate.asm b/data/mapObjects/route7gate.asm
index 8c618fc1..9e80ca39 100755
--- a/data/mapObjects/route7gate.asm
+++ b/data/mapObjects/route7gate.asm
@@ -4,7 +4,7 @@ Route7GateObject: ; 0x1e185 (size=42)
db $4 ; warps
db $3, $0, $3, $ff
db $4, $0, $3, $ff
- db $3, $5, $0, $ff
+ db $3, $5, $1, $ff
db $4, $5, $1, $ff
db $0 ; signs
diff --git a/data/mapObjects/route8.asm b/data/mapObjects/route8.asm
index 5863129b..38bcca5e 100755
--- a/data/mapObjects/route8.asm
+++ b/data/mapObjects/route8.asm
@@ -3,9 +3,9 @@ Route8Object: ; 0x5814f (size=119)
db $5 ; warps
db $9, $1, $0, ROUTE_8_GATE
- db $a, $1, $1, ROUTE_8_GATE
+ db $a, $1, $0, ROUTE_8_GATE
db $9, $8, $2, ROUTE_8_GATE
- db $a, $8, $3, ROUTE_8_GATE
+ db $a, $8, $2, ROUTE_8_GATE
db $3, $d, $0, PATH_ENTRANCE_ROUTE_8
db $1 ; signs
diff --git a/data/mapObjects/route8gate.asm b/data/mapObjects/route8gate.asm
index 8c3fb54f..61d70dfc 100755
--- a/data/mapObjects/route8gate.asm
+++ b/data/mapObjects/route8gate.asm
@@ -2,9 +2,9 @@ Route8GateObject: ; 0x1e247 (size=42)
db $a ; border block
db $4 ; warps
- db $3, $0, $0, $ff
+ db $3, $0, $1, $ff
db $4, $0, $1, $ff
- db $3, $5, $2, $ff
+ db $3, $5, $3, $ff
db $4, $5, $3, $ff
db $0 ; signs
diff --git a/data/mapObjects/route9.asm b/data/mapObjects/route9.asm
index 79d0d5ed..6a759608 100755
--- a/data/mapObjects/route9.asm
+++ b/data/mapObjects/route9.asm
@@ -8,7 +8,7 @@ Route9Object: ; 0x546a8 (size=86)
db $a ; objects
object SPRITE_LASS, $d, $a, STAY, LEFT, $1, OPP_JR_TRAINER_F, $5
- object SPRITE_BLACK_HAIR_BOY_1, $18, $7, STAY, LEFT, $2, OPP_JR_TRAINER_M, $7
+ object SPRITE_BLACK_HAIR_BOY_1, $18, $7, STAY, LEFT, $2, OPP_YOUNGSTER, $e
object SPRITE_BLACK_HAIR_BOY_1, $1f, $7, STAY, RIGHT, $3, OPP_JR_TRAINER_M, $8
object SPRITE_LASS, $30, $8, STAY, RIGHT, $4, OPP_JR_TRAINER_F, $6
object SPRITE_HIKER, $10, $f, STAY, LEFT, $5, OPP_HIKER, $b
diff --git a/data/mapObjects/saffroncity.asm b/data/mapObjects/saffroncity.asm
index 69e76ee7..5980659b 100755
--- a/data/mapObjects/saffroncity.asm
+++ b/data/mapObjects/saffroncity.asm
@@ -1,4 +1,4 @@
-SaffronCityObject: ; 0x509dc (size=188)
+SaffronCityObject: ; 0x509e2 (size=188)
db $f ; border block
db $8 ; warps
@@ -23,7 +23,7 @@ SaffronCityObject: ; 0x509dc (size=188)
db $1d, $1b, $18 ; SaffronCityText24
db $13, $1, $19 ; SaffronCityText25
- db $f ; objects
+ db $e ; objects
object SPRITE_ROCKET, $7, $6, STAY, NONE, $1 ; person
object SPRITE_ROCKET, $14, $8, WALK, $2, $2 ; person
object SPRITE_ROCKET, $22, $4, STAY, NONE, $3 ; person
@@ -38,7 +38,6 @@ SaffronCityObject: ; 0x509dc (size=188)
object SPRITE_BIRD, $1f, $c, STAY, DOWN, $c ; person
object SPRITE_ROCKER, $12, $8, STAY, UP, $d ; person
object SPRITE_ROCKET, $12, $16, STAY, DOWN, $e ; person
- object SPRITE_ROCKET, $13, $16, STAY, DOWN, $f ; person
; warp-to
EVENT_DISP SAFFRON_CITY_WIDTH, $5, $7 ; COPYCATS_HOUSE_1F
diff --git a/data/mapObjects/school.asm b/data/mapObjects/school.asm
index b60be6c0..4c802e64 100755
--- a/data/mapObjects/school.asm
+++ b/data/mapObjects/school.asm
@@ -7,9 +7,10 @@ SchoolObject: ; 0x1d55d (size=32)
db $0 ; signs
- db $2 ; objects
+ db $3 ; objects
object SPRITE_BRUNETTE_GIRL, $3, $5, STAY, UP, $1 ; person
object SPRITE_LASS, $4, $1, STAY, DOWN, $2 ; person
+ object SPRITE_LITTLE_GIRL, $4, $5, STAY, UP, $3 ; person
; warp-to
EVENT_DISP VIRIDIAN_SCHOOL_WIDTH, $7, $2
diff --git a/data/mapObjects/vermilioncity.asm b/data/mapObjects/vermilioncity.asm
index c5602be1..3bfbc947 100755
--- a/data/mapObjects/vermilioncity.asm
+++ b/data/mapObjects/vermilioncity.asm
@@ -13,21 +13,22 @@ VermilionCityObject: ; 0x189ba (size=133)
db $3, $7, $0, VERMILION_HOUSE_2
db $7 ; signs
- db $3, $1b, $7 ; VermilionCityText7
- db $d, $25, $8 ; VermilionCityText8
- db $d, $18, $9 ; MartSignText
- db $3, $c, $a ; PokeCenterSignText
- db $d, $7, $b ; VermilionCityText11
- db $13, $7, $c ; VermilionCityText12
- db $f, $1d, $d ; VermilionCityText13
+ db $3, $1b, $8 ; VermilionCityText7
+ db $d, $25, $9 ; VermilionCityText8
+ db $d, $18, $a ; MartSignText
+ db $3, $c, $b ; PokeCenterSignText
+ db $d, $7, $c ; VermilionCityText11
+ db $13, $7, $d ; VermilionCityText12
+ db $f, $1d, $e ; VermilionCityText13
- db $6 ; objects
- object SPRITE_FOULARD_WOMAN, $13, $7, WALK, $2, $1 ; person
+ db $7 ; objects
+ object SPRITE_LASS, $13, $7, WALK, $2, $1 ; person
object SPRITE_GAMBLER, $e, $6, STAY, NONE, $2 ; person
object SPRITE_SAILOR, $13, $1e, STAY, UP, $3 ; person
object SPRITE_GAMBLER, $1e, $7, STAY, NONE, $4 ; person
object SPRITE_SLOWBRO, $1d, $9, WALK, $1, $5 ; person
object SPRITE_SAILOR, $19, $1b, WALK, $2, $6 ; person
+ object SPRITE_OFFICER_JENNY, $13, $f, STAY, NONE, $7 ; person
; warp-to
EVENT_DISP VERMILION_CITY_WIDTH, $3, $b ; VERMILION_POKECENTER
diff --git a/data/mapObjects/viridiancity.asm b/data/mapObjects/viridiancity.asm
index a2d2815f..79b177f4 100755
--- a/data/mapObjects/viridiancity.asm
+++ b/data/mapObjects/viridiancity.asm
@@ -9,14 +9,14 @@ ViridianCityObject: ; 0x18384 (size=104)
db $7, $20, $0, VIRIDIAN_GYM
db $6 ; signs
- db $11, $11, $8 ; ViridianCityText8
- db $1, $13, $9 ; ViridianCityText9
- db $1d, $15, $a ; ViridianCityText10
- db $13, $1e, $b ; MartSignText
- db $19, $18, $c ; PokeCenterSignText
- db $7, $1b, $d ; ViridianCityText13
+ db $11, $11, $9 ; ViridianCityText8
+ db $1, $13, $a ; ViridianCityText9
+ db $1d, $15, $b ; ViridianCityText10
+ db $13, $1e, $c ; MartSignText
+ db $19, $18, $d ; PokeCenterSignText
+ db $7, $1b, $e ; ViridianCityText13
- db $7 ; objects
+ db $8 ; objects
object SPRITE_BUG_CATCHER, $d, $14, WALK, $0, $1 ; person
object SPRITE_GAMBLER, $1e, $8, STAY, NONE, $2 ; person
object SPRITE_BUG_CATCHER, $1e, $19, WALK, $0, $3 ; person
@@ -24,6 +24,7 @@ ViridianCityObject: ; 0x18384 (size=104)
object SPRITE_LYING_OLD_MAN, $12, $9, STAY, NONE, $5 ; person
object SPRITE_FISHER2, $6, $17, STAY, DOWN, $6 ; person
object SPRITE_GAMBLER, $11, $5, WALK, $2, $7 ; person
+ object SPRITE_GAMBLER, $12, $9, STAY, NONE, $8
; warp-to
EVENT_DISP VIRIDIAN_CITY_WIDTH, $19, $17 ; VIRIDIAN_POKECENTER
diff --git a/data/mapObjects/viridianforest.asm b/data/mapObjects/viridianforest.asm
index a1d52cfe..8f5d6b0b 100755
--- a/data/mapObjects/viridianforest.asm
+++ b/data/mapObjects/viridianforest.asm
@@ -3,29 +3,31 @@ ViridianForestObject: ; 0x611da (size=127)
db $6 ; warps
db $0, $1, $2, VIRIDIAN_FOREST_EXIT
- db $0, $2, $3, VIRIDIAN_FOREST_EXIT
+ db $0, $2, $2, VIRIDIAN_FOREST_EXIT
db $2f, $f, $1, VIRIDIAN_FOREST_ENTRANCE
db $2f, $10, $1, VIRIDIAN_FOREST_ENTRANCE
db $2f, $11, $1, VIRIDIAN_FOREST_ENTRANCE
db $2f, $12, $1, VIRIDIAN_FOREST_ENTRANCE
db $6 ; signs
- db $28, $18, $9 ; ViridianForestText9
- db $20, $10, $a ; ViridianForestText10
- db $11, $1a, $b ; ViridianForestText11
- db $18, $4, $c ; ViridianForestText12
- db $2d, $12, $d ; ViridianForestText13
- db $1, $2, $e ; ViridianForestText14
+ db $28, $18, $b ; ViridianForestText9
+ db $20, $10, $c ; ViridianForestText10
+ db $11, $1a, $d ; ViridianForestText11
+ db $18, $4, $e ; ViridianForestText12
+ db $2d, $12, $f ; ViridianForestText13
+ db $1, $2, $10 ; ViridianForestText14
- db $8 ; objects
+ db $a ; objects
object SPRITE_BUG_CATCHER, $10, $2b, STAY, NONE, $1 ; person
object SPRITE_BUG_CATCHER, $1e, $21, STAY, LEFT, $2, OPP_BUG_CATCHER, $1
object SPRITE_BUG_CATCHER, $1e, $13, STAY, LEFT, $3, OPP_BUG_CATCHER, $2
object SPRITE_BUG_CATCHER, $2, $12, STAY, LEFT, $4, OPP_BUG_CATCHER, $3
- object SPRITE_BALL, $19, $b, STAY, NONE, $5, ANTIDOTE
- object SPRITE_BALL, $c, $1d, STAY, NONE, $6, POTION
- object SPRITE_BALL, $1, $1f, STAY, NONE, $7, POKE_BALL
- object SPRITE_BUG_CATCHER, $1b, $28, STAY, NONE, $8 ; person
+ object SPRITE_LASS, $2, $29, STAY, NONE, $5, OPP_LASS, $13
+ object SPRITE_BUG_CATCHER, $d, $11, STAY, RIGHT, $6, OPP_BUG_CATCHER, $f
+ object SPRITE_BALL, $19, $b, STAY, NONE, $7, POTION
+ object SPRITE_BALL, $c, $1d, STAY, NONE, $8, POTION
+ object SPRITE_BALL, $1, $1f, STAY, NONE, $9, POKE_BALL
+ object SPRITE_BUG_CATCHER, $1b, $28, STAY, NONE, $a ; person
; warp-to
EVENT_DISP VIRIDIAN_FOREST_WIDTH, $0, $1 ; VIRIDIAN_FOREST_EXIT
diff --git a/data/mapObjects/viridianforestentrance.asm b/data/mapObjects/viridianforestentrance.asm
index fc676a6d..891c0636 100755
--- a/data/mapObjects/viridianforestentrance.asm
+++ b/data/mapObjects/viridianforestentrance.asm
@@ -3,7 +3,7 @@ ViridianForestEntranceObject: ; 0x5d66d (size=48)
db $4 ; warps
db $0, $4, $3, VIRIDIAN_FOREST
- db $0, $5, $4, VIRIDIAN_FOREST
+ db $0, $5, $3, VIRIDIAN_FOREST
db $7, $4, $5, $ff
db $7, $5, $5, $ff
diff --git a/data/mapObjects/viridianpokecenter.asm b/data/mapObjects/viridianpokecenter.asm
index 652efb97..74c27d46 100755
--- a/data/mapObjects/viridianpokecenter.asm
+++ b/data/mapObjects/viridianpokecenter.asm
@@ -7,11 +7,12 @@ ViridianPokecenterObject: ; 0x44277 (size=44)
db $0 ; signs
- db $4 ; objects
+ db $5 ; objects
object SPRITE_NURSE, $3, $1, STAY, DOWN, $1 ; person
object SPRITE_GENTLEMAN, $a, $5, WALK, $1, $2 ; person
- object SPRITE_BLACK_HAIR_BOY_1, $4, $3, STAY, NONE, $3 ; person
+ object SPRITE_BLACK_HAIR_BOY_1, $4, $3, STAY, UP, $3 ; person
object SPRITE_CABLE_CLUB_WOMAN, $b, $2, STAY, DOWN, $4 ; person
+ object SPRITE_CHANSEY, $4, $1, STAY, DOWN, $5 ; person
; warp-to
EVENT_DISP VIRIDIAN_POKECENTER_WIDTH, $7, $3
diff --git a/data/map_header_banks.asm b/data/map_header_banks.asm
index eeff1974..40cd151f 100644
--- a/data/map_header_banks.asm
+++ b/data/map_header_banks.asm
@@ -1,252 +1,251 @@
; see also MapHeaderPointers
MapHeaderBanks:: ; fc3e4 (3f:43e4)
- dr $fc3e4,$fc4dd
- ;db BANK(PalletTown_h) ;PALLET_TOWN
- ;db BANK(ViridianCity_h) ; VIRIDIAN_CITY
- ;db BANK(PewterCity_h) ; PEWTER_CITY
- ;db BANK(CeruleanCity_h) ; CERULEAN_CITY
- ;db BANK(LavenderTown_h) ; LAVENDER_TOWN
- ;db BANK(VermilionCity_h) ; VERMILION_CITY
- ;db BANK(CeladonCity_h) ; CELADON_CITY
- ;db BANK(FuchsiaCity_h) ; FUCHSIA_CITY
- ;db BANK(CinnabarIsland_h) ; CINNABAR_ISLAND
- ;db BANK(IndigoPlateau_h) ; INDIGO_PLATEAU
- ;db BANK(SaffronCity_h) ; SAFFRON_CITY
- ;db $1 ; unused
- ;db BANK(Route1_h) ; ROUTE_1
- ;db BANK(Route2_h) ; ROUTE_2
- ;db BANK(Route3_h) ; ROUTE_3
- ;db BANK(Route4_h) ; ROUTE_4
- ;db BANK(Route5_h) ; ROUTE_5
- ;db BANK(Route6_h) ; ROUTE_6
- ;db BANK(Route7_h) ; ROUTE_7
- ;db BANK(Route8_h) ; ROUTE_8
- ;db BANK(Route9_h) ; ROUTE_9
- ;db BANK(Route10_h) ; ROUTE_10
- ;db BANK(Route11_h) ; ROUTE_11
- ;db BANK(Route12_h) ; ROUTE_12
- ;db BANK(Route13_h) ; ROUTE_13
- ;db BANK(Route14_h) ; ROUTE_14
- ;db BANK(Route15_h) ; ROUTE_15
- ;db BANK(Route16_h) ; ROUTE_16
- ;db BANK(Route17_h) ; ROUTE_17
- ;db BANK(Route18_h) ; ROUTE_18
- ;db BANK(Route19_h) ; ROUTE_19
- ;db BANK(Route20_h) ; ROUTE_20
- ;db BANK(Route21_h) ; ROUTE_21
- ;db BANK(Route22_h) ; ROUTE_22
- ;db BANK(Route23_h) ; ROUTE_23
- ;db BANK(Route24_h) ; ROUTE_24
- ;db BANK(Route25_h) ; ROUTE_25
- ;db BANK(RedsHouse1F_h)
- ;db BANK(RedsHouse2F_h)
- ;db BANK(BluesHouse_h)
- ;db BANK(OaksLab_h)
- ;db BANK(ViridianPokecenter_h)
- ;db BANK(ViridianMart_h)
- ;db BANK(School_h)
- ;db BANK(ViridianHouse_h)
- ;db BANK(ViridianGym_h)
- ;db BANK(DiglettsCaveRoute2_h)
- ;db BANK(ViridianForestExit_h)
- ;db BANK(Route2House_h)
- ;db BANK(Route2Gate_h)
- ;db BANK(ViridianForestEntrance_h)
- ;db BANK(ViridianForest_h)
- ;db BANK(Museum1F_h)
- ;db BANK(Museum2F_h)
- ;db BANK(PewterGym_h)
- ;db BANK(PewterHouse1_h)
- ;db BANK(PewterMart_h)
- ;db BANK(PewterHouse2_h)
- ;db BANK(PewterPokecenter_h)
- ;db BANK(MtMoon1_h)
- ;db BANK(MtMoon2_h)
- ;db BANK(MtMoon3_h)
- ;db BANK(CeruleanHouseTrashed_h)
- ;db BANK(CeruleanHouse1_h)
- ;db BANK(CeruleanPokecenter_h)
- ;db BANK(CeruleanGym_h)
- ;db BANK(BikeShop_h)
- ;db BANK(CeruleanMart_h)
- ;db BANK(MtMoonPokecenter_h)
- ;db BANK(CeruleanHouseTrashed_h)
- ;db BANK(Route5Gate_h)
- ;db BANK(UndergroundPathEntranceRoute5_h)
- ;db BANK(DayCareM_h)
- ;db BANK(Route6Gate_h)
- ;db BANK(UndergroundPathEntranceRoute6_h)
- ;db BANK(UndergroundPathEntranceRoute6_h) ;FREEZE
- ;db BANK(Route7Gate_h)
- ;db BANK(UndergroundPathEntranceRoute7_h)
- ;db BANK(UndergroundPathEntranceRoute7Copy_h) ;FREEZE
- ;db BANK(Route8Gate_h)
- ;db BANK(UndergroundPathEntranceRoute8_h)
- ;db BANK(RockTunnelPokecenter_h)
- ;db BANK(RockTunnel1_h)
- ;db BANK(PowerPlant_h)
- ;db BANK(Route11Gate_h)
- ;db BANK(DiglettsCaveEntranceRoute11_h)
- ;db BANK(Route11GateUpstairs_h)
- ;db BANK(Route12Gate_h)
- ;db BANK(BillsHouse_h)
- ;db BANK(VermilionPokecenter_h)
- ;db BANK(FanClub_h)
- ;db BANK(VermilionMart_h)
- ;db BANK(VermilionGym_h)
- ;db BANK(VermilionHouse1_h)
- ;db BANK(VermilionDock_h)
- ;db BANK(SSAnne1_h)
- ;db BANK(SSAnne2_h)
- ;db BANK(SSAnne3_h)
- ;db BANK(SSAnne4_h)
- ;db BANK(SSAnne5_h)
- ;db BANK(SSAnne6_h)
- ;db BANK(SSAnne7_h)
- ;db BANK(SSAnne8_h)
- ;db BANK(SSAnne9_h)
- ;db BANK(SSAnne10_h)
- ;db $1D ;unused
- ;db $1D ;unused
- ;db $1D ;unused
- ;db BANK(VictoryRoad1_h)
- ;db $1D ;unused
- ;db $1D ;unused
- ;db $1D ;unused
- ;db $1D ;unused
- ;db BANK(Lance_h)
- ;db $1D ;unused
- ;db $1D ;unused
- ;db $1D ;unused
- ;db $1D ;unused
- ;db BANK(HallofFameRoom_h)
- ;db BANK(UndergroundPathNS_h)
- ;db BANK(Gary_h)
- ;db BANK(UndergroundPathWE_h)
- ;db BANK(CeladonMart1_h)
- ;db BANK(CeladonMart2_h)
- ;db BANK(CeladonMart3_h)
- ;db BANK(CeladonMart4_h)
- ;db BANK(CeladonMartRoof_h)
- ;db BANK(CeladonMartElevator_h)
- ;db BANK(CeladonMansion1_h)
- ;db BANK(CeladonMansion2_h)
- ;db BANK(CeladonMansion3_h)
- ;db BANK(CeladonMansion4_h)
- ;db BANK(CeladonMansion5_h)
- ;db BANK(CeladonPokecenter_h)
- ;db BANK(CeladonGym_h)
- ;db BANK(CeladonGameCorner_h)
- ;db BANK(CeladonMart5_h)
- ;db BANK(CeladonPrizeRoom_h)
- ;db BANK(CeladonDiner_h)
- ;db BANK(CeladonHouse_h)
- ;db BANK(CeladonHotel_h)
- ;db BANK(LavenderPokecenter_h)
- ;db BANK(PokemonTower1_h)
- ;db BANK(PokemonTower2_h)
- ;db BANK(PokemonTower3_h)
- ;db BANK(PokemonTower4_h)
- ;db BANK(PokemonTower5_h)
- ;db BANK(PokemonTower6_h)
- ;db BANK(PokemonTower7_h)
- ;db BANK(LavenderHouse1_h)
- ;db BANK(LavenderMart_h)
- ;db BANK(LavenderHouse2_h)
- ;db BANK(FuchsiaMart_h)
- ;db BANK(FuchsiaHouse1_h)
- ;db BANK(FuchsiaPokecenter_h)
- ;db BANK(FuchsiaHouse2_h)
- ;db BANK(SafariZoneEntrance_h)
- ;db BANK(FuchsiaGym_h)
- ;db BANK(FuchsiaMeetingRoom_h)
- ;db BANK(SeafoamIslands2_h)
- ;db BANK(SeafoamIslands3_h)
- ;db BANK(SeafoamIslands4_h)
- ;db BANK(SeafoamIslands5_h)
- ;db BANK(VermilionHouse2_h)
- ;db BANK(FuchsiaHouse3_h)
- ;db BANK(Mansion1_h)
- ;db BANK(CinnabarGym_h)
- ;db BANK(Lab1_h)
- ;db BANK(Lab2_h)
- ;db BANK(Lab3_h)
- ;db BANK(Lab4_h)
- ;db BANK(CinnabarPokecenter_h)
- ;db BANK(CinnabarMart_h)
- ;db BANK(CinnabarMart_h)
- ;db BANK(IndigoPlateauLobby_h)
- ;db BANK(CopycatsHouse1F_h)
- ;db BANK(CopycatsHouse2F_h)
- ;db BANK(FightingDojo_h)
- ;db BANK(SaffronGym_h)
- ;db BANK(SaffronHouse1_h)
- ;db BANK(SaffronMart_h)
- ;db BANK(SilphCo1_h)
- ;db BANK(SaffronPokecenter_h)
- ;db BANK(SaffronHouse2_h)
- ;db BANK(Route15Gate_h)
- ;db BANK(Route15GateUpstairs_h)
- ;db BANK(Route16Gate_h)
- ;db BANK(Route16GateUpstairs_h)
- ;db BANK(Route16House_h)
- ;db BANK(Route12House_h)
- ;db BANK(Route18Gate_h)
- ;db BANK(Route18GateUpstairs_h)
- ;db BANK(SeafoamIslands1_h)
- ;db BANK(Route22Gate_h)
- ;db BANK(VictoryRoad2_h)
- ;db BANK(Route12GateUpstairs_h)
- ;db BANK(VermilionHouse3_h)
- ;db BANK(DiglettsCave_h)
- ;db BANK(VictoryRoad3_h)
- ;db BANK(RocketHideout1_h)
- ;db BANK(RocketHideout2_h)
- ;db BANK(RocketHideout3_h)
- ;db BANK(RocketHideout4_h)
- ;db BANK(RocketHideoutElevator_h)
- ;db $01
- ;db $01
- ;db $01
- ;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
- ;db BANK(RockTunnel2_h)
- ;db BANK(SilphCo9_h)
- ;db BANK(SilphCo10_h)
- ;db BANK(SilphCo11_h)
- ;db BANK(SilphCoElevator_h)
- ;db $11
- ;db $11
- ;db BANK(BattleCenterM_h)
- ;db BANK(TradeCenterM_h)
- ;db $11
- ;db $11
- ;db $11
- ;db $11
- ;db BANK(Lorelei_h)
- ;db BANK(Bruno_h)
- ;db BANK(Agatha_h)
- ;db BANK(BeachHouse_h) \ No newline at end of file
+ db BANK(PalletTown_h) ;PALLET_TOWN
+ db BANK(ViridianCity_h) ; VIRIDIAN_CITY
+ db BANK(PewterCity_h) ; PEWTER_CITY
+ db BANK(CeruleanCity_h) ; CERULEAN_CITY
+ db BANK(LavenderTown_h) ; LAVENDER_TOWN
+ db BANK(VermilionCity_h) ; VERMILION_CITY
+ db BANK(CeladonCity_h) ; CELADON_CITY
+ db BANK(FuchsiaCity_h) ; FUCHSIA_CITY
+ db BANK(CinnabarIsland_h) ; CINNABAR_ISLAND
+ db BANK(IndigoPlateau_h) ; INDIGO_PLATEAU
+ db BANK(SaffronCity_h) ; SAFFRON_CITY
+ db $01 ; unused
+ db BANK(Route1_h) ; ROUTE_1
+ db BANK(Route2_h) ; ROUTE_2
+ db BANK(Route3_h) ; ROUTE_3
+ db BANK(Route4_h) ; ROUTE_4
+ db BANK(Route5_h) ; ROUTE_5
+ db BANK(Route6_h) ; ROUTE_6
+ db BANK(Route7_h) ; ROUTE_7
+ db BANK(Route8_h) ; ROUTE_8
+ db BANK(Route9_h) ; ROUTE_9
+ db BANK(Route10_h) ; ROUTE_10
+ db BANK(Route11_h) ; ROUTE_11
+ db BANK(Route12_h) ; ROUTE_12
+ db BANK(Route13_h) ; ROUTE_13
+ db BANK(Route14_h) ; ROUTE_14
+ db BANK(Route15_h) ; ROUTE_15
+ db BANK(Route16_h) ; ROUTE_16
+ db BANK(Route17_h) ; ROUTE_17
+ db BANK(Route18_h) ; ROUTE_18
+ db BANK(Route19_h) ; ROUTE_19
+ db BANK(Route20_h) ; ROUTE_20
+ db BANK(Route21_h) ; ROUTE_21
+ db BANK(Route22_h) ; ROUTE_22
+ db BANK(Route23_h) ; ROUTE_23
+ db BANK(Route24_h) ; ROUTE_24
+ db BANK(Route25_h) ; ROUTE_25
+ db BANK(RedsHouse1F_h)
+ db BANK(RedsHouse2F_h)
+ db BANK(BluesHouse_h)
+ db BANK(OaksLab_h)
+ db BANK(ViridianPokecenter_h)
+ db BANK(ViridianMart_h)
+ db BANK(School_h)
+ db BANK(ViridianHouse_h)
+ db BANK(ViridianGym_h)
+ db BANK(DiglettsCaveRoute2_h)
+ db BANK(ViridianForestExit_h)
+ db BANK(Route2House_h)
+ db BANK(Route2Gate_h)
+ db BANK(ViridianForestEntrance_h)
+ db BANK(ViridianForest_h)
+ db BANK(Museum1F_h)
+ db BANK(Museum2F_h)
+ db BANK(PewterGym_h)
+ db BANK(PewterHouse1_h)
+ db BANK(PewterMart_h)
+ db BANK(PewterHouse2_h)
+ db BANK(PewterPokecenter_h)
+ db BANK(MtMoon1_h)
+ db BANK(MtMoon2_h)
+ db BANK(MtMoon3_h)
+ db BANK(CeruleanHouseTrashed_h)
+ db BANK(CeruleanHouse1_h)
+ db BANK(CeruleanPokecenter_h)
+ db BANK(CeruleanGym_h)
+ db BANK(BikeShop_h)
+ db BANK(CeruleanMart_h)
+ db BANK(MtMoonPokecenter_h)
+ db BANK(CeruleanHouseTrashed_h)
+ db BANK(Route5Gate_h)
+ db BANK(UndergroundPathEntranceRoute5_h)
+ db BANK(DayCareM_h)
+ db BANK(Route6Gate_h)
+ db BANK(UndergroundPathEntranceRoute6_h)
+ db BANK(UndergroundPathEntranceRoute6_h) ;FREEZE
+ db BANK(Route7Gate_h)
+ db BANK(UndergroundPathEntranceRoute7_h)
+ db BANK(UndergroundPathEntranceRoute7Copy_h) ;FREEZE
+ db BANK(Route8Gate_h)
+ db BANK(UndergroundPathEntranceRoute8_h)
+ db BANK(RockTunnelPokecenter_h)
+ db BANK(RockTunnel1_h)
+ db BANK(PowerPlant_h)
+ db $12 ; db BANK(Route11Gate_h)
+ db BANK(DiglettsCaveEntranceRoute11_h)
+ db $12 ; db BANK(Route11GateUpstairs_h)
+ db $12 ; db BANK(Route12Gate_h)
+ db $07 ; db BANK(BillsHouse_h)
+ db $17 ; db BANK(VermilionPokecenter_h)
+ db $16 ; db BANK(FanClub_h)
+ db $17 ; db BANK(VermilionMart_h)
+ db $17 ; db BANK(VermilionGym_h)
+ db $07 ; db BANK(VermilionHouse1_h)
+ db $07 ; db BANK(VermilionDock_h)
+ db $18 ; db BANK(SSAnne1_h)
+ db $18 ; db BANK(SSAnne2_h)
+ db $11 ; db BANK(SSAnne3_h)
+ db $18 ; db BANK(SSAnne4_h)
+ db $18 ; db BANK(SSAnne5_h)
+ db $18 ; db BANK(SSAnne6_h)
+ db $18 ; db BANK(SSAnne7_h)
+ db $18 ; db BANK(SSAnne8_h)
+ db $18 ; db BANK(SSAnne9_h)
+ db $18 ; db BANK(SSAnne10_h)
+ db $1d ; unused
+ db $1d ; unused
+ db $1d ; unused
+ db $17 ; db BANK(VictoryRoad1_h)
+ db $1d ; unused
+ db $1d ; unused
+ db $1d ; unused
+ db $1d ; unused
+ db $16 ; db BANK(Lance_h)
+ db $1d ; unused
+ db $1d ; unused
+ db $1d ; unused
+ db $1d ; unused
+ db $16 ; db BANK(HallofFameRoom_h)
+ db $18 ; db BANK(UndergroundPathNS_h)
+ db $1d ; db BANK(Gary_h)
+ db $18 ; db BANK(UndergroundPathWE_h)
+ db $11 ; db BANK(CeladonMart1_h)
+ db $15 ; db BANK(CeladonMart2_h)
+ db $12 ; db BANK(CeladonMart3_h)
+ db $12 ; db BANK(CeladonMart4_h)
+ db $12 ; db BANK(CeladonMartRoof_h)
+ db $12 ; db BANK(CeladonMartElevator_h)
+ db $12 ; db BANK(CeladonMansion1_h)
+ db $12 ; db BANK(CeladonMansion2_h)
+ db $12 ; db BANK(CeladonMansion3_h)
+ db $12 ; db BANK(CeladonMansion4_h)
+ db $07 ; db BANK(CeladonMansion5_h)
+ db $12 ; db BANK(CeladonPokecenter_h)
+ db $12 ; db BANK(CeladonGym_h)
+ db $12 ; db BANK(CeladonGameCorner_h)
+ db $12 ; db BANK(CeladonMart5_h)
+ db $12 ; db BANK(CeladonPrizeRoom_h)
+ db $12 ; db BANK(CeladonDiner_h)
+ db $12 ; db BANK(CeladonHouse_h)
+ db $12 ; db BANK(CeladonHotel_h)
+ db $17 ; db BANK(LavenderPokecenter_h)
+ db $18 ; db BANK(PokemonTower1_h)
+ db $18 ; db BANK(PokemonTower2_h)
+ db $18 ; db BANK(PokemonTower3_h)
+ db $18 ; db BANK(PokemonTower4_h)
+ db $18 ; db BANK(PokemonTower5_h)
+ db $18 ; db BANK(PokemonTower6_h)
+ db $18 ; db BANK(PokemonTower7_h)
+ db $07 ; db BANK(LavenderHouse1_h)
+ db $17 ; db BANK(LavenderMart_h)
+ db $07 ; db BANK(LavenderHouse2_h)
+ db $07 ; db BANK(FuchsiaMart_h)
+ db $1d ; db BANK(FuchsiaHouse1_h)
+ db $1d ; db BANK(FuchsiaPokecenter_h)
+ db $1d ; db BANK(FuchsiaHouse2_h)
+ db $1d ; db BANK(SafariZoneEntrance_h)
+ db $1d ; db BANK(FuchsiaGym_h)
+ db $1d ; db BANK(FuchsiaMeetingRoom_h)
+ db $11 ; db BANK(SeafoamIslands2_h)
+ db $11 ; db BANK(SeafoamIslands3_h)
+ db $11 ; db BANK(SeafoamIslands4_h)
+ db $11 ; db BANK(SeafoamIslands5_h)
+ db $15 ; db BANK(VermilionHouse2_h)
+ db $15 ; db BANK(FuchsiaHouse3_h)
+ db $11 ; db BANK(Mansion1_h)
+ db $1d ; db BANK(CinnabarGym_h)
+ db $1d ; db BANK(Lab1_h)
+ db $1d ; db BANK(Lab2_h)
+ db $1d ; db BANK(Lab3_h)
+ db $1d ; db BANK(Lab4_h)
+ db $1d ; db BANK(CinnabarPokecenter_h)
+ db $1d ; db BANK(CinnabarMart_h)
+ db $1d ; db BANK(CinnabarMart_h)
+ db $06 ; db BANK(IndigoPlateauLobby_h)
+ db $1d ; db BANK(CopycatsHouse1F_h)
+ db $17 ; db BANK(CopycatsHouse2F_h)
+ db $17 ; db BANK(FightingDojo_h)
+ db $17 ; db BANK(SaffronGym_h)
+ db $07 ; db BANK(SaffronHouse1_h)
+ db $17 ; db BANK(SaffronMart_h)
+ db $17 ; db BANK(SilphCo1_h)
+ db $17 ; db BANK(SaffronPokecenter_h)
+ db $07 ; db BANK(SaffronHouse2_h)
+ db $12 ; db BANK(Route15Gate_h)
+ db $12 ; db BANK(Route15GateUpstairs_h)
+ db $12 ; db BANK(Route16Gate_h)
+ db $12 ; db BANK(Route16GateUpstairs_h)
+ db $07 ; db BANK(Route16House_h)
+ db $15 ; db BANK(Route12House_h)
+ db $12 ; db BANK(Route18Gate_h)
+ db $12 ; db BANK(Route18GateUpstairs_h)
+ db $11 ; db BANK(SeafoamIslands1_h)
+ db $07 ; db BANK(Route22Gate_h)
+ db $14 ; db BANK(VictoryRoad2_h)
+ db $12 ; db BANK(Route12GateUpstairs_h)
+ db $06 ; db BANK(VermilionHouse3_h)
+ db $18 ; db BANK(DiglettsCave_h)
+ db $11 ; db BANK(VictoryRoad3_h)
+ db $11 ; db BANK(RocketHideout1_h)
+ db $11 ; db BANK(RocketHideout2_h)
+ db $11 ; db BANK(RocketHideout3_h)
+ db $11 ; db BANK(RocketHideout4_h)
+ db $11 ; db BANK(RocketHideoutElevator_h)
+ 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 $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 $11 ; unused
+ db $11 ; unused
+ db BANK(TradeCenter_h)
+ db BANK(Colosseum_h)
+ db $11 ; unused
+ 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(BeachHouse_h)
diff --git a/data/map_header_pointers.asm b/data/map_header_pointers.asm
index c7dd0c9f..c8e41d14 100644
--- a/data/map_header_pointers.asm
+++ b/data/map_header_pointers.asm
@@ -1,252 +1,251 @@
; see also MapHeaderBanks
MapHeaderPointers:: ; fc1f2 (3f:41f2)
- dr $fc1f2,$fc3e4
- ;dw PalletTown_h
- ;dw ViridianCity_h
- ;dw PewterCity_h
- ;dw CeruleanCity_h
- ;dw LavenderTown_h
- ;dw VermilionCity_h
- ;dw CeladonCity_h
- ;dw FuchsiaCity_h
- ;dw CinnabarIsland_h
- ;dw IndigoPlateau_h
- ;dw SaffronCity_h
- ;dw SaffronCity_h
- ;dw Route1_h
- ;dw Route2_h
- ;dw Route3_h
- ;dw Route4_h
- ;dw Route5_h
- ;dw Route6_h
- ;dw Route7_h
- ;dw Route8_h
- ;dw Route9_h
- ;dw Route10_h
- ;dw Route11_h
- ;dw Route12_h
- ;dw Route13_h
- ;dw Route14_h
- ;dw Route15_h
- ;dw Route16_h
- ;dw Route17_h
- ;dw Route18_h
- ;dw Route19_h
- ;dw Route20_h
- ;dw Route21_h
- ;dw Route22_h
- ;dw Route23_h
- ;dw Route24_h
- ;dw Route25_h
- ;dw RedsHouse1F_h
- ;dw RedsHouse2F_h
- ;dw BluesHouse_h
- ;dw OaksLab_h ;id=40
- ;dw ViridianPokecenter_h
- ;dw ViridianMart_h
- ;dw School_h
- ;dw ViridianHouse_h
- ;dw ViridianGym_h
- ;dw DiglettsCaveRoute2_h
- ;dw ViridianForestExit_h
- ;dw Route2House_h
- ;dw Route2Gate_h
- ;dw ViridianForestEntrance_h ;id=50
- ;dw ViridianForest_h
- ;dw Museum1F_h
- ;dw Museum2F_h
- ;dw PewterGym_h
- ;dw PewterHouse1_h
- ;dw PewterMart_h
- ;dw PewterHouse2_h
- ;dw PewterPokecenter_h
- ;dw MtMoon1_h
- ;dw MtMoon2_h ;id=60
- ;dw MtMoon3_h
- ;dw CeruleanHouseTrashed_h
- ;dw CeruleanHouse1_h
- ;dw CeruleanPokecenter_h
- ;dw CeruleanGym_h
- ;dw BikeShop_h
- ;dw CeruleanMart_h
- ;dw MtMoonPokecenter_h
- ;dw CeruleanHouseTrashed_h ; copy
- ;dw Route5Gate_h
- ;dw UndergroundPathEntranceRoute5_h
- ;dw DayCareM_h
- ;dw Route6Gate_h
- ;dw UndergroundPathEntranceRoute6_h
- ;dw UndergroundPathEntranceRoute6_h ; unused
- ;dw Route7Gate_h
- ;dw UndergroundPathEntranceRoute7_h
- ;dw UndergroundPathEntranceRoute7Copy_h
- ;dw Route8Gate_h
- ;dw UndergroundPathEntranceRoute8_h ;id=80
- ;dw RockTunnelPokecenter_h
- ;dw RockTunnel1_h
- ;dw PowerPlant_h
- ;dw Route11Gate_h
- ;dw DiglettsCaveEntranceRoute11_h
- ;dw Route11GateUpstairs_h
- ;dw Route12Gate_h
- ;dw BillsHouse_h
- ;dw VermilionPokecenter_h
- ;dw FanClub_h ;id=90
- ;dw VermilionMart_h
- ;dw VermilionGym_h
- ;dw VermilionHouse1_h
- ;dw VermilionDock_h
- ;dw SSAnne1_h
- ;dw SSAnne2_h
- ;dw SSAnne3_h
- ;dw SSAnne4_h
- ;dw SSAnne5_h
- ;dw SSAnne6_h ;id=100
- ;dw SSAnne7_h
- ;dw SSAnne8_h
- ;dw SSAnne9_h
- ;dw SSAnne10_h
- ;dw Lance_h ; unused
- ;dw Lance_h ; unused
- ;dw Lance_h ; unused
- ;dw VictoryRoad1_h
- ;dw Lance_h ; unused
- ;dw Lance_h ; unused ;id=110
- ;dw Lance_h ; unused
- ;dw Lance_h ; unused
- ;dw Lance_h
- ;dw Lance_h ; unused
- ;dw Lance_h ; unused
- ;dw Lance_h ; unused
- ;dw Lance_h ; unused
- ;dw HallofFameRoom_h
- ;dw UndergroundPathNS_h
- ;dw Gary_h ;id=120
- ;dw UndergroundPathWE_h
- ;dw CeladonMart1_h
- ;dw CeladonMart2_h
- ;dw CeladonMart3_h
- ;dw CeladonMart4_h
- ;dw CeladonMartRoof_h
- ;dw CeladonMartElevator_h
- ;dw CeladonMansion1_h
- ;dw CeladonMansion2_h
- ;dw CeladonMansion3_h ;id=130
- ;dw CeladonMansion4_h
- ;dw CeladonMansion5_h
- ;dw CeladonPokecenter_h
- ;dw CeladonGym_h
- ;dw CeladonGameCorner_h
- ;dw CeladonMart5_h
- ;dw CeladonPrizeRoom_h
- ;dw CeladonDiner_h
- ;dw CeladonHouse_h
- ;dw CeladonHotel_h ;id=140
- ;dw LavenderPokecenter_h
- ;dw PokemonTower1_h
- ;dw PokemonTower2_h
- ;dw PokemonTower3_h
- ;dw PokemonTower4_h
- ;dw PokemonTower5_h
- ;dw PokemonTower6_h
- ;dw PokemonTower7_h
- ;dw LavenderHouse1_h
- ;dw LavenderMart_h ;id=150
- ;dw LavenderHouse2_h
- ;dw FuchsiaMart_h
- ;dw FuchsiaHouse1_h
- ;dw FuchsiaPokecenter_h
- ;dw FuchsiaHouse2_h
- ;dw SafariZoneEntrance_h
- ;dw FuchsiaGym_h
- ;dw FuchsiaMeetingRoom_h
- ;dw SeafoamIslands2_h
- ;dw SeafoamIslands3_h ;id=160
- ;dw SeafoamIslands4_h
- ;dw SeafoamIslands5_h
- ;dw VermilionHouse2_h
- ;dw FuchsiaHouse3_h
- ;dw Mansion1_h
- ;dw CinnabarGym_h
- ;dw Lab1_h
- ;dw Lab2_h
- ;dw Lab3_h
- ;dw Lab4_h ;id=170
- ;dw CinnabarPokecenter_h
- ;dw CinnabarMart_h
- ;dw CinnabarMart_h ; unused
- ;dw IndigoPlateauLobby_h
- ;dw CopycatsHouse1F_h
- ;dw CopycatsHouse2F_h
- ;dw FightingDojo_h
- ;dw SaffronGym_h
- ;dw SaffronHouse1_h
- ;dw SaffronMart_h ;id=180
- ;dw SilphCo1_h
- ;dw SaffronPokecenter_h
- ;dw SaffronHouse2_h
- ;dw Route15Gate_h
- ;dw Route15GateUpstairs_h
- ;dw Route16Gate_h
- ;dw Route16GateUpstairs_h
- ;dw Route16House_h
- ;dw Route12House_h
- ;dw Route18Gate_h ;id=190
- ;dw Route18GateUpstairs_h
- ;dw SeafoamIslands1_h
- ;dw Route22Gate_h
- ;dw VictoryRoad2_h
- ;dw Route12GateUpstairs_h
- ;dw VermilionHouse3_h
- ;dw DiglettsCave_h
- ;dw VictoryRoad3_h
- ;dw RocketHideout1_h
- ;dw RocketHideout2_h ;200
- ;dw RocketHideout3_h
- ;dw RocketHideout4_h
- ;dw RocketHideoutElevator_h
- ;dw RocketHideoutElevator_h ; unused
- ;dw RocketHideoutElevator_h ; unused
- ;dw RocketHideoutElevator_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 BattleCenterM_h
- ;dw TradeCenterM_h
- ;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 \ No newline at end of file
+ dw PalletTown_h
+ dw ViridianCity_h
+ dw PewterCity_h
+ dw CeruleanCity_h
+ dw LavenderTown_h
+ dw VermilionCity_h
+ dw CeladonCity_h
+ dw FuchsiaCity_h
+ dw CinnabarIsland_h
+ dw IndigoPlateau_h
+ dw SaffronCity_h
+ dw SaffronCity_h
+ dw Route1_h
+ dw Route2_h
+ dw Route3_h
+ dw Route4_h
+ dw Route5_h
+ dw Route6_h
+ dw Route7_h
+ dw Route8_h
+ dw Route9_h
+ dw Route10_h
+ dw Route11_h
+ dw Route12_h
+ dw Route13_h
+ dw Route14_h
+ dw Route15_h
+ dw Route16_h
+ dw Route17_h
+ dw Route18_h
+ dw Route19_h
+ dw Route20_h
+ dw Route21_h
+ dw Route22_h
+ dw Route23_h
+ dw Route24_h
+ dw Route25_h
+ dw RedsHouse1F_h
+ dw RedsHouse2F_h
+ dw BluesHouse_h
+ dw OaksLab_h ;id=40
+ dw ViridianPokecenter_h
+ dw ViridianMart_h
+ dw School_h
+ dw ViridianHouse_h
+ dw ViridianGym_h
+ dw DiglettsCaveRoute2_h
+ dw ViridianForestExit_h
+ dw Route2House_h
+ dw Route2Gate_h
+ dw ViridianForestEntrance_h ;id=50
+ dw ViridianForest_h
+ dw Museum1F_h
+ dw Museum2F_h
+ dw PewterGym_h
+ dw PewterHouse1_h
+ dw PewterMart_h
+ dw PewterHouse2_h
+ dw PewterPokecenter_h
+ dw MtMoon1_h
+ dw MtMoon2_h ;id=60
+ dw MtMoon3_h
+ dw CeruleanHouseTrashed_h
+ dw CeruleanHouse1_h
+ dw CeruleanPokecenter_h
+ dw CeruleanGym_h
+ dw BikeShop_h
+ dw CeruleanMart_h
+ dw MtMoonPokecenter_h
+ dw CeruleanHouseTrashed_h ; copy
+ dw Route5Gate_h
+ dw UndergroundPathEntranceRoute5_h
+ dw DayCareM_h
+ dw Route6Gate_h
+ dw UndergroundPathEntranceRoute6_h
+ dw UndergroundPathEntranceRoute6_h ; unused
+ dw Route7Gate_h
+ dw UndergroundPathEntranceRoute7_h
+ dw UndergroundPathEntranceRoute7Copy_h
+ dw Route8Gate_h
+ dw UndergroundPathEntranceRoute8_h ;id=80
+ dw RockTunnelPokecenter_h
+ dw RockTunnel1_h
+ dw PowerPlant_h
+ dw $5396 ; dw Route11Gate_h
+ dw DiglettsCaveEntranceRoute11_h
+ dw $53de ; dw Route11GateUpstairs_h
+ dw $548f ; dw Route12Gate_h
+ dw $606e ; dw BillsHouse_h
+ dw $4865 ; dw VermilionPokecenter_h
+ dw $5a00 ; dw FanClub_h ;id=90
+ dw $48cb ; dw VermilionMart_h
+ dw $4910 ; dw VermilionGym_h
+ dw $53f8 ; dw VermilionHouse1_h
+ dw $544e ; dw VermilionDock_h
+ dw $52a4 ; dw SSAnne1_h
+ dw $53de ; dw SSAnne2_h
+ dw $49bf ; dw SSAnne3_h
+ dw $5650 ; dw SSAnne4_h
+ dw $56d0 ; dw SSAnne5_h
+ dw $57d5 ; dw SSAnne6_h ;id=100
+ dw $58b7 ; dw SSAnne7_h
+ dw $5993 ; dw SSAnne8_h
+ dw $5b68 ; dw SSAnne9_h
+ dw $5d60 ; dw SSAnne10_h
+ dw $623d ; dw Lance_h ; unused
+ dw $623d ; dw Lance_h ; unused
+ dw $623d ; dw Lance_h ; unused
+ dw $5909 ; dw VictoryRoad1_h
+ dw $623d ; dw Lance_h ; unused
+ dw $623d ; dw Lance_h ; unused ;id=110
+ dw $623d ; dw Lance_h ; unused
+ dw $623d ; dw Lance_h ; unused
+ dw $623d ; dw Lance_h
+ dw $623d ; dw Lance_h ; unused
+ dw $623d ; dw Lance_h ; unused
+ dw $623d ; dw Lance_h ; unused
+ dw $623d ; dw Lance_h ; unused
+ dw $642d ; dw HallofFameRoom_h
+ dw $5f31 ; dw UndergroundPathNS_h
+ dw $57a0 ; dw Gary_h ;id=120
+ dw $5f55 ; dw UndergroundPathWE_h
+ dw $42b7 ; dw CeladonMart1_h
+ dw $60d9 ; dw CeladonMart2_h
+ dw $4157 ; dw CeladonMart3_h
+ dw $4251 ; dw CeladonMart4_h
+ dw $42d0 ; dw CeladonMartRoof_h
+ dw $44ff ; dw CeladonMartElevator_h
+ dw $4593 ; dw CeladonMansion1_h
+ dw $465a ; dw CeladonMansion2_h
+ dw $46b0 ; dw CeladonMansion3_h ;id=130
+ dw $4861 ; dw CeladonMansion4_h
+ dw $5636 ; dw CeladonMansion5_h
+ dw $48af ; dw CeladonPokecenter_h
+ dw $4915 ; dw CeladonGym_h
+ dw $4bc8 ; dw CeladonGameCorner_h
+ dw $507f ; dw CeladonMart5_h
+ dw $5107 ; dw CeladonPrizeRoom_h
+ dw $5168 ; dw CeladonDiner_h
+ dw $51e8 ; dw CeladonHouse_h
+ dw $5243 ; dw CeladonHotel_h ;id=140
+ dw $479c ; dw LavenderPokecenter_h
+ dw $4420 ; dw PokemonTower1_h
+ dw $44e7 ; dw PokemonTower2_h
+ dw $46af ; dw PokemonTower3_h
+ dw $47d9 ; dw PokemonTower4_h
+ dw $4915 ; dw PokemonTower5_h
+ dw $4ad2 ; dw PokemonTower6_h
+ dw $4ce8 ; dw PokemonTower7_h
+ dw $51a4 ; dw LavenderHouse1_h
+ dw $4802 ; dw LavenderMart_h ;id=150
+ dw $52aa ; dw LavenderHouse2_h
+ dw $5685 ; dw FuchsiaMart_h
+ dw $4851 ; dw FuchsiaHouse1_h
+ dw $489c ; dw FuchsiaPokecenter_h
+ dw $4902 ; dw FuchsiaHouse2_h
+ dw $4a1a ; dw SafariZoneEntrance_h
+ dw $4bd9 ; dw FuchsiaGym_h
+ dw $4e7f ; dw FuchsiaMeetingRoom_h
+ dw $6578 ; dw SeafoamIslands2_h
+ dw $66b4 ; dw SeafoamIslands3_h ;id=160
+ dw $67f0 ; dw SeafoamIslands4_h
+ dw $69fc ; dw SeafoamIslands5_h
+ dw $6054 ; dw VermilionHouse2_h
+ dw $6160 ; dw FuchsiaHouse3_h
+ dw $4344 ; dw Mansion1_h
+ dw $4ee6 ; dw CinnabarGym_h
+ dw $53fb ; dw Lab1_h
+ dw $5490 ; dw Lab2_h
+ dw $54f6 ; dw Lab3_h
+ dw $55a0 ; dw Lab4_h ;id=170
+ dw $569b ; dw CinnabarPokecenter_h
+ dw $5701 ; dw CinnabarMart_h
+ dw $5701 ; dw CinnabarMart_h ; unused
+ dw $5d45 ; dw IndigoPlateauLobby_h
+ dw $5746 ; dw CopycatsHouse1F_h
+ dw $4b5b ; dw CopycatsHouse2F_h
+ dw $4c47 ; dw FightingDojo_h
+ dw $4ef7 ; dw SaffronGym_h
+ dw $56db ; dw SaffronHouse1_h
+ dw $52f3 ; dw SaffronMart_h ;id=180
+ dw $5338 ; dw SilphCo1_h
+ dw $541f ; dw SaffronPokecenter_h
+ dw $573a ; dw SaffronHouse2_h
+ dw $558d ; dw Route15Gate_h
+ dw $55d5 ; dw Route15GateUpstairs_h
+ dw $5649 ; dw Route16Gate_h
+ dw $5796 ; dw Route16GateUpstairs_h
+ dw $5ef6 ; dw Route16House_h
+ dw $64a5 ; dw Route12House_h
+ dw $5801 ; dw Route18Gate_h ;id=190
+ dw $5900 ; dw Route18GateUpstairs_h
+ dw $487e ; dw SeafoamIslands1_h
+ dw $5f81 ; dw Route22Gate_h
+ dw $57cc ; dw VictoryRoad2_h
+ dw $54eb ; dw Route12GateUpstairs_h
+ dw $5d05 ; dw VermilionHouse3_h
+ dw $5f79 ; dw DiglettsCave_h
+ dw $4a0d ; dw VictoryRoad3_h
+ dw $4c5e ; dw RocketHideout1_h
+ dw $4ebb ; dw RocketHideout2_h ;200
+ dw $52b9 ; dw RocketHideout3_h
+ dw $54f1 ; dw RocketHideout4_h
+ dw $5958 ; dw RocketHideoutElevator_h
+ dw $5958 ; dw RocketHideoutElevator_h ; unused
+ dw $5958 ; dw RocketHideoutElevator_h ; unused
+ dw $5958 ; 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 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 $620e ; dw BeachHouse_h
diff --git a/data/town_map_entries.asm b/data/town_map_entries.asm
index bb0f31ff..865f14d8 100755
--- a/data/town_map_entries.asm
+++ b/data/town_map_entries.asm
@@ -94,7 +94,7 @@ InternalMapEntries: ; 7140b (1c:540b)
IMAP SAFARI_ZONE_REST_HOUSE_4, $8,$C,SafariZoneName
IMAP UNKNOWN_DUNGEON_1, $9,$1,CeruleanCaveName
IMAP NAME_RATERS_HOUSE, $E,$5,LavenderTownName
- IMAP CERULEAN_HOUSE_3, $A,$2,CeruleanCityName
+ IMAP CERULEAN_HOUSE_2, $A,$2,CeruleanCityName
IMAP ROCK_TUNNEL_2, $E,$3,RockTunnelName
IMAP SILPH_CO_ELEVATOR, $A,$5,SilphCoName
IMAP AGATHAS_ROOM, $0,$2,PokemonLeagueName
diff --git a/engine/HoF_room_pc.asm b/engine/HoF_room_pc.asm
index e00fc57d..51575a9d 100755
--- a/engine/HoF_room_pc.asm
+++ b/engine/HoF_room_pc.asm
@@ -1,173 +1,214 @@
-HallOfFamePC: ; 7405c (1d:405c)
- callba AnimateHallOfFame
+HallOfFamePC:
+ callab FallingStarEnd
call ClearScreen
ld c, 100
call DelayFrames
+
call DisableLCD
- ld hl, vFont
- ld bc, $800 / 2
- call ZeroMemory
- ld hl, vChars2 + $600
- ld bc, $200 / 2
- call ZeroMemory
- ld hl, vChars2 + $7e0
- ld bc, $10
- ld a, $ff
- call FillMemory
+ ld a, $a7
+ ld [rWX], a
+ xor a
+ ld [rSCX], a
+ ld [rSCY], a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld [hWY], a
+ ld [rWY], a
+ call CreditsLoadFont
coord hl, 0, 0
call FillFourRowsWithBlack
coord hl, 0, 14
call FillFourRowsWithBlack
- ld a, $c0
+ ld a, %11000000
ld [rBGP], a
+ call UpdateGBCPal_BGP
call EnableLCD
- ld a, $ff
- call PlaySoundWaitForCurrent
+ call StopAllMusic
+ ld hl, vBGMap1
+ call CreditsCopyTileMapToVRAM
+ ld hl, vBGMap0
+ call CreditsCopyTileMapToVRAM
ld c, BANK(Music_Credits)
ld a, MUSIC_CREDITS
call PlayMusic
ld c, 128
call DelayFrames
xor a
- ld [wUnusedCD3D], a ; not read
+ ld [wHoFMonSpecies], a
ld [wNumCreditsMonsDisplayed], a
jp Credits
-FadeInCreditsText: ; 740ba (1d:40ba)
+FadeInCreditsText:
+ ld a, $1
+ ld [H_AUTOBGTRANSFERENABLED], a
ld hl, HoFGBPalettes
ld b, 4
-.asm_740bf
+.asm_f0f91
ld a, [hli]
ld [rBGP], a
+ call UpdateGBCPal_BGP
ld c, 5
call DelayFrames
dec b
- jr nz, .asm_740bf
+ jr nz, .asm_f0f91
ret
-DisplayCreditsMon: ; 740cb (1d:40cb)
- xor a
- ld [H_AUTOBGTRANSFERENABLED],a
- call SaveScreenTilesToBuffer1
- call FillMiddleOfScreenWithWhite
+HoFGBPalettes:
+ db %11000000
+ db %11010000
+ db %11100000
+ db %11110000
- ; display the next monster from CreditsMons
- ld hl,wNumCreditsMonsDisplayed
- ld c,[hl] ; how many monsters have we displayed so far?
- inc [hl]
- ld b,0
- ld hl,CreditsMons
- add hl,bc ; go that far in the list of monsters and get the next one
- ld a,[hl]
- ld [wcf91],a
- ld [wd0b5],a
- coord hl, 8, 6
- call GetMonHeader
- call LoadFrontSpriteByMonIndex
- ld hl,vBGMap0 + $c
+DisplayCreditsMon:
+ ld hl, vBGMap1
call CreditsCopyTileMapToVRAM
xor a
- ld [H_AUTOBGTRANSFERENABLED],a
- call LoadScreenTilesFromBuffer1
- ld hl,vBGMap0
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ld hl, rLCDC
+ set 3, [hl]
+ call SaveScreenTilesToBuffer2
+ call FillMiddleOfScreenWithWhite
+ call GetNextCreditsMon
+ ld hl, vBGMap0 + 12
call CreditsCopyTileMapToVRAM
- ld a,$A7
- ld [rWX],a
- ld hl,vBGMap1
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call LoadScreenTilesFromBuffer2DisableBGTransfer
+ ld hl, vBGMap0
call CreditsCopyTileMapToVRAM
- call FillMiddleOfScreenWithWhite
- ld a,%11111100 ; make the mon a black silhouette
- ld [rBGP],a
-
-; scroll the mon left by one tile 7 times
- ld bc,7
-.scrollLoop1
+ ld a, %11111100
+ ld [rBGP], a
+ call UpdateGBCPal_BGP
+ ld hl, rLCDC
+ res 3, [hl]
+ ld a, 1
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ld b, 0
+ ld c, 10
call ScrollCreditsMonLeft
- dec c
- jr nz,.scrollLoop1
-
-; scroll the mon left by one tile 20 times
-; This time, we have to move the window left too in order to hide the text that
-; is wrapping around to the right side of the screen.
- ld c,20
-.scrollLoop2
+ call FillLeftHalfOfScreenWithWhite
+ ld c, 10
call ScrollCreditsMonLeft
- ld a,[rWX]
- sub 8
- ld [rWX],a
- dec c
- jr nz,.scrollLoop2
-
+ call FillRightHalfOfScreenWithWhite
+ ld c, 8
+ call ScrollCreditsMonLeft
+ ld a, %11000000
+ ld [rBGP], a
+ call UpdateGBCPal_BGP
xor a
- ld [hWY],a
- ld a,%11000000
- ld [rBGP],a
+ ld [hSCX], a
ret
-INCLUDE "data/credit_mons.asm"
-
-ScrollCreditsMonLeft: ; 74140 (1d:4140)
- ld h, b
- ld l, $20
- call ScrollCreditsMonLeft_SetSCX
- ld h, $0
- ld l, $70
- call ScrollCreditsMonLeft_SetSCX
+ScrollCreditsMonLeft:
+.asm_f0fff
ld a, b
- add $8
+ ld [hSCX], a
+ add 8
ld b, a
+ call DelayFrame
+ dec c
+ jr nz, .asm_f0fff
ret
-ScrollCreditsMonLeft_SetSCX: ; 74152 (1d:4152)
- ld a, [rLY]
- cp l
- jr nz, ScrollCreditsMonLeft_SetSCX
- ld a, h
- ld [rSCX], a
-.loop
- ld a, [rLY]
- cp h
- jr z, .loop
+GetNextCreditsMon:
+ ld hl, wNumCreditsMonsDisplayed
+ ld c, [hl]
+ inc [hl]
+ ld b, 0
+ ld hl, CreditsMons
+ add hl, bc
+ ld a, [hl]
+ ld [wcf91], a
+ ld [wd0b5], a
+ coord hl, 8, 6
+ call GetMonHeader
+ call LoadFrontSpriteByMonIndex
ret
-HoFGBPalettes: ; 74160 (1d:4160)
- db %11000000
- db %11010000
- db %11100000
- db %11110000
+INCLUDE "data/credit_mons.asm"
-CreditsCopyTileMapToVRAM: ; 74164 (1d:4164)
+CreditsCopyTileMapToVRAM:
ld a, l
- ld [H_AUTOBGTRANSFERDEST], a
+ ld [$ffbc], a
ld a, h
- ld [H_AUTOBGTRANSFERDEST + 1], a
- ld a, 1
+ ld [$ffbd], a
+ ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
jp Delay3
-ZeroMemory: ; 74171 (1d:4171)
-; zero bc bytes at hl
+CreditsLoadFont:
+ call LoadFontTilePatterns
+ ld hl, vChars1
+ ld bc, $40 * $10
+ call ZeroMemory
+
+ call LoadTextBoxTilePatterns
+ ld hl, vChars2 + $60 * $10
+ ld bc, $10 * $10
+ call ZeroMemory
+
+ ld hl, vChars2 + $7e * $10
+ ld bc, $1 * $10
+ ld a, $ff
+ call FillMemory
+ ret
+
+ZeroMemory:
+.asm_f1071
ld [hl], 0
inc hl
inc hl
dec bc
ld a, b
or c
- jr nz, ZeroMemory
+ jr nz, .asm_f1071
ret
-FillFourRowsWithBlack: ; 7417b (1d:417b)
- ld bc, SCREEN_WIDTH * 4
+FillFourRowsWithBlack:
+ ld bc, 4 * SCREEN_WIDTH
ld a, $7e
jp FillMemory
-FillMiddleOfScreenWithWhite: ; 74183 (1d:4183)
+FillMiddleOfScreenWithWhite:
coord hl, 0, 4
- ld bc, SCREEN_WIDTH * 10
+ ld bc, 10 * SCREEN_WIDTH
ld a, " "
jp FillMemory
-Credits: ; 7418e (1d:418e)
+FillLeftHalfOfScreenWithWhite:
+ coord hl, 0, 4
+ push bc
+ call FillHalfOfScreenWithWhite
+ pop bc
+ ret
+
+FillRightHalfOfScreenWithWhite:
+ coord hl, 10, 4
+ push bc
+ call FillHalfOfScreenWithWhite
+ pop bc
+ ret
+
+FillHalfOfScreenWithWhite:
+ ld b, 10
+ ld c, 10
+ ld a, " "
+.asm_f10a6
+ push bc
+ push hl
+.asm_f10a8
+ ld [hli], a
+ dec c
+ jr nz, .asm_f10a8
+ pop hl
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_f10a6
+ ret
+
+Credits: ; Roll credits
ld de, CreditsOrder
push de
.nextCreditsScreen
@@ -192,58 +233,48 @@ Credits: ; 7418e (1d:418e)
jr z, .showCopyrightText
cp $fa
jr z, .showTheEnd
- push hl
- push hl
- ld hl, CreditsTextPointers
- add a
- ld c, a
- ld b, 0
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld a, [de]
- inc de
- ld c, a
- ld b, $ff
- pop hl
- add hl, bc
- call PlaceString
- pop hl
- ld bc, SCREEN_WIDTH * 2
- add hl, bc
+ call PlaceCreditsText
pop de
jr .nextCreditsCommand
+
+.showCopyrightText
+ callba LoadCopyrightTiles
+ pop de
+ jr .nextCreditsCommand
+
+
.fadeInTextAndShowMon
call FadeInCreditsText
- ld c, 90
+ ld c, 102
jr .next1
+
.showTextAndShowMon
- ld c, 110
+ ld c, 122
.next1
call DelayFrames
call DisplayCreditsMon
jr .nextCreditsScreen
+
.fadeInText
call FadeInCreditsText
- ld c, 120
+ ld c, 132
jr .next2
+
.showText
- ld c, 140
+ ld c, 152
.next2
call DelayFrames
jr .nextCreditsScreen
-.showCopyrightText
- push de
- callba LoadCopyrightTiles
- pop de
- pop de
- jr .nextCreditsCommand
+
.showTheEnd
- ld c, 16
+ call ShowTheEndGFX
+ pop de
+ ret
+
+ShowTheEndGFX:
+ ld c, 24
call DelayFrames
call FillMiddleOfScreenWithWhite
- pop de
ld de, TheEndGfx
ld hl, vChars2 + $600
lb bc, BANK(TheEndGfx), (TheEndGfxEnd - TheEndGfx) / $10
@@ -258,8 +289,31 @@ Credits: ; 7418e (1d:418e)
TheEndTextString: ; 74229 (1d:4229)
; "T H E E N D"
- db $60," ",$62," ",$64," ",$64," ",$66," ",$68,"@"
- db $61," ",$63," ",$65," ",$65," ",$67," ",$69,"@"
+ db $60, " ", $62, " ", $64, " ", $64, " ", $66, " ", $68, "@"
+ db $61, " ", $63, " ", $65, " ", $65, " ", $67, " ", $69, "@"
+
+PlaceCreditsText:
+ push hl
+ push hl
+ ld hl, CreditsTextPointers
+ ld c, a
+ ld b, 0
+ add hl, bc
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ pop hl
+ ld a, [de]
+ inc de
+ ld c, a
+ ld b, $ff
+ add hl, bc
+ call PlaceString
+ pop hl
+ ld bc, SCREEN_WIDTH * 2
+ add hl, bc
+ ret
INCLUDE "data/credits_order.asm"
@@ -268,3 +322,4 @@ INCLUDE "text/credits_text.asm"
TheEndGfx: ; 7473e (1d:473e) (7473f on blue)
INCBIN "gfx/theend.interleave.2bpp"
TheEndGfxEnd:
+
diff --git a/engine/bank3c.asm b/engine/bank3c.asm
index cadfe1cf..d176511c 100644
--- a/engine/bank3c.asm
+++ b/engine/bank3c.asm
@@ -14,10 +14,11 @@ PlayPikachuSoundClip:: ; f0000 (3c:4000)
ld c, $4
.loop
dec c
- jr z, .asm_f0019
+ jr z, .done_delay
call DelayFrame
jr .loop
-.asm_f0019
+
+.done_delay
di
push bc
push hl
@@ -90,74 +91,74 @@ PikachuCriesPointerTable: ; f008e (3c:408e)
; dw pointer to cry
; bank 21
- dbw BANK(PikachuCry1), PikachuCry1 ; 21:4000
- dbw BANK(PikachuCry2), PikachuCry2 ; 21:491a
- dbw BANK(PikachuCry3), PikachuCry3 ; 21:4fdc
- dbw BANK(PikachuCry4), PikachuCry4 ; 21:59ee
-
+ pikacry_def PikachuCry1 ; 21:4000
+ pikacry_def PikachuCry2 ; 21:491a
+ pikacry_def PikachuCry3 ; 21:4fdc
+ pikacry_def PikachuCry4 ; 21:59ee
+
; bank 22
- dbw BANK(PikachuCry5), PikachuCry5 ; 22:4000
- dbw BANK(PikachuCry6), PikachuCry6 ; 22:5042
- dbw BANK(PikachuCry7), PikachuCry7 ; 22:6254
-
+ pikacry_def PikachuCry5 ; 22:4000
+ pikacry_def PikachuCry6 ; 22:5042
+ pikacry_def PikachuCry7 ; 22:6254
+
; bank 23
- dbw BANK(PikachuCry8), PikachuCry8 ; 23:4000
- dbw BANK(PikachuCry9), PikachuCry9 ; 23:50ca
- dbw BANK(PikachuCry10), PikachuCry10 ; 23:5e0c
+ pikacry_def PikachuCry8 ; 23:4000
+ pikacry_def PikachuCry9 ; 23:50ca
+ pikacry_def PikachuCry10 ; 23:5e0c
; bank 24
- dbw BANK(PikachuCry11), PikachuCry11 ; 24:4000
- dbw BANK(PikachuCry12), PikachuCry12 ; 24:4722
- dbw BANK(PikachuCry13), PikachuCry13 ; 24:54a4
-
+ pikacry_def PikachuCry11 ; 24:4000
+ pikacry_def PikachuCry12 ; 24:4722
+ pikacry_def PikachuCry13 ; 24:54a4
+
; bank 25
- dbw BANK(PikachuCry14), PikachuCry14 ; 25:4000
- dbw BANK(PikachuCry15), PikachuCry15 ; 25:589a
-
+ pikacry_def PikachuCry14 ; 25:4000
+ pikacry_def PikachuCry15 ; 25:589a
+
; banks 31-34, in no particular order
- dbw BANK(PikachuCry16), PikachuCry16 ; 31:4000
- dbw BANK(PikachuCry17), PikachuCry17 ; 34:4000
- dbw BANK(PikachuCry18), PikachuCry18 ; 31:549a
- dbw BANK(PikachuCry19), PikachuCry19 ; 33:4000
- dbw BANK(PikachuCry20), PikachuCry20 ; 32:4000
- dbw BANK(PikachuCry21), PikachuCry21 ; 32:6002
- dbw BANK(PikachuCry22), PikachuCry22 ; 31:63a4
- dbw BANK(PikachuCry23), PikachuCry23 ; 34:4862
- dbw BANK(PikachuCry24), PikachuCry24 ; 33:5632
- dbw BANK(PikachuCry25), PikachuCry25 ; 34:573c
- dbw BANK(PikachuCry26), PikachuCry26 ; 33:725c
-
+ pikacry_def PikachuCry16 ; 31:4000
+ pikacry_def PikachuCry17 ; 34:4000
+ pikacry_def PikachuCry18 ; 31:549a
+ pikacry_def PikachuCry19 ; 33:4000
+ pikacry_def PikachuCry20 ; 32:4000
+ pikacry_def PikachuCry21 ; 32:6002
+ pikacry_def PikachuCry22 ; 31:63a4
+ pikacry_def PikachuCry23 ; 34:4862
+ pikacry_def PikachuCry24 ; 33:5632
+ pikacry_def PikachuCry25 ; 34:573c
+ pikacry_def PikachuCry26 ; 33:725c
+
; bank 35
- dbw BANK(PikachuCry27), PikachuCry27 ; 35:4000
- dbw BANK(PikachuCry28), PikachuCry28 ; 35:4b5a
- dbw BANK(PikachuCry29), PikachuCry29 ; 35:5da4
- dbw BANK(PikachuCry30), PikachuCry30 ; 35:69ce
- dbw BANK(PikachuCry31), PikachuCry31 ; 35:6e80
-
+ pikacry_def PikachuCry27 ; 35:4000
+ pikacry_def PikachuCry28 ; 35:4b5a
+ pikacry_def PikachuCry29 ; 35:5da4
+ pikacry_def PikachuCry30 ; 35:69ce
+ pikacry_def PikachuCry31 ; 35:6e80
+
; bank 36
- dbw BANK(PikachuCry32), PikachuCry32 ; 36:4000
- dbw BANK(PikachuCry33), PikachuCry33 ; 36:458a
- dbw BANK(PikachuCry34), PikachuCry34 ; 36:523c
-
+ pikacry_def PikachuCry32 ; 36:4000
+ pikacry_def PikachuCry33 ; 36:458a
+ pikacry_def PikachuCry34 ; 36:523c
+
; bank 37
- dbw BANK(PikachuCry35), PikachuCry35 ; 37:4000
- dbw BANK(PikachuCry36), PikachuCry36 ; 37:522a
+ pikacry_def PikachuCry35 ; 37:4000
+ pikacry_def PikachuCry36 ; 37:522a
; banks 36-38
- dbw BANK(PikachuCry37), PikachuCry37 ; 38:4000
- dbw BANK(PikachuCry38), PikachuCry38 ; 38:4dfa
- dbw BANK(PikachuCry39), PikachuCry39 ; 37:6e0c
- dbw BANK(PikachuCry40), PikachuCry40 ; 38:5a64
- dbw BANK(PikachuCry41), PikachuCry41 ; 36:6746
- dbw BANK(PikachuCry42), PikachuCry42 ; 38:6976
+ pikacry_def PikachuCry37 ; 38:4000
+ pikacry_def PikachuCry38 ; 38:4dfa
+ pikacry_def PikachuCry39 ; 37:6e0c
+ pikacry_def PikachuCry40 ; 38:5a64
+ pikacry_def PikachuCry41 ; 36:6746
+ pikacry_def PikachuCry42 ; 38:6976
INCLUDE "engine/overworld/advance_player_sprite.asm"
ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274)
; Reset player status on blackout.
xor a
- ld [wd435],a
+ ld [wd435], a
xor a ; gamefreak copypasting functions (double xor a)
ld [wBattleResult], a
ld [wWalkBikeSurfState], a
@@ -202,35 +203,56 @@ ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274)
ld a, %11111111
ld [wJoyIgnore], a
predef_jump HealParty
-
+
Func_f02da:: ; f02da (3c:42da)
- ld a,[wCurMap]
+ ld a, [wCurMap]
cp VERMILION_GYM ; ??? new thing about verm gym?
- jr z,.asm_f02ee
- ld c,a
- ld hl,Pointer_f02fa
+ jr z, .asm_f02ee
+ ld c, a
+ ld hl, Pointer_f02fa
.asm_f02e5
- ld a,[hli]
+ ld a, [hli]
cp c
- jr z,.asm_f02f4
- cp a,$ff
- jr nz,.asm_f02e5
+ jr z, .asm_f02f4
+ cp a, $ff
+ jr nz, .asm_f02e5
ret
.asm_f02ee
- ld hl,wd126
- set 6,[hl]
+ ld hl, wd126
+ set 6, [hl]
ret
.asm_f02f4
- ld hl,wd126
- set 5,[hl]
+ ld hl, wd126
+ set 5, [hl]
ret
Pointer_f02fa:: ; f02fa (3c:42fa)
- db $cf,$d0,$d1,$d2,$d3,$d4
- db $d5,$e9,$ea,$eb,$d6,$d7
- db $d8,$a5,$a6,$87,$c7,$ca
- db $c6,$6c,$c2,$71,$f5,$f6
- db $f7,$ff
+ db SILPH_CO_2F
+ db SILPH_CO_3F
+ db SILPH_CO_4F
+ db SILPH_CO_5F
+ db SILPH_CO_6F
+ db SILPH_CO_7F
+ db SILPH_CO_8F
+ db SILPH_CO_9F
+ db SILPH_CO_10F
+ db SILPH_CO_11F
+ db MANSION_2
+ db MANSION_3
+ db MANSION_4
+ db MANSION_1
+ db CINNABAR_GYM
+ db GAME_CORNER
+ db ROCKET_HIDEOUT_1
+ db ROCKET_HIDEOUT_4
+ db VICTORY_ROAD_3
+ db VICTORY_ROAD_1
+ db VICTORY_ROAD_2
+ db LANCES_ROOM
+ db LORELEIS_ROOM
+ db BRUNOS_ROOM
+ db AGATHAS_ROOM
+ db $ff
BeachHouse_GFX:: ; f0314 (3c:4314)
INCBIN "gfx/tilesets/beachhouse.2bpp"
@@ -240,42 +262,351 @@ BeachHouse_Block:: ; f0914 (3c:4914)
Func_f0a54:: ; f0a54 (3c:4a54)
ret
-
+
Func_f0a55:: ; f0a55 (3c:4a55)
- ld hl,Pointer_f0a76 ; 3c:4a76
+ ld hl, Pointer_f0a76 ; 3c:4a76
.loop
- ld a,[hli]
- cp a,$ff
+ ld a, [hli]
+ cp a, $ff
ret z
- ld b,a
- ld a,[wCurMap]
+ ld b, a
+ ld a, [wCurMap]
cp b
- jr z,.asm_f0a68
+ jr z, .asm_f0a68
inc hl
inc hl
inc hl
jr .loop
.asm_f0a68
- ld a,[hli]
- ld c,a
- ld b,$0
- ld a,[hli]
- ld h,[hl]
- ld l,a
- ld de,wMissableObjectList
+ ld a, [hli]
+ ld c, a
+ ld b, $0
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, wMissableObjectList
call CopyData
ret
Pointer_f0a76:: ; f0a76 (3c:4a76)
- db $27,$07,$7b,$4a,$ff
- db $01,$ec,$02,$ed,$03,$ee,$ff
-
- dr $f0a82,$f220e
-BeachHouse_h: ; f220e (3c:620e)
-;INCLUDE "data/mapHeaders/beach_house.asm"
- dr $f220e,$f24ae
-Func_f24ae: ; f24ae (3c:64ae)
- dr $f24ae,$f25f8
-CheckForHiddenObject:: ; f25f8 (3c:65f8)
- dr $f25f8,$f4000 \ No newline at end of file
+ db $27, $07, $7b, $4a, $ff
+ db $01, $ec, $02, $ed, $03, $ee, $ff
+
+Func_f0a82: ; f0a82
+ ld a, [wd472]
+ bit 7, a
+ ret z
+ ld a, [wWalkBikeSurfState]
+ and a
+ ret nz
+ push hl
+ push bc
+ callab GetPikachuFacingDirectionAndReturnToE
+ pop bc
+ pop hl
+ ld a, b
+ cp e
+ ret nz
+ push hl
+ ld a, [wUpdateSpritesEnabled]
+ push af
+ ld a, $ff
+ ld [wUpdateSpritesEnabled], a
+ callab LoadPikachuShadowIntoVRAM
+ pop af
+ ld [wUpdateSpritesEnabled], a
+ pop hl
+ call Func_159b ; homecall Func_fd2a1 - pikachu movement script?
+ callab Func_fcba1
+ ret
+
+Pic_f0abf: ; f0abf (3c:4abf)
+ dr $f0abf, $f0b64
+GFX_f0b64: ; f0b64 (3c:4b64)
+ dr $f0b64, $f0cf4
+Pic_f0cf4: ; f0cf4 (3c:4cf4)
+ dr $f0cf4, $f0d82
+GFX_f0d82: ; f0d82 (3c:4d82)
+ dr $f0d82, $f0f12
+
+Func_f0f12:
+ ld hl, NurseChanseyText
+ call PrintText
+ ld a, CHANSEY
+ call PlayCry
+ call WaitForSoundToFinish
+ ret
+
+NurseChanseyText:
+ TX_FAR _NurseChanseyText
+ db "@"
+
+INCLUDE "engine/HoF_room_pc.asm"
+INCLUDE "scripts/viridiancity2.asm"
+INCLUDE "scripts/vermilioncity2.asm"
+INCLUDE "scripts/celadoncity2.asm"
+INCLUDE "scripts/route1_2.asm"
+INCLUDE "scripts/route22_2.asm"
+INCLUDE "scripts/redshouse1f2.asm"
+INCLUDE "scripts/oakslab2.asm"
+INCLUDE "scripts/school2.asm"
+INCLUDE "scripts/museum1f2.asm"
+INCLUDE "scripts/pewterpokecenter2.asm"
+
+Func_f1e22:
+ ld hl, PikachuMovementData_f1e2b
+ ld b, SPRITE_FACING_RIGHT
+ call Func_f0a82
+ ret
+
+PikachuMovementData_f1e2b:
+ db $00
+ db $1d
+ db $1f
+ db $38
+ db $3f
+
+Func_f1e30
+ CheckEvent EVENT_GOT_TM18
+ jr nz, .asm_f1e54
+ ld hl, CeladonMart3Text_f1e5b
+ call PrintText
+ lb bc, TM_18, 1
+ call GiveItem
+ jr nc, .asm_f1e4f
+ SetEvent EVENT_GOT_TM18
+ ld hl, CeladonMart3Text_f1e60
+ jr .asm_f1e57
+
+.asm_f1e4f
+ ld hl, CeladonMart3Text_f1e6b
+ jr .asm_f1e57
+
+.asm_f1e54
+ ld hl, CeladonMart3Text_f1e66
+.asm_f1e57
+ call PrintText
+ ret
+
+CeladonMart3Text_f1e5b:
+ TX_FAR _TM18PreReceiveText
+ db "@"
+
+CeladonMart3Text_f1e60:
+ TX_FAR _ReceivedTM18Text
+ TX_SFX_ITEM
+ db "@"
+
+CeladonMart3Text_f1e66:
+ TX_FAR _TM18ExplanationText
+ db "@"
+
+CeladonMart3Text_f1e6b:
+ TX_FAR _TM18NoRoomText
+ db "@"
+
+Func_f1e70:
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, CeladonMansion1Text_f1e96
+ call PrintText
+ callab IsStarterPikachuInOurParty
+ ret nc
+ ld hl, CeladonMansionText_f1e9c
+ call PrintText
+ ld a, $0
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call Func_f1ea2
+ call PrintText
+ ret
+
+CeladonMansion1Text_f1e96:
+ TX_FAR _CeladonMansion1Text2
+ TX_WAIT_BUTTON
+ db "@"
+
+CeladonMansionText_f1e9c:
+ TX_FAR _CeladonMansion1Text6
+ TX_BUTTON_SOUND
+ db "@"
+
+Func_f1ea2:
+ ld hl, PikachuHappinessThresholds_f1eb9
+.asm_f1ea5
+ ld a, [hli]
+ inc hl
+ and a
+ jr z, .asm_f1eb5
+ ld b, a
+ ld a, [wPikachuHappiness]
+ cp b
+ jr c, .asm_f1eb5
+ inc hl
+ inc hl
+ jr .asm_f1ea5
+
+.asm_f1eb5
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+
+PikachuHappinessThresholds_f1eb9
+ dw 51, CeladonMansion1Text_f1ed5
+ dw 101, CeladonMansion1Text_f1eda
+ dw 131, CeladonMansion1Text_f1edf
+ dw 161, CeladonMansion1Text_f1ee4
+ dw 201, CeladonMansion1Text_f1ee9
+ dw 255, CeladonMansion1Text_f1eee
+ dbbw 0, $ff, CeladonMansion1Text_f1eee
+
+CeladonMansion1Text_f1ed5:
+ TX_FAR _CeladonMansion1Text7
+ db "@"
+
+CeladonMansion1Text_f1eda:
+ TX_FAR _CeladonMansion1Text8
+ db "@"
+
+CeladonMansion1Text_f1edf:
+ TX_FAR _CeladonMansion1Text9
+ db "@"
+
+CeladonMansion1Text_f1ee4:
+ TX_FAR _CeladonMansion1Text10
+ db "@"
+
+CeladonMansion1Text_f1ee9:
+ TX_FAR _CeladonMansion1Text11
+ db "@"
+
+CeladonMansion1Text_f1eee:
+ TX_FAR _CeladonMansion1Text12
+ db "@"
+
+ dr $f1ef3, $f218c
+
+INCLUDE "scripts/mtmoonpokecenter2.asm"
+
+INCLUDE "data/mapHeaders/beach_house.asm"
+INCLUDE "scripts/beach_house.asm"
+BeachHouseBlockdata: ; f2388 (3c:6388)
+INCBIN "maps/beach_house.blk"
+INCLUDE "data/mapObjects/beach_house.asm"
+
+INCLUDE "scripts/beach_house2.asm"
+INCLUDE "scripts/billshouse2.asm"
+INCLUDE "scripts/viridianforest2.asm"
+INCLUDE "scripts/ssanne9_2.asm"
+INCLUDE "scripts/silphco11_2.asm"
+
+INCLUDE "engine/overworld/hidden_objects.asm"
+
+Func_f2cd0:
+ ld d, 0
+ ld hl, Jumptable_f2ce1
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call JumpToAddress
+ ld e, a
+ ld d, 0
+ ret
+
+Jumptable_f2ce1:
+ dw Func_f2ceb
+ dw Func_f2ceb
+ dw Func_f2cee
+ dw Func_f2cf4
+ dw Func_f2d06
+
+Func_f2ceb:
+ ld a, 0
+ ret
+
+Func_f2cee:
+ call Random
+ and $1
+ ret
+
+Func_f2cf4: ; should return to a, instead returns to b
+ call Random
+ swap a
+ cp $55
+ ld b, 0
+ ret c
+ cp $aa
+ ld b, 1
+ ret c
+ ld b, 2
+ ret
+
+Func_f2d06:
+ call Random
+ and $3
+ ret
+
+Func_f2d0c:
+ ld hl, GymTrashCans3a
+ ld a, [wGymTrashCanIndex]
+ ld c, a
+ ld b, 0
+ ld a, 9
+ call AddNTimes
+ call AddNTimes ; ????
+ ld a, [hli]
+ ld [hGymTrashCanRandNumMask], a
+ ld e, a
+ push hl
+ call Func_f2cd0
+ pop hl
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld [wSecondLockTrashCanIndex], a
+ ld a, [hl]
+ ld [wSecondLockTrashCanIndex + 1], a
+ ret
+
+GymTrashCans3a: ; f2d31 (3c:6d31)
+; First byte: number of trashcan entries
+; Following four byte pairs: indices for the second trash can.
+; BUG: Rows that have 3 trashcan entries are sampled incorrectly.
+; The sampling occurs by taking a random number and seeing which
+; third of the range 0-255 the number falls in. However, it returns
+; that value to the wrong register, so the result is never used.
+; Instead of using an offset in [0,1,2], the offset is instead
+; in the full range 0-255. This results in truly random behavior.
+ db 4
+ db 1,3, 3,1, 1,-1, 3,-1
+ db 3
+ db 0,2, 2,4, 4,0, -1,-1
+ db 4
+ db 1,5, 5,1, 1,-1, 5,-1
+ db 3
+ db 0,4, 4,6, 6,0, -1,-1
+ db 4
+ db 1,3, 3,1, 5,5, 7,7
+ db 3
+ db 2,4, 4,8, 8,2, -1,-1
+ db 3
+ db 3,7, 7,9, 9,3, -1,-1
+ db 4
+ db 4,8, 6,10, 8,4, 10,6
+ db 3
+ db 5,7, 7,11, 11,5, -1,-1
+ db 3
+ db 6,10, 10,12, 12,6, -1,-1
+ db 4
+ db 7,9, 9,7, 11,13, 13,11
+ db 3
+ db 8,10, 10,14, 14,8, -1,-1
+ db 4
+ db 9,13, 13,9, 9,-1, 13,-1
+ db 3
+ db 10,12, 12,14, 14,10, -1,-1
+ db 4
+ db 11,13, 13,11, 11,-1, 13,-1
diff --git a/engine/bank3f.asm b/engine/bank3f.asm
index 92e6d857..c31fc986 100644
--- a/engine/bank3f.asm
+++ b/engine/bank3f.asm
@@ -4,50 +4,51 @@ INCLUDE "data/map_header_banks.asm"
Func_fc4dd:: ; fc4dd (3f:44dd)
; possibly to test if pika should be out?
- ld a,[wd430]
- bit 5,a
- jr nz,.asm_fc4f8 ; 3f:44f8
- ld a,[wd430]
- bit 7,a
- jr nz,.asm_fc4f8
+ ld a, [wPikachuOverworldStateFlags]
+ bit 5, a
+ jr nz, .hide ; 3f:44f8
+ ld a, [wPikachuOverworldStateFlags]
+ bit 7, a
+ jr nz, .hide
call IsStarterPikachuInOurParty
- jr nc,.asm_fc4f8
- ld a,[wWalkBikeSurfState]
+ jr nc, .hide
+ ld a, [wWalkBikeSurfState]
and a
- jr nz,.asm_fc4f8
+ jr nz, .hide
scf
ret
-.asm_fc4f8
+
+.hide
and a
ret
-
+
Func_fc4fa:: ; fc4fa (3f:44fa)
- ld hl,wd430
- bit 4,[hl]
- res 4,[hl]
- jr nz,.asm_fc515
- call Func_1542
+ ld hl, wPikachuOverworldStateFlags
+ bit 4, [hl]
+ res 4, [hl]
+ jr nz, .asm_fc515
+ call ResetPikachuAsleep
call Func_fc523
- ld a,$ff
- ld [wSpriteStateData1 + $f2],a
- call Func_fcb84
+ ld a, $ff
+ ld [wSpriteStateData1 + $f2], a
+ call ClearPikachuFollowCommandBuffer
call Func_fc5bc
ret
-
+
.asm_fc515
call Func_fc53f
xor a
- ld [wd431],a
- ld a,[wSpriteStateData1 + $9]
- ld [wSpriteStateData1 + $f9],a
+ ld [wd431], a
+ ld a, [wSpriteStateData1 + $9]
+ ld [wSpriteStateData1 + $f9], a
ret
-
+
Func_fc523:: ; fc523 (3f:4523)
- ld hl,wSpriteStateData1 + $f0
+ ld hl, wSpriteStateData1 + $f0
call Func_fc52c
- ld hl,wSpriteStateData2 + $f0
+ ld hl, wSpriteStateData2 + $f0
Func_fc52c:: ; fc52c (3f:4523)
- ld bc,$10
+ ld bc, $10
xor a
call FillMemory
ret
@@ -56,251 +57,274 @@ Func_fc534:: ; fc534 (3f:4534)
call Func_fc53f
call Func_fc5bc
xor a
- ld [wd431],a
+ ld [wd431], a
ret
-
+
Func_fc53f:: ; fc53f (3f:453f)
- ld bc,wSpriteStateData1 + $f0
- ld a,[wYCoord]
+ ld bc, wSpriteStateData1 + $f0
+ ld a, [wYCoord]
add $4
- ld e,a
- ld a,[wXCoord]
+ ld e, a
+ ld a, [wXCoord]
add $4
- ld d,a
- ld a,[wd431]
+ ld d, a
+ ld a, [wd431]
and a
- jr z,.asm_fc5aa
+ jr z, .asm_fc5aa
cp $1
- jr z,.asm_fc59e
+ jr z, .asm_fc59e
cp $2
- jr z,.asm_fc584
+ jr z, .asm_fc584
cp $3
- jr z,.asm_fc5aa
+ jr z, .asm_fc5aa
cp $4
- jr z,.asm_fc5a4
+ jr z, .asm_fc5a4
cp $5
- jr z,.asm_fc5a7
+ jr z, .asm_fc5a7
cp $6
- jr z,.asm_fc5a1
+ jr z, .asm_fc5a1
cp $7
- jr z,.asm_fc572
+ jr z, .asm_fc572
jr .asm_fc59e
-
+
.asm_fc572
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
and a ; SPRITE_FACING_DOWN
- jr z,.asm_fc5a4
- cp SPRITE_FACING_UP
- jr z,.asm_fc5a7
+ jr z, .asm_fc5a4
+ cp SPRITE_FACING_UP
+ jr z, .asm_fc5a7
cp SPRITE_FACING_LEFT
- jr z,.asm_fc5a1
+ jr z, .asm_fc5a1
cp SPRITE_FACING_RIGHT
- jr z,.asm_fc59e
+ jr z, .asm_fc59e
.asm_fc584
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
and a
- jr nz,.asm_fc58d
+ jr nz, .asm_fc58d
dec e
jr .asm_fc5aa
+
.asm_fc58d
cp SPRITE_FACING_UP
- jr nz,.asm_fc594
+ jr nz, .asm_fc594
inc e
jr .asm_fc5aa
+
.asm_fc594
cp SPRITE_FACING_LEFT
- jr nz,.asm_fc59b
+ jr nz, .asm_fc59b
inc d
jr .asm_fc5aa
+
.asm_fc59b
dec d
jr .asm_fc5aa
+
.asm_fc59e
inc d
jr .asm_fc5aa
+
.asm_fc5a1
dec d
jr .asm_fc5aa
+
.asm_fc5a4
inc e
jr .asm_fc5aa
+
.asm_fc5a7
dec e
jr .asm_fc5aa ; useless jr
.asm_fc5aa
- ld hl,$104
- add hl,bc
- ld [hl],e
+ ld hl, $104
+ add hl, bc
+ ld [hl], e
inc hl
- ld [hl],d
+ ld [hl], d
inc hl
Func_fc4b2:: ; fc4b2 (3f:44b2)
- ld [hl],$fe
+ ld [hl], $fe
push hl
- ld hl,wd472
- set 5,[hl]
+ ld hl, wd472
+ set 5, [hl]
pop hl
ret
-
+
Func_fc5bc:: ; fc5bc (3f:45bc)
- ld a,$49
- ld [wSpriteStateData1 + $f0],a
- ld a,$ff
- ld [wSpriteStateData1 + $f2],a
- ld a,[wd431]
+ ld a, $49
+ ld [wSpriteStateData1 + $f0], a
+ ld a, $ff
+ ld [wSpriteStateData1 + $f2], a
+ ld a, [wd431]
and a
- jr z,.asm_fc5e4
+ jr z, .asm_fc5e4
cp $1
- jr z,.asm_fc5e4
+ jr z, .asm_fc5e4
cp $3
- jr z,.asm_fc5eb
+ jr z, .asm_fc5eb
cp $4
- jr z,.asm_fc5e4
+ jr z, .asm_fc5e4
cp $6
- jr z,.asm_fc5e4
+ jr z, .asm_fc5e4
cp $7
- jr z,.asm_fc5f1
+ jr z, .asm_fc5f1
call Func_fccb2
ret
-
+
.asm_fc5e4
- ld a,[wSpriteStateData1 + $9]
- ld [wSpriteStateData1 + $f9],a
+ ld a, [wSpriteStateData1 + $9]
+ ld [wSpriteStateData1 + $f9], a
ret
+
.asm_fc5eb
- ld a,$0
- ld [wSpriteStateData1 + $f9],a
+ ld a, $0
+ ld [wSpriteStateData1 + $f9], a
ret
+
.asm_fc5f1
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
xor $4
- ld [wSpriteStateData1 + $f9],a
+ ld [wSpriteStateData1 + $f9], a
ret
Func_fc5fa:: ; fc5fa (3f:45fa)
- ld a,[wCurMap]
+ ld a, [wCurMap]
cp OAKS_LAB
- jr z,.asm_fc63d
+ jr z, .asm_fc63d
cp ROUTE_22_GATE
- jr z,.asm_fc62d
+ jr z, .asm_fc62d
cp MT_MOON_2
- jr z,.asm_fc635
+ jr z, .asm_fc635
cp ROCK_TUNNEL_1
- jr z,.asm_fc645
- ld a,[wCurMap]
- ld hl,Pointer_fc64b
+ jr z, .asm_fc645
+ ld a, [wCurMap]
+ ld hl, Pointer_fc64b
call Func_1568 ; similar to IsInArray, but not the same
- jr c,.asm_fc639
- ld a,[wCurMap]
- ld hl,Pointer_fc653
+ jr c, .asm_fc639
+ ld a, [wCurMap]
+ ld hl, Pointer_fc653
call Func_1568
- jr nc,.asm_fc641
- ld a,[wSpriteStateData1 + $9]
+ jr nc, .asm_fc641
+ ld a, [wSpriteStateData1 + $9]
and a
- jr nz,.asm_fc641
- ld a,$3
+ jr nz, .asm_fc641
+ ld a, $3
jr .asm_fc647
-
+
.asm_fc62d
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
and a
- jr z,.asm_fc645
+ jr z, .asm_fc645
jr .asm_fc641
+
.asm_fc635
- ld a,$3
+ ld a, $3
jr .asm_fc647
+
.asm_fc639
- ld a,$4
+ ld a, $4
jr .asm_fc647
+
.asm_fc63d
- ld a,$6
+ ld a, $6
jr .asm_fc647
+
.asm_fc641
- ld a,$1
+ ld a, $1
jr .asm_fc647
+
.asm_fc645
- ld a,$3
+ ld a, $3
.asm_fc647
- ld [wd431],a
+ ld [wd431], a
ret
Pointer_fc64b:: ; fc64b (3f:464b)
- db $c2,$4c,$4f,$ba,$be,$b8,$54,$ff
-
+ db $c2, $4c, $4f, $ba, $be, $b8, $54, $ff
+
Pointer_fc653:: ; fc653 (3f:4653)
- db $2f,$e6,$3e,$5e,$80,$31,$a4,$ff
+ db $2f, $e6, $3e, $5e, $80, $31, $a4, $ff
Func_fc65b:: ; fc65b (3f:465b)
- ld a,[wCurMap]
+ ld a, [wCurMap]
cp VIRIDIAN_FOREST_EXIT
- jr z,.asm_fc673
+ jr z, .asm_fc673
cp VIRIDIAN_FOREST_ENTRANCE
- jr z,.asm_fc67c
- ld a,[wCurMap]
- ld hl,Pointer_fc68e
+ jr z, .asm_fc67c
+ ld a, [wCurMap]
+ ld hl, Pointer_fc68e
call Func_1568
- jr c,.asm_fc688
+ jr c, .asm_fc688
jr .asm_fc684
+
.asm_fc673
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
cp SPRITE_FACING_UP
- jr z,.asm_fc688
+ jr z, .asm_fc688
jr .asm_fc684
+
.asm_fc67c
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
and a ; SPRITE_FACING_DOWN
- jr z,.asm_fc684
+ jr z, .asm_fc684
jr .asm_fc688
+
.asm_fc684
- ld a,$0
+ ld a, $0
jr .asm_fc68a
+
.asm_fc688
- ld a,$1
+ ld a, $1
.asm_fc68a
- ld [wd431],a
+ ld [wd431], a
ret
-
+
Pointer_fc68e:: ; fc68e (3f:468e)
- db $33,$dd,$df,$e0,$e1,$de,$ec,$7f,$a8,$a9,$aa,$ff
-
+ db $33, $dd, $df, $e0, $e1, $de, $ec, $7f, $a8, $a9, $aa, $ff
+
Func_fc69a:: ; fc69a (3f:469a)
- ld a,[wCurMap]
+ ld a, [wCurMap]
cp ROUTE_22_GATE
- jr z,.asm_fc6a7
+ jr z, .asm_fc6a7
cp ROUTE_2_GATE
- jr z,.asm_fc6b0
+ jr z, .asm_fc6b0
jr .asm_fc6bd
+
.asm_fc6a7
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
cp SPRITE_FACING_UP
- jr z,.asm_fc6b9
+ jr z, .asm_fc6b9
jr .asm_fc6bd
+
.asm_fc6b0
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
cp SPRITE_FACING_UP
- jr z,.asm_fc6b9
+ jr z, .asm_fc6b9
jr .asm_fc6bd
+
.asm_fc6b9
- ld a,$1
+ ld a, $1
jr .asm_fc6c1
+
.asm_fc6bd
- ld a,$3
+ ld a, $3
jr .asm_fc6c1
+
.asm_fc6c1
- ld [wd431],a
+ ld [wd431], a
ret
Func_fc6c5:: ; fc6c5 (3f:46c5)
push hl
- ld hl,wd430
- set 2,[hl]
+ ld hl, wPikachuOverworldStateFlags
+ set 2, [hl]
pop hl
ret
Func_fc6cd:: ; fc6cd (3f:46cd)
push hl
- ld hl,wd430
- res 2,[hl]
+ ld hl, wPikachuOverworldStateFlags
+ res 2, [hl]
pop hl
ret
@@ -312,32 +336,32 @@ Func_fc6d5:: ; fc6d5 (3f:46d5)
call Func_fcd25
pop bc
ret c
- ld bc,wSpriteStateData1 + $f0
- ld hl,$1
- add hl,bc
- bit 7,[hl]
- jp nz,asm_fc745
- ld a,[wFontLoaded]
- bit 0,a
- jp nz,asm_fc76a
- call Func_154a
- jp nz,asm_fc76a
- ld a,[hl]
+ ld bc, wSpriteStateData1 + $f0
+ ld hl, $1
+ add hl, bc
+ bit 7, [hl]
+ jp nz, asm_fc745
+ ld a, [wFontLoaded]
+ bit 0, a
+ jp nz, asm_fc76a
+ call CheckPikachuAsleep
+ jp nz, asm_fc76a
+ ld a, [hl]
and $7f
cp $a
- jr c,.asm_fc704
+ jr c, .asm_fc704
xor a
.asm_fc704
add a
- ld e,a
- ld d,0
- ld hl,PointerTable_fc710
- add hl,de
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld e, a
+ ld d, 0
+ ld hl, PointerTable_fc710
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
jp hl
-
+
PointerTable_fc710: ; fc710 (3f:4710)
dw Func_fc793
dw Func_fc7aa
@@ -350,16 +374,16 @@ PointerTable_fc710: ; fc710 (3f:4710)
dw asm_fc937
dw asm_fc969
dw Func_fc726
-
+
Func_fc726: ; fc726 (3f:4726)
ret
Func_fc727: ; fc727 (3f:4727)
call Func_fc4dd
- jr nc,.asm_fc73b
- ld a,[wSpriteStateData1 + $f1]
+ jr nc, .asm_fc73b
+ ld a, [wSpriteStateData1 + $f1]
and a
- jr nz,.asm_fc739
+ jr nz, .asm_fc739
push bc
push hl
call Func_fc534
@@ -368,54 +392,57 @@ Func_fc727: ; fc727 (3f:4727)
.asm_fc739
scf
ret
+
.asm_fc73b
- ld hl,wSpriteStateData1 + $f2
- ld [hl],$ff
+ ld hl, wSpriteStateData1 + $f2
+ ld [hl], $ff
dec hl
- ld [hl],$0
+ ld [hl], $0
xor a
ret
+
asm_fc745: ; fc745 (3f:4745)
- ld hl,$1
- add hl,bc
- res 7,[hl]
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],a
- call Func_154a
- jr nz,.asm_fc75f
- ld a,[wSpriteStateData1 + $9]
+ ld hl, $1
+ add hl, bc
+ res 7, [hl]
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], a
+ call CheckPikachuAsleep
+ jr nz, .asm_fc75f
+ ld a, [wSpriteStateData1 + $9]
xor $4
- ld hl,$9
- add hl,bc
- ld [hl],a
+ ld hl, $9
+ add hl, bc
+ ld [hl], a
.asm_fc75f
xor a
- ld hl,$7
- add hl,bc
- ld [hli],a
- ld [hl],a
+ ld hl, $7
+ add hl, bc
+ ld [hli], a
+ ld [hl], a
call Func_fca99
ret
+
asm_fc76a: ; fc76a (3f:476a)
xor a
- ld hl,$7
- add hl,bc
- ld [hli],a
- ld [hl],a
+ ld hl, $7
+ add hl, bc
+ ld [hli], a
+ ld [hl], a
call Func_fca99
call Func_fc82e
- jr c,.asm_fc783
+ jr c, .asm_fc783
push bc
callab InitializeSpriteScreenPosition
pop bc
.asm_fc783
- ld hl,$1
- add hl,bc
- ld [hl],$1
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$0
+ ld hl, $1
+ add hl, bc
+ ld [hl], $1
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $0
call Func_fcba1
ret
@@ -424,562 +451,566 @@ Func_fc793: ; fc793 (3f:4793)
push bc
callab InitializeSpriteScreenPosition
pop bc
- ld hl,$2
- add hl,bc
- ld [hl],$ff
+ ld hl, $2
+ add hl, bc
+ ld [hl], $ff
dec hl
- ld [hl],$1
+ ld [hl], $1
ret
Func_fc7aa: ; fc7aa (3f:47aa)
call Func_fcc92
- jp c,Func_fc803
+ jp c, Func_fc803
dec a
- ld l,a
- ld h,$0
- add hl,hl
- add hl,hl
- ld de,Pointer_fc7e3
- add hl,de
- ld d,h
- ld e,l
- ld a,[de]
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ ld de, Pointer_fc7e3
+ add hl, de
+ ld d, h
+ ld e, l
+ ld a, [de]
inc de
- ld hl,$9
- add hl,bc
- ld [hl],a
- ld a,[de]
+ ld hl, $9
+ add hl, bc
+ ld [hl], a
+ ld a, [de]
inc de
- ld hl,$5
- add hl,bc
- ld [hl],a
+ ld hl, $5
+ add hl, bc
+ ld [hl], a
dec hl
dec hl
- ld a,[de]
- ld [hl],a
+ ld a, [de]
+ ld [hl], a
inc de
- ld a,[de]
- ld hl,$1
- add hl,bc
- ld [hl],a
+ ld a, [de]
+ ld hl, $1
+ add hl, bc
+ ld [hl], a
cp $4
- jp z,Func_fca0a
+ jp z, Func_fca0a
call Func_fcd17
- jp c,Func_fc9df
+ jp c, Func_fc9df
jp Func_fc9b4
Pointer_fc7e3: ; fc7e3 (3f:47e3)
- db $0,$0
- db $1,$3
- db $4,$0
- db $ff,$3
- db $8,$ff
- db $0,$3
- db $c,$1
- db $0,$3
- db $0,$0
- db $1,$4
- db $4,$0
- db $ff,$4
- db $8,$ff
- db $0,$4
- db $c,$1
- db $0,$4
-
+ db $0, $0
+ db $1, $3
+ db $4, $0
+ db $ff, $3
+ db $8, $ff
+ db $0, $3
+ db $c, $1
+ db $0, $3
+ db $0, $0
+ db $1, $4
+ db $4, $0
+ db $ff, $4
+ db $8, $ff
+ db $0, $4
+ db $c, $1
+ db $0, $4
+
Func_fc803: ; fc803 (3f:4803)
call Func_fcae2
ret c
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
- jr nz,.asm_fc823
+ jr nz, .asm_fc823
push hl
call Func_fccee
pop hl
cp $5
- jr nc,Func_fc842
- ld [hl],$20
+ jr nc, Func_fc842
+ ld [hl], $20
call Random
and $c
- ld hl,$9
- add hl,bc
- ld [hl],a
+ ld hl, $9
+ add hl, bc
+ ld [hl], a
.asm_fc823
xor a
- ld hl,$7
- add hl,bc
- ld [hli],a
- ld [hl],a
+ ld hl, $7
+ add hl, bc
+ ld [hli], a
+ ld [hl], a
call Func_fca99
ret
Func_fc82e: ; fc82e (3f:482e)
- ld a,[wWalkCounter]
+ ld a, [wWalkCounter]
and a
ret z
scf
ret
Func_fc835: ; fc835 (3f:4835)
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$10
- ld hl,$1
- add hl,bc
- ld [hl],$1
- ret
-
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $10
+ ld hl, $1
+ add hl, bc
+ ld [hl], $1
+ ret
+
Func_fc842: ; fc842 (3f:4842)
- ld hl,$0
+ ld hl, $0
push af
call Random
- ld a,[hRandomAdd]
+ ld a, [hRandomAdd]
and %11
- ld e,a
- ld d,$0
- ld hl,PointerTable_fc85a
- add hl,de
- add hl,de
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld e, a
+ ld d, $0
+ ld hl, PointerTable_fc85a
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
pop af
jp hl
-
+
PointerTable_fc85a: ; fc85a (3f:485a)
dw Func_fc862
dw Func_fc8f8
dw Func_fc92b
dw Func_fc95d
-
+
Func_fc862: ; fc862 (3f:4862)
dec a
add a
add a
and $c
- ld hl,$9
- add hl,bc
- ld [hl],a
- ld hl,$1
- add hl,bc
- ld [hl],$6
+ ld hl, $9
+ add hl, bc
+ ld [hl], a
+ ld hl, $1
+ add hl, bc
+ ld [hl], $6
xor a
- ld [wd432],a
- ld [wd433],a
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$11
+ ld [wd432], a
+ ld [wd433], a
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $11
asm_fc87f: ; fc87f (3f:487f)
- ld a,[wd432]
- ld e,a
- ld a,[wd433]
- ld d,a
+ ld a, [wd432]
+ ld e, a
+ ld a, [wd433]
+ ld d, a
call Func_fc82e
- jr c,Func_fc8c7
+ jr c, Func_fc8c7
call Func_fc6c5
- ld hl,$4
- add hl,bc
- ld a,[hl]
+ ld hl, $4
+ add hl, bc
+ ld a, [hl]
sub e
- ld e,a
+ ld e, a
inc hl
inc hl
- ld a,[hl]
+ ld a, [hl]
sub d
- ld d,a
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld a,[hl]
+ ld d, a
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld a, [hl]
dec a
add a
add $d6
- ld l,a
- ld a,$48
+ ld l, a
+ ld a, $48
adc $0
- ld h,a
- ld a,[hli]
- ld [wd432],a
+ ld h, a
+ ld a, [hli]
+ ld [wd432], a
add e
- ld e,a
- ld a,[hl]
- ld [wd433],a
+ ld e, a
+ ld a, [hl]
+ ld [wd433], a
add d
- ld d,a
- ld hl,$4
- add hl,bc
- ld [hl],e
+ ld d, a
+ ld hl, $4
+ add hl, bc
+ ld [hl], e
inc hl
inc hl
- ld [hl],d
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld [hl], d
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
ret nz
jp Func_fc835
-
+
Func_fc8c7: ; fc8c7 (3f:48c7)
- ld hl,$4
- add hl,bc
- ld a,[hl]
+ ld hl, $4
+ add hl, bc
+ ld a, [hl]
sub e
- ld [hl],a
+ ld [hl], a
inc hl
inc hl
- ld a,[hl]
+ ld a, [hl]
sub d
- ld [hl],a
+ ld [hl], a
jp Func_fc835
Pointer_fc8d6: ; fc8d6 (3f:48d6)
- db $0,$0,$fe,$1,$fc
- db $2,$fe,$3,$0,$4
- db $fe,$3,$fc,$2,$fe
- db $1,$0,$0,$fe,$ff
- db $fc,$fe,$fe,$fd,$0
- db $fc,$fe,$fd,$fc,$fe
- db $fe,$ff,$00,$00
-
+ db $0, $0, $fe, $1, $fc
+ db $2, $fe, $3, $0, $4
+ db $fe, $3, $fc, $2, $fe
+ db $1, $0, $0, $fe, $ff
+ db $fc, $fe, $fe, $fd, $0
+ db $fc, $fe, $fd, $fc, $fe
+ db $fe, $ff, $00, $00
+
Func_fc8f8: ; fc8f8 (3f:48f8)
- ld hl,$1
- add hl,bc
- ld [hl],$7
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$30
+ ld hl, $1
+ add hl, bc
+ ld [hl], $7
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $30
asm_fc904: ; fc904 (3f:4904)
call Func_fc82e
- jp c,Func_fc835
+ jp c, Func_fc835
call Func_fc6c5
- ld hl,$7
- add hl,bc
- ld a,[hl]
+ ld hl, $7
+ add hl, bc
+ ld a, [hl]
inc a
cp $8
- ld [hl],a
- jr nz,.asm_fc91f
+ ld [hl], a
+ jr nz, .asm_fc91f
xor a
- ld [hli],a
- ld a,[hl]
+ ld [hli], a
+ ld a, [hl]
inc a
and %11
- ld [hl],a
+ ld [hl], a
.asm_fc91f
call Func_fca99
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
ret nz
jp Func_fc835
-
+
Func_fc92b: ; fc92b (3f:492b)
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$20
- ld hl,$1
- add hl,bc
- ld [hl],$8
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $20
+ ld hl, $1
+ add hl, bc
+ ld [hl], $8
asm_fc937: ; fc937 (3f:4937)
call Func_fc82e
- jp c,Func_fc835
+ jp c, Func_fc835
call Func_fc6c5
- ld hl,$7
- add hl,bc
- ld a,[hl]
+ ld hl, $7
+ add hl, bc
+ ld a, [hl]
inc a
cp $8
- ld [hl],a
- jr nz,.asm_fc951
+ ld [hl], a
+ jr nz, .asm_fc951
xor a
- ld [hli],a
- ld a,[hl]
+ ld [hli], a
+ ld a, [hl]
xor $1
- ld [hl],a
+ ld [hl], a
.asm_fc951
call Func_fca99
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
ret nz
jp Func_fc835
-
+
Func_fc95d: ; fc95d (3f:495d)
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$20
- ld hl,$1
- add hl,bc
- ld [hl],$9
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $20
+ ld hl, $1
+ add hl, bc
+ ld [hl], $9
asm_fc969: ; fc969 (3f:4969)
call Func_fc82e
- jp c,Func_fc835
+ jp c, Func_fc835
call Func_fc6c5
- ld hl,$7
- add hl,bc
- ld a,[hl]
+ ld hl, $7
+ add hl, bc
+ ld a, [hl]
inc a
cp $8
- ld [hl],a
- jr nz,.asm_fc988
+ ld [hl], a
+ jr nz, .asm_fc988
xor a
- ld [hl],a
- ld hl,$9
- add hl,bc
- ld a,[hl]
+ ld [hl], a
+ ld hl, $9
+ add hl, bc
+ ld a, [hl]
call Func_fc994
- ld [hl],a
+ ld [hl], a
.asm_fc988
call Func_fca99
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
ret nz
jp Func_fc835
-
+
Func_fc994: ; fc994 (3f:4994)
push hl
- ld hl,Pointer_fc9ac
- ld d,a
+ ld hl, Pointer_fc9ac
+ ld d, a
.loop
- ld a,[hli]
+ ld a, [hli]
cp d
- jr nz,.loop
- ld a,[hl]
+ jr nz, .loop
+ ld a, [hl]
pop hl
ret
-
+
Func_fc9a0: ; fc9a0 (3f:49a0)
push hl
- ld hl,Pointer_fc9ac_End
- ld d,a
+ ld hl, Pointer_fc9ac_End
+ ld d, a
.loop
- ld a,[hld]
+ ld a, [hld]
cp d
- jr nz,.loop
- ld a,[hl]
+ jr nz, .loop
+ ld a, [hl]
pop hl
ret
-
+
Pointer_fc9ac: ; fc9ac (3f:49ac)
- db SPRITE_FACING_DOWN,SPRITE_FACING_LEFT,SPRITE_FACING_UP,SPRITE_FACING_RIGHT
- db SPRITE_FACING_DOWN,SPRITE_FACING_LEFT,SPRITE_FACING_UP,SPRITE_FACING_RIGHT
+ db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT, SPRITE_FACING_UP, SPRITE_FACING_RIGHT
+ db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT, SPRITE_FACING_UP, SPRITE_FACING_RIGHT
Pointer_fc9ac_End:
Func_fc9b4: ; fc9b4 (3f:49b4)
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$8
- ld hl,$1
- add hl,bc
- ld [hl],$3
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $8
+ ld hl, $1
+ add hl, bc
+ ld [hl], $3
call Func_fca38
asm_fc9c3: ; fc9c3 (3f:49c3)
call Func_fca4b
call Func_fca7e
call Func_fca99
- ld hl,$100
- add hl,bc
+ ld hl, $100
+ add hl, bc
dec [hl]
ret nz
call Func_fca75
call Func_fccb2
- ld hl,$1
- add hl,bc
- ld [hl],$1
+ ld hl, $1
+ add hl, bc
+ ld [hl], $1
ret
-
+
Func_fc9df: ; fc9df (3f:49df)
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$4
- ld hl,$1
- add hl,bc
- ld [hl],$5
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $4
+ ld hl, $1
+ add hl, bc
+ ld [hl], $5
call Func_fca38
asm_fc9ee: ; fc9ee (3f:49ee)
call asm_fca59
call Func_fca7e
call Func_fca99
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
ret nz
call Func_fca75
call Func_fccb2
- ld hl,$1
- add hl,bc
- ld [hl],$1
+ ld hl, $1
+ add hl, bc
+ ld [hl], $1
ret
-
+
Func_fca0a: ; fca0a (3f:4a0a)
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$8
- ld hl,$1
- add hl,bc
- ld [hl],$4
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $8
+ ld hl, $1
+ add hl, bc
+ ld [hl], $4
call Func_fca38
call Func_fca38
asm_fca1c: ; fca1c (3f:4a1c)
call asm_fca59
call Func_fca7e
call Func_fca99
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
ret nz
call Func_fca75
call Func_fccb2
- ld hl,$1
- add hl,bc
- ld [hl],$1
+ ld hl, $1
+ add hl, bc
+ ld [hl], $1
ret
-
+
Func_fca38: ; fca38 (3f:4a38)
- ld hl,$3
- add hl,bc
- ld e,[hl]
+ ld hl, $3
+ add hl, bc
+ ld e, [hl]
inc hl
inc hl
- ld d,[hl]
- ld hl,$104
- add hl,bc
- ld a,[hl]
+ ld d, [hl]
+ ld hl, $104
+ add hl, bc
+ ld a, [hl]
add e
- ld [hli],a
- ld a,[hl]
+ ld [hli], a
+ ld a, [hl]
add d
- ld [hl],a
+ ld [hl], a
ret
-
+
Func_fca4b: ; fca4b (3f:4a4b)
- ld a,[wWalkBikeSurfState]
+ ld a, [wWalkBikeSurfState]
cp $1
- jr nz,Func_fca68
- ld a,[wd736]
- bit 6,a
- jr nz,Func_fca68
+ jr nz, Func_fca68
+ ld a, [wd736]
+ bit 6, a
+ jr nz, Func_fca68
asm_fca59: ; fca59 (3f:4a59)
- ld hl,$3
- add hl,bc
- ld a,[hli]
+ ld hl, $3
+ add hl, bc
+ ld a, [hli]
add a
add a
add [hl]
- ld [hli],a
- ld a,[hli]
+ ld [hli], a
+ ld a, [hli]
add a
add a
add [hl]
- ld [hl],a
+ ld [hl], a
ret
-
+
Func_fca68: ; fca68 (3f:4a68)
- ld hl,$3
- add hl,bc
- ld a,[hli]
+ ld hl, $3
+ add hl, bc
+ ld a, [hli]
add a
add [hl]
- ld [hli],a
- ld a,[hli]
+ ld [hli], a
+ ld a, [hli]
add a
add [hl]
- ld [hli],a
+ ld [hli], a
ret
-
+
Func_fca75: ; fca75 (3f:4a75)
- ld hl,$3
- add hl,bc
+ ld hl, $3
+ add hl, bc
xor a
- ld [hli],a
+ ld [hli], a
inc hl
- ld [hl],a
+ ld [hl], a
ret
-
+
Func_fca7e: ; fca7e (3f:4a7e)
call Func_fcdad
- ld d,$2
- jr nc,.asm_fca87
- ld d,$5
+ ld d, $2
+ jr nc, .asm_fca87
+ ld d, $5
.asm_fca87
- ld hl,$7
- add hl,bc
- ld a,[hl]
+ ld hl, $7
+ add hl, bc
+ ld a, [hl]
inc a
cp d
- jr nz,.asm_fca91
+ jr nz, .asm_fca91
xor a
.asm_fca91
- ld [hli],a
+ ld [hli], a
ret nz
- ld a,[hl]
+ ld a, [hl]
inc a
and $3
- ld [hl],a
+ ld [hl], a
ret
-
+
Func_fca99: ; fca99 (3f:4a99)
- ld a,[wd430]
- bit 3,a
- jr nz,.asm_fcad1
- ld hl,$10e
- add hl,bc
- ld a,[hl]
+ ld a, [wPikachuOverworldStateFlags]
+ bit 3, a
+ jr nz, .asm_fcad1
+ ld hl, $10e
+ add hl, bc
+ ld a, [hl]
dec a
swap a
- ld d,a
- ld a,[wd736]
- bit 7,a
- jr nz,.asm_fcad8
- ld hl,$9
- add hl,bc
- ld a,[hl]
+ ld d, a
+ ld a, [wd736]
+ bit 7, a
+ jr nz, .asm_fcad8
+ ld hl, $9
+ add hl, bc
+ ld a, [hl]
or d
- ld d,a
- ld a,[wFontLoaded]
- bit 0,a
- jr z,.asm_fcac4
+ ld d, a
+ ld a, [wFontLoaded]
+ bit 0, a
+ jr z, .asm_fcac4
call Func_fcae2
ret c
jr .asm_fcacb
+
.asm_fcac4
- ld hl,$8
- add hl,bc
- ld a,d
+ ld hl, $8
+ add hl, bc
+ ld a, d
or [hl]
- ld d,a
+ ld d, a
.asm_fcacb
- ld hl,$2
- add hl,bc
- ld [hl],d
+ ld hl, $2
+ add hl, bc
+ ld [hl], d
ret
+
.asm_fcad1
- ld hl,$2
- add hl,bc
- ld [hl],$ff
+ ld hl, $2
+ add hl, bc
+ ld [hl], $ff
ret
+
.asm_fcad8
- ld a,[wSpriteStateData1 + $2]
+ ld a, [wSpriteStateData1 + $2]
and $f
or d
- ld [wSpriteStateData1 + $f2],a
+ ld [wSpriteStateData1 + $f2], a
ret
-
+
Func_fcae2: ; fcae2 (3f:4ae2)
- ld hl,$104
- add hl,bc
- ld a,[wYCoord]
+ ld hl, $104
+ add hl, bc
+ ld a, [wYCoord]
add $4
cp [hl]
- jr nz,.asm_fcaff
+ jr nz, .asm_fcaff
inc hl
- ld a,[wXCoord]
+ ld a, [wXCoord]
add $4
cp [hl]
- jr nz,.asm_fcaff
- ld hl,$2
- add hl,bc
- ld [hl],$ff
+ jr nz, .asm_fcaff
+ ld hl, $2
+ add hl, bc
+ ld [hl], $ff
scf
ret
+
.asm_fcaff
and a
ret
@@ -988,49 +1019,53 @@ Func_fcb01: ; fcb01 (3f:4b01)
push bc
push de
push hl
- ld bc,wSpriteStateData1 + $f0
- ld a,[wXCoord]
+ ld bc, wSpriteStateData1 + $f0
+ ld a, [wXCoord]
add $4
- ld d,a
- ld a,[wYCoord]
+ ld d, a
+ ld a, [wYCoord]
add $4
- ld e,a
- ld hl,$104
- add hl,bc
- ld a,[hl]
+ ld e, a
+ ld hl, $104
+ add hl, bc
+ ld a, [hl]
sub e
and a
- jr z,.asm_fcb30
+ jr z, .asm_fcb30
cp $ff
- jr z,.asm_fcb26
+ jr z, .asm_fcb26
cp $1
- jr z,.asm_fcb26
+ jr z, .asm_fcb26
jr .asm_fcb48
+
.asm_fcb26
- ld hl,$105
- add hl,bc
- ld a,[hl]
+ ld hl, $105
+ add hl, bc
+ ld a, [hl]
sub d
- jr z,.asm_fcb43
+ jr z, .asm_fcb43
jr .asm_fcb48
+
.asm_fcb30
- ld hl,$105
- add hl,bc
- ld a,[hl]
+ ld hl, $105
+ add hl, bc
+ ld a, [hl]
sub d
cp $ff
- jr z,.asm_fcb43
+ jr z, .asm_fcb43
cp $1
- jr z,.asm_fcb43
+ jr z, .asm_fcb43
and a
- jr z,.asm_fcb43
+ jr z, .asm_fcb43
jr .asm_fcb48
+
.asm_fcb43
pop hl
pop de
pop bc
scf
ret
+
.asm_fcb48
pop hl
pop de
@@ -1038,258 +1073,281 @@ Func_fcb01: ; fcb01 (3f:4b01)
xor a
ret
-Func_fcb4d: ; fcb4d (3f:4b4d)
- call Func_fcb52
- ld e,a
+GetPikachuFacingDirectionAndReturnToE: ; fcb4d (3f:4b4d)
+ call GetPikachuFacingDirection
+ ld e, a
ret
-
-Func_fcb52: ; fcb52 (3f:4b52)
- ld bc,wSpriteStateData1 + $f0
- ld a,[wXCoord]
+
+GetPikachuFacingDirection: ; fcb52 (3f:4b52)
+ ld bc, wSpriteStateData1 + $f0
+ ld a, [wXCoord]
add $4
- ld d,a
- ld a,[wYCoord]
+ ld d, a
+ ld a, [wYCoord]
add $4
- ld e,a
- ld hl,$104
- add hl,bc
- ld a,[hl]
+ ld e, a
+ ld hl, wSpriteStateData2 - wSpriteStateData1 + 4
+ add hl, bc
+ ld a, [hl]
cp e
- jr z,Func_fcb71
- jr nc,.asm_fcb6e
- ld a,$4
+ jr z, .asm_fcb71
+ jr nc, .asm_fcb6e
+ ld a, SPRITE_FACING_UP
ret
+
.asm_fcb6e
- ld a,$0
+ ld a, SPRITE_FACING_DOWN
ret
-
-Func_fcb71: ; fcb71 (3f:4b71)
- ld hl,$105
- add hl,bc
- ld a,[hl]
+
+.asm_fcb71
+ ld hl, wSpriteStateData2 - wSpriteStateData1 + 5
+ add hl, bc
+ ld a, [hl]
cp d
- jr z,.asm_fcb81
- jr nc,.asm_fcb7e
- ld a,$8
+ jr z, .asm_fcb81
+ jr nc, .asm_fcb7e
+ ld a, SPRITE_FACING_LEFT
ret
+
.asm_fcb7e
- ld a,$c
+ ld a, SPRITE_FACING_RIGHT
ret
+
.asm_fcb81
- ld a,$ff
+ ld a, $ff ; standing
ret
-Func_fcb84: ; fcb84 (3f:4b84)
+ClearPikachuFollowCommandBuffer: ; fcb84 (3f:4b84)
push bc
- ld hl,wd437
- ld [hl],$ff
+ ld hl, wPikachuFollowCommandBufferSize
+ ld [hl], $ff
inc hl
- ld bc,$10
+ ld bc, $10
xor a
call FillMemory
pop bc
ret
-
-Func_fcb94: ; fcb94 (3f:4b94)
- ld hl,wd437
+
+AppendPikachuFollowCommandToBuffer: ; fcb94 (3f:4b94)
+ ld hl, wPikachuFollowCommandBufferSize
inc [hl]
- ld e,[hl]
- ld d,0
- ld hl,wd438
- add hl,de
- ld [hl],a
+ ld e, [hl]
+ ld d, 0
+ ld hl, wPikachuFollowCommandBuffer
+ add hl, de
+ ld [hl], a
ret
-
+
Func_fcba1: ; fcba1 (3f:4ba1)
- call Func_fcb84
- call Func_fcbac
+ call ClearPikachuFollowCommandBuffer
+ call GetPikachuFollowCommand
ret c
- call Func_fcb94
- ret
-
-Func_fcbac: ; fcbac (3f:4bac)
- ld bc,wSpriteStateData1 + $f0
- ld hl,$104
- add hl,bc
- ld a,[wYCoord]
+ call AppendPikachuFollowCommandToBuffer
+ ret
+
+GetPikachuFollowCommand: ; fcbac (3f:4bac)
+ ld bc, wSpriteStateData1 + $f0
+ ld hl, wSpriteStateData2 - wSpriteStateData1 + 4
+ add hl, bc
+ ld a, [wYCoord]
add $4
sub [hl]
- jr z,.asm_fcbd7
- jr c,.asm_fcbca
- call Func_fcc01
- jr c,.asm_fcbc6
- ld a,$5
+ jr z, .checkXCoord
+ jr c, .pikaAbovePlayer
+ call CheckAbsoluteValueLessThan2
+ jr c, .return1
+ ld a, $5
and a
ret
-.asm_fcbc6
- ld a,$1
+
+.return1
+ ld a, $1
and a
ret
-.asm_fcbca
- call Func_fcc01
- jr c,.asm_fcbd3
- ld a,$6
+
+.pikaAbovePlayer
+ call CheckAbsoluteValueLessThan2
+ jr c, .return2
+ ld a, $6
and a
ret
-.asm_fcbd3
- ld a,$2
+
+.return2
+ ld a, $2
and a
ret
-.asm_fcbd7
- ld hl,$105
- add hl,bc
- ld a,[wXCoord]
+
+.checkXCoord
+ ld hl, wSpriteStateData2 - wSpriteStateData1 + 5
+ add hl, bc
+ ld a, [wXCoord]
add $4
sub [hl]
- jr z,.asm_fcbff
- jr c,.asm_fcbf2
- call Func_fcc01
- jr c,.asm_fcbee
- ld a,$8
+ jr z, .pikachuOnTopOfPlayer
+ jr c, .pikaToLeftOfPlayer
+ call CheckAbsoluteValueLessThan2
+ jr c, .return4
+ ld a, $8
and a
ret
-.asm_fcbee
- ld a,$4
+
+.return4
+ ld a, $4
and a
ret
-.asm_fcbf2
- call Func_fcc01
- jr c,.asm_fcbfb
- ld a,$7
+
+.pikaToLeftOfPlayer
+ call CheckAbsoluteValueLessThan2
+ jr c, .return3
+ ld a, $7
and a
ret
-.asm_fcbfb
- ld a,$3
+
+.return3
+ ld a, $3
and a
ret
-.asm_fcbff
+
+.pikachuOnTopOfPlayer
scf
ret
-
-Func_fcc01: ; fcc01 (3f:4c01)
- jr nc,.asm_fcc05
+
+CheckAbsoluteValueLessThan2: ; fcc01 (3f:4c01)
+ jr nc, .positive
cpl
inc a
-.asm_fcc05
+.positive
cp $2
ret
-
+
Func_fcc08:: ; fcc08 (3f:4c08)
call Func_fcc23
ret nc
- ld a,[wd736]
- bit 6,a
- jr nz,.asm_fcc1b
+ ld a, [wd736]
+ bit 6, a
+ jr nz, .asm_fcc1b
call Func_fcc42
ret c
- call Func_fcb94
+ call AppendPikachuFollowCommandToBuffer
ret
+
.asm_fcc1b
call Func_fcc64
ret c
- call Func_fcb94
+ call AppendPikachuFollowCommandToBuffer
ret
-
+
Func_fcc23: ; fcc23 (3f:4c28)
- ld a,[wd430]
- bit 5,a
- jr nz,.asm_fcc40
- ld a,[wd430]
- bit 7,a
- jr nz,.asm_fcc40
- ld a,[wd472]
- bit 7,a
- jr z,.asm_fcc40
- ld a,[wWalkBikeSurfState]
+ ld a, [wPikachuOverworldStateFlags]
+ bit 5, a
+ jr nz, .asm_fcc40
+ ld a, [wPikachuOverworldStateFlags]
+ bit 7, a
+ jr nz, .asm_fcc40
+ ld a, [wd472]
+ bit 7, a
+ jr z, .asm_fcc40
+ ld a, [wWalkBikeSurfState]
and a
- jr nz,.asm_fcc40
+ jr nz, .asm_fcc40
scf
ret
+
.asm_fcc40
and a
ret
-
+
Func_fcc42: ; fcc42 (3f:4c42)
xor a
- ld a,[wPlayerDirection]
- bit 3,a
- jr nz,.asm_fcc58
- bit 2,a
- jr nz,.asm_fcc5b
- bit 1,a
- jr nz,.asm_fcc5e
- bit 0,a
- jr nz,.asm_fcc61
+ ld a, [wPlayerDirection]
+ bit 3, a
+ jr nz, .asm_fcc58
+ bit 2, a
+ jr nz, .asm_fcc5b
+ bit 1, a
+ jr nz, .asm_fcc5e
+ bit 0, a
+ jr nz, .asm_fcc61
scf
ret
+
.asm_fcc58
- ld a,$2
+ ld a, $2
ret
+
.asm_fcc5b
- ld a,$1
+ ld a, $1
ret
+
.asm_fcc5e
- ld a,$3
+ ld a, $3
ret
+
.asm_fcc61
- ld a,$4
+ ld a, $4
ret
-
+
Func_fcc64: ; fcc64 (3f:4c64)
- ld hl,wd430
- bit 6,[hl]
- jr z,.asm_fcc6e
- res 6,[hl]
+ ld hl, wPikachuOverworldStateFlags
+ bit 6, [hl]
+ jr z, .asm_fcc6e
+ res 6, [hl]
ret
+
.asm_fcc6e
- set 6,[hl]
+ set 6, [hl]
xor a
- ld a,[wPlayerDirection]
- bit 3,a
- jr nz,.asm_fcc86
- bit 2,a
- jr nz,.asm_fcc89
- bit 1,a
- jr nz,.asm_fcc8c
- bit 0,a
- jr nz,.asm_fcc8f
+ ld a, [wPlayerDirection]
+ bit 3, a
+ jr nz, .asm_fcc86
+ bit 2, a
+ jr nz, .asm_fcc89
+ bit 1, a
+ jr nz, .asm_fcc8c
+ bit 0, a
+ jr nz, .asm_fcc8f
scf
ret
+
.asm_fcc86
- ld a,$6
+ ld a, $6
ret
+
.asm_fcc89
- ld a,$5
+ ld a, $5
ret
+
.asm_fcc8c
- ld a,$7
+ ld a, $7
ret
+
.asm_fcc8f
- ld a,$8
+ ld a, $8
ret
Func_fcc92: ; fcc92 (3f:4c92)
- ld hl,wd437
- ld a,[hl]
+ ld hl, wPikachuFollowCommandBufferSize
+ ld a, [hl]
cp $ff
- jr z,.asm_fccb0
+ jr z, .asm_fccb0
and a
- jr z,.asm_fccb0
+ jr z, .asm_fccb0
dec [hl]
- ld e,a
- ld d,0
- ld hl,wd438
- add hl,de
+ ld e, a
+ ld d, 0
+ ld hl, wPikachuFollowCommandBuffer
+ add hl, de
inc e
- ld a,$ff
+ ld a, $ff
.asm_fcca8
- ld d,[hl]
- ldd [hl],a
- ld a,d
+ ld d, [hl]
+ ldd [hl], a
+ ld a, d
dec e
- jr nz,.asm_fcca8
+ jr nz, .asm_fcca8
and a
ret
+
.asm_fccb0
scf
ret
@@ -1297,384 +1355,399 @@ Func_fcc92: ; fcc92 (3f:4c92)
Func_fccb2:: ; fccb2 (3f:4cb2)
call Func_fcd01
and a
- jr z,.asm_fccbf
+ jr z, .asm_fccbf
dec a
and $3
add a
add a
jr .asm_fccea
+
.asm_fccbf
- ld a,[wYCoord]
+ ld a, [wYCoord]
add $4
- ld d,a
- ld a,[wXCoord]
+ ld d, a
+ ld a, [wXCoord]
add $4
- ld e,a
- ld a,[wSpriteStateData2 + $f4]
+ ld e, a
+ ld a, [wSpriteStateData2 + $f4]
cp d
- jr z,.asm_fccd9
- ld a,SPRITE_FACING_DOWN
- jr c,.asm_fccea
- ld a,SPRITE_FACING_UP
+ jr z, .asm_fccd9
+ ld a, SPRITE_FACING_DOWN
+ jr c, .asm_fccea
+ ld a, SPRITE_FACING_UP
jr .asm_fccea
+
.asm_fccd9
- ld a,[wSpriteStateData2 + $f5]
+ ld a, [wSpriteStateData2 + $f5]
cp e
- jr z,.asm_fcce7
- ld a,SPRITE_FACING_RIGHT
- jr c,.asm_fccea
- ld a,SPRITE_FACING_LEFT
+ jr z, .asm_fcce7
+ ld a, SPRITE_FACING_RIGHT
+ jr c, .asm_fccea
+ ld a, SPRITE_FACING_LEFT
jr .asm_fccea
+
.asm_fcce7
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
.asm_fccea
- ld [wSpriteStateData1 + $f9],a
+ ld [wSpriteStateData1 + $f9], a
ret
-
+
Func_fccee: ; fccee (3f:4cee)
- ld hl,wd437
- ld a,[hl]
+ ld hl, wPikachuFollowCommandBufferSize
+ ld a, [hl]
cp $ff
- jr z,.asm_fccff
- ld e,a
- ld d,0
- ld hl,wd438
- add hl,de
- ld a,[hl]
+ jr z, .asm_fccff
+ ld e, a
+ ld d, 0
+ ld hl, wPikachuFollowCommandBuffer
+ add hl, de
+ ld a, [hl]
ret
+
.asm_fccff
xor a
ret
-
+
Func_fcd01: ; fcd01 (3f:4d01)
- ld hl,wd437
- ld a,[hl]
+ ld hl, wPikachuFollowCommandBufferSize
+ ld a, [hl]
cp $ff
- jr z,.asm_fcd15
+ jr z, .asm_fcd15
and a
- jr z,.asm_fcd15
- ld e,a
- ld d,0
- ld hl,wd438
- add hl,de
- ld a,[hl]
+ jr z, .asm_fcd15
+ ld e, a
+ ld d, 0
+ ld hl, wPikachuFollowCommandBuffer
+ add hl, de
+ ld a, [hl]
ret
+
.asm_fcd15
xor a
ret
-
+
Func_fcd17: ; fcd17 (3f:4d17)
- ld a,[wd437]
+ ld a, [wPikachuFollowCommandBufferSize]
cp $ff
ret z
cp $2
- jr nc,.asm_fcd23
+ jr nc, .asm_fcd23
and a
ret
+
.asm_fcd23
scf
ret
-
+
Func_fcd25: ; fcd25 (3f:4d25)
- ld h,wSpriteStateData2 / $100
- ld a,[H_CURRENTSPRITEOFFSET]
+ ld h, wSpriteStateData2 / $100
+ ld a, [H_CURRENTSPRITEOFFSET]
add $4
- ld l,a
- ld b,[hl]
- ld a,[wYCoord]
+ ld l, a
+ ld b, [hl]
+ ld a, [wYCoord]
cp b
- jr z,.asm_fcd3a
- jr nc,.asm_fcd63
+ jr z, .asm_fcd3a
+ jr nc, .asm_fcd63
add $8
cp b
- jr c,.asm_fcd63
+ jr c, .asm_fcd63
.asm_fcd3a
inc l
- ld b,[hl]
- ld a,[wXCoord]
+ ld b, [hl]
+ ld a, [wXCoord]
cp b
- jr z,.asm_fcd49
- jr nc,.asm_fcd63
+ jr z, .asm_fcd49
+ jr nc, .asm_fcd63
add $9
cp b
- jr c,.asm_fcd63
+ jr c, .asm_fcd63
.asm_fcd49
call Func_fcd83
- ld d,$60
- ld a,[hli]
- ld e,a
+ ld d, $60
+ ld a, [hli]
+ ld e, a
cp d
- jr nc,.asm_fcd63
- ld a,[hld]
+ jr nc, .asm_fcd63
+ ld a, [hld]
cp d
- jr nc,.asm_fcd63
- ld bc,-20
- add hl,bc
- ld a,[hli]
+ jr nc, .asm_fcd63
+ ld bc, -20
+ add hl, bc
+ ld a, [hli]
cp d
- jr nc,.asm_fcd63
- ld a,[hl]
+ jr nc, .asm_fcd63
+ ld a, [hl]
cp d
- jr c,.asm_fcd6f
+ jr c, .asm_fcd6f
.asm_fcd63
- ld h,wSpriteStateData1 / $100
- ld a,[H_CURRENTSPRITEOFFSET]
+ ld h, wSpriteStateData1 / $100
+ ld a, [H_CURRENTSPRITEOFFSET]
add $2
- ld l,a
- ld [hl],$ff
+ ld l, a
+ ld [hl], $ff
scf
jr .asm_fcd82
+
.asm_fcd6f
- ld h,wSpriteStateData2 / $100
- ld a,[H_CURRENTSPRITEOFFSET]
+ ld h, wSpriteStateData2 / $100
+ ld a, [H_CURRENTSPRITEOFFSET]
add $7
- ld l,a
- ld a,[wGrassTile]
+ ld l, a
+ ld a, [wGrassTile]
cp e
- ld a,$0
- jr nz,.asm_fcd80
- ld a,$80
+ ld a, $0
+ jr nz, .asm_fcd80
+ ld a, $80
.asm_fcd80
- ld [hl],a
+ ld [hl], a
and a
.asm_fcd82
ret
-
+
Func_fcd83: ; fcd83 (3f:4d83)
- ld h,wSpriteStateData1 / $100
- ld a,[H_CURRENTSPRITEOFFSET]
+ ld h, wSpriteStateData1 / $100
+ ld a, [H_CURRENTSPRITEOFFSET]
add $4
- ld l,a
- ld a,[hli]
+ ld l, a
+ ld a, [hli]
add $4
and $f0
srl a
- ld c,a
- ld b,$0
+ ld c, a
+ ld b, $0
inc l
- ld a,[hl]
+ ld a, [hl]
add $2
srl a
srl a
srl a
add SCREEN_WIDTH
- ld d,0
- ld e,a
- ld hl,wTileMap
+ ld d, 0
+ ld e, a
+ ld hl, wTileMap
rept 5
- add hl,bc
+ add hl, bc
endr
- add hl,de
+ add hl, de
ret
-
+
Func_fcdad: ; fcdad (3f:4dad)
push bc
push af
- ld a,[wPikachuHappiness]
+ ld a, [wPikachuHappiness]
cp $50
pop bc
- ld a,b
+ ld a, b
pop bc
ret
IsStarterPikachuInOurParty:: ; fcdb8 (3f:4db8)
- ld hl,wPartySpecies
- ld de,wPartyMon1OTID
- ld bc,wPartyMonOT
+ ld hl, wPartySpecies
+ ld de, wPartyMon1OTID
+ ld bc, wPartyMonOT
push hl
.loop
pop hl
- ld a,[hli]
+ ld a, [hli]
push hl
inc a
- jr z,.noPlayerPikachu
+ jr z, .noPlayerPikachu
cp PIKACHU + 1
- jr nz,.curMonNotPlayerPikachu
- ld h,d
- ld l,e
- ld a,[wPlayerID]
+ jr nz, .curMonNotPlayerPikachu
+ ld h, d
+ ld l, e
+ ld a, [wPlayerID]
cp [hl]
- jr nz,.curMonNotPlayerPikachu
+ jr nz, .curMonNotPlayerPikachu
inc hl
- ld a,[wPlayerID+1]
+ ld a, [wPlayerID+1]
cp [hl]
- jr nz,.curMonNotPlayerPikachu
+ jr nz, .curMonNotPlayerPikachu
push de
push bc
- ld hl,wPlayerName
- ld d,$6 ; possible player length - 1
+ ld hl, wPlayerName
+ ld d, $6 ; possible player length - 1
.nameCompareLoop
dec d
- jr z,.sameOT
- ld a,[bc]
+ jr z, .sameOT
+ ld a, [bc]
inc bc
cp [hl]
inc hl
- jr z,.nameCompareLoop
+ jr z, .nameCompareLoop
pop bc
pop de
.curMonNotPlayerPikachu
- ld hl,wPartyMon2 - wPartyMon1
- add hl,de
- ld d,h
- ld e,l
- ld hl,NAME_LENGTH
- add hl,bc
- ld b,h
- ld c,l
+ ld hl, wPartyMon2 - wPartyMon1
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, NAME_LENGTH
+ add hl, bc
+ ld b, h
+ ld c, l
jr .loop
+
.sameOT
pop bc
pop de
- ld h,d
- ld l,e
- ld bc,-NAME_LENGTH
- add hl,bc
- ld a,[hli]
+ ld h, d
+ ld l, e
+ ld bc, -NAME_LENGTH
+ add hl, bc
+ ld a, [hli]
or [hl]
- jr z,.noPlayerPikachu ; XXX how is this determined?
+ jr z, .noPlayerPikachu ; XXX how is this determined?
pop hl
scf
ret
+
.noPlayerPikachu
pop hl
and a
ret
IsThisPartymonStarterPikachu_Box:: ; fce0d (3f:4e0d)
- ld hl,wBoxMon1
- ld bc,wBoxMon2 - wBoxMon1
- ld de,wBoxMonOT
+ ld hl, wBoxMon1
+ ld bc, wBoxMon2 - wBoxMon1
+ ld de, wBoxMonOT
jr asm_fce21
IsThisPartymonStarterPikachu_Party:: ; fce18 (3f:4e18)
IsThisPartymonStarterPikachu::
- ld hl,wPartyMon1
- ld bc,wPartyMon2 - wPartyMon1
- ld de,wPartyMonOT
+ ld hl, wPartyMon1
+ ld bc, wPartyMon2 - wPartyMon1
+ ld de, wPartyMonOT
asm_fce21: ; fce21 (3f:4e21)
- ld a,[wWhichPokemon]
+ ld a, [wWhichPokemon]
call AddNTimes
- ld a,[hl]
+ ld a, [hl]
cp PIKACHU
- jr nz,.notPlayerPikachu
- ld bc,wPartyMon1OTID - wPartyMon1
- add hl,bc
- ld a,[wPlayerID]
+ jr nz, .notPlayerPikachu
+ ld bc, wPartyMon1OTID - wPartyMon1
+ add hl, bc
+ ld a, [wPlayerID]
cp [hl]
- jr nz,.notPlayerPikachu
+ jr nz, .notPlayerPikachu
inc hl
- ld a,[wPlayerID+1]
+ ld a, [wPlayerID+1]
cp [hl]
- jr nz,.notPlayerPikachu
- ld h,d
- ld l,e
- ld a,[wWhichPokemon]
- ld bc,NAME_LENGTH
+ jr nz, .notPlayerPikachu
+ ld h, d
+ ld l, e
+ ld a, [wWhichPokemon]
+ ld bc, NAME_LENGTH
call AddNTimes
- ld de,wPlayerName
- ld b,$6
+ ld de, wPlayerName
+ ld b, $6
.loop
dec b
- jr z,.isPlayerPikachu
- ld a,[de]
+ jr z, .isPlayerPikachu
+ ld a, [de]
inc de
cp [hl]
inc hl
- jr z,.loop
+ jr z, .loop
.notPlayerPikachu
and a
ret
+
.isPlayerPikachu
scf
ret
-
+
Func_fce5a:: ; fce5a (3f:4e5a)
push de
call IsStarterPikachuInOurParty
pop de
ret nc
- ld a,d
+ ld a, d
cp $80
- ld a,[wPikachuMood]
- jr c,.asm_fce6c
+ ld a, [wPikachuMood]
+ jr c, .asm_fce6c
cp d
- jr c,.asm_fce6e
+ jr c, .asm_fce6e
ret
+
.asm_fce6c
cp d
ret c
.asm_fce6e
- ld a,d
- ld [wPikachuMood],a
+ ld a, d
+ ld [wPikachuMood], a
ret
Func_fce73:: ; fce73 (3f:4e73)
; function to test if a pokemon is alive?
xor a
- ld [wWhichPokemon],a
- ld hl,wPartyCount
+ ld [wWhichPokemon], a
+ ld hl, wPartyCount
.loop
inc hl
- ld a,[hl]
+ ld a, [hl]
cp $ff
- jr z,.asm_fcea9
+ jr z, .asm_fcea9
push hl
call IsThisPartymonStarterPikachu_Party
pop hl
- jr nc,.asm_fce9e
- ld a,[wWhichPokemon]
- ld hl,wPartyMon1HP
- ld bc,wPartyMon2 - wPartyMon1
+ jr nc, .asm_fce9e
+ ld a, [wWhichPokemon]
+ ld hl, wPartyMon1HP
+ ld bc, wPartyMon2 - wPartyMon1
call AddNTimes
- ld a,[hli]
+ ld a, [hli]
or [hl]
- ld d,a
+ ld d, a
inc hl
inc hl
- ld a,[hl]
+ ld a, [hl]
and a
- jr nz,.asm_fcea7
+ jr nz, .asm_fcea7
jr .asm_fcea9
+
.asm_fce9e
- ld a,[wWhichPokemon]
+ ld a, [wWhichPokemon]
inc a
- ld [wWhichPokemon],a
+ ld [wWhichPokemon], a
jr .loop
+
.asm_fcea7
scf
ret
+
.asm_fcea9
and a
ret
-Func_fceab:: ; fceab (3f:4eab)
- ld hl,wPartySpecies
- ld de,wPartyMon1Moves
- ld bc,wPartyMonOT
+IsSurfingPikachuInThePlayersParty:: ; fceab (3f:4eab)
+ ld hl, wPartySpecies
+ ld de, wPartyMon1Moves
+ ld bc, wPartyMonOT
push hl
.loop
pop hl
- ld a,[hli]
+ ld a, [hli]
push hl
inc a
- jr z,.noSurfingPlayerPikachu
+ jr z, .noSurfingPlayerPikachu
cp PIKACHU+1
- jr nz,.curMonNotSurfingPlayerPikachu
- ld h,d
- ld l,e
+ jr nz, .curMonNotSurfingPlayerPikachu
+ ld h, d
+ ld l, e
push hl
push bc
- ld b,NUM_MOVES
+ ld b, NUM_MOVES
.moveSearchLoop
- ld a,[hli]
+ ld a, [hli]
cp SURF
- jr z,.foundSurfingPikachu
+ jr z, .foundSurfingPikachu
dec b
- jr nz,.moveSearchLoop
+ jr nz, .moveSearchLoop
pop bc
pop hl
jr .curMonNotSurfingPlayerPikachu
+
.foundSurfingPikachu
pop bc
pop hl
@@ -1682,635 +1755,54 @@ Func_fceab:: ; fceab (3f:4eab)
inc hl
inc hl
inc hl
- ld a,[wPlayerID]
+ ld a, [wPlayerID]
cp [hl]
- jr nz,.curMonNotSurfingPlayerPikachu
+ jr nz, .curMonNotSurfingPlayerPikachu
inc hl
- ld a,[wPlayerID+1]
+ ld a, [wPlayerID+1]
cp [hl]
- jr nz,.curMonNotSurfingPlayerPikachu
+ jr nz, .curMonNotSurfingPlayerPikachu
push de
push bc
- ld hl,wPlayerName
- ld d,$6
+ ld hl, wPlayerName
+ ld d, $6
.nameCompareLoop
dec d
- jr z,.foundSurfingPlayerPikachu
- ld a,[bc]
+ jr z, .foundSurfingPlayerPikachu
+ ld a, [bc]
inc bc
cp [hl]
inc hl
- jr z,.nameCompareLoop
+ jr z, .nameCompareLoop
pop bc
pop de
.curMonNotSurfingPlayerPikachu
- ld hl,wPartyMon2 - wPartyMon1
- add hl,de
- ld d,h
- ld e,l
- ld hl,NAME_LENGTH
- add hl,bc
- ld b,h
- ld c,l
+ ld hl, wPartyMon2 - wPartyMon1
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, NAME_LENGTH
+ add hl, bc
+ ld b, h
+ ld c, l
jr .loop
+
.foundSurfingPlayerPikachu
pop bc
pop de
pop hl
scf
ret
+
.noSurfingPlayerPikachu
pop hl
and a
ret
-IsPlayerTalkingToPikachu:: ; fcf0c (3f:4f0c)
- ld a, [wd436]
- and a
- ret z
- ld a, [hSpriteIndexOrTextID]
- cp $f
- ret nz
- call InitializePikachuTextID
- xor a
- ld [hSpriteIndexOrTextID], a
- ld [wd436], a
- ret
-
-InitializePikachuTextID: ; fcf20 (3f:4f20)
- ld a, $d4 ; display
- ld [hSpriteIndexOrTextID], a
- xor a
- ld [wPlayerMovingDirection], a
- ld a, $1
- ld [wAutoTextBoxDrawingControl], a
- call DisplayTextID
- xor a
- ld [wAutoTextBoxDrawingControl], a
- ret
+INCLUDE "engine/pikachu_pic_animation.asm"
-DoStarterPikachuEmotions: ; fcf35 (3f:4f35)
- ld e, a
- ld d, $0
- add hl, de
- add hl, de
- ld e, [hl]
- inc hl
- ld d, [hl]
-.loop
- ld a, [de]
- inc de
- cp $ff
- jr z, .done
- ld c, a
- ld b, $0
- ld hl, Jumptable_fcf54
- add hl, bc
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- call JumpToAddress
- jr .loop
-.done
- ret
-
-Jumptable_fcf54: ; fcf54 (3f:4f54)
- dw Func_fcf6a
- dw Func_fcf6b
- dw Func_fcf77
- dw Func_fcf8d
- dw Func_fcfb0
- dw Func_fd9d0
- dw Func_fcfc7
- dw Func_fcfbe
- dw Func_fcfe8
- dw Func_fcfe9
- dw Func_fcf6a
-
-Func_fcf6a: ; fcf6a (3f:4f6a)
- ret
-
-Func_fcf6b: ; fcf6b (3f:4f6b)
- ld a, [de]
- ld l, a
- inc de
- ld a, [de]
- ld h, a
- inc de
- push de
- call PrintText
- pop de
- ret
-
-Func_fcf77: ; fcf77 (3f:4f77)
- ld a, [de]
- inc de
- push de
- ld e, a
- nop
- call Func_fcf81
- pop de
- ret
-
-Func_fcf81: ; fcf81 (3f:4f81)
- cp $ff
- ret z
- callab PlayPikachuSoundClip
- ret
-
-Func_fcf8d: ; fcf8d (3f:4f8d)
- ld a, [wUpdateSpritesEnabled]
- push af
- ld a, $ff
- ld [wUpdateSpritesEnabled], a
- ld a, [de]
- inc de
- push de
- call Func_fcfa2
- pop de
- pop af
- ld [wUpdateSpritesEnabled], a
- ret
-
-Func_fcfa2: ; fcfa2 (3f:4fa2)
- ld [wWhichEmotionBubble], a
- ld a, $f
- ld [wEmotionBubbleSpriteIndex], a
- predef EmotionBubble
- ret
-
-Func_fcfb0: ; fcfb0 (3f:4fb0)
- ld a, [de]
- inc de
- ld l, a
- ld a, [de]
- inc de
- ld h, a
- push de
- ld b, $3f
- call Func_fd2a1
- pop de
- ret
-
-Func_fcfbe: ; fcfbe (3f:4fbe)
- ld a, [de]
- inc de
- push de
- ld c, a
- call DelayFrames
- pop de
- ret
-
-Func_fcfc7: ; fcfc7 (3f:4fc7)
- ld a, [de]
- inc de
- push de
- ld e, a
- ld d, $0
- ld hl, Jumptable_fcfda
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- call JumpToAddress
- pop de
- ret
-
-Jumptable_fcfda:
- dw Func_fd8ab
- dw LoadFontTilePatterns
- dw Func_fd8f8
- dw WaitForTextScrollButtonPress
- dw Func_fd8d4
- dw Func_fd8e1
- dw Func_fd8ee
-
-Func_fcfe8: ; fcfe8 (3f:4fe8)
- ret
-
-Func_fcfe9: ; fcfe9 (3f:4fe9)
- push de
- call Func_fcff2
- call UpdateSprites
- pop de
- ret
-
-Func_fcff2: ; fcff2 (3f:4ff2)
- ld a, [wSpriteStateData1 + $9]
- xor $4
- ld [wSpriteStateData1 + $f9], a
- ret
-
-Func_fcffb: ; fcffb (3f:4ffb)
-; Inexplicably empty.
- rept 5
- nop
- endr
- ret
-
-Func_fd001:: ; fd001 (3f:5001)
- ld a, e
- jr asm_fd00f
-
-Func_fd004:: ; fd004 (3f:5004)
- call Func_fd05e
- jr c, asm_fd00f
- call Func_fd978
- call Func_fcffb
-asm_fd00f: ; fd00f (3f:500f)
- ld [wExpressionNumber], a
- ld hl, PikachuEmotionTable
- call DoStarterPikachuEmotions
- ret
-
-PikachuEmotionTable: ; fd019 (3f:4019)
- dw PikachuEmotion0_fd115
- dw PikachuEmotion1_fd141
- dw PikachuEmotion2_fd116
- dw PikachuEmotion3_fd160
- dw PikachuEmotion4_fd136
- dw PikachuEmotion5_fd14d
- dw PikachuEmotion6_fd153
- dw PikachuEmotion7_fd128
- dw PikachuEmotion8_fd147
- dw PikachuEmotion9_fd166
- dw PikachuEmotion10_fd11e
- dw PikachuEmotion11_fd173
- dw PikachuEmotion12_fd17a
- dw PikachuEmotion13_fd180
- dw PikachuEmotion14_fd189
- dw PikachuEmotion15_fd191
- dw PikachuEmotion16_fd197
- dw PikachuEmotion17_fd19d
- dw PikachuEmotion18_fd1a3
- dw PikachuEmotion19_fd1a9
- dw PikachuEmotion20_fd1b1
- dw PikachuEmotion21_fd1b9
- dw PikachuEmotion22_fd1c1
- dw PikachuEmotion23_fd1c7
- dw PikachuEmotion24_fd1cf
- dw PikachuEmotion25_fd1d7
- dw PikachuEmotion26_fd1df
- dw PikachuEmotion27_fd1eb
- dw PikachuEmotion28_fd1f1
- dw PikachuEmotion29_fd1f7
- dw PikachuEmotion30_fd1fc
- dw PikachuEmotion31_fd20a
- dw PikachuEmotion32_fd213
- dw PikachuEmotion33_fd05d
-
-PikachuEmotion33_fd05d: ; fd05d (3f:505d)
- db $ff
-
-Func_fd05e: ; fd05e (3f:505e)
- ld a, [wCurMap]
- cp POKEMON_FAN_CLUB
- jr nz, .notFanClub
- ld hl, wPreventBlackout
- bit 7, [hl]
- ld a, $1d
- jr z, .asm_fd0c9
- call Func_154a
- ld a, $1e
- jr nz, .asm_fd0c9
- jr .asm_fd096
-.notFanClub
- ld a, [wCurMap]
- cp PEWTER_POKECENTER
- jr nz, .notPewterPokecenter
- call Func_154a
- ld a, $1a
- jr nz, .asm_fd0c9
- jr .asm_fd096
-.notPewterPokecenter
- callab Func_f24ae
- ld a, e
- cp $ff
- jr nz, .asm_fd0c9
- jr .asm_fd096
-.asm_fd096
- call IsPlayerPikachuAsleepInParty
- ld a, $b
- jr c, .asm_fd0c9
- callab Func_fce73 ; same bank
- ld a, $1c
- jr c, .asm_fd0c9
- ld a, [wCurMap]
- cp POKEMONTOWER_1
- jr c, .notInLavenderTower
- cp POKEMONTOWER_7 + 1
- ld a, $16
- jr c, .asm_fd0c9
-.notInLavenderTower
- ld a, [wd49c]
- and a
- jr z, .asm_fd0c7
- dec a
- ld c, a
- ld b, $0
- ld hl, Pointer_fd0cb
- add hl, bc
- ld a, [hl]
- jr .asm_fd0c9
-.asm_fd0c7
- and a
- ret
-.asm_fd0c9
- scf
- ret
-
-Pointer_fd0cb:
- db $12,$15,$17,$18,$19
-
-IsPlayerPikachuAsleepInParty:: ; fd0d0 (3f:50d0)
- xor a
- ld [wWhichPokemon], a
-.loop
- ld a, [wWhichPokemon]
- ld c, a
- ld b, $0
- ld hl, wPartySpecies
- add hl, bc
- ld a, [hl]
- cp $ff
- jr z, .done
- cp PIKACHU
- jr nz, .curMonNotStarterPikachu
- callab IsThisPartymonStarterPikachu
- jr nc, .curMonNotStarterPikachu
- ld a, [wWhichPokemon]
- ld hl, wPartyMon1Status
- ld bc, wPartyMon2 - wPartyMon1
- call AddNTimes
- ld a, [hl]
- and SLP
- jr z, .done
- jr .curMonSleepingPikachu
-.curMonNotStarterPikachu
- ld a, [wWhichPokemon]
- cp PARTY_LENGTH - 1
- jr z, .done
- inc a
- ld [wWhichPokemon], a
- jr .loop
-.curMonSleepingPikachu
- scf
- ret
-.done
- and a
+Func_fe66e:
ret
-
-PikachuEmotion0_fd115: ; fd115 (3f:5115)
- db $ff
-
-PikachuEmotion2_fd116: ; fd116 (3f:5116)
- pikaemotion_dummy2
- pikaemotion_emotebubble SMILE_BUBBLE
- pikaemotion_pcm $22
- pikaemotion_5 $2
- db $ff
-
-PikachuEmotion10_fd11e: ; fd11e (3f:511e)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_emotebubble HEART_BUBBLE
- pikaemotion_pcm $4
- pikaemotion_5 $a
- db $ff
-
-PikachuEmotion7_fd128: ; fd128 (3f:5128)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_4 Pointer_fd224
- pikaemotion_pcm $0
- pikaemotion_4 Pointer_fd224
- pikaemotion_5 $7
- db $ff
-
-PikachuEmotion4_fd136: ; fd136 (3f:5136)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_4 Pointer_fd230
- pikaemotion_pcm $1c
- pikaemotion_5 $4
- db $ff
-
-PikachuEmotion1_fd141: ; fd141 (3f:5141)
- pikaemotion_dummy2
- pikaemotion_pcm $ff
- pikaemotion_5 $1
- db $ff
-
-PikachuEmotion8_fd147: ; fd147 (3f:5147)
- pikaemotion_dummy2
- pikaemotion_pcm $26
- pikaemotion_5 $8
- db $ff
-
-PikachuEmotion5_fd14d: ; fd14d (3f:514d)
- pikaemotion_dummy2
- pikaemotion_pcm $1e
- pikaemotion_5 $5
- db $ff
-
-PikachuEmotion6_fd153: ; fd153 (3f:5153)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_pcm $ff
- pikaemotion_4 Pointer_fd21e
- pikaemotion_emotebubble SKULL_BUBBLE
- pikaemotion_5 $6
- db $ff
-
-PikachuEmotion3_fd160: ; fd160 (3f:5160)
- pikaemotion_dummy2
- pikaemotion_pcm $27
- pikaemotion_5 $3
- db $ff
-
-PikachuEmotion9_fd166: ; fd166 (3f:5166)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_pcm $5
- pikaemotion_4 Pointer_fd218
- pikaemotion_emotebubble SKULL_BUBBLE
- pikaemotion_5 $9
- db $ff
-
-PikachuEmotion11_fd173: ; fd173 (3f:5173)
- pikaemotion_emotebubble ZZZ_BUBBLE
- pikaemotion_pcm $24
- pikaemotion_5 $b
- db $ff
-
-PikachuEmotion12_fd17a: ; fd17a (3f:517a)
- pikaemotion_dummy2
- pikaemotion_pcm $ff
- pikaemotion_5 $c
- db $ff
-
-PikachuEmotion13_fd180: ; fd180 (3f:5180)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_4 Pointer_fd21e
- pikaemotion_5 $d
- db $ff
-
-PikachuEmotion14_fd189: ; fd189 (3f:5189)
- pikaemotion_dummy2
- pikaemotion_emotebubble BOLT_BUBBLE
- pikaemotion_pcm $9
- pikaemotion_5 $e
- db $ff
-
-PikachuEmotion15_fd191: ; fd191 (3f:5191)
- pikaemotion_dummy2
- pikaemotion_pcm $21
- pikaemotion_5 $f
- db $ff
-
-PikachuEmotion16_fd197: ; fd197 (3f:5197)
- pikaemotion_dummy2
- pikaemotion_pcm $20
- pikaemotion_5 $10
- db $ff
-
-PikachuEmotion17_fd19d: ; fd19d (3f:519d)
- pikaemotion_dummy2
- pikaemotion_pcm $c
- pikaemotion_5 $11
- db $ff
-
-PikachuEmotion18_fd1a3: ; fd1a3 (3f:51a3)
- pikaemotion_dummy2
- pikaemotion_pcm $ff
- pikaemotion_5 $12
- db $ff
-
-PikachuEmotion19_fd1a9: ; fd1a9 (3f:51a9)
- pikaemotion_dummy2
- pikaemotion_emotebubble HEART_BUBBLE
- pikaemotion_pcm $20
- pikaemotion_5 $13
- db $ff
-
-PikachuEmotion20_fd1b1: ; fd1b1 (3f:51b1)
- pikaemotion_dummy2
- pikaemotion_emotebubble HEART_BUBBLE
- pikaemotion_pcm $4
- pikaemotion_5 $14
- db $ff
-
-PikachuEmotion21_fd1b9: ; fd1b9 (3f:51b9)
- pikaemotion_dummy2
- pikaemotion_emotebubble FISH_BUBBLE
- pikaemotion_pcm $ff
- pikaemotion_5 $15
- db $ff
-
-PikachuEmotion22_fd1c1: ; fd1c1 (3f:51c1)
- pikaemotion_dummy2
- pikaemotion_pcm $3
- pikaemotion_5 $16
- db $ff
-
-PikachuEmotion23_fd1c7: ; fd1c7 (3f:51c7)
- pikaemotion_dummy2
- pikaemotion_pcm $12
- pikaemotion_5 $17
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
- db $ff
-
-PikachuEmotion24_fd1cf: ; fd1cf (3f:51cf)
- pikaemotion_dummy2
- pikaemotion_emotebubble EXCLAMATION_BUBBLE
- pikaemotion_pcm $ff
- pikaemotion_5 $18
- db $ff
-
-PikachuEmotion25_fd1d7: ; fd1d7 (3f:51d7)
- pikaemotion_dummy2
- pikaemotion_emotebubble BOLT_BUBBLE
- pikaemotion_pcm $22
- pikaemotion_5 $19
- db $ff
-
-PikachuEmotion26_fd1df: ; fd1df (3f:51df)
- pikaemotion_dummy2
- pikaemotion_emotebubble ZZZ_BUBBLE
- pikaemotion_pcm $24
- pikaemotion_5 $1a
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKPEWTERCENTER
- db $ff
-
-PikachuEmotion27_fd1eb: ; fd1eb (3f:51eb)
- pikaemotion_dummy2
- pikaemotion_pcm $8
- pikaemotion_5 $1b
- db $ff
-
-PikachuEmotion28_fd1f1: ; fd1f1 (3f:51f1)
- pikaemotion_dummy2
- pikaemotion_pcm $e
- pikaemotion_5 $1c
- db $ff
-
-PikachuEmotion29_fd1f7: ; fd1f7 (3f:51f7)
- pikaemotion_pcm $4
- pikaemotion_5 $a
- db $ff
-
-PikachuEmotion30_fd1fc: ; fd1fc (3f:51fc)
- pikaemotion_9
- pikaemotion_emotebubble HEART_BUBBLE
- pikaemotion_pcm $4
- pikaemotion_5 $14
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADFONT
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKLAVENDERTOWER
- db $ff
-
-PikachuEmotion31_fd20a: ; fd20a (3f:520a)
- pikaemotion_pcm $12
- pikaemotion_5 $17
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKBILLSHOUSE
- db $ff
-
-PikachuEmotion32_fd213: ; fd213 (3f:5213)
- pikaemotion_pcm $19
- pikaemotion_5 $17
- db $ff
-
-Pointer_fd218: ; fd218 (3f:5218)
- dr $fd218,$fd21e
-Pointer_fd21e: ; fd21e (3f:521e)
- dr $fd21e,$fd224
-Pointer_fd224: ; fd224 (3f:5224)
- dr $fd224,$fd230
-Pointer_fd230: ; fd230 (3f:5230)
- dr $fd230,$fd252
-Func_fd252: ; fd252 (3f:5252)
- dr $fd252,$fd2a1
-Func_fd2a1:: ; fd2a1 (3f:52a1)
- dr $fd2a1,$fd8ab
-Func_fd8ab: ; fd8ab (3f:58ab)
- dr $fd8ab,$fd8d4
-Func_fd8d4: ; fd8d4 (3f:58d4)
- dr $fd8d4,$fd8e1
-Func_fd8e1: ; fd8e1 (3f:58e1)
- dr $fd8e1,$fd8ee
-Func_fd8ee: ; fd8ee (3f:58ee)
- dr $fd8ee,$fd8f8
-Func_fd8f8: ; fd8f8 (3f:58f8)
- dr $fd8f8,$fd978
-Func_fd978: ; fd978 (3f:5978)
- dr $fd978,$fd9d0
-Func_fd9d0: ; fd9d0 (3f:59d0)
- dr $fd9d0,$fe66f
OfficerJennySprite: INCBIN "gfx/sprites/officer_jenny.2bpp"
PikachuSprite: INCBIN "gfx/sprites/pikachu.2bpp"
@@ -2322,4 +1814,4 @@ Clefairy2Sprite: INCBIN "gfx/sprites/clefairy2.2bpp"
ChanseySprite: INCBIN "gfx/sprites/chansey.2bpp"
SurfingPikachuSprite: INCBIN "gfx/sprites/surfing_pikachu.2bpp"
JessieSprite: INCBIN "gfx/sprites/jessie.2bpp"
-JamesSprite: INCBIN "gfx/sprites/james.2bpp" \ No newline at end of file
+JamesSprite: INCBIN "gfx/sprites/james.2bpp"
diff --git a/engine/evolution.asm b/engine/evolution.asm
index c65cc293..780d78e7 100755
--- a/engine/evolution.asm
+++ b/engine/evolution.asm
@@ -1,4 +1,4 @@
-EvolveMon: ; 7bde9 (1e:7de9)
+EvolveMon: ; 5da70 (17:5a70)
push hl
push de
push bc
@@ -9,9 +9,7 @@ EvolveMon: ; 7bde9 (1e:7de9)
xor a
ld [wLowHealthAlarm], a
ld [wChannelSoundIDs + CH4], a
- dec a
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
ld a, SFX_TINK
@@ -67,9 +65,7 @@ EvolveMon: ; 7bde9 (1e:7de9)
ld a, [wEvoNewSpecies]
.done
ld [wWholeScreenPaletteMonSpecies], a
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld a, [wWholeScreenPaletteMonSpecies]
call PlayCry
ld c, 0
diff --git a/engine/game_corner_slots2.asm b/engine/game_corner_slots2.asm
index 1bcbefb1..3f7c3f71 100755
--- a/engine/game_corner_slots2.asm
+++ b/engine/game_corner_slots2.asm
@@ -6,13 +6,13 @@ AbleToPlaySlotsCheck: ; 2fdfd (b:7dfd)
predef GetQuantityOfItemInBag
ld a, b
and a
- ld b, GameCornerCoinCaseText_id ; - TextPredefs) / 2 + 1
+ ld b, (GameCornerCoinCaseText_id - TextPredefs) / 2 + 1
jr z, .printCoinCaseRequired
ld hl, wPlayerCoins
ld a, [hli]
or [hl]
jr nz, .done ; able to play
- ld b, GameCornerNoCoinsText_id ; - TextPredefs) / 2 + 1
+ ld b, (GameCornerNoCoinsText_id - TextPredefs) / 2 + 1
.printCoinCaseRequired
call EnableAutoTextBoxDrawing
ld a, b
diff --git a/engine/hidden_object_functions17.asm b/engine/hidden_object_functions17.asm
index 90b26578..8e5920d5 100755
--- a/engine/hidden_object_functions17.asm
+++ b/engine/hidden_object_functions17.asm
@@ -1,4 +1,4 @@
-PrintRedsNESText: ; 5db79 (17:5b79)
+PrintRedsNESText: ; 5dbae (17:5bae)
call EnableAutoTextBoxDrawing
tx_pre_jump RedBedroomSNESText
@@ -22,7 +22,10 @@ Route15GateLeftBinoculars: ; 5db8f (17:5b8f)
ld a, ARTICUNO
ld [wcf91], a
call PlayCry
- jp DisplayMonFrontSpriteInBox
+ call DisplayMonFrontSpriteInBox
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ret
Route15UpstairsBinocularsText: ; 5dba8 (17:5ba8)
TX_FAR _Route15UpstairsBinocularsText
@@ -52,6 +55,30 @@ KabutopsFossilText: ; 5dbd4 (17:5bd4)
TX_FAR _KabutopsFossilText
db "@"
+FanClubPicture1: ; 5dbad (17:5c12)
+ ld a, RAPIDASH
+ ld [wcf91], a
+ call DisplayMonFrontSpriteInBox
+ call EnableAutoTextBoxDrawing
+ tx_pre FanClubPicture1Text
+ ret
+
+FanClubPicture1Text: ; 5dbbe (17:5bbe)
+ TX_FAR _FanClubPicture1Text
+ db "@"
+
+FanClubPicture2: ; 5dbad (17:5c28)
+ ld a, FEAROW
+ ld [wcf91], a
+ call DisplayMonFrontSpriteInBox
+ call EnableAutoTextBoxDrawing
+ tx_pre FanClubPicture2Text
+ ret
+
+FanClubPicture2Text: ; 5dc39 (17:5c39)
+ TX_FAR _FanClubPicture2Text
+ db "@"
+
DisplayMonFrontSpriteInBox: ; 5dbd9 (17:5bd9)
; Displays a pokemon's front sprite in a pop-up window.
; [wcf91] = pokemon interal id number
@@ -110,8 +137,7 @@ LinkCableHelp: ; 5dc29 (17:5c29)
ld hl, wd730
set 6, [hl]
coord hl, 0, 0
- ld b, $8
- ld c, $d
+ lb bc, $8, $d
call TextBoxBorder
coord hl, 2, 2
ld de, HowToLinkText
@@ -339,53 +365,17 @@ GymTrashScript: ; 5ddfc (17:5dfc)
.openFirstLock
; Next can is trying for the second switch.
SetEvent EVENT_1ST_LOCK_OPENED
-
- ld hl, GymTrashCans
- ld a, [wGymTrashCanIndex]
- ; * 5
- ld b, a
- add a
- add a
- add b
-
- ld d, 0
- ld e, a
- add hl, de
- ld a, [hli]
-
-; There is a bug in this code. It should calculate a value in the range [0, 3]
-; but if the mask and random number don't have any 1 bits in common, then
-; the result of the AND will be 0. When 1 is subtracted from that, the value
-; will become $ff. This will result in 255 being added to hl, which will cause
-; hl to point to one of the zero bytes that pad the end of the ROM bank.
-; Trash can 0 was intended to be able to have the second lock only when the
-; first lock was in trash can 1 or 3. However, due to this bug, trash can 0 can
-; have the second lock regardless of which trash can had the first lock.
-
- ld [hGymTrashCanRandNumMask], a
- push hl
- call Random
- swap a
- ld b, a
- ld a, [hGymTrashCanRandNumMask]
- and b
- dec a
- pop hl
-
- ld d, 0
- ld e, a
- add hl, de
- ld a, [hl]
- and $f
- ld [wSecondLockTrashCanIndex], a
-
+ callab Func_f2d0c
tx_pre_id VermilionGymTrashSuccesText1
jr .done
.trySecondLock
- ld a, [wSecondLockTrashCanIndex]
- ld b, a
ld a, [wGymTrashCanIndex]
+ ld b, a
+ ld a, [wSecondLockTrashCanIndex]
+ cp b
+ jr z, .openSecondLock
+ ld a, [wSecondLockTrashCanIndex + 1]
cp b
jr z, .openSecondLock
@@ -413,25 +403,26 @@ GymTrashScript: ; 5ddfc (17:5dfc)
GymTrashCans: ; 5de7d (17:5e7d)
; byte 0: mask for random number
; bytes 1-4: indices of the trash cans that can have the second lock
-; (but see the comment above explaining a bug regarding this)
; Note that the mask is simply the number of valid trash can indices that
-; follow. The remaining bytes are filled with 0 to pad the length of each entry
+; follow. The remaining bytes are filled with -1 to pad the length of each entry
; to 5 bytes.
- db 2, 1, 3, 0, 0 ; 0
- db 3, 0, 2, 4, 0 ; 1
- db 2, 1, 5, 0, 0 ; 2
- db 3, 0, 4, 6, 0 ; 3
+; This is functionally replaced with GymTrashCans3a but was never removed from source.
+
+ db 2, 1, 3, -1, -1 ; 0
+ db 3, 0, 2, 4, -1 ; 1
+ db 2, 1, 5, -1, -1 ; 2
+ db 3, 0, 4, 6, -1 ; 3
db 4, 1, 3, 5, 7 ; 4
- db 3, 2, 4, 8, 0 ; 5
- db 3, 3, 7, 9, 0 ; 6
+ db 3, 2, 4, 8, -1 ; 5
+ db 3, 3, 7, 9, -1 ; 6
db 4, 4, 6, 8, 10 ; 7
- db 3, 5, 7, 11, 0 ; 8
- db 3, 6, 10, 12, 0 ; 9
+ db 3, 5, 7, 11, -1 ; 8
+ db 3, 6, 10, 12, -1 ; 9
db 4, 7, 9, 11, 13 ; 10
- db 3, 8, 10, 14, 0 ; 11
- db 2, 9, 13, 0, 0 ; 12
- db 3, 10, 12, 14, 0 ; 13
- db 2, 11, 13, 0, 0 ; 14
+ db 3, 8, 10, 14, -1 ; 11
+ db 2, 9, 13, -1, -1 ; 12
+ db 3, 10, 12, 14, -1 ; 13
+ db 2, 11, 13, -1, -1 ; 14
; 5dec8
VermilionGymTrashSuccesText1: ; 5dec8 (17:5ec8)
diff --git a/engine/hidden_object_functions18.asm b/engine/hidden_object_functions18.asm
index ab66a818..443f8369 100755
--- a/engine/hidden_object_functions18.asm
+++ b/engine/hidden_object_functions18.asm
@@ -1,4 +1,4 @@
-GymStatues: ; 62419 (18:6419)
+GymStatues: ; 625e8 (18:65e8)
; if in a gym and have the corresponding badge, a = GymStatueText2_id and jp PrintPredefTextID
; if in a gym and don’t have the corresponding badge, a = GymStatueText1_id and jp PrintPredefTextID
; else ret
@@ -29,14 +29,14 @@ GymStatues: ; 62419 (18:6419)
jp PrintPredefTextID
.BadgeFlags: ; 62442 (18:6442)
- db PEWTER_GYM, %00000001
- db CERULEAN_GYM, %00000010
- db VERMILION_GYM,%00000100
- db CELADON_GYM, %00001000
- db FUCHSIA_GYM, %00010000
- db SAFFRON_GYM, %00100000
- db CINNABAR_GYM, %01000000
- db VIRIDIAN_GYM, %10000000
+ db PEWTER_GYM, %00000001
+ db CERULEAN_GYM, %00000010
+ db VERMILION_GYM, %00000100
+ db CELADON_GYM, %00001000
+ db FUCHSIA_GYM, %00010000
+ db SAFFRON_GYM, %00100000
+ db CINNABAR_GYM, %01000000
+ db VIRIDIAN_GYM, %10000000
db $ff
GymStatueText1: ; 62453 (18:6453)
@@ -72,30 +72,36 @@ PrintBenchGuyText: ; 6245d (18:645d)
; format: db map id, player sprite facing direction, text id of PredefTextIDPointerTable
BenchGuyTextPointers: ; 6247e (18:647e)
- db VIRIDIAN_POKECENTER, SPRITE_FACING_LEFT
- db (ViridianCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
- db PEWTER_POKECENTER, SPRITE_FACING_LEFT
- db (PewterCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
- db CERULEAN_POKECENTER, SPRITE_FACING_LEFT
- db (CeruleanCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
- db LAVENDER_POKECENTER, SPRITE_FACING_LEFT
- db (LavenderCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
- db VERMILION_POKECENTER, SPRITE_FACING_LEFT
- db (VermilionCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
- db CELADON_POKECENTER, SPRITE_FACING_LEFT
- db (CeladonCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
- db CELADON_HOTEL, SPRITE_FACING_LEFT
- db (CeladonCityHotelText_id - TextPredefs) / 2 + 1
- db FUCHSIA_POKECENTER, SPRITE_FACING_LEFT
- db (FuchsiaCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
- db CINNABAR_POKECENTER, SPRITE_FACING_LEFT
- db (CinnabarIslandPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
- db SAFFRON_POKECENTER, SPRITE_FACING_LEFT
- db (SaffronCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
- db MT_MOON_POKECENTER, SPRITE_FACING_LEFT
- db (MtMoonPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
- db ROCK_TUNNEL_POKECENTER,SPRITE_FACING_LEFT
- db (RockTunnelPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
+ db VIRIDIAN_POKECENTER, SPRITE_FACING_LEFT
+ db_tx_pre ViridianCityPokecenterBenchGuyText
+ db PEWTER_POKECENTER, SPRITE_FACING_LEFT
+ db_tx_pre PewterCityPokecenterBenchGuyText
+ db CERULEAN_POKECENTER, SPRITE_FACING_LEFT
+ db_tx_pre CeruleanCityPokecenterBenchGuyText
+ db LAVENDER_POKECENTER, SPRITE_FACING_LEFT
+ db_tx_pre LavenderCityPokecenterBenchGuyText
+ db VERMILION_POKECENTER, SPRITE_FACING_LEFT
+ db_tx_pre VermilionCityPokecenterBenchGuyText
+ db CELADON_POKECENTER, SPRITE_FACING_LEFT
+ db_tx_pre CeladonCityPokecenterBenchGuyText
+ db CELADON_HOTEL, SPRITE_FACING_LEFT
+ db_tx_pre CeladonCityHotelText
+ db FUCHSIA_POKECENTER, SPRITE_FACING_LEFT
+ db_tx_pre FuchsiaCityPokecenterBenchGuyText
+ db CINNABAR_POKECENTER, SPRITE_FACING_LEFT
+ db_tx_pre CinnabarIslandPokecenterBenchGuyText
+ db SAFFRON_POKECENTER, SPRITE_FACING_LEFT
+ db_tx_pre SaffronCityPokecenterBenchGuyText
+ db MT_MOON_POKECENTER, SPRITE_FACING_LEFT
+ db_tx_pre MtMoonPokecenterBenchGuyText
+ db ROCK_TUNNEL_POKECENTER, SPRITE_FACING_LEFT
+ db_tx_pre RockTunnelPokecenterBenchGuyText
+ db SAFARI_ZONE_REST_HOUSE_2,SPRITE_FACING_LEFT
+ db_tx_pre UnusedBenchGuyText1
+ db SAFARI_ZONE_REST_HOUSE_3,SPRITE_FACING_LEFT
+ db_tx_pre UnusedBenchGuyText2
+ db SAFARI_ZONE_REST_HOUSE_4,SPRITE_FACING_LEFT
+ db_tx_pre UnusedBenchGuyText3
db $FF
ViridianCityPokecenterBenchGuyText: ; 624a3 (18:64a3)
@@ -177,7 +183,7 @@ CeladonCityHotelText: ; 62502 (18:6502)
UnusedPredefText: ; 62508 (18:6508)
db "@"
-PrintBookcaseText: ; 6509 (18:6509)
+PrintBookcaseText: ; 626e1 (18:66e1)
call EnableAutoTextBoxDrawing
tx_pre_jump BookcaseText
diff --git a/engine/items/itemfinder.asm b/engine/items/itemfinder.asm
index d638b0b8..7b479462 100755
--- a/engine/items/itemfinder.asm
+++ b/engine/items/itemfinder.asm
@@ -1,4 +1,4 @@
-HiddenItemNear: ; 7481f (1d:481f)
+HiddenItemNear: ; 7405c (1d:405c)
ld hl, HiddenItemCoords
ld b, 0
.loop
@@ -43,7 +43,7 @@ HiddenItemNear: ; 7481f (1d:481f)
scf
ret
-Sub5ClampTo0: ; 7486b (1d:486b)
+Sub5ClampTo0: ; 740a8 (1d:40a8)
; subtract 5 but clamp to 0
sub 5
cp $f0
diff --git a/engine/items/items.asm b/engine/items/items.asm
index aa607911..eca9eaef 100755
--- a/engine/items/items.asm
+++ b/engine/items/items.asm
@@ -607,7 +607,7 @@ ItemUseSurfboard: ; d725 (3:5725)
call .makePlayerMoveForward
ld a,$3
ld [wd431], a
- ld hl,wd430
+ ld hl,wPikachuOverworldStateFlags
set 5,[hl]
ld hl,wd730
set 7,[hl]
@@ -1765,7 +1765,7 @@ ItemUsePokeflute: ; dfbd (3:5fbd)
.notRoute16
cp a,PEWTER_POKECENTER
jr nz,.noSnorlaxOrPikachuToWakeUp
- call Func_154a
+ call CheckPikachuAsleep
jr z,.noSnorlaxOrPikachuToWakeUp
callab Func_fcb01
jr nc,.noSnorlaxOrPikachuToWakeUp
diff --git a/engine/menu/bills_pc.asm b/engine/menu/bills_pc.asm
index ce9ca5a8..97a65517 100644
--- a/engine/menu/bills_pc.asm
+++ b/engine/menu/bills_pc.asm
@@ -227,7 +227,7 @@ BillsPCDeposit: ; 2156d (8:556d)
jp c, BillsPCMenu
callab IsThisPartymonStarterPikachu_Party
jr nc, .asm_215ad
- call Func_154a
+ call CheckPikachuAsleep
jr z, .asm_215ad
ld hl, SleepingPikachuText2
call PrintText
diff --git a/engine/menu/party_menu.asm b/engine/menu/party_menu.asm
index 3ec0029e..8683d3cb 100755
--- a/engine/menu/party_menu.asm
+++ b/engine/menu/party_menu.asm
@@ -53,7 +53,7 @@ RedrawPartyMenu_: ; 11886 (4:5886)
ld [wWhichPokemon],a
callab IsThisPartymonStarterPikachu_Party
jr nc, .regularMon
- call Func_154a
+ call CheckPikachuAsleep
jr z, .regularMon
ld a, $ff
ld [hPartyMonIndex], a
diff --git a/engine/menu/pokedex.asm b/engine/menu/pokedex.asm
index c481a20c..298816c1 100755
--- a/engine/menu/pokedex.asm
+++ b/engine/menu/pokedex.asm
@@ -2,54 +2,54 @@ ShowPokedexMenu: ; 40000 (10:4000)
call GBPalWhiteOut
call ClearScreen
call UpdateSprites
- ld a,[wListScrollOffset]
+ ld a, [wListScrollOffset]
push af
xor a
- ld [wCurrentMenuItem],a
- ld [wListScrollOffset],a
- ld [wLastMenuItem],a
+ ld [wCurrentMenuItem], a
+ ld [wListScrollOffset], a
+ ld [wLastMenuItem], a
inc a
- ld [wd11e],a
- ld [hJoy7],a
+ ld [wd11e], a
+ ld [hJoy7], a
.setUpGraphics
callab LoadPokedexTilePatterns
.asm_40025
ld b, SET_PAL_GENERIC
call RunPaletteCommand
.doPokemonListMenu
- ld hl,wTopMenuItemY
- ld a,3
- ld [hli],a ; top menu item Y
+ ld hl, wTopMenuItemY
+ ld a, 3
+ ld [hli], a ; top menu item Y
xor a
- ld [hli],a ; top menu item X
+ ld [hli], a ; top menu item X
inc a
- ld [wMenuWatchMovingOutOfBounds],a
+ ld [wMenuWatchMovingOutOfBounds], a
inc hl
inc hl
- ld a,6
- ld [hli],a ; max menu item ID
- ld [hl],D_LEFT | D_RIGHT | B_BUTTON | A_BUTTON
+ ld a, 6
+ ld [hli], a ; max menu item ID
+ ld [hl], D_LEFT | D_RIGHT | B_BUTTON | A_BUTTON
call HandlePokedexListMenu
- jr c,.goToSideMenu ; if the player chose a pokemon from the list
+ jr c, .goToSideMenu ; if the player chose a pokemon from the list
.exitPokedex
xor a
- ld [wMenuWatchMovingOutOfBounds],a
- ld [wCurrentMenuItem],a
- ld [wLastMenuItem],a
- ld [hJoy7],a
- ld [wWastedByteCD3A],a
- ld [wOverrideSimulatedJoypadStatesMask],a
+ ld [wMenuWatchMovingOutOfBounds], a
+ ld [wCurrentMenuItem], a
+ ld [wLastMenuItem], a
+ ld [hJoy7], a
+ ld [wWastedByteCD3A], a
+ ld [wOverrideSimulatedJoypadStatesMask], a
pop af
- ld [wListScrollOffset],a
+ ld [wListScrollOffset], a
call GBPalWhiteOutWithDelay3
call RunDefaultPaletteCommand
jp ReloadMapData
.goToSideMenu
call HandlePokedexSideMenu
dec b
- jr z,.exitPokedex ; if the player chose Quit
+ jr z, .exitPokedex ; if the player chose Quit
dec b
- jr z,.doPokemonListMenu ; if pokemon not seen or player pressed B button
+ jr z, .doPokemonListMenu ; if pokemon not seen or player pressed B button
dec b
jr z, .asm_40025
jp .setUpGraphics ; if pokemon data or area was shown
@@ -62,73 +62,73 @@ ShowPokedexMenu: ; 40000 (10:4000)
; 02: the pokemon has not been seen yet or the player pressed the B button
HandlePokedexSideMenu: ; 40070 (10:4070)
call PlaceUnfilledArrowMenuCursor
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
push af
- ld b,a
- ld a,[wLastMenuItem]
+ ld b, a
+ ld a, [wLastMenuItem]
push af
- ld a,[wListScrollOffset]
+ ld a, [wListScrollOffset]
push af
add b
inc a
- ld [wd11e],a
- ld a,[wd11e]
+ ld [wd11e], a
+ ld a, [wd11e]
push af
- ld a,[wDexMaxSeenMon]
+ ld a, [wDexMaxSeenMon]
push af ; this doesn't need to be preserved
- ld hl,wPokedexSeen
+ ld hl, wPokedexSeen
call IsPokemonBitSet
- ld b,2
- jr z,.exitSideMenu
+ ld b, 2
+ jr z, .exitSideMenu
call PokedexToIndex
- ld hl,wTopMenuItemY
- ld a,8
- ld [hli],a ; top menu item Y
- ld a,15
- ld [hli],a ; top menu item X
+ ld hl, wTopMenuItemY
+ ld a, 8
+ ld [hli], a ; top menu item Y
+ ld a, 15
+ ld [hli], a ; top menu item X
xor a
- ld [hli],a ; current menu item ID
+ ld [hli], a ; current menu item ID
inc hl
- ld a,4
- ld [hli],a ; max menu item ID
+ ld a, 4
+ ld [hli], a ; max menu item ID
ld a, A_BUTTON | B_BUTTON
- ld [hli],a ; menu watched keys (A button and B button)
+ ld [hli], a ; menu watched keys (A button and B button)
xor a
- ld [hli],a ; old menu item ID
- ld [wMenuWatchMovingOutOfBounds],a
- ld [hJoy7],a
+ ld [hli], a ; old menu item ID
+ ld [wMenuWatchMovingOutOfBounds], a
+ ld [hJoy7], a
.handleMenuInput
call HandleMenuInput
- bit 1,a ; was the B button pressed?
- ld b,2
- jr nz,.buttonBPressed
- ld a,[wCurrentMenuItem]
+ bit 1, a ; was the B button pressed?
+ ld b, 2
+ jr nz, .buttonBPressed
+ ld a, [wCurrentMenuItem]
and a
- jr z,.choseData
+ jr z, .choseData
dec a
- jr z,.choseCry
+ jr z, .choseCry
dec a
- jr z,.choseArea
+ jr z, .choseArea
dec a
- jr z,.chosePrint
+ jr z, .chosePrint
.choseQuit
- ld b,1
+ ld b, 1
.exitSideMenu
pop af
- ld [wDexMaxSeenMon],a
+ ld [wDexMaxSeenMon], a
pop af
- ld [wd11e],a
+ ld [wd11e], a
pop af
- ld [wListScrollOffset],a
+ ld [wListScrollOffset], a
pop af
- ld [wLastMenuItem],a
+ ld [wLastMenuItem], a
pop af
- ld [wCurrentMenuItem],a
+ ld [wCurrentMenuItem], a
ld a, $1
ld [hJoy7], a
push bc
coord hl, 0, 3
- ld de,20
+ ld de, 20
lb bc, " ", 13
call DrawTileLine ; cover up the menu cursor in the pokemon list
pop bc
@@ -136,24 +136,24 @@ HandlePokedexSideMenu: ; 40070 (10:4070)
.buttonBPressed
push bc
coord hl, 15, 8
- ld de,20
+ ld de, 20
lb bc, " ", 9
call DrawTileLine ; cover up the menu cursor in the side menu
pop bc
jr .exitSideMenu
.choseData
call ShowPokedexDataInternal
- ld b,0
+ ld b, 0
jr .exitSideMenu
; play pokemon cry
.choseCry
- ld a,[wd11e]
+ ld a, [wd11e]
call GetCryData
call PlaySound
jr .handleMenuInput
.choseArea
predef LoadTownMap_Nest ; display pokemon areas
- ld b,0
+ ld b, 0
jr .exitSideMenu
.chosePrint
ld a, [hTilesetType]
@@ -179,63 +179,63 @@ HandlePokedexListMenu: ; 40140 (10:4140)
call Func_4027c
call GBPalNormal
call HandleMenuInput
- bit 1,a ; was the B button pressed?
- jp nz,.buttonBPressed
+ bit 1, a ; was the B button pressed?
+ jp nz, .buttonBPressed
bit 0, a ; was the A button pressed?
- jp nz,.buttonAPressed
+ jp nz, .buttonAPressed
.checkIfUpPressed
- bit 6,a ; was Up pressed?
- jr z,.checkIfDownPressed
+ bit 6, a ; was Up pressed?
+ jr z, .checkIfDownPressed
.upPressed ; scroll up one row
- ld a,[wListScrollOffset]
+ ld a, [wListScrollOffset]
and a
- jp z,.loop
+ jp z, .loop
dec a
- ld [wListScrollOffset],a
+ ld [wListScrollOffset], a
jp .loop
.checkIfDownPressed
- bit 7,a ; was Down pressed?
- jr z,.checkIfRightPressed
+ bit 7, a ; was Down pressed?
+ jr z, .checkIfRightPressed
.downPressed ; scroll down one row
- ld a,[wDexMaxSeenMon]
- cp a,7
- jp c,.loop ; can't if the list is shorter than 7
- sub a,7
- ld b,a
- ld a,[wListScrollOffset]
+ ld a, [wDexMaxSeenMon]
+ cp a, 7
+ jp c, .loop ; can't if the list is shorter than 7
+ sub a, 7
+ ld b, a
+ ld a, [wListScrollOffset]
cp b
- jp z,.loop
+ jp z, .loop
inc a
- ld [wListScrollOffset],a
+ ld [wListScrollOffset], a
jp .loop
.checkIfRightPressed
- bit 4,a ; was Right pressed?
- jr z,.checkIfLeftPressed
+ bit 4, a ; was Right pressed?
+ jr z, .checkIfLeftPressed
.rightPressed ; scroll down 7 rows
- ld a,[wDexMaxSeenMon]
- cp a,7
- jp c,.loop ; can't if the list is shorter than 7
- sub a,6
- ld b,a
- ld a,[wListScrollOffset]
- add a,7
- ld [wListScrollOffset],a
+ ld a, [wDexMaxSeenMon]
+ cp a, 7
+ jp c, .loop ; can't if the list is shorter than 7
+ sub a, 6
+ ld b, a
+ ld a, [wListScrollOffset]
+ add a, 7
+ ld [wListScrollOffset], a
cp b
- jp c,.loop
+ jp c, .loop
dec b
- ld a,b
- ld [wListScrollOffset],a
+ ld a, b
+ ld [wListScrollOffset], a
jp .loop
.checkIfLeftPressed ; scroll up 7 rows
- bit 5,a ; was Left pressed?
- jr z,.buttonAPressed
+ bit 5, a ; was Left pressed?
+ jr z, .buttonAPressed
.leftPressed
- ld a,[wListScrollOffset]
- sub a,7
- ld [wListScrollOffset],a
- jp nc,.loop
+ ld a, [wListScrollOffset]
+ sub a, 7
+ ld [wListScrollOffset], a
+ jp nc, .loop
xor a
- ld [wListScrollOffset],a
+ ld [wListScrollOffset], a
jp .loop
.buttonAPressed
scf
@@ -249,72 +249,72 @@ Func_401c2: ; 401c2 (10:41c2)
ld [H_AUTOBGTRANSFERENABLED], a
; draw the horizontal line separating the seen and owned amounts from the menu
coord hl, 15, 6
- ld a,$7a ; horizontal line tile
- ld [hli],a
- ld [hli],a
- ld [hli],a
- ld [hli],a
- ld [hli],a
+ ld a, $7a ; horizontal line tile
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
coord hl, 14, 0
- ld [hl],$71 ; vertical line tile
+ ld [hl], $71 ; vertical line tile
coord hl, 14, 1
call DrawPokedexVerticalLine
coord hl, 14, 9
call DrawPokedexVerticalLine
- ld hl,wPokedexSeen
- ld b,wPokedexSeenEnd - wPokedexSeen
+ ld hl, wPokedexSeen
+ ld b, wPokedexSeenEnd - wPokedexSeen
call CountSetBits
ld de, wNumSetBits
coord hl, 16, 2
lb bc, 1, 3
call PrintNumber ; print number of seen pokemon
- ld hl,wPokedexOwned
- ld b,wPokedexOwnedEnd - wPokedexOwned
+ ld hl, wPokedexOwned
+ ld b, wPokedexOwnedEnd - wPokedexOwned
call CountSetBits
ld de, wNumSetBits
coord hl, 16, 5
lb bc, 1, 3
call PrintNumber ; print number of owned pokemon
coord hl, 16, 1
- ld de,PokedexSeenText
+ ld de, PokedexSeenText
call PlaceString
coord hl, 16, 4
- ld de,PokedexOwnText
+ ld de, PokedexOwnText
call PlaceString
coord hl, 1, 1
- ld de,PokedexContentsText
+ ld de, PokedexContentsText
call PlaceString
coord hl, 16, 8
- ld de,PokedexMenuItemsText
+ ld de, PokedexMenuItemsText
call PlaceString
; find the highest pokedex number among the pokemon the player has seen
- ld hl,wPokedexSeenEnd - 1
- ld b,(wPokedexSeenEnd - wPokedexSeen) * 8 + 1
+ ld hl, wPokedexSeenEnd - 1
+ ld b, (wPokedexSeenEnd - wPokedexSeen) * 8 + 1
.maxSeenPokemonLoop
- ld a,[hld]
- ld c,8
+ ld a, [hld]
+ ld c, 8
.maxSeenPokemonInnerLoop
dec b
sla a
- jr c,.storeMaxSeenPokemon
+ jr c, .storeMaxSeenPokemon
dec c
- jr nz,.maxSeenPokemonInnerLoop
+ jr nz, .maxSeenPokemonInnerLoop
jr .maxSeenPokemonLoop
.storeMaxSeenPokemon
- ld a,b
- ld [wDexMaxSeenMon],a
+ ld a, b
+ ld [wDexMaxSeenMon], a
ret
DrawPokedexVerticalLine: ; 40243 (10:4243)
- ld c,9 ; height of line
- ld de,SCREEN_WIDTH ; width of screen
- ld a,$71 ; vertical line tile
+ ld c, 9 ; height of line
+ ld de, SCREEN_WIDTH ; width of screen
+ ld a, $71 ; vertical line tile
.loop
- ld [hl],a
- add hl,de
- xor a,1 ; toggle between vertical line tile and box tile
+ ld [hl], a
+ add hl, de
+ xor a, 1 ; toggle between vertical line tile and box tile
dec c
- jr nz,.loop
+ jr nz, .loop
ret
PokedexSeenText: ; 40252 (10:4252)
@@ -335,51 +335,51 @@ PokedexMenuItemsText: ; 40264 (10:4264)
Func_4027c: ; 4027c (10:427c)
xor a
- ld [H_AUTOBGTRANSFERENABLED],a
+ ld [H_AUTOBGTRANSFERENABLED], a
coord hl, 4, 2
lb bc, 14, 10
call ClearScreenArea
coord hl, 1, 3
- ld a,[wListScrollOffset]
- ld [wd11e],a
- ld d,7
- ld a,[wDexMaxSeenMon]
- cp a,7
- jr nc,.printPokemonLoop
- ld d,a
+ ld a, [wListScrollOffset]
+ ld [wd11e], a
+ ld d, 7
+ ld a, [wDexMaxSeenMon]
+ cp a, 7
+ jr nc, .printPokemonLoop
+ ld d, a
dec a
- ld [wMaxMenuItem],a
+ ld [wMaxMenuItem], a
; loop to print pokemon pokedex numbers and names
; if the player has owned the pokemon, it puts a pokeball beside the name
.printPokemonLoop
- ld a,[wd11e]
+ ld a, [wd11e]
inc a
- ld [wd11e],a
+ ld [wd11e], a
push af
push de
push hl
- ld de,-SCREEN_WIDTH
- add hl,de
- ld de,wd11e
+ ld de, -SCREEN_WIDTH
+ add hl, de
+ ld de, wd11e
lb bc, LEADING_ZEROES | 1, 3
call PrintNumber ; print the pokedex number
- ld de,SCREEN_WIDTH
- add hl,de
+ ld de, SCREEN_WIDTH
+ add hl, de
dec hl
push hl
- ld hl,wPokedexOwned
+ ld hl, wPokedexOwned
call IsPokemonBitSet
pop hl
- ld a," "
- jr z,.writeTile
- ld a,$72 ; pokeball tile
+ ld a, " "
+ jr z, .writeTile
+ ld a, $72 ; pokeball tile
.writeTile
- ld [hl],a ; put a pokeball next to pokemon that the player has owned
+ ld [hl], a ; put a pokeball next to pokemon that the player has owned
push hl
- ld hl,wPokedexSeen
+ ld hl, wPokedexSeen
call IsPokemonBitSet
- jr nz,.getPokemonName ; if the player has seen the pokemon
- ld de,.dashedLine ; print a dashed line in place of the name if the player hasn't seen the pokemon
+ jr nz, .getPokemonName ; if the player has seen the pokemon
+ ld de, .dashedLine ; print a dashed line in place of the name if the player hasn't seen the pokemon
jr .skipGettingName
.dashedLine ; for unseen pokemon in the list
db "----------@"
@@ -391,15 +391,15 @@ Func_4027c: ; 4027c (10:427c)
inc hl
call PlaceString
pop hl
- ld bc,2 * 20
- add hl,bc
+ ld bc, 2 * 20
+ add hl, bc
pop de
pop af
- ld [wd11e],a
+ ld [wd11e], a
dec d
- jr nz,.printPokemonLoop
- ld a,01
- ld [H_AUTOBGTRANSFERENABLED],a
+ jr nz, .printPokemonLoop
+ ld a, 01
+ ld [H_AUTOBGTRANSFERENABLED], a
call Delay3
ret
@@ -408,12 +408,12 @@ Func_4027c: ; 4027c (10:427c)
; [wd11e] = pokedex number
; hl = address of bit field
IsPokemonBitSet: ; 40303 (10:4303)
- ld a,[wd11e]
+ ld a, [wd11e]
dec a
- ld c,a
- ld b,FLAG_TEST
+ ld c, a
+ ld b, FLAG_TEST
predef FlagActionPredef
- ld a,c
+ ld a, c
and a
ret
@@ -426,44 +426,44 @@ ShowPokedexData: ; 40312 (10:4312)
; function to display pokedex data from inside the pokedex
ShowPokedexDataInternal: ; 40323 (10:4323)
- ld hl,wd72c
- set 1,[hl]
- ld a,$33 ; 3/7 volume
- ld [rNR50],a
+ ld hl, wd72c
+ set 1, [hl]
+ ld a, $33 ; 3/7 volume
+ ld [rNR50], a
ld a, [hTilesetType]
push af
xor a
ld [hTilesetType], a
call GBPalWhiteOut ; zero all palettes
- ld a,[wd11e] ; pokemon ID
- ld [wcf91],a
+ ld a, [wd11e] ; pokemon ID
+ ld [wcf91], a
push af
ld b, SET_PAL_POKEDEX
call RunPaletteCommand
pop af
- ld [wd11e],a
+ ld [wd11e], a
call Func_4039c
call c, Func_404ae
.waitForButtonPress
call JoypadLowSensitivity
- ld a,[hJoy5]
- and a,A_BUTTON | B_BUTTON
- jr z,.waitForButtonPress
+ ld a, [hJoy5]
+ and a, A_BUTTON | B_BUTTON
+ jr z, .waitForButtonPress
pop af
- ld [hTilesetType],a
+ ld [hTilesetType], a
call GBPalWhiteOut
call ClearScreen
call RunDefaultPaletteCommand
call LoadTextBoxTilePatterns
call GBPalNormal
- ld hl,wd72c
- res 1,[hl]
- ld a,$77 ; max volume
- ld [rNR50],a
+ ld hl, wd72c
+ res 1, [hl]
+ ld a, $77 ; max volume
+ ld [rNR50], a
ret
HeightWeightText: ; 40370 (10:4370)
- db "HT ?",$60,"??",$61
+ db "HT ?", $60, "??", $61
next "WT ???lb@"
; XXX does anything point to this?
@@ -472,77 +472,77 @@ PokeText: ; 40385 (10:4385)
; horizontal line that divides the pokedex text description from the rest of the data
PokedexDataDividerLine: ; 40387 (10:4387)
- db $68,$69,$6B,$69,$6B
- db $69,$6B,$69,$6B,$6B
- db $6B,$6B,$69,$6B,$69
- db $6B,$69,$6B,$69,$6A
+ db $68, $69, $6B, $69, $6B
+ db $69, $6B, $69, $6B, $6B
+ db $6B, $6B, $69, $6B, $69
+ db $6B, $69, $6B, $69, $6A
db "@"
Func_4039c: ; 4039c (10:439c)
call ClearScreen
coord hl, 0, 0
- ld de,1
+ ld de, 1
lb bc, $64, SCREEN_WIDTH
call DrawTileLine ; draw top border
coord hl, 0, 17
ld b, $6f
call DrawTileLine ; draw bottom border
coord hl, 0, 1
- ld de,20
+ ld de, 20
lb bc, $66, $10
call DrawTileLine ; draw left border
coord hl, 19, 1
- ld b,$67
+ ld b, $67
call DrawTileLine ; draw right border
- ld a,$63 ; upper left corner tile
+ ld a, $63 ; upper left corner tile
Coorda 0, 0
- ld a,$65 ; upper right corner tile
+ ld a, $65 ; upper right corner tile
Coorda 19, 0
- ld a,$6c ; lower left corner tile
+ ld a, $6c ; lower left corner tile
Coorda 0, 17
- ld a,$6e ; lower right corner tile
+ ld a, $6e ; lower right corner tile
Coorda 19, 17
coord hl, 0, 9
- ld de,PokedexDataDividerLine
+ ld de, PokedexDataDividerLine
call PlaceString ; draw horizontal divider line
coord hl, 9, 6
- ld de,HeightWeightText
+ ld de, HeightWeightText
call PlaceString
call GetMonName
coord hl, 9, 2
call PlaceString
- ld hl,PokedexEntryPointers
- ld a,[wd11e]
+ ld hl, PokedexEntryPointers
+ ld a, [wd11e]
dec a
- ld e,a
- ld d,0
- add hl,de
- add hl,de
- ld a,[hli]
- ld e,a
- ld d,[hl] ; de = address of pokedex entry
+ ld e, a
+ ld d, 0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld d, [hl] ; de = address of pokedex entry
coord hl, 9, 4
call PlaceString ; print species name
- ld h,b
- ld l,c
+ ld h, b
+ ld l, c
push de
- ld a,[wd11e]
+ ld a, [wd11e]
push af
call IndexToPokedex
coord hl, 2, 8
ld a, "№"
- ld [hli],a
- ld a,$f2
- ld [hli],a
- ld de,wd11e
+ ld [hli], a
+ ld a, $f2
+ ld [hli], a
+ ld de, wd11e
lb bc, LEADING_ZEROES | 1, 3
call PrintNumber ; print pokedex number
- ld hl,wPokedexOwned
+ ld hl, wPokedexOwned
call IsPokemonBitSet
pop af
- ld [wd11e],a
- ld a,[wcf91]
- ld [wd0b5],a
+ ld [wd11e], a
+ ld a, [wcf91]
+ ld [wd0b5], a
pop de
push af
push bc
@@ -553,65 +553,65 @@ Func_4039c: ; 4039c (10:439c)
call GetMonHeader ; load pokemon picture location
coord hl, 1, 1
call LoadFlippedFrontSpriteByMonIndex ; draw pokemon picture
- ld a,[wcf91]
+ ld a, [wcf91]
call PlayCry ; play pokemon cry
pop hl
pop de
pop bc
pop af
- ld a,c
+ ld a, c
and a
ret z ; if the pokemon has not been owned, don't print the height, weight, or description
inc de ; de = address of feet (height)
- ld a,[de] ; reads feet, but a is overwritten without being used
+ ld a, [de] ; reads feet, but a is overwritten without being used
coord hl, 12, 6
lb bc, 1, 2
call PrintNumber ; print feet (height)
- ld a,$60 ; feet symbol tile (one tick)
- ld [hl],a
+ ld a, $60 ; feet symbol tile (one tick)
+ ld [hl], a
inc de
inc de ; de = address of inches (height)
coord hl, 15, 6
lb bc, LEADING_ZEROES | 1, 2
call PrintNumber ; print inches (height)
- ld a,$61 ; inches symbol tile (two ticks)
- ld [hl],a
+ ld a, $61 ; inches symbol tile (two ticks)
+ ld [hl], a
; now print the weight (note that weight is stored in tenths of pounds internally)
inc de
inc de
inc de ; de = address of upper byte of weight
push de
; put weight in big-endian order at hDexWeight
- ld hl,hDexWeight
- ld a,[hl] ; save existing value of [hDexWeight]
+ ld hl, hDexWeight
+ ld a, [hl] ; save existing value of [hDexWeight]
push af
- ld a,[de] ; a = upper byte of weight
- ld [hli],a ; store upper byte of weight in [hDexWeight]
- ld a,[hl] ; save existing value of [hDexWeight + 1]
+ ld a, [de] ; a = upper byte of weight
+ ld [hli], a ; store upper byte of weight in [hDexWeight]
+ ld a, [hl] ; save existing value of [hDexWeight + 1]
push af
dec de
- ld a,[de] ; a = lower byte of weight
- ld [hl],a ; store lower byte of weight in [hDexWeight + 1]
- ld de,hDexWeight
+ ld a, [de] ; a = lower byte of weight
+ ld [hl], a ; store lower byte of weight in [hDexWeight + 1]
+ ld de, hDexWeight
coord hl, 11, 8
lb bc, 2, 5 ; 2 bytes, 5 digits
call PrintNumber ; print weight
coord hl, 14, 8
- ld a,[hDexWeight + 1]
- sub a,10
- ld a,[hDexWeight]
- sbc a,0
- jr nc,.next
- ld [hl],"0" ; if the weight is less than 10, put a 0 before the decimal point
+ ld a, [hDexWeight + 1]
+ sub a, 10
+ ld a, [hDexWeight]
+ sbc a, 0
+ jr nc, .next
+ ld [hl], "0" ; if the weight is less than 10, put a 0 before the decimal point
.next
inc hl
- ld a,[hli]
- ld [hld],a ; make space for the decimal point by moving the last digit forward one tile
- ld [hl],$f2 ; decimal point tile
+ ld a, [hli]
+ ld [hld], a ; make space for the decimal point by moving the last digit forward one tile
+ ld [hl], $f2 ; decimal point tile
pop af
- ld [hDexWeight + 1],a ; restore original value of [hDexWeight + 1]
+ ld [hDexWeight + 1], a ; restore original value of [hDexWeight + 1]
pop af
- ld [hDexWeight],a ; restore original value of [hDexWeight]
+ ld [hDexWeight], a ; restore original value of [hDexWeight]
pop hl
inc hl ; hl = address of pokedex description text
scf
@@ -620,11 +620,11 @@ Func_4039c: ; 4039c (10:439c)
Func_404ae: ; 404ae (10:44ae)
coord bc, 1, 11
Func_404b1: ; 404b1 (10:44b1)
- ld a,2
- ld [$fff9],a
+ ld a, 2
+ ld [$fff9], a
call TextCommandProcessor ; print pokedex description text
xor a
- ld [$fff9],a
+ ld [$fff9], a
ret
Func_404bc: ; 404bc (10:44bc)
@@ -667,10 +667,10 @@ DrawTileLine: ; 40501 (10:4501)
push bc
push de
.loop
- ld [hl],b
- add hl,de
+ ld [hl], b
+ add hl, de
dec c
- jr nz,.loop
+ jr nz, .loop
pop de
pop bc
ret
@@ -681,19 +681,19 @@ PokedexToIndex: ; 41086 (10:5086)
; converts the Pokédex number at wd11e to an index
push bc
push hl
- ld a,[wd11e]
- ld b,a
- ld c,0
- ld hl,PokedexOrder
+ ld a, [wd11e]
+ ld b, a
+ ld c, 0
+ ld hl, PokedexOrder
.loop ; go through the list until we find an entry with a matching dex number
inc c
- ld a,[hli]
+ ld a, [hli]
cp b
- jr nz,.loop
+ jr nz, .loop
- ld a,c
- ld [wd11e],a
+ ld a, c
+ ld [wd11e], a
pop hl
pop bc
ret
@@ -702,14 +702,14 @@ IndexToPokedex: ; 4109d (10:509d)
; converts the indexédex number at wd11e to a Pokédex number
push bc
push hl
- ld a,[wd11e]
+ ld a, [wd11e]
dec a
- ld hl,PokedexOrder
- ld b,0
- ld c,a
- add hl,bc
- ld a,[hl]
- ld [wd11e],a
+ ld hl, PokedexOrder
+ ld b, 0
+ ld c, a
+ add hl, bc
+ ld a, [hl]
+ ld [wd11e], a
pop hl
pop bc
ret
diff --git a/engine/overworld/advance_player_sprite.asm b/engine/overworld/advance_player_sprite.asm
index e02fb129..758dd558 100644
--- a/engine/overworld/advance_player_sprite.asm
+++ b/engine/overworld/advance_player_sprite.asm
@@ -7,7 +7,7 @@ _AdvancePlayerSprite:: ; f010c (3c:410c)
dec [hl]
jr nz,.afterUpdateMapCoords
; if it's the end of the animation, update the player's map coordinates
- ld hl, wd430
+ ld hl, wPikachuOverworldStateFlags
res 5, [hl]
ld a,[wYCoord]
add b
diff --git a/engine/overworld/cable_club_npc.asm b/engine/overworld/cable_club_npc.asm
index 8f279759..4170a936 100755
--- a/engine/overworld/cable_club_npc.asm
+++ b/engine/overworld/cable_club_npc.asm
@@ -1,7 +1,7 @@
CableClubNPC: ; 7035 (1:7035)
ld hl, CableClubNPCWelcomeText
call PrintText
- call Func_154a
+ call CheckPikachuAsleep
jr nz, .asm_7048
CheckEvent EVENT_GOT_POKEDEX
jp nz, .receivedPokedex
diff --git a/engine/overworld/hidden_items.asm b/engine/overworld/hidden_items.asm
index f7f81070..39bb385d 100755
--- a/engine/overworld/hidden_items.asm
+++ b/engine/overworld/hidden_items.asm
@@ -9,7 +9,7 @@ HiddenItems: ; 76688 (1d:6688)
predef FlagActionPredef
ld a, c
and a
- ret nz
+ jr nz, .asm_75fa5
call EnableAutoTextBoxDrawing
ld a, 1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
@@ -18,6 +18,11 @@ HiddenItems: ; 76688 (1d:6688)
call GetItemName
tx_pre_jump FoundHiddenItemText
+.asm_75fa5
+ ld a, $ff
+ ld [hItemAlreadyFound], a
+ ret
+
INCLUDE "data/hidden_item_coords.asm"
FoundHiddenItemText: ; 7675b (1d:675b)
@@ -54,7 +59,7 @@ HiddenCoins: ; 76799 (1d:6799)
predef GetQuantityOfItemInBag
ld a, b
and a
- ret z
+ jr z, .asm_760ce
ld hl, HiddenCoinCoords
call FindHiddenItemOrCoinsIndex
ld [wHiddenItemOrCoinsIndex], a
@@ -65,7 +70,7 @@ HiddenCoins: ; 76799 (1d:6799)
predef FlagActionPredef
ld a, c
and a
- ret nz
+ jr nz, .asm_760ce
xor a
ld [hUnusedCoinsByte], a
ld [hCoins], a
@@ -79,6 +84,12 @@ HiddenCoins: ; 76799 (1d:6799)
cp 40
jr z, .bcd20
jr .bcd100
+
+.asm_760ce
+ ld a, $ff
+ ld [hItemAlreadyFound], a
+ ret
+
.bcd10
ld a, $10
ld [hCoins + 1], a
diff --git a/engine/overworld/hidden_objects.asm b/engine/overworld/hidden_objects.asm
index 3774c482..cba2a221 100755
--- a/engine/overworld/hidden_objects.asm
+++ b/engine/overworld/hidden_objects.asm
@@ -1,27 +1,17 @@
-; if a hidden object was found, stores $00 in [$ffee], else stores $ff
-CheckForHiddenObject: ; 469a0 (11:69a0)
- ld hl, $ffeb
+; if a hidden object was found, stores $00 in [hDidntFindAnyHiddenObject], else stores $ff
+CheckForHiddenObject: ; f25f8 (3c:65f8)
+ ld hl, hItemAlreadyFound
xor a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hl], a
- ld de, $0
ld hl, HiddenObjectMaps
-.hiddenMapLoop
- ld a, [hli]
- ld b, a
- cp $ff
- jr z, .noMatch
+ ld de, 3
ld a, [wCurMap]
- cp b
- jr z, .foundMatchingMap
- inc de
- inc de
- jr .hiddenMapLoop
-.foundMatchingMap
- ld hl, HiddenObjectPointers
- add hl, de
+ call IsInArray
+ jr nc, .noMatch
+ inc hl
ld a, [hli]
ld h, [hl]
ld l, a
@@ -65,7 +55,7 @@ CheckForHiddenObject: ; 469a0 (11:69a0)
ret
.noMatch
ld a, $ff
- ld [$ffee], a
+ ld [hDidntFindAnyHiddenObject], a
ret
; checks if the coordinates in front of the player's sprite match Y in b and X in c
diff --git a/engine/overworld/missable_objects.asm b/engine/overworld/missable_objects.asm
index f18a0823..65305d30 100644
--- a/engine/overworld/missable_objects.asm
+++ b/engine/overworld/missable_objects.asm
@@ -209,4 +209,4 @@ MissableObjectFlagAction: ; f062 (3:7062)
pop de
pop hl
ld c, a
- ret \ No newline at end of file
+ ret
diff --git a/engine/overworld/pokecenter.asm b/engine/overworld/pokecenter.asm
index 779d852c..3024ff7b 100755
--- a/engine/overworld/pokecenter.asm
+++ b/engine/overworld/pokecenter.asm
@@ -2,7 +2,7 @@ DisplayPokemonCenterDialogue_: ; 6d97 (1:6d97)
ld a, [wCurMap]
cp PEWTER_POKECENTER
jr nz, .regularCenter
- call Func_154a
+ call CheckPikachuAsleep
jr z, .regularCenter
ld hl, LooksContentText ; if pikachu is sleeping, don't heal
call PrintText
@@ -27,7 +27,7 @@ DisplayPokemonCenterDialogue_: ; 6d97 (1:6d97)
call SetLastBlackoutMap
callab IsStarterPikachuInOurParty
jr nc, .notHealingPlayerPikachu
- call Func_154a
+ call CheckPikachuAsleep
jr nz, .notHealingPlayerPikachu
call LoadCurrentMapView
call Delay3
@@ -38,7 +38,7 @@ DisplayPokemonCenterDialogue_: ; 6d97 (1:6d97)
call PrintText
ld c, 64
call DelayFrames
- call Func_154a
+ call CheckPikachuAsleep
jr nz, .playerPikachuNotOnScreen
call Func_152d
callab IsStarterPikachuInOurParty
@@ -58,7 +58,7 @@ DisplayPokemonCenterDialogue_: ; 6d97 (1:6d97)
ld [wLastMusicSoundID], a
ld [wNewSoundID], a
call PlaySound
- call Func_154a
+ call CheckPikachuAsleep
jr nz, .doNotReturnPikachu
callab IsStarterPikachuInOurParty
call c, Func_6eaa
diff --git a/engine/pikachu_pic_animation.asm b/engine/pikachu_pic_animation.asm
new file mode 100755
index 00000000..c16e3e5f
--- /dev/null
+++ b/engine/pikachu_pic_animation.asm
@@ -0,0 +1,3449 @@
+IsPlayerTalkingToPikachu:: ; fcf0c (3f:4f0c)
+ ld a, [wd436]
+ and a
+ ret z
+ ld a, [hSpriteIndexOrTextID]
+ cp $f
+ ret nz
+ call InitializePikachuTextID
+ xor a
+ ld [hSpriteIndexOrTextID], a
+ ld [wd436], a
+ ret
+
+InitializePikachuTextID: ; fcf20 (3f:4f20)
+ ld a, $d4 ; display
+ ld [hSpriteIndexOrTextID], a
+ xor a
+ ld [wPlayerMovingDirection], a
+ ld a, $1
+ ld [wAutoTextBoxDrawingControl], a
+ call DisplayTextID
+ xor a
+ ld [wAutoTextBoxDrawingControl], a
+ ret
+
+DoStarterPikachuEmotions: ; fcf35 (3f:4f35)
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+.loop
+ ld a, [de]
+ inc de
+ cp $ff
+ jr z, .done
+ ld c, a
+ ld b, $0
+ ld hl, StarterPikachuEmotionsJumptable
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call JumpToAddress
+ jr .loop
+.done
+ ret
+
+StarterPikachuEmotionsJumptable: ; fcf54 (3f:4f54)
+ dw StarterPikachuEmotionCommand_nop ; 0
+ dw StarterPikachuEmotionCommand_text ; 1
+ dw StarterPikachuEmotionCommand_pcm ; 2
+ dw StarterPikachuEmotionCommand_emote ; 3
+ dw StarterPikachuEmotionCommand_4 ; 4
+ dw StarterPikachuEmotionCommand_5 ; 5
+ dw StarterPikachuEmotionCommand_subcmd ; 6
+ dw StarterPikachuEmotionCommand_delay ; 7
+ dw StarterPikachuEmotionCommand_nop2 ; 8
+ dw StarterPikachuEmotionCommand_9 ; 9
+ dw StarterPikachuEmotionCommand_nop3 ; a
+
+StarterPikachuEmotionCommand_nop: ; fcf6a (3f:4f6a)
+StarterPikachuEmotionCommand_nop3: ; fcf6a (3f:4f6a)
+ ret
+
+StarterPikachuEmotionCommand_text: ; fcf6b (3f:4f6b)
+ ld a, [de]
+ ld l, a
+ inc de
+ ld a, [de]
+ ld h, a
+ inc de
+ push de
+ call PrintText
+ pop de
+ ret
+
+StarterPikachuEmotionCommand_pcm: ; fcf77 (3f:4f77)
+ ld a, [de]
+ inc de
+ push de
+ ld e, a
+ nop
+ call PlayPikachuSoundClip_
+ pop de
+ ret
+
+PlayPikachuSoundClip_: ; fcf81 (3f:4f81)
+ cp $ff
+ ret z
+ callab PlayPikachuSoundClip
+ ret
+
+StarterPikachuEmotionCommand_emote: ; fcf8d (3f:4f8d)
+ ld a, [wUpdateSpritesEnabled]
+ push af
+ ld a, $ff
+ ld [wUpdateSpritesEnabled], a
+ ld a, [de]
+ inc de
+ push de
+ call ShowPikachuEmoteBubble
+ pop de
+ pop af
+ ld [wUpdateSpritesEnabled], a
+ ret
+
+ShowPikachuEmoteBubble: ; fcfa2 (3f:4fa2)
+ ld [wWhichEmotionBubble], a
+ ld a, $f
+ ld [wEmotionBubbleSpriteIndex], a
+ predef EmotionBubble
+ ret
+
+StarterPikachuEmotionCommand_4: ; fcfb0 (3f:4fb0)
+ ld a, [de]
+ inc de
+ ld l, a
+ ld a, [de]
+ inc de
+ ld h, a
+ push de
+ ld b, $3f
+ call Func_fd2a1
+ pop de
+ ret
+
+StarterPikachuEmotionCommand_delay: ; fcfbe (3f:4fbe)
+ ld a, [de]
+ inc de
+ push de
+ ld c, a
+ call DelayFrames
+ pop de
+ ret
+
+StarterPikachuEmotionCommand_subcmd: ; fcfc7 (3f:4fc7)
+ ld a, [de]
+ inc de
+ push de
+ ld e, a
+ ld d, $0
+ ld hl, Jumptable_fcfda
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call JumpToAddress
+ pop de
+ ret
+
+Jumptable_fcfda:
+ dw LoadPikachuSpriteIntoVRAM
+ dw LoadFontTilePatterns
+ dw Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3
+ dw WaitForTextScrollButtonPress
+ dw PikachuPewterPokecenterCheck
+ dw PikachuFanClubCheck
+ dw PikachuBillsHouseCheck
+
+StarterPikachuEmotionCommand_nop2: ; fcfe8 (3f:4fe8)
+ ret
+
+StarterPikachuEmotionCommand_9: ; fcfe9 (3f:4fe9)
+ push de
+ call Func_fcff2
+ call UpdateSprites
+ pop de
+ ret
+
+Func_fcff2: ; fcff2 (3f:4ff2)
+ ld a, [wSpriteStateData1 + $9]
+ xor $4
+ ld [wSpriteStateData1 + $f9], a
+ ret
+
+Func_fcffb: ; fcffb (3f:4ffb)
+; Inexplicably empty.
+ rept 5
+ nop
+ endr
+ ret
+
+Func_fd001:: ; fd001 (3f:5001)
+ ld a, e
+ jr asm_fd00f
+
+Func_fd004:: ; fd004 (3f:5004)
+ call Func_fd05e
+ jr c, asm_fd00f
+ call GetPikaPicAnimationScriptIndex
+ call Func_fcffb
+asm_fd00f: ; fd00f (3f:500f)
+ ld [wExpressionNumber], a
+ ld hl, PikachuEmotionTable
+ call DoStarterPikachuEmotions
+ ret
+
+PikachuEmotionTable: ; fd019 (3f:4019)
+ dw PikachuEmotion0_fd115
+ dw PikachuEmotion1_fd141
+ dw PikachuEmotion2_fd116
+ dw PikachuEmotion3_fd160
+ dw PikachuEmotion4_fd136
+ dw PikachuEmotion5_fd14d
+ dw PikachuEmotion6_fd153
+ dw PikachuEmotion7_fd128
+ dw PikachuEmotion8_fd147
+ dw PikachuEmotion9_fd166
+ dw PikachuEmotion10_fd11e
+ dw PikachuEmotion11_fd173
+ dw PikachuEmotion12_fd17a
+ dw PikachuEmotion13_fd180
+ dw PikachuEmotion14_fd189
+ dw PikachuEmotion15_fd191
+ dw PikachuEmotion16_fd197
+ dw PikachuEmotion17_fd19d
+ dw PikachuEmotion18_fd1a3
+ dw PikachuEmotion19_fd1a9
+ dw PikachuEmotion20_fd1b1
+ dw PikachuEmotion21_fd1b9
+ dw PikachuEmotion22_fd1c1
+ dw PikachuEmotion23_fd1c7
+ dw PikachuEmotion24_fd1cf
+ dw PikachuEmotion25_fd1d7
+ dw PikachuEmotion26_fd1df
+ dw PikachuEmotion27_fd1eb
+ dw PikachuEmotion28_fd1f1
+ dw PikachuEmotion29_fd1f7
+ dw PikachuEmotion30_fd1fc
+ dw PikachuEmotion31_fd20a
+ dw PikachuEmotion32_fd213
+ dw PikachuEmotion33_fd05d
+
+PikachuEmotion33_fd05d: ; fd05d (3f:505d)
+ db $ff
+
+Func_fd05e: ; fd05e (3f:505e)
+ ld a, [wCurMap]
+ cp POKEMON_FAN_CLUB
+ jr nz, .notFanClub
+ ld hl, wPreventBlackout
+ bit 7, [hl]
+ ld a, $1d
+ jr z, .asm_fd0c9
+ call CheckPikachuAsleep
+ ld a, $1e
+ jr nz, .asm_fd0c9
+ jr .asm_fd096
+.notFanClub
+ ld a, [wCurMap]
+ cp PEWTER_POKECENTER
+ jr nz, .notPewterPokecenter
+ call CheckPikachuAsleep
+ ld a, $1a
+ jr nz, .asm_fd0c9
+ jr .asm_fd096
+.notPewterPokecenter
+ callab Func_f24ae
+ ld a, e
+ cp $ff
+ jr nz, .asm_fd0c9
+ jr .asm_fd096
+.asm_fd096
+ call IsPlayerPikachuAsleepInParty
+ ld a, $b
+ jr c, .asm_fd0c9
+ callab Func_fce73 ; same bank
+ ld a, $1c
+ jr c, .asm_fd0c9
+ ld a, [wCurMap]
+ cp POKEMONTOWER_1
+ jr c, .notInLavenderTower
+ cp POKEMONTOWER_7 + 1
+ ld a, $16
+ jr c, .asm_fd0c9
+.notInLavenderTower
+ ld a, [wd49c]
+ and a
+ jr z, .asm_fd0c7
+ dec a
+ ld c, a
+ ld b, $0
+ ld hl, Pointer_fd0cb
+ add hl, bc
+ ld a, [hl]
+ jr .asm_fd0c9
+.asm_fd0c7
+ and a
+ ret
+.asm_fd0c9
+ scf
+ ret
+
+Pointer_fd0cb:
+ db $12, $15, $17, $18, $19
+
+IsPlayerPikachuAsleepInParty:: ; fd0d0 (3f:50d0)
+ xor a
+ ld [wWhichPokemon], a
+.loop
+ ld a, [wWhichPokemon]
+ ld c, a
+ ld b, $0
+ ld hl, wPartySpecies
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jr z, .done
+ cp PIKACHU
+ jr nz, .curMonNotStarterPikachu
+ callab IsThisPartymonStarterPikachu
+ jr nc, .curMonNotStarterPikachu
+ ld a, [wWhichPokemon]
+ ld hl, wPartyMon1Status
+ ld bc, wPartyMon2 - wPartyMon1
+ call AddNTimes
+ ld a, [hl]
+ and SLP
+ jr z, .done
+ jr .curMonSleepingPikachu
+.curMonNotStarterPikachu
+ ld a, [wWhichPokemon]
+ cp PARTY_LENGTH - 1
+ jr z, .done
+ inc a
+ ld [wWhichPokemon], a
+ jr .loop
+.curMonSleepingPikachu
+ scf
+ ret
+.done
+ and a
+ ret
+
+PikachuEmotion0_fd115: ; fd115 (3f:5115)
+ db $ff
+
+PikachuEmotion2_fd116: ; fd116 (3f:5116)
+ pikaemotion_dummy2
+ pikaemotion_emotebubble SMILE_BUBBLE
+ pikaemotion_pcm PikachuCry35
+ pikaemotion_5 $2
+ db $ff
+
+PikachuEmotion10_fd11e: ; fd11e (3f:511e)
+ pikaemotion_dummy2
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
+ pikaemotion_emotebubble HEART_BUBBLE
+ pikaemotion_pcm PikachuCry5
+ pikaemotion_5 $a
+ db $ff
+
+PikachuEmotion7_fd128: ; fd128 (3f:5128)
+ pikaemotion_dummy2
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
+ pikaemotion_4 Pointer_fd224
+ pikaemotion_pcm PikachuCry1
+ pikaemotion_4 Pointer_fd224
+ pikaemotion_5 $7
+ db $ff
+
+PikachuEmotion4_fd136: ; fd136 (3f:5136)
+ pikaemotion_dummy2
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
+ pikaemotion_4 Pointer_fd230
+ pikaemotion_pcm PikachuCry29
+ pikaemotion_5 $4
+ db $ff
+
+PikachuEmotion1_fd141: ; fd141 (3f:5141)
+ pikaemotion_dummy2
+ pikaemotion_pcm
+ pikaemotion_5 $1
+ db $ff
+
+PikachuEmotion8_fd147: ; fd147 (3f:5147)
+ pikaemotion_dummy2
+ pikaemotion_pcm PikachuCry39
+ pikaemotion_5 $8
+ db $ff
+
+PikachuEmotion5_fd14d: ; fd14d (3f:514d)
+ pikaemotion_dummy2
+ pikaemotion_pcm PikachuCry31
+ pikaemotion_5 $5
+ db $ff
+
+PikachuEmotion6_fd153: ; fd153 (3f:5153)
+ pikaemotion_dummy2
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
+ pikaemotion_pcm
+ pikaemotion_4 Pointer_fd21e
+ pikaemotion_emotebubble SKULL_BUBBLE
+ pikaemotion_5 $6
+ db $ff
+
+PikachuEmotion3_fd160: ; fd160 (3f:5160)
+ pikaemotion_dummy2
+ pikaemotion_pcm PikachuCry40
+ pikaemotion_5 $3
+ db $ff
+
+PikachuEmotion9_fd166: ; fd166 (3f:5166)
+ pikaemotion_dummy2
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
+ pikaemotion_pcm PikachuCry6
+ pikaemotion_4 Pointer_fd218
+ pikaemotion_emotebubble SKULL_BUBBLE
+ pikaemotion_5 $9
+ db $ff
+
+PikachuEmotion11_fd173: ; fd173 (3f:5173)
+ pikaemotion_emotebubble ZZZ_BUBBLE
+ pikaemotion_pcm PikachuCry37
+ pikaemotion_5 $b
+ db $ff
+
+PikachuEmotion12_fd17a: ; fd17a (3f:517a)
+ pikaemotion_dummy2
+ pikaemotion_pcm
+ pikaemotion_5 $c
+ db $ff
+
+PikachuEmotion13_fd180: ; fd180 (3f:5180)
+ pikaemotion_dummy2
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
+ pikaemotion_4 Pointer_fd21e
+ pikaemotion_5 $d
+ db $ff
+
+PikachuEmotion14_fd189: ; fd189 (3f:5189)
+ pikaemotion_dummy2
+ pikaemotion_emotebubble BOLT_BUBBLE
+ pikaemotion_pcm PikachuCry10
+ pikaemotion_5 $e
+ db $ff
+
+PikachuEmotion15_fd191: ; fd191 (3f:5191)
+ pikaemotion_dummy2
+ pikaemotion_pcm PikachuCry34
+ pikaemotion_5 $f
+ db $ff
+
+PikachuEmotion16_fd197: ; fd197 (3f:5197)
+ pikaemotion_dummy2
+ pikaemotion_pcm PikachuCry33
+ pikaemotion_5 $10
+ db $ff
+
+PikachuEmotion17_fd19d: ; fd19d (3f:519d)
+ pikaemotion_dummy2
+ pikaemotion_pcm PikachuCry13
+ pikaemotion_5 $11
+ db $ff
+
+PikachuEmotion18_fd1a3: ; fd1a3 (3f:51a3)
+ pikaemotion_dummy2
+ pikaemotion_pcm
+ pikaemotion_5 $12
+ db $ff
+
+PikachuEmotion19_fd1a9: ; fd1a9 (3f:51a9)
+ pikaemotion_dummy2
+ pikaemotion_emotebubble HEART_BUBBLE
+ pikaemotion_pcm PikachuCry33
+ pikaemotion_5 $13
+ db $ff
+
+PikachuEmotion20_fd1b1: ; fd1b1 (3f:51b1)
+ pikaemotion_dummy2
+ pikaemotion_emotebubble HEART_BUBBLE
+ pikaemotion_pcm PikachuCry5
+ pikaemotion_5 $14
+ db $ff
+
+PikachuEmotion21_fd1b9: ; fd1b9 (3f:51b9)
+ pikaemotion_dummy2
+ pikaemotion_emotebubble FISH_BUBBLE
+ pikaemotion_pcm
+ pikaemotion_5 $15
+ db $ff
+
+PikachuEmotion22_fd1c1: ; fd1c1 (3f:51c1)
+ pikaemotion_dummy2
+ pikaemotion_pcm PikachuCry4
+ pikaemotion_5 $16
+ db $ff
+
+PikachuEmotion23_fd1c7: ; fd1c7 (3f:51c7)
+ pikaemotion_dummy2
+ pikaemotion_pcm PikachuCry19
+ pikaemotion_5 $17
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
+ db $ff
+
+PikachuEmotion24_fd1cf: ; fd1cf (3f:51cf)
+ pikaemotion_dummy2
+ pikaemotion_emotebubble EXCLAMATION_BUBBLE
+ pikaemotion_pcm
+ pikaemotion_5 $18
+ db $ff
+
+PikachuEmotion25_fd1d7: ; fd1d7 (3f:51d7)
+ pikaemotion_dummy2
+ pikaemotion_emotebubble BOLT_BUBBLE
+ pikaemotion_pcm PikachuCry35
+ pikaemotion_5 $19
+ db $ff
+
+PikachuEmotion26_fd1df: ; fd1df (3f:51df)
+ pikaemotion_dummy2
+ pikaemotion_emotebubble ZZZ_BUBBLE
+ pikaemotion_pcm PikachuCry37
+ pikaemotion_5 $1a
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKPEWTERCENTER
+ db $ff
+
+PikachuEmotion27_fd1eb: ; fd1eb (3f:51eb)
+ pikaemotion_dummy2
+ pikaemotion_pcm PikachuCry9
+ pikaemotion_5 $1b
+ db $ff
+
+PikachuEmotion28_fd1f1: ; fd1f1 (3f:51f1)
+ pikaemotion_dummy2
+ pikaemotion_pcm PikachuCry15
+ pikaemotion_5 $1c
+ db $ff
+
+PikachuEmotion29_fd1f7: ; fd1f7 (3f:51f7)
+ pikaemotion_pcm PikachuCry5
+ pikaemotion_5 $a
+ db $ff
+
+PikachuEmotion30_fd1fc: ; fd1fc (3f:51fc)
+ pikaemotion_9
+ pikaemotion_emotebubble HEART_BUBBLE
+ pikaemotion_pcm PikachuCry5
+ pikaemotion_5 $14
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADFONT
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKLAVENDERTOWER
+ db $ff
+
+PikachuEmotion31_fd20a: ; fd20a (3f:520a)
+ pikaemotion_pcm PikachuCry19
+ pikaemotion_5 $17
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
+ pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKBILLSHOUSE
+ db $ff
+
+PikachuEmotion32_fd213: ; fd213 (3f:5213)
+ pikaemotion_pcm PikachuCry26
+ pikaemotion_5 $17
+ db $ff
+
+Pointer_fd218: ; fd218 (3f:5218)
+
+ db $00
+ db $39, $01
+ db $3e, $1e
+ db $3f
+
+Pointer_fd21e: ; fd21e (3f:521e)
+ db $00
+ db $39, $00
+ db $3e, $1e
+ db $3f
+
+Pointer_fd224: ; fd224 (3f:5224)
+ db $00
+ db $3c, $07, $2f
+ db $3c, $07, $2f
+ db $3f
+
+Pointer_fd22c: ; fd22c (3f:522c)
+ db $3b, $1f, $03
+ db $3f
+
+Pointer_fd230: ; fd230 (3f:5230)
+ db $00
+ db $3c, $0f, $1f
+ db $3c, $0f, $1f
+ db $3f
+
+Pointer_fd238: ; fd238 (3f:5238)
+ db $00
+ db $05, $07
+ db $39, $00
+ db $05, $07
+ db $06, $07
+ db $39, $00
+ db $06, $07
+ db $08, $07
+ db $39, $00
+ db $08, $07
+ db $07, $07
+ db $39, $00
+ db $07, $07
+ db $3f
+
+Func_fd252: ; fd252 (3f:5252)
+ ld a, $40
+ ld [h_0xFFFC], a
+ call LoadPikachuSpriteIntoVRAM
+ call Func_fd266
+ and a
+ jr z, .asm_fd262
+ call Func_159b
+.asm_fd262
+ xor a
+ ld [h_0xFFFC], a
+ ret
+
+Func_fd266:
+ ld a, [wSpriteStateData2 + 15 * 16 + 4]
+ ld e, a
+ ld a, [wSpriteStateData2 + 15 * 16 + 5]
+ ld d, a
+ ld a, [wYCoord]
+ add 4
+ cp e
+ jr z, .asm_fd280
+ jr nc, .asm_fd27e
+ ld hl, Data_fd294
+ ld a, 1
+ ret
+
+.asm_fd27e
+ xor a
+ ret
+
+.asm_fd280
+ ld a, [wXCoord]
+ add 4
+ cp d
+ jr c, .asm_fd28e
+ ld hl, Data_fd299
+ ld a, 2
+ ret
+
+.asm_fd28e
+ ld hl, Data_fd29d
+ ld a, 3
+ ret
+
+Data_fd294:
+ db $00
+ db $36
+ db $2b
+ db $34
+ db $3f
+
+Data_fd299:
+ db $00
+ db $36
+ db $34
+ db $3f
+
+Data_fd29d:
+ db $00
+ db $36
+ db $33
+ db $3f
+
+Func_fd2a1:: ; fd2a1 (3f:52a1)
+ ld a, b
+ ld [wd44a], a
+ ld a, l
+ ld [wd44b], a
+ ld a, h
+ ld [wd44b + 1], a
+ call PikachuSwapSpriteStateData
+.loop
+ call Func_fd2f5
+ jr nc, .done
+ call Func_fd329
+ jr .loop
+
+.done
+ call PikachuSwapSpriteStateData
+ call DelayFrame
+ ret
+
+PikachuSwapSpriteStateData:
+ ld a, [wUpdateSpritesEnabled]
+ push af
+ ld a, $ff
+ ld [wUpdateSpritesEnabled], a
+ push hl
+ push de
+ push bc
+
+ ld hl, wSpriteStateData1
+ ld de, wSpriteStateData1 + $f0
+ ld c, $10
+ call SwapBytes3f
+
+ ld hl, wSpriteStateData2
+ ld de, wSpriteStateData2 + $f0
+ ld c, $10
+ call SwapBytes3f
+
+ pop bc
+ pop de
+ pop hl
+ pop af
+ ld [wUpdateSpritesEnabled], a
+ ret
+
+SwapBytes3f:
+.loop
+ ld b, [hl]
+ ld a, [de]
+ ld [hli], a
+ ld a, b
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .loop
+ ret
+
+Func_fd2f5:
+ call Func_157c
+ cp $3f
+ ret z
+ ld c, a
+ ld b, 0
+ ld hl, Data_fd3b0
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld [wPikaPicAnimPointer + 1], a
+ ld a, [hli]
+ cp $80
+ jr nz, .asm_fd311
+ call Func_157c
+.asm_fd311
+ ld [wPikaPicAnimPointer], a
+ ld a, [hli]
+ ld [wPikaPicAnimCurGraphicID], a
+ ld a, [hli]
+ cp $80
+ jr nz, .asm_fd320
+ call Func_157c
+.asm_fd320
+ ld [wPikaPicAnimPointerSetupFinished], a
+ xor a
+ ld [wPikaPicAnimTimer], a
+ scf
+ ret
+
+Func_fd329:
+ xor a
+ ld [$d44c], a
+ ld [wd457], a
+ ld [wd458], a
+ ld a, [wSpriteStateData2 + 7]
+ push af
+.asm_fd337
+ ld bc, wSpriteStateData1
+ ld a, [wPikaPicAnimPointer + 1]
+ ld hl, Jumptable_fd4ac
+ call Func_fd365
+ ld a, [wPikaPicAnimCurGraphicID]
+ ld hl, Jumptable_fd65c
+ call Func_fd365
+ call Func_fd36e
+ call Func_fd39d
+ call DelayFrame
+ call DelayFrame
+ ld hl, $d44c
+ bit 7, [hl]
+ jr z, .asm_fd337
+ pop af
+ ld [wSpriteStateData2 + 7], a
+ scf
+ ret
+
+Func_fd365:
+ ld e, a
+ ld d, 0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Func_fd36e:
+ ld hl, 2
+ add hl, bc
+ ld a, [wPikaPicAnimTimer + 1]
+ ld [hl], a
+ ld a, [wPikaSpriteY]
+ ld d, a
+ ld a, [wd456]
+ add d
+ ld hl, 4
+ add hl, bc
+ ld [hl], a
+ ld a, [wPikaPicAnimDelay]
+ ld d, a
+ ld a, [wPikaPicTextboxStartY]
+ add d
+ ld hl, 6
+ add hl, bc
+ ld [hl], a
+ ld hl, $d44c
+ bit 6, [hl]
+ ret z
+ ld hl, wSpriteStateData2 + 7 - wSpriteStateData1
+ add hl, bc
+ ld [hl], 0
+ ret
+
+Func_fd39d:
+ ld hl, $d44c
+ bit 6, [hl]
+ res 6, [hl]
+ ld hl, wd736
+ res 6, [hl]
+ ret z
+ set 6, [hl]
+ call Func_fd7f3
+ ret
+
+Data_fd3b0:
+ db $01, $00, $00, $00 ; $00
+ db $03, $80, $01, $00 ; $01
+ db $04, $80, $01, $00 ; $02
+ db $05, $80, $01, $00 ; $03
+ db $06, $80, $01, $00 ; $04
+ db $07, $80, $01, $00 ; $05
+ db $08, $80, $01, $00 ; $06
+ db $09, $80, $01, $00 ; $07
+ db $0a, $80, $01, $00 ; $08
+ db $03, $80, $06, $00 ; $09
+ db $04, $80, $06, $00 ; $0a
+ db $05, $80, $06, $00 ; $0b
+ db $06, $80, $06, $00 ; $0c
+ db $07, $80, $06, $00 ; $0d
+ db $08, $80, $06, $00 ; $0e
+ db $09, $80, $06, $00 ; $0f
+ db $0a, $80, $06, $00 ; $10
+ db $03, $80, $03, $80 ; $11
+ db $04, $80, $03, $80 ; $12
+ db $05, $80, $03, $80 ; $13
+ db $06, $80, $03, $80 ; $14
+ db $07, $80, $03, $80 ; $15
+ db $08, $80, $03, $80 ; $16
+ db $09, $80, $03, $80 ; $17
+ db $0a, $80, $03, $80 ; $18
+ db $03, $80, $07, $80 ; $19
+ db $04, $80, $07, $80 ; $1a
+ db $05, $80, $07, $80 ; $1b
+ db $06, $80, $07, $80 ; $1c
+ db $0b, $27, $02, $00 ; $1d
+ db $0c, $27, $02, $00 ; $1e
+ db $0d, $27, $02, $00 ; $1f
+ db $0e, $27, $02, $00 ; $20
+ db $0f, $27, $02, $00 ; $21
+ db $10, $27, $02, $00 ; $22
+ db $11, $27, $02, $00 ; $23
+ db $12, $27, $02, $00 ; $24
+ db $0b, $0f, $02, $00 ; $25
+ db $0c, $0f, $02, $00 ; $26
+ db $0d, $0f, $02, $00 ; $27
+ db $0e, $0f, $02, $00 ; $28
+ db $0f, $0f, $02, $00 ; $29
+ db $10, $0f, $02, $00 ; $2a
+ db $11, $0f, $02, $00 ; $2b
+ db $12, $0f, $02, $00 ; $2c
+ db $0b, $0f, $08, $17 ; $2d
+ db $0c, $0f, $08, $17 ; $2e
+ db $0d, $0f, $08, $17 ; $2f
+ db $0e, $0f, $08, $17 ; $30
+ db $0f, $0f, $08, $17 ; $31
+ db $10, $0f, $08, $17 ; $32
+ db $11, $0f, $08, $17 ; $33
+ db $12, $0f, $08, $17 ; $34
+ db $13, $0f, $06, $00 ; $35
+ db $14, $0f, $06, $00 ; $36
+ db $15, $0f, $06, $00 ; $37
+ db $16, $0f, $06, $00 ; $38
+ db $02, $80, $04, $00 ; $39
+ db $02, $80, $05, $00 ; $3a
+ db $02, $80, $03, $80 ; $3b
+ db $02, $80, $07, $80 ; $3c
+ db $02, $80, $09, $80 ; $3d
+ db $02, $80, $06, $00 ; $3e
+
+Jumptable_fd4ac:
+ dw Func_fd4e5
+ dw Func_fd4e9
+ dw Func_fd504
+ dw Func_fd50c
+ dw Func_fd511
+ dw Func_fd518
+ dw Func_fd52c
+ dw Func_fd540
+ dw Func_fd553
+ dw Func_fd566
+ dw Func_fd579
+ dw Func_fd5b1
+ dw Func_fd5b5
+ dw Func_fd5b9
+ dw Func_fd5bd
+ dw Func_fd5c1
+ dw Func_fd5c5
+ dw Func_fd5c9
+ dw Func_fd5cd
+ dw Func_fd5ea
+ dw Func_fd5ee
+ dw Func_fd5f2
+ dw Func_fd5f6
+ dw Func_fd4e5
+
+Func_fd4dc:
+ ld a, [$d44c]
+ set 7, a
+ ld [$d44c], a
+ ret
+
+Func_fd4e5:
+ call Func_fd4dc
+ ret
+
+Func_fd4e9:
+ ld hl, 4
+ add hl, bc
+ ld a, [hl]
+ ld [wPikaSpriteY], a
+ ld hl, 6
+ add hl, bc
+ ld a, [hl]
+ ld [wPikaPicAnimDelay], a
+ xor a
+ ld [wd456], a
+ ld [wPikaPicTextboxStartY], a
+ call Func_fd4dc
+ ret
+
+Func_fd504:
+ call Func_fd775
+ ret nz
+ call Func_fd4dc
+ ret
+
+Func_fd50c:
+ call GetObjectFacing
+ jr asm_fd58c
+
+Func_fd511:
+ call GetObjectFacing
+ xor %100
+ jr asm_fd58c
+
+Func_fd518:
+ call GetObjectFacing
+ ld hl, Data_fd523
+ call Func_fd5a0
+ jr asm_fd58c
+
+Data_fd523:
+ db SPRITE_FACING_DOWN, SPRITE_FACING_RIGHT
+ db SPRITE_FACING_UP, SPRITE_FACING_LEFT
+ db SPRITE_FACING_LEFT, SPRITE_FACING_DOWN
+ db SPRITE_FACING_RIGHT, SPRITE_FACING_UP
+ db $ff
+
+Func_fd52c:
+ call GetObjectFacing
+ ld hl, Data_fd537
+ call Func_fd5a0
+ jr asm_fd58c
+
+Data_fd537:
+ db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT
+ db SPRITE_FACING_UP, SPRITE_FACING_RIGHT
+ db SPRITE_FACING_LEFT, SPRITE_FACING_UP
+ db SPRITE_FACING_RIGHT, SPRITE_FACING_DOWN
+ db $ff
+
+Func_fd540:
+ call GetObjectFacing
+ ld hl, Data_fd54b
+ call Func_fd5a0
+ jr asm_fd58c
+
+Data_fd54b:
+ db SPRITE_FACING_DOWN, SPRITE_FACING_UP | $10
+ db SPRITE_FACING_UP, SPRITE_FACING_LEFT | $10
+ db SPRITE_FACING_LEFT, SPRITE_FACING_DOWN | $10
+ db SPRITE_FACING_RIGHT, SPRITE_FACING_RIGHT | $10
+
+Func_fd553:
+ call GetObjectFacing
+ ld hl, Data_fd55e
+ call Func_fd5a0
+ jr asm_fd58c
+
+Data_fd55e:
+ db SPRITE_FACING_DOWN, SPRITE_FACING_DOWN | $10
+ db SPRITE_FACING_UP, SPRITE_FACING_RIGHT | $10
+ db SPRITE_FACING_LEFT, SPRITE_FACING_LEFT | $10
+ db SPRITE_FACING_RIGHT, SPRITE_FACING_UP | $10
+
+Func_fd566:
+ call GetObjectFacing
+ ld hl, Data_fd571
+ call Func_fd5a0
+ jr asm_fd58c
+
+Data_fd571:
+ db SPRITE_FACING_DOWN, SPRITE_FACING_RIGHT | $10
+ db SPRITE_FACING_UP, SPRITE_FACING_DOWN | $10
+ db SPRITE_FACING_LEFT, SPRITE_FACING_UP | $10
+ db SPRITE_FACING_RIGHT, SPRITE_FACING_LEFT | $10
+
+Func_fd579:
+ call GetObjectFacing
+ ld hl, Data_fd584
+ call Func_fd5a0
+ jr asm_fd58c
+
+Data_fd584:
+ db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT | $10
+ db SPRITE_FACING_UP, SPRITE_FACING_UP | $10
+ db SPRITE_FACING_LEFT, SPRITE_FACING_RIGHT | $10
+ db SPRITE_FACING_RIGHT, SPRITE_FACING_DOWN | $10
+
+asm_fd58c
+ rrca
+ rrca
+ and $7
+ ld e, a
+ call Func_fd784
+ ld d, a
+ call UpdatePikachuPosition
+ call Func_fd775
+ ret nz
+ call Func_fd4dc
+ ret
+
+Func_fd5a0:
+ push de
+ ld d, a
+.asm_fd5a2
+ ld a, [hli]
+ cp d
+ jr z, .asm_fd5ad
+ inc hl
+ cp $ff
+ jr nz, .asm_fd5a2
+ pop de
+ ret
+
+.asm_fd5ad
+ ld a, [hl]
+ pop de
+ scf
+ ret
+
+Func_fd5b1:
+ ld a, SPRITE_FACING_DOWN >> 2
+ jr asm_fd5d1
+
+Func_fd5b5:
+ ld a, SPRITE_FACING_UP >> 2
+ jr asm_fd5d1
+
+Func_fd5b9:
+ ld a, SPRITE_FACING_LEFT >> 2
+ jr asm_fd5d1
+
+Func_fd5bd:
+ ld a, SPRITE_FACING_RIGHT >> 2
+ jr asm_fd5d1
+
+Func_fd5c1:
+ ld e, 4
+ jr asm_fd5d5
+
+Func_fd5c5:
+ ld e, 5
+ jr asm_fd5d5
+
+Func_fd5c9:
+ ld e, 6
+ jr asm_fd5d5
+
+Func_fd5cd:
+ ld e, 7
+ jr asm_fd5d5
+
+asm_fd5d1
+ ld e, a
+ call SetObjectFacing
+asm_fd5d5
+ call Func_fd784
+ ld d, a
+ push de
+ call UpdatePikachuPosition
+ pop de
+ call Func_fd775
+ ret nz
+ ld a, e
+ call Func_fd7cb
+ call Func_fd4dc
+ ret
+
+Func_fd5ea:
+ ld a, SPRITE_FACING_DOWN >> 2
+ jr asm_fd5fa
+
+Func_fd5ee:
+ ld a, SPRITE_FACING_UP >> 2
+ jr asm_fd5fa
+
+Func_fd5f2:
+ ld a, SPRITE_FACING_LEFT >> 2
+ jr asm_fd5fa
+
+Func_fd5f6:
+ ld a, SPRITE_FACING_RIGHT >> 2
+ jr asm_fd5fa
+
+asm_fd5fa
+ call SetObjectFacing
+ call Func_fd4dc
+ ret
+
+UpdatePikachuPosition:
+ push de
+ ld d, 0
+ ld hl, Jumptable_fd60f
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop de
+ ld a, d
+ jp [hl]
+
+Jumptable_fd60f:
+ dw MovePikachuSpriteDown
+ dw MovePikachuSpriteUp
+ dw MovePikachuSpriteLeft
+ dw MovePikachuSpriteRight
+ dw MovePikachuSpriteDownLeft
+ dw MovePikachuSpriteDownRight
+ dw MovePikachuSpriteUpLeft
+ dw MovePikachuSpriteUpRight
+
+MovePikachuSpriteDown:
+ ld d, 0
+ ld e, a
+ jr asm_fd64d
+
+MovePikachuSpriteUp:
+ ld d, 0
+ cpl
+ inc a
+ ld e, a
+ jr asm_fd64d
+
+MovePikachuSpriteLeft:
+ cpl
+ inc a
+ ld d, a
+ ld e, 0
+ jr asm_fd64d
+
+MovePikachuSpriteRight:
+ ld d, a
+ ld e, 0
+ jr asm_fd64d
+
+MovePikachuSpriteDownLeft:
+ ld e, a
+ cpl
+ inc a
+ ld d, a
+ jr asm_fd64d
+
+MovePikachuSpriteDownRight:
+ ld e, a
+ ld d, a
+ jr asm_fd64d
+
+MovePikachuSpriteUpLeft:
+ cpl
+ inc a
+ ld e, a
+ ld d, a
+ jr asm_fd64d
+
+MovePikachuSpriteUpRight:
+ ld d, a
+ cpl
+ inc a
+ ld e, a
+ jr asm_fd64d
+
+asm_fd64d
+ ld a, [wPikaPicAnimDelay]
+ add d
+ ld [wPikaPicAnimDelay], a
+ ld a, [wPikaSpriteY]
+ add e
+ ld [wPikaSpriteY], a
+ ret
+
+Jumptable_fd65c:
+ dw Func_fd678
+ dw Func_fd6a3
+ dw Func_fd698
+ dw Func_fd6f4
+ dw Func_fd6ff
+ dw Func_fd718
+ dw Func_fd68c
+ dw Func_fd6c6
+ dw Func_fd6c0
+ dw Func_fd6e2
+ dw Func_fd68b
+
+Func_fd672:
+ ld hl, $d44c
+ set 6, [hl]
+ ret
+
+Func_fd678:
+ ld hl, 7
+ add hl, bc
+ xor a
+ ld [hli], a
+ ld [hl], a
+ call Func_fd74a
+ ld d, a
+ call GetObjectFacing
+ or d
+ ld [wPikaPicAnimTimer + 1], a
+ ret
+
+Func_fd68b:
+ ret
+
+Func_fd68c:
+ call Func_fd74a
+ ld d, a
+ call Func_fd755
+ or d
+ ld [wPikaPicAnimTimer + 1], a
+ ret
+
+Func_fd698:
+ call Func_fd74a
+ ld d, a
+ call GetObjectFacing
+ or d
+ ld d, a
+ jr asm_fd6ac
+
+Func_fd6a3:
+ call Func_fd74a
+ ld d, a
+ call Func_fd755
+ or d
+ ld d, a
+asm_fd6ac
+ ld hl, 8
+ add hl, bc
+ call Func_fd78e
+ jr nz, .asm_fd6b6
+ inc [hl]
+.asm_fd6b6
+ ld a, [hl]
+ rrca
+ rrca
+ and 3
+ or d
+ ld [wPikaPicAnimTimer + 1], a
+ ret
+
+Func_fd6c0:
+ call GetObjectFacing
+ ld d, a
+ jr asm_fd6ca
+
+Func_fd6c6:
+ call Func_fd755
+ ld d, a
+asm_fd6ca
+ call Func_fd74a
+ or d
+ ld d, a
+ call Func_fd736
+ or d
+ ld [wPikaPicAnimTimer + 1], a
+ call Func_fd79d
+ ld [wd456], a
+ and a
+ ret z
+ call Func_fd672
+ ret
+
+Func_fd6e2:
+ call GetObjectFacing
+ ld d, a
+ call Func_fd74a
+ or d
+ ld [wPikaPicAnimTimer + 1], a
+ call Func_fd79d
+ ld [wd456], a
+ ret
+
+Func_fd6f4:
+ ld a, [wPikaPicAnimPointerSetupFinished]
+ and $40
+ cp $40
+ jr z, Func_fd6ff
+ jr Func_fd718
+
+Func_fd6ff:
+ call Func_fd755
+ ld d, a
+ call Func_fd78e
+ jr nz, .asm_fd710
+ ld hl, Data_fd731
+.asm_fd70b
+ ld a, [hli]
+ cp d
+ jr nz, .asm_fd70b
+ ld d, [hl]
+.asm_fd710
+ call Func_fd74a
+ or d
+ ld [wPikaPicAnimTimer + 1], a
+ ret
+
+Func_fd718:
+ call Func_fd755
+ ld d, a
+ call Func_fd78e
+ jr nz, .asm_fd529
+ ld hl, Data_fd731End
+.asm_fd524
+ ld a, [hld]
+ cp d
+ jr nz, .asm_fd524
+ ld d, [hl]
+.asm_fd529
+ call Func_fd74a
+ or d
+ ld [wPikaPicAnimTimer + 1], a
+ ret
+
+Data_fd731:
+ db SPRITE_FACING_DOWN
+ db SPRITE_FACING_LEFT
+ db SPRITE_FACING_UP
+ db SPRITE_FACING_RIGHT
+ db SPRITE_FACING_DOWN
+Data_fd731End:
+
+Func_fd736:
+ push hl
+ ld hl, 7
+ add hl, bc
+ ld a, [hl]
+ inc a
+ and $3
+ ld [hli], a
+ jr nz, .asm_fd747
+ ld a, [hl]
+ inc a
+ and $3
+ ld [hl], a
+.asm_fd747
+ ld a, [hl]
+ pop hl
+ ret
+
+Func_fd74a:
+ push hl
+ ld hl, wSpriteStateData2 - wSpriteStateData1 + 14
+ add hl, bc
+ ld a, [hl]
+ dec a
+ swap a
+ pop hl
+ ret
+
+Func_fd755:
+ push hl
+ ld hl, 2
+ add hl, bc
+ ld a, [hl]
+ and $c
+ pop hl
+ ret
+
+GetObjectFacing:
+ push hl
+ ld hl, 9
+ add hl, bc
+ ld a, [hl]
+ and $c
+ pop hl
+ ret
+
+SetObjectFacing:
+ push hl
+ ld hl, 9
+ add hl, bc
+ add a
+ add a
+ and $c
+ ld [hl], a
+ pop hl
+ ret
+
+Func_fd775:
+ ld hl, wd457
+ inc [hl]
+ ld a, [wPikaPicAnimPointer]
+ and $1f
+ inc a
+ cp [hl]
+ ret nz
+ ld [hl], 0
+ ret
+
+Func_fd784:
+ ld a, [wPikaPicAnimPointer]
+ swap a
+ rrca
+ and $3
+ inc a
+ ret
+
+Func_fd78e:
+ ld hl, wd458
+ inc [hl]
+ ld a, [wPikaPicAnimPointerSetupFinished]
+ and $f
+ inc a
+ cp [hl]
+ ret nz
+ ld [hl], 0
+ ret
+
+Func_fd79d:
+ call Func_fd7b2
+ ld a, [wd458]
+ add e
+ ld [wd458], a
+ add $20
+ ld e, a
+ push hl
+ push bc
+ call Sine_e
+ pop bc
+ pop hl
+ ret
+
+Func_fd7b2:
+ ld a, [wPikaPicAnimPointerSetupFinished]
+ and $f
+ inc a
+ ld d, a
+ ld a, [wPikaPicAnimPointerSetupFinished]
+ swap a
+ and $7
+ ld e, a
+ ld a, 1
+ jr z, .asm_fd7c9
+.asm_fd7c5
+ add a
+ dec e
+ jr nz, .asm_fd7c5
+.asm_fd7c9
+ ld e, a
+ ret
+
+Func_fd7cb:
+ push bc
+ ld c, a
+ ld b, 0
+ ld hl, Data_fd7e3
+ add hl, bc
+ add hl, bc
+ ld d, [hl]
+ inc hl
+ ld e, [hl]
+ pop bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1 + 4
+ add hl, bc
+ ld a, [hl]
+ add e
+ ld [hli], a
+ ld a, [hl]
+ add d
+ ld [hl], a
+ ret
+
+Data_fd7e3:
+ db 0, 1
+ db 0, -1
+ db -1, 0
+ db 1, 0
+ db -1, 1
+ db 1, 1
+ db -1, -1
+ db 1, -1
+
+Func_fd7f3:
+ push bc
+ push de
+ push hl
+
+ ld bc, wOAMBuffer + 4 * 36
+ ld a, [wPikaSpriteY]
+ ld e, a
+ ld a, [wPikaPicAnimDelay]
+ ld d, a
+ ld hl, Data_fd80b
+ call Func_fd814
+
+ pop hl
+ pop de
+ pop bc
+ ret
+
+Data_fd80b:
+ db $02
+ db $0c, $00, $ff, 0
+ db $0c, $08, $ff, 1 << OAM_X_FLIP
+
+Func_fd814:
+ ld a, e
+ add $10
+ ld e, a
+ ld a, d
+ add $8
+ ld d, a
+ ld a, [hli]
+.asm_fd81d
+ push af
+ ld a, [hli]
+ add e
+ ld [bc], a
+ inc bc
+ ld a, [hli]
+ add d
+ ld [bc], a
+ inc bc
+ ld a, [hli]
+ ld [bc], a
+ inc bc
+ ld a, [hli]
+ ld [bc], a
+ inc bc
+ pop af
+ dec a
+ jr nz, .asm_fd81d
+ ret
+
+LoadPikachuShadowIntoVRAM:
+ ld hl, vNPCSprites2 + $7f * $10
+ ld de, LedgeHoppingShadowGFX_3F
+ lb bc, BANK(LedgeHoppingShadowGFX_3F), (LedgeHoppingShadowGFX_3FEnd - LedgeHoppingShadowGFX_3F) / 8
+ jp CopyVideoDataDoubleAlternate
+
+LedgeHoppingShadowGFX_3F:
+INCBIN "gfx/ledge_hopping_shadow.1bpp"
+LedgeHoppingShadowGFX_3FEnd:
+
+LoadPikachuBallIconIntoVRAM:
+ ld hl, vNPCSprites2 + $7e * $10
+ ld de, GFX_fd86b
+ lb bc, BANK(GFX_fd86b), 1
+ jp CopyVideoDataDoubleAlternate
+
+Func_fd851:
+ ld hl, vNPCSprites + $c * $10
+ ld a, 3
+.asm_fd856
+ push af
+ push hl
+ ld de, GFX_fd86b
+ lb bc, BANK(GFX_fd86b), 4
+ call CopyVideoDataAlternate
+ pop hl
+ ld de, 4 * $10
+ add hl, de
+ pop af
+ dec a
+ jr nz, .asm_fd856
+ ret
+
+GFX_fd86b:
+INCBIN "gfx/unknown_fd86b.2bpp"
+
+LoadPikachuSpriteIntoVRAM: ; fd8ab (3f:58ab)
+ ld de, PikachuSprite
+ lb bc, BANK(PikachuSprite), (SandshrewSprite - PikachuSprite) / 32
+ ld hl, vNPCSprites + $c * $10
+ push bc
+ call CopyVideoDataAlternate
+ ld de, PikachuSprite + $c * $10
+ ld hl, vNPCSprites2 + $c * $10
+ ld a, [h_0xFFFC]
+ and a
+ jr z, .load
+ ld de, PikachuSprite + $c * $10
+ ld hl, vNPCSprites2 + $4c * $10
+.load
+ pop bc
+ call CopyVideoDataAlternate
+ call LoadPikachuShadowIntoVRAM
+ call LoadPikachuBallIconIntoVRAM
+ ret
+
+PikachuPewterPokecenterCheck: ; fd8d4 (3f:58d4)
+ ld a, [wCurMap]
+ cp PEWTER_POKECENTER
+ ret nz
+ call ResetPikachuAsleep
+ call Func_fcff2
+ ret
+
+PikachuFanClubCheck: ; fd8e1 (3f:58e1)
+ ld a, [wCurMap]
+ cp POKEMON_FAN_CLUB
+ ret nz
+ call ResetPikachuAsleep
+ call Func_fcff2
+ ret
+
+PikachuBillsHouseCheck: ; fd8ee (3f:58ee)
+ ld a, [wCurMap]
+ cp BILLS_HOUSE
+ ret nz
+ call ResetPikachuAsleep
+ ret
+
+Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3: ; fd8f8 (3f:58f8)
+ call LoadCurrentMapView
+ call UpdateSprites
+ call Delay3
+ ret
+
+Cosine_e: ; cosine?
+ ld a, e
+ add $10
+ jr asm_fd908
+
+Sine_e: ; sine?
+ ld a, e
+asm_fd908
+ and $3f
+ cp $20
+ jr nc, .asm_fd913
+ call GetSine
+ ld a, h
+ ret
+
+.asm_fd913
+ and $1f
+ call GetSine
+ ld a, h
+ cpl
+ inc a
+ ret
+
+GetSine:
+ ld e, a
+ ld a, d
+ ld d, 0
+ ld hl, SineWave_3f
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, 0
+.asm_fd92b
+ srl a
+ jr nc, .asm_fd930
+ add hl, de
+.asm_fd930
+ sla e
+ rl d
+ and a
+ jr nz, .asm_fd92b
+ ret
+
+SineWave_3f:
+ sine_wave $100
+
+GetPikaPicAnimationScriptIndex: ; fd978 (3f:5978)
+ ld hl, PikachuMoodLookupTable
+ ld a, [wPikachuMood]
+ ld d, a
+.asm_fd97f
+ ld a, [hli]
+ inc hl
+ cp d
+ jr c, .asm_fd97f
+ dec hl
+ ld e, [hl]
+ ld hl, PikaPicAnimationScriptPointerLookupTable
+ ld a, [wPikachuHappiness]
+ ld d, a
+ ld bc, 6
+.asm_fd990
+ ld a, [hl]
+ cp d
+ jr nc, .asm_fd997
+ add hl, bc
+ jr .asm_fd990
+
+.asm_fd997
+ ld d, 0
+ add hl, de
+ ld a, [hl]
+ ret
+
+PikachuMoodLookupTable:
+; First byte: mood threshold
+; Second byte: column index in PikaPicAnimationScriptPointerLookupTable
+ db $28, 1
+ db $7f, 2
+ db $80, 3
+ db $d2, 4
+ db $ff, 5
+
+PikaPicAnimationScriptPointerLookupTable:
+; First byte: happiness threshold
+; Remaining bytes: loaded based on Pikachu's mood
+ db $32, $0e, $0e, $06, $0d, $0d
+ db $64, $09, $09, $05, $0c, $0c
+ db $82, $03, $03, $01, $08, $08
+ db $a0, $03, $03, $04, $0f, $0f
+ db $c8, $11, $11, $07, $02, $02
+ db $fa, $11, $11, $10, $0a, $0a
+ db $ff, $11, $11, $13, $14, $14
+
+StarterPikachuEmotionCommand_5: ; fd9d0 (3f:59d0)
+ ld a, [H_AUTOBGTRANSFERENABLED]
+ push af
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ld a, [de]
+ ld [wExpressionNumber2], a
+ inc de
+ push de
+ call Func_fd9e4
+ pop de
+ pop af
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ret
+
+Func_fd9e4:
+ call Func_fda2c
+ callab Func_720e3
+ call Func_fd9ff
+ call LoadCurrentPikaPicAnimScriptPointer
+ call Func_fda9a
+ call Func_fda2c
+ call RunDefaultPaletteCommand
+ ret
+
+Func_fd9ff:
+ ld hl, wPikaPicAnimPointer
+ ld bc, $11
+ xor a
+ call FillMemory
+ ld hl, wPikaPicAnimObjectDataBufferSize
+ ld bc, $21
+ xor a
+ call FillMemory
+ call Func_fe15c
+ ld hl, $64
+ ld a, l
+ ld [wPikaPicAnimTimer], a
+ ld a, h
+ ld [wPikaPicAnimTimer + 1], a
+ ld a, $07
+ ld [wPikaSpriteY], a
+ ld a, $06
+ ld [wPikaPicTextboxStartY], a
+ ret
+
+Func_fda2c:
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ coord hl, 6, 5
+ lb bc, 5, 5
+ call TextBoxBorder
+ call Delay3
+ call UpdateSprites
+ ld a, $01
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call Delay3
+ ret
+
+LoadCurrentPikaPicAnimScriptPointer:
+ ld a, [wExpressionNumber2]
+ cp $1d
+ jr c, .valid
+ ld a, 0
+.valid
+ ld e, a
+ ld d, 0
+ ld hl, Pointers_fda5e
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call UpdatePikaPicAnimPointer
+ ret
+
+Pointers_fda5e:
+ dw Data_fe28a ; 00
+ dw Data_fe28a ; 01
+ dw Data_fe2a4 ; 02
+ dw Data_fe2be ; 03
+ dw Data_fe2d8 ; 04
+ dw Data_fe2f2 ; 05
+ dw Data_fe30c ; 06
+ dw Data_fe326 ; 07
+ dw Data_fe340 ; 08
+ dw Data_fe35a ; 09
+ dw Data_fe374 ; 0a
+ dw Data_fe390 ; 0b
+ dw Data_fe3aa ; 0c
+ dw Data_fe3c4 ; 0d
+ dw Data_fe3de ; 0e
+ dw Data_fe3f8 ; 0f
+ dw Data_fe412 ; 10
+ dw Data_fe42c ; 11
+ dw Data_fe446 ; 12
+ dw Data_fe460 ; 13
+ dw Data_fe47a ; 14
+ dw Data_fe494 ; 15
+ dw Data_fe4b4 ; 16
+ dw Data_fe4ce ; 17
+ dw Data_fe4e8 ; 18
+ dw Data_fe502 ; 19
+ dw Data_fe520 ; 1a
+ dw Data_fe53e ; 1b
+ dw Data_fe558 ; 1c
+ dw Data_fe28a ; 1d
+
+
+Func_fda9a:
+.loop
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call RunPikaPicAnimScript
+ call Func_fdad5
+ call Func_fdad6
+ call Func_fdad5
+ ld a, $01
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call PikaPicAnimTimerAndJoypad
+ and a
+ jr z, .loop
+ ret
+
+PikaPicAnimTimerAndJoypad:
+ call Delay3
+ call CheckPikaPicAnimTimer
+ and a
+ ret nz
+ call JoypadLowSensitivity
+ ld a, [hJoyPressed]
+ and A_BUTTON | B_BUTTON
+ ret
+
+CheckPikaPicAnimTimer:
+ ld hl, wPikaPicAnimTimer
+ dec [hl]
+ jr nz, .not_done_yet
+ inc hl
+ ld a, [hl]
+ and a
+ jr z, .timer_expired
+ dec [hl]
+.not_done_yet
+ xor a
+ ret
+
+.timer_expired
+ ld a, $01
+ ret
+
+Func_fdad5:
+ ret
+
+Func_fdad6:
+ ld bc, wPikaPicAnimObjectDataBuffer
+ ld a, 4
+.asm_fdadb
+ push af
+ push bc
+ ld hl, 0
+ add hl, bc
+ ld a, [hli]
+ and a
+ jr z, .asm_fdb26
+ ld a, [hli]
+ ld [wCurPikaPicAnimObject], a
+ ld a, [hli]
+ ld [wCurPikaPicAnimObject + 1], a
+ ld a, [hli]
+ ld [wCurPikaPicAnimObject + 2], a
+ ld a, [hli]
+ ld [wd456], a
+ ld a, [hli]
+ ld [wd457], a
+ ld a, [hli]
+ ld [wd458], a
+ ld a, [hli]
+ ld [wCurPikaPicAnimObject + 3], a
+ push bc
+ call Func_fdb7e
+ pop bc
+ ld hl, 1
+ add hl, bc
+ ld a, [wCurPikaPicAnimObject]
+ ld [hli], a
+ ld a, [wCurPikaPicAnimObject + 1]
+ ld [hli], a
+ ld a, [wCurPikaPicAnimObject + 2]
+ ld [hli], a
+ ld a, [wd456]
+ ld [hli], a
+ ld a, [wd457]
+ ld [hli], a
+ ld a, [wd458]
+ ld [hli], a
+ ld a, [wCurPikaPicAnimObject + 3]
+ ld [hl], a
+.asm_fdb26
+ pop bc
+ ld hl, 8
+ add hl, bc
+ ld b, h
+ ld c, l
+ pop af
+ dec a
+ jr nz, .asm_fdadb
+ ret
+
+PikaPicAnimCommand_object:
+ ld hl, wPikaPicAnimObjectDataBuffer
+ ld de, 8
+ ld c, 4
+.loop
+ ld a, [hl]
+ and a
+ jr z, .found
+ add hl, de
+ dec c
+ jr nz, .loop
+ scf
+ ret
+
+.found
+ ld a, [wPikaPicAnimObjectDataBufferSize]
+ inc a
+ ld [wPikaPicAnimObjectDataBufferSize], a
+ ld [hli], a
+ call GetPikaPicAnimByte
+ ld [hli], a
+ call GetPikaPicAnimByte
+ ld [hl], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ call GetPikaPicAnimByte
+ ld [hli], a
+ call GetPikaPicAnimByte
+ ld [hli], a
+ call GetPikaPicAnimByte
+ ld [hli], a
+ and a
+ ret
+
+PikaPicAnimCommand_deleteobject:
+ call GetPikaPicAnimByte
+ ld b, a
+ ld hl, wPikaPicAnimObjectDataBuffer
+ ld de, 8
+ ld c, 4
+.search
+ ld a, [hl]
+ cp b
+ jr z, .delete
+ add hl, de
+ dec c
+ jr nz, .search
+ scf
+ ret
+
+.delete
+ xor a
+ ld [hl], a
+ ret
+
+Func_fdb7e:
+.asm_fdb7e
+ ld a, [wCurPikaPicAnimObject]
+ cp $23
+ jr c, .asm_fdb87
+ ld a, $04
+.asm_fdb87
+ ld e, a
+ ld d, $00
+ ld hl, Pointers_fdbc9
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wCurPikaPicAnimObject + 1]
+ ld e, a
+ ld d, 0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ cp $e0
+ jr z, .asm_fdba1
+ jr .asm_fdbaa
+
+.asm_fdba1
+ xor a
+ ld [wCurPikaPicAnimObject + 1], a
+ ld [wCurPikaPicAnimObject + 2], a
+ jr .asm_fdb7e
+
+.asm_fdbaa
+ push hl
+ call Func_fdd62
+ pop hl
+ ld a, [hl]
+ and a
+ jr z, .asm_fdbc8
+ ld a, [wCurPikaPicAnimObject + 2]
+ inc a
+ ld [wCurPikaPicAnimObject + 2], a
+ cp [hl]
+ jr nz, .asm_fdbc8
+ xor a
+ ld [wCurPikaPicAnimObject + 2], a
+ ld a, [wCurPikaPicAnimObject + 1]
+ inc a
+ ld [wCurPikaPicAnimObject + 1], a
+.asm_fdbc8
+ ret
+
+Pointers_fdbc9:
+ dw Data_fdc11
+ dw Data_fdc11
+ dw Data_fdc29
+ dw Data_fdc32
+ dw Data_fdc3b
+ dw Data_fdc3e
+ dw Data_fdc41
+ dw Data_fdc50
+ dw Data_fdc61
+ dw Data_fdc6e
+ dw Data_fdc77
+ dw Data_fdc84
+ dw Data_fdc8d
+ dw Data_fdc98
+ dw Data_fdca5
+ dw Data_fdcb2
+ dw Data_fdcb7
+ dw Data_fdcc2
+ dw Data_fdccb
+ dw Data_fdcd4
+ dw Data_fdcdf
+ dw Data_fdce8
+ dw Data_fdcf1
+ dw Data_fdcf6
+ dw Data_fdd01
+ dw Data_fdd0a
+ dw Data_fdd13
+ dw Data_fdd1c
+ dw Data_fdd27
+ dw Data_fdd2c
+ dw Data_fdd35
+ dw Data_fdd40
+ dw Data_fdd47
+ dw Data_fdd54
+ dw Data_fdd59
+ dw Data_fdc3b
+
+Data_fdc11:
+ db $01, $14
+ db $07, $02
+ db $01, $01
+ db $07, $02
+ db $01, $01
+ db $07, $08
+ db $e0
+Data_fdc1e:
+ db $02, $02
+ db $01, $01
+ db $02, $02
+ db $01, $01
+ db $02, $08
+ db $e0
+Data_fdc29:
+ db $00, $08
+ db $08, $08
+ db $00, $08
+ db $08, $08
+ db $e0
+Data_fdc32:
+ db $08, $08
+ db $00, $08
+ db $08, $08
+ db $00, $08
+ db $e0
+Data_fdc3b:
+ db $01, $00
+ db $e0
+Data_fdc3e:
+ db $09, $00
+ db $e0
+Data_fdc41:
+ db $00, $02
+ db $0e, $04
+ db $00, $08
+ db $0e, $04
+ db $00, $40
+ db $0e, $04
+ db $00, $40
+ db $e0
+Data_fdc50:
+ db $00, $04
+ db $0f, $04
+ db $00, $04
+ db $0f, $04
+ db $00, $08
+ db $0f, $04
+ db $00, $08
+ db $0f, $04
+ db $e0
+Data_fdc61:
+ db $10, $01
+ db $00, $01
+ db $10, $01
+ db $00, $40
+ db $10, $01
+ db $00, $40
+ db $e0
+Data_fdc6e:
+ db $00, $08
+ db $11, $08
+ db $00, $14
+ db $11, $08
+ db $e0
+Data_fdc77:
+ db $00, $02
+ db $12, $02
+ db $00, $02
+ db $12, $40
+ db $00, $03
+ db $12, $40
+ db $e0
+Data_fdc84:
+ db $00, $08
+ db $13, $40
+ db $00, $04
+ db $13, $40
+ db $e0
+Data_fdc8d:
+ db $14, $08
+ db $00, $02
+ db $14, $08
+ db $00, $02
+ db $14, $08
+ db $e0
+Data_fdc98:
+ db $15, $04
+ db $00, $08
+ db $15, $04
+ db $00, $40
+ db $15, $04
+ db $00, $40
+ db $e0
+Data_fdca5:
+ db $00, $02
+ db $16, $02
+ db $00, $02
+ db $16, $02
+ db $00, $14
+ db $16, $02
+ db $e0
+Data_fdcb2:
+ db $00, $08
+ db $17, $08
+ db $e0
+Data_fdcb7:
+ db $00, $08
+ db $17, $03
+ db $18, $05
+ db $17, $03
+ db $00, $05
+ db $e0
+Data_fdcc2:
+ db $00, $14
+ db $19, $08
+ db $00, $14
+ db $19, $08
+ db $e0
+Data_fdccb:
+ db $00, $0d
+ db $1a, $0c
+ db $00, $64
+ db $1a, $08
+ db $e0
+Data_fdcd4:
+ db $00, $05
+ db $1b, $05
+ db $00, $05
+ db $1b, $05
+ db $00, $64
+ db $e0
+Data_fdcdf:
+ db $00, $02
+ db $1c, $02
+ db $00, $02
+ db $1c, $02
+ db $e0
+Data_fdce8:
+ db $00, $05
+ db $1d, $05
+ db $00, $05
+ db $1d, $05
+ db $e0
+Data_fdcf1:
+ db $1e, $08
+ db $00, $64
+ db $e0
+Data_fdcf6:
+ db $00, $0a
+ db $1f, $03
+ db $00, $03
+ db $1f, $03
+ db $00, $64
+ db $e0
+Data_fdd01:
+ db $00, $03
+ db $20, $64
+ db $00, $08
+ db $20, $08
+ db $e0
+Data_fdd0a:
+ db $21, $06
+ db $00, $06
+ db $21, $06
+ db $00, $06
+ db $e0
+Data_fdd13:
+ db $00, $08
+ db $22, $0c
+ db $00, $08
+ db $22, $0c
+ db $e0
+Data_fdd1c:
+ db $00, $08
+ db $09, $02
+ db $0a, $01
+ db $0b, $01
+ db $0c, $64
+ db $e0
+Data_fdd27:
+ db $00, $08
+ db $24, $64
+ db $e0
+Data_fdd2c:
+ db $00, $10
+ db $25, $10
+ db $00, $10
+ db $25, $10
+ db $e0
+Data_fdd35:
+ db $00, $06
+ db $26, $06
+ db $00, $06
+ db $26, $06
+ db $00, $64
+ db $e0
+Data_fdd40:
+ db $00, $06
+ db $09, $06
+ db $0a, $64
+ db $e0
+Data_fdd47:
+ db $00, $14
+ db $09, $08
+ db $00, $14
+ db $09, $08
+ db $0a, $08
+ db $0b, $64
+ db $e0
+Data_fdd54:
+ db $00, $04
+ db $09, $64
+ db $e0
+Data_fdd59:
+ db $00, $0c
+ db $09, $0c
+ db $00, $0c
+ db $09, $64
+ db $e0
+
+Func_fdd62:
+ and a
+ ret z
+ ld e, a
+ ld d, 0
+ ld hl, Pointers_fddb8
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ ld c, a
+ inc de
+ ld a, [de]
+ ld b, a
+ inc de
+ push de
+ push bc
+ call Func_fdd98
+ pop bc
+ pop de
+.asm_fdd7c
+ push bc
+ push hl
+ ld a, [wd456]
+ ld c, a
+.asm_fdd82
+ ld a, [de]
+ inc de
+ cp $ff
+ jr z, .asm_fdd8a
+ add c
+ ld [hl], a
+.asm_fdd8a
+ inc hl
+ dec b
+ jr nz, .asm_fdd82
+ pop hl
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ dec c
+ jr nz, .asm_fdd7c
+ ret
+
+Func_fdd98:
+ push bc
+ ld a, [wd458]
+ ld b, a
+ ld a, [wPikaPicTextboxStartY]
+ add b
+ coord hl, 0, 0
+ ld bc, SCREEN_WIDTH
+ call AddNTimes
+ ld a, [wd457]
+ ld c, a
+ ld a, [wPikaSpriteY]
+ add c
+ ld c, a
+ ld b, 0
+ add hl, bc
+ pop bc
+ ret
+
+Pointers_fddb8:
+ dw Data_fde0e
+ dw Data_fde0f
+ dw Data_fde2a
+ dw Data_fde60
+ dw Data_fde63
+ dw Data_fde67
+ dw Data_fde6b
+ dw Data_fde45
+ dw Data_fde6b
+ dw Data_fdfaa
+ dw Data_fdfc5
+ dw Data_fdfe0
+ dw Data_fdffb
+ dw Data_fe016
+ dw Data_fde81
+ dw Data_fde9c
+ dw Data_fdeb7
+ dw Data_fded2
+ dw Data_fdeed
+ dw Data_fdf08
+ dw Data_fdf23
+ dw Data_fdf3e
+ dw Data_fdf59
+ dw Data_fdf74
+ dw Data_fdf8f
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfaa
+ dw Data_fdfc5
+ dw Data_fdfe0
+ dw Data_fde0f
+
+Data_fde0e:
+ db $ff ; unused
+
+Data_fde0f: ; fde0f
+ db 5, 5
+ db $00, $05, $0a, $0f, $14
+ db $01, $06, $0b, $10, $15
+ db $02, $07, $0c, $11, $16
+ db $03, $08, $0d, $12, $17
+ db $04, $09, $0e, $13, $18
+
+Data_fde2a: ; fde2a
+ db 5, 5
+ db $19, $1e, $23, $28, $2d
+ db $1a, $1f, $24, $29, $2e
+ db $1b, $20, $25, $2a, $2f
+ db $1c, $21, $26, $2b, $30
+ db $1d, $22, $27, $2c, $31
+
+Data_fde45: ; fde45
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $20, $25, $ff, $ff
+ db $ff, $21, $26, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+
+Data_fde60: ; fde60
+ db 1, 1
+ db $00
+
+Data_fde63: ; fde63
+ db 2, 1
+ db $00
+ db $01
+
+Data_fde67: ; fde67
+ db 1, 2
+ db $00, $01
+
+Data_fde6b: ; fde6b
+ db 2, 2
+ db $00, $01
+ db $02, $03
+
+Data_fde71: ; fde71
+ db 3, 2
+ db $00, $01
+ db $02, $03
+ db $04, $05
+
+Data_fde79: ; fde79
+ db 2, 3
+ db $00, $01, $02
+ db $03, $04, $05
+
+Data_fde81: ; fde81
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $00, $01, $02, $03, $04
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+
+Data_fde9c: ; fde9c
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09
+
+Data_fdeb7: ; fdeb7
+ db 5, 5
+ db $00, $01, $ff, $ff, $ff
+ db $02, $03, $ff, $ff, $ff
+ db $04, $05, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+
+Data_fded2: ; fded2
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09
+ db $0a, $0b, $0c, $0d, $0e
+ db $0f, $10, $11, $12, $13
+
+Data_fdeed: ; fdeed
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $00, $01
+ db $ff, $ff, $ff, $02, $03
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+
+Data_fdf08: ; fdf08
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $00, $01, $ff, $ff, $ff
+ db $02, $03, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+
+Data_fdf23: ; fdf23
+ db 5, 5
+ db $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09
+ db $0a, $0b, $0c, $0d, $0e
+ db $0f, $10, $11, $12, $13
+ db $14, $15, $16, $17, $18
+
+Data_fdf3e: ; fdf3e
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09
+ db $ff, $ff, $ff, $ff, $ff
+
+Data_fdf59: ; fdf59
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $00, $01, $ff, $ff, $ff
+ db $02, $03, $ff, $ff, $ff
+ db $04, $05, $ff, $ff, $ff
+
+Data_fdf74: ; fdf74
+ db 5, 5
+ db $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09
+ db $0a, $0b, $0c, $0d, $0e
+ db $0f, $10, $11, $12, $13
+ db $14, $15, $16, $17, $18
+
+Data_fdf8f: ; fdf8f
+ db 5, 5
+ db $19, $1a, $1b, $1c, $1d
+ db $1e, $1f, $20, $21, $22
+ db $23, $24, $25, $26, $27
+ db $28, $29, $2a, $2b, $2c
+ db $2d, $2e, $2f, $30, $31
+
+Data_fdfaa: ; fdfaa
+ db 5, 5
+ db $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09
+ db $0a, $0b, $0c, $0d, $0e
+ db $0f, $10, $11, $12, $13
+ db $14, $15, $16, $17, $18
+
+Data_fdfc5: ; fdfc5
+ db 5, 5
+ db $19, $1a, $1b, $1c, $1d
+ db $1e, $1f, $20, $21, $22
+ db $23, $24, $25, $26, $27
+ db $28, $29, $2a, $2b, $2c
+ db $2d, $2e, $2f, $30, $31
+
+Data_fdfe0: ; fdfe0
+ db 5, 5
+ db $32, $33, $34, $35, $36
+ db $37, $38, $39, $3a, $3b
+ db $3c, $3d, $3e, $3f, $40
+ db $41, $42, $43, $44, $45
+ db $46, $47, $48, $49, $4a
+
+Data_fdffb: ; fdffb
+ db 5, 5
+ db $4b, $4c, $4d, $4e, $4f
+ db $50, $51, $52, $53, $54
+ db $55, $56, $57, $58, $59
+ db $5a, $5b, $5c, $5d, $5e
+ db $5f, $60, $61, $62, $63
+
+Data_fe016: ; fe016
+ db 5, 5
+ db $64, $65, $66, $67, $68
+ db $69, $6a, $6b, $6c, $6d
+ db $6e, $6f, $70, $71, $72
+ db $73, $74, $75, $76, $77
+ db $78, $79, $7a, $7b, $7c
+
+LoadPikaPicAnimGFXHeader:
+ push hl
+ ld e, a
+ ld d, 0
+ ld hl, PikaPicAnimGFXHeaders
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ pop hl
+ ret
+
+RunPikaPicAnimScript:
+ call Func_fe066
+ ret c
+ xor a
+ ld [wPikaPicAnimPointerSetupFinished], a
+.loop
+ call GetPikaPicAnimByte
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_fe071
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call JumpToAddress
+ ld a, [wPikaPicAnimPointerSetupFinished]
+ and a
+ jr z, .loop
+ ret
+
+Func_fe066:
+ ld a, [wPikaPicAnimDelay]
+ and a
+ ret z
+ dec a
+ ld [wPikaPicAnimDelay], a
+ scf
+ ret
+
+Jumptable_fe071:
+ dw PikaPicAnimCommand_nop ; 00, 0 params
+ dw PikaPicAnimCommand_writebyte ; 01, 1 param
+ dw PikaPicAnimCommand_loadgfx ; 02, 1 param
+ dw PikaPicAnimCommand_object ; 03, 5 params
+ dw PikaPicAnimCommand_nop4 ; 04, 0 params
+ dw PikaPicAnimCommand_nop5 ; 05, 0 params
+ dw PikaPicAnimCommand_deleteobject ; 06, 1 param
+ dw PikaPicAnimCommand_nop7 ; 07, 0 params
+ dw PikaPicAnimCommand_nop8 ; 08, 0 params
+ dw PikaPicAnimCommand_jump ; 09, 1 dw param
+ dw PikaPicAnimCommand_setduration ; 0a, 1 dw param
+ dw PikaPicAnimCommand_cry ; 0b, 1 param
+ dw PikaPicAnimCommand_thunderbolt ; 0c, 0 params
+ dw PikaPicAnimCommand_waitbgmap ; 0d, 0 params (ret)
+ dw PikaPicAnimCommand_ret ; 0e, 0 params (ret)
+
+PikaPicAnimCommand_nop:
+ ret
+
+PikaPicAnimCommand_ret:
+ ld a, 1
+ ld [wPikaPicAnimTimer], a
+ xor a
+ ld [wPikaPicAnimTimer + 1], a
+ jr PikaPicAnimCommand_waitbgmap
+
+Func_fe09b:
+ ret
+
+PikaPicAnimCommand_setduration:
+ call GetPikaPicAnimByte
+ ld [wPikaPicAnimTimer], a
+ call GetPikaPicAnimByte
+ ld [wPikaPicAnimTimer + 1], a
+ ret
+
+PikaPicAnimCommand_waitbgmap:
+ ld a, $ff
+ ld [wPikaPicAnimPointerSetupFinished], a
+ ret
+
+PikaPicAnimCommand_writebyte:
+ call GetPikaPicAnimByte
+ ld [wPikaPicAnimDelay], a
+ ret
+
+PikaPicAnimCommand_nop4:
+PikaPicAnimCommand_nop5:
+PikaPicAnimCommand_nop7:
+PikaPicAnimCommand_nop8:
+ ret
+
+PikaPicAnimCommand_jump:
+ call GetPikaPicAnimByte
+ ld l, a
+ call GetPikaPicAnimByte
+ ld h, a
+ call UpdatePikaPicAnimPointer
+ ret
+
+GetPikaPicAnimByte:
+ push hl
+ ld hl, wPikaPicAnimPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hli]
+ call UpdatePikaPicAnimPointer
+ pop hl
+ ret
+
+UpdatePikaPicAnimPointer:
+ push af
+ ld a, l
+ ld [wPikaPicAnimPointer], a
+ ld a, h
+ ld [wPikaPicAnimPointer + 1], a
+ pop af
+ ret
+
+PikaPicAnimCommand_loadgfx:
+ ld a, [wUpdateSpritesEnabled]
+ push af
+ ld a, $ff
+ ld [wUpdateSpritesEnabled], a
+ ld a, [H_AUTOBGTRANSFERENABLED]
+ push af
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ld a, [hTilesetType]
+ push af
+ xor a
+ ld [hTilesetType], a
+ call GetPikaPicAnimByte
+ ld [wPikaPicAnimCurGraphicID], a
+ ld a, [wPikaPicAnimCurGraphicID]
+ call LoadPikaPicAnimGFXHeader
+ ld a, c
+ cp a, $ff
+ jr z, .compressed
+ call RequestPikaPicAnimGFX
+ jr .asm_fe109
+
+.compressed
+ call DecompressRequestPikaPicAnimGFX
+.asm_fe109
+ pop af
+ ld [hTilesetType], a
+ pop af
+ ld [H_AUTOBGTRANSFERENABLED], a
+ pop af
+ ld [wUpdateSpritesEnabled], a
+ ret
+
+RequestPikaPicAnimGFX: ; fe114
+ push de
+ ld a, [wPikaPicAnimCurGraphicID]
+ ld d, a
+ ld e, c
+ call CheckIfThereIsRoomForPikaPicAnimGFX
+ pop de
+ jr c, .failed
+ call GetPikaPicVRAMAddressForNewGFX
+ call CopyVideoDataAlternate
+ and a
+.failed
+ ret
+
+DecompressRequestPikaPicAnimGFX: ; fe128
+ push de
+ ld a, [wPikaPicAnimCurGraphicID]
+ ld d, a
+ ld e, 5 * 5
+ call CheckIfThereIsRoomForPikaPicAnimGFX
+ pop de
+ jr c, .failed
+ ld a, b
+ call UncompressSpriteFromDE
+ ld a, BANK(S_SPRITEBUFFER1)
+ call SwitchSRAMBankAndLatchClockData
+ ld hl, S_SPRITEBUFFER1
+ ld de, S_SPRITEBUFFER0
+ ld bc, SPRITEBUFFERSIZE * 2
+ call CopyData
+ call PrepareRTCDataAndDisableSRAM
+ ld a, [wPikaPicAnimCurGraphicID]
+ call LookUpTileOffsetForCurrentPikaPicAnimGFX
+ call GetPikaPicVRAMAddressForNewGFX
+ ld d, h
+ ld e, l
+ call InterlaceMergeSpriteBuffers
+.failed
+ ret
+
+Func_fe15c:
+ ld hl, wNPCMovementDirections
+ ld bc, $11
+ xor a
+ call FillMemory
+ ret
+
+GetPikaPicVRAMAddressForNewGFX:
+ ld hl, vNPCSprites
+ push bc
+ ld b, a
+ and $f
+ swap a
+ ld c, a
+ ld a, b
+ and $f0
+ swap a
+ ld b, a
+ add hl, bc
+ pop bc
+ ret
+
+CheckIfThereIsRoomForPikaPicAnimGFX:
+ push bc
+ push hl
+ ld hl, wNPCMovementDirections + 1
+ ld c, 8
+.loop
+ ld a, [hl]
+ and a
+ jr z, .empty
+ cp d
+ jr z, .found
+ inc hl
+ inc hl
+ dec c
+ jr nz, .loop
+ scf
+ ret ; execute hl, then bc
+
+.found
+ inc hl
+ ld a, [hl]
+ ret ; execute hl, then bc
+
+.empty
+ ld [hl], d
+ inc hl
+ ld a, [wNPCMovementDirections]
+ add $80
+ ld [hl], a
+ ld a, [wNPCMovementDirections]
+ add e
+ ld [wNPCMovementDirections], a
+ cp $80
+ jr z, .asm_fe1a7
+ jr nc, .failed
+.asm_fe1a7
+ ld a, [hl]
+ and a
+ jr .pop_ret
+
+.failed
+ scf
+.pop_ret
+ pop hl
+ pop bc
+ ret
+
+LookUpTileOffsetForCurrentPikaPicAnimGFX:
+ push bc
+ push hl
+ ld b, a
+ ld hl, wNPCMovementDirections + 1
+ ld c, 8
+.loop
+ ld a, [hli]
+ cp b
+ jr z, .found
+ inc hl
+ dec c
+ jr nz, .loop
+ scf
+ jr .pop_ret
+
+.found
+ ld a, [hl]
+ and a
+.pop_ret
+ pop hl
+ pop bc
+ ret
+
+PikaPicAnimCommand_cry:
+ call GetPikaPicAnimByte
+ cp $ff
+ ret z
+ ld e, a
+ callab PlayPikachuSoundClip
+ ret
+
+PikaPicAnimCommand_thunderbolt:
+ ld a, $1
+ ld [wMuteAudioAndPauseMusic], a
+ call DelayFrame
+ ld a, [wAudioROMBank]
+ push af
+ ld a, BANK(SFX_Battle_2F)
+ ld [wAudioROMBank], a
+ ld [wAudioSavedROMBank], a
+ call PikaPicAnimLoadThunderboltAudio
+ call PlaySound
+ call PikaPicAnimThunderboltFlashScreen
+ call WaitForSoundToFinish
+ pop af
+ ld [wAudioROMBank], a
+ ld [wAudioSavedROMBank], a
+ xor a
+ ld [wMuteAudioAndPauseMusic], a
+ ret
+
+PikaPicAnimLoadThunderboltAudio:
+ ld hl, MoveSoundTable
+ ld e, THUNDERBOLT
+ ld d, 0
+ add hl, de
+ add hl, de
+ add hl, de
+ ld a, BANK(MoveSoundTable)
+ call GetFarByte
+ ld b, a
+ inc hl
+ ld a, BANK(MoveSoundTable)
+ call GetFarByte
+ inc hl
+ ld [wFrequencyModifier], a
+ ld a, BANK(MoveSoundTable)
+ call GetFarByte
+ ld [wTempoModifier], a
+ ld a, b
+ ret
+
+PikaPicAnimThunderboltFlashScreen:
+ ld hl, Data_fe242
+.loop
+ ld a, [hli]
+ cp $ff
+ ret z
+ ld c, a
+ ld b, [hl]
+ inc hl
+ push hl
+ call GetDMGBGPalForPikaThunderbolt
+ pop hl
+ jr .loop
+
+GetDMGBGPalForPikaThunderbolt:
+ ld a, b
+ ld [rBGP], a
+ call UpdateGBCPal_BGP
+ call DelayFrames
+ ret
+
+Data_fe242:
+ db 4, %11000000
+ db 4, %11100100
+ db 4, %11000000
+ db 4, %11100100
+ db 4, %11000000
+ db 4, %11100100
+ db 4, %11000000
+ db 4, %11100100
+ db 4, %11000000
+ db 4, %11100100
+ db 4, %11000000
+ db 4, %11100100
+ db 4, %11000000
+ db 4, %11100100
+ db 4, %11000000
+ db 4, %11100100
+ db 4, %11000000
+ db 4, %11100100
+ db 4, %11000000
+ db 4, %11100100
+ db $ff
+
+Data_fe26b: ; fe26b (3f:626b)
+ pikapic_loadgfx Pic_e4000
+ pikapic_loadgfx Pic_e49d1
+ pikapic_loadgfx PikachuSprite
+ pikapic_object $1, $80, $0, $0
+ pikapic_object $2, $b2, $5, $5
+ pikapic_object $3, $b6, $5, $5
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe286: ; fe286 (3f:6286)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe286
+
+Data_fe28a: ; fe28a (3f:628a)
+ pikapic_setduration 40
+ pikapic_loadgfx Pic_e4000
+ pikapic_loadgfx GFX_e40cc
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $6, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry PikachuCry3
+Data_fe2a0: ; fe2a0 (3f:62a0)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe2a0
+
+Data_fe2a4: ; fe2a4 (3f:62a4)
+ pikapic_setduration 44
+ pikapic_loadgfx Pic_e411c
+ pikapic_loadgfx GFX_e41d2
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $7, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe2ba: ; fe2ba (3f:62ba)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe2ba
+
+Data_fe2be: ; fe2be (3f:62be)
+ pikapic_setduration 80
+ pikapic_loadgfx Pic_e4272
+ pikapic_loadgfx GFX_e4323
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $8, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe2d4: ; fe2d4 (3f:62d4)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe2d4
+
+Data_fe2d8: ; fe2d8 (3f:62d8)
+ pikapic_setduration 70
+ pikapic_loadgfx Pic_e4383
+ pikapic_loadgfx GFX_e444b
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $9, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe2ee: ; fe2ee (3f:62ee)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe2ee
+
+Data_fe2f2: ; fe2f2 (3f:62f2)
+ pikapic_setduration 32
+ pikapic_loadgfx Pic_e458b
+ pikapic_loadgfx GFX_e463b
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $a, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe308: ; fe308 (3f:6308)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe308
+
+Data_fe30c: ; fe30c (3f:630c)
+ pikapic_setduration 50
+ pikapic_loadgfx Pic_e467b
+ pikapic_loadgfx GFX_e472e
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $b, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry PikachuCry38
+Data_fe322: ; fe322 (3f:6322)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe322
+
+Data_fe326: ; fe326 (3f:6326)
+ pikapic_setduration 58
+ pikapic_loadgfx Pic_e476e
+ pikapic_loadgfx GFX_e4841
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $c, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe33c: ; fe33c (3f:633c)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe33c
+
+Data_fe340: ; fe340 (3f:6340)
+ pikapic_setduration 44
+ pikapic_loadgfx Pic_e49d1
+ pikapic_loadgfx GFX_e4a99
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $d, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe356: ; fe356 (3f:6356)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe356
+
+Data_fe35a: ; fe35a (3f:635a)
+ pikapic_setduration 56
+ pikapic_loadgfx Pic_e4b39
+ pikapic_loadgfx GFX_e4bde
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $e, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe370: ; fe370 (3f:6370)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe370
+
+Data_fe374: ; fe374 (3f:6374)
+ pikapic_setduration 56
+ pikapic_loadgfx Pic_e4c3e
+ pikapic_loadgfx GFX_e4ce0
+ pikapic_loadgfx GFX_e4e70
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $10, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe38c: ; fe38c (3f:638c)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe38c
+
+Data_fe390: ; fe390 (3f:6390)
+ pikapic_setduration 100
+ pikapic_loadgfx Pic_e5000
+ pikapic_loadgfx GFX_e50af
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $11, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe3a6: ; fe3a6 (3f:63a6)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe3a6
+
+Data_fe3aa: ; fe3aa (3f:63aa)
+ pikapic_setduration 50
+ pikapic_loadgfx Pic_e523f
+ pikapic_loadgfx GFX_e52fe
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $12, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry PikachuCry25
+Data_fe3c0: ; fe3c0 (3f:63c0)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe3c0
+
+Data_fe3c4: ; fe3c4 (3f:63c4)
+ pikapic_setduration 50
+ pikapic_loadgfx Pic_e548e
+ pikapic_loadgfx GFX_e5541
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $13, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe3da: ; fe3da (3f:63da)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe3da
+
+Data_fe3de: ; fe3de (3f:63de)
+ pikapic_setduration 40
+ pikapic_loadgfx Pic_e56d1
+ pikapic_loadgfx GFX_e5794
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $14, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe3f4: ; fe3f4 (3f:63f4)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe3f4
+
+Data_fe3f8: ; fe3f8 (3f:63f8)
+ pikapic_setduration 50
+ pikapic_loadgfx Pic_e5924
+ pikapic_loadgfx GFX_e59ed
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $15, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe40e: ; fe40e (3f:640e)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe40e
+
+Data_fe412: ; fe412 (3f:6412)
+ pikapic_setduration 32
+ pikapic_loadgfx Pic_e5b7d
+ pikapic_loadgfx GFX_e5c4d
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $16, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe428: ; fe428 (3f:6428)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe428
+
+Data_fe42c: ; fe42c (3f:642c)
+ pikapic_setduration 100
+ pikapic_loadgfx Pic_e5ddd
+ pikapic_loadgfx GFX_e5e90
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $17, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe442: ; fe442 (3f:6442)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe442
+
+Data_fe446: ; fe446 (3f:6446)
+ pikapic_setduration 32
+ pikapic_loadgfx GFX_e6020
+ pikapic_loadgfx GFX_e61b0
+ pikapic_object $5, $80, $0, $0
+ pikapic_object $18, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry PikachuCry18
+Data_fe45c: ; fe45c (3f:645c)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe45c
+
+Data_fe460: ; fe460 (3f:6460)
+ pikapic_setduration 44
+ pikapic_loadgfx Pic_e6340
+ pikapic_loadgfx GFX_e63f7
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $19, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe476: ; fe476 (3f:6476)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe476
+
+Data_fe47a: ; fe47a (3f:647a)
+ pikapic_setduration 50
+ pikapic_loadgfx Pic_e6587
+ pikapic_loadgfx GFX_e6646
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $1a, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe490: ; fe490 (3f:6490)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe490
+
+Data_fe494: ; fe494 (3f:6494)
+ pikapic_setduration 40
+ pikapic_loadgfx Pic_e67d6
+ pikapic_loadgfx GFX_e682f
+ pikapic_loadgfx GFX_e69bf
+ pikapic_loadgfx GFX_e6b4f
+ pikapic_loadgfx GFX_e6cdf
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $1b, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry PikachuCry20
+Data_fe4b0: ; fe4b0 (3f:64b0)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe4b0
+
+Data_fe4b4: ; fe4b4 (3f:64b4)
+ pikapic_setduration 40
+ pikapic_loadgfx GFX_e6e6f
+ pikapic_loadgfx GFX_e6fff
+ pikapic_object $5, $80, $0, $0
+ pikapic_object $1c, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe4ca: ; fe4ca (3f:64ca)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe4ca
+
+Data_fe4ce: ; fe4ce (3f:64ce)
+ pikapic_setduration 70
+ pikapic_loadgfx GFX_e718f
+ pikapic_loadgfx GFX_e731f
+ pikapic_object $5, $80, $0, $0
+ pikapic_object $1d, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe4e4: ; fe4e4 (3f:64e4)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe4e4
+
+Data_fe4e8: ; fe4e8 (3f:64e8)
+ pikapic_setduration 60
+ pikapic_loadgfx GFX_e74af
+ pikapic_loadgfx GFX_e763f
+ pikapic_object $5, $80, $0, $0
+ pikapic_object $1e, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe4fe: ; fe4fe (3f:64fe)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe4fe
+
+Data_fe502: ; fe502 (3f:6502)
+ pikapic_setduration 50
+ pikapic_loadgfx Pic_e77cf
+ pikapic_loadgfx GFX_e7863
+ pikapic_loadgfx GFX_e79f3
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $1f, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+ pikapic_writebyte 13
+ pikapic_waitbgmap
+ pikapic_thunderbolt
+ pikapic_ret
+
+Data_fe51f: ; fe51f (3f:651f)
+ pikapic_waitbgmap
+Data_fe520: ; fe520 (3f:6520)
+ pikapic_setduration 100
+ pikapic_loadgfx Pic_e5000
+ pikapic_loadgfx GFX_e50af
+ pikapic_loadgfx GFX_e7b83
+ pikapic_loadgfx GFX_e7d13
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $20, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe53a: ; fe53a (3f:653a)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe53a
+
+Data_fe53e: ; fe53e (3f:653e)
+ pikapic_setduration 30
+ pikapic_loadgfx Pic_f0abf
+ pikapic_loadgfx GFX_f0b64
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $21, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe554: ; fe554 (3f:6554)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe554
+
+Data_fe558: ; fe558 (3f:6558)
+ pikapic_setduration 64
+ pikapic_loadgfx Pic_f0cf4
+ pikapic_loadgfx GFX_f0d82
+ pikapic_object $4, $80, $0, $0
+ pikapic_object $22, $99, $0, $0
+ pikapic_waitbgmap
+ pikapic_cry
+Data_fe56e: ; fe56e (3f:656e)
+ pikapic_waitbgmap
+ pikapic_jump Data_fe56e
+
+PikaPicAnimGFXHeaders:
+pikapicanimgfx: MACRO
+\2_id::
+ db \1
+ dba \2
+ endm
+
+ dbbw $01, $39, $0000
+ pikapicanimgfx -1, Pic_e4000 ; 01
+ pikapicanimgfx 5, GFX_e40cc ; 02
+ pikapicanimgfx -1, Pic_e411c ; 03
+ pikapicanimgfx 10, GFX_e41d2 ; 04
+ pikapicanimgfx -1, Pic_e4272 ; 05
+ pikapicanimgfx 6, GFX_e4323 ; 06
+ pikapicanimgfx -1, Pic_e4383 ; 07
+ pikapicanimgfx 20, GFX_e444b ; 08
+ pikapicanimgfx -1, Pic_e458b ; 09
+ pikapicanimgfx 4, GFX_e463b ; 0a
+ pikapicanimgfx -1, Pic_e467b ; 0b
+ pikapicanimgfx 4, GFX_e472e ; 0c
+ pikapicanimgfx -1, Pic_e476e ; 0d
+ pikapicanimgfx 25, GFX_e4841 ; 0e
+ pikapicanimgfx -1, Pic_e49d1 ; 0f
+ pikapicanimgfx 10, GFX_e4a99 ; 00
+ pikapicanimgfx -1, Pic_e4b39 ; 11
+ pikapicanimgfx 6, GFX_e4bde ; 12
+ pikapicanimgfx -1, Pic_e4c3e ; 13
+ pikapicanimgfx 25, GFX_e4ce0 ; 14
+ pikapicanimgfx 25, GFX_e4e70 ; 15
+ pikapicanimgfx -1, Pic_e5000 ; 16
+ pikapicanimgfx 25, GFX_e50af ; 17
+ pikapicanimgfx -1, Pic_e523f ; 18
+ pikapicanimgfx 25, GFX_e52fe ; 19
+ pikapicanimgfx -1, Pic_e548e ; 1a
+ pikapicanimgfx 25, GFX_e5541 ; 1b
+ pikapicanimgfx -1, Pic_e56d1 ; 1c
+ pikapicanimgfx 25, GFX_e5794 ; 1d
+ pikapicanimgfx -1, Pic_e5924 ; 1e
+ pikapicanimgfx 25, GFX_e59ed ; 1f
+ pikapicanimgfx -1, Pic_e5b7d ; 20
+ pikapicanimgfx 25, GFX_e5c4d ; 21
+ pikapicanimgfx -1, Pic_e5ddd ; 22
+ pikapicanimgfx 25, GFX_e5e90 ; 23
+ pikapicanimgfx 25, GFX_e6020 ; 24
+ pikapicanimgfx 25, GFX_e61b0 ; 25
+ pikapicanimgfx -1, Pic_e6340 ; 26
+ pikapicanimgfx 25, GFX_e63f7 ; 27
+ pikapicanimgfx -1, Pic_e6587 ; 28
+ pikapicanimgfx 25, GFX_e6646 ; 29
+ pikapicanimgfx -1, Pic_e67d6 ; 2a
+ pikapicanimgfx 25, GFX_e682f ; 2b
+ pikapicanimgfx 25, GFX_e69bf ; 2c
+ pikapicanimgfx 25, GFX_e6b4f ; 2d
+ pikapicanimgfx 25, GFX_e6cdf ; 2e
+ pikapicanimgfx 25, GFX_e6e6f ; 2f
+ pikapicanimgfx 25, GFX_e6fff ; 30
+ pikapicanimgfx 25, GFX_e718f ; 31
+ pikapicanimgfx 25, GFX_e731f ; 32
+ pikapicanimgfx 25, GFX_e74af ; 33
+ pikapicanimgfx 25, GFX_e763f ; 34
+ pikapicanimgfx -1, Pic_e77cf ; 35
+ pikapicanimgfx 25, GFX_e7863 ; 36
+ pikapicanimgfx 25, GFX_e79f3 ; 37
+ pikapicanimgfx 25, GFX_e7b83 ; 38
+ pikapicanimgfx 25, GFX_e7d13 ; 39
+ pikapicanimgfx -1, Pic_f0abf ; 3a
+ pikapicanimgfx 25, GFX_f0b64 ; 3b
+ pikapicanimgfx -1, Pic_f0cf4 ; 3c
+ pikapicanimgfx 25, GFX_f0d82 ; 3d
+ pikapicanimgfx 24, PikachuSprite ; 3e
diff --git a/engine/printer.asm b/engine/printer.asm
index 7e6ae637..95f70087 100755
--- a/engine/printer.asm
+++ b/engine/printer.asm
@@ -356,7 +356,7 @@ Func_e89e6:
ld b, a
ld a, [$caf4]
sub b
- ld hl, $c978
+ ld hl, wPrinterTileBuffer
ld de, $0028
.asm_e89f4
and a
@@ -432,7 +432,7 @@ Data_e8a58:
db $0f, $00, $00, $00, $0f, $00
Func_e8a5e: ; e8a5e (3a:4a5e)
- ld a, [$d49a]
+ ld a, [wUnknownSerialFlag_d49b]
ld e, a
ld d, 0
ld hl, Jumptable_e8a6d
@@ -1078,21 +1078,252 @@ Func_e8eca: ; e8eca (3a:4eca)
ret
Func_e8efc: ; e8efc (3a:4efc)
- dr $e8efc,$e8f09
+ coord hl, 0, 0
+ coord de, 0, 0, wPrinterTileBuffer
+ ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+ call CopyData
+ ret
+
Func_e8f09: ; e8f09 (3a:4f09)
- dr $e8f09,$e8f16
+ coord hl, 0, 0, wPrinterTileBuffer
+ coord de, 0, 0
+ ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+ call CopyData
+ ret
+
Func_e8f16: ; e8f16 (3a:4f16)
- dr $e8f16,$e8f24
+ xor a
+ ld [hJoyLast], a
+ ld [hJoyReleased], a
+ ld [hJoyPressed], a
+ ld [hJoyHeld], a
+ ld [hJoy5], a
+ ld [hJoy6], a
+ ret
+
Func_e8f24: ; e8f24 (3a:4f24)
- dr $e8f24,$e8f3b
+ call Func_e8f42
+ ld a, [wAudioROMBank]
+ ld [wAudioSavedROMBank], a
+ ld a, BANK(Music_GBPrinter)
+ ld [wAudioROMBank], a
+ ld a, MUSIC_GB_PRINTER
+ ld [wNewSoundID], a
+ call PlaySound
+ ret
+
Func_e8f3b: ; e8f3b (3a:4f3b)
- dr $e8f3b,$e8f51
+ call Func_e8f42
+ call PlayDefaultMusic
+ ret
+
+Func_e8f42: ; e8f42 (3a:4f42)
+ ld a, $4
+ ld [wAudioFadeOutControl], a
+ call StopAllMusic
+.asm_e8f4a
+ ld a, [wAudioFadeOutControl]
+ and a
+ jr nz, .asm_e8f4a
+ ret
+
Func_e8f51: ; e8f51 (3a:4f51)
- dr $e8f51,$e8f82
+ ld a, [$c970]
+ cp $81
+ jr z, .asm_e8f62
+ ld a, [$c971]
+ cp $ff
+ jr z, .asm_e8f7c
+ xor a
+ jr .asm_e8f7e
+
+.asm_e8f62
+ ld a, [$c971]
+ and $e0
+ ret z
+ bit 7, a
+ jr nz, .asm_e8f78
+ bit 6, a
+ jr nz, .asm_e8f74
+ ld a, 6
+ jr .asm_e8f7e
+
+.asm_e8f74
+ ld a, 7
+ jr .asm_e8f7e
+
+.asm_e8f78
+ ld a, 4
+ jr .asm_e8f7e
+
+.asm_e8f7c
+ ld a, 5
+.asm_e8f7e
+ ld [wcae0], a
+ ret
+
Func_e8f82: ; e8f82 (3a:4f82)
- dr $e8f82,$e910a
+ dr $e8f82,$e8fb8
+
+String_e8fb8:
+ db "Press B to Cancel@"
+
+Table_e8fca:
+ dw String_e8fdc
+ dw String_e8fdd
+ dw String_e8ff0
+ dw String_e9003
+ dw String_e9014
+ dw String_e9049
+ dw String_e907e
+ dw String_e90b3
+ dw String_e90e8
+
+String_e8fdc:
+ db "@"
+String_e8fdd:
+ db ""
+ next " CHECKING LINK...@"
+String_e8ff0:
+ db ""
+ next " TRANSMITTING...@"
+String_e9003:
+ db ""
+ next " PRINTING...@"
+String_e9014:
+ db " Printer Error 1"
+ next ""
+ next "Check the Game Boy"
+ next "Printer Manual.@"
+String_e9049:
+ db " Printer Error 2"
+ next ""
+ next "Check the Game Boy"
+ next "Printer Manual.@"
+String_e907e:
+ db " Printer Error 3"
+ next ""
+ next "Check the Game Boy"
+ next "Printer Manual.@"
+String_e90b3:
+ db " Printer Error 4"
+ next ""
+ next "Check the Game Boy"
+ next "Printer Manual.@"
+String_e90e8:
+ db "This is not the"
+ next "Game Boy Printer!@"
+
Func_e910a:
- dr $e910a,$e925d
+ call GBPalWhiteOutWithDelay3
+ call ClearScreen
+ ld de, SurfingPikachu2Graphics
+ ld hl, vChars2
+ lb bc, BANK(SurfingPikachu2Graphics), (SurfingPikachu2GraphicsEnd - SurfingPikachu2Graphics) / $10
+ call CopyVideoData
+ coord hl, 0, 0
+ call Func_e91a9
+ coord hl, 0, 17
+ call Func_e91a9
+ coord hl, 0, 0
+ call Func_e91b5
+ coord hl, 19, 0
+ call Func_e91b5
+ ld a, $04
+ coord hl, 0, 0
+ ld [hl], a
+ coord hl, 0, 17
+ ld [hl], a
+ coord hl, 19, 0
+ ld [hl], a
+ coord hl, 19, 17
+ ld [hl], a
+ ld de, Data_e91c4
+ coord hl, 10, 8
+ lb bc, 3, 8
+ call Func_e925d
+ ld de, Data_e91dc
+ coord hl, 2, 11
+ lb bc, 6, 16
+ call Func_e925d
+ ld de, String_e923c
+ coord hl, 3, 2
+ call PlaceString
+ ld de, String_e924b
+ coord hl, 9, 4
+ call PlaceString
+ ld de, String_e9256
+ coord hl, 12, 6
+ call PlaceString
+ ld de, wPlayerName
+ ld hl, wPlayerName
+ ld bc, 0
+.asm_e9182
+ ld a, [hli]
+ inc c
+ cp "@"
+ jr nz, .asm_e9182
+ ld a, 8
+ sub c
+ jr nc, .asm_e918e
+ xor a
+.asm_e918e
+ ld c, a
+ coord hl, 2, 4
+ add hl, bc
+ call PlaceString
+ call Func_e926f
+ ld b, 8
+ call RunPaletteCommand
+ ld a, $1
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call Delay3
+ call GBPalNormal
+ ret
+
+Func_e91a9:
+ ld c, SCREEN_WIDTH / 2
+.asm_e91ab
+ ld [hl], $00
+ inc hl
+ ld [hl], $01
+ inc hl
+ dec c
+ jr nz, .asm_e91ab
+ ret
+
+Func_e91b5:
+ ld c, SCREEN_HEIGHT / 2
+ ld de, SCREEN_WIDTH
+.asm_e91ba
+ ld [hl], $02
+ add hl, de
+ ld [hl], $03
+ add hl, de
+ dec c
+ jr nz, .asm_e91ba
+ ret
+Data_e91c4:
+ db $7f, $7f, $10, $11, $12, $13, $14, $15
+ db $0f, $3c, $3d, $3e, $20, $21, $30, $31
+ db $4c, $4d, $4e, $50, $34, $1a, $51, $2d
+
+
+Data_e91dc:
+ db $7f, $7f, $7f, $7f, $7f, $7f, $16, $17, $18, $19, $7f, $1b, $1c, $1d, $1e, $1f
+ db $7f, $7f, $22, $23, $24, $25, $26, $27, $28, $29, $2a, $2b, $2c, $7f, $2e, $2f
+ db $7f, $7f, $32, $33, $33, $35, $36, $37, $38, $39, $3a, $3b, $7f, $7f, $7f, $3f
+ db $40, $41, $42, $43, $44, $45, $46, $47, $48, $49, $4a, $4b, $40, $40, $40, $4f
+ db $52, $52, $52, $53, $54, $55, $56, $57, $58, $59, $5a, $5b, $5c, $5d, $5d, $5e
+ db $7f, $7f, $7f, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $7f, $7f, $7f
+
+
+String_e923c:
+ db "Pikachu's Beach@"
+String_e924b:
+ db "'s Hi-Score@"
+String_e9256:
+ db "Points@"
Func_e925d:
.asm_e925d
@@ -1132,6 +1363,7 @@ Func_e927a:
ret
SurfingPikachu2Graphics: INCBIN "gfx/surfing_pikachu_2.2bpp"
+SurfingPikachu2GraphicsEnd:
Func_e988a:
xor a
@@ -1229,7 +1461,7 @@ Func_e994e:
ld a, [de]
cp $ff
jr z, .asm_e99a6
- ld [$d11d], a
+ ld [wd11e], a
push bc
push hl
push de
diff --git a/gfx/unknown_fd86b.png b/gfx/unknown_fd86b.png
new file mode 100644
index 00000000..20bcf5a7
--- /dev/null
+++ b/gfx/unknown_fd86b.png
Binary files differ
diff --git a/home.asm b/home.asm
index 3d8db84f..6fb3e08b 100644
--- a/home.asm
+++ b/home.asm
@@ -22,7 +22,7 @@ SECTION "vblank", ROM0 [$40]
jp VBlank
SECTION "hblank", ROM0 [$48]
jp LCDC
-SECTION "timer", ROM0 [$50]
+SECTION "timer", ROM0 [$50]
jp Timer
SECTION "serial", ROM0 [$58]
jp Serial
@@ -102,21 +102,21 @@ SECTION "Header", ROM0 [$104]
SECTION "Main", ROM0
PlayPikachuPCM:: ; 0150 (0:0150)
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
- ld a,b
+ ld a, b
call BankswitchCommon
- ld a,[hli]
- ld c,a
- ld a,[hli]
- ld b,a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
.loop
- ld a,[hli]
- ld d,a
- ld a,$3
+ ld a, [hli]
+ ld d, a
+ ld a, $3
.playSingleSample
dec a
- jr nz,.playSingleSample
+ jr nz, .playSingleSample
rept 7
call LoadNextSoundClipSample
@@ -125,27 +125,27 @@ PlayPikachuPCM:: ; 0150 (0:0150)
call LoadNextSoundClipSample
dec bc
- ld a,c
+ ld a, c
or b
- jr nz,.loop
+ jr nz, .loop
pop af
call BankswitchCommon
ret
LoadNextSoundClipSample:: ; 0199 (0:0199)
- ld a,d
+ ld a, d
and $80
srl a
srl a
- ld [rNR32],a
+ ld [rNR32], a
sla d
ret
PlaySoundClipSample:: ; 01a5 (0:01a5)
- ld a,$3
+ ld a, $3
.loop
dec a
- jr nz,.loop
+ jr nz, .loop
ret
Start:: ; 01ab (0:01ab)
@@ -198,24 +198,24 @@ CheckForUserInterruption:: ; 10ba (0:10ba)
; INPUT:
; a = ID of destination warp within destination map
LoadDestinationWarpPosition:: ; 10d5 (0:10d5)
- ld b,a
- ld a,[H_LOADEDROMBANK]
+ ld b, a
+ ld a, [H_LOADEDROMBANK]
push af
- ld a,[wPredefParentBank]
- ld [H_LOADEDROMBANK],a
- ld [MBC1RomBank],a
- ld a,b
+ ld a, [wPredefParentBank]
+ ld [H_LOADEDROMBANK], a
+ ld [MBC1RomBank], a
+ ld a, b
add a
add a
- ld c,a
- ld b,0
- add hl,bc
- ld bc,4
- ld de,wCurrentTileBlockMapViewPointer
+ ld c, a
+ ld b, 0
+ add hl, bc
+ ld bc, 4
+ ld de, wCurrentTileBlockMapViewPointer
call CopyData
pop af
- ld [H_LOADEDROMBANK],a
- ld [MBC1RomBank],a
+ ld [H_LOADEDROMBANK], a
+ ld [MBC1RomBank], a
ret
@@ -239,18 +239,18 @@ DrawHPBar:: ; 10f8 (0:10f8)
; Middle
ld a, $63 ; empty
.draw
- ld [hli],a
+ ld [hli], a
dec d
jr nz, .draw
; Right
- ld a,[wHPBarType]
+ ld a, [wHPBarType]
dec a
ld a, $6d ; status screen and battle
jr z, .ok
dec a ; pokemon menu
.ok
- ld [hl],a
+ ld [hl], a
pop hl
@@ -357,17 +357,17 @@ LoadFrontSpriteByMonIndex:: ; 1149 (0:1149)
PlayCry:: ; 118b (0:118b)
; Play monster a's cry.
push bc
- ld b,a
- ld a,[wLowHealthAlarm]
+ ld b, a
+ ld a, [wLowHealthAlarm]
push af
xor a
- ld [wLowHealthAlarm],a
- ld a,b
+ ld [wLowHealthAlarm], a
+ ld a, b
call GetCryData
call PlaySound
call WaitForSoundToFinish
pop af
- ld [wLowHealthAlarm],a
+ ld [wLowHealthAlarm], a
pop bc
ret
@@ -391,8 +391,8 @@ GetCryData:: ; 11a5 (0:11a5)
ld [wTempoModifier], a
call BankswitchBack
- ; Cry headers have 3 channels,
- ; and start from index $14,
+ ; Cry headers have 3 channels,
+ ; and start from index $14,
; so add 3 times the cry id.
ld a, b
ld c, $14
@@ -402,10 +402,10 @@ GetCryData:: ; 11a5 (0:11a5)
ret
DisplayPartyMenu:: ; 11c8 (0:11c8)
- ld a,[hTilesetType]
+ ld a, [hTilesetType]
push af
xor a
- ld [hTilesetType],a
+ ld [hTilesetType], a
call GBPalWhiteOutWithDelay3
call ClearSprites
call PartyMenuInit
@@ -413,10 +413,10 @@ DisplayPartyMenu:: ; 11c8 (0:11c8)
jp HandlePartyMenuInput
GoBackToPartyMenu:: ; 11dd (0:11dd)
- ld a,[hTilesetType]
+ ld a, [hTilesetType]
push af
xor a
- ld [hTilesetType],a
+ ld [hTilesetType], a
call PartyMenuInit
call RedrawPartyMenu
jp HandlePartyMenuInput
@@ -461,77 +461,77 @@ PartyMenuInit:: ; 11ec (0:11ec)
ret
HandlePartyMenuInput:: ; 1226 (0:1226)
- ld a,1
- ld [wMenuWrappingEnabled],a
- ld a,$40
- ld [wPartyMenuAnimMonEnabled],a
+ ld a, 1
+ ld [wMenuWrappingEnabled], a
+ ld a, $40
+ ld [wPartyMenuAnimMonEnabled], a
call HandleMenuInputPokemonSelection
push af ; save hJoy5 OR wMenuWrapping enabled, if no inputs were selected within a certain period of time
- bit 1,a ; was B button pressed?
- ld a,$0
- ld [wPartyMenuAnimMonEnabled],a
- ld a,[wCurrentMenuItem]
- ld [wPartyAndBillsPCSavedMenuItem],a
- jr nz,.asm_1258
- ld a,[wCurrentMenuItem]
- ld [wWhichPokemon],a
+ bit 1, a ; was B button pressed?
+ ld a, $0
+ ld [wPartyMenuAnimMonEnabled], a
+ ld a, [wCurrentMenuItem]
+ ld [wPartyAndBillsPCSavedMenuItem], a
+ jr nz, .asm_1258
+ ld a, [wCurrentMenuItem]
+ ld [wWhichPokemon], a
callab IsThisPartymonStarterPikachu_Party ; 3f:4e18
- jr nc,.asm_1258
- call Func_154a
- jr nz,.asm_128f
+ jr nc, .asm_1258
+ call CheckPikachuAsleep
+ jr nz, .asm_128f
.asm_1258
pop af
call PlaceUnfilledArrowMenuCursor
- ld b,a
- ld hl,wd730
- res 6,[hl] ; turn on letter printing delay
- ld a,[wMenuItemToSwap]
+ ld b, a
+ ld hl, wd730
+ res 6, [hl] ; turn on letter printing delay
+ ld a, [wMenuItemToSwap]
and a
- jp nz,.swappingPokemon
+ jp nz, .swappingPokemon
pop af ; double pop af?
- ld [hTilesetType],a
- bit 1,b
- jr nz,.noPokemonChosen
- ld a,[wPartyCount]
+ ld [hTilesetType], a
+ bit 1, b
+ jr nz, .noPokemonChosen
+ ld a, [wPartyCount]
and a
- jr z,.noPokemonChosen
- ld a,[wCurrentMenuItem]
- ld [wWhichPokemon],a
- ld hl,wPartySpecies
- ld b,0
- ld c,a
- add hl,bc
- ld a,[hl]
- ld [wcf91],a
- ld [wBattleMonSpecies2],a
+ jr z, .noPokemonChosen
+ ld a, [wCurrentMenuItem]
+ ld [wWhichPokemon], a
+ ld hl, wPartySpecies
+ ld b, 0
+ ld c, a
+ add hl, bc
+ ld a, [hl]
+ ld [wcf91], a
+ ld [wBattleMonSpecies2], a
call BankswitchBack
and a
ret
.asm_128f
pop af
- ld hl,PartyMenuText_12cc
+ ld hl, PartyMenuText_12cc
call PrintText
xor a
- ld [wMenuItemToSwap],a
+ ld [wMenuItemToSwap], a
pop af
- ld [hTilesetType],a
+ ld [hTilesetType], a
.noPokemonChosen
call BankswitchBack
scf
ret
.swappingPokemon
- bit 1,b ; was the B button pressed?
- jr z,.handleSwap ; if not, handle swapping the pokemon
+ bit 1, b ; was the B button pressed?
+ jr z, .handleSwap ; if not, handle swapping the pokemon
.cancelSwap ; if the B button was pressed
callba ErasePartyMenuCursors ; 4:5e98
xor a
- ld [wMenuItemToSwap],a
- ld [wPartyMenuTypeOrMessageID],a
+ ld [wMenuItemToSwap], a
+ ld [wPartyMenuTypeOrMessageID], a
call RedrawPartyMenu
jp HandlePartyMenuInput
.handleSwap
- ld a,[wCurrentMenuItem]
- ld [wWhichPokemon],a
+ ld a, [wCurrentMenuItem]
+ ld [wWhichPokemon], a
callba SwitchPartyMon ; 4:61c5
jp HandlePartyMenuInput
@@ -558,19 +558,19 @@ PrintStatusCondition:: ; 12de (0:12de)
push de
dec de
dec de ; de = address of current HP
- ld a,[de]
- ld b,a
+ ld a, [de]
+ ld b, a
dec de
- ld a,[de]
+ ld a, [de]
or b ; is the pokemon's HP zero?
pop de
- jr nz,PrintStatusConditionNotFainted
+ jr nz, PrintStatusConditionNotFainted
; if the pokemon's HP is 0, print "FNT"
- ld a,"F"
- ld [hli],a
- ld a,"N"
- ld [hli],a
- ld [hl],"T"
+ ld a, "F"
+ ld [hli], a
+ ld a, "N"
+ ld [hli], a
+ ld [hl], "T"
and a
ret
@@ -582,12 +582,12 @@ PrintStatusConditionNotFainted: ; 12f3 (0:12f3)
; hl = destination address
; [wLoadedMonLevel] = level
PrintLevel:: ; 1303 (0:1303)
- ld a,$6e ; ":L" tile ID
- ld [hli],a
- ld c,2 ; number of digits
- ld a,[wLoadedMonLevel] ; level
- cp a,100
- jr c,PrintLevelCommon
+ ld a, $6e ; ":L" tile ID
+ ld [hli], a
+ ld c, 2 ; number of digits
+ ld a, [wLoadedMonLevel] ; level
+ cp a, 100
+ jr c, PrintLevelCommon
; if level at least 100, write over the ":L" tile
dec hl
inc c ; increment number of digits to 3
@@ -598,75 +598,75 @@ PrintLevel:: ; 1303 (0:1303)
; hl = destination address
; [wLoadedMonLevel] = level
PrintLevelFull:: ; 1313 (0:1313)
- ld a,$6e ; ":L" tile ID
- ld [hli],a
- ld c,3 ; number of digits
- ld a,[wLoadedMonLevel] ; level
+ ld a, $6e ; ":L" tile ID
+ ld [hli], a
+ ld c, 3 ; number of digits
+ ld a, [wLoadedMonLevel] ; level
PrintLevelCommon:: ; 131b (0:131b)
- ld [wd11e],a
- ld de,wd11e
- ld b,LEFT_ALIGN | 1 ; 1 byte
+ ld [wd11e], a
+ ld de, wd11e
+ ld b, LEFT_ALIGN | 1 ; 1 byte
jp PrintNumber
GetwMoves:: ; 1326 (0:1326)
; Unused. Returns the move at index a from wMoves in a
- ld hl,wMoves
- ld c,a
- ld b,0
- add hl,bc
- ld a,[hl]
+ ld hl, wMoves
+ ld c, a
+ ld b, 0
+ add hl, bc
+ ld a, [hl]
ret
; copies the base stat data of a pokemon to wMonHeader
; INPUT:
; [wd0b5] = pokemon ID
GetMonHeader:: ; 132f (0:132f)
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
switchbank BaseStats
push bc
push de
push hl
- ld a,[wd11e]
+ ld a, [wd11e]
push af
- ld a,[wd0b5]
- ld [wd11e],a
- ld de,FossilKabutopsPic
- ld b,$66 ; size of Kabutops fossil and Ghost sprites
- cp a,FOSSIL_KABUTOPS ; Kabutops fossil
- jr z,.specialID
- ld de,GhostPic
- cp a,MON_GHOST ; Ghost
- jr z,.specialID
- ld de,FossilAerodactylPic
- ld b,$77 ; size of Aerodactyl fossil sprite
- cp a,FOSSIL_AERODACTYL ; Aerodactyl fossil
- jr z,.specialID
- ;cp a,MEW
- ;jr z,.mew
+ ld a, [wd0b5]
+ ld [wd11e], a
+ ld de, FossilKabutopsPic
+ ld b, $66 ; size of Kabutops fossil and Ghost sprites
+ cp a, FOSSIL_KABUTOPS ; Kabutops fossil
+ jr z, .specialID
+ ld de, GhostPic
+ cp a, MON_GHOST ; Ghost
+ jr z, .specialID
+ ld de, FossilAerodactylPic
+ ld b, $77 ; size of Aerodactyl fossil sprite
+ cp a, FOSSIL_AERODACTYL ; Aerodactyl fossil
+ jr z, .specialID
+ ;cp a, MEW
+ ;jr z, .mew
predef IndexToPokedex ; convert pokemon ID in [wd11e] to pokedex number
- ld a,[wd11e]
+ ld a, [wd11e]
dec a
- ld bc,28
- ld hl,BaseStats
+ ld bc, 28
+ ld hl, BaseStats
call AddNTimes
- ld de,wMonHeader
- ld bc,28
+ ld de, wMonHeader
+ ld bc, 28
call CopyData
jr .done
.specialID
- ld hl,wMonHSpriteDim
- ld [hl],b ; write sprite dimensions
+ ld hl, wMonHSpriteDim
+ ld [hl], b ; write sprite dimensions
inc hl
- ld [hl],e ; write front sprite pointer
+ ld [hl], e ; write front sprite pointer
inc hl
- ld [hl],d
+ ld [hl], d
.done
- ld a,[wd0b5]
- ld [wMonHIndex],a
+ ld a, [wd0b5]
+ ld [wMonHIndex], a
pop af
- ld [wd11e],a
+ ld [wd11e], a
pop hl
pop de
pop bc
@@ -676,17 +676,17 @@ GetMonHeader:: ; 132f (0:132f)
; copy party pokemon's name to wcd6d
GetPartyMonName2:: ; 1394 (0:1394)
- ld a,[wWhichPokemon] ; index within party
- ld hl,wPartyMonNicks
+ ld a, [wWhichPokemon] ; index within party
+ ld hl, wPartyMonNicks
; this is called more often
GetPartyMonName:: ; 139a (0:139a)
push hl
push bc
call SkipFixedLengthTextEntries ; add NAME_LENGTH to hl, a times
- ld de,wcd6d
+ ld de, wcd6d
push de
- ld bc,NAME_LENGTH
+ ld bc, NAME_LENGTH
call CopyData
pop de
pop bc
@@ -707,38 +707,38 @@ GetPartyMonName:: ; 139a (0:139a)
; Note that bits 5 and 7 are modified during execution. The above reflects
; their meaning at the beginning of the functions's execution.
PrintBCDNumber:: ; 13ad (0:13ad)
- ld b,c ; save flags in b
- res 7,c
- res 6,c
- res 5,c ; c now holds the length
- bit 5,b
- jr z,.loop
- bit 7,b
- jr nz,.loop
+ ld b, c ; save flags in b
+ res 7, c
+ res 6, c
+ res 5, c ; c now holds the length
+ bit 5, b
+ jr z, .loop
+ bit 7, b
+ jr nz, .loop
ld [hl], "¥"
inc hl
.loop
- ld a,[de]
+ ld a, [de]
swap a
call PrintBCDDigit ; print upper digit
- ld a,[de]
+ ld a, [de]
call PrintBCDDigit ; print lower digit
inc de
dec c
- jr nz,.loop
- bit 7,b ; were any non-zero digits printed?
- jr z,.done ; if so, we are done
+ jr nz, .loop
+ bit 7, b ; were any non-zero digits printed?
+ jr z, .done ; if so, we are done
.numberEqualsZero ; if every digit of the BCD number is zero
- bit 6,b ; left or right alignment?
- jr nz,.skipRightAlignmentAdjustment
+ bit 6, b ; left or right alignment?
+ jr nz, .skipRightAlignmentAdjustment
dec hl ; if the string is right-aligned, it needs to be moved back one space
.skipRightAlignmentAdjustment
- bit 5,b
- jr z,.skipCurrencySymbol
+ bit 5, b
+ jr z, .skipCurrencySymbol
ld [hl], "¥"
inc hl
.skipCurrencySymbol
- ld [hl],"0"
+ ld [hl], "0"
call PrintLetterDelay
inc hl
.done
@@ -747,26 +747,26 @@ PrintBCDNumber:: ; 13ad (0:13ad)
PrintBCDDigit:: ; 13e4 (0:13e4)
and $f
and a
- jr z,.zeroDigit
+ jr z, .zeroDigit
.nonzeroDigit
- bit 7,b ; have any non-space characters been printed?
- jr z,.outputDigit
+ bit 7, b ; have any non-space characters been printed?
+ jr z, .outputDigit
; if bit 7 is set, then no numbers have been printed yet
- bit 5,b ; print the currency symbol?
- jr z,.skipCurrencySymbol
+ bit 5, b ; print the currency symbol?
+ jr z, .skipCurrencySymbol
ld [hl], "¥"
inc hl
- res 5,b
+ res 5, b
.skipCurrencySymbol
- res 7,b ; unset 7 to indicate that a nonzero digit has been reached
+ res 7, b ; unset 7 to indicate that a nonzero digit has been reached
.outputDigit
- add a,"0"
- ld [hli],a
+ add a, "0"
+ ld [hli], a
jp PrintLetterDelay
.zeroDigit
- bit 7,b ; either printing leading zeroes or already reached a nonzero digit?
- jr z,.outputDigit ; if so, print a zero digit
- bit 6,b ; left or right alignment?
+ bit 7, b ; either printing leading zeroes or already reached a nonzero digit?
+ jr z, .outputDigit ; if so, print a zero digit
+ bit 6, b ; left or right alignment?
ret nz
inc hl ; if right-aligned, "print" a space by advancing the pointer
ret
@@ -775,12 +775,12 @@ PrintBCDDigit:: ; 13e4 (0:13e4)
; assumes the corresponding mon header is already loaded
; hl contains offset to sprite pointer ($b for front or $d for back)
UncompressMonSprite:: ; 1407 (0:1407)
- ld bc,wMonHeader
- add hl,bc
- ld a,[hli]
- ld [W_SPRITEINPUTPTR],a ; fetch sprite input pointer
- ld a,[hl]
- ld [W_SPRITEINPUTPTR+1],a
+ ld bc, wMonHeader
+ add hl, bc
+ ld a, [hli]
+ ld [W_SPRITEINPUTPTR], a ; fetch sprite input pointer
+ ld a, [hl]
+ ld [W_SPRITEINPUTPTR+1], a
; define (by index number) the bank that a pokemon's image is in
; index = Mew, bank 1
; index = Kabutops fossil, bank $B
@@ -788,33 +788,33 @@ UncompressMonSprite:: ; 1407 (0:1407)
; $1F ≤ index < $4A, bank $A
; $4A ≤ index < $74, bank $B
; $74 ≤ index < $99, bank $C
-; $99 ≤ index, bank $D
- ld a,[wcf91] ; XXX name for this ram location
- ld b,a
+; $99 ≤ index, bank $D
+ ld a, [wcf91] ; XXX name for this ram location
+ ld b, a
;cp MEW
- ;ld a,BANK(MewPicFront)
- ;jr z,.GotBank
- ;ld a,b
+ ;ld a, BANK(MewPicFront)
+ ;jr z, .GotBank
+ ;ld a, b
cp FOSSIL_KABUTOPS
- ld a,BANK(FossilKabutopsPic)
- jr z,.GotBank
- ld a,b
+ ld a, BANK(FossilKabutopsPic)
+ jr z, .GotBank
+ ld a, b
cp TANGELA + 1
- ld a,BANK(TangelaPicFront)
- jr c,.GotBank
- ld a,b
+ ld a, BANK(TangelaPicFront)
+ jr c, .GotBank
+ ld a, b
cp MOLTRES + 1
- ld a,BANK(MoltresPicFront)
- jr c,.GotBank
- ld a,b
+ ld a, BANK(MoltresPicFront)
+ jr c, .GotBank
+ ld a, b
cp BEEDRILL + 2
- ld a,BANK(BeedrillPicFront)
- jr c,.GotBank
- ld a,b
+ ld a, BANK(BeedrillPicFront)
+ jr c, .GotBank
+ ld a, b
cp STARMIE + 1
- ld a,BANK(StarmiePicFront)
- jr c,.GotBank
- ld a,BANK(VictreebelPicFront)
+ ld a, BANK(StarmiePicFront)
+ jr c, .GotBank
+ ld a, BANK(VictreebelPicFront)
.GotBank
jp UncompressSpriteData ; 23f8
@@ -832,7 +832,7 @@ LoadMonFrontSprite:: ; 143e (0:143e)
; postprocesses uncompressed sprite chunks to a 2bpp sprite and loads it into video ram
; calculates alignment parameters to place both sprite chunks in the center of the 7*7 tile sprite buffers
; de: destination location
-; a,c: sprite dimensions (in tiles of 8x8 each)
+; a, c: sprite dimensions (in tiles of 8x8 each)
LoadUncompressedSpriteData:: ; 1672 (0:1672)
push de
and $f
@@ -865,7 +865,7 @@ LoadUncompressedSpriteData:: ; 1672 (0:1672)
add a
add a ; 8*(7*((8-w)/2) + 7-h) ; combined overall offset (in bytes)
ld [H_SPRITEOFFSET], a
- ld a,$0
+ ld a, $0
call SwitchSRAMBankAndLatchClockData
ld hl, S_SPRITEBUFFER0
call ZeroSpriteBuffer ; zero buffer 0
@@ -924,7 +924,7 @@ ZeroSpriteBuffer:: ; 14bc (0:14bc)
; in the resulting sprite, the rows of the two source sprites are interlaced
; de: output address
InterlaceMergeSpriteBuffers:: ; 14c7 (0:14c7)
- ld a,$0
+ ld a, $0
call SwitchSRAMBankAndLatchClockData
push de
ld hl, S_SPRITEBUFFER2 + (SPRITEBUFFERSIZE - 1) ; destination: end of buffer 2
@@ -970,120 +970,7 @@ InterlaceMergeSpriteBuffers:: ; 14c7 (0:14c7)
call CopyVideoData
jp PrepareRTCDataAndDisableSRAM
-Func_1510:: ; 1510 (0:1510)
- push hl
- ld hl,wd430
- set 7,[hl]
- ld hl,wSpriteStateData1 + $f2 ; pikachu data?
- ld [hl],$ff
- pop hl
- ret
-
-Func_151d:: ; 151d (0:151d)
- push hl
- ld hl,wd430
- res 7,[hl]
- pop hl
- ret
-
-Func_1525:: ; 1525 (0:1525)
- push hl
- ld hl,wd430
- res 3,[hl]
- pop hl
- ret
-
-Func_152d:: ; 152d (0:152d)
- push hl
- ld hl,wd430
- set 3,[hl]
- ld hl,wSpriteStateData1 + $f2 ; pikachu data?
- ld [hl],$ff
- pop hl
- ret
-
-Func_153a:: ; 153a (0:153a)
- push hl
- ld hl,wd430
- set 1,[hl]
- pop hl
- ret
-
-Func_1542:: ; 1542 (0:1542)
- push hl
- ld hl,wd430
- res 1,[hl]
- pop hl
- ret
-
-Func_154a:: ; 154a (0:154a)
- push hl
- ld hl,wd430
- bit 1,[hl]
- pop hl
- ret
-
-Func_1552:: ; 1552 (0:1552)
- ld a,[hl]
- dec a
- swap a
- ld [$ff93],a
- homecall Func_fc6d5 ; 3f:46d5
- ret
-
-Func_1568:: ; 1568 (0:1568)
- ld b,$0
- ld c,a
-.asm_156b
- inc b
- ld a,[hli]
- cp $ff
- jr z,.asm_1578
- cp c
- jr nz,.asm_156b
- dec b
- dec hl
- scf
- ret
-.asm_1578
- dec b
- dec hl
- and a
- ret
-
-Func_157c:: ; 157c (0:157c)
- push hl
- push bc
- ld a,[H_LOADEDROMBANK]
- push af
- ld a,[wd44a]
- call BankswitchCommon
- ld hl,wd44b
- ld c,[hl]
- inc hl
- ld b,[hl]
- ld a,[bc]
- inc bc
- ld [hl],b
- dec hl
- ld [hl],c
- ld c,a
- pop af
- call BankswitchCommon
- ld a,c
- pop bc
- pop hl
- ret
-
-Func_159b:: ; 159b (0:159b)
- ld a,[H_LOADEDROMBANK]
- ld b,a
- push af
- callbs Func_fd2a1
- pop af
- call BankswitchCommon
- ret
-
+INCLUDE "home/pikachu.asm"
;INCLUDE "data/collision.asm"
INCLUDE "home/lcdc.asm"
@@ -1112,11 +999,11 @@ UpdateSprites:: ; 231c (0:231c)
ld a, [H_LOADEDROMBANK]
push af
switchbank _UpdateSprites
- ld a,$ff
- ld [wUpdateSpritesEnabled],a
+ ld a, $ff
+ ld [wUpdateSpritesEnabled], a
call _UpdateSprites ; 1:4bb7
- ld a,$1
- ld [wUpdateSpritesEnabled],a
+ ld a, $1
+ ld [wUpdateSpritesEnabled], a
pop af
call BankswitchCommon
ret
@@ -1126,7 +1013,7 @@ INCLUDE "data/mart_inventories.asm"
TextScriptEndingChar:: ; 23d1 (0:23d1)
db "@"
TextScriptEnd:: ; 23d2 (0:23d2)
- ld hl,TextScriptEndingChar
+ ld hl, TextScriptEndingChar
ret
ExclamationText:: ; 23d6 (0:23d6)
@@ -1235,43 +1122,43 @@ UnknownText_2812:: ; 2812 (0:2812)
; this function is used to display sign messages, sprite dialog, etc.
; INPUT: [hSpriteIndexOrTextID] = sprite ID or text ID
DisplayTextID:: ; 2817 (0:2817)
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
callba DisplayTextIDInit ; initialization
- ld hl,wTextPredefFlag
- bit 0,[hl]
- res 0,[hl]
- jr nz,.skipSwitchToMapBank
- ld a,[wCurMap]
+ ld hl, wTextPredefFlag
+ bit 0, [hl]
+ res 0, [hl]
+ jr nz, .skipSwitchToMapBank
+ ld a, [wCurMap]
call SwitchToMapRomBank
.skipSwitchToMapBank
- ld a,30 ; half a second
- ld [H_FRAMECOUNTER],a ; used as joypad poll timer
- ld hl,wMapTextPtr
- ld a,[hli]
- ld h,[hl]
- ld l,a ; hl = map text pointer
- ld d,$00
- ld a,[hSpriteIndexOrTextID] ; text ID
- ld [wSpriteIndex],a
+ ld a, 30 ; half a second
+ ld [H_FRAMECOUNTER], a ; used as joypad poll timer
+ ld hl, wMapTextPtr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a ; hl = map text pointer
+ ld d, $00
+ ld a, [hSpriteIndexOrTextID] ; text ID
+ ld [wSpriteIndex], a
and a
- jp z,DisplayStartMenu
- cp a,$d4 ; new yellow asm
- jp z,DisplayUnknownText_29c6
- cp a,TEXT_SAFARI_GAME_OVER
- jp z,DisplaySafariGameOverText
- cp a,TEXT_MON_FAINTED
- jp z,DisplayPokemonFaintedText
- cp a,TEXT_BLACKED_OUT
- jp z,DisplayPlayerBlackedOutText
- cp a,TEXT_REPEL_WORE_OFF
- jp z,DisplayRepelWoreOffText
- ld a,[wNumSprites]
- ld e,a
- ld a,[hSpriteIndexOrTextID] ; sprite ID
+ jp z, DisplayStartMenu
+ cp a, $d4 ; new yellow asm
+ jp z, DisplayUnknownText_29c6
+ cp a, TEXT_SAFARI_GAME_OVER
+ jp z, DisplaySafariGameOverText
+ cp a, TEXT_MON_FAINTED
+ jp z, DisplayPokemonFaintedText
+ cp a, TEXT_BLACKED_OUT
+ jp z, DisplayPlayerBlackedOutText
+ cp a, TEXT_REPEL_WORE_OFF
+ jp z, DisplayRepelWoreOffText
+ ld a, [wNumSprites]
+ ld e, a
+ ld a, [hSpriteIndexOrTextID] ; sprite ID
cp e
- jr z,.spriteHandling
- jr nc,.skipSpriteHandling
+ jr z, .spriteHandling
+ jr nc, .skipSpriteHandling
.spriteHandling
; get the text ID of the sprite
push hl
@@ -1280,95 +1167,95 @@ DisplayTextID:: ; 2817 (0:2817)
;callba UpdateSpriteFacingOffsetAndDelayMovement ; update the graphics of the sprite the player is talking to (to face the right direction)
;pop bc
;pop de
- ld hl,wMapSpriteData ; NPC text entries
- ld a,[hSpriteIndexOrTextID]
+ ld hl, wMapSpriteData ; NPC text entries
+ ld a, [hSpriteIndexOrTextID]
dec a
add a
- ld e,a
- ld d,$0
- add hl,de
+ ld e, a
+ ld d, $0
+ add hl, de
inc hl
- ld a,[hl] ; a = text ID of the sprite
+ ld a, [hl] ; a = text ID of the sprite
pop hl
.skipSpriteHandling
; look up the address of the text in the map's text entries
dec a
- ld e,a
- ld d,$0
- add hl,de
- add hl,de
- ld a,[hli]
- ld h,[hl]
- ld l,a ; hl = address of the text
- ld a,[hl] ; a = first byte of text
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a ; hl = address of the text
+ ld a, [hl] ; a = first byte of text
; check first byte of text for special cases
- cp a,$fe ; Pokemart NPC
- jp z,DisplayPokemartDialogue
- cp a,$ff ; Pokemon Center NPC
- jp z,DisplayPokemonCenterDialogue
- cp a,$fc ; Item Storage PC
- jp z,FuncTX_ItemStoragePC
- cp a,$fd ; Bill's PC
- jp z,FuncTX_BillsPC
- cp a,$f9 ; Pokemon Center PC
- jp z,FuncTX_PokemonCenterPC
- cp a,$f5 ; Vending Machine
- jr nz,.notVendingMachine
+ cp a, $fe ; Pokemart NPC
+ jp z, DisplayPokemartDialogue
+ cp a, $ff ; Pokemon Center NPC
+ jp z, DisplayPokemonCenterDialogue
+ cp a, $fc ; Item Storage PC
+ jp z, FuncTX_ItemStoragePC
+ cp a, $fd ; Bill's PC
+ jp z, FuncTX_BillsPC
+ cp a, $f9 ; Pokemon Center PC
+ jp z, FuncTX_PokemonCenterPC
+ cp a, $f5 ; Vending Machine
+ jr nz, .notVendingMachine
callba VendingMachineMenu ; jump banks to vending machine routine
jr AfterDisplayingTextID
.notVendingMachine
- cp a,$f7 ; slot machine
- jp z,FuncTX_SlotMachine
- cp a,$f6 ; cable connection NPC in Pokemon Center
- jr nz,.notSpecialCase
+ cp a, $f7 ; slot machine
+ jp z, FuncTX_SlotMachine
+ cp a, $f6 ; cable connection NPC in Pokemon Center
+ jr nz, .notSpecialCase
callab CableClubNPC
jr AfterDisplayingTextID
.notSpecialCase
call PrintText_NoCreatingTextBox ; display the text
- ld a,[wDoNotWaitForButtonPressAfterDisplayingText]
+ ld a, [wDoNotWaitForButtonPressAfterDisplayingText]
and a
- jr nz,HoldTextDisplayOpen
+ jr nz, HoldTextDisplayOpen
AfterDisplayingTextID:: ; 28c6 (0:28c6)
- ld a,[wEnteringCableClub]
+ ld a, [wEnteringCableClub]
and a
- jr nz,HoldTextDisplayOpen
+ jr nz, HoldTextDisplayOpen
call WaitForTextScrollButtonPress ; wait for a button press after displaying all the text
; loop to hold the dialogue box open as long as the player keeps holding down the A button
HoldTextDisplayOpen:: ; 28cf (0:28cf)
call Joypad
- ld a,[hJoyHeld]
- bit 0,a ; is the A button being pressed?
- jr nz,HoldTextDisplayOpen
+ ld a, [hJoyHeld]
+ bit 0, a ; is the A button being pressed?
+ jr nz, HoldTextDisplayOpen
CloseTextDisplay:: ; 28d8 (0:28d8)
- ld a,[wCurMap]
+ ld a, [wCurMap]
call SwitchToMapRomBank
- ld a,$90
- ld [hWY],a ; move the window off the screen
+ ld a, $90
+ ld [hWY], a ; move the window off the screen
call DelayFrame
call LoadGBPal
xor a
- ld [H_AUTOBGTRANSFERENABLED],a ; disable continuous WRAM to VRAM transfer each V-blank
+ ld [H_AUTOBGTRANSFERENABLED], a ; disable continuous WRAM to VRAM transfer each V-blank
; loop to make sprites face the directions they originally faced before the dialogue
- ld hl,wSpriteStateData2 + $19
- ld c,$0f
- ld de,$0010
+ ld hl, wSpriteStateData2 + $19
+ ld c, $0f
+ ld de, $0010
.restoreSpriteFacingDirectionLoop
- ld a,[hl]
+ ld a, [hl]
dec h
- ld [hl],a
+ ld [hl], a
inc h
- add hl,de
+ add hl, de
dec c
- jr nz,.restoreSpriteFacingDirectionLoop
+ jr nz, .restoreSpriteFacingDirectionLoop
call InitMapSprites ; reload sprite tile pattern data (since it was partially overwritten by text tile patterns)
- ld hl,wFontLoaded
- res 0,[hl]
- ld a,[wd732]
- bit 3,a ; used fly warp
- call z,LoadPlayerSpriteGraphics
+ ld hl, wFontLoaded
+ res 0, [hl]
+ ld a, [wd732]
+ bit 3, a ; used fly warp
+ call z, LoadPlayerSpriteGraphics
call LoadCurrentMapView
pop af
call BankswitchCommon
@@ -1376,13 +1263,13 @@ CloseTextDisplay:: ; 28d8 (0:28d8)
DisplayPokemartDialogue:: ; 2915 (0:2915)
push hl
- ld hl,PokemartGreetingText
+ ld hl, PokemartGreetingText
call PrintText
pop hl
inc hl
call LoadItemList
- ld a,PRICEDITEMLISTMENU
- ld [wListMenuID],a ; selects between subtypes of menus
+ ld a, PRICEDITEMLISTMENU
+ ld [wListMenuID], a ; selects between subtypes of menus
homecall DisplayPokemartDialogue_
jp AfterDisplayingTextID
@@ -1391,27 +1278,27 @@ PokemartGreetingText:: ; 2938 (0:2938)
db "@"
LoadItemList:: ; 293d (0:293d)
- ld a,1
- ld [wUpdateSpritesEnabled],a
- ld a,h
- ld [wItemListPointer],a
- ld a,l
- ld [wItemListPointer + 1],a
- ld de,wItemList
+ ld a, 1
+ ld [wUpdateSpritesEnabled], a
+ ld a, h
+ ld [wItemListPointer], a
+ ld a, l
+ ld [wItemListPointer + 1], a
+ ld de, wItemList
.loop
- ld a,[hli]
- ld [de],a
+ ld a, [hli]
+ ld [de], a
inc de
- cp a,$ff
- jr nz,.loop
+ cp a, $ff
+ jr nz, .loop
ret
DisplayPokemonCenterDialogue:: ; 2955 (0:2955)
; zeroing these doesn't appear to serve any purpose
xor a
- ld [$ff8b],a
- ld [$ff8c],a
- ld [$ff8d],a
+ ld [$ff8b], a
+ ld [$ff8c], a
+ ld [$ff8d], a
inc hl
homecall DisplayPokemonCenterDialogue_
@@ -1422,7 +1309,7 @@ DisplaySafariGameOverText:: ; 296f (0:296f)
jp AfterDisplayingTextID
DisplayPokemonFaintedText:: ; 297a (0:297a)
- ld hl,PokemonFaintedText
+ ld hl, PokemonFaintedText
call PrintText
jp AfterDisplayingTextID
@@ -1431,21 +1318,21 @@ PokemonFaintedText:: ; 2983 (0:2983)
db "@"
DisplayPlayerBlackedOutText:: ; 2988 (0:2988)
- ld hl,PlayerBlackedOutText
+ ld hl, PlayerBlackedOutText
call PrintText
- ld a,[wd732]
- res 5,a ; reset forced to use bike bit
- ld [wd732],a
- ld a,[wd790]
- bit 7,a
- jr z,.didnotblackoutinsafari
+ ld a, [wd732]
+ res 5, a ; reset forced to use bike bit
+ ld [wd732], a
+ ld a, [wd790]
+ bit 7, a
+ jr z, .didnotblackoutinsafari
xor a
- ld [wNumSafariBalls],a
- ld [wSafariSteps],a
- ld [wSafariSteps+1],a
- ld [wd790],a
- ld [wcf0d],a
- ld [wSafariZoneEntranceCurScript],a
+ ld [wNumSafariBalls], a
+ ld [wSafariSteps], a
+ ld [wSafariSteps+1], a
+ ld [wd790], a
+ ld [wcf0d], a
+ ld [wSafariZoneEntranceCurScript], a
.didnotblackoutinsafari
jp HoldTextDisplayOpen
@@ -1454,7 +1341,7 @@ PlayerBlackedOutText:: ; 29b3 (0:29b3)
db "@"
DisplayRepelWoreOffText:: ; 29b8 (0:29b8)
- ld hl,RepelWoreOffText
+ ld hl, RepelWoreOffText
call PrintText
jp AfterDisplayingTextID
@@ -1475,22 +1362,22 @@ INCLUDE "engine/menu/start_menu.asm"
; OUTPUT:
; [wNumSetBits] = number of set bits
CountSetBits:: ; 2a81 (0:2a81)
- ld c,0
+ ld c, 0
.loop
- ld a,[hli]
- ld e,a
- ld d,8
+ ld a, [hli]
+ ld e, a
+ ld d, 8
.innerLoop ; count how many bits are set in the current byte
srl e
- ld a,0
+ ld a, 0
adc c
- ld c,a
+ ld c, a
dec d
- jr nz,.innerLoop
+ jr nz, .innerLoop
dec b
- jr nz,.loop
- ld a,c
- ld [wNumSetBits],a
+ jr nz, .loop
+ ld a, c
+ ld [wNumSetBits], a
ret
; subtracts the amount the player paid from their money
@@ -1500,12 +1387,12 @@ SubtractAmountPaidFromMoney:: ; 2a98 (0:2a98)
; adds the amount the player sold to their money
AddAmountSoldToMoney:: ; 2aa0 (0:2aa0)
- ld de,wPlayerMoney + 2
- ld hl,$ffa1 ; total price of items
- ld c,3 ; length of money in bytes
+ ld de, wPlayerMoney + 2
+ ld hl, $ffa1 ; total price of items
+ ld c, 3 ; length of money in bytes
predef AddBCDPredef ; add total price to money
- ld a,MONEY_BOX
- ld [wTextBoxID],a
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
call DisplayTextBoxID ; redraw money text box
ld a, $b2 ; SFX_PURCHASE
call PlaySoundWaitForCurrent ; play sound
@@ -1537,80 +1424,80 @@ AddItemToInventory:: ; 2acd (0:2acd)
; [wListPointer] = address of the list (2 bytes)
DisplayListMenuID:: ; 2ae0 (0:2ae0)
xor a
- ld [H_AUTOBGTRANSFERENABLED],a ; disable auto-transfer
- ld a,1
- ld [hJoy7],a ; joypad state update flag
- ld a,[wBattleType]
+ ld [H_AUTOBGTRANSFERENABLED], a ; disable auto-transfer
+ ld a, 1
+ ld [hJoy7], a ; joypad state update flag
+ ld a, [wBattleType]
and a ; is it the Old Man battle?
- jr nz,.specialBattleType
- ld a,$01 ; hardcoded bank
+ jr nz, .specialBattleType
+ ld a, $01 ; hardcoded bank
jr .bankswitch
.specialBattleType ; Old Man battle
ld a, $f ; BANK(DisplayBattleMenu)
.bankswitch
call BankswitchHome
- ld hl,wd730
- set 6,[hl] ; turn off letter printing delay
+ ld hl, wd730
+ set 6, [hl] ; turn off letter printing delay
xor a
- ld [wMenuItemToSwap],a ; 0 means no item is currently being swapped
- ld [wListCount],a
- ld a,[wListPointer]
- ld l,a
- ld a,[wListPointer + 1]
- ld h,a ; hl = address of the list
- ld a,[hl] ; the first byte is the number of entries in the list
- ld [wListCount],a
- ld a,LIST_MENU_BOX
- ld [wTextBoxID],a
+ ld [wMenuItemToSwap], a ; 0 means no item is currently being swapped
+ ld [wListCount], a
+ ld a, [wListPointer]
+ ld l, a
+ ld a, [wListPointer + 1]
+ ld h, a ; hl = address of the list
+ ld a, [hl] ; the first byte is the number of entries in the list
+ ld [wListCount], a
+ ld a, LIST_MENU_BOX
+ ld [wTextBoxID], a
call DisplayTextBoxID ; draw the menu text box
call UpdateSprites ; disable sprites behind the text box
; the code up to .skipMovingSprites appears to be useless
coord hl, 4, 2 ; coordinates of upper left corner of menu text box
lb de, 9, 14 ; height and width of menu text box
- ld a,[wListMenuID]
+ ld a, [wListMenuID]
and a ; is it a PC pokemon list?
- jr nz,.skipMovingSprites
+ jr nz, .skipMovingSprites
call UpdateSprites
.skipMovingSprites
- ld a,1 ; max menu item ID is 1 if the list has less than 2 entries
- ld [wMenuWatchMovingOutOfBounds],a
- ld a,[wListCount]
- cp a,2 ; does the list have less than 2 entries?
- jr c,.setMenuVariables
- ld a,2 ; max menu item ID is 2 if the list has at least 2 entries
+ ld a, 1 ; max menu item ID is 1 if the list has less than 2 entries
+ ld [wMenuWatchMovingOutOfBounds], a
+ ld a, [wListCount]
+ cp a, 2 ; does the list have less than 2 entries?
+ jr c, .setMenuVariables
+ ld a, 2 ; max menu item ID is 2 if the list has at least 2 entries
.setMenuVariables
- ld [wMaxMenuItem],a
- ld a,4
- ld [wTopMenuItemY],a
- ld a,5
- ld [wTopMenuItemX],a
- ld a,A_BUTTON | B_BUTTON | SELECT
- ld [wMenuWatchedKeys],a
- ld c,10
+ ld [wMaxMenuItem], a
+ ld a, 4
+ ld [wTopMenuItemY], a
+ ld a, 5
+ ld [wTopMenuItemX], a
+ ld a, A_BUTTON | B_BUTTON | SELECT
+ ld [wMenuWatchedKeys], a
+ ld c, 10
call DelayFrames
DisplayListMenuIDLoop:: ; 2b4d (0:2b4d)
xor a
- ld [H_AUTOBGTRANSFERENABLED],a ; disable transfer
+ ld [H_AUTOBGTRANSFERENABLED], a ; disable transfer
call PrintListMenuEntries
- ld a,1
- ld [H_AUTOBGTRANSFERENABLED],a ; enable transfer
+ ld a, 1
+ ld [H_AUTOBGTRANSFERENABLED], a ; enable transfer
call Delay3
- ld a,[wBattleType]
+ ld a, [wBattleType]
and a ; is it the Old Man battle?
- jr z,.notOldManBattle
+ jr z, .notOldManBattle
.oldManBattle
- ld a,"▶"
+ ld a, "▶"
Coorda 5, 4 ; place menu cursor in front of first menu entry
- ld c,20
+ ld c, 20
call DelayFrames
xor a
- ld [wCurrentMenuItem],a
+ ld [wCurrentMenuItem], a
coord hl, 5, 4
- ld a,l
- ld [wMenuCursorLocation],a
- ld a,h
- ld [wMenuCursorLocation + 1],a
+ ld a, l
+ ld [wMenuCursorLocation], a
+ ld a, h
+ ld [wMenuCursorLocation + 1], a
jr .buttonAPressed
.notOldManBattle
call LoadGBPal
@@ -1618,111 +1505,111 @@ DisplayListMenuIDLoop:: ; 2b4d (0:2b4d)
push af
call PlaceMenuCursor
pop af
- bit 0,a ; was the A button pressed?
- jp z,.checkOtherKeys
+ bit 0, a ; was the A button pressed?
+ jp z, .checkOtherKeys
.buttonAPressed
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
call PlaceUnfilledArrowMenuCursor
; pointless because both values are overwritten before they are read
- ld a,$01
- ld [wMenuExitMethod],a
- ld [wChosenMenuItem],a
+ ld a, $01
+ ld [wMenuExitMethod], a
+ ld [wChosenMenuItem], a
xor a
- ld [wMenuWatchMovingOutOfBounds],a
- ld a,[wCurrentMenuItem]
- ld c,a
- ld a,[wListScrollOffset]
+ ld [wMenuWatchMovingOutOfBounds], a
+ ld a, [wCurrentMenuItem]
+ ld c, a
+ ld a, [wListScrollOffset]
add c
- ld c,a
- ld a,[wListCount]
+ ld c, a
+ ld a, [wListCount]
and a ; is the list empty?
- jp z,ExitListMenu ; if so, exit the menu
+ jp z, ExitListMenu ; if so, exit the menu
dec a
cp c ; did the player select Cancel?
- jp c,ExitListMenu ; if so, exit the menu
- ld a,c
- ld [wWhichPokemon],a
- ld a,[wListMenuID]
- cp a,ITEMLISTMENU
- jr nz,.skipMultiplying
+ jp c, ExitListMenu ; if so, exit the menu
+ ld a, c
+ ld [wWhichPokemon], a
+ ld a, [wListMenuID]
+ cp a, ITEMLISTMENU
+ jr nz, .skipMultiplying
; if it's an item menu
sla c ; item entries are 2 bytes long, so multiply by 2
.skipMultiplying
- ld a,[wListPointer]
- ld l,a
- ld a,[wListPointer + 1]
- ld h,a
+ ld a, [wListPointer]
+ ld l, a
+ ld a, [wListPointer + 1]
+ ld h, a
inc hl ; hl = beginning of list entries
- ld b,0
- add hl,bc
- ld a,[hl]
- ld [wcf91],a
- ld a,[wListMenuID]
+ ld b, 0
+ add hl, bc
+ ld a, [hl]
+ ld [wcf91], a
+ ld a, [wListMenuID]
and a ; is it a PC pokemon list?
- jr z,.pokemonList
+ jr z, .pokemonList
push hl
call GetItemPrice
pop hl
- ld a,[wListMenuID]
- cp a,ITEMLISTMENU
- jr nz,.skipGettingQuantity
+ ld a, [wListMenuID]
+ cp a, ITEMLISTMENU
+ jr nz, .skipGettingQuantity
; if it's an item menu
inc hl
- ld a,[hl] ; a = item quantity
- ld [wMaxItemQuantity],a
+ ld a, [hl] ; a = item quantity
+ ld [wMaxItemQuantity], a
.skipGettingQuantity
- ld a,[wcf91]
- ld [wd0b5],a
- ld a,BANK(ItemNames)
- ld [wPredefBank],a
+ ld a, [wcf91]
+ ld [wd0b5], a
+ ld a, BANK(ItemNames)
+ ld [wPredefBank], a
call GetName
jr .storeChosenEntry
.pokemonList
- ld hl,wPartyCount
- ld a,[wListPointer]
+ ld hl, wPartyCount
+ ld a, [wListPointer]
cp l ; is it a list of party pokemon or box pokemon?
- ld hl,wPartyMonNicks
- jr z,.getPokemonName
+ ld hl, wPartyMonNicks
+ jr z, .getPokemonName
ld hl, wBoxMonNicks ; box pokemon names
.getPokemonName
- ld a,[wWhichPokemon]
+ ld a, [wWhichPokemon]
call GetPartyMonName
.storeChosenEntry ; store the menu entry that the player chose and return
- ld de,wcd6d
+ ld de, wcd6d
call CopyStringToCF4B ; copy name to wcf4b
- ld a,CHOSE_MENU_ITEM
- ld [wMenuExitMethod],a
- ld a,[wCurrentMenuItem]
- ld [wChosenMenuItem],a
+ ld a, CHOSE_MENU_ITEM
+ ld [wMenuExitMethod], a
+ ld a, [wCurrentMenuItem]
+ ld [wChosenMenuItem], a
xor a
- ld [hJoy7],a ; joypad state update flag
- ld hl,wd730
- res 6,[hl] ; turn on letter printing delay
+ ld [hJoy7], a ; joypad state update flag
+ ld hl, wd730
+ res 6, [hl] ; turn on letter printing delay
jp BankswitchBack
.checkOtherKeys ; check B, SELECT, Up, and Down keys
- bit 1,a ; was the B button pressed?
- jp nz,ExitListMenu ; if so, exit the menu
- bit 2,a ; was the select button pressed?
- jp nz,HandleItemListSwapping ; if so, allow the player to swap menu entries
- ld b,a
- bit 7,b ; was Down pressed?
- ld hl,wListScrollOffset
- jr z,.upPressed
+ bit 1, a ; was the B button pressed?
+ jp nz, ExitListMenu ; if so, exit the menu
+ bit 2, a ; was the select button pressed?
+ jp nz, HandleItemListSwapping ; if so, allow the player to swap menu entries
+ ld b, a
+ bit 7, b ; was Down pressed?
+ ld hl, wListScrollOffset
+ jr z, .upPressed
.downPressed
- ld a,[hl]
- add a,3
- ld b,a
- ld a,[wListCount]
+ ld a, [hl]
+ add a, 3
+ ld b, a
+ ld a, [wListCount]
cp b ; will going down scroll past the Cancel button?
- jp c,DisplayListMenuIDLoop
+ jp c, DisplayListMenuIDLoop
inc [hl] ; if not, go down
jp DisplayListMenuIDLoop
.upPressed
- ld a,[hl]
+ ld a, [hl]
and a
- jp z,DisplayListMenuIDLoop
+ jp z, DisplayListMenuIDLoop
dec [hl]
jp DisplayListMenuIDLoop
@@ -1730,117 +1617,117 @@ DisplayChooseQuantityMenu:: ; 2c51 (0:2c51)
; text box dimensions/coordinates for just quantity
coord hl, 15, 9
lb bc, 1, 3 ; height and width
- ld a,[wListMenuID]
- cp a,PRICEDITEMLISTMENU
- jr nz,.drawTextBox
+ ld a, [wListMenuID]
+ cp a, PRICEDITEMLISTMENU
+ jr nz, .drawTextBox
; text box dimensions/coordinates for quantity and price
coord hl, 7, 9
lb bc, 1, 11 ; height and width
.drawTextBox
call TextBoxBorder
coord hl, 16, 10
- ld a,[wListMenuID]
- cp a,PRICEDITEMLISTMENU
- jr nz,.printInitialQuantity
+ ld a, [wListMenuID]
+ cp a, PRICEDITEMLISTMENU
+ jr nz, .printInitialQuantity
coord hl, 8, 10
.printInitialQuantity
- ld de,InitialQuantityText
+ ld de, InitialQuantityText
call PlaceString
xor a
- ld [wItemQuantity],a ; initialize current quantity to 0
+ ld [wItemQuantity], a ; initialize current quantity to 0
jp .incrementQuantity
.waitForKeyPressLoop
call JoypadLowSensitivity
- ld a,[hJoyPressed] ; newly pressed buttons
- bit 0,a ; was the A button pressed?
- jp nz,.buttonAPressed
- bit 1,a ; was the B button pressed?
- jp nz,.buttonBPressed
- bit 6,a ; was Up pressed?
- jr nz,.incrementQuantity
- bit 7,a ; was Down pressed?
- jr nz,.decrementQuantity
+ ld a, [hJoyPressed] ; newly pressed buttons
+ bit 0, a ; was the A button pressed?
+ jp nz, .buttonAPressed
+ bit 1, a ; was the B button pressed?
+ jp nz, .buttonBPressed
+ bit 6, a ; was Up pressed?
+ jr nz, .incrementQuantity
+ bit 7, a ; was Down pressed?
+ jr nz, .decrementQuantity
jr .waitForKeyPressLoop
.incrementQuantity
- ld a,[wMaxItemQuantity]
+ ld a, [wMaxItemQuantity]
inc a
- ld b,a
- ld hl,wItemQuantity ; current quantity
+ ld b, a
+ ld hl, wItemQuantity ; current quantity
inc [hl]
- ld a,[hl]
+ ld a, [hl]
cp b
- jr nz,.handleNewQuantity
+ jr nz, .handleNewQuantity
; wrap to 1 if the player goes above the max quantity
- ld a,1
- ld [hl],a
+ ld a, 1
+ ld [hl], a
jr .handleNewQuantity
.decrementQuantity
- ld hl,wItemQuantity ; current quantity
+ ld hl, wItemQuantity ; current quantity
dec [hl]
- jr nz,.handleNewQuantity
+ jr nz, .handleNewQuantity
; wrap to the max quantity if the player goes below 1
- ld a,[wMaxItemQuantity]
- ld [hl],a
+ ld a, [wMaxItemQuantity]
+ ld [hl], a
.handleNewQuantity
coord hl, 17, 10
- ld a,[wListMenuID]
- cp a,PRICEDITEMLISTMENU
- jr nz,.printQuantity
+ ld a, [wListMenuID]
+ cp a, PRICEDITEMLISTMENU
+ jr nz, .printQuantity
.printPrice
- ld c,$03
- ld a,[wItemQuantity]
- ld b,a
- ld hl,hMoney ; total price
+ ld c, $03
+ ld a, [wItemQuantity]
+ ld b, a
+ ld hl, hMoney ; total price
; initialize total price to 0
xor a
- ld [hli],a
- ld [hli],a
- ld [hl],a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
.addLoop ; loop to multiply the individual price by the quantity to get the total price
- ld de,hMoney + 2
- ld hl,hItemPrice + 2
+ ld de, hMoney + 2
+ ld hl, hItemPrice + 2
push bc
predef AddBCDPredef ; add the individual price to the current sum
pop bc
dec b
- jr nz,.addLoop
- ld a,[hHalveItemPrices]
+ jr nz, .addLoop
+ ld a, [hHalveItemPrices]
and a ; should the price be halved (for selling items)?
- jr z,.skipHalvingPrice
+ jr z, .skipHalvingPrice
xor a
- ld [hDivideBCDDivisor],a
- ld [hDivideBCDDivisor + 1],a
- ld a,$02
- ld [hDivideBCDDivisor + 2],a
+ ld [hDivideBCDDivisor], a
+ ld [hDivideBCDDivisor + 1], a
+ ld a, $02
+ ld [hDivideBCDDivisor + 2], a
predef DivideBCDPredef3 ; halves the price
; store the halved price
- ld a,[hDivideBCDQuotient]
- ld [hMoney],a
- ld a,[hDivideBCDQuotient + 1]
- ld [hMoney + 1],a
- ld a,[hDivideBCDQuotient + 2]
- ld [hMoney + 2],a
+ ld a, [hDivideBCDQuotient]
+ ld [hMoney], a
+ ld a, [hDivideBCDQuotient + 1]
+ ld [hMoney + 1], a
+ ld a, [hDivideBCDQuotient + 2]
+ ld [hMoney + 2], a
.skipHalvingPrice
coord hl, 12, 10
- ld de,SpacesBetweenQuantityAndPriceText
+ ld de, SpacesBetweenQuantityAndPriceText
call PlaceString
- ld de,hMoney ; total price
- ld c,$a3
+ ld de, hMoney ; total price
+ ld c, $a3
call PrintBCDNumber
coord hl, 9, 10
.printQuantity
- ld de,wItemQuantity ; current quantity
+ ld de, wItemQuantity ; current quantity
lb bc, LEADING_ZEROES | 1, 2 ; 1 byte, 2 digits
call PrintNumber
jp .waitForKeyPressLoop
.buttonAPressed ; the player chose to make the transaction
xor a
- ld [wMenuItemToSwap],a ; 0 means no item is currently being swapped
+ ld [wMenuItemToSwap], a ; 0 means no item is currently being swapped
ret
.buttonBPressed ; the player chose to cancel the transaction
xor a
- ld [wMenuItemToSwap],a ; 0 means no item is currently being swapped
- ld a,$ff
+ ld [wMenuItemToSwap], a ; 0 means no item is currently being swapped
+ ld a, $ff
ret
InitialQuantityText:: ; 2d28 (0:2d28)
@@ -1850,18 +1737,18 @@ SpacesBetweenQuantityAndPriceText:: ; 2d2c (0:2d2c)
db " @"
ExitListMenu:: ; 2d33 (0:2d33)
- ld a,[wCurrentMenuItem]
- ld [wChosenMenuItem],a
- ld a,CANCELLED_MENU
- ld [wMenuExitMethod],a
- ld [wMenuWatchMovingOutOfBounds],a
+ ld a, [wCurrentMenuItem]
+ ld [wChosenMenuItem], a
+ ld a, CANCELLED_MENU
+ ld [wMenuExitMethod], a
+ ld [wMenuWatchMovingOutOfBounds], a
xor a
- ld [hJoy7],a
- ld hl,wd730
- res 6,[hl]
+ ld [hJoy7], a
+ ld hl, wd730
+ res 6, [hl]
call BankswitchBack
xor a
- ld [wMenuItemToSwap],a ; 0 means no item is currently being swapped
+ ld [wMenuItemToSwap], a ; 0 means no item is currently being swapped
scf
ret
@@ -1869,64 +1756,64 @@ PrintListMenuEntries:: ; 2d52 (0:2d52)
coord hl, 5, 3
lb bc, 9, 14
call ClearScreenArea
- ld a,[wListPointer]
- ld e,a
- ld a,[wListPointer + 1]
- ld d,a
+ ld a, [wListPointer]
+ ld e, a
+ ld a, [wListPointer + 1]
+ ld d, a
inc de ; de = beginning of list entries
- ld a,[wListScrollOffset]
- ld c,a
- ld a,[wListMenuID]
- cp a,ITEMLISTMENU
- ld a,c
- jr nz,.skipMultiplying
+ ld a, [wListScrollOffset]
+ ld c, a
+ ld a, [wListMenuID]
+ cp a, ITEMLISTMENU
+ ld a, c
+ jr nz, .skipMultiplying
; if it's an item menu
; item entries are 2 bytes long, so multiply by 2
add a
sla c
.skipMultiplying
add e
- ld e,a
- jr nc,.noCarry
+ ld e, a
+ jr nc, .noCarry
inc d
.noCarry
coord hl, 6, 4 ; coordinates of first list entry name
- ld b,4 ; print 4 names
+ ld b, 4 ; print 4 names
.loop
- ld a,b
- ld [wWhichPokemon],a
- ld a,[de]
- ld [wd11e],a
- cp a,$ff
- jp z,.printCancelMenuItem
+ ld a, b
+ ld [wWhichPokemon], a
+ ld a, [de]
+ ld [wd11e], a
+ cp a, $ff
+ jp z, .printCancelMenuItem
push bc
push de
push hl
push hl
push de
- ld a,[wListMenuID]
+ ld a, [wListMenuID]
and a
- jr z,.pokemonPCMenu
- cp a,$01
- jr z,.movesMenu
+ jr z, .pokemonPCMenu
+ cp a, $01
+ jr z, .movesMenu
.itemMenu
call GetItemName
jr .placeNameString
.pokemonPCMenu
push hl
- ld hl,wPartyCount
- ld a,[wListPointer]
+ ld hl, wPartyCount
+ ld a, [wListPointer]
cp l ; is it a list of party pokemon or box pokemon?
- ld hl,wPartyMonNicks
- jr z,.getPokemonName
+ ld hl, wPartyMonNicks
+ jr z, .getPokemonName
ld hl, wBoxMonNicks ; box pokemon names
.getPokemonName
- ld a,[wWhichPokemon]
- ld b,a
- ld a,4
+ ld a, [wWhichPokemon]
+ ld b, a
+ ld a, 4
sub b
- ld b,a
- ld a,[wListScrollOffset]
+ ld b, a
+ ld a, [wListScrollOffset]
add b
call GetPartyMonName
pop hl
@@ -1937,90 +1824,90 @@ PrintListMenuEntries:: ; 2d52 (0:2d52)
call PlaceString
pop de
pop hl
- ld a,[wPrintItemPrices]
+ ld a, [wPrintItemPrices]
and a ; should prices be printed?
- jr z,.skipPrintingItemPrice
+ jr z, .skipPrintingItemPrice
.printItemPrice
push hl
- ld a,[de]
- ld de,ItemPrices
- ld [wcf91],a
+ ld a, [de]
+ ld de, ItemPrices
+ ld [wcf91], a
call GetItemPrice ; get price
pop hl
ld bc, SCREEN_WIDTH + 5 ; 1 row down and 5 columns right
- add hl,bc
- ld c,$a3 ; no leading zeroes, right-aligned, print currency symbol, 3 bytes
+ add hl, bc
+ ld c, $a3 ; no leading zeroes, right-aligned, print currency symbol, 3 bytes
call PrintBCDNumber
.skipPrintingItemPrice
- ld a,[wListMenuID]
+ ld a, [wListMenuID]
and a
- jr nz,.skipPrintingPokemonLevel
+ jr nz, .skipPrintingPokemonLevel
.printPokemonLevel
- ld a,[wd11e]
+ ld a, [wd11e]
push af
push hl
- ld hl,wPartyCount
- ld a,[wListPointer]
+ ld hl, wPartyCount
+ ld a, [wListPointer]
cp l ; is it a list of party pokemon or box pokemon?
- ld a,PLAYER_PARTY_DATA
- jr z,.next
- ld a,BOX_DATA
+ ld a, PLAYER_PARTY_DATA
+ jr z, .next
+ ld a, BOX_DATA
.next
- ld [wMonDataLocation],a
- ld hl,wWhichPokemon
- ld a,[hl]
- ld b,a
- ld a,$04
+ ld [wMonDataLocation], a
+ ld hl, wWhichPokemon
+ ld a, [hl]
+ ld b, a
+ ld a, $04
sub b
- ld b,a
- ld a,[wListScrollOffset]
+ ld b, a
+ ld a, [wListScrollOffset]
add b
- ld [hl],a
+ ld [hl], a
call LoadMonData
- ld a,[wMonDataLocation]
+ ld a, [wMonDataLocation]
and a ; is it a list of party pokemon or box pokemon?
- jr z,.skipCopyingLevel
+ jr z, .skipCopyingLevel
.copyLevel
- ld a,[wLoadedMonBoxLevel]
- ld [wLoadedMonLevel],a
+ ld a, [wLoadedMonBoxLevel]
+ ld [wLoadedMonLevel], a
.skipCopyingLevel
pop hl
- ld bc,$001c
- add hl,bc
+ ld bc, $001c
+ add hl, bc
call PrintLevel
pop af
- ld [wd11e],a
+ ld [wd11e], a
.skipPrintingPokemonLevel
pop hl
pop de
inc de
- ld a,[wListMenuID]
- cp a,ITEMLISTMENU
- jr nz,.nextListEntry
+ ld a, [wListMenuID]
+ cp a, ITEMLISTMENU
+ jr nz, .nextListEntry
.printItemQuantity
- ld a,[wd11e]
- ld [wcf91],a
+ ld a, [wd11e]
+ ld [wcf91], a
call IsKeyItem ; check if item is unsellable
- ld a,[wIsKeyItem]
+ ld a, [wIsKeyItem]
and a ; is the item unsellable?
- jr nz,.skipPrintingItemQuantity ; if so, don't print the quantity
+ jr nz, .skipPrintingItemQuantity ; if so, don't print the quantity
push hl
ld bc, SCREEN_WIDTH + 8 ; 1 row down and 8 columns right
- add hl,bc
- ld a,"×"
- ld [hli],a
- ld a,[wd11e]
+ add hl, bc
+ ld a, "×"
+ ld [hli], a
+ ld a, [wd11e]
push af
- ld a,[de]
- ld [wMaxItemQuantity],a
+ ld a, [de]
+ ld [wMaxItemQuantity], a
push de
- ld de,wd11e
- ld [de],a
+ ld de, wd11e
+ ld [de], a
lb bc, 1, 2
call PrintNumber
pop de
pop af
- ld [wd11e],a
+ ld [wd11e], a
pop hl
.skipPrintingItemQuantity
inc de
@@ -2028,29 +1915,29 @@ PrintListMenuEntries:: ; 2d52 (0:2d52)
inc c
push bc
inc c
- ld a,[wMenuItemToSwap] ; ID of item chosen for swapping (counts from 1)
+ ld a, [wMenuItemToSwap] ; ID of item chosen for swapping (counts from 1)
and a ; is an item being swapped?
- jr z,.nextListEntry
+ jr z, .nextListEntry
add a
cp c ; is it this item?
- jr nz,.nextListEntry
+ jr nz, .nextListEntry
dec hl
- ld a,$ec ; unfilled right arrow menu cursor to indicate an item being swapped
- ld [hli],a
+ ld a, $ec ; unfilled right arrow menu cursor to indicate an item being swapped
+ ld [hli], a
.nextListEntry
- ld bc,2 * SCREEN_WIDTH ; 2 rows
- add hl,bc
+ ld bc, 2 * SCREEN_WIDTH ; 2 rows
+ add hl, bc
pop bc
inc c
dec b
- jp nz,.loop
- ld bc,-8
- add hl,bc
- ld a,$ee ; down arrow
- ld [hl],a
+ jp nz, .loop
+ ld bc, -8
+ add hl, bc
+ ld a, $ee ; down arrow
+ ld [hl], a
ret
.printCancelMenuItem
- ld de,ListMenuCancelText
+ ld de, ListMenuCancelText
jp PlaceString
ListMenuCancelText:: ; 2e8c (0:2e8c)
@@ -2058,27 +1945,27 @@ ListMenuCancelText:: ; 2e8c (0:2e8c)
GetMonName:: ; 2e93 (0:2e93)
push hl
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
- ld a,BANK(MonsterNames) ; 3a
- ld [H_LOADEDROMBANK],a
- ld [MBC1RomBank],a
- ld a,[wd11e]
+ ld a, BANK(MonsterNames) ; 3a
+ ld [H_LOADEDROMBANK], a
+ ld [MBC1RomBank], a
+ ld a, [wd11e]
dec a
- ld hl,MonsterNames ; 4000
- ld c,10
- ld b,0
+ ld hl, MonsterNames ; 4000
+ ld c, 10
+ ld b, 0
call AddNTimes
- ld de,wcd6d
+ ld de, wcd6d
push de
- ld bc,10
+ ld bc, 10
call CopyData
- ld hl,wcd6d + 10
+ ld hl, wcd6d + 10
ld [hl], "@"
pop de
pop af
- ld [H_LOADEDROMBANK],a
- ld [MBC1RomBank],a
+ ld [H_LOADEDROMBANK], a
+ ld [MBC1RomBank], a
pop hl
ret
@@ -2087,22 +1974,22 @@ GetItemName:: ; 2ec4 (0:2ec4)
; starting at wcd6d
push hl
push bc
- ld a,[wd11e]
+ ld a, [wd11e]
cp HM_01 ; is this a TM/HM?
- jr nc,.Machine
+ jr nc, .Machine
- ld [wd0b5],a
- ld a,ITEM_NAME
- ld [wNameListType],a
- ld a,BANK(ItemNames)
- ld [wPredefBank],a
+ ld [wd0b5], a
+ ld a, ITEM_NAME
+ ld [wNameListType], a
+ ld a, BANK(ItemNames)
+ ld [wPredefBank], a
call GetName
jr .Finish
.Machine
call GetMachineName
.Finish
- ld de,wcd6d ; pointer to where item name is stored in RAM
+ ld de, wcd6d ; pointer to where item name is stored in RAM
pop bc
pop hl
ret
@@ -2112,48 +1999,48 @@ GetMachineName:: ; 2ee8 (0:2ee8)
push hl
push de
push bc
- ld a,[wd11e]
+ ld a, [wd11e]
push af
cp TM_01 ; is this a TM? [not HM]
- jr nc,.WriteTM
+ jr nc, .WriteTM
; if HM, then write "HM" and add 5 to the item ID, so we can reuse the
; TM printing code
add 5
- ld [wd11e],a
- ld hl,HiddenPrefix ; points to "HM"
- ld bc,2
+ ld [wd11e], a
+ ld hl, HiddenPrefix ; points to "HM"
+ ld bc, 2
jr .WriteMachinePrefix
.WriteTM
- ld hl,TechnicalPrefix ; points to "TM"
- ld bc,2
+ ld hl, TechnicalPrefix ; points to "TM"
+ ld bc, 2
.WriteMachinePrefix
- ld de,wcd6d
+ ld de, wcd6d
call CopyData
; now get the machine number and convert it to text
- ld a,[wd11e]
+ ld a, [wd11e]
sub TM_01 - 1
ld b, "0"
.FirstDigit
sub 10
- jr c,.SecondDigit
+ jr c, .SecondDigit
inc b
jr .FirstDigit
.SecondDigit
add 10
push af
- ld a,b
- ld [de],a
+ ld a, b
+ ld [de], a
inc de
pop af
ld b, "0"
add b
- ld [de],a
+ ld [de], a
inc de
- ld a,"@"
- ld [de],a
+ ld a, "@"
+ ld [de], a
pop af
- ld [wd11e],a
+ ld [wd11e], a
pop bc
pop de
pop hl
@@ -2167,9 +2054,9 @@ HiddenPrefix:: ; 2f33 (0:2f33)
; sets carry if item is HM, clears carry if item is not HM
; Input: a = item ID
IsItemHM:: ; 2f35 (0:2f35)
- cp a,HM_01
- jr c,.notHM
- cp a,TM_01
+ cp a, HM_01
+ jr c, .notHM
+ cp a, TM_01
ret
.notHM
and a
@@ -2178,32 +2065,32 @@ IsItemHM:: ; 2f35 (0:2f35)
; sets carry if move is an HM, clears carry if move is not an HM
; Input: a = move ID
IsMoveHM:: ; 2f3e (0:2f3e)
- ld hl,HMMoves
- ld de,1
+ ld hl, HMMoves
+ ld de, 1
jp IsInArray
HMMoves:: ; 2f47 (0:2f47)
- db CUT,FLY,SURF,STRENGTH,FLASH
+ db CUT, FLY, SURF, STRENGTH, FLASH
db $ff ; terminator
GetMoveName:: ; 2f4d (0:2f4d)
push hl
- ld a,MOVE_NAME
- ld [wNameListType],a
- ld a,[wd11e]
- ld [wd0b5],a
- ld a,BANK(MoveNames)
- ld [wPredefBank],a
+ ld a, MOVE_NAME
+ ld [wNameListType], a
+ ld a, [wd11e]
+ ld [wd0b5], a
+ ld a, BANK(MoveNames)
+ ld [wPredefBank], a
call GetName
- ld de,wcd6d ; pointer to where move name is stored in RAM
+ ld de, wcd6d ; pointer to where move name is stored in RAM
pop hl
ret
; reloads text box tile patterns, current map view, and tileset tile patterns
ReloadMapData:: ; 2f66 (0:2f66)
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
- ld a,[wCurMap]
+ ld a, [wCurMap]
call SwitchToMapRomBank
call DisableLCD
call LoadTextBoxTilePatterns
@@ -2216,9 +2103,9 @@ ReloadMapData:: ; 2f66 (0:2f66)
; reloads tileset tile patterns
ReloadTilesetTilePatterns:: ; 2f83 (0:2f83)
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
- ld a,[wCurMap]
+ ld a, [wCurMap]
call SwitchToMapRomBank
call DisableLCD
call LoadTilesetTilePatternData
@@ -2229,8 +2116,8 @@ ReloadTilesetTilePatterns:: ; 2f83 (0:2f83)
; shows the town map and lets the player choose a destination to fly to
ChooseFlyDestination:: ; 2f9a (0:2f9a)
- ld hl,wd72e
- res 4,[hl]
+ ld hl, wd72e
+ res 4, [hl]
jpba LoadTownMap_Fly
Func_2fa7:: ; 2fa7 (0:2fa7)
@@ -2238,33 +2125,33 @@ Func_2fa7:: ; 2fa7 (0:2fa7)
ret
SerialFunction:: ; 2fb7 (0:2fb7)
- ld a,[wUnknownSerialFlag_d49a]
- bit 0,a
+ ld a, [wUnknownSerialFlag_d49a]
+ bit 0, a
ret z
- ld a,[wUnknownSerialFlag_d49b]
+ ld a, [wUnknownSerialFlag_d49b]
and a
ret nz
- ld hl,wOverworldMap+650
+ ld hl, wOverworldMap+650
inc [hl]
- ld a,[hl]
+ ld a, [hl]
cp $6
ret c
xor a
- ld [hl],a
- ld a,$0c
- ld [wUnknownSerialFlag_d49b],a
- ld a,$88
- ld [rSB],a
- ld a,$1
- ld [rSC],a
- ld a,START_TRANSFER_INTERNAL_CLOCK
- ld [rSC],a
+ ld [hl], a
+ ld a, $0c
+ ld [wUnknownSerialFlag_d49b], a
+ ld a, $88
+ ld [rSB], a
+ ld a, $1
+ ld [rSC], a
+ ld a, START_TRANSFER_INTERNAL_CLOCK
+ ld [rSC], a
ret
; causes the text box to close without waiting for a button press after displaying text
DisableWaitingAfterTextDisplay:: ; 2fde (0:2fde)
- ld a,$01
- ld [wDoNotWaitForButtonPressAfterDisplayingText],a
+ ld a, $01
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ret
; uses an item
@@ -2288,16 +2175,16 @@ UseItem:: ; 2fe4 (0:2fe4)
; OUTPUT:
; clears carry flag if the item is tossed, sets carry flag if not
TossItem:: ; 2fec (0:2fec)
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
- ld a,BANK(TossItem_)
- ld [H_LOADEDROMBANK],a
- ld [MBC1RomBank],a
+ ld a, BANK(TossItem_)
+ ld [H_LOADEDROMBANK], a
+ ld [MBC1RomBank], a
call TossItem_
pop de
- ld a,d
- ld [H_LOADEDROMBANK],a
- ld [MBC1RomBank],a
+ ld a, d
+ ld [H_LOADEDROMBANK], a
+ ld [MBC1RomBank], a
ret
; checks if an item is a key item
@@ -2397,7 +2284,7 @@ UpdateGBCPal_OBP1:: ; 3061 (0:3061)
ret
Func_3082:: ; 3082 (0:3082)
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
call FadeOutAudio
callbs Music_DoLowHealthAlarm
@@ -2441,7 +2328,7 @@ RunNPCMovementScript:: ; 30ae (0:30ae)
ld a, [wNPCMovementScriptBank]
call BankswitchCommon
ld a, [wNPCMovementScriptFunctionNum]
- call CallFunctionInTable
+ call JumpTable
pop af
call BankswitchCommon
ret
@@ -2484,7 +2371,7 @@ ExecuteCurMapScriptInTable:: ; 30fc (0:30fc)
.useProvidedIndex
pop hl
ld [W_CURMAPSCRIPT], a
- call CallFunctionInTable
+ call JumpTable
ld a, [W_CURMAPSCRIPT]
ret
@@ -2927,8 +2814,8 @@ FuncTX_BillsPC:: ; 33f9 (0:33f9)
FuncTX_SlotMachine:: ; 3403 (0:3403)
; XXX find a better name for this function
; special_F7
- ld b,BANK(CeladonPrizeMenu)
- ld hl,CeladonPrizeMenu
+ ld b, BANK(CeladonPrizeMenu)
+ ld hl, CeladonPrizeMenu
bankswitchAndContinue:: ; 3408 (0:3408)
call Bankswitch
jp HoldTextDisplayOpen ; continue to main text-engine function
@@ -2952,49 +2839,49 @@ IsItemInBag:: ; 3422 (0:3422)
; else reset zero flag
; related to Pokémon Tower and ghosts
predef GetQuantityOfItemInBag
- ld a,b
+ ld a, b
and a
ret
IsSurfingPikachuInParty:: ; 342a (0:342a)
; set bit 6 of wd472 if true
; also calls Func_3467, which is a bankswitch to IsStarterPikachuInOurParty
- ld a,[wd472]
+ ld a, [wd472]
and $3f
- ld [wd472],a
- ld hl,wPartyMon1
- ld c,PARTY_LENGTH
- ld b,SURF
+ ld [wd472], a
+ ld hl, wPartyMon1
+ ld c, PARTY_LENGTH
+ ld b, SURF
.loop
- ld a,[hl]
+ ld a, [hl]
cp PIKACHU
- jr nz,.notPikachu
+ jr nz, .notPikachu
push hl
- ld de,$8
- add hl,de
- ld a,[hli]
+ ld de, $8
+ add hl, de
+ ld a, [hli]
cp b ; does pikachu have surf as one of its moves
- jr z,.hasSurf
- ld a,[hli]
+ jr z, .hasSurf
+ ld a, [hli]
cp b
- jr z,.hasSurf
- ld a,[hli]
+ jr z, .hasSurf
+ ld a, [hli]
cp b
- jr z,.hasSurf
- ld a,[hli]
+ jr z, .hasSurf
+ ld a, [hli]
cp b
- jr nz,.noSurf
+ jr nz, .noSurf
.hasSurf
- ld a,[wd472]
- set 6,a
- ld [wd472],a
+ ld a, [wd472]
+ set 6, a
+ ld [wd472], a
.noSurf
pop hl
.notPikachu
- ld de,wPartyMon2 - wPartyMon1
- add hl,de
+ ld de, wPartyMon2 - wPartyMon1
+ add hl, de
dec c
- jr nz,.loop
+ jr nz, .loop
call Func_3467
ret
@@ -3005,9 +2892,9 @@ Func_3467:: ; 3467 (0:3467)
pop bc
pop hl
ret nc
- ld a,[wd472]
- set 7,a
- ld [wd472],a
+ ld a, [wd472]
+ set 7, a
+ ld [wd472], a
ret
DisplayPokedex:: ; 347d (0:347d)
@@ -3034,23 +2921,23 @@ SetSpriteImageIndexAfterSettingFacingDirection:: ; 349b (0:349b)
ret
SpriteFunc_34a1:: ; 34a1 (0:34a1)
- ld a,[H_SPRITEINDEX]
+ ld a, [H_SPRITEINDEX]
swap a
add $e
- ld l,a
- ld h,$c2
- ld c,[hl]
+ ld l, a
+ ld h, $c2
+ ld c, [hl]
dec c
swap c
- ld a,[$ff8d]
+ ld a, [$ff8d]
add c
- ld c,a
- ld a,[$ff8c]
+ ld c, a
+ ld a, [$ff8c]
swap a
add $2
- ld l,a
+ ld l, a
dec h
- ld [hl],c
+ ld [hl], c
ret
; tests if the player's coordinates are in a specified array
@@ -3060,32 +2947,32 @@ SpriteFunc_34a1:: ; 34a1 (0:34a1)
; [wCoordIndex] = if there is match, the matching array index
; sets carry if the coordinates are in the array, clears carry if not
ArePlayerCoordsInArray:: ; 34bc (0:34bc)
- ld a,[wYCoord]
- ld b,a
- ld a,[wXCoord]
- ld c,a
+ ld a, [wYCoord]
+ ld b, a
+ ld a, [wXCoord]
+ ld c, a
; fallthrough
CheckCoords:: ; 34c4 (0:34c4)
xor a
- ld [wCoordIndex],a
+ ld [wCoordIndex], a
.loop
- ld a,[hli]
- cp a,$ff ; reached terminator?
- jr z,.notInArray
+ ld a, [hli]
+ cp a, $ff ; reached terminator?
+ jr z, .notInArray
push hl
- ld hl,wCoordIndex
+ ld hl, wCoordIndex
inc [hl]
pop hl
.compareYCoord
cp b
- jr z,.compareXCoord
+ jr z, .compareXCoord
inc hl
jr .loop
.compareXCoord
- ld a,[hli]
+ ld a, [hli]
cp c
- jr nz,.loop
+ jr nz, .loop
.inArray
scf
ret
@@ -3179,31 +3066,31 @@ SetSpriteMovementBytesToFE:: ; 3530 (0:3530)
SetSpriteMovementBytesToFF:: ; 353f (0:353f)
push hl
call GetSpriteMovementByte1Pointer
- ld [hl],$FF
+ ld [hl], $FF
call GetSpriteMovementByte2Pointer
- ld [hl],$FF ; prevent person from walking?
+ ld [hl], $FF ; prevent person from walking?
pop hl
ret
; returns the sprite movement byte 1 pointer for sprite [H_SPRITEINDEX] in hl
GetSpriteMovementByte1Pointer:: ; 354b (0:354b)
- ld h,$C2
- ld a,[H_SPRITEINDEX]
+ ld h, $C2
+ ld a, [H_SPRITEINDEX]
swap a
- add a,6
- ld l,a
+ add a, 6
+ ld l, a
ret
; returns the sprite movement byte 2 pointer for sprite [H_SPRITEINDEX] in hl
GetSpriteMovementByte2Pointer:: ; 3555 (0:3555)
push de
- ld hl,wMapSpriteData
- ld a,[H_SPRITEINDEX]
+ ld hl, wMapSpriteData
+ ld a, [H_SPRITEINDEX]
dec a
add a
- ld e,a
- ld d,0
- add hl,de
+ ld e, a
+ ld d, 0
+ add hl, de
pop de
ret
@@ -3242,21 +3129,21 @@ GetTrainerInformation:: ; 3563 (0:3563)
ret
IsFightingJessieJames:: ; 359e (0:359e)
- ld a,[wTrainerClass]
+ ld a, [wTrainerClass]
cp ROCKET
ret nz
- ld a,[wTrainerNo]
+ ld a, [wTrainerNo]
cp $2a
ret c
- ld de,JessieJamesPic
+ ld de, JessieJamesPic
cp $2e
- jr c,.dummy
- ld de,JessieJamesPic ; possibly meant to add another pic
+ jr c, .dummy
+ ld de, JessieJamesPic ; possibly meant to add another pic
.dummy
- ld hl,wTrainerPicPointer
- ld a,e
- ld [hli],a
- ld [hl],d
+ ld hl, wTrainerPicPointer
+ ld a, e
+ ld [hli], a
+ ld [hl], d
ret
GetTrainerName:: ; 35bb (0:35bb)
@@ -3282,16 +3169,16 @@ HasEnoughCoins:: ; 35ce (0:35ce)
BankswitchHome:: ; 35d9 (0:35d9)
; switches to bank # in a
; Only use this when in the home bank!
- ld [wBankswitchHomeTemp],a
- ld a,[H_LOADEDROMBANK]
- ld [wBankswitchHomeSavedROMBank],a
- ld a,[wBankswitchHomeTemp]
+ ld [wBankswitchHomeTemp], a
+ ld a, [H_LOADEDROMBANK]
+ ld [wBankswitchHomeSavedROMBank], a
+ ld a, [wBankswitchHomeTemp]
call BankswitchCommon
ret
BankswitchBack:: ; 35e8 (0:35e8)
; returns from BankswitchHome
- ld a,[wBankswitchHomeSavedROMBank]
+ ld a, [wBankswitchHomeSavedROMBank]
call BankswitchCommon
ret
@@ -3353,31 +3240,31 @@ MoveSprite_:: ; 3640 (0:3640)
push bc
call GetSpriteMovementByte1Pointer
xor a
- ld [hl],a
- ld hl,wNPCMovementDirections
- ld c,0
+ ld [hl], a
+ ld hl, wNPCMovementDirections
+ ld c, 0
.loop
- ld a,[de]
- ld [hli],a
+ ld a, [de]
+ ld [hli], a
inc de
inc c
- cp a,$FF ; have we reached the end of the movement data?
- jr nz,.loop
+ cp a, $FF ; have we reached the end of the movement data?
+ jr nz, .loop
- ld a,c
- ld [wNPCNumScriptedSteps],a ; number of steps taken
+ ld a, c
+ ld [wNPCNumScriptedSteps], a ; number of steps taken
pop bc
- ld hl,wd730
- set 0,[hl]
+ ld hl, wd730
+ set 0, [hl]
pop hl
xor a
- ld [wOverrideSimulatedJoypadStatesMask],a
- ld [wSimulatedJoypadStatesEnd],a
+ ld [wOverrideSimulatedJoypadStatesMask], a
+ ld [wSimulatedJoypadStatesEnd], a
dec a
- ld [wJoyIgnore],a
- ld [wWastedByteCD3A],a
+ ld [wJoyIgnore], a
+ ld [wWastedByteCD3A], a
ret
; divides [hDividend2] by [hDivisor2] and stores the quotient in [hQuotient2]
@@ -3500,7 +3387,7 @@ DelayFrames:: ; 372f (0:372f)
; wait c frames
call DelayFrame
dec c
- jr nz,DelayFrames
+ jr nz, DelayFrames
ret
PlaySoundWaitForCurrent:: ; 3736 (0:3736)
@@ -3545,75 +3432,75 @@ GetName:: ; 3762 (0:3762)
; [wPredefBank] = bank of list
;
; returns pointer to name in de
- ld a,[wd0b5]
- ld [wd11e],a
+ ld a, [wd0b5]
+ ld [wd11e], a
; TM names are separate from item names.
; BUG: This applies to all names instead of just items.
cp HM_01
jp nc, GetMachineName
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
push hl
push bc
push de
- ld a,[wNameListType] ;List3759_entrySelector
+ ld a, [wNameListType] ;List3759_entrySelector
dec a
- jr nz,.otherEntries
+ jr nz, .otherEntries
;1 = MON_NAMES
call GetMonName
- ld hl,NAME_LENGTH
- add hl,de
- ld e,l
- ld d,h
+ ld hl, NAME_LENGTH
+ add hl, de
+ ld e, l
+ ld d, h
jr .gotPtr
.otherEntries
;2-7 = OTHER ENTRIES
- ld a,[wPredefBank]
+ ld a, [wPredefBank]
call BankswitchCommon
- ld a,[wNameListType] ;VariousNames' entryID
+ ld a, [wNameListType] ;VariousNames' entryID
dec a
add a
- ld d,0
- ld e,a
- jr nc,.skip
+ ld d, 0
+ ld e, a
+ jr nc, .skip
inc d
.skip
- ld hl,NamePointers
- add hl,de
- ld a,[hli]
- ld [$ff96],a
- ld a,[hl]
- ld [$ff95],a
- ld a,[$ff95]
- ld h,a
- ld a,[$ff96]
- ld l,a
- ld a,[wd0b5]
- ld b,a
- ld c,0
+ ld hl, NamePointers
+ add hl, de
+ ld a, [hli]
+ ld [$ff96], a
+ ld a, [hl]
+ ld [$ff95], a
+ ld a, [$ff95]
+ ld h, a
+ ld a, [$ff96]
+ ld l, a
+ ld a, [wd0b5]
+ ld b, a
+ ld c, 0
.nextName
- ld d,h
- ld e,l
+ ld d, h
+ ld e, l
.nextChar
- ld a,[hli]
+ ld a, [hli]
cp a, "@"
- jr nz,.nextChar
+ jr nz, .nextChar
inc c ;entry counter
- ld a,b ;wanted entry
+ ld a, b ;wanted entry
cp c
- jr nz,.nextName
- ld h,d
- ld l,e
- ld de,wcd6d
- ld bc,$0014
+ jr nz, .nextName
+ ld h, d
+ ld l, e
+ ld de, wcd6d
+ ld bc, $0014
call CopyData
.gotPtr
- ld a,e
- ld [wUnusedCF8D],a
- ld a,d
- ld [wUnusedCF8D + 1],a
+ ld a, e
+ ld [wUnusedCF8D], a
+ ld a, d
+ ld [wUnusedCF8D + 1], a
pop de
pop bc
pop hl
@@ -3684,49 +3571,49 @@ CopyString:: ; 3816 (0:3816)
; Just copies [hJoyPressed] to [hJoy5].
; 2. Get currently pressed buttons at low sample rate with delay
; ([hJoy7] == 1, [hJoy6] != 0)
-; If the user holds down buttons for more than half a second,
+; If the user holds down buttons for more than half a second,
; report buttons as being pressed up to 12 times per second thereafter.
-; If the user holds down buttons for less than half a second,
+; If the user holds down buttons for less than half a second,
; report only one button press.
; 3. Same as 2, but report no buttons as pressed if A or B is held down.
; ([hJoy7] == 1, [hJoy6] == 0)
JoypadLowSensitivity:: ; 381e (0:381e)
call Joypad
- ld a,[hJoy7] ; flag
+ ld a, [hJoy7] ; flag
and a ; get all currently pressed buttons or only newly pressed buttons?
- ld a,[hJoyPressed] ; newly pressed buttons
- jr z,.storeButtonState
- ld a,[hJoyHeld] ; all currently pressed buttons
+ ld a, [hJoyPressed] ; newly pressed buttons
+ jr z, .storeButtonState
+ ld a, [hJoyHeld] ; all currently pressed buttons
.storeButtonState
- ld [hJoy5],a
- ld a,[hJoyPressed] ; newly pressed buttons
+ ld [hJoy5], a
+ ld a, [hJoyPressed] ; newly pressed buttons
and a ; have any buttons been newly pressed since last check?
- jr z,.noNewlyPressedButtons
+ jr z, .noNewlyPressedButtons
.newlyPressedButtons
- ld a,30 ; half a second delay
- ld [H_FRAMECOUNTER],a
+ ld a, 30 ; half a second delay
+ ld [H_FRAMECOUNTER], a
ret
.noNewlyPressedButtons
- ld a,[H_FRAMECOUNTER]
+ ld a, [H_FRAMECOUNTER]
and a ; is the delay over?
- jr z,.delayOver
+ jr z, .delayOver
.delayNotOver
xor a
- ld [hJoy5],a ; report no buttons as pressed
+ ld [hJoy5], a ; report no buttons as pressed
ret
.delayOver
; if [hJoy6] = 0 and A or B is pressed, report no buttons as pressed
- ld a,[hJoyHeld]
+ ld a, [hJoyHeld]
and A_BUTTON | B_BUTTON
- jr z,.setShortDelay
- ld a,[hJoy6] ; flag
+ jr z, .setShortDelay
+ ld a, [hJoy6] ; flag
and a
- jr nz,.setShortDelay
+ jr nz, .setShortDelay
xor a
- ld [hJoy5],a
+ ld [hJoy5], a
.setShortDelay
- ld a,5 ; 1/12 of a second delay
- ld [H_FRAMECOUNTER],a
+ ld a, 5 ; 1/12 of a second delay
+ ld [H_FRAMECOUNTER], a
ret
WaitForTextScrollButtonPress:: ; 3852 (0:3852)
@@ -3814,42 +3701,42 @@ Divide:: ; 38b2 (0:38b2)
; screen unless the player presses the A/B button or the delay is turned off
; through the [wd730] or [wLetterPrintingDelayFlags] flags.
PrintLetterDelay:: ; 38c8 (0:38c8)
- ld a,[wd730]
- bit 6,a
+ ld a, [wd730]
+ bit 6, a
ret nz
- ld a,[wLetterPrintingDelayFlags]
- bit 1,a
+ ld a, [wLetterPrintingDelayFlags]
+ bit 1, a
ret z
push hl
push de
push bc
- ld a,[wLetterPrintingDelayFlags]
- bit 0,a
- jr z,.waitOneFrame
- ld a,[wOptions]
+ ld a, [wLetterPrintingDelayFlags]
+ bit 0, a
+ jr z, .waitOneFrame
+ ld a, [wOptions]
and $f
- ld [H_FRAMECOUNTER],a
+ ld [H_FRAMECOUNTER], a
jr .checkButtons
.waitOneFrame
- ld a,1
- ld [H_FRAMECOUNTER],a
+ ld a, 1
+ ld [H_FRAMECOUNTER], a
.checkButtons
call Joypad
- ld a,[hJoyHeld]
+ ld a, [hJoyHeld]
.checkAButton
- bit 0,a ; is the A button pressed?
- jr z,.checkBButton
+ bit 0, a ; is the A button pressed?
+ jr z, .checkBButton
jr .endWait
.checkBButton
- bit 1,a ; is the B button pressed?
- jr z,.buttonsNotPressed
+ bit 1, a ; is the B button pressed?
+ jr z, .buttonsNotPressed
.endWait
call DelayFrame
jr .done
.buttonsNotPressed ; if neither A nor B is pressed
- ld a,[H_FRAMECOUNTER]
+ ld a, [H_FRAMECOUNTER]
and a
- jr nz,.checkButtons
+ jr nz, .checkButtons
.done
pop bc
pop de
@@ -3857,18 +3744,18 @@ PrintLetterDelay:: ; 38c8 (0:38c8)
ret
; Copies [hl, bc) to [de, bc - hl).
-; In other words, the source data is from hl up to but not including bc,
+; In other words, the source data is from hl up to but not including bc,
; and the destination is de.
CopyDataUntil:: ; 3908 (0:3908)
- ld a,[hli]
- ld [de],a
+ ld a, [hli]
+ ld [de], a
inc de
- ld a,h
+ ld a, h
cp b
- jr nz,CopyDataUntil
- ld a,l
+ jr nz, CopyDataUntil
+ ld a, l
cp c
- jr nz,CopyDataUntil
+ jr nz, CopyDataUntil
ret
; Function to remove a pokemon from the party or the current box.
@@ -3906,7 +3793,7 @@ CalcStats:: ; 392b (0:392b)
ret
; calculates stat c of current mon
-; c: stat to calc (HP=1,Atk=2,Def=3,Spd=4,Spc=5)
+; c: stat to calc (HP=1, Atk=2, Def=3, Spd=4, Spc=5)
; b: consider stat exp?
; hl: base ptr to stat exp values ([hl + 2*c - 1] and [hl + 2*c])
CalcStat:: ; 393f (0:393f)
@@ -4113,21 +4000,21 @@ AddNTimes:: ; 3a74 (0:3a74)
and a
ret z
.loop
- add hl,bc
+ add hl, bc
dec a
- jr nz,.loop
+ jr nz, .loop
ret
; Compare strings, c bytes in length, at de and hl.
; Often used to compare big endian numbers in battle calculations.
StringCmp:: ; 3a7b (0:3a7b)
- ld a,[de]
+ ld a, [de]
cp [hl]
ret nz
inc de
inc hl
dec c
- jr nz,StringCmp
+ jr nz, StringCmp
ret
; INPUT:
@@ -4136,298 +4023,298 @@ StringCmp:: ; 3a7b (0:3a7b)
; c = X coordinate of upper left corner of sprite
; de = base address of 4 tile number and attribute pairs
WriteOAMBlock:: ; 3a84 (0:3a84)
- ld h,wOAMBuffer / $100
+ ld h, wOAMBuffer / $100
swap a ; multiply by 16
- ld l,a
+ ld l, a
call .writeOneEntry ; upper left
push bc
- ld a,8
+ ld a, 8
add c
- ld c,a
+ ld c, a
call .writeOneEntry ; upper right
pop bc
- ld a,8
+ ld a, 8
add b
- ld b,a
+ ld b, a
call .writeOneEntry ; lower left
- ld a,8
+ ld a, 8
add c
- ld c,a
+ ld c, a
; lower right
.writeOneEntry ; 3aa0 (0:3aa0)
- ld [hl],b ; Y coordinate
+ ld [hl], b ; Y coordinate
inc hl
- ld [hl],c ; X coordinate
+ ld [hl], c ; X coordinate
inc hl
- ld a,[de] ; tile number
+ ld a, [de] ; tile number
inc de
- ld [hli],a
- ld a,[de] ; attribute
+ ld [hli], a
+ ld a, [de] ; attribute
inc de
- ld [hli],a
+ ld [hli], a
ret
HandleMenuInput:: ; 3aab (0:3aab)
xor a
- ld [wPartyMenuAnimMonEnabled],a
+ ld [wPartyMenuAnimMonEnabled], a
HandleMenuInputPokemonSelection:: ; 3aaf (0:3aaf)
- ld a,[H_DOWNARROWBLINKCNT1]
+ ld a, [H_DOWNARROWBLINKCNT1]
push af
- ld a,[H_DOWNARROWBLINKCNT2]
+ ld a, [H_DOWNARROWBLINKCNT2]
push af ; save existing values on stack
xor a
- ld [H_DOWNARROWBLINKCNT1],a ; blinking down arrow timing value 1
- ld a,6
- ld [H_DOWNARROWBLINKCNT2],a ; blinking down arrow timing value 2
+ ld [H_DOWNARROWBLINKCNT1], a ; blinking down arrow timing value 1
+ ld a, 6
+ ld [H_DOWNARROWBLINKCNT2], a ; blinking down arrow timing value 2
.loop1
xor a
- ld [wAnimCounter],a ; counter for pokemon shaking animation
+ ld [wAnimCounter], a ; counter for pokemon shaking animation
call PlaceMenuCursor
call Delay3
.loop2
push hl
- ld a,[wPartyMenuAnimMonEnabled]
+ ld a, [wPartyMenuAnimMonEnabled]
and a ; is it a pokemon selection menu?
- jr z,.getJoypadState
+ jr z, .getJoypadState
callba AnimatePartyMon ; shake mini sprite of selected pokemon (1c:578c)
.getJoypadState
pop hl
call JoypadLowSensitivity
- ld a,[hJoy5]
+ ld a, [hJoy5]
and a ; was a key pressed?
- jr nz,.keyPressed
+ jr nz, .keyPressed
push hl
coord hl, 18, 11 ; coordinates of blinking down arrow in some menus
call HandleDownArrowBlinkTiming ; blink down arrow (if any)
pop hl
- ld a,[wMenuJoypadPollCount]
+ ld a, [wMenuJoypadPollCount]
dec a
- jr z,.giveUpWaiting
+ jr z, .giveUpWaiting
jr .loop2
.giveUpWaiting
; if a key wasn't pressed within the specified number of checks
pop af
- ld [H_DOWNARROWBLINKCNT2],a
+ ld [H_DOWNARROWBLINKCNT2], a
pop af
- ld [H_DOWNARROWBLINKCNT1],a ; restore previous values
+ ld [H_DOWNARROWBLINKCNT1], a ; restore previous values
xor a
- ld [wMenuWrappingEnabled],a ; disable menu wrapping
+ ld [wMenuWrappingEnabled], a ; disable menu wrapping
ret
.keyPressed
xor a
- ld [wCheckFor180DegreeTurn],a
- ld a,[hJoy5]
- ld b,a
- bit 0,a ; pressed A key?
- jr nz,.checkOtherKeys
- bit 6,a ; pressed Up key?
- jr z,.checkIfDownPressed
+ ld [wCheckFor180DegreeTurn], a
+ ld a, [hJoy5]
+ ld b, a
+ bit 0, a ; pressed A key?
+ jr nz, .checkOtherKeys
+ bit 6, a ; pressed Up key?
+ jr z, .checkIfDownPressed
.upPressed
- ld a,[wCurrentMenuItem] ; selected menu item
+ ld a, [wCurrentMenuItem] ; selected menu item
and a ; already at the top of the menu?
- jr z,.alreadyAtTop
+ jr z, .alreadyAtTop
.notAtTop
dec a
- ld [wCurrentMenuItem],a ; move selected menu item up one space
+ ld [wCurrentMenuItem], a ; move selected menu item up one space
jr .checkOtherKeys
.alreadyAtTop
- ld a,[wMenuWrappingEnabled]
+ ld a, [wMenuWrappingEnabled]
and a ; is wrapping around enabled?
- jr z,.noWrappingAround
- ld a,[wMaxMenuItem]
- ld [wCurrentMenuItem],a ; wrap to the bottom of the menu
+ jr z, .noWrappingAround
+ ld a, [wMaxMenuItem]
+ ld [wCurrentMenuItem], a ; wrap to the bottom of the menu
jr .checkOtherKeys
.checkIfDownPressed
- bit 7,a
- jr z,.checkOtherKeys
+ bit 7, a
+ jr z, .checkOtherKeys
.downPressed
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
inc a
- ld c,a
- ld a,[wMaxMenuItem]
+ ld c, a
+ ld a, [wMaxMenuItem]
cp c
- jr nc,.notAtBottom
+ jr nc, .notAtBottom
.alreadyAtBottom
- ld a,[wMenuWrappingEnabled]
+ ld a, [wMenuWrappingEnabled]
and a ; is wrapping around enabled?
- jr z,.noWrappingAround
- ld c,$00 ; wrap from bottom to top
+ jr z, .noWrappingAround
+ ld c, $00 ; wrap from bottom to top
.notAtBottom
- ld a,c
- ld [wCurrentMenuItem],a
+ ld a, c
+ ld [wCurrentMenuItem], a
.checkOtherKeys
- ld a,[wMenuWatchedKeys]
+ ld a, [wMenuWatchedKeys]
and b ; does the menu care about any of the pressed keys?
- jp z,.loop1
+ jp z, .loop1
.checkIfAButtonOrBButtonPressed
- ld a,[hJoy5]
+ ld a, [hJoy5]
and A_BUTTON | B_BUTTON
- jr z,.skipPlayingSound
+ jr z, .skipPlayingSound
.AButtonOrBButtonPressed
push hl
- ld hl,wFlags_0xcd60
- bit 5,[hl]
+ ld hl, wFlags_0xcd60
+ bit 5, [hl]
pop hl
- jr nz,.skipPlayingSound
+ jr nz, .skipPlayingSound
ld a, $90 ; SFX_PRESS_AB
call PlaySound ; play sound
.skipPlayingSound
pop af
- ld [H_DOWNARROWBLINKCNT2],a
+ ld [H_DOWNARROWBLINKCNT2], a
pop af
- ld [H_DOWNARROWBLINKCNT1],a ; restore previous values
+ ld [H_DOWNARROWBLINKCNT1], a ; restore previous values
xor a
- ld [wMenuWrappingEnabled],a ; disable menu wrapping
- ld a,[hJoy5]
+ ld [wMenuWrappingEnabled], a ; disable menu wrapping
+ ld a, [hJoy5]
ret
.noWrappingAround
- ld a,[wMenuWatchMovingOutOfBounds]
+ ld a, [wMenuWatchMovingOutOfBounds]
and a ; should we return if the user tried to go past the top or bottom?
- jr z,.checkOtherKeys
+ jr z, .checkOtherKeys
jr .checkIfAButtonOrBButtonPressed
PlaceMenuCursor:: ; 3b6d (0:3b6d)
- ld a,[wTopMenuItemY]
+ ld a, [wTopMenuItemY]
and a ; is the y coordinate 0?
- jr z,.adjustForXCoord
+ jr z, .adjustForXCoord
coord hl, 0, 0
- ld bc,SCREEN_WIDTH
+ ld bc, SCREEN_WIDTH
.topMenuItemLoop
- add hl,bc
+ add hl, bc
dec a
- jr nz,.topMenuItemLoop
+ jr nz, .topMenuItemLoop
.adjustForXCoord
- ld a,[wTopMenuItemX]
- ld b,0
- ld c,a
- add hl,bc
+ ld a, [wTopMenuItemX]
+ ld b, 0
+ ld c, a
+ add hl, bc
push hl
- ld a,[wLastMenuItem]
+ ld a, [wLastMenuItem]
and a ; was the previous menu id 0?
- jr z,.checkForArrow1
- ld bc,40
+ jr z, .checkForArrow1
+ ld bc, 40
push af
- ld a,[hFlags_0xFFFA]
- bit 1,a ; is the menu double spaced?
- jr z,.doubleSpaced1
- ld bc,20
+ ld a, [hFlags_0xFFFA]
+ bit 1, a ; is the menu double spaced?
+ jr z, .doubleSpaced1
+ ld bc, 20
.doubleSpaced1
pop af
.oldMenuItemLoop
- add hl,bc
+ add hl, bc
dec a
- jr nz,.oldMenuItemLoop
+ jr nz, .oldMenuItemLoop
.checkForArrow1
- ld a,[hl]
- cp a,"▶" ; was an arrow next to the previously selected menu item?
- jr nz,.skipClearingArrow
+ ld a, [hl]
+ cp a, "▶" ; was an arrow next to the previously selected menu item?
+ jr nz, .skipClearingArrow
.clearArrow
- ld a,[wTileBehindCursor]
- ld [hl],a
+ ld a, [wTileBehindCursor]
+ ld [hl], a
.skipClearingArrow
pop hl
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
and a
- jr z,.checkForArrow2
- ld bc,40
+ jr z, .checkForArrow2
+ ld bc, 40
push af
- ld a,[hFlags_0xFFFA]
- bit 1,a ; is the menu double spaced?
- jr z,.doubleSpaced2
- ld bc,20
+ ld a, [hFlags_0xFFFA]
+ bit 1, a ; is the menu double spaced?
+ jr z, .doubleSpaced2
+ ld bc, 20
.doubleSpaced2
pop af
.currentMenuItemLoop
- add hl,bc
+ add hl, bc
dec a
- jr nz,.currentMenuItemLoop
+ jr nz, .currentMenuItemLoop
.checkForArrow2
- ld a,[hl]
- cp a,"▶" ; has the right arrow already been placed?
- jr z,.skipSavingTile ; if so, don't lose the saved tile
- ld [wTileBehindCursor],a ; save tile before overwriting with right arrow
+ ld a, [hl]
+ cp a, "▶" ; has the right arrow already been placed?
+ jr z, .skipSavingTile ; if so, don't lose the saved tile
+ ld [wTileBehindCursor], a ; save tile before overwriting with right arrow
.skipSavingTile
- ld a,"▶" ; place right arrow
- ld [hl],a
- ld a,l
- ld [wMenuCursorLocation],a
- ld a,h
- ld [wMenuCursorLocation + 1],a
- ld a,[wCurrentMenuItem]
- ld [wLastMenuItem],a
+ ld a, "▶" ; place right arrow
+ ld [hl], a
+ ld a, l
+ ld [wMenuCursorLocation], a
+ ld a, h
+ ld [wMenuCursorLocation + 1], a
+ ld a, [wCurrentMenuItem]
+ ld [wLastMenuItem], a
ret
; This is used to mark a menu cursor other than the one currently being
; manipulated. In the case of submenus, this is used to show the location of
-; the menu cursor in the parent menu. In the case of swapping items in list,
+; the menu cursor in the parent menu. In the case of swapping items in list,
; this is used to mark the item that was first chosen to be swapped.
PlaceUnfilledArrowMenuCursor:: ; 3bd9 (0:3bd9)
- ld b,a
- ld a,[wMenuCursorLocation]
- ld l,a
- ld a,[wMenuCursorLocation + 1]
- ld h,a
- ld [hl],$ec ; outline of right arrow
- ld a,b
+ ld b, a
+ ld a, [wMenuCursorLocation]
+ ld l, a
+ ld a, [wMenuCursorLocation + 1]
+ ld h, a
+ ld [hl], $ec ; outline of right arrow
+ ld a, b
ret
; Replaces the menu cursor with a blank space.
EraseMenuCursor:: ; 3be6 (0:3be6)
- ld a,[wMenuCursorLocation]
- ld l,a
- ld a,[wMenuCursorLocation + 1]
- ld h,a
- ld [hl]," "
+ ld a, [wMenuCursorLocation]
+ ld l, a
+ ld a, [wMenuCursorLocation + 1]
+ ld h, a
+ ld [hl], " "
ret
; This toggles a blinking down arrow at hl on and off after a delay has passed.
; This is often called even when no blinking is occurring.
; The reason is that most functions that call this initialize H_DOWNARROWBLINKCNT1 to 0.
-; The effect is that if the tile at hl is initialized with a down arrow,
+; The effect is that if the tile at hl is initialized with a down arrow,
; this function will toggle that down arrow on and off, but if the tile isn't
; initliazed with a down arrow, this function does nothing.
; That allows this to be called without worrying about if a down arrow should
; be blinking.
HandleDownArrowBlinkTiming:: ; 3bf1 (0:3bf1)
- ld a,[hl]
- ld b,a
- ld a,$ee ; down arrow
+ ld a, [hl]
+ ld b, a
+ ld a, $ee ; down arrow
cp b
- jr nz,.downArrowOff
+ jr nz, .downArrowOff
.downArrowOn
- ld a,[H_DOWNARROWBLINKCNT1]
+ ld a, [H_DOWNARROWBLINKCNT1]
dec a
- ld [H_DOWNARROWBLINKCNT1],a
+ ld [H_DOWNARROWBLINKCNT1], a
ret nz
- ld a,[H_DOWNARROWBLINKCNT2]
+ ld a, [H_DOWNARROWBLINKCNT2]
dec a
- ld [H_DOWNARROWBLINKCNT2],a
+ ld [H_DOWNARROWBLINKCNT2], a
ret nz
- ld a," "
- ld [hl],a
- ld a,$ff
- ld [H_DOWNARROWBLINKCNT1],a
- ld a,$06
- ld [H_DOWNARROWBLINKCNT2],a
+ ld a, " "
+ ld [hl], a
+ ld a, $ff
+ ld [H_DOWNARROWBLINKCNT1], a
+ ld a, $06
+ ld [H_DOWNARROWBLINKCNT2], a
ret
.downArrowOff
- ld a,[H_DOWNARROWBLINKCNT1]
+ ld a, [H_DOWNARROWBLINKCNT1]
and a
ret z
dec a
- ld [H_DOWNARROWBLINKCNT1],a
+ ld [H_DOWNARROWBLINKCNT1], a
ret nz
dec a
- ld [H_DOWNARROWBLINKCNT1],a
- ld a,[H_DOWNARROWBLINKCNT2]
+ ld [H_DOWNARROWBLINKCNT1], a
+ ld a, [H_DOWNARROWBLINKCNT2]
dec a
- ld [H_DOWNARROWBLINKCNT2],a
+ ld [H_DOWNARROWBLINKCNT2], a
ret nz
- ld a,$06
- ld [H_DOWNARROWBLINKCNT2],a
- ld a,$ee ; down arrow
- ld [hl],a
+ ld a, $06
+ ld [H_DOWNARROWBLINKCNT2], a
+ ld a, $ee ; down arrow
+ ld [hl], a
ret
; The following code either enables or disables the automatic drawing of
@@ -4439,19 +4326,19 @@ EnableAutoTextBoxDrawing:: ; 3c29 (0:3c29)
jr AutoTextBoxDrawingCommon
DisableAutoTextBoxDrawing:: ; 3c2c (0:3c2c)
- ld a,$01
+ ld a, $01
AutoTextBoxDrawingCommon:: ; 3c2e (0:3c2d)
- ld [wAutoTextBoxDrawingControl],a
+ ld [wAutoTextBoxDrawingControl], a
xor a
- ld [wDoNotWaitForButtonPressAfterDisplayingText],a ; make DisplayTextID wait for button press
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a ; make DisplayTextID wait for button press
ret
PrintText:: ; 3c36 (0:3c36)
; Print text hl at (1, 14).
push hl
- ld a,MESSAGE_BOX
- ld [wTextBoxID],a
+ ld a, MESSAGE_BOX
+ ld [wTextBoxID], a
call DisplayTextBoxID
call UpdateSprites
call Delay3
@@ -4462,9 +4349,9 @@ PrintText_NoCreatingTextBox:: ; 3c46 (0:3c46)
FarPrintText:: ; 3c4c (0:3c4c)
; print text b:hl at (1, 14)
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
- ld a,b
+ ld a, b
call BankswitchCommon
call PrintText
pop af
@@ -4675,7 +4562,7 @@ endm
ret
.NextDigit: ; 3d85 (0:3d85)
-; Increment unless the number is left-aligned,
+; Increment unless the number is left-aligned,
; leading zeroes are not printed, and no digits
; have been printed yet.
bit BIT_LEADING_ZEROES, d
@@ -4690,8 +4577,7 @@ endm
ret
-CallFunctionInTable:: ; 3d93 (0:3d93)
-JumpTable::
+JumpTable:: ; 3d93 (0:3d93)
; Call function a in jumptable hl.
; de is not preserved.
push hl
@@ -4777,9 +4663,9 @@ GBPalNormal:: ; 3de0 (0:3de0)
GBPalWhiteOut:: ; 3df2 (0:3df2)
; White out all palettes.
xor a
- ld [rBGP],a
- ld [rOBP0],a
- ld [rOBP1],a
+ ld [rBGP], a
+ ld [rOBP0], a
+ ld [rOBP1], a
call UpdateGBCPal_BGP
call UpdateGBCPal_OBP0
call UpdateGBCPal_OBP1
@@ -4787,9 +4673,9 @@ GBPalWhiteOut:: ; 3df2 (0:3df2)
RunDefaultPaletteCommand:: ; 3e03 (0:3e03)
- ld b,$ff
+ ld b, $ff
RunPaletteCommand:: ; 3e05 (0:3e05)
- ld a,[wOnSGB]
+ ld a, [wOnSGB]
and a
ret z
predef_jump _RunPaletteCommand
@@ -4831,7 +4717,7 @@ ReloadMapSpriteTilePatterns:: ; 3e1e (0:3e1e)
GiveItem:: ; 3e3f (0:3e3f)
-; Give player quantity c of item b,
+; Give player quantity c of item b,
; and copy the item's name to wcf4b.
; Return carry on success.
ld a, b
@@ -4839,7 +4725,7 @@ GiveItem:: ; 3e3f (0:3e3f)
ld [wcf91], a
ld a, c
ld [wItemQuantity], a
- ld hl,wNumBagItems
+ ld hl, wNumBagItems
call AddItemToInventory
ret nc
call GetItemName
@@ -4871,22 +4757,22 @@ Random:: ; 3e6d (0:3e6d)
ret
BankswitchCommon:: ; 3e7e (0:3e7e)
- ld [H_LOADEDROMBANK],a
+ ld [H_LOADEDROMBANK], a
ld [MBC1RomBank], a
ret
Bankswitch:: ; 3e84 (0:3e84)
; self-contained bankswitch, use this when not in the home bank
; switches to the bank in b
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
- ld a,b
- ld [H_LOADEDROMBANK],a
+ ld a, b
+ ld [H_LOADEDROMBANK], a
ld [MBC1RomBank], a
call JumpToAddress
pop bc
- ld a,b
- ld [H_LOADEDROMBANK],a
+ ld a, b
+ ld [H_LOADEDROMBANK], a
ld [MBC1RomBank], a
ret
JumpToAddress:: ; 3e98 (0:3e98)
@@ -4897,9 +4783,9 @@ SwitchSRAMBankAndLatchClockData:: ; 3e99 (0:3e99)
ld a, $1
ld [MBC1SRamBankingMode], a
ld a, SRAM_ENABLE
- ld [MBC1SRamEnable],a
+ ld [MBC1SRamEnable], a
pop af
- ld [MBC1SRamBank],a
+ ld [MBC1SRamBank], a
ret
PrepareRTCDataAndDisableSRAM:: ; 3ea9 (0:3ea9)
@@ -4929,11 +4815,11 @@ CheckForHiddenObjectOrBookshelfOrCardKeyDoor:: ; 3ef9 (0:3ef9)
and a
jr nz, .hiddenObjectNotFound
xor a
- ld [$ffeb],a
+ ld [$ffeb], a
ld a, [wHiddenObjectFunctionRomBank]
call BankswitchCommon
call JumpToAddress
- ld a,[$ffeb]
+ ld a, [$ffeb]
jr .done
.hiddenObjectNotFound
predef GetTileAndCoordsInFrontOfPlayer
@@ -4977,72 +4863,77 @@ SetMapTextPointer:: ; 3f54 (0:3f54)
ret
TextPredefs:: ; 3f67 (0:3f67)
- dr $3f67,$4000
-; add_tx_pre CardKeySuccessText ; 01
-; add_tx_pre CardKeyFailText ; 02
-; add_tx_pre RedBedroomPC ; 03
-; add_tx_pre RedBedroomSNESText ; 04
-; add_tx_pre PushStartText ; 05
-; add_tx_pre SaveOptionText ; 06
-; add_tx_pre StrengthsAndWeaknessesText ; 07
-; add_tx_pre OakLabEmailText ; 08
-; add_tx_pre AerodactylFossilText ; 09
-; add_tx_pre Route15UpstairsBinocularsText ; 0A
-; add_tx_pre KabutopsFossilText ; 0B
-; add_tx_pre GymStatueText1 ; 0C
-; add_tx_pre GymStatueText2 ; 0D
-; add_tx_pre BookcaseText ; 0E
-; add_tx_pre ViridianCityPokecenterBenchGuyText ; 0F
-; add_tx_pre PewterCityPokecenterBenchGuyText ; 10
-; add_tx_pre CeruleanCityPokecenterBenchGuyText ; 11
-; add_tx_pre LavenderCityPokecenterBenchGuyText ; 12
-; add_tx_pre VermilionCityPokecenterBenchGuyText ; 13
-; add_tx_pre CeladonCityPokecenterBenchGuyText ; 14
-; add_tx_pre CeladonCityHotelText ; 15
-; add_tx_pre FuchsiaCityPokecenterBenchGuyText ; 16
-; add_tx_pre CinnabarIslandPokecenterBenchGuyText ; 17
-; add_tx_pre SaffronCityPokecenterBenchGuyText ; 18
-; add_tx_pre MtMoonPokecenterBenchGuyText ; 19
-; add_tx_pre RockTunnelPokecenterBenchGuyText ; 1A
-; add_tx_pre UnusedBenchGuyText1 ; 1B
-; add_tx_pre UnusedBenchGuyText2 ; 1C
-; add_tx_pre UnusedBenchGuyText3 ; 1D
-; add_tx_pre TerminatorText_62508 ; 1E
-; add_tx_pre PredefText1f ; 1F
-; add_tx_pre ViridianSchoolNotebook ; 20
-; add_tx_pre ViridianSchoolBlackboard ; 21
-; add_tx_pre JustAMomentText ; 22
-; add_tx_pre PredefText23 ; 23
-; add_tx_pre FoundHiddenItemText ; 24
-; add_tx_pre HiddenItemBagFullText ; 25
-; add_tx_pre VermilionGymTrashText ; 26
-; add_tx_pre IndigoPlateauHQText ; 27
-; add_tx_pre GameCornerOutOfOrderText ; 28
-; add_tx_pre GameCornerOutToLunchText ; 29
-; add_tx_pre GameCornerSomeonesKeysText ; 2A
-; add_tx_pre FoundHiddenCoinsText ; 2B
-; add_tx_pre DroppedHiddenCoinsText ; 2C
-; add_tx_pre BillsHouseMonitorText ; 2D
-; add_tx_pre BillsHouseInitiatedText ; 2E
-; add_tx_pre BillsHousePokemonList ; 2F
-; add_tx_pre MagazinesText ; 30
-; add_tx_pre CinnabarGymQuiz ; 31
-; add_tx_pre GameCornerNoCoinsText ; 32
-; add_tx_pre GameCornerCoinCaseText ; 33
-; add_tx_pre LinkCableHelp ; 34
-; add_tx_pre TMNotebook ; 35
-; add_tx_pre FightingDojoText ; 36
-; add_tx_pre FightingDojoText_52a10 ; 37
-; add_tx_pre FightingDojoText_52a1d ; 38
-; add_tx_pre NewBicycleText ; 39
-; add_tx_pre IndigoPlateauStatues ; 3A
-; add_tx_pre VermilionGymTrashSuccesText1 ; 3B
-; add_tx_pre VermilionGymTrashSuccesText2 ; 3C
-; add_tx_pre VermilionGymTrashSuccesText3 ; 3D
-; add_tx_pre VermilionGymTrashFailText ; 3E
-; add_tx_pre TownMapText ; 3F
-; add_tx_pre BookOrSculptureText ; 40
-; add_tx_pre ElevatorText ; 41
-; add_tx_pre PokemonStuffText ; 42
-; add_tx_pre $7a9b ; 43
-; add_tx_pre $7ad3 ; 44
+const_value = 1
+
+ add_tx_pre CardKeySuccessText ; 01
+ add_tx_pre CardKeyFailText ; 02
+ add_tx_pre RedBedroomPCText ; 03
+ add_tx_pre RedBedroomSNESText ; 04
+ add_tx_pre PushStartText ; 05
+ add_tx_pre SaveOptionText ; 06
+ add_tx_pre StrengthsAndWeaknessesText ; 07
+ add_tx_pre OakLabEmailText ; 08
+ add_tx_pre AerodactylFossilText ; 09
+ add_tx_pre Route15UpstairsBinocularsText ; 0A
+ add_tx_pre KabutopsFossilText ; 0B
+ add_tx_pre FanClubPicture1Text ; 0C
+ add_tx_pre FanClubPicture2Text ; 0D
+ add_tx_pre GymStatueText1 ; 0E
+ add_tx_pre GymStatueText2 ; 0F
+ add_tx_pre BookcaseText ; 10
+ add_tx_pre ViridianCityPokecenterBenchGuyText ; 11
+ add_tx_pre PewterCityPokecenterBenchGuyText ; 12
+ add_tx_pre CeruleanCityPokecenterBenchGuyText ; 13
+ add_tx_pre LavenderCityPokecenterBenchGuyText ; 14
+ add_tx_pre VermilionCityPokecenterBenchGuyText ; 15
+ add_tx_pre CeladonCityPokecenterBenchGuyText ; 16
+ add_tx_pre CeladonCityHotelText ; 17
+ add_tx_pre FuchsiaCityPokecenterBenchGuyText ; 18
+ add_tx_pre CinnabarIslandPokecenterBenchGuyText ; 19
+ add_tx_pre SaffronCityPokecenterBenchGuyText ; 1A
+ add_tx_pre MtMoonPokecenterBenchGuyText ; 1B
+ add_tx_pre RockTunnelPokecenterBenchGuyText ; 1C
+ add_tx_pre UnusedBenchGuyText1 ; 1D
+ add_tx_pre UnusedBenchGuyText2 ; 1E
+ add_tx_pre UnusedBenchGuyText3 ; 1F
+ add_tx_pre UnusedPredefText ; 20
+ add_tx_pre PokemonCenterPCText ; 21
+ add_tx_pre ViridianSchoolNotebook ; 22
+ add_tx_pre ViridianSchoolBlackboard ; 23
+ ; add_tx_pre FakeTextPredef22
+ ; add_tx_pre FakeTextPredef23
+ add_tx_pre JustAMomentText ; 24
+ add_tx_pre OpenBillsPCText ; 25
+ add_tx_pre FoundHiddenItemText ; 26
+ add_tx_pre HiddenItemBagFullText ; 27
+ add_tx_pre VermilionGymTrashText ; 28
+ add_tx_pre IndigoPlateauHQText ; 29
+ add_tx_pre GameCornerOutOfOrderText ; 2A
+ add_tx_pre GameCornerOutToLunchText ; 2B
+ add_tx_pre GameCornerSomeonesKeysText ; 2C
+ add_tx_pre FoundHiddenCoinsText ; 2D
+ add_tx_pre DroppedHiddenCoinsText ; 2E
+ add_tx_pre BillsHouseMonitorText ; 2F
+ add_tx_pre BillsHouseInitiatedText ; 30
+ add_tx_pre BillsHousePokemonList ; 31
+ add_tx_pre MagazinesText ; 32
+ add_tx_pre CinnabarGymQuiz ; 33
+ add_tx_pre GameCornerNoCoinsText ; 34
+ add_tx_pre GameCornerCoinCaseText ; 35
+ add_tx_pre LinkCableHelp ; 36
+ add_tx_pre TMNotebook ; 37
+ add_tx_pre FightingDojoText ; 38
+ add_tx_pre EnemiesOnEverySideText ; 39
+ add_tx_pre WhatGoesAroundComesAroundText ; 3A
+ add_tx_pre NewBicycleText ; 3B
+ add_tx_pre IndigoPlateauStatues ; 3C XXX unused
+ add_tx_pre VermilionGymTrashSuccesText1 ; 3D
+ add_tx_pre VermilionGymTrashSuccesText2 ; 3E
+ add_tx_pre VermilionGymTrashSuccesText3 ; 3F
+ add_tx_pre VermilionGymTrashFailText ; 40
+ add_tx_pre TownMapText ; 41
+ add_tx_pre BookOrSculptureText ; 42
+ add_tx_pre ElevatorText ; 43
+ add_tx_pre PokemonStuffText ; 44
+
+ ; dr $3f67, $4000
diff --git a/home/overworld.asm b/home/overworld.asm
index 1f84597d..bc7ae029 100644
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -638,7 +638,7 @@ CheckMapConnections:: ; 05db (0:05db)
ld [wCurrentTileBlockMapViewPointer + 1],a
.loadNewMap ; 06ce (0:06ce)
; load the connected map that was entered
- ld hl,wd430
+ ld hl,wPikachuOverworldStateFlags
set 4,[hl]
ld a,$2
ld [wd431],a
@@ -1222,7 +1222,7 @@ CollisionCheckOnLand:: ; 0a1c (0:0a1c)
; if no sprite collision
cp $f
jr nz,.collision
- call Func_154a
+ call CheckPikachuAsleep
jr nz,.collision
ld a,[hJoyHeld]
and $2
@@ -1716,7 +1716,7 @@ CollisionCheckOnWater:: ; 0cca (0:0cca)
.stopSurfing ; based game freak
ld a,$3
ld [wd431],a
- ld hl,wd430
+ ld hl,wPikachuOverworldStateFlags
set 5,[hl]
xor a
ld [wWalkBikeSurfState],a
diff --git a/home/pikachu.asm b/home/pikachu.asm
new file mode 100755
index 00000000..9e0ab541
--- /dev/null
+++ b/home/pikachu.asm
@@ -0,0 +1,113 @@
+Func_1510:: ; 1510 (0:1510)
+ push hl
+ ld hl, wPikachuOverworldStateFlags
+ set 7, [hl]
+ ld hl, wSpriteStateData1 + $f2 ; pikachu data?
+ ld [hl], $ff
+ pop hl
+ ret
+
+Func_151d:: ; 151d (0:151d)
+ push hl
+ ld hl, wPikachuOverworldStateFlags
+ res 7, [hl]
+ pop hl
+ ret
+
+Func_1525:: ; 1525 (0:1525)
+ push hl
+ ld hl, wPikachuOverworldStateFlags
+ res 3, [hl]
+ pop hl
+ ret
+
+Func_152d:: ; 152d (0:152d)
+ push hl
+ ld hl, wPikachuOverworldStateFlags
+ set 3, [hl]
+ ld hl, wSpriteStateData1 + $f2 ; pikachu data?
+ ld [hl], $ff
+ pop hl
+ ret
+
+SetPikachuAsleep:: ; 153a (0:153a)
+ push hl
+ ld hl, wPikachuOverworldStateFlags
+ set 1, [hl]
+ pop hl
+ ret
+
+ResetPikachuAsleep:: ; 1542 (0:1542)
+ push hl
+ ld hl, wPikachuOverworldStateFlags
+ res 1, [hl]
+ pop hl
+ ret
+
+CheckPikachuAsleep:: ; 154a (0:154a)
+ push hl
+ ld hl, wPikachuOverworldStateFlags
+ bit 1, [hl]
+ pop hl
+ ret
+
+Func_1552:: ; 1552 (0:1552)
+ ld a, [hl]
+ dec a
+ swap a
+ ld [hTilePlayerStandingOn], a
+ homecall Func_fc6d5 ; 3f:46d5
+ ret
+
+Func_1568:: ; 1568 (0:1568)
+ ld b, $0
+ ld c, a
+.asm_156b
+ inc b
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_1578
+ cp c
+ jr nz, .asm_156b
+ dec b
+ dec hl
+ scf
+ ret
+.asm_1578
+ dec b
+ dec hl
+ and a
+ ret
+
+Func_157c:: ; 157c (0:157c)
+ push hl
+ push bc
+ ld a, [H_LOADEDROMBANK]
+ push af
+ ld a, [wd44a]
+ call BankswitchCommon
+ ld hl, wd44b
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, [bc]
+ inc bc
+ ld [hl], b
+ dec hl
+ ld [hl], c
+ ld c, a
+ pop af
+ call BankswitchCommon
+ ld a, c
+ pop bc
+ pop hl
+ ret
+
+Func_159b:: ; 159b (0:159b)
+ ld a, [H_LOADEDROMBANK]
+ ld b, a
+ push af
+ callbs Func_fd2a1
+ pop af
+ call BankswitchCommon
+ ret
diff --git a/home/text.asm b/home/text.asm
index da20a833..a0e860d9 100644
--- a/home/text.asm
+++ b/home/text.asm
@@ -18,7 +18,7 @@ TextBoxBorder:: ; 16f0 (0:16f0)
.next
push hl
ld a, "│"
- ld [hli],a
+ ld [hli], a
ld a, " "
call NPlaceChar
ld [hl], "│"
@@ -49,32 +49,32 @@ NPlaceChar:: ; 171d (0:171d)
PlaceString:: ; 1723 (0:1723)
push hl
PlaceNextChar:: ; 1724 (0:1724)
- ld a,[de]
+ ld a, [de]
cp "@"
- jr nz,Char4ETest
- ld b,h
- ld c,l
+ jr nz, Char4ETest
+ ld b, h
+ ld c, l
pop hl
ret
Char4ETest:: ; 172d (0:172d)
cp $4E
- jr nz,.next
- ld bc,$0028
- ld a,[hFlags_0xFFFA]
- bit 2,a
- jr z,.next2
- ld bc,SCREEN_WIDTH
+ jr nz, .next
+ ld bc, $0028
+ ld a, [hFlags_0xFFFA]
+ bit 2, a
+ jr z, .next2
+ ld bc, SCREEN_WIDTH
.next2
pop hl
- add hl,bc
+ add hl, bc
push hl
jp PlaceNextChar_inc ; 17b6
.next
cp $4F
- jr nz,.next3
+ jr nz, .next3
pop hl
coord hl, 1, 16
push hl
@@ -82,56 +82,56 @@ Char4ETest:: ; 172d (0:172d)
.next3 ; Check against a dictionary
and a
- jp z,Char00
+ jp z, Char00
cp $4C
- jp z,Char4C
+ jp z, Char4C
cp $4B
- jp z,Char4B
+ jp z, Char4B
cp $51
- jp z,Char51
+ jp z, Char51
cp $49
- jp z,Char49
+ jp z, Char49
cp $52
- jp z,Char52
+ jp z, Char52
cp $53
- jp z,Char53
+ jp z, Char53
cp $54
- jp z,Char54
+ jp z, Char54
cp $5B
- jp z,Char5B
+ jp z, Char5B
cp $5E
- jp z,Char5E
+ jp z, Char5E
cp $5C
- jp z,Char5C
+ jp z, Char5C
cp $5D
- jp z,Char5D
+ jp z, Char5D
cp $55
- jp z,Char55
+ jp z, Char55
cp $56
- jp z,Char56
+ jp z, Char56
cp $57
- jp z,Char57
+ jp z, Char57
cp $58
- jp z,Char58
+ jp z, Char58
cp $4A
- jp z,Char4A
+ jp z, Char4A
cp $5F
- jp z,Char5F
+ jp z, Char5F
cp $59
- jp z,Char59
+ jp z, Char59
cp $5A
- jp z,Char5A
- ld [hli],a
+ jp z, Char5A
+ ld [hli], a
call PrintLetterDelay
PlaceNextChar_inc:: ; 17b6 (0:17b6)
inc de
jp PlaceNextChar
Char00:: ; 17ba (0:17ba)
- ld b,h
- ld c,l
+ ld b, h
+ ld c, l
pop hl
- ld de,Char00Text
+ ld de, Char00Text
dec de
ret
@@ -141,47 +141,47 @@ Char00Text:: ; 17c2 (0:17c2) ; “%d ERROR.”
Char52:: ; 17c7 (0:17c7) ; player’s name
push de
- ld de,wPlayerName
+ ld de, wPlayerName
jr FinishDTE
Char53:: ; 17cd (0:17cd) ; rival’s name
push de
- ld de,wRivalName
+ ld de, wRivalName
jr FinishDTE
Char5D:: ; 17d3 (0:17d3) ; TRAINER
push de
- ld de,Char5DText
+ ld de, Char5DText
jr FinishDTE
Char5C:: ; 17d9 (0:17d9) ; TM
push de
- ld de,Char5CText
+ ld de, Char5CText
jr FinishDTE
Char5B:: ; 17df (0:17df) ; PC
push de
- ld de,Char5BText
+ ld de, Char5BText
jr FinishDTE
Char5E:: ; 17e5 (0:17e5) ; ROCKET
push de
- ld de,Char5EText
+ ld de, Char5EText
jr FinishDTE
Char54:: ; 17eb (0:17eb) ; POKé
push de
- ld de,Char54Text
+ ld de, Char54Text
jr FinishDTE
Char56:: ; 17f1 (0:17f1) ; ……
push de
- ld de,Char56Text
+ ld de, Char56Text
jr FinishDTE
Char4A:: ; 17f7 (0:17f7) ; PKMN
push de
- ld de,Char4AText
+ ld de, Char4AText
jr FinishDTE
Char59:: ; 17fb (0:17fb)
@@ -190,7 +190,7 @@ Char59:: ; 17fb (0:17fb)
; or
; player active monster’s name
; (like Char5A but flipped)
- ld a,[H_WHOSETURN]
+ ld a, [H_WHOSETURN]
xor 1
jr MonsterNameCharsCommon
@@ -199,26 +199,26 @@ Char5A:: ; 1803 (0:1803)
; player active monster’s name
; or
; enemy active monster’s name, prefixed with “Enemy ”
- ld a,[H_WHOSETURN]
+ ld a, [H_WHOSETURN]
MonsterNameCharsCommon:: ; 1a37 (0:1a37)
push de
and a
- jr nz,.Enemy
- ld de,wBattleMonNick ; player active monster name
+ jr nz, .Enemy
+ ld de, wBattleMonNick ; player active monster name
jr FinishDTE
.Enemy
; print “Enemy ”
- ld de,Char5AText
+ ld de, Char5AText
call PlaceString
- ld h,b
- ld l,c
- ld de,wEnemyMonNick ; enemy active monster name
+ ld h, b
+ ld l, c
+ ld de, wEnemyMonNick ; enemy active monster name
FinishDTE:: ; 1819 (0:1819)
call PlaceString
- ld h,b
- ld l,c
+ ld h, b
+ ld l, c
pop de
inc de
jp PlaceNextChar
@@ -238,16 +238,16 @@ Char56Text:: ; 183d (0:183d)
Char5AText:: ; 1840 (0:1840)
db "Enemy @"
Char4AText:: ; 1847 (0:1847)
- db $E1,$E2,"@" ; PKMN
+ db $E1, $E2, "@" ; PKMN
Char55:: ; 184a (0:184a)
push de
- ld b,h
- ld c,l
- ld hl,Char55Text
+ ld b, h
+ ld c, l
+ ld hl, Char55Text
call TextCommandProcessor ; 1919
- ld h,b
- ld l,c
+ ld h, b
+ ld l, c
pop de
inc de
jp PlaceNextChar
@@ -259,15 +259,15 @@ Char55Text:: ; 185a (0:185a)
Char5F:: ; 185f (0:185f)
; ends a Pokédex entry
- ld [hl],"."
+ ld [hl], "."
pop hl
ret
Char58:: ; 1863 (0:1863)
- ld a,[wLinkState]
+ ld a, [wLinkState]
cp LINK_STATE_BATTLING
- jp z,Next1870
- ld a,$EE
+ jp z, Next1870
+ ld a, $EE
Coorda 18, 16
Next1870:: ; 1870 (0:1870)
call ProtectedDelay3 ; 1913
@@ -276,7 +276,7 @@ Next1870:: ; 1870 (0:1870)
Coorda 18, 16
Char57:: ; 1aad (0:1aad)
pop hl
- ld de,Char58Text
+ ld de, Char58Text
dec de
ret
@@ -285,36 +285,36 @@ Char58Text:: ; 1881 (0:1881)
Char51:: ; 1882 (0:1882)
push de
- ld a,$EE
+ ld a, $EE
Coorda 18, 16
call ProtectedDelay3
call ManualTextScroll
coord hl, 1, 13
lb bc, 4, 18
call ClearScreenArea
- ld c,20
+ ld c, 20
call DelayFrames
pop de
coord hl, 1, 14
jp PlaceNextChar_inc
Char49:: ; 18a3 (0:18a3)
- ld a,[hFlags_0xFFFA]
- bit 3,a
- jr z,.Char49
- ld a,$4e
+ ld a, [hFlags_0xFFFA]
+ bit 3, a
+ jr z, .Char49
+ ld a, $4e
jp Char4ETest
.Char49
push de
- ld a,$EE
+ ld a, $EE
Coorda 18, 16
call ProtectedDelay3
call ManualTextScroll
coord hl, 1, 10
lb bc, 7, 18
call ClearScreenArea
- ld c,20
+ ld c, 20
call DelayFrames
pop de
pop hl
@@ -323,7 +323,7 @@ Char49:: ; 18a3 (0:18a3)
jp PlaceNextChar_inc
Char4B:: ; 18d1 (0:18d1)
- ld a,$EE
+ ld a, $EE
Coorda 18, 16
call ProtectedDelay3
push de
@@ -345,25 +345,25 @@ Next18F1:: ; 18f1 (0:18f1)
coord de, 0, 13
ld b, 60
.next
- ld a,[hli]
- ld [de],a
+ ld a, [hli]
+ ld [de], a
inc de
dec b
- jr nz,.next
+ jr nz, .next
coord hl, 1, 16
ld a, " "
- ld b,SCREEN_WIDTH - 2
+ ld b, SCREEN_WIDTH - 2
.next2
- ld [hli],a
+ ld [hli], a
dec b
- jr nz,.next2
+ jr nz, .next2
; wait five frames
- ld b,5
+ ld b, 5
.WaitFrame
call DelayFrame
dec b
- jr nz,.WaitFrame
+ jr nz, .WaitFrame
ret
@@ -374,42 +374,42 @@ ProtectedDelay3:: ; 1913 (0:1913)
ret
TextCommandProcessor:: ; 1919 (0:1919)
- ld a,[wLetterPrintingDelayFlags]
+ ld a, [wLetterPrintingDelayFlags]
push af
- set 1,a
- ld e,a
- ld a,[$fff9]
+ set 1, a
+ ld e, a
+ ld a, [$fff9]
xor e
- ld [wLetterPrintingDelayFlags],a
- ld a,c
- ld [wUnusedCC3A],a
- ld a,b
- ld [wUnusedCC3B],a
+ ld [wLetterPrintingDelayFlags], a
+ ld a, c
+ ld [wTextDestinationTileAddrBuffer], a
+ ld a, b
+ ld [wTextDestinationTileAddrBuffer + 1], a
NextTextCommand:: ; 192e (0:192e)
- ld a,[hli]
+ ld a, [hli]
cp a, "@" ; terminator
- jr nz,.doTextCommand
+ jr nz, .doTextCommand
pop af
- ld [wLetterPrintingDelayFlags],a
+ ld [wLetterPrintingDelayFlags], a
ret
.doTextCommand
push hl
- cp a,$17
- jp z,TextCommand17
- cp a,$0e
- jp nc,TextCommand0B ; if a != 0x17 and a >= 0xE, go to command 0xB
+ cp a, $17
+ jp z, TextCommand17
+ cp a, $0e
+ jp nc, TextCommand0B ; if a != 0x17 and a >= 0xE, go to command 0xB
; if a < 0xE, use a jump table
- ld hl,TextCommandJumpTable
+ ld hl, TextCommandJumpTable
push bc
add a
- ld b,$00
- ld c,a
- add hl,bc
+ ld b, $00
+ ld c, a
+ add hl, bc
pop bc
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
jp [hl]
; draw box
@@ -419,17 +419,17 @@ NextTextCommand:: ; 192e (0:192e)
; CC = width
TextCommand04:: ; 1951 (0:1951)
pop hl
- ld a,[hli]
- ld e,a
- ld a,[hli]
- ld d,a
- ld a,[hli]
- ld b,a
- ld a,[hli]
- ld c,a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld c, a
push hl
- ld h,d
- ld l,e
+ ld h, d
+ ld l, e
call TextBoxBorder
pop hl
jr NextTextCommand
@@ -438,13 +438,13 @@ TextCommand04:: ; 1951 (0:1951)
; 00{string}
TextCommand00:: ; 1963 (0:1963)
pop hl
- ld d,h
- ld e,l
- ld h,b
- ld l,c
+ ld d, h
+ ld e, l
+ ld h, b
+ ld l, c
call PlaceString
- ld h,d
- ld l,e
+ ld h, d
+ ld l, e
inc hl
jr NextTextCommand
@@ -453,13 +453,13 @@ TextCommand00:: ; 1963 (0:1963)
; AAAA = address of string
TextCommand01:: ; 1970 (0:1970)
pop hl
- ld a,[hli]
- ld e,a
- ld a,[hli]
- ld d,a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
push hl
- ld h,b
- ld l,c
+ ld h, b
+ ld l, c
call PlaceString
pop hl
jr NextTextCommand
@@ -472,18 +472,18 @@ TextCommand01:: ; 1970 (0:1970)
; bits 5-7 = unknown flags
TextCommand02:: ; 197e (0:197e)
pop hl
- ld a,[hli]
- ld e,a
- ld a,[hli]
- ld d,a
- ld a,[hli]
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
push hl
- ld h,b
- ld l,c
- ld c,a
+ ld h, b
+ ld l, c
+ ld c, a
call PrintBCDNumber
- ld b,h
- ld c,l
+ ld b, h
+ ld c, l
pop hl
jr NextTextCommand
@@ -492,12 +492,12 @@ TextCommand02:: ; 197e (0:197e)
; AAAA = new destination address
TextCommand03:: ; 1990 (0:1990)
pop hl
- ld a,[hli]
- ld [wUnusedCC3A],a
- ld c,a
- ld a,[hli]
- ld [wUnusedCC3B],a
- ld b,a
+ ld a, [hli]
+ ld [wTextDestinationTileAddrBuffer], a
+ ld c, a
+ ld a, [hli]
+ ld [wTextDestinationTileAddrBuffer + 1], a
+ ld b, a
jp NextTextCommand
; repoint destination to second line of dialogue text box
@@ -512,15 +512,15 @@ TextCommand05:: ; 199e (0:199e)
; 06
; (no arguments)
TextCommand06:: ; 19a5 (0:19a5)
- ld a,[wLinkState]
- cp a,LINK_STATE_BATTLING
- jp z,TextCommand0D
- ld a,$ee ; down arrow
+ ld a, [wLinkState]
+ cp a, LINK_STATE_BATTLING
+ jp z, TextCommand0D
+ ld a, $ee ; down arrow
Coorda 18, 16 ; place down arrow in lower right corner of dialogue text box
push bc
call ManualTextScroll ; blink arrow and wait for A or B to be pressed
pop bc
- ld a," "
+ ld a, " "
Coorda 18, 16 ; overwrite down arrow with blank space
pop hl
jp NextTextCommand
@@ -529,7 +529,7 @@ TextCommand06:: ; 19a5 (0:19a5)
; 07
; (no arguments)
TextCommand07:: ; 19c0 (0:19c0)
- ld a," "
+ ld a, " "
Coorda 18, 16 ; place blank space in lower right corner of dialogue text box
call Next18F1 ; scroll up text
call Next18F1
@@ -541,7 +541,7 @@ TextCommand07:: ; 19c0 (0:19c0)
; 08{code}
TextCommand08:: ; 19d2 (0:19d2)
pop hl
- ld de,NextTextCommand
+ ld de, NextTextCommand
push de ; return address
jp [hl]
@@ -553,25 +553,25 @@ TextCommand08:: ; 19d2 (0:19d2)
; bits 4-7 = how long the number is in bytes
TextCommand09:: ; 19d8 (0:19d8)
pop hl
- ld a,[hli]
- ld e,a
- ld a,[hli]
- ld d,a
- ld a,[hli]
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
push hl
- ld h,b
- ld l,c
- ld b,a
- and a,$0f
- ld c,a
- ld a,b
- and a,$f0
+ ld h, b
+ ld l, c
+ ld b, a
+ and a, $0f
+ ld c, a
+ ld a, b
+ and a, $f0
swap a
- set BIT_LEFT_ALIGN,a
- ld b,a
+ set BIT_LEFT_ALIGN, a
+ ld b, a
call PrintNumber
- ld b,h
- ld c,l
+ ld b, h
+ ld c, l
pop hl
jp NextTextCommand
@@ -581,10 +581,10 @@ TextCommand09:: ; 19d8 (0:19d8)
TextCommand0A:: ; 19f6 (0:19f6)
push bc
call Joypad
- ld a,[hJoyHeld]
- and a,A_BUTTON | B_BUTTON
- jr nz,.skipDelay
- ld c,30
+ ld a, [hJoyHeld]
+ and a, A_BUTTON | B_BUTTON
+ jr nz, .skipDelay
+ ld c, 30
call DelayFrames
.skipDelay
pop bc
@@ -598,24 +598,24 @@ TextCommand0B:: ; 1a0a (0:1a0a)
pop hl
push bc
dec hl
- ld a,[hli]
- ld b,a ; b = command number that got us here
+ ld a, [hli]
+ ld b, a ; b = command number that got us here
push hl
- ld hl,TextCommandSounds
+ ld hl, TextCommandSounds
.loop
- ld a,[hli]
+ ld a, [hli]
cp b
- jr z,.matchFound
+ jr z, .matchFound
inc hl
jr .loop
.matchFound
- cp a,$14
- jr z,.pokemonCry
- cp a,$15
- jr z,.pokemonCry
- cp a,$16
- jr z,.pokemonCry
- ld a,[hl]
+ cp a, $14
+ jr z, .pokemonCry
+ cp a, $15
+ jr z, .pokemonCry
+ cp a, $16
+ jr z, .pokemonCry
+ ld a, [hl]
call PlaySound
call WaitForSoundToFinish
pop hl
@@ -623,7 +623,7 @@ TextCommand0B:: ; 1a0a (0:1a0a)
jp NextTextCommand
.pokemonCry
push de
- ld a,[hl]
+ ld a, [hl]
call PlayCry
pop de
pop hl
@@ -632,43 +632,43 @@ TextCommand0B:: ; 1a0a (0:1a0a)
; format: text command ID, sound ID or cry ID
TextCommandSounds:: ; 1a3d (0:1a3d)
- db $0B,$86 ; (SFX_02_3a - SFX_Headers_02) / 3
- db $12,$9A ; (SFX_08_46 - SFX_Headers_08) / 3
- db $0E,$91 ; (SFX_02_41 - SFX_Headers_02) / 3
- db $0F,$86 ; (SFX_02_3a - SFX_Headers_02) / 3
- db $10,$89 ; (SFX_02_3b - SFX_Headers_02) / 3
- db $11,$94 ; (SFX_02_42 - SFX_Headers_02) / 3
- db $13,$98 ; (SFX_08_45 - SFX_Headers_08) / 3
- db $14,PIKACHU ; used in OakSpeech
- db $15,PIDGEOT ; used in SaffronCityText12
- db $16,DEWGONG ; unused?
+ db $0B, SFX_GET_ITEM_1
+ db $12, SFX_TURN_OFF_PC
+ db $0E, SFX_POKEDEX_RATING
+ db $0F, SFX_GET_ITEM_1
+ db $10, SFX_GET_ITEM_2
+ db $11, SFX_GET_KEY_ITEM
+ db $13, SFX_TRADE_MACHINE
+ db $14, PIKACHU ; used in OakSpeech
+ db $15, PIDGEOT ; used in SaffronCityText12
+ db $16, DEWGONG ; unused?
; draw ellipses
; 0CAA
; AA = number of ellipses to draw
TextCommand0C:: ; 1a51 (0:1a51)
pop hl
- ld a,[hli]
- ld d,a
+ ld a, [hli]
+ ld d, a
push hl
- ld h,b
- ld l,c
+ ld h, b
+ ld l, c
.loop
- ld a,$75 ; ellipsis
- ld [hli],a
+ ld a, $75 ; ellipsis
+ ld [hli], a
push de
call Joypad
pop de
- ld a,[hJoyHeld] ; joypad state
- and a,A_BUTTON | B_BUTTON
- jr nz,.skipDelay ; if so, skip the delay
- ld c,10
+ ld a, [hJoyHeld] ; joypad state
+ and a, A_BUTTON | B_BUTTON
+ jr nz, .skipDelay ; if so, skip the delay
+ ld c, 10
call DelayFrames
.skipDelay
dec d
- jr nz,.loop
- ld b,h
- ld c,l
+ jr nz, .loop
+ ld b, h
+ ld c, l
pop hl
jp NextTextCommand
@@ -688,23 +688,23 @@ TextCommand0D:: ; 1a73 (0:1a73)
; BB = bank
TextCommand17:: ; 1a7c (0:1a7c)
pop hl
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
- ld a,[hli]
- ld e,a
- ld a,[hli]
- ld d,a
- ld a,[hli]
- ld [H_LOADEDROMBANK],a
- ld [MBC1RomBank],a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld [H_LOADEDROMBANK], a
+ ld [MBC1RomBank], a
push hl
- ld l,e
- ld h,d
+ ld l, e
+ ld h, d
call TextCommandProcessor
pop hl
pop af
- ld [H_LOADEDROMBANK],a
- ld [MBC1RomBank],a
+ ld [H_LOADEDROMBANK], a
+ ld [MBC1RomBank], a
jp NextTextCommand
TextCommandJumpTable:: ; 1a9a (0:1a9a)
diff --git a/hram.asm b/hram.asm
index 21dbee05..5138b239 100644
--- a/hram.asm
+++ b/hram.asm
@@ -309,6 +309,10 @@ hCoordsInFrontOfPlayerMatch EQU $FFEA
hSpriteAnimFrameCounter EQU $FFEA
+hItemAlreadyFound EQU $FFEB
+
+hDidntFindAnyHiddenObject EQU $FFEE
+
H_WHOSETURN EQU $FFF3 ; 0 on player’s turn, 1 on enemy’s turn
hLCDCPointer EQU $FFF4
@@ -323,4 +327,6 @@ hFlags_0xFFFA EQU $FFFA
hFieldMoveMonMenuTopMenuItemX EQU $FFFB
+h_0xFFFC EQU $FFFC
+
hGBC EQU $FFFE ; 0 if DMG, != 0 if GBC
diff --git a/macros.asm b/macros.asm
index 06aa34a9..54fba2d3 100644
--- a/macros.asm
+++ b/macros.asm
@@ -153,29 +153,62 @@ bcd3: MACRO
coins equs "bcd2"
money equs "bcd3"
+validateCoords: MACRO
+ if \1 >= SCREEN_WIDTH
+ fail "x coord out of range"
+ endc
+ if \2 >= SCREEN_HEIGHT
+ fail "y coord out of range"
+ endc
+ endm
+
;\1 = r
;\2 = X
;\3 = Y
+;\4 = which tilemap (optional)
coord: MACRO
- ld \1, wTileMap + 20 * \3 + \2
+ validateCoords \2, \3
+if _NARG >= 4
+ ld \1, \4 + SCREEN_WIDTH * \3 + \2
+else
+ ld \1, wTileMap + SCREEN_WIDTH * \3 + \2
+endc
ENDM
;\1 = X
;\2 = Y
+;\3 = which tilemap (optional)
aCoord: MACRO
- ld a, [wTileMap + 20 * \2 + \1]
+ validateCoords \1, \2
+if _NARG >= 3
+ ld a, [\3 + SCREEN_WIDTH * \2 + \1]
+else
+ ld a, [wTileMap + SCREEN_WIDTH * \2 + \1]
+endc
ENDM
;\1 = X
;\2 = Y
+;\3 = which tilemap (optional)
Coorda: MACRO
- ld [wTileMap + 20 * \2 + \1], a
+ validateCoords \1, \2
+if _NARG >= 3
+ ld [\3 + SCREEN_WIDTH * \2 + \1], a
+else
+ ld [wTileMap + SCREEN_WIDTH * \2 + \1], a
+endc
ENDM
;\1 = X
;\2 = Y
+;\3 = which tilemap (optional)
dwCoord: MACRO
- dw wTileMap + 20 * \2 + \1
+ validateCoords \1, \2
+if _NARG >= 3
+ dw \3 + SCREEN_WIDTH * \2 + \1
+else
+ dw wTileMap + SCREEN_WIDTH * \2 + \1
+endc
ENDM
;\1 = r
@@ -246,28 +279,30 @@ dbw: MACRO
dw \2
ENDM
-; data format macros
-RGB: MACRO
- dw (\3 << 10 | \2 << 5 | \1)
+dba: MACRO
+ dbw BANK(\1), \1
ENDM
-; text macros
-TX_NUM: MACRO
-; print a big-endian decimal number.
-; \1: address to read from
-; \2: number of bytes to read
-; \3: number of digits to display
- db $09
+dwb: MACRO
dw \1
- db \2 << 4 | \3
+ db \2
ENDM
-TX_FAR: MACRO
- db $17
- dw \1
- db BANK(\1)
+dab: MACRO
+ dwb \1, BANK(\1)
+ ENDM
+
+dbbw: MACRO
+ db \1, \2
+ dw \3
ENDM
+; data format macros
+RGB: MACRO
+ dw (\3 << 10 | \2 << 5 | \1)
+ ENDM
+
+; text macros
; text engine command $1
TX_RAM: MACRO
; prints text to screen
@@ -282,11 +317,42 @@ TX_BCD: MACRO
db \2
ENDM
-TX_ASM: MACRO
- db $08
+TX_CURSOR: MACRO
+; Move cursor to (\1, \2)
+; \1: X coord (0 - 19)
+; \2: Y coord (0 - 17)
+ db $3
+ dwCoord \1, \2
+ ENDM
+
+TX_LINE EQUS "db $05"
+TX_BUTTON_SOUND EQUS "db $06"
+TX_ASM EQUS "db $08"
+
+TX_NUM: MACRO
+; print a big-endian decimal number.
+; \1: address to read from
+; \2: number of bytes to read
+; \3: number of digits to display
+ db $09
+ dw \1
+ db \2 << 4 | \3
ENDM
TX_SFX_ITEM EQUS "db $0b"
+TX_WAIT_BUTTON EQUS "db $0d"
+TX_SFX_CONGRATS EQUS "db $10"
+TX_SFX_KEY_ITEM EQUS "db $11"
+
+TX_FAR: MACRO
+; 17AAAABB (call text at BB:AAAA)
+ db $17
+ dab \1
+ ENDM
+
+
+TX_CABLE_CLUB_RECEPTIONIST EQUS "db $f6"
+TX_POKECENTER_NURSE EQUS "db $ff"
; Predef macro.
add_predef: MACRO
@@ -322,11 +388,11 @@ add_tx_pre: MACRO
ENDM
db_tx_pre: MACRO
- db \1_id
+ db (\1_id - TextPredefs) / 2 + 1
ENDM
tx_pre_id: MACRO
- ld a, \1_id ; - TextPredefs) / 2 + 1
+ ld a, (\1_id - TextPredefs) / 2 + 1
ENDM
tx_pre: MACRO
@@ -738,3 +804,136 @@ ENDC
endr
db x
ENDM
+
+sine_wave: MACRO
+; \1: amplitude
+
+x = 0
+ rept $20
+ ; Round up.
+ dw (sin(x) + (sin(x) & $ff)) >> 8
+x = x + (\1) * $40000
+ endr
+ENDM
+
+enum_start: macro
+if _NARG >= 1
+__enum__ = \1
+else
+__enum__ = 0
+endc
+if _NARG >= 2
+__enumdir__ = \2
+else
+__enumdir__ = +1
+endc
+endm
+
+enum: macro
+\1 = __enum__
+__enum__ = __enum__ + __enumdir__
+endm
+
+enum_set: macro
+__enum__ = \1
+endm
+
+pikacry_def: MACRO
+\1_id:: dba \1
+endm
+
+dpikacry: MACRO
+ db (\1_id - PikachuCriesPointerTable) / 3
+ endm
+
+ldpikacry: MACRO
+ ld \1, (\2_id - PikachuCriesPointerTable) / 3
+ ENDM
+
+pikacry: MACRO
+ ldpikacry a, \1
+ endm
+
+
+ enum_start
+ enum pikapic_nop_command
+pikapic_nop: macro
+ db pikapic_nop_command
+ endm
+
+ enum pikapic_writebyte_command
+pikapic_writebyte: macro
+ db pikapic_writebyte_command, \1
+ endm
+
+ enum pikapic_loadgfx_command
+pikapic_loadgfx: macro
+ db pikapic_loadgfx_command, (\1_id - PikaPicAnimGFXHeaders) / 4
+ endm
+
+ enum pikapic_object_command
+pikapic_object: macro
+ db pikapic_object_command
+ dw \1
+ db \2, \3, \4
+ endm
+
+ enum pikapic_nop4_command
+pikapic_nop4: macro
+ db pikapic_nop4_command
+ endm
+
+ enum pikapic_nop5_command
+pikapic_nop5: macro
+ db pikapic_nop5_command
+ endm
+
+ enum pikapic_waitbgmapeleteobject_command
+pikapic_waitbgmapeleteobject: macro
+ db pikapic_waitbgmapeleteobject_command, \1
+ endm
+
+ enum pikapic_nop7_command
+pikapic_nop7: macro
+ db pikapic_nop7_command
+ endm
+
+ enum pikapic_nop8_command
+pikapic_nop8: macro
+ db pikapic_nop8_command
+ endm
+
+ enum pikapic_jump_command
+pikapic_jump: macro ; 9
+ dbw pikapic_jump_command, \1
+ endm
+
+ enum pikapic_setduration_command
+pikapic_setduration: macro ; a
+ dbw pikapic_setduration_command, \1
+ endm
+
+ enum pikapic_cry_command
+pikapic_cry: macro ; b
+ db pikapic_cry_command
+IF _NARG == 0
+ db $ff
+else
+ dpikacry \1
+ endc
+ endm
+
+ enum pikapic_thunderbolt_command
+pikapic_thunderbolt: macro ; c
+ db pikapic_thunderbolt_command
+ endm
+
+ enum pikapic_waitbgmap_command
+pikapic_waitbgmap: macro ; d
+ db pikapic_waitbgmap_command
+ endm
+
+ enum pikapic_ret_command
+pikapic_ret: macro ; e
+ db pikapic_ret_command
+ endm
diff --git a/main.asm b/main.asm
index 3fc6f370..a7b573cb 100755
--- a/main.asm
+++ b/main.asm
@@ -232,57 +232,181 @@ INCLUDE "engine/menu/pc.asm"
SECTION "bank06",ROMX,BANK[$06]
- dr $18000,$18dee ; headers, objects, blocks
-; INCLUDE "data/mapHeaders/celadoncity.asm"
-; INCLUDE "data/mapObjects/celadoncity.asm"
-; CeladonCityBlocks: INCBIN "maps/celadoncity.blk"
-
-; INCLUDE "data/mapHeaders/pallettown.asm"
-; INCLUDE "data/mapObjects/pallettown.asm"
-; PalletTownBlocks: INCBIN "maps/pallettown.blk"
-
-; INCLUDE "data/mapHeaders/viridiancity.asm"
-; INCLUDE "data/mapObjects/viridiancity.asm"
-; ViridianCityBlocks: INCBIN "maps/viridiancity.blk"
-
-; INCLUDE "data/mapHeaders/pewtercity.asm"
-; INCLUDE "data/mapObjects/pewtercity.asm"
-; PewterCityBlocks: INCBIN "maps/pewtercity.blk"
-
-; INCLUDE "data/mapHeaders/ceruleancity.asm"
-; INCLUDE "data/mapObjects/ceruleancity.asm"
-; CeruleanCityBlocks: INCBIN "maps/ceruleancity.blk"
-
-; INCLUDE "data/mapHeaders/vermilioncity.asm"
-; INCLUDE "data/mapObjects/vermilioncity.asm"
-; VermilionCityBlocks: INCBIN "maps/vermilioncity.blk"
-
-; INCLUDE "data/mapHeaders/fuchsiacity.asm"
-; INCLUDE "data/mapObjects/fuchsiacity.asm"
-; FuchsiaCityBlocks: INCBIN "maps/fuchsiacity.blk"
-
- dr $18dee,$1a4ea ; map scripts
-
-; INCLUDE "scripts/pallettown.asm"
-; INCLUDE "scripts/viridiancity.asm"
-; INCLUDE "scripts/pewtercity.asm"
-; INCLUDE "scripts/ceruleancity.asm"
-; INCLUDE "scripts/vermilioncity.asm"
-; INCLUDE "scripts/celadoncity.asm"
-; INCLUDE "scripts/fuchsiacity.asm"
+INCLUDE "data/mapHeaders/celadoncity.asm"
+INCLUDE "data/mapObjects/celadoncity.asm"
+CeladonCityBlocks: INCBIN "maps/celadoncity.blk"
+
+INCLUDE "data/mapHeaders/pallettown.asm"
+INCLUDE "data/mapObjects/pallettown.asm"
+PalletTownBlocks: INCBIN "maps/pallettown.blk"
+
+INCLUDE "data/mapHeaders/viridiancity.asm"
+INCLUDE "data/mapObjects/viridiancity.asm"
+ViridianCityBlocks: INCBIN "maps/viridiancity.blk"
+
+INCLUDE "data/mapHeaders/pewtercity.asm"
+INCLUDE "data/mapObjects/pewtercity.asm"
+PewterCityBlocks: INCBIN "maps/pewtercity.blk"
+
+INCLUDE "data/mapHeaders/ceruleancity.asm"
+INCLUDE "data/mapObjects/ceruleancity.asm"
+CeruleanCityBlocks: INCBIN "maps/ceruleancity.blk" ; 18836
+
+INCLUDE "data/mapHeaders/vermilioncity.asm"
+INCLUDE "data/mapObjects/vermilioncity.asm"
+VermilionCityBlocks: INCBIN "maps/vermilioncity.blk"
+INCLUDE "data/mapHeaders/fuchsiacity.asm"
+INCLUDE "data/mapObjects/fuchsiacity.asm"
+FuchsiaCityBlocks: INCBIN "maps/fuchsiacity.blk"
+
+
+INCLUDE "scripts/pallettown.asm"
+INCLUDE "scripts/viridiancity.asm"
+INCLUDE "scripts/pewtercity.asm"
+INCLUDE "scripts/ceruleancity.asm"
+INCLUDE "scripts/vermilioncity.asm"
+INCLUDE "scripts/celadoncity.asm"
+INCLUDE "scripts/fuchsiacity.asm"
+
+INCLUDE "data/mapHeaders/blueshouse.asm"
+INCLUDE "scripts/blueshouse.asm"
+INCLUDE "data/mapObjects/blueshouse.asm"
+BluesHouseBlocks:
+INCBIN "maps/blueshouse.blk"
+ dr $19d05,$1a4ea
INCLUDE "engine/overworld/npc_movement.asm"
INCLUDE "engine/overworld/doors.asm"
INCLUDE "engine/overworld/ledges.asm"
SECTION "bank07",ROMX,BANK[$07]
-
- dr $1c000,$1c21e ; headers, objects, blocks
+INCLUDE "data/mapHeaders/cinnabarisland.asm"
+INCLUDE "data/mapObjects/cinnabarisland.asm"
+CinnabarIslandBlocks:
+INCBIN "maps/cinnabarisland.blk"
+
+INCLUDE "data/mapHeaders/route1.asm"
+INCLUDE "data/mapObjects/route1.asm"
+Route1Blocks: ; 1c0fc
+INCBIN "maps/route1.blk"
+
+UndergroundPathEntranceRoute8Blocks:
+INCBIN "maps/undergroundpathentranceroute8.blk"
+OaksLabBlocks:
+INCBIN "maps/oakslab.blk"
+ViridianHouseBlocks:
+Route2HouseBlocks:
+PewterHouse1Blocks:
+PewterHouse2Blocks:
+CeruleanHouse1Blocks:
+INCBIN "maps/viridianhouse.blk"
+SchoolBlocks:
+INCBIN "maps/school.blk"
+CeruleanHouseTrashedBlocks:
+INCBIN "maps/ceruleanhousetrashed.blk"
+DiglettsCaveRoute2Blocks:
+DiglettsCaveEntranceRoute11Blocks:
+INCBIN "maps/diglettscaveroute2.blk"
INCLUDE "engine/clear_save.asm"
INCLUDE "engine/predefs7.asm"
- dr $1c2c2,$1e2ae ; map scripts
+INCLUDE "scripts/cinnabarisland.asm"
+INCLUDE "scripts/route1.asm"
+
+INCLUDE "data/mapHeaders/oakslab.asm"
+INCLUDE "scripts/oakslab.asm"
+INCLUDE "data/mapObjects/oakslab.asm"
+
+INCLUDE "data/mapHeaders/viridianmart.asm"
+INCLUDE "scripts/viridianmart.asm"
+INCLUDE "data/mapObjects/viridianmart.asm"
+ViridianMartBlocks:
+VermilionMartBlocks:
+LavenderMartBlocks:
+CeladonMartBlocks:
+SaffronMartBlocks:
+FuchsiaMartBlocks:
+CinnabarMartBlocks:
+INCBIN "maps/viridianmart.blk"
+
+INCLUDE "data/mapHeaders/school.asm"
+INCLUDE "scripts/school.asm"
+INCLUDE "data/mapObjects/school.asm"
+
+INCLUDE "data/mapHeaders/viridianhouse.asm"
+INCLUDE "scripts/viridianhouse.asm"
+INCLUDE "data/mapObjects/viridianhouse.asm"
+
+INCLUDE "data/mapHeaders/pewterhouse1.asm"
+INCLUDE "scripts/pewterhouse1.asm"
+INCLUDE "data/mapObjects/pewterhouse1.asm"
+
+INCLUDE "data/mapHeaders/pewterhouse2.asm"
+INCLUDE "scripts/pewterhouse2.asm"
+INCLUDE "data/mapObjects/pewterhouse2.asm"
+
+INCLUDE "data/mapHeaders/ceruleanhousetrashed.asm"
+INCLUDE "scripts/ceruleanhousetrashed.asm"
+INCLUDE "data/mapObjects/ceruleanhousetrashed.asm"
+
+INCLUDE "data/mapHeaders/ceruleanhouse1.asm"
+INCLUDE "scripts/ceruleanhouse1.asm"
+INCLUDE "data/mapObjects/ceruleanhouse1.asm"
+
+INCLUDE "data/mapHeaders/bikeshop.asm"
+INCLUDE "scripts/bikeshop.asm"
+INCLUDE "data/mapObjects/bikeshop.asm"
+BikeShopBlocks:
+INCBIN "maps/bikeshop.blk"
+ dr $1d1a4,$1d7ae ; map scripts
+
+INCLUDE "data/mapHeaders/diglettscaveroute2.asm"
+INCLUDE "scripts/diglettscaveroute2.asm"
+INCLUDE "data/mapObjects/diglettscaveroute2.asm"
+
+INCLUDE "data/mapHeaders/route2house.asm"
+INCLUDE "scripts/route2house.asm"
+INCLUDE "data/mapObjects/route2house.asm"
+
+INCLUDE "data/mapHeaders/route5gate.asm"
+INCLUDE "scripts/route5gate.asm"
+INCLUDE "data/mapObjects/route5gate.asm"
+Route5GateBlocks: ; 1d92f
+INCBIN "maps/route5gate.blk"
+
+INCLUDE "data/mapHeaders/route6gate.asm"
+INCLUDE "scripts/route6gate.asm"
+INCLUDE "data/mapObjects/route6gate.asm"
+Route6GateBlocks: ; 1d9f2
+INCBIN "maps/route6gate.blk"
+
+INCLUDE "data/mapHeaders/route7gate.asm"
+INCLUDE "scripts/route7gate.asm"
+INCLUDE "data/mapObjects/route7gate.asm"
+Route7GateBlocks: ; 1dab9
+INCBIN "maps/route7gate.blk"
+
+INCLUDE "data/mapHeaders/route8gate.asm"
+INCLUDE "scripts/route8gate.asm"
+INCLUDE "data/mapObjects/route8gate.asm"
+Route8GateBlocks: ; 1dab9
+INCBIN "maps/route8gate.blk"
+
+INCLUDE "data/mapHeaders/undergroundpathentranceroute8.asm"
+INCLUDE "scripts/undergroundpathentranceroute8.asm"
+INCLUDE "data/mapObjects/undergroundpathentranceroute8.asm"
+
+INCLUDE "data/mapHeaders/powerplant.asm"
+INCLUDE "scripts/powerplant.asm"
+INCLUDE "data/mapObjects/powerplant.asm"
+PowerPlantBlocks:
+INCBIN "maps/powerplant.blk"
+
+INCLUDE "data/mapHeaders/diglettscaveroute11.asm"
+INCLUDE "scripts/diglettscaveroute11.asm"
+INCLUDE "data/mapObjects/diglettscaveroute11.asm"
+ dr $1def6,$1e2ae ; map scripts
INCLUDE "engine/menu/oaks_pc.asm"
@@ -670,19 +794,113 @@ INCLUDE "engine/menu/options.asm"
SECTION "bank11",ROMX,BANK[$11]
- dr $44000,$44169
+INCLUDE "data/mapHeaders/lavendertown.asm"
+INCLUDE "data/mapObjects/lavendertown.asm"
+LavenderTownBlocks:
+INCBIN "maps/lavendertown.blk"
+ViridianPokecenterBlocks:
+VermilionPokecenterBlocks:
+SaffronPokecenterBlocks:
+LavenderPokecenterBlocks:
+CeladonPokecenterBlocks:
+FuchsiaPokecenterBlocks:
+CinnabarPokecenterBlocks:
+INCBIN "maps/viridianpokecenter.blk"
+ dr $440fb,$4410b
+
+INCLUDE "scripts/lavendertown.asm"
INCLUDE "engine/pokedex_rating.asm"
- dr $44251,$45077
+INCLUDE "data/mapHeaders/viridianpokecenter.asm"
+INCLUDE "scripts/viridianpokecenter.asm"
+INCLUDE "data/mapObjects/viridianpokecenter.asm"
+ dr $442b7,$443b7
+Mansion1Script_Switches:
+ dr $443b7,$44571
+
+INCLUDE "data/mapHeaders/rocktunnel1.asm"
+INCLUDE "scripts/rocktunnel1.asm"
+INCLUDE "data/mapObjects/rocktunnel1.asm"
+RockTunnel1Blocks:
+INCBIN "maps/rocktunnel1.blk"
+
+ dr $4487e,$45077
LoadSpinnerArrowTiles: ; 45077 (11:5077)
dr $45077,$46bf3
INCLUDE "engine/overworld/dungeon_warps.asm"
SECTION "bank12",ROMX,BANK[$12]
+INCLUDE "data/mapHeaders/route7.asm"
+INCLUDE "data/mapObjects/route7.asm"
+Route7Blocks: ; 48051
+INCBIN "maps/route7.blk"
+MtMoonPokecenterBlocks:
+RockTunnelPokecenterBlocks:
+INCBIN "maps/mtmoonpokecenter.blk"
+ dr $480c7,$480eb
+INCLUDE "scripts/route7.asm"
+
+INCLUDE "data/mapHeaders/redshouse1f.asm"
+INCLUDE "scripts/redshouse1f.asm"
+INCLUDE "data/mapObjects/redshouse1f.asm"
+RedsHouse1FBlocks:
+INCBIN "maps/redshouse1f.blk"
+ dr $48157,$492a9
+
+INCLUDE "data/mapHeaders/mtmoonpokecenter.asm"
+INCLUDE "scripts/mtmoonpokecenter.asm"
+INCLUDE "data/mapObjects/mtmoonpokecenter.asm"
+
+INCLUDE "data/mapHeaders/rocktunnelpokecenter.asm"
+INCLUDE "scripts/rocktunnelpokecenter.asm"
+INCLUDE "data/mapObjects/rocktunnelpokecenter.asm"
+
+ dr $49396,$49953
+
+INCLUDE "data/mapHeaders/mtmoon1.asm"
+INCLUDE "scripts/mtmoon1.asm"
+INCLUDE "data/mapObjects/mtmoon1.asm"
+MtMoon1Blocks:
+INCBIN "maps/mtmoon1.blk"
+
+INCLUDE "data/mapHeaders/mtmoon3.asm"
+INCLUDE "scripts/mtmoon3.asm"
+INCLUDE "data/mapObjects/mtmoon3.asm"
+MtMoon3Blocks:
+INCBIN "maps/mtmoon3.blk"
+
+MtMoon3Script_4a325: ; pikachu-related function?
+ ld a, [wd472]
+ bit 7, a
+ ret z
+ ld a, [wWalkBikeSurfState]
+ and a
+ ret nz
+
+ push hl
+ push bc
+ callab GetPikachuFacingDirectionAndReturnToE
+ pop bc
+ pop hl
+ ld a, b
+ cp e
+ ret nz
+
+ push hl
+ ld a, [wUpdateSpritesEnabled]
+ push af
+ ld a, $ff
+ ld [wUpdateSpritesEnabled], a
+ callab LoadPikachuShadowIntoVRAM
+ pop af
+ ld [wUpdateSpritesEnabled], a
+ pop hl
+ call Func_159b
+ ret
- dr $48000,$4a540
+ dr $4a35a,$4a540
SECTION "bank13",ROMX,BANK[$13]
@@ -736,12 +954,83 @@ AgathaPic: INCBIN "pic/trainer/agatha.pic"
LancePic: INCBIN "pic/trainer/lance.pic"
JessieJamesPic: INCBIN "pic/ytrainer/jessiejames.pic"
- dr $4fe79,$4ff1a
+; 4fe79 (13:7e79)
+
+INCLUDE "data/mapHeaders/tradecenter.asm"
+INCLUDE "scripts/tradecenter.asm"
+INCLUDE "data/mapObjects/tradecenter.asm"
+TradeCenterBlocks:
+INCBIN "maps/tradecenter.blk"
+
+; 4fee6 (13:7ee6)
+
+INCLUDE "data/mapHeaders/colosseum.asm"
+INCLUDE "scripts/colosseum.asm"
+INCLUDE "data/mapObjects/colosseum.asm"
+ColosseumBlocks:
+INCBIN "maps/colosseum.blk"
SECTION "bank14",ROMX,BANK[$14]
- dr $50000,$525d8
+INCLUDE "data/mapHeaders/route22.asm"
+INCLUDE "data/mapObjects/route22.asm"
+Route22Blocks:
+INCBIN "maps/route22.blk"
+INCLUDE "data/mapHeaders/route20.asm"
+INCLUDE "data/mapObjects/route20.asm"
+Route20Blocks:
+INCBIN "maps/route20.blk"
+
+INCLUDE "data/mapHeaders/route23.asm"
+INCLUDE "data/mapObjects/route23.asm"
+Route23Blocks:
+INCBIN "maps/route23.blk"
+
+INCLUDE "data/mapHeaders/route24.asm"
+INCLUDE "data/mapObjects/route24.asm"
+Route24Blocks: ; 506ed (14:46ed)
+INCBIN "maps/route24.blk"
+
+INCLUDE "data/mapHeaders/route25.asm"
+INCLUDE "data/mapObjects/route25.asm"
+Route25Blocks: ; 50816 (14:4816)
+INCBIN "maps/route25.blk"
+
+; indigoplateau
+INCLUDE "data/mapHeaders/indigoplateau.asm"
+INCLUDE "scripts/indigoplateau.asm"
+INCLUDE "data/mapObjects/indigoplateau.asm"
+IndigoPlateauBlocks: ; 50950 (14:4950)
+INCBIN "maps/indigoplateau.blk"
+
+INCLUDE "data/mapHeaders/saffroncity.asm"
+INCLUDE "data/mapObjects/saffroncity.asm"
+SaffronCityBlocks: ; 50a98 (14:4a98)
+INCBIN "maps/saffroncity.blk"
+INCLUDE "scripts/saffroncity.asm"
+INCLUDE "scripts/route20.asm"
+INCLUDE "scripts/route22.asm"
+INCLUDE "scripts/route23.asm"
+INCLUDE "scripts/route24.asm"
+INCLUDE "scripts/route25.asm"
+
+; victoryroad2
+ dr $517cc,$51a78
+
+INCLUDE "data/mapHeaders/mtmoon2.asm"
+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 "engine/overworld/card_key.asm"
INCLUDE "engine/menu/prize_menu.asm"
@@ -749,12 +1038,79 @@ INCLUDE "engine/menu/prize_menu.asm"
INCLUDE "engine/hidden_object_functions14.asm"
SECTION "bank15",ROMX,BANK[$15]
-
- dr $54000,$5525f
+INCLUDE "data/mapHeaders/route2.asm"
+INCLUDE "data/mapObjects/route2.asm"
+Route2Blocks: ; 54086
+INCBIN "maps/route2.blk"
+
+INCLUDE "data/mapHeaders/route3.asm"
+INCLUDE "data/mapObjects/route3.asm"
+Route3Blocks: ; 5425d
+INCBIN "maps/route3.blk"
+
+INCLUDE "data/mapHeaders/route4.asm"
+INCLUDE "data/mapObjects/route4.asm"
+Route4Blocks: ; 543f4
+INCBIN "maps/route4.blk"
+
+INCLUDE "data/mapHeaders/route5.asm"
+INCLUDE "data/mapObjects/route5.asm"
+Route5Blocks: ; 545da
+INCBIN "maps/route5.blk"
+
+INCLUDE "data/mapHeaders/route9.asm"
+INCLUDE "data/mapObjects/route9.asm"
+Route9Blocks: ; 54706
+INCBIN "maps/route9.blk"
+
+INCLUDE "data/mapHeaders/route13.asm"
+INCLUDE "data/mapObjects/route13.asm"
+Route13Blocks:
+INCBIN "maps/route13.blk"
+
+INCLUDE "data/mapHeaders/route14.asm"
+INCLUDE "data/mapObjects/route14.asm"
+Route14Blocks:
+INCBIN "maps/route14.blk"
+
+INCLUDE "data/mapHeaders/route17.asm"
+INCLUDE "data/mapObjects/route17.asm"
+Route17Blocks:
+INCBIN "maps/route17.blk"
+
+INCLUDE "data/mapHeaders/route19.asm"
+INCLUDE "data/mapObjects/route19.asm"
+Route19Blocks:
+INCBIN "maps/route19.blk"
+INCLUDE "data/mapHeaders/route21.asm"
+INCLUDE "data/mapObjects/route21.asm"
+Route21Blocks: ; 5507d
+INCBIN "maps/route21.blk"
+
+DayCareMBlocks:
+INCBIN "maps/daycarem.blk"
+ dr $5524f,$5525f
INCLUDE "engine/battle/experience.asm"
- dr $554f7,$56714
+INCLUDE "scripts/route2.asm"
+INCLUDE "scripts/route3.asm"
+INCLUDE "scripts/route4.asm"
+INCLUDE "scripts/route5.asm"
+INCLUDE "scripts/route9.asm"
+INCLUDE "scripts/route13.asm"
+INCLUDE "scripts/route14.asm"
+INCLUDE "scripts/route17.asm"
+INCLUDE "scripts/route19.asm"
+INCLUDE "scripts/route21.asm"
+
+; vermilion house 2
+ dr $56054,$56233
+
+INCLUDE "data/mapHeaders/daycarem.asm"
+INCLUDE "scripts/daycarem.asm"
+INCLUDE "data/mapObjects/daycarem.asm"
+ dr $564a5,$56714
INCLUDE "engine/menu/diploma_1.asm"
@@ -763,7 +1119,46 @@ INCLUDE "engine/overworld/trainers.asm"
SECTION "bank16",ROMX,BANK[$16]
- dr $58000,$58d99
+INCLUDE "data/mapHeaders/route6.asm"
+INCLUDE "data/mapObjects/route6.asm"
+Route6Blocks: ; 58079
+INCBIN "maps/route6.blk"
+
+INCLUDE "data/mapHeaders/route8.asm"
+INCLUDE "data/mapObjects/route8.asm"
+Route8Blocks: ; 581c6
+INCBIN "maps/route8.blk"
+
+INCLUDE "data/mapHeaders/route10.asm"
+INCLUDE "data/mapObjects/route10.asm"
+Route10Blocks:
+INCBIN "maps/route10.blk"
+
+INCLUDE "data/mapHeaders/route11.asm"
+INCLUDE "data/mapObjects/route11.asm"
+Route11Blocks: ; 5855f
+INCBIN "maps/route11.blk"
+
+INCLUDE "data/mapHeaders/route12.asm"
+INCLUDE "data/mapObjects/route12.asm"
+Route12Blocks:
+INCBIN "maps/route12.blk"
+
+INCLUDE "data/mapHeaders/route15.asm"
+INCLUDE "data/mapObjects/route15.asm"
+Route15Blocks:
+INCBIN "maps/route15.blk"
+
+INCLUDE "data/mapHeaders/route16.asm"
+INCLUDE "data/mapObjects/route16.asm"
+Route16Blocks: ; 58b84
+INCBIN "maps/route16.blk"
+
+INCLUDE "data/mapHeaders/route18.asm"
+INCLUDE "data/mapObjects/route18.asm"
+Route18Blocks:
+INCBIN "maps/route18.blk"
+ dr $58d7d,$58d99
INCLUDE "engine/experience.asm"
@@ -771,22 +1166,134 @@ INCLUDE "engine/status_ailments.asm"
INCLUDE "engine/overworld/oaks_aide.asm"
- dr $58f47,$5a53a
+INCLUDE "scripts/route6.asm"
+INCLUDE "scripts/route8.asm"
+INCLUDE "scripts/route10.asm"
+INCLUDE "scripts/route11.asm"
+INCLUDE "scripts/route12.asm"
+INCLUDE "scripts/route15.asm"
+INCLUDE "scripts/route16.asm"
+INCLUDE "scripts/route18.asm"
+ dr $59a00,$5a53a
INCLUDE "engine/overworld/saffron_guards.asm"
SECTION "bank17",ROMX,BANK[$17]
+CeruleanMartBlocks:
+INCBIN "maps/ceruleanmart.blk"
+RedsHouse2FBlocks:
+INCBIN "maps/redshouse2f.blk"
+Museum1FBlocks:
+INCBIN "maps/museum1f.blk"
+Museum2FBlocks:
+INCBIN "maps/museum2f.blk"
+PewterPokecenterBlocks:
+INCBIN "maps/pewterpokecenter.blk"
+UndergroundPathEntranceRoute5Blocks:
+UndergroundPathEntranceRoute6Blocks:
+UndergroundPathEntranceRoute7Blocks:
+UndergroundPathEntranceRoute7CopyBlocks:
+INCBIN "maps/undergroundpathentranceroute5.blk"
+ViridianForestEntranceBlocks:
+ViridianForestExitBlocks:
+Route2GateBlocks:
+INCBIN "maps/viridianforestentrance.blk"
+
+INCLUDE "data/mapHeaders/redshouse2f.asm"
+INCLUDE "scripts/redshouse2f.asm"
+INCLUDE "data/mapObjects/redshouse2f.asm"
+
+Func_5c0d4:
+ ld a, %01001011
+ ld [wPokedexOwned], a
+ predef ShowPokedexData
+ xor a
+ ld [wPokedexOwned], a
+ ret
- dr $5c000,$5da70
-EvolveMon: ; 5da70 (17:5a70)
- dr $5da70,$5df60
+INCLUDE "data/mapHeaders/museum1f.asm"
+INCLUDE "scripts/museum1f.asm"
+INCLUDE "data/mapObjects/museum1f.asm"
+INCLUDE "data/mapHeaders/museum2f.asm"
+INCLUDE "scripts/museum2f.asm"
+INCLUDE "data/mapObjects/museum2f.asm"
-SECTION "bank18",ROMX,BANK[$18]
+INCLUDE "data/mapHeaders/pewtergym.asm"
+INCLUDE "scripts/pewtergym.asm"
+INCLUDE "data/mapObjects/pewtergym.asm"
+PewterGymBlocks:
+INCBIN "maps/pewtergym.blk"
+
+INCLUDE "data/mapHeaders/pewterpokecenter.asm"
+INCLUDE "scripts/pewterpokecenter.asm"
+INCLUDE "data/mapObjects/pewterpokecenter.asm"
+
+INCLUDE "data/mapHeaders/ceruleanpokecenter.asm"
+INCLUDE "scripts/ceruleanpokecenter.asm"
+INCLUDE "data/mapObjects/ceruleanpokecenter.asm"
+CeruleanPokecenterBlocks:
+INCBIN "maps/ceruleanpokecenter.blk"
+
+INCLUDE "data/mapHeaders/ceruleangym.asm"
+INCLUDE "scripts/ceruleangym.asm"
+INCLUDE "data/mapObjects/ceruleangym.asm"
+CeruleanGymBlocks:
+INCBIN "maps/ceruleangym.blk"
+
+INCLUDE "data/mapHeaders/ceruleanmart.asm"
+INCLUDE "scripts/ceruleanmart.asm"
+INCLUDE "data/mapObjects/ceruleanmart.asm"
+
+ dr $5c79c,$5d485
+
+INCLUDE "data/mapHeaders/viridianforestexit.asm"
+INCLUDE "scripts/viridianforestexit.asm"
+INCLUDE "data/mapObjects/viridianforestexit.asm"
- dr $60000,$62702
+INCLUDE "data/mapHeaders/route2gate.asm"
+INCLUDE "scripts/route2gate.asm"
+INCLUDE "data/mapObjects/route2gate.asm"
+INCLUDE "data/mapHeaders/viridianforestentrance.asm"
+INCLUDE "scripts/viridianforestentrance.asm"
+INCLUDE "data/mapObjects/viridianforestentrance.asm"
+
+INCLUDE "data/mapHeaders/undergroundpathentranceroute5.asm"
+INCLUDE "scripts/undergroundpathentranceroute5.asm"
+INCLUDE "data/mapObjects/undergroundpathentranceroute5.asm"
+
+INCLUDE "data/mapHeaders/undergroundpathentranceroute6.asm"
+INCLUDE "scripts/undergroundpathentranceroute6.asm"
+INCLUDE "data/mapObjects/undergroundpathentranceroute6.asm"
+
+INCLUDE "data/mapHeaders/undergroundpathentranceroute7.asm"
+INCLUDE "scripts/undergroundpathentranceroute7.asm"
+INCLUDE "data/mapObjects/undergroundpathentranceroute7.asm"
+
+INCLUDE "data/mapHeaders/undergroundpathentranceroute7copy.asm"
+INCLUDE "scripts/undergroundpathentranceroute7copy.asm"
+INCLUDE "data/mapObjects/undergroundpathentranceroute7copy.asm"
+
+ dr $5d6ba,$5da70
+
+INCLUDE "engine/evolution.asm"
+
+ dr $5db93,$5dbae
+
+INCLUDE "engine/hidden_object_functions17.asm"
+
+SECTION "bank18",ROMX,BANK[$18]
+ViridianForestBlocks:
+INCBIN "maps/viridianforest.blk"
+ dr $60198,$610ed
+
+INCLUDE "data/mapHeaders/viridianforest.asm"
+INCLUDE "scripts/viridianforest.asm"
+INCLUDE "data/mapObjects/viridianforest.asm"
+ dr $612a4,$625e8
+INCLUDE "engine/hidden_object_functions18.asm"
SECTION "bank19",ROMX,BANK[$19]
Overworld_GFX:
@@ -832,13 +1339,32 @@ INCLUDE "engine/save.asm"
SECTION "bank1D",ROMX,BANK[$1D]
- dr $74000,$7405c
-HiddenItemNear: ; 7405c (1d:405c)
- dr $7405c,$74726
+ dr $74000,$74010
+
+PewterMartBlocks:
+INCBIN "maps/pewtermart.blk"
+ dr $74020,$7405c
+
+INCLUDE "engine/items/itemfinder.asm"
+INCLUDE "scripts/ceruleancity2.asm"
+
+INCLUDE "data/mapHeaders/viridiangym.asm"
+INCLUDE "scripts/viridiangym.asm"
+INCLUDE "data/mapObjects/viridiangym.asm"
+ViridianGymBlocks:
+INCBIN "maps/viridiangym.blk"
+
+INCLUDE "data/mapHeaders/pewtermart.asm"
+INCLUDE "scripts/pewtermart.asm"
+INCLUDE "data/mapObjects/pewtermart.asm"
+
+ dr $7453d,$74726
VendingMachineMenu: ; 74726 (1d:4726)
dr $74726,$75dfe
PKMNLeaguePC: ; 75dfe (1d:5dfe)
- dr $75dfe,$76177
+ dr $75dfe,$75f74
+
+INCLUDE "engine/overworld/hidden_items.asm"
SECTION "bank1E",ROMX,BANK[$1E]
@@ -854,14 +1380,6 @@ RedFishingTilesSide: INCBIN "gfx/red_fishing_tile_side.2bpp"
RedFishingRodTiles: INCBIN "gfx/red_fishingrod_tiles.2bpp"
INCLUDE "data/animations.asm"
-;AttackAnimationPointers: ; 7a22a (1e:622a)
-; dr $7a22a,$7a915
-;SubanimationPointers: ; 7a915 (1e:6915)
-; dr $7a915,$7b11c
-;FrameBlockPointers: ; 7b11c (1e:711c)
-; dr $7b11c,$7be2d
-;FrameBlockBaseCoords: ; 7be2d (1e:7e2d)
-; dr $7be2d,$7c000
SECTION "bank2f",ROMX[$5000],BANK[$2F]
@@ -872,9 +1390,120 @@ SECTION "bank30",ROMX,BANK[$30]
dr $c0000,$c4000
SECTION "bank39",ROMX,BANK[$39]
-
- dr $e4000,$e7ea3
-
+Pic_e4000: ; e4000
+ dr $e4000, $e40cc
+GFX_e40cc: ; e40cc
+ dr $e40cc, $e411c
+Pic_e411c: ; e411c
+ dr $e411c, $e41d2
+GFX_e41d2: ; e41d2
+ dr $e41d2, $e4272
+Pic_e4272: ; e4272
+ dr $e4272, $e4323
+GFX_e4323: ; e4323
+ dr $e4323, $e4383
+Pic_e4383: ; e4383
+ dr $e4383, $e444b
+GFX_e444b: ; e444b
+ dr $e444b, $e458b
+Pic_e458b: ; e458b
+ dr $e458b, $e463b
+GFX_e463b: ; e463b
+ dr $e463b, $e467b
+Pic_e467b: ; e467b
+ dr $e467b, $e472e
+GFX_e472e: ; e472e
+ dr $e472e, $e476e
+Pic_e476e: ; e476e
+ dr $e476e, $e4841
+GFX_e4841: ; e4841
+ dr $e4841, $e49d1
+Pic_e49d1: ; e49d1
+ dr $e49d1, $e4a99
+GFX_e4a99: ; e4a99
+ dr $e4a99, $e4b39
+Pic_e4b39: ; e4b39
+ dr $e4b39, $e4bde
+GFX_e4bde: ; e4bde
+ dr $e4bde, $e4c3e
+Pic_e4c3e: ; e4c3e
+ dr $e4c3e, $e4ce0
+GFX_e4ce0: ; e4ce0
+ dr $e4ce0, $e4e70
+GFX_e4e70: ; e4e70
+ dr $e4e70, $e5000
+Pic_e5000: ; e5000
+ dr $e5000, $e50af
+GFX_e50af: ; e50af
+ dr $e50af, $e523f
+Pic_e523f: ; e523f
+ dr $e523f, $e52fe
+GFX_e52fe: ; e52fe
+ dr $e52fe, $e548e
+Pic_e548e: ; e548e
+ dr $e548e, $e5541
+GFX_e5541: ; e5541
+ dr $e5541, $e56d1
+Pic_e56d1: ; e56d1
+ dr $e56d1, $e5794
+GFX_e5794: ; e5794
+ dr $e5794, $e5924
+Pic_e5924: ; e5924
+ dr $e5924, $e59ed
+GFX_e59ed: ; e59ed
+ dr $e59ed, $e5b7d
+Pic_e5b7d: ; e5b7d
+ dr $e5b7d, $e5c4d
+GFX_e5c4d: ; e5c4d
+ dr $e5c4d, $e5ddd
+Pic_e5ddd: ; e5ddd
+ dr $e5ddd, $e5e90
+GFX_e5e90: ; e5e90
+ dr $e5e90, $e6020
+GFX_e6020: ; e6020
+ dr $e6020, $e61b0
+GFX_e61b0: ; e61b0
+ dr $e61b0, $e6340
+Pic_e6340: ; e6340
+ dr $e6340, $e63f7
+GFX_e63f7: ; e63f7
+ dr $e63f7, $e6587
+Pic_e6587: ; e6587
+ dr $e6587, $e6646
+GFX_e6646: ; e6646
+ dr $e6646, $e67d6
+Pic_e67d6: ; e67d6
+ dr $e67d6, $e682f
+GFX_e682f: ; e682f
+ dr $e682f, $e69bf
+GFX_e69bf: ; e69bf
+ dr $e69bf, $e6b4f
+GFX_e6b4f: ; e6b4f
+ dr $e6b4f, $e6cdf
+GFX_e6cdf: ; e6cdf
+ dr $e6cdf, $e6e6f
+GFX_e6e6f: ; e6e6f
+ dr $e6e6f, $e6fff
+GFX_e6fff: ; e6fff
+ dr $e6fff, $e718f
+GFX_e718f: ; e718f
+ dr $e718f, $e731f
+GFX_e731f: ; e731f
+ dr $e731f, $e74af
+GFX_e74af: ; e74af
+ dr $e74af, $e763f
+GFX_e763f: ; e763f
+ dr $e763f, $e77cf
+Pic_e77cf: ; e77cf
+ dr $e77cf, $e7863
+GFX_e7863: ; e7863
+ dr $e7863, $e79f3
+GFX_e79f3: ; e79f3
+ dr $e79f3, $e7b83
+GFX_e7b83: ; e7b83
+ dr $e7b83, $e7d13
+GFX_e7d13: ; e7d13
+ dr $e7d13, $e7ea3
SECTION "bank3A",ROMX,BANK[$3A]
INCLUDE "text/monster_names.asm"
@@ -936,14 +1565,33 @@ SECTION "bank3D",ROMX,BANK[$3D]
INCLUDE "engine/bank3d.asm"
SECTION "bank3E",ROMX,BANK[$3E]
+Func_f8000: ; f8000
+ dr $f8000,$f8bcb
+
+Func_f8bcb: ; f8bcb
+ push de
+ callab IsSurfingPikachuInThePlayersParty
+ pop de
+ ret nc
+ callab PlayPikachuSoundClip
+ ret
- dr $f8000,$f982d
+Func_f8bdf: ; f8bdf
+ dr $f8bdf,$f982d
PlayIntroScene: ; f982d (3e:582d)
dr $f982d,$fa35a
YellowIntroGraphics: INCBIN "gfx/yellow_intro.2bpp"
- dr $fbb5a,$fc000
+Func_fbb5a:
+ ld hl, wTileMapBackup
+ ld bc, 10 * SCREEN_WIDTH
+ xor a
+ call FillMemory
+ ret
+
+Func_fbb65:
+ dr $fbb65,$fbd76
SECTION "bank3F",ROMX,BANK[$3F]
diff --git a/maps/celadonpokecenter.blk b/maps/celadonpokecenter.blk
index 9641efe4..dd54efd9 100644
--- a/maps/celadonpokecenter.blk
+++ b/maps/celadonpokecenter.blk
@@ -1,2 +1,2 @@
-  !"#
+  '"#
 \ No newline at end of file
diff --git a/maps/ceruleanmart.blk b/maps/ceruleanmart.blk
index 1da8fffc..62385406 100644
--- a/maps/ceruleanmart.blk
+++ b/maps/ceruleanmart.blk
@@ -1 +1 @@
-   \ No newline at end of file
+ %  \ No newline at end of file
diff --git a/maps/ceruleanpokecenter.blk b/maps/ceruleanpokecenter.blk
index 9641efe4..dd54efd9 100644
--- a/maps/ceruleanpokecenter.blk
+++ b/maps/ceruleanpokecenter.blk
@@ -1,2 +1,2 @@
-  !"#
+  '"#
 \ No newline at end of file
diff --git a/maps/cinnabarmart.blk b/maps/cinnabarmart.blk
index 1da8fffc..62385406 100644
--- a/maps/cinnabarmart.blk
+++ b/maps/cinnabarmart.blk
@@ -1 +1 @@
-   \ No newline at end of file
+ %  \ No newline at end of file
diff --git a/maps/cinnabarpokecenter.blk b/maps/cinnabarpokecenter.blk
index 9641efe4..dd54efd9 100644
--- a/maps/cinnabarpokecenter.blk
+++ b/maps/cinnabarpokecenter.blk
@@ -1,2 +1,2 @@
-  !"#
+  '"#
 \ No newline at end of file
diff --git a/maps/fuchsiamart.blk b/maps/fuchsiamart.blk
index 1da8fffc..62385406 100644
--- a/maps/fuchsiamart.blk
+++ b/maps/fuchsiamart.blk
@@ -1 +1 @@
-   \ No newline at end of file
+ %  \ No newline at end of file
diff --git a/maps/fuchsiapokecenter.blk b/maps/fuchsiapokecenter.blk
index 9641efe4..dd54efd9 100644
--- a/maps/fuchsiapokecenter.blk
+++ b/maps/fuchsiapokecenter.blk
@@ -1,2 +1,2 @@
-  !"#
+  '"#
 \ No newline at end of file
diff --git a/maps/lavendermart.blk b/maps/lavendermart.blk
index 1da8fffc..62385406 100644
--- a/maps/lavendermart.blk
+++ b/maps/lavendermart.blk
@@ -1 +1 @@
-   \ No newline at end of file
+ %  \ No newline at end of file
diff --git a/maps/lavenderpokecenter.blk b/maps/lavenderpokecenter.blk
index 9641efe4..dd54efd9 100644
--- a/maps/lavenderpokecenter.blk
+++ b/maps/lavenderpokecenter.blk
@@ -1,2 +1,2 @@
-  !"#
+  '"#
 \ No newline at end of file
diff --git a/maps/mtmoonpokecenter.blk b/maps/mtmoonpokecenter.blk
index 9641efe4..dd54efd9 100644
--- a/maps/mtmoonpokecenter.blk
+++ b/maps/mtmoonpokecenter.blk
@@ -1,2 +1,2 @@
-  !"#
+  '"#
 \ No newline at end of file
diff --git a/maps/pewtermart.blk b/maps/pewtermart.blk
index 1da8fffc..62385406 100644
--- a/maps/pewtermart.blk
+++ b/maps/pewtermart.blk
@@ -1 +1 @@
-   \ No newline at end of file
+ %  \ No newline at end of file
diff --git a/maps/pewterpokecenter.blk b/maps/pewterpokecenter.blk
index 9641efe4..dd54efd9 100644
--- a/maps/pewterpokecenter.blk
+++ b/maps/pewterpokecenter.blk
@@ -1,2 +1,2 @@
-  !"#
+  '"#
 \ No newline at end of file
diff --git a/maps/rocktunnelpokecenter.blk b/maps/rocktunnelpokecenter.blk
index 9641efe4..dd54efd9 100644
--- a/maps/rocktunnelpokecenter.blk
+++ b/maps/rocktunnelpokecenter.blk
@@ -1,2 +1,2 @@
-  !"#
+  '"#
 \ No newline at end of file
diff --git a/maps/route19.blk b/maps/route19.blk
index 0bd469e7..3fc58494 100644
--- a/maps/route19.blk
+++ b/maps/route19.blk
@@ -1 +1 @@
-(,)(,)(,)$W%$W%CCC11111CCk1111kkCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCkkkkkkkkk \ No newline at end of file
+(,)(,)(,)$W%$W%CCC11111CCC111CCk1111kkCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCkkkkkkkkk \ No newline at end of file
diff --git a/maps/route4.blk b/maps/route4.blk
index cb6a6a74..11fefc62 100644
--- a/maps/route4.blk
+++ b/maps/route4.blk
@@ -61,4 +61,4 @@ N
-,,)>??,,,,,,,,,,,?????????????????????;tt \ No newline at end of file
+,,)>??,,,,,,,,,,,?????????????????????;tt \ No newline at end of file
diff --git a/maps/saffronmart.blk b/maps/saffronmart.blk
index 1da8fffc..62385406 100644
--- a/maps/saffronmart.blk
+++ b/maps/saffronmart.blk
@@ -1 +1 @@
-   \ No newline at end of file
+ %  \ No newline at end of file
diff --git a/maps/saffronpokecenter.blk b/maps/saffronpokecenter.blk
index 9641efe4..dd54efd9 100644
--- a/maps/saffronpokecenter.blk
+++ b/maps/saffronpokecenter.blk
@@ -1,2 +1,2 @@
-  !"#
+  '"#
 \ No newline at end of file
diff --git a/maps/vermilionmart.blk b/maps/vermilionmart.blk
index 1da8fffc..62385406 100644
--- a/maps/vermilionmart.blk
+++ b/maps/vermilionmart.blk
@@ -1 +1 @@
-   \ No newline at end of file
+ %  \ No newline at end of file
diff --git a/maps/vermilionpokecenter.blk b/maps/vermilionpokecenter.blk
index 9641efe4..dd54efd9 100644
--- a/maps/vermilionpokecenter.blk
+++ b/maps/vermilionpokecenter.blk
@@ -1,2 +1,2 @@
-  !"#
+  '"#
 \ No newline at end of file
diff --git a/maps/viridianmart.blk b/maps/viridianmart.blk
index 1da8fffc..62385406 100644
--- a/maps/viridianmart.blk
+++ b/maps/viridianmart.blk
@@ -1 +1 @@
-   \ No newline at end of file
+ %  \ No newline at end of file
diff --git a/maps/viridianpokecenter.blk b/maps/viridianpokecenter.blk
index 9641efe4..dd54efd9 100644
--- a/maps/viridianpokecenter.blk
+++ b/maps/viridianpokecenter.blk
@@ -1,2 +1,2 @@
-  !"#
+  '"#
 \ No newline at end of file
diff --git a/scripts/beach_house.asm b/scripts/beach_house.asm
index d6112df7..6d53b7ce 100644
--- a/scripts/beach_house.asm
+++ b/scripts/beach_house.asm
@@ -12,37 +12,35 @@ BeachHouseTextPointers:
SurfinDudeText:
TX_ASM
- ld a,[$d471]
- bit 6,a
- jr nz,.next
- ld hl,.SurfinDudeText4
+ ld a, [wd472]
+ bit 6, a
+ jr nz, .next
+ ld hl, .SurfinDudeText4
call PrintText
jr .done
.next
- ld hl,$d492
- bit 0,[hl]
- set 0,[hl]
- jr nz,.next2
- ld hl,.SurfinDudeText1
+ ld hl, wPreventBlackout
+ bit 0, [hl]
+ set 0, [hl]
+ jr nz, .next2
+ ld hl, .SurfinDudeText1
jr .next3
.next2
- ld hl,.SurfinDudeText3
+ ld hl, .SurfinDudeText3
.next3
call PrintText
call YesNoChoice
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
and a
- jr nz,.xf226b
- ld a,1
- ld [$cc3c],a
- ld b,$3e
- ld hl,$4000
- call $3e84
- ld hl,$d492
- set 1,[hl]
+ jr nz, .asm_f226b
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ callba Func_f8000
+ ld hl, wPreventBlackout
+ set 1, [hl]
jr .done
-.xf226b
- ld hl,.SurfinDudeText2
+.asm_f226b
+ ld hl, .SurfinDudeText2
call PrintText
.done
jp TextScriptEnd
@@ -62,9 +60,9 @@ SurfinDudeText:
BeachHousePikachuText:
TX_ASM
- ld hl,.BeachHousePikachuText
+ ld hl, .BeachHousePikachuText
call PrintText
- ld a,PIKACHU
+ ld a, PIKACHU
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd
@@ -75,11 +73,11 @@ BeachHousePikachuText:
BeachHouseSign1Text:
TX_ASM
- ld hl,.BeachHouseSign1Text2
- ld a,[$d471]
- bit 6,a
- jr z,.next
- ld hl,.BeachHouseSign1Text1
+ ld hl, .BeachHouseSign1Text2
+ ld a, [wd472]
+ bit 6, a
+ jr z, .next
+ ld hl, .BeachHouseSign1Text1
.next
call PrintText
jp TextScriptEnd
@@ -93,11 +91,11 @@ BeachHouseSign1Text:
BeachHouseSign2Text:
TX_ASM
- ld hl,.BeachHouseSign2Text2
- ld a,[$d471]
- bit 6,a
- jr z,.next
- ld hl,.BeachHouseSign2Text1
+ ld hl, .BeachHouseSign2Text2
+ ld a, [wd472]
+ bit 6, a
+ jr z, .next
+ ld hl, .BeachHouseSign2Text1
.next
call PrintText
jp TextScriptEnd
@@ -111,11 +109,11 @@ BeachHouseSign2Text:
BeachHouseSign3Text:
TX_ASM
- ld hl,.BeachHouseSign3Text2
- ld a,[$d471]
- bit 6,a
- jr z,.next
- ld hl,.BeachHouseSign3Text1
+ ld hl, .BeachHouseSign3Text2
+ ld a, [wd472]
+ bit 6, a
+ jr z, .next
+ ld hl, .BeachHouseSign3Text1
.next
call PrintText
jp TextScriptEnd
@@ -129,67 +127,65 @@ BeachHouseSign3Text:
BeachHouseSign4Text:
TX_ASM
- ld a,1
- ld [$cc3c],a
- ld a,[$d471]
- bit 6,a
- jr z,.xf2369
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, [wd472]
+ bit 6, a
+ jr z, .asm_f2369
- ld hl,$d492
- bit 1,[hl]
- jr z,.next2
- ld a,0
- ld [$cc3c],a
+ ld hl, wPreventBlackout
+ bit 1, [hl]
+ jr z, .next2
+ ld a, 0
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
.next2
- ld hl,.BeachHousePrinterText2
+ ld hl, .BeachHousePrinterText2
call PrintText
- ld a,[$d492]
- bit 1,a
- jr z,.xf236f
+ ld a, [wPreventBlackout]
+ bit 1, a
+ jr z, .asm_f236f
- ld a,1
- ld [$cc3c],a
- ld hl,.BeachHousePrinterText3
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, .BeachHousePrinterText3
call PrintText
call YesNoChoice
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
and a
- jp z,$63d0 ; 0xf23d0
- call $36ec
- ld hl,$d72f
- set 6,[hl]
+ jp z, Func_f23d0 ; 0xf23d0
+ call SaveScreenTilesToBuffer2
+ ld hl, wd730
+ set 6, [hl]
xor a
- ld [$cfca],a
- ld hl,$510a
- ld b,$3a
- call $3e84
- call $3852
- ld hl,$d72f
- res 6,[hl]
- call $3dd8
- call $2f83
- call $3dc2
- call $36f8
- call $3ddb
- call $3de0
- ld a,1
- ld [$cfca],a
- jr .xf236f
-.xf2369
- ld hl,.BeachHousePrinterText1
+ ld [wUpdateSpritesEnabled], a
+ callab Func_e910a
+ call WaitForTextScrollButtonPress
+ ld hl, wd730
+ res 6, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld a, 1
+ ld [wUpdateSpritesEnabled], a
+ jr .asm_f236f
+.asm_f2369
+ ld hl, .BeachHousePrinterText1
call PrintText
-.xf236f
+.asm_f236f
jp TextScriptEnd
.BeachHousePrinterText1
TX_FAR _BeachHousePrinterText1
- db $d,"@"
+ db $d, "@"
.BeachHousePrinterText2
TX_FAR _BeachHousePrinterText2
- db $d,"@"
+ db $d, "@"
.BeachHousePrinterText3
TX_FAR _BeachHousePrinterText3
db "@"
-.xf2383
+.BeachHousePrinterText4
TX_FAR _BeachHousePrinterText4
db "@"
diff --git a/scripts/beach_house2.asm b/scripts/beach_house2.asm
new file mode 100755
index 00000000..a2dd2114
--- /dev/null
+++ b/scripts/beach_house2.asm
@@ -0,0 +1,33 @@
+Func_f23d0: ; f23d0
+ call SaveScreenTilesToBuffer2
+ xor a
+ ld [wUpdateSpritesEnabled], a
+ ld hl, wd730
+ set 6, [hl]
+ callab Func_e8c5c
+ ld hl, wd730
+ res 6, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld hl, Text_f2412
+ ld a, [hOaksAideResult]
+ and a
+ jr nz, .asm_f2406
+ ld hl, Text_f240c
+.asm_f2406
+ call PrintText
+ jp TextScriptEnd
+
+Text_f240c:
+ TX_FAR _BeachHousePrinterText5
+ TX_WAIT_BUTTON
+ db "@"
+
+Text_f2412:
+ TX_FAR _BeachHousePrinterText6
+ TX_WAIT_BUTTON
+ db "@"
diff --git a/scripts/bikeshop.asm b/scripts/bikeshop.asm
index e639caf9..5723849d 100755
--- a/scripts/bikeshop.asm
+++ b/scripts/bikeshop.asm
@@ -1,5 +1,6 @@
BikeShopScript: ; 1d73c (7:573c)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
BikeShopTextPointers: ; 1d73f (7:573f)
dw BikeShopText1
@@ -13,6 +14,7 @@ BikeShopText1: ; 1d745 (7:5745)
ld hl, BikeShopText_1d82f
call PrintText
jp .Done
+
.asm_260d4
ld b, BIKE_VOUCHER
call IsItemInBag
@@ -29,10 +31,12 @@ BikeShopText1: ; 1d745 (7:5745)
ld hl, BikeShopText_1d824
call PrintText
jr .Done
+
.BagFull
ld hl, BikeShopText_1d834
call PrintText
jr .Done
+
.asm_41190
ld hl, BikeShopText_1d810
call PrintText
@@ -50,8 +54,7 @@ BikeShopText1: ; 1d745 (7:5745)
ld hl, wd730
set 6, [hl]
coord hl, 0, 0
- ld b, $4
- ld c, $f
+ lb bc, 4, 15
call TextBoxBorder
call UpdateSprites
coord hl, 2, 2
@@ -62,11 +65,12 @@ BikeShopText1: ; 1d745 (7:5745)
call PlaceString
ld hl, BikeShopText_1d815
call PrintText
- call HandleMenuInput
- bit 1, a
- jr nz, .cancel
+ ; This fixes the bike shop instatext glitch
ld hl, wd730
res 6, [hl]
+ call HandleMenuInput
+ bit BIT_B_BUTTON, a
+ jr nz, .cancel
ld a, [wCurrentMenuItem]
and a
jr nz, .cancel
@@ -94,7 +98,7 @@ BikeShopText_1d815: ; 1d815 (7:5815)
db "@"
BikeShopCantAffordText: ; 1d81a (7:581a)
- TX_FAR _BikeShopCantAffordText
+ TX_FAR _BikeShopText_1d81a
db "@"
BikeShopText_1d81f: ; 1d81f (7:581f)
@@ -103,10 +107,11 @@ BikeShopText_1d81f: ; 1d81f (7:581f)
BikeShopText_1d824: ; 1d824 (7:5824)
TX_FAR _BikeShopText_1d824
- db $11, "@"
+ TX_SFX_KEY_ITEM
+ db "@"
BikeShopComeAgainText: ; 1d82a (7:582a)
- TX_FAR _BikeShopComeAgainText
+ TX_FAR _BikeShopText_1d82a
db "@"
BikeShopText_1d82f: ; 1d82f (7:582f)
diff --git a/scripts/billshouse.asm b/scripts/billshouse.asm
index 56f2204f..4f01021e 100755
--- a/scripts/billshouse.asm
+++ b/scripts/billshouse.asm
@@ -2,7 +2,7 @@ BillsHouseScript: ; 1e76a (7:676a)
call EnableAutoTextBoxDrawing
ld a, [W_BILLSHOUSECURSCRIPT]
ld hl, BillsHouseScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
BillsHouseScriptPointers: ; 1e776 (7:6776)
dw BillsHouseScript0
diff --git a/scripts/billshouse2.asm b/scripts/billshouse2.asm
new file mode 100755
index 00000000..6f62a79f
--- /dev/null
+++ b/scripts/billshouse2.asm
@@ -0,0 +1,158 @@
+Func_f2418:
+ ld hl, BillsHouseText_f243b
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_f2433
+.asm_f2427
+ ld hl, BillsHouseText_f2440
+ call PrintText
+ ld a, $2
+ ld [W_BILLSHOUSECURSCRIPT], a
+ ret
+
+.asm_f2433
+ ld hl, BillsHouseText_f2445
+ call PrintText
+ jr .asm_f2427
+
+BillsHouseText_f243b:
+ TX_FAR _BillsHouseText_1e865
+ db "@"
+
+BillsHouseText_f2440:
+ TX_FAR _BillsHouseText_1e86a
+ db "@"
+
+BillsHouseText_f2445:
+ TX_FAR _BillsHouseText_1e86f
+ db "@"
+
+Func_f244a:
+ CheckEvent EVENT_GOT_SS_TICKET
+ jr nz, .asm_f247e
+ ld hl, BillsHouseText_f248c
+ call PrintText
+ lb bc, S_S_TICKET, 1
+ call GiveItem
+ jr nc, .asm_f2485
+ ld hl, BillsHouseText_f2491
+ call PrintText
+ SetEvent EVENT_GOT_SS_TICKET
+ ld a, HS_CERULEAN_GUARD_1
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ ld a, HS_CERULEAN_GUARD_2
+ ld [wMissableObjectIndex], a
+ predef HideObject
+.asm_f247e
+ ld hl, BillsHouseText_f249d
+ call PrintText
+ ret
+
+.asm_f2485
+ ld hl, BillsHouseText_f2498
+ call PrintText
+ ret
+
+BillsHouseText_f248c:
+ TX_FAR _BillThankYouText
+ db "@"
+
+BillsHouseText_f2491:
+ TX_FAR _SSTicketReceivedText
+ TX_SFX_KEY_ITEM
+ TX_BUTTON_SOUND
+ db "@"
+
+BillsHouseText_f2498:
+ TX_FAR _SSTicketNoRoomText
+ db "@"
+
+BillsHouseText_f249d:
+ TX_FAR _BillsHouseText_1e8cb
+ db "@"
+
+Func_f24a2:
+ ld hl, BillsHouseText_f24a9
+ call PrintText
+ ret
+
+BillsHouseText_f24a9:
+ TX_FAR _BillsHouseText_1e8da
+ db "@"
+
+Func_f24ae: ; f24ae
+ ld a, [wCurMap]
+ cp BILLS_HOUSE
+ jr nz, .asm_f24d2
+ call CheckPikachuAsleep
+ jr z, .asm_f24d2
+ ld a, [W_BILLSHOUSECURSCRIPT]
+ cp $5
+ ld e, $1b
+ ret z
+ cp $0
+ ld e, $17
+ ret z
+ CheckEventHL EVENT_MET_BILL_2
+ ld e, $20
+ ret z
+ ld e, $1f
+ ret
+
+.asm_f24d2
+ ld e, $ff
+ ret
+
+Func_f24d5:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ xor a
+ ld [wPlayerMovingDirection], a
+ call UpdateSprites
+ call UpdateSprites
+ ld hl, Data_f2505
+ call Func_159b
+ ld a, $f ; pikachu
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, $1
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ call SetPikachuAsleep
+ callab InitializePikachuTextID
+ ret
+
+Data_f2505:
+ db $00
+ db $20
+ db $20
+ db $20
+ db $1e
+ db $3f
+
+Func_f250b:
+ ld hl, Data_f251c
+ ld b, SPRITE_FACING_UP
+ call Func_f0a82
+ ld hl, Data_f2521
+ ld b, SPRITE_FACING_RIGHT
+ call Func_f0a82
+ ret
+
+Data_f251c:
+ db $00
+ db $1f
+ db $1d
+ db $38
+ db $3f
+
+Data_f2521:
+ db $00
+ db $1e
+ db $1f
+ db $1f
+ db $1d
+ db $38
+ db $3f
diff --git a/scripts/blueshouse.asm b/scripts/blueshouse.asm
index 6aa2eaec..959fb23e 100755
--- a/scripts/blueshouse.asm
+++ b/scripts/blueshouse.asm
@@ -1,8 +1,9 @@
BluesHouseScript: ; 19b3b (6:5b3b)
call EnableAutoTextBoxDrawing
- ld hl,BluesHouseScriptPointers
- ld a,[W_BLUESHOUSECURSCRIPT]
- jp CallFunctionInTable
+ ld hl, BluesHouseScriptPointers
+ xor a
+ call JumpTable
+ ret
BluesHouseScriptPointers: ; 19b47 (6:5b47)
dw BluesHouseScript0
@@ -12,10 +13,8 @@ BluesHouseScript0: ; 19b4b (6:5b4b)
SetEvent EVENT_ENTERED_BLUES_HOUSE
; trigger the next script
- ld a,1
- ld [W_BLUESHOUSECURSCRIPT],a
- ret
-
+ ld a, 1
+ ld [W_BLUESHOUSECURSCRIPT], a
BluesHouseScript1: ; 19b56 (6:5b56)
ret
@@ -27,31 +26,31 @@ BluesHouseTextPointers: ; 19b57 (6:5b57)
BluesHouseText1: ; 19b5d (6:5b5d)
TX_ASM
CheckEvent EVENT_GOT_TOWN_MAP
- jr nz,.GotMap
+ jr nz, .GotMap
CheckEvent EVENT_GOT_POKEDEX
- jr nz,.GiveMap
- ld hl,DaisyInitialText
+ jr nz, .GiveMap
+ ld hl, DaisyInitialText
call PrintText
jr .done
.GiveMap
- ld hl,DaisyOfferMapText
+ ld hl, DaisyOfferMapText
call PrintText
lb bc, TOWN_MAP, 1
call GiveItem
jr nc, .BagFull
- ld a,HS_TOWN_MAP
- ld [wMissableObjectIndex],a
+ ld a, HS_TOWN_MAP
+ ld [wMissableObjectIndex], a
predef HideObject ; hide table map object
- ld hl,GotMapText
+ ld hl, GotMapText
call PrintText
SetEvent EVENT_GOT_TOWN_MAP
jr .done
.GotMap
- ld hl,DaisyUseMapText
+ ld hl, DaisyUseMapText
call PrintText
jr .done
.BagFull
- ld hl,DaisyBagFullText
+ ld hl, DaisyBagFullText
call PrintText
.done
jp TextScriptEnd
@@ -66,7 +65,7 @@ DaisyOfferMapText: ; 19baf (6:5baf)
GotMapText: ; 19bb4 (6:5bb4)
TX_FAR _GotMapText
- db $11,"@"
+ db $11, "@"
DaisyBagFullText: ; 19bba (6:5bba)
TX_FAR _DaisyBagFullText
diff --git a/scripts/celadoncity.asm b/scripts/celadoncity.asm
index cfc8f197..233b38bd 100755
--- a/scripts/celadoncity.asm
+++ b/scripts/celadoncity.asm
@@ -1,5 +1,14 @@
-CeladonCityScript: ; 19956 (6:5956)
+CeladonCityScript: ; 19a43 (6:5a43)
call EnableAutoTextBoxDrawing
+ ld hl, CeladonCityScriptPointers
+ ld a, [W_CELADONCITYCURSCRIPT]
+ call JumpTable
+ ret
+
+CeladonCityScriptPointers:
+ dw CeladonCityScript1
+
+CeladonCityScript1:
ResetEvents EVENT_1B8, EVENT_1BF
ResetEvent EVENT_67F
ret
@@ -99,8 +108,9 @@ CeladonCityText9: ; 199fe (6:59fe)
db "@"
CeladonCityText10: ; 19a03 (6:5a03)
- TX_FAR _CeladonCityText10
- db "@"
+ TX_ASM
+ callba Func_f1ac6
+ jp TextScriptEnd
CeladonCityText11: ; 19a08 (6:5a08)
TX_FAR _CeladonCityText11
diff --git a/scripts/celadoncity2.asm b/scripts/celadoncity2.asm
new file mode 100755
index 00000000..12f7b366
--- /dev/null
+++ b/scripts/celadoncity2.asm
@@ -0,0 +1,8 @@
+Func_f1ac6:
+ ld hl, Text_f1acd
+ call PrintText
+ ret
+
+Text_f1acd:
+ TX_FAR _CeladonCityText10
+ db "@"
diff --git a/scripts/celadongamecorner.asm b/scripts/celadongamecorner.asm
index c3872bab..5fc9cf97 100755
--- a/scripts/celadongamecorner.asm
+++ b/scripts/celadongamecorner.asm
@@ -4,7 +4,7 @@ CeladonGameCornerScript: ; 48bbd (12:4bbd)
call EnableAutoTextBoxDrawing
ld hl, CeladonGameCornerScriptPointers
ld a, [W_CELADONGAMECORNERCURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
CeladonGameCornerScript_48bcf: ; 48bcf (12:4bcf)
ld hl, wd126
diff --git a/scripts/ceruleancity.asm b/scripts/ceruleancity.asm
index 55254adc..59b0e525 100755
--- a/scripts/ceruleancity.asm
+++ b/scripts/ceruleancity.asm
@@ -2,7 +2,7 @@ CeruleanCityScript: ; 19480 (6:5480)
call EnableAutoTextBoxDrawing
ld hl, CeruleanCityScriptPointers
ld a, [W_CERULEANCITYCURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
CeruleanCityScript_1948c: ; 1948c (6:548c)
xor a
@@ -64,9 +64,7 @@ CeruleanCityScript0: ; 194c8 (6:54c8)
ld a, [wWalkBikeSurfState]
and a
jr z, .asm_19512
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
.asm_19512
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
@@ -136,23 +134,8 @@ CeruleanCityScript1: ; 19567 (6:5567)
call SaveEndBattleTextPointers
ld a, OPP_SONY1
ld [wCurOpponent], a
-
- ; select which team to use during the encounter
- ld a, [W_RIVALSTARTER]
- cp STARTER2
- jr nz, .NotSquirtle
- ld a, $7
- jr .done
-.NotSquirtle
- cp STARTER3
- jr nz, .Charmander
- ld a, $8
- jr .done
-.Charmander
- ld a, $9
-.done
+ ld a, 3
ld [wTrainerNo], a
-
xor a
ld [hJoyHeld], a
call CeruleanCityScript_1955d
@@ -171,9 +154,7 @@ CeruleanCityScript2: ; 195b1 (6:55b1)
ld a, $1
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStart
ld a, $1
ld [H_SPRITEINDEX], a
diff --git a/scripts/ceruleangym.asm b/scripts/ceruleangym.asm
index fe0faea0..f1ef4c43 100755
--- a/scripts/ceruleangym.asm
+++ b/scripts/ceruleangym.asm
@@ -55,6 +55,7 @@ CeruleanGymScript_5c70d: ; 5c70d (17:470d)
call DisplayTextID
SetEvent EVENT_GOT_TM11
jr .asm_5c736
+
.BagFull
ld a, $7
ld [hSpriteIndexOrTextID], a
@@ -158,7 +159,7 @@ CeruleanGymText7: ; 5c7d3 (17:47d3)
CeruleanGymText_5c7d8: ; 5c7d8 (17:47d8)
TX_FAR _CeruleanGymText_5c7d8
- db $11, $6, "@"
+ db "@"
CeruleanGymText2: ; 5c7df (17:47df)
TX_ASM
diff --git a/scripts/ceruleanhouse1.asm b/scripts/ceruleanhouse1.asm
index e703d830..0b9a9052 100755
--- a/scripts/ceruleanhouse1.asm
+++ b/scripts/ceruleanhouse1.asm
@@ -1,17 +1,106 @@
CeruleanHouse1Script: ; 1d6f6 (7:56f6)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeruleanHouse1TextPointers: ; 1d6f9 (7:56f9)
dw CeruleanHouse1Text1
dw CeruleanHouse1Text2
+ dw CeruleanHouse1Text3
+ dw CeruleanHouse1Text4
CeruleanHouse1Text1: ; 1d6fd (7:56fd)
- TX_FAR _CeruleanHouse1Text1
+ TX_ASM
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ CheckEvent EVENT_GOT_BULBASAUR_IN_CERULEAN
+ jr nz, .asm_1cfbf
+ ld hl, CeruleanHouse1Text_1cfc8
+ call PrintText
+ ld a, [wPikachuHappiness]
+ cp 147
+ jr c, .asm_1cfb3
+ ld hl, CeruleanHouse1Text_1cfce
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_1cfb6
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, BULBASAUR
+ ld [wd11e], a
+ ld [wcf91], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ lb bc, BULBASAUR, 10
+ call GivePokemon
+ jr nc, .asm_1cfb3
+ ld a, [wAddedToParty]
+ and a
+ call z, WaitForTextScrollButtonPress
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, CeruleanHouse1Text_1cfd3
+ call PrintText
+ ld a, HS_CERULEAN_BULBASAUR
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ SetEvent EVENT_GOT_BULBASAUR_IN_CERULEAN
+.asm_1cfb3
+ jp TextScriptEnd
+
+.asm_1cfb6
+ ld hl, CeruleanHouse1Text_1cfdf
+ call PrintText
+ jp TextScriptEnd
+
+.asm_1cfbf
+ ld hl, CeruleanHouse1Text_1cfd9
+ call PrintText
+ jp TextScriptEnd
+
+CeruleanHouse1Text_1cfc8:
+ TX_FAR MelanieText1
+ TX_WAIT_BUTTON
+ db "@"
+
+CeruleanHouse1Text_1cfce:
+ TX_FAR MelanieText2
+ db "@"
+
+CeruleanHouse1Text_1cfd3:
+ TX_FAR MelanieText3
+ TX_WAIT_BUTTON
+ db "@"
+
+CeruleanHouse1Text_1cfd9:
+ TX_FAR MelanieText4
+ TX_WAIT_BUTTON
+ db "@"
+
+CeruleanHouse1Text_1cfdf:
+ TX_FAR MelanieText5
+ TX_WAIT_BUTTON
db "@"
CeruleanHouse1Text2: ; 1d702 (7:5702)
+ TX_FAR MelanieBulbasaurText
+ TX_ASM
+ ld a, BULBASAUR
+ call PlayCry
+ jp TextScriptEnd
+
+CeruleanHouse1Text3: ; 1d702 (7:5702)
+ TX_FAR MelanieOddishText
+ TX_ASM
+ ld a, ODDISH
+ call PlayCry
+ jp TextScriptEnd
+
+CeruleanHouse1Text4: ; 1d702 (7:5702)
+ TX_FAR MelanieSandshrewText
TX_ASM
- ld a, $6
- ld [wWhichTrade], a
- predef DoInGameTradeDialogue
+ ld a, SANDSHREW
+ call PlayCry
jp TextScriptEnd
diff --git a/scripts/ceruleanpokecenter.asm b/scripts/ceruleanpokecenter.asm
index 5d888317..f4eb68ae 100755
--- a/scripts/ceruleanpokecenter.asm
+++ b/scripts/ceruleanpokecenter.asm
@@ -7,6 +7,7 @@ CeruleanPokecenterTextPointers: ; 5c64b (17:464b)
dw CeruleanPokecenterText2
dw CeruleanPokecenterText3
dw CeruleanPokecenterText4
+ dw CeruleanPokecenterText5
CeruleanPokecenterText4: ; 5c653 (17:4653)
db $f6
@@ -21,3 +22,8 @@ CeruleanPokecenterText2: ; 5c655 (17:4655)
CeruleanPokecenterText3: ; 5c65a (17:465a)
TX_FAR _CeruleanPokecenterText3
db "@"
+
+CeruleanPokecenterText5:
+ TX_ASM
+ callab Func_f0f12
+ jp TextScriptEnd
diff --git a/scripts/cinnabargym.asm b/scripts/cinnabargym.asm
index 649609b3..c5d462b3 100755
--- a/scripts/cinnabargym.asm
+++ b/scripts/cinnabargym.asm
@@ -3,7 +3,7 @@ CinnabarGymScript: ; 7574a (1d:574a)
call EnableAutoTextBoxDrawing
ld hl, CinnabarGymScriptPointers
ld a, [W_CINNABARGYMCURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
CinnabarGymScript_75759: ; 75759 (1d:5759)
ld hl, wd126
diff --git a/scripts/cinnabarisland.asm b/scripts/cinnabarisland.asm
index 48ded740..3a2e9a2b 100755
--- a/scripts/cinnabarisland.asm
+++ b/scripts/cinnabarisland.asm
@@ -6,7 +6,7 @@ CinnabarIslandScript: ; 1ca19 (7:4a19)
ResetEvent EVENT_LAB_STILL_REVIVING_FOSSIL
ld hl, CinnabarIslandScriptPointers
ld a, [W_CINNABARISLANDCURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
CinnabarIslandScriptPointers: ; 1ca34 (7:4a34)
dw CinnabarIslandScript0
diff --git a/scripts/daycarem.asm b/scripts/daycarem.asm
index 4a46e648..b80b3dac 100755
--- a/scripts/daycarem.asm
+++ b/scripts/daycarem.asm
@@ -50,11 +50,21 @@ DayCareMText1: ; 56254 (15:6254)
ld a, PARTY_TO_DAYCARE
ld [wMoveMonType], a
call MoveMon
+ callab IsThisPartymonStarterPikachu
+ push af
xor a
ld [wRemoveMonFromBox], a
call RemovePokemon
+ pop af
+ jr c, .depositedPikachuIntoDayCare
ld a, [wcf91]
call PlayCry
+ jr .asm_562e3
+
+.depositedPikachuIntoDayCare
+ ldpikacry e, PikachuCry28
+ callab PlayPikachuSoundClip
+.asm_562e3
ld hl, DayCareComeSeeMeInAWhileText
jp .done
@@ -197,8 +207,27 @@ DayCareMText1: ; 56254 (15:6254)
ld a, [hl]
ld [de], a
+ ld a, [wPartyCount]
+ dec a
+ ld [wWhichPokemon], a
+ callab IsThisPartymonStarterPikachu
+ jr c, .withdrewPikachuFromDayCare
ld a, [wcf91]
call PlayCry
+ jr .asm_56430
+
+.withdrewPikachuFromDayCare
+ ld a, $6
+ ld [wd431], a
+
+ ; GameFreak... TriHard
+ ld hl, Func_fc4fa
+ ld b, BANK(Func_fc4fa)
+ ld hl, Bankswitch
+
+ ldpikacry e, PikachuCry35
+ callab PlayPikachuSoundClip
+.asm_56430
ld hl, DayCareGotMonBackText
jr .done
diff --git a/scripts/gary.asm b/scripts/gary.asm
index 685e18fe..64734c58 100755
--- a/scripts/gary.asm
+++ b/scripts/gary.asm
@@ -2,7 +2,7 @@ GaryScript: ; 75f1d (1d:5f1d)
call EnableAutoTextBoxDrawing
ld hl, GaryScriptPointers
ld a, [W_GARYCURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
GaryScript_75f29: ; 75f29 (1d:5f29)
xor a
diff --git a/scripts/halloffameroom.asm b/scripts/halloffameroom.asm
index 466ce77d..0f975673 100755
--- a/scripts/halloffameroom.asm
+++ b/scripts/halloffameroom.asm
@@ -2,7 +2,7 @@ HallofFameRoomScript: ; 5a49e (16:649e)
call EnableAutoTextBoxDrawing
ld hl, HallofFameRoomScriptPointers
ld a, [W_HALLOFFAMEROOMCURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
HallofFameRoomScript_5a4aa: ; 5a4aa (16:64aa)
xor a
diff --git a/scripts/mtmoon1.asm b/scripts/mtmoon1.asm
index 4a5eeae3..a649481c 100755
--- a/scripts/mtmoon1.asm
+++ b/scripts/mtmoon1.asm
@@ -97,42 +97,37 @@ MtMoon1TrainerHeader7: ; 49a45 (12:5a45)
MtMoon1Text1: ; 49a52 (12:5a52)
TX_ASM
ld hl, MtMoon1TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text2: ; 49a5c (12:5a5c)
TX_ASM
ld hl, MtMoon1TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text3: ; 49a66 (12:5a66)
TX_ASM
ld hl, MtMoon1TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text4: ; 49a70 (12:5a70)
TX_ASM
ld hl, MtMoon1TrainerHeader4
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text5: ; 49a7a (12:5a7a)
TX_ASM
ld hl, MtMoon1TrainerHeader5
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text6: ; 49a84 (12:5a84)
TX_ASM
ld hl, MtMoon1TrainerHeader6
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text7: ; 49a8e (12:5a8e)
TX_ASM
ld hl, MtMoon1TrainerHeader7
+MtMoon1TalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
diff --git a/scripts/mtmoon3.asm b/scripts/mtmoon3.asm
index b3a994e2..1de3445d 100755
--- a/scripts/mtmoon3.asm
+++ b/scripts/mtmoon3.asm
@@ -1,6 +1,6 @@
MtMoon3Script: ; 49d0b (12:5d0b)
call EnableAutoTextBoxDrawing
- ld hl, MtMoon3TrainerHeader0
+ ld hl, MtMoon3TrainerHeaders
ld de, MtMoon3ScriptPointers
ld a, [W_MTMOON3CURSCRIPT]
call ExecuteCurMapScriptInTable
@@ -37,13 +37,23 @@ CoordsData_49d37: ; 49d37 (12:5d37)
db $08,$0E
db $FF
-MtMoon3Script_49d58: ; 49d58 (12:5d58)
+MtMoon3Script_49cd7: ; 49d58 (12:5d58)
+ CheckAndResetEvent EVENT_57E
+ call nz, MtMoon3Script_49cec
xor a
ld [wJoyIgnore], a
+MtMoon3Script_49ce5:
ld [W_MTMOON3CURSCRIPT], a
ld [W_CURMAPSCRIPT], a
ret
+MtMoon3Script_49cec:
+ ld a, HS_MT_MOON_JESSIE
+ call MtMoon3Script_49f93
+ ld a, HS_MT_MOON_JAMES
+ call MtMoon3Script_49f93
+ ret
+
MtMoon3ScriptPointers: ; 49d63 (12:5d63)
dw MtMoon3Script0
dw DisplayEnemyTrainerTextAndStartBattle
@@ -51,23 +61,41 @@ MtMoon3ScriptPointers: ; 49d63 (12:5d63)
dw MtMoon3Script3
dw MtMoon3Script4
dw MtMoon3Script5
+ dw MtMoon3Script6
+ dw MtMoon3Script7
+ dw MtMoon3Script8
+ dw MtMoon3Script9
+ dw MtMoon3Script10
+ dw MtMoon3Script11
+ dw MtMoon3Script12
+ dw MtMoon3Script13
+ dw MtMoon3Script14
+ dw MtMoon3Script15
MtMoon3Script0: ; 49d6f (12:5d6f)
+ CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL
+ call z, MtMoon3Script_49d28
+ CheckEvent EVENT_BEAT_MT_MOON_3_TRAINER_0
+ call z, MtMoon3Script_49e15
+ ret
+
+MtMoon3Script_49d28:
CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
- jp nz, MtMoon3Script_49d91
+ jp nz, .asm_49d4b
ld a, [wYCoord]
cp $8
- jp nz, MtMoon3Script_49d91
+ jp nz, .asm_49d4b
ld a, [wXCoord]
cp $d
- jp nz, MtMoon3Script_49d91
+ jp nz, .asm_49d4b
xor a
ld [hJoyHeld], a
ld a, $1
ld [hSpriteIndexOrTextID], a
- jp DisplayTextID
+ call DisplayTextID
+ ret
-MtMoon3Script_49d91: ; 49d91 (12:5d91)
+.asm_49d4b
CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL
jp z, CheckFightingMapTrainers
ret
@@ -75,57 +103,93 @@ MtMoon3Script_49d91: ; 49d91 (12:5d91)
MtMoon3Script3: ; 49d9a (12:5d9a)
ld a, [wIsInBattle]
cp $ff
- jp z, MtMoon3Script_49d58
+ jp z, MtMoon3Script_49cd7
call UpdateSprites
call Delay3
SetEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
xor a
ld [wJoyIgnore], a
ld a, $0
- ld [W_MTMOON3CURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
+ call MtMoon3Script_49ce5
ret
MtMoon3Script4: ; 49dba (12:5dba)
ld a, $1
ld [H_SPRITEINDEX], a
call SetSpriteMovementBytesToFF
- ld hl, CoordsData_49dea
+ ld hl, CoordsData_49dc7
+ call ArePlayerCoordsInArray
+ jr c, .asm_49da8
+ ld hl, CoordsData_49dc0
call ArePlayerCoordsInArray
- jr c, .asm_49dd7
- ld hl, CoordsData_49df1
+ jr c, .asm_49db0
+ ld hl, CoordsData_49dd5
call ArePlayerCoordsInArray
- jp nc, CheckFightingMapTrainers
- ld de, MovementData_49df9
- jr .asm_49dda
-.asm_49dd7
- ld de, MovementData_49df8
-.asm_49dda
+ jr c, .asm_49d9b
+ ld hl, CoordsData_49dce
+ call ArePlayerCoordsInArray
+ jr c, .asm_49da3
+ jp CheckFightingMapTrainers
+
+.asm_49d9b
+ ld b, SPRITE_FACING_LEFT
+ ld hl, PikachuMovementData_49dd8
+ call MtMoon3Script_4a325
+.asm_49da3
+ ld de, MovementData_49ddd
+ jr .asm_49db3
+
+.asm_49da8
+ ld b, SPRITE_FACING_RIGHT
+ ld hl, PikachuMovementData_49dca
+ call MtMoon3Script_4a325
+.asm_49db0
+ ld de, MovementData_49ddc
+.asm_49db3
ld a, $1
ld [H_SPRITEINDEX], a
call MoveSprite
ld a, $5
- ld [W_MTMOON3CURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
+ call MtMoon3Script_49ce5
ret
-CoordsData_49dea: ; 49dea (12:5dea)
+CoordsData_49dc0:
db $07,$0C
db $06,$0B
db $05,$0C
db $FF
-CoordsData_49df1: ; 49df1 (12:5df1)
+CoordsData_49dc7:
+ db $07,$0C
+ db $FF
+
+PikachuMovementData_49dca:
+ db $00
+ db $35
+ db $33
+ db $3f
+
+CoordsData_49dce:
db $07,$0D
db $06,$0E
db $05,$0E
db $FF
-MovementData_49df8: ; 49df8 (12:5df8)
- db NPC_MOVEMENT_RIGHT
+CoordsData_49dd5:
+ db $07,$0D
+ db $FF
-MovementData_49df9: ; 49df9 (12:5df9)
- db NPC_MOVEMENT_UP,$FF
+PikachuMovementData_49dd8:
+ db $00
+ db $35
+ db $34
+ db $3f
+
+MovementData_49ddc: ; 49df8 (12:5df8)
+ db NPC_MOVEMENT_RIGHT
+MovementData_49ddd: ; 49df9 (12:5df9)
+ db NPC_MOVEMENT_UP
+ db $FF
MtMoon3Script5: ; 49dfb (12:5dfb)
ld a, [wd730]
@@ -135,23 +199,213 @@ MtMoon3Script5: ; 49dfb (12:5dfb)
ld [wJoyIgnore], a
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld a, $a
+ ld a, $b
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- CheckEvent EVENT_GOT_DOME_FOSSIL
+ CheckEvent EVENT_GOT_HELIX_FOSSIL
jr z, .asm_49e1d
- ld a, HS_MT_MOON_3_FOSSIL_2
+ ld a, HS_MT_MOON_3_FOSSIL_1
jr .asm_49e1f
.asm_49e1d
- ld a, HS_MT_MOON_3_FOSSIL_1
+ ld a, HS_MT_MOON_3_FOSSIL_2
.asm_49e1f
ld [wMissableObjectIndex], a
predef HideObject
xor a
ld [wJoyIgnore], a
ld a, $0
- ld [W_MTMOON3CURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script_49e15:
+ ld a, [wXCoord]
+ cp $3
+ ret nz
+ ld a, [wYCoord]
+ cp $5
+ ret nz
+ call StopAllMusic
+ ld c, BANK(Music_JessieAndJames)
+ ld a, MUSIC_JESSIE_AND_JAMES
+ call PlayMusic
+ xor a
+ ld [hJoyHeld], a
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, HS_MT_MOON_JESSIE
+ call MtMoon3Script_49f84
+ ld a, HS_MT_MOON_JAMES
+ call MtMoon3Script_49f84
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $c
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_UP
+ ld [wSimulatedJoypadStatesEnd], a
+ call StartSimulatingJoypadStates
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $6
+ call MtMoon3Script_49ce5
+ ret
+
+MovementData_f9e65:
+ db $06
+MovementData_f9e66:
+ db $06
+ db $06
+ db $06
+ db $06
+ db $06
+ db $FF
+
+MtMoon3Script6:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
+ ret nz
+ call Delay3
+ ld a, $2
+ ld [H_SPRITEINDEX], a
+ ld de, MovementData_f9e65
+ call MoveSprite
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $7
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script7:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+MtMoon3Script8:
+ ld a, $2
+ ld [wSpriteStateData1 + 2 * $10 + 1], a
+ ld a, SPRITE_FACING_DOWN
+ ld [wSpriteStateData1 + 2 * $10 + 9], a
+MtMoon3Script9:
+ ld a, $6
+ ld [H_SPRITEINDEX], a
+ ld de, MovementData_f9e66
+ call MoveSprite
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $a
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script10:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+MtMoon3Script11:
+ ld a, $2
+ ld [wSpriteStateData1 + 6 * $10 + 1], a
+ ld a, SPRITE_FACING_LEFT
+ ld [wSpriteStateData1 + 6 * $10 + 9], a
+ call Delay3
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, $d
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+MtMoon3Script12:
+ ld hl, wd72d
+ set 6, [hl]
+ set 7, [hl]
+ ld hl, MtMoon3JessieJamesEndBattleText
+ ld de, MtMoon3JessieJamesEndBattleText
+ call SaveEndBattleTextPointers
+ ld a, OPP_ROCKET
+ ld [wCurOpponent], a
+ ld a, $2a
+ ld [wTrainerNo], a
+ xor a
+ ld [hJoyHeld], a
+ ld [wJoyIgnore], a
+ SetEvent EVENT_57E
+ ld a, $d
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script13:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wIsInBattle]
+ cp $ff
+ jp z, MtMoon3Script_49cd7
+ ld a, $2
+ ld [wSpriteStateData1 + 2 * $10 + 1], a
+ ld [wSpriteStateData1 + 6 * $10 + 1], a
+ xor a
+ ld [wSpriteStateData1 + 2 * $10 + 9], a
+ ld [wSpriteStateData1 + 6 * $10 + 9], a
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $e
+ 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, $e
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script14:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ call GBFadeOutToBlack
+ ld a, HS_MT_MOON_JESSIE
+ call MtMoon3Script_49f93
+ ld a, HS_MT_MOON_JAMES
+ call MtMoon3Script_49f93
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, $f
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script15:
+ call PlayDefaultMusic
+ xor a
+ ld [hJoyHeld], a
+ ld [wJoyIgnore], a
+ SetEvent EVENT_BEAT_MT_MOON_3_TRAINER_0
+ ResetEventReuseHL EVENT_57E
+ ld a, $0
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script_49f84:
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ call UpdateSprites
+ call Delay3
+ ret
+
+MtMoon3Script_49f93:
+ ld [wMissableObjectIndex], a
+ predef HideObject
ret
MtMoon3TextPointers: ; 49e34 (12:5e34)
@@ -162,242 +416,258 @@ MtMoon3TextPointers: ; 49e34 (12:5e34)
dw MtMoon3Text5
dw MtMoon3Text6
dw MtMoon3Text7
+ dw MtMoon3Text8
dw PickUpItemText
dw PickUpItemText
- dw MtMoon3Text_49f99
-
-MtMoon3TrainerHeaders: ; 49e48 (12:5e48)
-MtMoon3TrainerHeader0: ; 49e48 (12:5e48)
- dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_0
- db ($4 << 4) ; trainer's view range
- dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_0
- dw MtMoon3BattleText2 ; TextBeforeBattle
- dw MtMoon3AfterBattleText2 ; TextAfterBattle
- dw MtMoon3EndBattleText2 ; TextEndBattle
- dw MtMoon3EndBattleText2 ; TextEndBattle
-
-MtMoon3TrainerHeader2: ; 49e54 (12:5e54)
+ dw MtMoon3Text11
+ dw MtMoon3Text12
+ dw MtMoon3Text13
+ dw MtMoon3Text14
+
+MtMoon3TrainerHeaders:
+MtMoon3TrainerHeader0:
dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_2
- db ($4 << 4) ; trainer's view range
+ db ($4 << 4)
dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_2
- dw MtMoon3BattleText3 ; TextBeforeBattle
- dw MtMoon3AfterBattleText3 ; TextAfterBattle
- dw MtMoon3EndBattleText3 ; TextEndBattle
- dw MtMoon3EndBattleText3 ; TextEndBattle
+ dw MtMoon3BattleText3
+ dw MtMoon3AfterBattleText3
+ dw MtMoon3EndBattleText3
+ dw MtMoon3EndBattleText3
-MtMoon3TrainerHeader3: ; 49e60 (12:5e60)
+MtMoon3TrainerHeader1:
dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_3
- db ($4 << 4) ; trainer's view range
+ db ($4 << 4)
dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_3
- dw MtMoon3BattleText4 ; TextBeforeBattle
- dw MtMoon3AfterBattleText4 ; TextAfterBattle
- dw MtMoon3EndBattleText4 ; TextEndBattle
- dw MtMoon3EndBattleText4 ; TextEndBattle
+ dw MtMoon3BattleText4
+ dw MtMoon3AfterBattleText4
+ dw MtMoon3EndBattleText4
+ dw MtMoon3EndBattleText4
-MtMoon3TrainerHeader4: ; 49e6c (12:5e6c)
+MtMoon3TrainerHeader2:
dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_4
- db ($4 << 4) ; trainer's view range
+ db ($4 << 4)
dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_4
- dw MtMoon3BattleText5 ; TextBeforeBattle
- dw MtMoon3AfterBattleText5 ; TextAfterBattle
- dw MtMoon3EndBattleText5 ; TextEndBattle
- dw MtMoon3EndBattleText5 ; TextEndBattle
+ dw MtMoon3BattleText5
+ dw MtMoon3AfterBattleText5
+ dw MtMoon3EndBattleText5
+ dw MtMoon3EndBattleText5
- db $ff
+ db $FF
+
+MtMoon3Text2:
+MtMoon3Text6:
+ db "@"
+
+MtMoon3Text12:
+ TX_FAR _MtMoonJessieJamesText1
+ TX_ASM
+ ld c, 10
+ call DelayFrames
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, $0
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
+ jp TextScriptEnd
+
+MtMoon3Text13:
+ TX_FAR _MtMoonJessieJamesText2
+ db "@"
-MtMoon3Text1: ; 49e79 (12:5e79)
+MtMoon3JessieJamesEndBattleText:
+ TX_FAR _MtMoonJessieJamesText3
+ db "@"
+
+MtMoon3Text14:
+ TX_FAR _MtMoonJessieJamesText4
+ TX_ASM
+ ld c, 64
+ call DelayFrames
+ jp TextScriptEnd
+
+MtMoon3Text1:
TX_ASM
CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
- jr z, .asm_49e8d
- and $c0
- jr nz, .asm_49eb8
- ld hl, MtMoon3Text_49f8f
+ jr z, .asm_4a02f
+ and $81 ; CheckEitherEventSetReuseA EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL
+ jr nz, .asm_4a057
+ ld hl, MtMoon3Text_4a116
call PrintText
- jr .asm_49ebe
-.asm_49e8d
- ld hl, MtMoon3Text_49f85
+ jr .asm_4a05d
+
+.asm_4a02f
+ ld hl, MtMoon3Text_4a10c
call PrintText
ld hl, wd72d
set 6, [hl]
set 7, [hl]
- ld hl, MtMoon3Text_49f8a
- ld de, MtMoon3Text_49f8a
+ ld hl, MtMoon3SuperNerdEndBattleText
+ ld de, MtMoon3SuperNerdEndBattleText
call SaveEndBattleTextPointers
ld a, [H_SPRITEINDEX]
ld [wSpriteIndex], a
call EngageMapTrainer
call InitBattleEnemyParameters
ld a, $3
- ld [W_MTMOON3CURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
- jr .asm_49ebe
-.asm_49eb8
- ld hl, MtMoon3Text_49f94
+ call MtMoon3Script_49ce5
+ jr .asm_4a05d
+
+.asm_4a057
+ ld hl, MtMoon3Text_4a11b
call PrintText
-.asm_49ebe
+.asm_4a05d
jp TextScriptEnd
-MtMoon3Text2: ; 49ec1 (12:5ec1)
+MtMoon3Text3:
TX_ASM
ld hl, MtMoon3TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon3TalkToTrainer
-MtMoon3Text3: ; 49ecb (12:5ecb)
+MtMoon3Text4:
TX_ASM
- ld hl, MtMoon3TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ ld hl, MtMoon3TrainerHeader1
+ jr MtMoon3TalkToTrainer
-MtMoon3Text4: ; 49ed5 (12:5ed5)
- TX_ASM
- ld hl, MtMoon3TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
-MtMoon3Text5: ; 49edf (12:5edf)
+MtMoon3Text5:
TX_ASM
- ld hl, MtMoon3TrainerHeader4
+ ld hl, MtMoon3TrainerHeader2
+MtMoon3TalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
-MtMoon3Text6: ; 49ee9 (12:5ee9)
+MtMoon3Text7:
TX_ASM
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld hl, MtMoon3Text_49f24
+ ld hl, MtMoon3Text_4a0ae
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
- jr nz, .asm_49f21
+ jr nz, .asm_4a0ab
lb bc, DOME_FOSSIL, 1
call GiveItem
- jp nc, MtMoon3Script_49f76
- call MtMoon3Script_49f69
+ jp nc, MtMoon3Script_4a0fd
+ call MtMoon3Script_4a0f0
ld a, HS_MT_MOON_3_FOSSIL_1
ld [wMissableObjectIndex], a
predef HideObject
SetEvent EVENT_GOT_DOME_FOSSIL
ld a, $4
- ld [W_MTMOON3CURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
-.asm_49f21
+ call MtMoon3Script_49ce5
+.asm_4a0ab
jp TextScriptEnd
-MtMoon3Text_49f24: ; 49f24 (12:5f24)
+MtMoon3Text_4a0ae:
TX_FAR _MtMoon3Text_49f24
db "@"
-MtMoon3Text7: ; 49f29 (12:5f29)
+MtMoon3Text8:
TX_ASM
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld hl, MtMoon3Text_49f64
+ ld hl, MtMoon3Text_4a0eb
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
- jr nz, .asm_49f61
+ jr nz, .asm_4a0e8
lb bc, HELIX_FOSSIL, 1
call GiveItem
- jp nc, MtMoon3Script_49f76
- call MtMoon3Script_49f69
+ jp nc, MtMoon3Script_4a0fd
+ call MtMoon3Script_4a0f0
ld a, HS_MT_MOON_3_FOSSIL_2
ld [wMissableObjectIndex], a
predef HideObject
SetEvent EVENT_GOT_HELIX_FOSSIL
ld a, $4
- ld [W_MTMOON3CURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
-.asm_49f61
+ call MtMoon3Script_49ce5
+.asm_4a0e8
jp TextScriptEnd
-MtMoon3Text_49f64: ; 49f64 (12:5f64)
+MtMoon3Text_4a0eb:
TX_FAR _MtMoon3Text_49f64
db "@"
-MtMoon3Script_49f69: ; 49f69 (12:5f69)
- ld hl, MtMoon3Text_49f6f
+MtMoon3Script_4a0f0:
+ ld hl, MtMoon3Text_4a0f6
jp PrintText
-MtMoon3Text_49f6f: ; 49f6f (12:5f6f)
+MtMoon3Text_4a0f6:
TX_FAR _MtMoon3Text_49f6f
- db $11, $d, "@"
+ TX_SFX_KEY_ITEM
+ TX_WAIT_BUTTON
+ db "@"
-MtMoon3Script_49f76: ; 49f76 (12:5f76)
- ld hl, MtMoon3Text_49f7f
+MtMoon3Script_4a0fd:
+ ld hl, MtMoon3Text_4a106
call PrintText
jp TextScriptEnd
-MtMoon3Text_49f7f: ; 49f7f (12:5f7f)
+MtMoon3Text_4a106:
TX_FAR _MtMoon3Text_49f7f
- db $d, "@"
+ TX_WAIT_BUTTON
+ db "@"
-MtMoon3Text_49f85: ; 49f85 (12:5f85)
+MtMoon3Text_4a10c:
TX_FAR _MtMoon3Text_49f85
db "@"
-MtMoon3Text_49f8a: ; 49f8a (12:5f8a)
+MtMoon3SuperNerdEndBattleText:
TX_FAR _MtMoon3Text_49f8a
db "@"
-MtMoon3Text_49f8f: ; 49f8f (12:5f8f)
+MtMoon3Text_4a116:
TX_FAR _MtMoon3Text_49f8f
db "@"
-MtMoon3Text_49f94: ; 49f94 (12:5f94)
+MtMoon3Text_4a11b:
TX_FAR _MtMoon3Text_49f94
db "@"
-MtMoon3Text_49f99: ; 49f99 (12:5f99)
+MtMoon3Text11:
TX_FAR _MtMoon3Text_49f99
- db $11, "@"
-
-MtMoon3BattleText2: ; 49f9f (12:5f9f)
- TX_FAR _MtMoon3BattleText2
+ TX_SFX_KEY_ITEM
db "@"
-MtMoon3EndBattleText2: ; 49fa4 (12:5fa4)
- TX_FAR _MtMoon3EndBattleText2
- db "@"
-
-MtMoon3AfterBattleText2: ; 49fa9 (12:5fa9)
- TX_FAR _MtMoon3AfterBattleText2
- db "@"
-
-MtMoon3BattleText3: ; 49fae (12:5fae)
+MtMoon3BattleText3:
TX_FAR _MtMoon3BattleText3
db "@"
-MtMoon3EndBattleText3: ; 49fb3 (12:5fb3)
+MtMoon3EndBattleText3:
TX_FAR _MtMoon3EndBattleText3
db "@"
-MtMoon3AfterBattleText3: ; 49fb8 (12:5fb8)
+MtMoon3AfterBattleText3:
TX_FAR _MtMoon3AfterBattleText3
db "@"
-MtMoon3BattleText4: ; 49fbd (12:5fbd)
+MtMoon3BattleText4:
TX_FAR _MtMoon3BattleText4
db "@"
-MtMoon3EndBattleText4: ; 49fc2 (12:5fc2)
+MtMoon3EndBattleText4:
TX_FAR _MtMoon3EndBattleText4
db "@"
-MtMoon3AfterBattleText4: ; 49fc7 (12:5fc7)
+MtMoon3AfterBattleText4:
TX_FAR _MtMoon3AfterBattleText4
db "@"
-MtMoon3BattleText5: ; 49fcc (12:5fcc)
+MtMoon3BattleText5:
TX_FAR _MtMoon3BattleText5
db "@"
-MtMoon3EndBattleText5: ; 49fd1 (12:5fd1)
+MtMoon3EndBattleText5:
TX_FAR _MtMoon3EndBattleText5
db "@"
-MtMoon3AfterBattleText5: ; 49fd6 (12:5fd6)
+MtMoon3AfterBattleText5:
TX_FAR _MtMoon3AfterBattleText5
db "@"
+
diff --git a/scripts/mtmoonpokecenter.asm b/scripts/mtmoonpokecenter.asm
index fd3e4e53..320ed070 100755
--- a/scripts/mtmoonpokecenter.asm
+++ b/scripts/mtmoonpokecenter.asm
@@ -9,9 +9,10 @@ MtMoonPokecenterTextPointers: ; 492d5 (12:52d5)
dw MtMoonPokecenterText4
dw MtMoonPokecenterText5
dw MtMoonPokecenterText6
+ dw MtMoonPokecenterText7
MtMoonPokecenterText1: ; 492e1 (12:52e1)
- db $ff
+ TX_POKECENTER_NURSE
MtMoonPokecenterText2: ; 492e2 (12:52e2)
TX_FAR _MtMoonPokecenterText1
@@ -23,72 +24,17 @@ MtMoonPokecenterText3: ; 492e7 (12:52e7)
MtMoonPokecenterText4: ; 492ec (12:52ec)
TX_ASM
- CheckEvent EVENT_BOUGHT_MAGIKARP, 1
- jp c, .alreadyBoughtMagikarp
- ld hl, MtMoonPokecenterText_4935c
- call PrintText
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jp nz, .choseNo
- ld [hMoney], a
- ld [hMoney + 2], a
- ld a, $5
- ld [hMoney + 1], a
- call HasEnoughMoney
- jr nc, .enoughMoney
- ld hl, MtMoonPokecenterText_49366
- jr .printText
-.enoughMoney
- lb bc, MAGIKARP, 5
- call GivePokemon
- jr nc, .done
- xor a
- ld [wPriceTemp], a
- ld [wPriceTemp + 2], a
- ld a, $5
- ld [wPriceTemp + 1], a
- ld hl, wPriceTemp + 2
- ld de, wPlayerMoney + 2
- ld c, $3
- predef SubBCDPredef
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- SetEvent EVENT_BOUGHT_MAGIKARP
- jr .done
-.choseNo
- ld hl, MtMoonPokecenterText_49361
- jr .printText
-.alreadyBoughtMagikarp
- ld hl, MtMoonPokecenterText_4936b
-.printText
- call PrintText
-.done
+ callab Func_f218c
jp TextScriptEnd
-MtMoonPokecenterText_4935c: ; 4935c (12:535c)
- TX_FAR _MtMoonPokecenterText_4935c
- db "@"
-
-MtMoonPokecenterText_49361: ; 49361 (12:5361)
- TX_FAR _MtMoonPokecenterText_49361
- db "@"
-
-MtMoonPokecenterText_49366: ; 49366 (12:5366)
- TX_FAR _MtMoonPokecenterText_49366
- db "@"
-
-MtMoonPokecenterText_4936b: ; 4936b (12:536b)
- TX_FAR _MtMoonPokecenterText_4936b
- db "@"
-
MtMoonPokecenterText5: ; 49370 (12:5370)
TX_FAR _MtMoonPokecenterText5
db "@"
MtMoonPokecenterText6: ; 49375 (12:5375)
- db $f6
+ TX_CABLE_CLUB_RECEPTIONIST
+
+MtMoonPokecenterText7:
+ TX_ASM
+ callab Func_f0f12
+ jp TextScriptEnd
diff --git a/scripts/mtmoonpokecenter2.asm b/scripts/mtmoonpokecenter2.asm
new file mode 100755
index 00000000..fa42f440
--- /dev/null
+++ b/scripts/mtmoonpokecenter2.asm
@@ -0,0 +1,66 @@
+Func_f218c:
+ CheckEvent EVENT_BOUGHT_MAGIKARP, 1
+ jp c, .alreadyBoughtMagikarp
+ ld hl, MtMoonPokecenterText_4935c
+ call PrintText
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jp nz, .choseNo
+ ; $000500
+ xor a
+ ld [hMoney], a
+ ld [hMoney + 2], a
+ ld a, $5
+ ld [hMoney + 1], a
+ call HasEnoughMoney
+ jr nc, .enoughMoney
+ ld hl, MtMoonPokecenterText_49366
+ jr .printText
+.enoughMoney
+ lb bc, MAGIKARP, 5
+ call GivePokemon
+ jr nc, .done
+ ; $000500
+ xor a
+ ld [wPriceTemp], a
+ ld [wPriceTemp + 2], a
+ ld a, $5
+ ld [wPriceTemp + 1], a
+ ld hl, wPriceTemp + 2
+ ld de, wPlayerMoney + 2
+ ld c, $3
+ predef SubBCDPredef
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ SetEvent EVENT_BOUGHT_MAGIKARP
+ jr .done
+.choseNo
+ ld hl, MtMoonPokecenterText_49361
+ jr .printText
+.alreadyBoughtMagikarp
+ ld hl, MtMoonPokecenterText_4936b
+.printText
+ call PrintText
+.done
+ ret
+
+MtMoonPokecenterText_4935c: ; 4935c (12:535c)
+ TX_FAR _MtMoonPokecenterText_4935c
+ db "@"
+
+MtMoonPokecenterText_49361: ; 49361 (12:5361)
+ TX_FAR _MtMoonPokecenterText_49361
+ db "@"
+
+MtMoonPokecenterText_49366: ; 49366 (12:5366)
+ TX_FAR _MtMoonPokecenterText_49366
+ db "@"
+
+MtMoonPokecenterText_4936b: ; 4936b (12:536b)
+ TX_FAR _MtMoonPokecenterText_4936b
+ db "@"
diff --git a/scripts/museum1f.asm b/scripts/museum1f.asm
index 75dc1ce8..75c0d74e 100755
--- a/scripts/museum1f.asm
+++ b/scripts/museum1f.asm
@@ -5,7 +5,8 @@ Museum1FScript: ; 5c0f7 (17:40f7)
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, Museum1FScriptPointers
ld a, [W_MUSEUM1FCURSCRIPT]
- jp CallFunctionInTable
+ call JumpTable
+ ret
Museum1FScriptPointers: ; 5c109 (17:4109)
dw Museum1FScript0
@@ -40,207 +41,25 @@ Museum1FTextPointers: ; 5c12b (17:412b)
Museum1FText1: ; 5c135 (17:4135)
TX_ASM
- ld a, [wYCoord]
- cp $4
- jr nz, .asm_8774b
- ld a, [wXCoord]
- cp $d
- jp z, Museum1FScript_5c1f9
- jr .asm_b8709
-.asm_8774b
- cp $3
- jr nz, .asm_d49e7
- ld a, [wXCoord]
- cp $c
- jp z, Museum1FScript_5c1f9
-.asm_d49e7
- CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
- jr nz, .asm_31a16
- ld hl, Museum1FText_5c23d
- call PrintText
- jp Museum1FScriptEnd
-.asm_b8709
- CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
- jr z, .asm_3ded4
-.asm_31a16
- ld hl, Museum1FText_5c242
- call PrintText
- jp Museum1FScriptEnd
-.asm_3ded4
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- xor a
- ld [hJoyHeld], a
- ld hl, Museum1FText_5c21f
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr nz, .asm_de133
- xor a
- ld [hMoney], a
- ld [hMoney + 1], a
- ld a, $50
- ld [hMoney + 2], a
- call HasEnoughMoney
- jr nc, .asm_0f3e3
- ld hl, Museum1FText_5c229
- call PrintText
- jp .asm_de133
-.asm_0f3e3
- ld hl, Museum1FText_5c224
- call PrintText
- SetEvent EVENT_BOUGHT_MUSEUM_TICKET
- xor a
- ld [wPriceTemp], a
- ld [wPriceTemp + 1], a
- ld a, $50
- ld [wPriceTemp + 2], a
- ld hl, wPriceTemp + 2
- ld de, wPlayerMoney + 2
- ld c, $3
- predef SubBCDPredef
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- ld a, SFX_PURCHASE
- call PlaySoundWaitForCurrent
- call WaitForSoundToFinish
- jr .asm_0b094
-.asm_de133
- ld hl, Museum1FText_5c21a
- call PrintText
- ld a, $1
- ld [wSimulatedJoypadStatesIndex], a
- ld a, D_DOWN
- ld [wSimulatedJoypadStatesEnd], a
- call StartSimulatingJoypadStates
- call UpdateSprites
- jr Museum1FScriptEnd
-.asm_0b094
- ld a, $1
- ld [W_MUSEUM1FCURSCRIPT], a
- jr Museum1FScriptEnd
-
-Museum1FScript_5c1f9: ; 5c1f9 (17:41f9)
- ld hl, Museum1FText_5c22e
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- cp $0
- jr nz, .asm_d1144
- ld hl, Museum1FText_5c233
- call PrintText
- jr Museum1FScriptEnd
-.asm_d1144
- ld hl, Museum1FText_5c238
- call PrintText
-Museum1FScriptEnd: ; 5c217 (17:4217)
+ callba Func_f1c1b
jp TextScriptEnd
-Museum1FText_5c21a: ; 5c21a (17:421a)
- TX_FAR _Museum1FText_5c21a
- db "@"
-
-Museum1FText_5c21f: ; 5c21f (17:421f)
- TX_FAR _Museum1FText_5c21f
- db "@"
-
-Museum1FText_5c224: ; 5c224 (17:4224)
- TX_FAR _Museum1FText_5c224
- db "@"
-
-Museum1FText_5c229: ; 5c229 (17:4229)
- TX_FAR _Museum1FText_5c229
- db "@"
-
-Museum1FText_5c22e: ; 5c22e (17:422e)
- TX_FAR _Museum1FText_5c22e
- db "@"
-
-Museum1FText_5c233: ; 5c233 (17:4233)
- TX_FAR _Museum1FText_5c233
- db "@"
-
-Museum1FText_5c238: ; 5c238 (17:4238)
- TX_FAR _Museum1FText_5c238
- db "@"
-
-Museum1FText_5c23d: ; 5c23d (17:423d)
- TX_FAR _Museum1FText_5c23d
- db "@"
-
-Museum1FText_5c242: ; 5c242 (17:4242)
- TX_FAR _Museum1FText_5c242
- db "@"
-
-Museum1FText2: ; 5c247 (17:4247)
+Museum1FText2: ; 5c135 (17:4135)
TX_ASM
- ld hl, Museum1FText_5c251
- call PrintText
+ callba Func_f1d2a
jp TextScriptEnd
-Museum1FText_5c251: ; 5c251 (17:4251)
- TX_FAR _Museum1FText_5c251
- db "@"
-
-Museum1FText3: ; 5c256 (17:4256)
+Museum1FText3: ; 5c135 (17:4135)
TX_ASM
- CheckEvent EVENT_GOT_OLD_AMBER
- jr nz, .asm_5c285
- ld hl, Museum1FText_5c28e
- call PrintText
- lb bc, OLD_AMBER, 1
- call GiveItem
- jr nc, .BagFull
- SetEvent EVENT_GOT_OLD_AMBER
- ld a, HS_OLD_AMBER
- ld [wMissableObjectIndex], a
- predef HideObject
- ld hl, ReceivedOldAmberText
- jr .asm_5c288
-.BagFull
- ld hl, Museum1FText_5c29e
- jr .asm_5c288
-.asm_5c285
- ld hl, Museum1FText_5c299
-.asm_5c288
- call PrintText
+ callba Func_f1d36
jp TextScriptEnd
-Museum1FText_5c28e: ; 5c28e (17:428e)
- TX_FAR _Museum1FText_5c28e
- db "@"
-
-ReceivedOldAmberText: ; 5c293 (17:4293)
- TX_FAR _ReceivedOldAmberText
- db $0B, "@"
-
-Museum1FText_5c299: ; 5c299 (17:4299)
- TX_FAR _Museum1FText_5c299
- db "@"
-
-Museum1FText_5c29e: ; 5c29e (17:429e)
- TX_FAR _Museum1FText_5c29e
- db "@"
-
-Museum1FText4: ; 5c2a3 (17:42a3)
+Museum1FText4: ; 5c135 (17:4135)
TX_ASM
- ld hl, Museum1FText_5c2ad
- call PrintText
+ callba Func_f1d80
jp TextScriptEnd
-Museum1FText_5c2ad: ; 5c2ad (17:42ad)
- TX_FAR _Museum1FText_5c2ad
- db "@"
-
-Museum1FText5: ; 5c2b2 (17:42b2)
+Museum1FText5: ; 5c135 (17:4135)
TX_ASM
- ld hl, Museum1FText_5c2bc
- call PrintText
+ callba Func_f1d8c
jp TextScriptEnd
-
-Museum1FText_5c2bc: ; 5c2bc (17:42bc)
- TX_FAR _Museum1FText_5c2bc
- db "@"
diff --git a/scripts/museum1f2.asm b/scripts/museum1f2.asm
new file mode 100755
index 00000000..f6dfa509
--- /dev/null
+++ b/scripts/museum1f2.asm
@@ -0,0 +1,211 @@
+Func_f1c1b:
+ ld a, [wYCoord]
+ cp $4
+ jr nz, .asm_f1c2c
+ ld a, [wXCoord]
+ cp $d
+ jp z, .asm_f1cde
+ jr .asm_f1c48
+
+.asm_f1c2c
+ cp $3
+ jr nz, .asm_f1c38
+ ld a, [wXCoord]
+ cp a, $c
+ jp z, .asm_f1cde
+.asm_f1c38
+ CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
+ jr nz, .asm_f1c4f
+ ld hl, Museum1FText_f1d20
+ call PrintText
+ jp .asm_f1cfc
+
+.asm_f1c48
+ CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
+ jr z, .asm_f1c58
+.asm_f1c4f
+ ld hl, Museum1FText_f1d25
+ call PrintText
+ jp .asm_f1cfc
+
+.asm_f1c58
+ ld a, $13
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ xor a
+ ld [hJoyHeld], a
+ ld hl, Museum1FText_f1d02
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_f1cbf
+ xor a
+ ld [hMoney], a
+ ld [hMoney + 1], a
+ ld a, $50
+ ld [hMoney + 2], a
+ call HasEnoughMoney
+ jr nc, .asm_f1c89
+ ld hl, Museum1FText_f1d0c
+ call PrintText
+ jp .asm_f1cbf
+
+.asm_f1c89
+ ld hl, Museum1FText_f1d07
+ call PrintText
+ SetEvent EVENT_BOUGHT_MUSEUM_TICKET
+ xor a
+ ld [wPriceTemp], a
+ ld [wPriceTemp + 1], a
+ ld a, $50
+ ld [wPriceTemp + 2], a
+ ld hl, wPriceTemp + 2
+ ld de, wPlayerMoney + 2
+ ld c, 3
+ predef SubBCDPredef
+ ld a, $13
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ ld a, SFX_PURCHASE
+ call PlaySoundWaitForCurrent
+ call WaitForSoundToFinish
+ jr .asm_f1cd7
+
+.asm_f1cbf
+ ld hl, Museum1FText_f1cfd
+ call PrintText
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_DOWN
+ ld [wSimulatedJoypadStatesEnd], a
+ call StartSimulatingJoypadStates
+ call UpdateSprites
+ jr .asm_f1cfc
+
+.asm_f1cd7
+ ld a, $1
+ ld [W_MUSEUM1FCURSCRIPT], a
+ jr .asm_f1cfc
+
+.asm_f1cde
+ ld hl, Museum1FText_f1d11
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ cp 0
+ jr nz, .asm_f1cf6
+ ld hl, Museum1FText_f1d16
+ call PrintText
+ jr .asm_f1cfc
+
+.asm_f1cf6
+ ld hl, Museum1FText_f1d1b
+ call PrintText
+.asm_f1cfc
+ ret
+
+Museum1FText_f1cfd:
+ TX_FAR _Museum1FText_5c21a
+ db "@"
+
+Museum1FText_f1d02:
+ TX_FAR _Museum1FText_5c21f
+ db "@"
+
+Museum1FText_f1d07:
+ TX_FAR _Museum1FText_5c224
+ db "@"
+
+Museum1FText_f1d0c:
+ TX_FAR _Museum1FText_5c229
+ db "@"
+
+Museum1FText_f1d11:
+ TX_FAR _Museum1FText_5c22e
+ db "@"
+
+Museum1FText_f1d16:
+ TX_FAR _Museum1FText_5c233
+ db "@"
+
+Museum1FText_f1d1b:
+ TX_FAR _Museum1FText_5c238
+ db "@"
+
+Museum1FText_f1d20:
+ TX_FAR _Museum1FText_5c23d
+ db "@"
+
+Museum1FText_f1d25:
+ TX_FAR _Museum1FText_5c242
+ db "@"
+
+Func_f1d2a:
+ ld hl, Museum1FText_f1d31
+ call PrintText
+ ret
+
+Museum1FText_f1d31:
+ TX_FAR _Museum1FText_5c251
+ db "@"
+
+Func_f1d36:
+ CheckEvent EVENT_GOT_OLD_AMBER
+ jr nz, .asm_f1d64
+ ld hl, Museum1FText_f1d6b
+ call PrintText
+ lb bc, OLD_AMBER, 1
+ call GiveItem
+ jr nc, .asm_f1d5f
+ SetEvent EVENT_GOT_OLD_AMBER
+ ld a, HS_OLD_AMBER
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ld hl, Museum1FText_f1d70
+ jr .asm_f1d67
+
+.asm_f1d5f
+ ld hl, Museum1FText_f1d7b
+ jr .asm_f1d67
+
+.asm_f1d64
+ ld hl, Museum1FText_f1d76
+.asm_f1d67
+ call PrintText
+ ret
+
+Museum1FText_f1d6b:
+ TX_FAR _Museum1FText_5c28e
+ db "@"
+
+Museum1FText_f1d70:
+ TX_FAR _ReceivedOldAmberText
+ TX_SFX_ITEM
+ db "@"
+
+Museum1FText_f1d76:
+ TX_FAR _Museum1FText_5c299
+ db "@"
+
+Museum1FText_f1d7b:
+ TX_FAR _Museum1FText_5c29e
+ db "@"
+
+Func_f1d80:
+ ld hl, Museum1FText_f1d87
+ call PrintText
+ ret
+
+Museum1FText_f1d87:
+ TX_FAR _Museum1FText_5c2ad
+ db "@"
+
+Func_f1d8c:
+ ld hl, Museum1FText_f1d93
+ call PrintText
+ ret
+
+Museum1FText_f1d93:
+ TX_FAR _Museum1FText_5c2bc
+ db "@"
diff --git a/scripts/museum2f.asm b/scripts/museum2f.asm
index 0f8a63ec..56d113ae 100755
--- a/scripts/museum2f.asm
+++ b/scripts/museum2f.asm
@@ -1,5 +1,6 @@
Museum2FScript: ; 5c317 (17:4317)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Museum2FTextPointers: ; 5c31a (17:431a)
dw Museum2FText1
@@ -27,9 +28,40 @@ Museum2FText4: ; 5c337 (17:4337)
db "@"
Museum2FText5: ; 5c33c (17:433c)
+ TX_ASM
+ ld a, [wd472]
+ bit 7, a
+ jr nz, .asm_5c1f6
+ ld hl, Museum2FText_5c20e
+ call PrintText
+ jr .asm_5c20b
+
+.asm_5c1f6
+ ld a, [wPikachuHappiness]
+ cp 101
+ jr c, .asm_5c205
+ ld hl, Museum2FText_5c218
+ call PrintText
+ jr .asm_5c20b
+
+.asm_5c205
+ ld hl, Museum2FText_5c213
+ call PrintText
+.asm_5c20b
+ jp TextScriptEnd
+
+Museum2FText_5c20e:
TX_FAR _Museum2FText5
db "@"
+Museum2FText_5c213:
+ TX_FAR _Museum2FPikachuText1
+ db "@"
+
+Museum2FText_5c218:
+ TX_FAR _Museum2FPikachuText2
+ db "@"
+
Museum2FText6: ; 5c341 (17:4341)
TX_FAR _Museum2FText6
db "@"
diff --git a/scripts/oakslab.asm b/scripts/oakslab.asm
index aff39cbc..43464d77 100755
--- a/scripts/oakslab.asm
+++ b/scripts/oakslab.asm
@@ -7,7 +7,8 @@ OaksLabScript: ; 1cb0e (7:4b0e)
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, OaksLabScriptPointers
ld a, [W_OAKSLABCURSCRIPT]
- jp CallFunctionInTable
+ call JumpTable
+ ret
OaksLabScriptPointers: ; 1cb28 (7:4b28)
dw OaksLabScript0
@@ -29,6 +30,10 @@ OaksLabScriptPointers: ; 1cb28 (7:4b28)
dw OaksLabScript16
dw OaksLabScript17
dw OaksLabScript18
+ dw OaksLabScript19
+ dw OaksLabScript20
+ dw OaksLabScript21
+ dw OaksLabScript22
OaksLabScript0: ; 1cb4e (7:4b4e)
CheckEvent EVENT_OAK_APPEARED_IN_PALLET
@@ -47,7 +52,7 @@ OaksLabScript0: ; 1cb4e (7:4b4e)
ret
OaksLabScript1: ; 1cb6e (7:4b6e)
- ld a, $8
+ ld a, $6
ld [H_SPRITEINDEX], a
ld de, OakEntryMovement
call MoveSprite
@@ -90,7 +95,7 @@ OaksLabScript3: ; 1cba2 (7:4ba2)
xor a
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, $5
+ ld a, $3
ld [H_SPRITEINDEX], a
xor a
ld [hSpriteFacingDirection], a
@@ -104,7 +109,7 @@ PlayerEntryMovementRLE: ; 1cbcf (7:4bcf)
db D_UP,$8
db $ff
-OaksLabScript4: ; 1cbd2 (7:4bd2)
+OaksLabScript4: ; 1cbd2 (7:445f)
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
@@ -115,7 +120,6 @@ OaksLabScript4: ; 1cbd2 (7:4bd2)
ld a, SPRITE_FACING_UP
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- call UpdateSprites
ld hl, wFlags_D733
res 1, [hl]
call PlayDefaultMusic
@@ -125,24 +129,29 @@ OaksLabScript4: ; 1cbd2 (7:4bd2)
ret
OaksLabScript5: ; 1cbfd (7:4bfd)
+ ld hl, wd74b
+ set 1, [hl]
ld a, $fc
ld [wJoyIgnore], a
- ld a, $11
+ ld a, $d
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call Delay3
- ld a, $12
+ ld a, $e
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call Delay3
- ld a, $13
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
+ ld a, $f
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call Delay3
- ld a, $14
+ ld a, $10
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON
xor a
ld [wJoyIgnore], a
@@ -154,7 +163,7 @@ OaksLabScript6: ; 1cc36 (7:4c36)
ld a, [wYCoord]
cp $6
ret nz
- ld a, $5
+ ld a, $3
ld [H_SPRITEINDEX], a
xor a ; SPRITE_FACING_DOWN
ld [hSpriteFacingDirection], a
@@ -165,7 +174,7 @@ OaksLabScript6: ; 1cc36 (7:4c36)
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
call UpdateSprites
- ld a, $c
+ ld a, $a
ld [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $1
@@ -191,176 +200,130 @@ OaksLabScript7: ; 1cc72 (7:4c72)
ret
OaksLabScript8: ; 1cc80 (7:4c80)
- ld a, [W_PLAYERSTARTER]
- cp STARTER1
- jr z, .Charmander
- cp STARTER2
- jr z, .Squirtle
- jr .Bulbasaur
-.Charmander
- ld de, .MiddleBallMovement1
- ld a, [wYCoord]
- cp $4 ; is the player standing below the table?
- jr z, .asm_1ccf3
- ld de, .MiddleBallMovement2
- jr .asm_1ccf3
-
-.MiddleBallMovement1
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_UP
- db $FF
-
-.MiddleBallMovement2
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db $FF
-
-.Squirtle
- ld de, .RightBallMovement1
- ld a, [wYCoord]
- cp $4 ; is the player standing below the table?
- jr z, .asm_1ccf3
- ld de, .RightBallMovement2
- jr .asm_1ccf3
-
-.RightBallMovement1
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_UP
- db $FF
-
-.RightBallMovement2
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db $FF
-
-.Bulbasaur
- ld de, .LeftBallMovement1
- ld a, [wXCoord]
- cp $9 ; is the player standing to the right of the table?
- jr nz, .asm_1ccf3
- push hl
ld a, $1
- ld [H_SPRITEINDEX], a
- ld a, $4
- ld [H_SPRITEDATAOFFSET], a
- call GetPointerWithinSpriteStateData1
- push hl
- ld [hl], $4c
- inc hl
- inc hl
- ld [hl], $0
- pop hl
- inc h
- ld [hl], $8
- inc hl
- ld [hl], $9
- ld de, .LeftBallMovement2 ; the rival is not currently onscreen, so account for that
- pop hl
- jr .asm_1ccf3
-
-.LeftBallMovement1
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT ; not yet terminated!
-.LeftBallMovement2
- db NPC_MOVEMENT_RIGHT
- db $FF
-
-.asm_1ccf3
- ld a, $1
- ld [H_SPRITEINDEX], a
+ ld [hSpriteIndexOrTextID], a
+ ld de, .SonyPushesPlayerAwayFromEeveeBall
call MoveSprite
-
ld a, $9
ld [W_OAKSLABCURSCRIPT], a
ret
+.SonyPushesPlayerAwayFromEeveeBall
+ db $00
+ db $07
+ db $07
+ db $07
+ db $FF
+
OaksLabScript9: ; 1cd00 (7:4d00)
ld a, [wd730]
bit 0, a
- ret nz
- ld a, $fc
- ld [wJoyIgnore], a
+ jr nz, .asm_1c564
+ ld a, HS_STARTER_BALL_1
+ ld [wMissableObjectIndex], a
+ predef HideObject
ld a, $1
ld [H_SPRITEINDEX], a
ld a, SPRITE_FACING_UP
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, $d
- ld [hSpriteIndexOrTextID], a
- call DisplayTextID
- ld a, [wRivalStarterBallSpriteIndex]
- cp $2
- jr nz, .asm_1cd28
- ld a, HS_STARTER_BALL_1
- jr .asm_1cd32
-.asm_1cd28
- cp $3
- jr nz, .asm_1cd30
- ld a, HS_STARTER_BALL_2
- jr .asm_1cd32
-.asm_1cd30
- ld a, HS_STARTER_BALL_3
-.asm_1cd32
- ld [wMissableObjectIndex], a
- predef HideObject
- call Delay3
- ld a, [wRivalStarterTemp]
+ ld a, 1
ld [W_RIVALSTARTER], a
- ld [wcf91], a
+ ld a, EEVEE
ld [wd11e], a
call GetMonName
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, $11
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+
+ ld a, $a
+ ld [W_OAKSLABCURSCRIPT], a
+ ret
+
+.asm_1c564
+ ld a, [wYCoord]
+ cp $4
+ ret nz
+ ld a, [wNPCNumScriptedSteps]
+ cp 1
+ ret nz
+ ld a, PLAYER_DIR_LEFT
+ ld [wPlayerMovingDirection], a
+ ld a, $2
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_RIGHT
+ ld [wSimulatedJoypadStatesEnd], a
+ ld [wSimulatedJoypadStatesEnd + 1], a
+ call StartSimulatingJoypadStates
+ ret
+
+OaksLabScript10: ; 1cd6d (7:4d6d)
+ ld a, [wYCoord]
+ cp $4
+ jr z, .asm_1c599
ld a, $1
- ld [H_SPRITEINDEX], a
- ld a, SPRITE_FACING_UP
- ld [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
- ld a, $e
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_LEFT
+ ld [wSimulatedJoypadStatesEnd], a
+ jr .asm_1c5a6
+
+.asm_1c599
+ ld hl, wSimulatedJoypadStatesEnd
+ ld de, OaksLabRLE_PlayerWalksToOak
+ call DecodeRLEList
+ dec a
+ ld [wSimulatedJoypadStatesIndex], a
+.asm_1c5a6
+ call StartSimulatingJoypadStates
+ ld a, $b
+ ld [W_OAKSLABCURSCRIPT], a
+ ret
+
+OaksLabRLE_PlayerWalksToOak:
+ db D_UP, 2
+ db D_LEFT, 3
+ db D_DOWN, 1
+ db D_LEFT, 1
+ db $FF
+
+OaksLabScript11:
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
+ ret nz
+ ld a, $12
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- SetEvent EVENT_GOT_STARTER
xor a
ld [wJoyIgnore], a
- ld a, $a
+ ld a, $c
ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript10: ; 1cd6d (7:4d6d)
+OaksLabScript12:
ld a, [wYCoord]
cp $6
ret nz
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
ld a, $1
- ld [H_SPRITEINDEX], a
- xor a ; SPRITE_FACING_DOWN
+ ld [hSpriteIndexOrTextID], a
+ xor a
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, PLAYER_DIR_UP
- ld [wPlayerMovingDirection], a
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
- ld a, $f
+ ld a, $b
ld [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $1
ld [hNPCPlayerRelativePosPerspective], a
ld a, $1
swap a
- ld [hNPCSpriteOffset], a
+ ld [hNPCPlayerYDistance], a
predef CalcPositionOfPlayerRelativeToNPC
ld a, [hNPCPlayerYDistance]
dec a
@@ -368,40 +331,25 @@ OaksLabScript10: ; 1cd6d (7:4d6d)
predef FindPathToPlayer
ld de, wNPCMovementDirections2
ld a, $1
- ld [H_SPRITEINDEX], a
+ ld [hSpriteIndexOrTextID], a
call MoveSprite
-
- ld a, $b
+ ld a, $d
ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript11: ; 1cdb9 (7:4db9)
+OaksLabScript13:
ld a, [wd730]
bit 0, a
ret nz
-
- ; define which team rival uses, and fight it
+ ld a, $1
+ ld [wSpriteIndex], a
+ call GetSpritePosition1
ld a, OPP_SONY1
ld [wCurOpponent], a
- ld a, [W_RIVALSTARTER]
- cp STARTER2
- jr nz, .NotSquirtle
ld a, $1
- jr .done
-.NotSquirtle
- cp STARTER3
- jr nz, .Charmander
- ld a, $2
- jr .done
-.Charmander
- ld a, $3
-.done
ld [wTrainerNo], a
- ld a, $1
- ld [wSpriteIndex], a
- call GetSpritePosition1
- ld hl, OaksLabText_1d3be
- ld de, OaksLabText_1d3c3
+ ld hl, OaksLabRivalDefeatedText
+ ld de, OaksLabRivalBeatYouText
call SaveEndBattleTextPointers
ld hl, wd72d
set 6, [hl]
@@ -410,12 +358,28 @@ OaksLabScript11: ; 1cdb9 (7:4db9)
ld [wJoyIgnore], a
ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
- ld a, $c
+ ld a, $e
ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript12: ; 1ce03 (7:4e03)
- ld a, $f0
+OaksLabScript14:
+ ld a, $ff
+ ld [wJoyIgnore], a
+
+ ; If you beat your rival here, his Eevee will evolve into
+ ; Jolteon if you beat him on Route 22, or Flareon if you
+ ; skip or lose that battle.
+ ; Otherwise, it will evolve into Vaporeon.
+ ld a, [wBattleResult]
+ and a
+ ld b, $3
+ jr nz, .asm_1c660
+ ld b, $2
+.asm_1c660
+ ld a, b
+ ld [W_RIVALSTARTER], a
+
+ ld a, $ff ^ (A_BUTTON | B_BUTTON)
ld [wJoyIgnore], a
ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
@@ -423,101 +387,124 @@ OaksLabScript12: ; 1ce03 (7:4e03)
ld a, $1
ld [wSpriteIndex], a
call SetSpritePosition1
- ld a, $1
- ld [H_SPRITEINDEX], a
- xor a ; SPRITE_FACING_DOWN
- ld [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ xor a
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
predef HealParty
- SetEvent EVENT_BATTLED_RIVAL_IN_OAKS_LAB
-
- ld a, $d
+ ld hl, wd74b
+ set 3, [hl]
+ ld a, $f
ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript13: ; 1ce32 (7:4e32)
+OaksLabScript15:
ld c, 20
call DelayFrames
- ld a, $10
+ ld a, $c
ld [hSpriteIndexOrTextID], a
call DisplayTextID
callba Music_RivalAlternateStart
ld a, $1
- ld [H_SPRITEINDEX], a
- ld de, .RivalExitMovement
+ ld [hSpriteIndexOrTextID], a
+ ld de, .OaksLabMovement_RivalWalksOut1
call MoveSprite
ld a, [wXCoord]
cp $4
- ; move left or right depending on where the player is standing
- jr nz, .moveLeft
+ jr nz, .asm_1c6bb
ld a, NPC_MOVEMENT_RIGHT
- jr .next
-.moveLeft
+ jr .asm_1c6bd
+
+.asm_1c6bb
ld a, NPC_MOVEMENT_LEFT
-.next
+.asm_1c6bd
ld [wNPCMovementDirections], a
-
- ld a, $e
+ ld a, $10
ld [W_OAKSLABCURSCRIPT], a
ret
-.RivalExitMovement
- db $E0 ; change sprite facing direction
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db $FF
+.OaksLabMovement_RivalWalksOut1
+ db $e0
+ db $00
+ db $04
+ db $04
+ db $04
+ db $04
+ db $04
+ db $ff
-OaksLabScript14: ; 1ce6d (7:4e6d)
+OaksLabScript16:
ld a, [wd730]
bit 0, a
- jr nz, .asm_1ce8c
+ jr nz, .asm_1c6ed
+ ld a, $ff ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
ld a, HS_OAKS_LAB_RIVAL
ld [wMissableObjectIndex], a
predef HideObject
- xor a
- ld [wJoyIgnore], a
- call PlayDefaultMusic ; reset to map music
- ld a, $12
+ call PlayDefaultMusic
+ ld a, $11
ld [W_OAKSLABCURSCRIPT], a
- jr .done
-; make the player keep facing the rival as he walks away
-.asm_1ce8c
+ ret
+
+.asm_1c6ed
ld a, [wNPCNumScriptedSteps]
- cp $5
- jr nz, .asm_1cea8
+ cp 5
+ jr nz, .asm_1c703
ld a, [wXCoord]
- cp $4
- jr nz, .asm_1cea1
+ cp 4
+ jr nz, .asm_1c6ff
ld a, SPRITE_FACING_RIGHT
- ld [wSpriteStateData1 + 9], a
- jr .done
-.asm_1cea1
+ jr .asm_1c707
+
+.asm_1c6ff
ld a, SPRITE_FACING_LEFT
- ld [wSpriteStateData1 + 9], a
- jr .done
-.asm_1cea8
- cp $4
+ jr .asm_1c707
+
+.asm_1c703
+ cp 4
ret nz
- xor a ; ld a, SPRITE_FACING_DOWN
+ xor a
+.asm_1c707
+ ld [wSpriteStateData1 + 9], a
+ ret
+
+OaksLabScript17:
+; Pikachu comes out
+ ld a, SPRITE_FACING_UP
ld [wSpriteStateData1 + 9], a
-.done
+ ld a, $2
+ ld [wd431], a
+ callba Func_fc4fa
+ call Func_1525
+ ld a, $1a
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ ld a, $12
+ ld [W_OAKSLABCURSCRIPT], a
+ ret
+
+OaksLabScript18:
+ ld a, $1b
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wJoyIgnore], a
+ ld a, $16
+ ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript15: ; 1ceb0 (7:4eb0)
+OaksLabScript19:
xor a
ld [hJoyHeld], a
call EnableAutoTextBoxDrawing
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStart
- ld a, $15
+ ld a, $13
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- call OaksLabScript_1d02b
+ callab Func_f1be0
+ call OaksLabScript_1c8b9
ld a, HS_OAKS_LAB_RIVAL
ld [wMissableObjectIndex], a
predef ShowObject
@@ -530,50 +517,50 @@ OaksLabScript15: ; 1ceb0 (7:4eb0)
call FillMemory
ld [hl], $ff
ld a, $1
- ld [H_SPRITEINDEX], a
+ ld [hSpriteIndexOrTextID], a
ld de, wNPCMovementDirections2
call MoveSprite
-
- ld a, $10
+ ld a, $14
ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript_1cefd: ; 1cefd (7:4efd)
+OaksLabScript_1c78e:
ld a, $1
- ld [H_SPRITEINDEX], a
+ ld [hSpriteIndexOrTextID], a
ld a, SPRITE_FACING_UP
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, $8
- ld [H_SPRITEINDEX], a
- xor a ; SPRITE_FACING_DOWN
+ ld a, $6
+ ld [hSpriteIndexOrTextID], a
+ xor a
ld [hSpriteFacingDirection], a
- jp SetSpriteFacingDirectionAndDelay
+ call SetSpriteFacingDirectionAndDelay
+ ret
-OaksLabScript16: ; 1cf12 (7:4f12)
+OaksLabScript20:
ld a, [wd730]
bit 0, a
ret nz
call EnableAutoTextBoxDrawing
call PlayDefaultMusic
- ld a, $fc
+ ld a, $ff ^ (A_BUTTON | B_BUTTON)
ld [wJoyIgnore], a
- call OaksLabScript_1cefd
- ld a, $16
+ call OaksLabScript_1c78e
+ ld a, $14
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call DelayFrame
- call OaksLabScript_1cefd
- ld a, $17
+ call OaksLabScript_1c78e
+ ld a, $15
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call DelayFrame
- call OaksLabScript_1cefd
- ld a, $18
+ call OaksLabScript_1c78e
+ ld a, $16
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call DelayFrame
- ld a, $19
+ ld a, $17
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call Delay3
@@ -583,20 +570,22 @@ OaksLabScript16: ; 1cf12 (7:4f12)
ld a, HS_POKEDEX_2
ld [wMissableObjectIndex], a
predef HideObject
- call OaksLabScript_1cefd
- ld a, $1a
+ call OaksLabScript_1c78e
+ ld a, $18
ld [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $1
- ld [H_SPRITEINDEX], a
+ ld [hSpriteIndexOrTextID], a
ld a, SPRITE_FACING_RIGHT
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
call Delay3
- ld a, $1b
+ ld a, $19
ld [hSpriteIndexOrTextID], a
call DisplayTextID
SetEvent EVENT_GOT_POKEDEX
+ ld a, $1
+ ld [W_VIRIDIANCITYCURSCRIPT], a
SetEvent EVENT_OAK_GOT_PARCEL
ld a, HS_LYING_OLD_MAN
ld [wMissableObjectIndex], a
@@ -608,23 +597,20 @@ OaksLabScript16: ; 1cf12 (7:4f12)
ld b, 0
ld c, a
ld hl, wNPCMovementDirections2
- xor a ; NPC_MOVEMENT_DOWN
+ xor a
call FillMemory
ld [hl], $ff
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStart
ld a, $1
- ld [H_SPRITEINDEX], a
- ld de, wNPCMovementDirections2
+ ld [hSpriteIndexOrTextID], a
+ ld de, wNPCMovementDirections2
call MoveSprite
-
- ld a, $11
+ ld a, $15
ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript17: ; 1cfd4 (7:4fd4)
+OaksLabScript21:
ld a, [wd730]
bit 0, a
ret nz
@@ -638,71 +624,73 @@ OaksLabScript17: ; 1cfd4 (7:4fd4)
ld a, HS_ROUTE_22_RIVAL_1
ld [wMissableObjectIndex], a
predef ShowObject
- ld a, $5
- ld [W_PALLETTOWNCURSCRIPT], a
xor a
ld [wJoyIgnore], a
-
- ld a, $12
+ ld a, $16
ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript18: ; 1d009 (7:5009)
+OaksLabScript22:
ret
-OaksLabScript_RemoveParcel: ; 1d00a (7:500a)
+OaksLabScript_1c897:
ld hl, wBagItems
- ld bc, $0000
-.loop
+ ld bc, 0
+.asm_1c89d
ld a, [hli]
cp $ff
ret z
cp OAKS_PARCEL
- jr z, .foundParcel
+ jr z, .asm_1c8a9
inc hl
inc c
- jr .loop
-.foundParcel
+ jr .asm_1c89d
+
+.asm_1c8a9
ld hl, wNumBagItems
ld a, c
ld [wWhichPokemon], a
- ld a, $1
+ ld a, 1
ld [wItemQuantity], a
- jp RemoveItemFromInventory
+ call RemoveItemFromInventory
+ ret
-OaksLabScript_1d02b: ; 1d02b (7:502b)
+OaksLabScript_1c8b9:
ld a, $7c
ld [$ffeb], a
ld a, $8
ld [$ffee], a
ld a, [wYCoord]
- cp $3
- jr nz, .asm_1d045
+ cp 3
+ jr nz, .asm_1c8d3
ld a, $4
ld [wNPCMovementDirections2Index], a
ld a, $30
ld b, $b
- jr .asm_1d068
-.asm_1d045
+ jr .asm_1c8f6
+
+.asm_1c8d3
cp $1
- jr nz, .asm_1d054
+ jr nz, .asm_1c8e2
ld a, $2
ld [wNPCMovementDirections2Index], a
ld a, $30
ld b, $9
- jr .asm_1d068
-.asm_1d054
+ jr .asm_1c8f6
+
+.asm_1c8e2
ld a, $3
ld [wNPCMovementDirections2Index], a
ld b, $a
ld a, [wXCoord]
cp $4
- jr nz, .asm_1d066
+ jr nz, .asm_1c8f4
ld a, $40
- jr .asm_1d068
-.asm_1d066
+ jr .asm_1c8f6
+
+.asm_1c8f4
ld a, $20
-.asm_1d068
+.asm_1c8f6
ld [$ffec], a
ld a, b
ld [$ffed], a
@@ -711,12 +699,12 @@ OaksLabScript_1d02b: ; 1d02b (7:502b)
call SetSpritePosition1
ret
-OaksLabScript_1d076: ; 1d076 (7:5076)
- ld hl, OaksLabTextPointers + $36 ; starts at OaksLabText28
+OaksLabScript_1d076:
+ ld hl, OaksLabTextPointers2
ld a, l
ld [wMapTextPtr], a
ld a, h
- ld [wMapTextPtr+1], a
+ ld [wMapTextPtr + 1], a
ret
OaksLabTextPointers: ; 1d082 (7:5082)
@@ -747,492 +735,428 @@ OaksLabTextPointers: ; 1d082 (7:5082)
dw OaksLabText25
dw OaksLabText26
dw OaksLabText27
- dw OaksLabText28
- dw OaksLabText29
- dw OaksLabText30
- dw OaksLabText31
- dw OaksLabText32
- dw OaksLabText33
- dw OaksLabText34
- dw OaksLabText35
- dw OaksLabText36
- dw OaksLabText37
- dw OaksLabText38
-
-OaksLabText28: ; 1d0ce (7:50ce)
-OaksLabText1: ; 1d0ce (7:50ce)
+
+OaksLabTextPointers2:
+ dw OaksLabText1
+ dw OaksLabText2
+ dw OaksLabText3
+ dw OaksLabText4
+ dw OaksLabText5
+ dw OaksLabText6
+ dw OaksLabText7
+ dw OaksLabText8
+ dw OaksLabText9
+
+OaksLabText1:
TX_ASM
CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB_2
- jr nz, .asm_1d0de
- ld hl, OaksLabGaryText1
+ jr nz, .asm_1c968
+ ld hl, OaksLabText_1c97d
call PrintText
- jr .asm_1d0f0
-.asm_1d0de
- bit 2, a
- jr nz, .asm_1d0ea
- ld hl, OaksLabText40
+ jr .asm_1c97a
+
+.asm_1c968
+ CheckEventReuseA EVENT_GOT_STARTER
+ jr nz, .asm_1c974
+ ld hl, OaksLabText_1c982
call PrintText
- jr .asm_1d0f0
-.asm_1d0ea
- ld hl, OaksLabText41
+ jr .asm_1c97a
+
+.asm_1c974
+ ld hl, OaksLabText_1c987
call PrintText
-.asm_1d0f0
+.asm_1c97a
jp TextScriptEnd
-OaksLabGaryText1: ; 1d0f3 (7:50f3)
+OaksLabText_1c97d:
TX_FAR _OaksLabGaryText1
db "@"
-OaksLabText40: ; 1d0f8 (7:50f8)
+OaksLabText_1c982:
TX_FAR _OaksLabText40
db "@"
-OaksLabText41: ; 1d0fd (7:50fd)
+OaksLabText_1c987:
TX_FAR _OaksLabText41
db "@"
-OaksLabText29: ; 1d102 (7:5102)
-OaksLabText2: ; 1d102 (7:5102)
- TX_ASM
- ld a, STARTER2
- ld [wRivalStarterTemp], a
- ld a, $3
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER1
- ld b, $2
- jr OaksLabScript_1d133
-
-OaksLabText30: ; 1d113 (7:5113)
-OaksLabText3: ; 1d113 (7:5113)
+OaksLabText2:
TX_ASM
- ld a, STARTER3
- ld [wRivalStarterTemp], a
- ld a, $4
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER2
- ld b, $3
- jr OaksLabScript_1d133
-
-OaksLabText31: ; 1d124 (7:5124)
-OaksLabText4: ; 1d124 (7:5124)
- TX_ASM
- ld a, STARTER1
- ld [wRivalStarterTemp], a
- ld a, $2
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER3
- ld b, $4
-
-OaksLabScript_1d133: ; 1d133 (7:5133)
- ld [wcf91], a
- ld [wd11e], a
- ld a, b
- ld [wSpriteIndex], a
- CheckEvent EVENT_GOT_STARTER
- jp nz, OaksLabScript_1d22d
- CheckEventReuseA EVENT_OAK_ASKED_TO_CHOOSE_MON
- jr nz, OaksLabScript_1d157
- ld hl, OaksLabText39
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ CheckEvent EVENT_OAK_ASKED_TO_CHOOSE_MON
+ jr nz, OaksLabScript_1c9ac
+ ld a, $0
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, OaksLabText_1c9a7
call PrintText
jp TextScriptEnd
-OaksLabText39: ; 1d152 (7:5152)
+OaksLabText_1c9a7:
TX_FAR _OaksLabText39
db "@"
-OaksLabScript_1d157: ; 1d157 (7:5157)
- ld a, $5
- ld [H_SPRITEINDEX], a
- ld a, $9
- ld [H_SPRITEDATAOFFSET], a
- call GetPointerWithinSpriteStateData1
- ld [hl], SPRITE_FACING_DOWN
+OaksLabScript_1c9ac:
ld a, $1
- ld [H_SPRITEINDEX], a
- ld a, $9
- ld [H_SPRITEDATAOFFSET], a
- call GetPointerWithinSpriteStateData1
- ld [hl], SPRITE_FACING_RIGHT
- ld hl, wd730
- set 6, [hl]
- predef StarterDex
- ld hl, wd730
- res 6, [hl]
- call ReloadMapData
- ld c, 10
- call DelayFrames
- ld a, [wSpriteIndex]
- cp $2
- jr z, OaksLabLookAtCharmander
- cp $3
- jr z, OaksLabLookAtSquirtle
- jr OaksLabLookAtBulbasaur
-
-OaksLabLookAtCharmander: ; 1d195 (7:5195)
- ld hl, OaksLabCharmanderText
- jr OaksLabMonChoiceMenu
-OaksLabCharmanderText: ; 1d19a (7:519a)
- TX_FAR _OaksLabCharmanderText
- db "@"
-
-OaksLabLookAtSquirtle: ; 1d19f (7:519f)
- ld hl, OaksLabSquirtleText
- jr OaksLabMonChoiceMenu
-OaksLabSquirtleText: ; 1d1a4 (7:51a4)
- TX_FAR _OaksLabSquirtleText
- db "@"
-
-OaksLabLookAtBulbasaur: ; 1d1a9 (7:51a9)
- ld hl, OaksLabBulbasaurText
- jr OaksLabMonChoiceMenu
-OaksLabBulbasaurText: ; 1d1ae (7:51ae)
- TX_FAR _OaksLabBulbasaurText
- db "@"
-
-OaksLabMonChoiceMenu: ; 1d1b3 (7:51b3)
- call PrintText
- ld a, $1
- ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- call YesNoChoice ; yes/no menu
- ld a, [wCurrentMenuItem]
- and a
- jr nz, OaksLabMonChoiceEnd
- ld a, [wcf91]
- ld [W_PLAYERSTARTER], a
- ld [wd11e], a
- call GetMonName
- ld a, [wSpriteIndex]
- cp $2
- jr nz, .asm_1d1db
- ld a, HS_STARTER_BALL_1
- jr .asm_1d1e5
-.asm_1d1db
- cp $3
- jr nz, .asm_1d1e3
- ld a, HS_STARTER_BALL_2
- jr .asm_1d1e5
-.asm_1d1e3
- ld a, HS_STARTER_BALL_3
-.asm_1d1e5
- ld [wMissableObjectIndex], a
- predef HideObject
- ld a, $1
- ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld hl, OaksLabMonEnergeticText
- call PrintText
- ld hl, OaksLabReceivedMonText
- call PrintText
- xor a ; PLAYER_PARTY_DATA
- ld [wMonDataLocation], a
- ld a, 5
- ld [wCurEnemyLVL], a
- ld a, [wcf91]
- ld [wd11e], a
- call AddPartyMon
- ld hl, wd72e
- set 3, [hl]
- ld a, $fc
- ld [wJoyIgnore], a
+ ld [wEmotionBubbleSpriteIndex], a
+ xor a
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
ld a, $8
ld [W_OAKSLABCURSCRIPT], a
-OaksLabMonChoiceEnd: ; 1d21f (7:521f)
jp TextScriptEnd
-OaksLabMonEnergeticText: ; 1d222 (7:5222)
- TX_FAR _OaksLabMonEnergeticText
- db "@"
-
-OaksLabReceivedMonText: ; 1d227 (7:5227)
- TX_FAR _OaksLabReceivedMonText
- db $11, "@"
-
-OaksLabScript_1d22d: ; 1d22d (7:522d)
- ld a, $5
- ld [H_SPRITEINDEX], a
- ld a, $9
- ld [H_SPRITEDATAOFFSET], a
- call GetPointerWithinSpriteStateData1
- ld [hl], $0
- ld hl, OaksLabLastMonText
- call PrintText
- jp TextScriptEnd
-
-OaksLabLastMonText: ; 1d243 (7:5243)
- TX_FAR _OaksLabLastMonText
- db "@"
-
-OaksLabText32: ; 1d248 (7:5248)
-OaksLabText5: ; 1d248 (7:5248)
+OaksLabText3:
TX_ASM
CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
- jr nz, .asm_1d266
+ jr nz, .asm_1c9d9
ld hl, wPokedexOwned
ld b, wPokedexOwnedEnd - wPokedexOwned
call CountSetBits
ld a, [wNumSetBits]
cp 2
- jr c, .asm_1d279
- CheckEvent EVENT_GOT_POKEDEX
- jr z, .asm_1d279
-.asm_1d266
- ld hl, OaksLabText_1d31d
+ jr c, .asm_1c9ec
+.asm_1c9d9
+ ld hl, OaksLabText_1ca9f
call PrintText
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
predef DisplayDexRating
- jp .asm_1d2ed
-.asm_1d279
- ld b,POKE_BALL
+ jp .asm_1ca6f
+
+.asm_1c9ec
+ ld b, POKE_BALL
call IsItemInBag
- jr nz, .asm_1d2e7
+ jr nz, .asm_1ca69
+ ld hl, wPokedexOwned
+ ld b, wPokedexOwnedEnd - wPokedexOwned
+ call CountSetBits
+ ld a, [wNumSetBits]
+ cp 2
+ jr nc, .asm_1ca69
CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
- jr nz, .asm_1d2d0
+ jr nz, .asm_1ca52
CheckEvent EVENT_GOT_POKEDEX
- jr nz, .asm_1d2c8
+ jr nz, .asm_1ca4a
CheckEventReuseA EVENT_BATTLED_RIVAL_IN_OAKS_LAB
- jr nz, .asm_1d2a9
+ jr nz, .asm_1ca2b
ld a, [wd72e]
bit 3, a
- jr nz, .asm_1d2a1
- ld hl, OaksLabText_1d2f0
+ jr nz, .asm_1ca23
+ ld hl, OaksLabText_1ca72
call PrintText
- jr .asm_1d2ed
-.asm_1d2a1
- ld hl, OaksLabText_1d2f5
+ jr .asm_1ca6f
+
+.asm_1ca23
+ ld hl, OaksLabText_1ca77
call PrintText
- jr .asm_1d2ed
-.asm_1d2a9
+ jr .asm_1ca6f
+
+.asm_1ca2b
ld b, OAKS_PARCEL
call IsItemInBag
- jr nz, .asm_1d2b8
- ld hl, OaksLabText_1d2fa
+ jr nz, .asm_1ca3a
+ ld hl, OaksLabText_1ca7c
call PrintText
- jr .asm_1d2ed
-.asm_1d2b8
- ld hl, OaksLabDeliverParcelText
+ jr .asm_1ca6f
+
+.asm_1ca3a
+ ld hl, OaksLabText_1ca81
call PrintText
- call OaksLabScript_RemoveParcel
- ld a, $f
+ call OaksLabScript_1c897
+ ld a, $13
ld [W_OAKSLABCURSCRIPT], a
- jr .asm_1d2ed
-.asm_1d2c8
- ld hl, OaksLabAroundWorldText
+ jr .asm_1ca6f
+
+.asm_1ca4a
+ ld hl, OaksLabText_1ca8b
call PrintText
- jr .asm_1d2ed
-.asm_1d2d0
+ jr .asm_1ca6f
+
+.asm_1ca52
CheckAndSetEvent EVENT_GOT_POKEBALLS_FROM_OAK
- jr nz, .asm_1d2e7
+ jr nz, .asm_1ca69
lb bc, POKE_BALL, 5
call GiveItem
- ld hl, OaksLabGivePokeballsText
+ ld hl, OaksLabText_1ca90
call PrintText
- jr .asm_1d2ed
-.asm_1d2e7
- ld hl, OaksLabPleaseVisitText
+ jr .asm_1ca6f
+
+.asm_1ca69
+ ld hl, OaksLabText_1ca9a
call PrintText
-.asm_1d2ed
+.asm_1ca6f
jp TextScriptEnd
-
-OaksLabText_1d2f0: ; 1d2f0 (7:52f0)
- TX_FAR _OaksLabText_1d2f0
+
+OaksLabText_1ca72:
+ TX_FAR _OaksLabPikachuText
db "@"
-OaksLabText_1d2f5: ; 1d2f5 (7:52f5)
+OaksLabText_1ca77:
TX_FAR _OaksLabText_1d2f5
db "@"
-OaksLabText_1d2fa: ; 1d2fa (7:52fa)
+OaksLabText_1ca7c:
TX_FAR _OaksLabText_1d2fa
db "@"
-OaksLabDeliverParcelText: ; 1d2ff (7:52ff)
+OaksLabText_1ca81:
TX_FAR _OaksLabDeliverParcelText1
- db $11
+ TX_SFX_KEY_ITEM
TX_FAR _OaksLabDeliverParcelText2
db "@"
-OaksLabAroundWorldText: ; 1d309 (7:5309)
+OaksLabText_1ca8b:
TX_FAR _OaksLabAroundWorldText
db "@"
-OaksLabGivePokeballsText: ; 1d30e (7:530e)
+OaksLabText_1ca90:
TX_FAR _OaksLabGivePokeballsText1
- db $11
+ TX_SFX_KEY_ITEM
TX_FAR _OaksLabGivePokeballsText2
db "@"
-OaksLabPleaseVisitText: ; 1d318 (7:5318)
+OaksLabText_1ca9a:
TX_FAR _OaksLabPleaseVisitText
db "@"
-OaksLabText_1d31d: ; 1d31d (7:531d)
+OaksLabText_1ca9f:
TX_FAR _OaksLabText_1d31d
db "@"
-OaksLabText34: ; 1d322 (7:5322)
-OaksLabText33: ; 1d322 (7:5322)
-OaksLabText7: ; 1d322 (7:5322)
-OaksLabText6: ; 1d322 (7:5322)
+OaksLabText4:
+OaksLabText5:
TX_ASM
- ld hl, OaksLabText_1d32c
+ ld hl, OaksLabText_1caae
call PrintText
jp TextScriptEnd
-OaksLabText_1d32c: ; 1d32c (7:532c)
+OaksLabText_1caae:
TX_FAR _OaksLabText_1d32c
db "@"
-OaksLabText35: ; 1d331 (7:5331)
-OaksLabText8: ; 1d331 (7:5331)
+OaksLabText6:
TX_FAR _OaksLabText8
db "@"
-OaksLabText36: ; 1d336 (7:5336)
-OaksLabText9: ; 1d336 (7:5336)
+OaksLabText7:
TX_ASM
- ld hl, OaksLabText_1d340
+ ld hl, OaksLabText_1cac2
call PrintText
jp TextScriptEnd
-OaksLabText_1d340: ; 1d340 (7:5340)
+OaksLabText_1cac2:
TX_FAR _OaksLabText_1d340
db "@"
-OaksLabText17: ; 1d345 (7:5345)
+OaksLabText13:
TX_ASM
- ld hl, OaksLabRivalWaitingText
+ ld hl, OaksLabText_1cad1
call PrintText
jp TextScriptEnd
-OaksLabRivalWaitingText: ; 1d34f (7:534f)
+OaksLabText_1cad1:
TX_FAR _OaksLabRivalWaitingText
db "@"
-OaksLabText18: ; 1d354 (7:5354)
+OaksLabText14:
TX_ASM
- ld hl, OaksLabChooseMonText
+ ld hl, OaksLabText_1cae0
call PrintText
jp TextScriptEnd
-OaksLabChooseMonText: ; 1d35e (7:535e)
+OaksLabText_1cae0:
TX_FAR _OaksLabChooseMonText
db "@"
-OaksLabText19: ; 1d363 (7:5363)
+OaksLabText15:
TX_ASM
- ld hl, OaksLabRivalInterjectionText
+ ld hl, OaksLabText_1caef
call PrintText
jp TextScriptEnd
-OaksLabRivalInterjectionText: ; 1d36d (7:536d)
+OaksLabText_1caef:
TX_FAR _OaksLabRivalInterjectionText
db "@"
-OaksLabText20: ; 1d372 (7:5372)
+OaksLabText16:
TX_ASM
- ld hl, OaksLabBePatientText
+ ld hl, OaksLabText_1cafe
call PrintText
jp TextScriptEnd
-OaksLabBePatientText: ; 1d37c (7:537c)
+OaksLabText_1cafe:
TX_FAR _OaksLabBePatientText
db "@"
-OaksLabText12: ; 1d381 (7:5381)
+OaksLabText17:
TX_ASM
- ld hl, OaksLabLeavingText
+ ld hl, OaksLabText_1cb25
+ call PrintText
+ ld hl, OaksLabText_1cb2a
+ call PrintText
+ ld hl, OaksLabText_1cb30
+ call PrintText
+ ld hl, OaksLabText_1cb35
+ call PrintText
+ ld hl, OaksLabText_1cb3a
call PrintText
jp TextScriptEnd
-OaksLabLeavingText: ; 1d38b (7:538b)
- TX_FAR _OaksLabLeavingText
+OaksLabText_1cb25:
+ TX_FAR _OaksLabRivalTakesText1
+ db "@"
+
+OaksLabText_1cb2a:
+ TX_FAR _OaksLabRivalTakesText2
+ TX_SFX_KEY_ITEM
db "@"
-OaksLabText13: ; 1d390 (7:5390)
+OaksLabText_1cb30:
+ TX_FAR _OaksLabRivalTakesText3
+ db "@"
+
+OaksLabText_1cb35:
+ TX_FAR _OaksLabRivalTakesText4
+ db "@"
+
+OaksLabText_1cb3a:
+ TX_FAR _OaksLabRivalTakesText5
+ db "@"
+
+OaksLabText18:
TX_ASM
- ld hl, OaksLabRivalPickingMonText
+ ld a, PIKACHU
+ ld [W_PLAYERSTARTER], a
+ ld [wd11e], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, OaksLabText_1cb85
+ call PrintText
+ ld hl, OaksLabText_1cb8a
call PrintText
+ xor a
+ ld [wMonDataLocation], a
+ ld a, 5
+ ld [wCurEnemyLVL], a
+ ld a, PIKACHU
+ ld [wd11e], a
+ ld [wcf91], a
+ call AddPartyMon
+ ld a, 163
+ ld [wPartyMon1CatchRate], a
+ call Func_152d
+ SetEvent EVENT_GOT_STARTER
+ ld hl, wd72e
+ set 3, [hl]
jp TextScriptEnd
-OaksLabRivalPickingMonText: ; 1d39a (7:539a)
- TX_FAR _OaksLabRivalPickingMonText
+OaksLabText_1cb85:
+ TX_FAR _OaksLabOakGivesText
+ db "@"
+
+OaksLabText_1cb8a:
+ TX_FAR _OaksLabReceivedText
+ TX_SFX_KEY_ITEM
db "@"
-OaksLabText14: ; 1d39f (7:539f)
+OaksLabText10:
TX_ASM
- ld hl, OaksLabRivalReceivedMonText
+ ld hl, OaksLabText_1cb9a
call PrintText
jp TextScriptEnd
-OaksLabRivalReceivedMonText: ; 1d3a9 (7:53a9)
- TX_FAR _OaksLabRivalReceivedMonText
- db $11, "@"
+OaksLabText_1cb9a:
+ TX_FAR _OaksLabLeavingText
+ db "@"
-OaksLabText15: ; 1d3af (7:53af)
+OaksLabText11:
TX_ASM
- ld hl, OaksLabRivalChallengeText
+ ld hl, OaksLabText_1cba9
call PrintText
jp TextScriptEnd
-OaksLabRivalChallengeText: ; 1d3b9 (7:53b9)
+OaksLabText_1cba9:
TX_FAR _OaksLabRivalChallengeText
db "@"
-OaksLabText_1d3be: ; 1d3be (7:53be)
+OaksLabRivalDefeatedText:
TX_FAR _OaksLabText_1d3be
db "@"
-OaksLabText_1d3c3: ; 1d3c3 (7:53c3)
+OaksLabRivalBeatYouText:
TX_FAR _OaksLabText_1d3c3
db "@"
-OaksLabText16: ; 1d3c8 (7:53c8)
+OaksLabText12:
TX_ASM
- ld hl, OaksLabRivalToughenUpText
+ ld hl, OaksLabText_1cbc2
call PrintText
jp TextScriptEnd
-OaksLabRivalToughenUpText: ; 1d3d2 (7:53d2)
+OaksLabText_1cbc2:
TX_FAR _OaksLabRivalToughenUpText
db "@"
-OaksLabText21: ; 1d3d7 (7:53d7)
+OaksLabText26:
+ TX_ASM
+ ldpikacry e, PikachuCry2
+ callab PlayPikachuSoundClip
+ ld hl, OaksLabText_1cbdb
+ call PrintText
+ jp TextScriptEnd
+
+OaksLabText_1cbdb:
+ TX_FAR _OaksLabPikachuDislikesPokeballsText1
+ db "@"
+
+OaksLabText27:
+ TX_ASM
+ ld hl, OaksLabText_1cbea
+ call PrintText
+ jp TextScriptEnd
+
+OaksLabText_1cbea:
+ TX_FAR _OaksLabPikachuDislikesPokeballsText2
+ db "@"
+
+OaksLabText19:
TX_FAR _OaksLabText21
db "@"
-OaksLabText22: ; 1d3dc (7:53dc)
+OaksLabText20:
TX_FAR _OaksLabText22
db "@"
-OaksLabText23: ; 1d3e1 (7:53e1)
+OaksLabText21:
TX_FAR _OaksLabText23
db "@"
-OaksLabText24: ; 1d3e6 (7:53e6)
+OaksLabText22:
TX_FAR _OaksLabText24
db "@"
-OaksLabText25: ; 1d3eb (7:53eb)
+OaksLabText23:
TX_FAR _OaksLabText25
- db $11, "@"
+ TX_SFX_KEY_ITEM
+ db "@"
-OaksLabText26: ; 1d3f1 (7:53f1)
+OaksLabText24:
TX_FAR _OaksLabText26
db "@"
-OaksLabText27: ; 1d3f6 (7:53f6)
+OaksLabText25:
TX_FAR _OaksLabText27
db "@"
-OaksLabText38: ; 1d3fb (7:53fb)
-OaksLabText37: ; 1d3fb (7:53fb)
-OaksLabText11: ; 1d3fb (7:53fb)
-OaksLabText10: ; 1d3fb (7:53fb)
+OaksLabText8:
+OaksLabText9:
TX_ASM
- ld hl, OaksLabText_1d405
+ ld hl, OaksLabText_1c31d
call PrintText
jp TextScriptEnd
-OaksLabText_1d405: ; 1d405 (7:5405)
+OaksLabText_1c31d:
TX_FAR _OaksLabText_1d405
db "@"
diff --git a/scripts/oakslab2.asm b/scripts/oakslab2.asm
new file mode 100755
index 00000000..fef72470
--- /dev/null
+++ b/scripts/oakslab2.asm
@@ -0,0 +1,28 @@
+Func_f1be0:
+ ld a, [wYCoord]
+ cp 3
+ jr z, .asm_f1bf0
+ ld b, SPRITE_FACING_DOWN
+ ld hl, Data_f1bf9
+ call Func_f0a82
+ ret
+
+.asm_f1bf0
+ ld b, SPRITE_FACING_LEFT
+ ld hl, Data_f1bfe
+ call Func_f0a82
+ ret
+
+Data_f1bf9:
+ db $00
+ db $1f
+ db $1e
+ db $38
+ db $3f
+
+Data_f1bfe:
+ db $00
+ db $1d
+ db $20
+ db $36
+ db $3f
diff --git a/scripts/pallettown.asm b/scripts/pallettown.asm
index 106d8ec0..73f50e3e 100755
--- a/scripts/pallettown.asm
+++ b/scripts/pallettown.asm
@@ -1,12 +1,12 @@
PalletTownScript: ; 18e5b (6:4e5b)
CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
- jr z,.next
+ jr z, .next
SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
.next
call EnableAutoTextBoxDrawing
- ld hl,PalletTownScriptPointers
- ld a,[W_PALLETTOWNCURSCRIPT]
- jp CallFunctionInTable
+ ld hl, PalletTownScriptPointers
+ ld a, [W_PALLETTOWNCURSCRIPT]
+ jp JumpTable
PalletTownScriptPointers: ; 18e73 (6:4e73)
dw PalletTownScript0
@@ -16,136 +16,208 @@ PalletTownScriptPointers: ; 18e73 (6:4e73)
dw PalletTownScript4
dw PalletTownScript5
dw PalletTownScript6
+ dw PalletTownScript7
+ dw PalletTownScript8
+ dw PalletTownScript9
PalletTownScript0: ; 18e81 (6:4e81)
CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB
ret nz
- ld a,[wYCoord]
- cp 1 ; is player near north exit?
+ ld a, [wYCoord]
+ cp 0 ; is player at north exit?
ret nz
+ ResetEvent EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN
+ ld a, [wXCoord]
+ cp 10
+ jr z, .asm_18e40
+ SetEventReuseHL EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN
+.asm_18e40
xor a
- ld [hJoyHeld],a
- ld a,PLAYER_DIR_DOWN
- ld [wPlayerMovingDirection],a
- ld a,$FF
- call PlaySound ; stop music
+ ld [hJoyHeld], a
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
+ call StopAllMusic
ld a, BANK(Music_MeetProfOak)
- ld c,a
+ ld c, a
ld a, MUSIC_MEET_PROF_OAK ; “oak appears” music
call PlayMusic
- ld a,$FC
- ld [wJoyIgnore],a
SetEvent EVENT_OAK_APPEARED_IN_PALLET
; trigger the next script
- ld a,1
- ld [W_PALLETTOWNCURSCRIPT],a
+ ld a, 1
+ ld [W_PALLETTOWNCURSCRIPT], a
ret
PalletTownScript1: ; 18eb2 (6:4eb2)
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
xor a
- ld [wcf0d],a
- ld a,1
- ld [hSpriteIndexOrTextID],a
+ ld [wcf0d], a
+ ld a, 1
+ ld [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a,$FF
- ld [wJoyIgnore],a
- ld a,HS_PALLET_TOWN_OAK
- ld [wMissableObjectIndex],a
+ ld a, $FF
+ ld [wJoyIgnore], a
+ ld hl, wSpriteStateData2 + 1 * $10 + 4
+ ld a, $8
+ ld [hli], a
+ ld a, $e
+ ld [hl], a
+ ld a, HS_PALLET_TOWN_OAK
+ ld [wMissableObjectIndex], a
predef ShowObject
; trigger the next script
- ld a,2
- ld [W_PALLETTOWNCURSCRIPT],a
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
+ ld a, 2
+ ld [W_PALLETTOWNCURSCRIPT], a
ret
PalletTownScript2: ; 18ed2 (6:4ed2)
- ld a,1
- ld [H_SPRITEINDEX],a
- ld a,SPRITE_FACING_UP
- ld [hSpriteFacingDirection],a
- call SetSpriteFacingDirectionAndDelay
call Delay3
- ld a,1
- ld [wYCoord],a
- ld a,1
- ld [hNPCPlayerRelativePosPerspective],a
- ld a,1
+ ld a, 0
+ ld [wYCoord], a
+ ld a, 1
+ ld [hNPCPlayerRelativePosPerspective], a
+ ld a, 1
swap a
- ld [hNPCSpriteOffset],a
+ ld [hNPCSpriteOffset], a
predef CalcPositionOfPlayerRelativeToNPC
- ld hl,hNPCPlayerYDistance
+ ld hl, hNPCPlayerYDistance
dec [hl]
predef FindPathToPlayer ; load Oak’s movement into wNPCMovementDirections2
- ld de,wNPCMovementDirections2
- ld a,1 ; oak
- ld [H_SPRITEINDEX],a
+ ld de, wNPCMovementDirections2
+ ld a, 1 ; oak
+ ld [H_SPRITEINDEX], a
call MoveSprite
- ld a,$FF
- ld [wJoyIgnore],a
; trigger the next script
- ld a,3
- ld [W_PALLETTOWNCURSCRIPT],a
+ ld a, 3
+ ld [W_PALLETTOWNCURSCRIPT], a
ret
PalletTownScript3: ; 18f12 (6:4f12)
- ld a,[wd730]
- bit 0,a
+ ld a, [wd730]
+ bit 0, a
ret nz
- xor a ; ld a, SPRITE_FACING_DOWN
- ld [wSpriteStateData1 + 9],a
- ld a,1
- ld [wcf0d],a
- ld a,$FC
- ld [wJoyIgnore],a
- ld a,1
- ld [hSpriteIndexOrTextID],a
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, 1
+ ld [wcf0d], a
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
+ ld a, 1
+ ld [hSpriteIndexOrTextID], a
call DisplayTextID
-; set up movement script that causes the player to follow Oak to his lab
- ld a,$FF
- ld [wJoyIgnore],a
- ld a,1
- ld [wSpriteIndex],a
- xor a
- ld [wNPCMovementScriptFunctionNum],a
- ld a,1
- ld [wNPCMovementScriptPointerTableNum],a
- ld a,[H_LOADEDROMBANK]
- ld [wNPCMovementScriptBank],a
-
+ ; oak faces the horizontally adjacent patch of grass to face pikachu
+ ld a, $FF
+ ld [wJoyIgnore], a
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ CheckEvent EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN
+ ld a, SPRITE_FACING_RIGHT
+ jr z, .asm_18f01
+ ld a, SPRITE_FACING_LEFT
+.asm_18f01
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
+
; trigger the next script
- ld a,4
- ld [W_PALLETTOWNCURSCRIPT],a
+ ld a, 4
+ ld [W_PALLETTOWNCURSCRIPT], a
ret
PalletTownScript4: ; 18f4b (6:4f4b)
- ld a,[wNPCMovementScriptPointerTableNum]
- and a ; is the movement script over?
- ret nz
+ ; start the pikachu battle
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ xor a
+ ld [wListScrollOffset], a
+ ld a, STARTER_PIKACHU_BATTLE
+ ld [wBattleType], a
+ ld a, PIKACHU
+ ld [wCurOpponent], a
+ ld a, 5
+ ld [wCurEnemyLVL], a
; trigger the next script
- ld a,5
- ld [W_PALLETTOWNCURSCRIPT],a
+ ld a, 5
+ ld [W_PALLETTOWNCURSCRIPT], a
ret
PalletTownScript5: ; 18f56 (6:4f56)
+ ld a, $2
+ ld [wcf0d], a
+ ld a, $1
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
+ ld a, $8
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ ld a, $ff
+ ld [wJoyIgnore], a
+
+ ; trigger the next script
+ ld a, 6
+ ld [W_PALLETTOWNCURSCRIPT], a
+ ret
+
+PalletTownScript6: ; 18f87 (6:4f87)
+ xor a
+ ld [wSpriteStateData1 + 9], a
+ ld a, $1
+ ld [wSpriteIndex], a
+ xor a
+ ld [wNPCMovementScriptFunctionNum], a
+ ld a, $1
+ ld [wNPCMovementScriptPointerTableNum], a
+ ld a, [H_LOADEDROMBANK]
+ ld [wNPCMovementScriptBank], a
+
+ ; trigger the next script
+ ld a, 7
+ ld [W_PALLETTOWNCURSCRIPT], a
+ ret
+
+PalletTownScript7:
+ ld a, [wNPCMovementScriptPointerTableNum]
+ and a
+ ret nz
+
+ ; trigger the next script
+ ld a, 8
+ ld [W_PALLETTOWNCURSCRIPT], a
+ ret
+
+PalletTownScript8:
CheckEvent EVENT_DAISY_WALKING
- jr nz,.next
- CheckBothEventsSet EVENT_GOT_TOWN_MAP, EVENT_ENTERED_BLUES_HOUSE, 1
- jr nz,.next
+ jr nz, .asm_18f9e
+ and $3 ; (EVENT_GOT_TOWN_MAP | EVENT_ENTERED_BLUES_HOUSE)
+ cp $3
+ jr nz, .asm_18f9e
SetEvent EVENT_DAISY_WALKING
- ld a,HS_DAISY_SITTING
- ld [wMissableObjectIndex],a
+ ld a, HS_DAISY_SITTING
+ ld [wMissableObjectIndex], a
predef HideObject
- ld a,HS_DAISY_WALKING
- ld [wMissableObjectIndex],a
+ ld a, HS_DAISY_WALKING
+ ld [wMissableObjectIndex], a
predef_jump ShowObject
-.next
+
+.asm_18f9e
CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
ret z
SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS_2
-PalletTownScript6: ; 18f87 (6:4f87)
+PalletTownScript9:
ret
PalletTownTextPointers: ; 18f88 (6:4f88)
@@ -156,18 +228,25 @@ PalletTownTextPointers: ; 18f88 (6:4f88)
dw PalletTownText5
dw PalletTownText6
dw PalletTownText7
+ dw PalletTownText8
PalletTownText1: ; 18f96 (6:4f96)
TX_ASM
- ld a,[wcf0d]
+ ld a, [wcf0d]
and a
- jr nz,.next
- ld a,1
- ld [wDoNotWaitForButtonPressAfterDisplayingText],a
- ld hl,OakAppearsText
+ jr nz, .next
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, OakAppearsText
jr .done
.next
- ld hl,OakWalksUpText
+ dec a
+ jr nz, .asm_18fd3
+ ld hl, OakWalksUpText
+ jr .done
+
+.asm_18fd3
+ ld hl, PalletTownText_19002
.done
call PrintText
jp TextScriptEnd
@@ -175,40 +254,49 @@ PalletTownText1: ; 18f96 (6:4f96)
OakAppearsText: ; 18fb0 (6:4fb0)
TX_FAR _OakAppearsText
TX_ASM
- ld c,10
+ ld c, 10
call DelayFrames
- xor a
- ld [wEmotionBubbleSpriteIndex],a ; player's sprite
- ld [wWhichEmotionBubble],a ; EXCLAMATION_BUBBLE
+ ld a, PLAYER_DIR_DOWN
+ ld [wPlayerMovingDirection], a
+ ld a, 0
+ ld [wEmotionBubbleSpriteIndex], a ; player's sprite
+ ld a, 0
+ ld [wWhichEmotionBubble], a ; EXCLAMATION_BUBBLE
predef EmotionBubble
- ld a,PLAYER_DIR_DOWN
- ld [wPlayerMovingDirection],a
jp TextScriptEnd
OakWalksUpText: ; 18fce (6:4fce)
TX_FAR _OakWalksUpText
db "@"
-PalletTownText2: ; 0x18fd3 girl
+PalletTownText_19002:
+ TX_FAR _OakWhewText
+ db "@"
+
+PalletTownText8: ; 0x18fd3 girl
+ TX_FAR _OakGrassText
+ db "@"
+
+PalletTownText2: ; 0x18fd8 fat man
TX_FAR _PalletTownText2
db "@"
-PalletTownText3: ; 0x18fd8 fat man
+PalletTownText3: ; 0x18fdd sign by lab
TX_FAR _PalletTownText3
db "@"
-PalletTownText4: ; 0x18fdd sign by lab
+PalletTownText4: ; 0x18fe2 sign by fence
TX_FAR _PalletTownText4
db "@"
-PalletTownText5: ; 0x18fe2 sign by fence
+PalletTownText5: ; 0x18fe7 sign by Red’s house
TX_FAR _PalletTownText5
db "@"
-PalletTownText6: ; 0x18fe7 sign by Red’s house
+PalletTownText6: ; 0x18fec sign by Blue’s house
TX_FAR _PalletTownText6
db "@"
-PalletTownText7: ; 0x18fec sign by Blue’s house
+PalletTownText7:
TX_FAR _PalletTownText7
db "@"
diff --git a/scripts/pewtercity.asm b/scripts/pewtercity.asm
index 66589d52..1e9a922a 100755
--- a/scripts/pewtercity.asm
+++ b/scripts/pewtercity.asm
@@ -1,10 +1,13 @@
-PewterCityScript: ; 19237 (6:5237)
+PewterCityScript: ; 192f5 (6:52f5)
call EnableAutoTextBoxDrawing
+ ld hl, wPreventBlackout
+ res 7, [hl]
ld hl, PewterCityScriptPointers
ld a, [W_PEWTERCITYCURSCRIPT]
- jp CallFunctionInTable
+ call JumpTable
+ ret
-PewterCityScriptPointers: ; 19243 (6:5243)
+PewterCityScriptPointers: ; 19307 (6:5307)
dw PewterCityScript0
dw PewterCityScript1
dw PewterCityScript2
@@ -13,7 +16,7 @@ PewterCityScriptPointers: ; 19243 (6:5243)
dw PewterCityScript5
dw PewterCityScript6
-PewterCityScript0: ; 19251 (6:5251)
+PewterCityScript0: ; 19315 (6:5315)
xor a
ld [W_MUSEUM1FCURSCRIPT], a
ResetEvent EVENT_BOUGHT_MUSEUM_TICKET
@@ -26,7 +29,7 @@ PewterCityScript_1925e: ; 1925e (6:525e)
ld hl, CoordsData_19277
call ArePlayerCoordsInArray
ret nc
- ld a, $f0
+ ld a, $fc
ld [wJoyIgnore], a
ld a, $5
ld [hSpriteIndexOrTextID], a
@@ -48,9 +51,9 @@ PewterCityScript1: ; 19280 (6:5280)
ld a, SPRITE_FACING_UP
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, ($3 << 4) | SPRITE_FACING_UP
+ ld a, SPRITE_FACING_UP
ld [hSpriteImageIndex], a
- call SetSpriteImageIndexAfterSettingFacingDirection
+ call SpriteFunc_34a1
call PlayDefaultMusic
ld hl, wFlags_0xcd60
set 4, [hl]
@@ -115,10 +118,7 @@ PewterCityScript4: ; 19305 (6:5305)
ld [H_SPRITEINDEX], a
ld a, SPRITE_FACING_LEFT
ld [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
- ld a, ($1 << 4) | SPRITE_FACING_LEFT
- ld [hSpriteImageIndex], a
- call SetSpriteImageIndexAfterSettingFacingDirection
+ call SpriteFunc_34a1
call PlayDefaultMusic
ld hl, wFlags_0xcd60
set 4, [hl]
diff --git a/scripts/pewtergym.asm b/scripts/pewtergym.asm
index 1e6e5476..3e9ab693 100755
--- a/scripts/pewtergym.asm
+++ b/scripts/pewtergym.asm
@@ -14,7 +14,8 @@ PewterGymScript: ; 5c387 (17:4387)
PewterGymScript_5c3a4: ; 5c3a4 (17:43a4)
ld hl, Gym1CityName
ld de, Gym1LeaderName
- jp LoadGymLeaderAndCityName
+ call LoadGymLeaderAndCityName
+ ret
Gym1CityName: ; 5c3ad (17:43ad)
db "PEWTER CITY@"
@@ -41,7 +42,6 @@ PewterGymScript3: ; 5c3d2 (17:43d2)
jp z, PewterGymScript_5c3bf
ld a, $f0
ld [wJoyIgnore], a
-
PewterGymScript_5c3df: ; 5c3df (17:43df)
ld a, $4
ld [hSpriteIndexOrTextID], a
@@ -55,6 +55,7 @@ PewterGymScript_5c3df: ; 5c3df (17:43df)
call DisplayTextID
SetEvent EVENT_GOT_TM34
jr .asm_5c408
+
.BagFull
ld a, $6
ld [hSpriteIndexOrTextID], a
@@ -149,7 +150,7 @@ PewterGymText4: ; 5c4a8 (17:44a8)
PewterGymText5: ; 5c4ad (17:44ad)
TX_FAR _ReceivedTM34Text
- db $0B
+ TX_SFX_ITEM
TX_FAR _TM34ExplanationText
db "@"
@@ -159,7 +160,7 @@ PewterGymText6: ; 5c4b7 (17:44b7)
PewterGymText_5c4bc: ; 5c4bc (17:44bc)
TX_FAR _PewterGymText_5c4bc
- db $0B
+ TX_SFX_ITEM
TX_FAR _PewterGymText_5c4c1
db "@"
@@ -192,6 +193,9 @@ PewterGymText3: ; 5c4df (17:44df)
ld a, [wCurrentMenuItem]
and a
jr nz, .asm_5c4fe
+ ld a, [wd472]
+ bit 7, a
+ jp nz, .asm_5c3fa
ld hl, PewterGymText_5c51a
call PrintText
jr .asm_5c504
@@ -208,6 +212,11 @@ PewterGymText3: ; 5c4df (17:44df)
.asm_5c512
jp TextScriptEnd
+.asm_5c3fa
+ ld hl, PewterGymText_5c41c
+ call PrintText
+ jp TextScriptEnd
+
PewterGymText_5c515: ; 5c515 (17:4515)
TX_FAR _PewterGymText_5c515
db "@"
@@ -227,3 +236,8 @@ PewterGymText_5c524: ; 5c524 (17:4524)
PewterGymText_5c529: ; 5c529 (17:4529)
TX_FAR _PewterGymText_5c529
db "@"
+
+PewterGymText_5c41c:
+ TX_FAR _PewterGymGuyText
+ db "@"
+
diff --git a/scripts/pewterhouse1.asm b/scripts/pewterhouse1.asm
index a670f23c..a825b303 100755
--- a/scripts/pewterhouse1.asm
+++ b/scripts/pewterhouse1.asm
@@ -1,5 +1,6 @@
PewterHouse1Script: ; 1d5f3 (7:55f3)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PewterHouse1TextPointers: ; 1d5f6 (7:55f6)
dw PewterHouse1Text1
diff --git a/scripts/pewterpokecenter.asm b/scripts/pewterpokecenter.asm
index 46d4d509..90f5e2b9 100755
--- a/scripts/pewterpokecenter.asm
+++ b/scripts/pewterpokecenter.asm
@@ -1,12 +1,17 @@
PewterPokecenterScript: ; 5c587 (17:4587)
+ ld hl, wPreventBlackout
+ set 7, [hl]
call Serial_TryEstablishingExternallyClockedConnection
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PewterPokecenterTextPointers: ; 5c58d (17:458d)
dw PewterPokecenterText1
dw PewterPokecenterText2
dw PewterPokecenterText3
dw PewterPokecenterText4
+ dw PewterPokecenterText5
+ dw PewterPokecenterText6
PewterPokecenterText1: ; 5c595 (17:4595)
db $ff
@@ -17,69 +22,18 @@ PewterPokecenterText2: ; 5c596 (17:4596)
PewterPokecenterText3: ; 5c59b (17:459b)
TX_ASM
- ld a, $1
- ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld hl, PewterPokecenterText5
- call PrintText
- ld a, $ff
- call PlaySound
- ld c, 32
- call DelayFrames
- ld hl, JigglypuffFacingDirections
- ld de, wJigglypuffFacingDirections
- ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections
- call CopyData
-
- ld a, [wSpriteStateData1 + 3 * $10 + $2]
- ld hl, wJigglypuffFacingDirections
-.findMatchingFacingDirectionLoop
- cp [hl]
- inc hl
- jr nz, .findMatchingFacingDirectionLoop
- dec hl
- push hl
- ld c, BANK(Music_JigglypuffSong)
- ld a, MUSIC_JIGGLYPUFF_SONG
- call PlayMusic
- pop hl
-.loop
- ld a, [hl]
- ld [wSpriteStateData1 + 3 * $10 + $2], a
-
-; rotate the array
- push hl
- ld hl, wJigglypuffFacingDirections
- ld de, wJigglypuffFacingDirections - 1
- ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections
- call CopyData
- ld a, [wJigglypuffFacingDirections - 1]
- ld [wJigglypuffFacingDirections + 3], a
- pop hl
-
- ld c, 24
- call DelayFrames
-
- ld a, [wChannelSoundIDs]
- ld b, a
- ld a, [wChannelSoundIDs + CH1]
- or b
- jr nz, .loop
-
- ld c, 48
- call DelayFrames
- call PlayDefaultMusic
+ callba Func_f1da4
jp TextScriptEnd
-PewterPokecenterText5: ; 5c603 (17:4603)
- TX_FAR _PewterPokecenterText5
- db "@"
-
-JigglypuffFacingDirections: ; 5c608 (17:4608)
- db $30 | SPRITE_FACING_DOWN
- db $30 | SPRITE_FACING_LEFT
- db $30 | SPRITE_FACING_UP
- db $30 | SPRITE_FACING_RIGHT
-JigglypuffFacingDirectionsEnd:
-
PewterPokecenterText4: ; 5c60c (17:460c)
db $f6
+
+PewterPokecenterText5: ; 5c603 (17:4603)
+ TX_ASM
+ callba Func_f1d98
+ jp TextScriptEnd
+
+PewterPokecenterText6:
+ TX_ASM
+ callab Func_f0f12
+ jp TextScriptEnd
diff --git a/scripts/pewterpokecenter2.asm b/scripts/pewterpokecenter2.asm
new file mode 100755
index 00000000..1aae37d1
--- /dev/null
+++ b/scripts/pewterpokecenter2.asm
@@ -0,0 +1,72 @@
+Func_f1d98:
+ ld hl, PewterPokecenterText_f1d9f
+ call PrintText
+ ret
+
+PewterPokecenterText_f1d9f:
+ TX_FAR _PewterPokecenterText2
+ db "@"
+
+Func_f1da4:
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, PewterPokecenterText_f1e19
+ call PrintText
+ call StopAllMusic
+ ld c, 32
+ call DelayFrames
+ ld hl, JigglypuffSpinData
+ ld de, wJigglypuffFacingDirections
+ ld bc, JigglypuffSpinDataEnd - JigglypuffSpinData
+ call CopyData
+ ld a, [wSpriteStateData1 + 3 * $10 + 2]
+ ld hl, wJigglypuffFacingDirections
+.asm_f1dc9
+ cp [hl]
+ inc hl
+ jr nz, .asm_f1dc9
+ dec hl
+ push hl
+ ld c, BANK(Music_JigglypuffSong)
+ ld a, MUSIC_JIGGLYPUFF_SONG
+ call PlayMusic
+ pop hl
+.asm_f1dd7
+ ld a, [hl]
+ ld [wSpriteStateData1 + 3 * $10 + 2], a
+ push hl
+ ld hl, wJigglypuffFacingDirections
+ ld de, wJigglypuffFacingDirections2
+ ld bc, JigglypuffSpinDataEnd - JigglypuffSpinData
+ call CopyData
+ ld a, [wJigglypuffFacingDirections2]
+ ld [wcd42], a
+ pop hl
+ ld c, 24
+ call DelayFrames
+ ld a, [wChannelSoundIDs]
+ ld b, a
+ ld a, [wChannelSoundIDs + 1]
+ or b
+ jr nz, .asm_f1dd7
+ ld c, 48
+ call DelayFrames
+ call PlayDefaultMusic
+ ld a, [wd472]
+ bit 7, a
+ ret z
+ callab Func_fce73
+ ret c
+ call SetPikachuAsleep
+ ret
+
+PewterPokecenterText_f1e19:
+ TX_FAR _PewterPokecenterText5
+ db "@"
+
+JigglypuffSpinData:
+ db $40 | SPRITE_FACING_DOWN
+ db $40 | SPRITE_FACING_LEFT
+ db $40 | SPRITE_FACING_UP
+ db $40 | SPRITE_FACING_RIGHT
+JigglypuffSpinDataEnd:
diff --git a/scripts/pokemontower2.asm b/scripts/pokemontower2.asm
index d498f88e..7aebf81b 100755
--- a/scripts/pokemontower2.asm
+++ b/scripts/pokemontower2.asm
@@ -2,7 +2,7 @@ PokemonTower2Script: ; 604f2 (18:44f2)
call EnableAutoTextBoxDrawing
ld hl, PokemonTower2ScriptPointers
ld a, [W_POKEMONTOWER2CURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
PokemonTower2Script_604fe: ; 604fe (18:44fe)
xor a
diff --git a/scripts/redshouse1f.asm b/scripts/redshouse1f.asm
index f9c7193f..602e8ecf 100755
--- a/scripts/redshouse1f.asm
+++ b/scripts/redshouse1f.asm
@@ -1,5 +1,6 @@
RedsHouse1FScript: ; 48168 (12:4168)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
RedsHouse1FTextPointers: ; 4816b (12:416b)
dw RedsHouse1FText1
@@ -7,63 +8,10 @@ RedsHouse1FTextPointers: ; 4816b (12:416b)
RedsHouse1FText1: ; 4816f (12:416f) Mom
TX_ASM
- ld a, [wd72e]
- bit 3, a
- jr nz, .heal ; if player has received a Pokémon from Oak, heal team
- ld hl, MomWakeUpText
- call PrintText
- jr .done
-.heal
- call MomHealPokemon
-.done
+ callab Func_f1b73
jp TextScriptEnd
-MomWakeUpText: ; 48185 (12:4185)
- TX_FAR _MomWakeUpText
- db "@"
-
-MomHealPokemon: ; 4818a (12:418a)
- ld hl, MomHealText1
- call PrintText
- call GBFadeOutToWhite
- call ReloadMapData
- predef HealParty
- ld a, MUSIC_PKMN_HEALED
- ld [wNewSoundID], a
- call PlaySound
-.next
- ld a, [wChannelSoundIDs]
- cp MUSIC_PKMN_HEALED
- jr z, .next
- ld a, [wMapMusicSoundID]
- ld [wNewSoundID], a
- call PlaySound
- call GBFadeInFromWhite
- ld hl, MomHealText2
- jp PrintText
-
-MomHealText1: ; 481bc (12:41bc)
- TX_FAR _MomHealText1
- db "@"
-MomHealText2: ; 481c1 (12:41c1)
- TX_FAR _MomHealText2
- db "@"
-
RedsHouse1FText2: ; 0x481c6 TV
TX_ASM
- ld a,[wSpriteStateData1 + 9]
- cp SPRITE_FACING_UP
- ld hl,TVWrongSideText
- jr nz,.notUp
- ld hl,StandByMeText
-.notUp
- call PrintText
+ callab Func_f1bc4
jp TextScriptEnd
-
-StandByMeText: ; 481da (12:41da)
- TX_FAR _StandByMeText
- db "@"
-
-TVWrongSideText: ; 481df (12:41df)
- TX_FAR _TVWrongSideText
- db "@"
diff --git a/scripts/redshouse1f2.asm b/scripts/redshouse1f2.asm
new file mode 100755
index 00000000..0ddd22d6
--- /dev/null
+++ b/scripts/redshouse1f2.asm
@@ -0,0 +1,58 @@
+Func_f1b73:
+ ld a, [wd72e]
+ bit 3, a
+ jp nz, MomHealPokemon ; if player has received a Pokémon from Oak, heal team
+ ld hl, MomWakeUpText
+ call PrintText
+ ret
+
+MomWakeUpText: ; 48185 (12:4185)
+ TX_FAR _MomWakeUpText
+ db "@"
+
+MomHealPokemon: ; 4818a (12:418a)
+ ld hl, MomHealText1
+ call PrintText
+ call GBFadeOutToWhite
+ call ReloadMapData
+ predef HealParty
+ ld a, MUSIC_PKMN_HEALED
+ ld [wNewSoundID], a
+ call PlaySound
+.loop
+ ld a, [wChannelSoundIDs]
+ cp MUSIC_PKMN_HEALED
+ jr z, .loop
+ ld a, [wMapMusicSoundID]
+ ld [wNewSoundID], a
+ call PlaySound
+ call GBFadeInFromWhite
+ ld hl, MomHealText2
+ call PrintText
+ ret
+
+MomHealText1: ; 481bc (12:41bc)
+ TX_FAR _MomHealText1
+ db "@"
+MomHealText2: ; 481c1 (12:41c1)
+ TX_FAR _MomHealText2
+ db "@"
+
+Func_f1bc4:
+ ld hl, TVWrongSideText
+ ld a, [wSpriteStateData1 + 9]
+ cp SPRITE_FACING_UP
+ jp nz, .notUp
+ ld hl, StandByMeText
+.notUp
+ call PrintText
+ ret
+
+StandByMeText: ; 481da (12:41da)
+ TX_FAR _StandByMeText
+ db "@"
+
+TVWrongSideText: ; 481df (12:41df)
+ TX_FAR _TVWrongSideText
+ db "@"
+
diff --git a/scripts/redshouse2f.asm b/scripts/redshouse2f.asm
index 2335e6d1..3a0421a6 100755
--- a/scripts/redshouse2f.asm
+++ b/scripts/redshouse2f.asm
@@ -1,23 +1,22 @@
RedsHouse2FScript: ; 5c0b0 (17:40b0)
call EnableAutoTextBoxDrawing
- ld hl,RedsHouse2FScriptPointers
- ld a,[W_REDSHOUSE2CURSCRIPT]
- jp CallFunctionInTable
+ ld hl, RedsHouse2FScriptPointers
+ ld a, 0
+ call JumpTable
+ ret
RedsHouse2FScriptPointers: ; 5c0bc (17:40bc)
dw RedsHouse2FScript0
dw RedsHouse2FScript1
+ dw RedsHouse2FScript2
+ dw RedsHouse2FScript3
+ dw RedsHouse2FScript4
-RedsHouse2FScript0: ; 5c0c0 (17:40c0)
- xor a
- ld [hJoyHeld],a
- ld a,PLAYER_DIR_UP
- ld [wPlayerMovingDirection],a
- ld a,1
- ld [W_REDSHOUSE2CURSCRIPT],a
- ret
-
+RedsHouse2FScript0: ; 5c0ce (17:40ce)
RedsHouse2FScript1: ; 5c0ce (17:40ce)
+RedsHouse2FScript2: ; 5c0ce (17:40ce)
+RedsHouse2FScript3: ; 5c0ce (17:40ce)
+RedsHouse2FScript4: ; 5c0ce (17:40ce)
ret
RedsHouse2FTextPointers: ; 5c0cf (17:40cf)
diff --git a/scripts/rockethideout2.asm b/scripts/rockethideout2.asm
index 0b45967f..621e19e6 100755
--- a/scripts/rockethideout2.asm
+++ b/scripts/rockethideout2.asm
@@ -313,7 +313,7 @@ RocketHideout2Script3: ; 44fc2 (11:4fc2)
ld [W_CURMAPSCRIPT], a
ret
-LoadSpinnerArrowTiles: ; 44fd7 (11:4fd7)
+LoadSpinnerArrowTiles: ; 45077 (11:5077)
ld a, [wSpriteStateData1 + 2]
srl a
srl a
diff --git a/scripts/rocktunnelpokecenter.asm b/scripts/rocktunnelpokecenter.asm
index 5e822bca..7d8f4bf6 100755
--- a/scripts/rocktunnelpokecenter.asm
+++ b/scripts/rocktunnelpokecenter.asm
@@ -7,9 +7,10 @@ RockTunnelPokecenterTextPointers: ; 493c0 (12:53c0)
dw RockTunnelPokecenterText2
dw RockTunnelPokecenterText3
dw RockTunnelPokecenterText4
+ dw RockTunnelPokecenterText5
RockTunnelPokecenterText1: ; 493c8 (12:53c8)
- db $ff
+ TX_POKECENTER_NURSE
RockTunnelPokecenterText2: ; 493c9 (12:53c9)
TX_FAR _RockTunnelPokecenterText1
@@ -20,4 +21,9 @@ RockTunnelPokecenterText3: ; 493ce (12:53ce)
db "@"
RockTunnelPokecenterText4: ; 493d3 (12:53d3)
- db $f6
+ TX_CABLE_CLUB_RECEPTIONIST
+
+RockTunnelPokecenterText5:
+ TX_ASM
+ callab Func_f0f12
+ jp TextScriptEnd
diff --git a/scripts/route1.asm b/scripts/route1.asm
index 926ffd20..8c7cc0e9 100755
--- a/scripts/route1.asm
+++ b/scripts/route1.asm
@@ -1,5 +1,6 @@
Route1Script: ; 1caaf (7:4aaf)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Route1TextPointers: ; 1cab2 (7:4ab2)
dw Route1Text1
@@ -8,44 +9,15 @@ Route1TextPointers: ; 1cab2 (7:4ab2)
Route1Text1: ; 1cab8 (7:4ab8)
TX_ASM
- CheckAndSetEvent EVENT_GOT_POTION_SAMPLE
- jr nz, .asm_1cada
- ld hl, Route1ViridianMartSampleText
- call PrintText
- lb bc, POTION, 1
- call GiveItem
- jr nc, .BagFull
- ld hl, Route1Text_1cae8
- jr .asm_1cadd
-.BagFull
- ld hl, Route1Text_1caf3
- jr .asm_1cadd
-.asm_1cada
- ld hl, Route1Text_1caee
-.asm_1cadd
- call PrintText
+ callba Func_f1ad2
jp TextScriptEnd
-Route1ViridianMartSampleText: ; 1cae3 (7:4ae3)
- TX_FAR _Route1ViridianMartSampleText
- db "@"
-
-Route1Text_1cae8: ; 1cae8 (7:4ae8)
- TX_FAR _Route1Text_1cae8
- db $0b,"@"
-
-Route1Text_1caee: ; 1caee (7:4aee)
- TX_FAR _Route1Text_1caee
- db "@"
-
-Route1Text_1caf3: ; 1caf3 (7:4af3)
- TX_FAR _Route1Text_1caf3
- db "@"
-
Route1Text2: ; 1caf8 (7:4af8)
- TX_FAR _Route1Text2
- db "@"
+ TX_ASM
+ callba Func_f1b0f
+ jp TextScriptEnd
Route1Text3: ; 1cafd (7:4afd)
- TX_FAR _Route1Text3
- db "@"
+ TX_ASM
+ callba Func_f1b1b
+ jp TextScriptEnd
diff --git a/scripts/route16gate.asm b/scripts/route16gate.asm
index 801e577e..197b12b2 100755
--- a/scripts/route16gate.asm
+++ b/scripts/route16gate.asm
@@ -4,7 +4,7 @@ Route16GateScript: ; 496be (12:56be)
call EnableAutoTextBoxDrawing
ld a, [W_ROUTE16GATECURSCRIPT]
ld hl, Route16GateScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
Route16GateScriptPointers: ; 496cf (12:56cf)
dw Route16GateScript0
diff --git a/scripts/route18.asm b/scripts/route18.asm
index 9a077faf..9544b1ec 100755
--- a/scripts/route18.asm
+++ b/scripts/route18.asm
@@ -110,3 +110,4 @@ Route18Text4: ; 59b5a (16:5b5a)
Route18Text5: ; 59b5f (16:5b5f)
TX_FAR _Route18Text5
db "@"
+; 59b64
diff --git a/scripts/route18gate.asm b/scripts/route18gate.asm
index 060a6bbf..33f67e97 100755
--- a/scripts/route18gate.asm
+++ b/scripts/route18gate.asm
@@ -4,7 +4,7 @@ Route18GateScript: ; 49876 (12:5876)
call EnableAutoTextBoxDrawing
ld a, [W_ROUTE18GATECURSCRIPT]
ld hl, Route18GateScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
Route18GateScriptPointers: ; 49887 (12:5887)
dw Route18GateScript0
diff --git a/scripts/route19.asm b/scripts/route19.asm
index 4a60e40f..9ed6080b 100755
--- a/scripts/route19.asm
+++ b/scripts/route19.asm
@@ -37,7 +37,7 @@ Route19TrainerHeader0: ; 55d73 (15:5d73)
Route19TrainerHeader1: ; 55d7f (15:5d7f)
dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_1
- db ($3 << 4) ; trainer's view range
+ db ($4 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_1
dw Route19BattleText2 ; TextBeforeBattle
dw Route19AfterBattleText2 ; TextAfterBattle
@@ -121,60 +121,52 @@ Route19TrainerHeader9: ; 55ddf (15:5ddf)
Route19Text1: ; 55dec (15:5dec)
TX_ASM
ld hl, Route19TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text2: ; 55df6 (15:5df6)
TX_ASM
ld hl, Route19TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text3: ; 55e00 (15:5e00)
TX_ASM
ld hl, Route19TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text4: ; 55e0a (15:5e0a)
TX_ASM
ld hl, Route19TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text5: ; 55e14 (15:5e14)
TX_ASM
ld hl, Route19TrainerHeader4
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text6: ; 55e1e (15:5e1e)
TX_ASM
ld hl, Route19TrainerHeader5
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text7: ; 55e28 (15:5e28)
TX_ASM
ld hl, Route19TrainerHeader6
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text8: ; 55e32 (15:5e32)
TX_ASM
ld hl, Route19TrainerHeader7
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text9: ; 55e3c (15:5e3c)
TX_ASM
ld hl, Route19TrainerHeader8
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text10: ; 55e46 (15:5e46)
TX_ASM
ld hl, Route19TrainerHeader9
+Route19_TalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
diff --git a/scripts/route1_2.asm b/scripts/route1_2.asm
new file mode 100755
index 00000000..35ffb137
--- /dev/null
+++ b/scripts/route1_2.asm
@@ -0,0 +1,53 @@
+Func_f1ad2:
+ CheckAndSetEvent EVENT_GOT_POTION_SAMPLE
+ jr nz, .asm_1cada
+ ld hl, Route1ViridianMartSampleText
+ call PrintText
+ lb bc, POTION, 1
+ call GiveItem
+ jr nc, .BagFull
+ ld hl, Route1Text_f1aff
+ jr .asm_1cadd
+.BagFull
+ ld hl, Route1Text_f1b0a
+ jr .asm_1cadd
+.asm_1cada
+ ld hl, Route1Text_f1b05
+.asm_1cadd
+ call PrintText
+ ret
+
+Route1ViridianMartSampleText: ; 1cae3 (7:4ae3)
+ TX_FAR _Route1ViridianMartSampleText
+ db "@"
+
+Route1Text_f1aff: ; 1cae8 (7:4ae8)
+ TX_FAR _Route1Text_1cae8
+ TX_SFX_ITEM
+ db "@"
+
+Route1Text_f1b05: ; 1caee (7:4aee)
+ TX_FAR _Route1Text_1caee
+ db "@"
+
+Route1Text_f1b0a: ; 1caf3 (7:4af3)
+ TX_FAR _Route1Text_1caf3
+ db "@"
+
+Func_f1b0f: ; 1caf8 (7:4af8)
+ ld hl, Route1Text_f1b16
+ call PrintText
+ ret
+
+Route1Text_f1b16:
+ TX_FAR _Route1Text2
+ db "@"
+
+Func_f1b1b: ; 1cafd (7:4afd)
+ ld hl, Route1Text_f1b22
+ call PrintText
+ ret
+
+Route1Text_f1b22:
+ TX_FAR _Route1Text3
+ db "@"
diff --git a/scripts/route22.asm b/scripts/route22.asm
index 5c3d2b21..5ea8178f 100755
--- a/scripts/route22.asm
+++ b/scripts/route22.asm
@@ -2,7 +2,7 @@ Route22Script: ; 50eb2 (14:4eb2)
call EnableAutoTextBoxDrawing
ld hl, Route22ScriptPointers
ld a, [W_ROUTE22CURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
Route22ScriptPointers: ; 50ebe (14:4ebe)
dw Route22Script0
@@ -22,16 +22,17 @@ Route22Script7: ; 50ed5 (14:4ed5)
ret
Route22Script_50ed6: ; 50ed6 (14:4ed6)
+ ld a, OPP_SONY1
+ ld [wCurOpponent], a
+ ld a, $2
+ ld [wTrainerNo], a
+ ret
+
+Route22Script_50ee1:
+ ld a, OPP_SONY2
+ ld [wCurOpponent], a
ld a, [W_RIVALSTARTER]
- ld b, a
-.asm_50eda
- ld a, [hli]
- cp b
- jr z, .asm_50ee1
- inc hl
- jr .asm_50eda
-.asm_50ee1
- ld a, [hl]
+ add 7
ld [wTrainerNo], a
ret
@@ -88,9 +89,7 @@ Route22Script0: ; 50f00 (14:4f00)
ld a, [wWalkBikeSurfState]
and a
jr z, .asm_50f4e
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
.asm_50f4e
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
@@ -131,24 +130,29 @@ Route22Script1: ; 50f62 (14:4f62)
ld hl, Route22RivalDefeatedText1
ld de, Route22Text_511bc
call SaveEndBattleTextPointers
- ld a, OPP_SONY1
- ld [wCurOpponent], a
- ld hl, StarterMons_50faf
call Route22Script_50ed6
ld a, $2
ld [W_ROUTE22CURSCRIPT], a
ret
-StarterMons_50faf: ; 50faf (14:4faf)
-; starter the rival picked, rival trainer number
- db STARTER2,$04
- db STARTER3,$05
- db STARTER1,$06
+Route22RivalDefeatedText1: ; 511b7 (14:51b7)
+ TX_FAR _Route22RivalDefeatedText1
+ db "@"
+
+Route22Text_511bc: ; 511bc (14:51bc)
+ TX_FAR _Route22Text_511bc
+ db "@"
Route22Script2: ; 50fb5 (14:4fb5)
ld a, [wIsInBattle]
cp $ff
jp z, Route22Script_50ece
+ ld a, [W_RIVALSTARTER]
+ cp 2
+ jr nz, .asm_50fc9
+ ld a, $1
+ ld [W_RIVALSTARTER], a
+.asm_50fc9
ld a, [wSpriteStateData1 + 9]
and a ; cp SPRITE_FACING_DOWN
jr nz, .notDown
@@ -167,9 +171,7 @@ Route22Script2: ; 50fb5 (14:4fb5)
ld a, $1
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStart
ld a, [wcf0d]
cp $1
@@ -241,13 +243,9 @@ Route22Script_5104e: ; 5104e (14:504e)
ld a, [wWalkBikeSurfState]
and a
jr z, .skipYVisibilityTesta
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
.skipYVisibilityTesta
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateTempo
ld a, $2
ld [H_SPRITEINDEX], a
@@ -287,18 +285,18 @@ Route22Script4: ; 51087 (14:5087)
ld hl, Route22RivalDefeatedText2
ld de, Route22Text_511d0
call SaveEndBattleTextPointers
- ld a, OPP_SONY2
- ld [wCurOpponent], a
- ld hl, StarterMons_510d9
- call Route22Script_50ed6
+ call Route22Script_50ee1
ld a, $5
ld [W_ROUTE22CURSCRIPT], a
ret
-StarterMons_510d9: ; 510d9 (14:50d9)
- db STARTER2,$0a
- db STARTER3,$0b
- db STARTER1,$0c
+Route22RivalDefeatedText2: ; 511cb (14:51cb)
+ TX_FAR _Route22RivalDefeatedText2
+ db "@"
+
+Route22Text_511d0: ; 511d0 (14:51d0)
+ TX_FAR _Route22Text_511d0
+ db "@"
Route22Script5: ; 510df (14:50df)
ld a, [wIsInBattle]
@@ -326,9 +324,7 @@ Route22Script5: ; 510df (14:50df)
ld a, $2
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStartAndTempo
ld a, [wcf0d]
cp $1
@@ -384,62 +380,15 @@ Route22TextPointers: ; 51175 (14:5175)
Route22Text1: ; 5117b (14:517b)
TX_ASM
- CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
- jr z, .asm_5118b
- ld hl, Route22RivalAfterBattleText1
- call PrintText
- jr .asm_51191
-.asm_5118b
- ld hl, Route22RivalBeforeBattleText1
- call PrintText
-.asm_51191
+ callba Func_f1b27
jp TextScriptEnd
Route22Text2: ; 51194 (14:5194)
TX_ASM
- CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
- jr z, .asm_511a4
- ld hl, Route22RivalAfterBattleText2
- call PrintText
- jr .asm_511aa
-.asm_511a4
- ld hl, Route22RivalBeforeBattleText2
- call PrintText
-.asm_511aa
+ callba Func_f1b47
jp TextScriptEnd
-Route22RivalBeforeBattleText1: ; 511ad (14:51ad)
- TX_FAR _Route22RivalBeforeBattleText1
- db "@"
-
-Route22RivalAfterBattleText1: ; 511b2 (14:51b2)
- TX_FAR _Route22RivalAfterBattleText1
- db "@"
-
-Route22RivalDefeatedText1: ; 511b7 (14:51b7)
- TX_FAR _Route22RivalDefeatedText1
- db "@"
-
-Route22Text_511bc: ; 511bc (14:51bc)
- TX_FAR _Route22Text_511bc
- db "@"
-
-Route22RivalBeforeBattleText2: ; 511c1 (14:51c1)
- TX_FAR _Route22RivalBeforeBattleText2
- db "@"
-
-Route22RivalAfterBattleText2: ; 511c6 (14:51c6)
- TX_FAR _Route22RivalAfterBattleText2
- db "@"
-
-Route22RivalDefeatedText2: ; 511cb (14:51cb)
- TX_FAR _Route22RivalDefeatedText2
- db "@"
-
-Route22Text_511d0: ; 511d0 (14:51d0)
- TX_FAR _Route22Text_511d0
- db "@"
-
Route22FrontGateText: ; 511d5 (14:51d5)
- TX_FAR _Route22FrontGateText
- db "@"
+ TX_ASM
+ callba Func_f1b67
+ jp TextScriptEnd
diff --git a/scripts/route22_2.asm b/scripts/route22_2.asm
new file mode 100755
index 00000000..89ecdcf3
--- /dev/null
+++ b/scripts/route22_2.asm
@@ -0,0 +1,50 @@
+Func_f1b27:
+ CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
+ jr z, .asm_5118b
+ ld hl, Route22RivalAfterBattleText1
+ call PrintText
+ jr .asm_51191
+
+.asm_5118b
+ ld hl, Route22RivalBeforeBattleText1
+ call PrintText
+.asm_51191
+ ret
+
+Route22RivalBeforeBattleText1: ; 511ad (14:51ad)
+ TX_FAR _Route22RivalBeforeBattleText1
+ db "@"
+
+Route22RivalAfterBattleText1: ; 511b2 (14:51b2)
+ TX_FAR _Route22RivalAfterBattleText1
+ db "@"
+
+Func_f1b47:
+ CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
+ jr z, .asm_511a4
+ ld hl, Route22RivalAfterBattleText2
+ call PrintText
+ jr .asm_511aa
+
+.asm_511a4
+ ld hl, Route22RivalBeforeBattleText2
+ call PrintText
+.asm_511aa
+ ret
+
+Route22RivalBeforeBattleText2: ; 511c1 (14:51c1)
+ TX_FAR _Route22RivalBeforeBattleText2
+ db "@"
+
+Route22RivalAfterBattleText2: ; 511c6 (14:51c6)
+ TX_FAR _Route22RivalAfterBattleText2
+ db "@"
+
+Func_f1b67:
+ ld hl, Route22FrontGateText_3c
+ call PrintText
+ ret
+
+Route22FrontGateText_3c:
+ TX_FAR _Route22FrontGateText
+ db "@"
diff --git a/scripts/route22gate.asm b/scripts/route22gate.asm
index f0b5b92d..5fdd70c8 100755
--- a/scripts/route22gate.asm
+++ b/scripts/route22gate.asm
@@ -2,7 +2,7 @@ Route22GateScript: ; 1e683 (7:6683)
call EnableAutoTextBoxDrawing
ld hl, Route22GateScriptPointers
ld a, [W_ROUTE22GATECURSCRIPT]
- call CallFunctionInTable
+ call JumpTable
ld a, [wYCoord]
cp $4
ld a, ROUTE_23
diff --git a/scripts/route23.asm b/scripts/route23.asm
index 6fc0eef1..f324963b 100755
--- a/scripts/route23.asm
+++ b/scripts/route23.asm
@@ -3,7 +3,7 @@ Route23Script: ; 511da (14:51da)
call EnableAutoTextBoxDrawing
ld hl, Route23ScriptPointers
ld a, [W_ROUTE23CURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
Route23Script_511e9: ; 511e9 (14:51e9)
ld hl, wd126
diff --git a/scripts/route24.asm b/scripts/route24.asm
index 61df4377..15fe78b8 100755
--- a/scripts/route24.asm
+++ b/scripts/route24.asm
@@ -1,4 +1,4 @@
-Route24Script: ; 513ad (14:53ad)
+Route24Script: ; 51366 (14:5366)
call EnableAutoTextBoxDrawing
ld hl, Route24TrainerHeaders
ld de, Route24ScriptPointers
@@ -84,6 +84,7 @@ Route24TextPointers: ; 5144b (14:544b)
dw Route24Text6
dw Route24Text7
dw PickUpItemText
+ dw Route24Text8
Route24TrainerHeaders: ; 5145b (14:545b)
Route24TrainerHeader0: ; 5145b (14:545b)
@@ -191,7 +192,9 @@ Route24Text_51510: ; 51510 (14:5510)
Route24Text_5151a: ; 5151a (14:551a)
TX_FAR _Route24Text_5151a
- db $0B, $6, "@"
+ TX_SFX_KEY_ITEM
+ TX_BUTTON_SOUND
+ db "@"
Route24Text_51521: ; 51521 (14:5521)
TX_FAR _Route24Text_51521
@@ -316,3 +319,60 @@ Route24EndBattleText6: ; 515c1 (14:55c1)
Route24AfterBattleText6: ; 515c6 (14:55c6)
TX_FAR _Route24AfterBattleText6
db "@"
+
+Route24Text8:
+ TX_ASM
+ CheckEvent EVENT_54F
+ jr nz, .asm_515d5
+ ld hl, Route24Text_515de
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_515d0
+ ld a, CHARMANDER
+ ld [wd11e], a
+ ld [wcf91], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ lb bc, CHARMANDER, 10
+ call GivePokemon
+ jp nc, TextScriptEnd
+ ld a, [wAddedToParty]
+ and a
+ call z, WaitForTextScrollButtonPress
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, Route24Text_515e3
+ call PrintText
+ SetEvent EVENT_54F
+ jp TextScriptEnd
+
+.asm_515d0
+ ld hl, Route24Text_515e9
+ jr .asm_515d8
+
+.asm_515d5
+ ld hl, Route24Text_515ee
+.asm_515d8
+ call PrintText
+ jp TextScriptEnd
+
+Route24Text_515de:
+ TX_FAR _Route24DamianText1
+ db "@"
+
+Route24Text_515e3:
+ TX_FAR _Route24DamianText2
+ db $d
+ db "@"
+
+Route24Text_515e9:
+ TX_FAR _Route24DamianText3
+ db "@"
+
+Route24Text_515ee:
+ TX_FAR _Route24DamianText4
+ db "@"
+
diff --git a/scripts/route25.asm b/scripts/route25.asm
index 49580ba6..20dcc890 100755
--- a/scripts/route25.asm
+++ b/scripts/route25.asm
@@ -1,14 +1,21 @@
Route25Script: ; 515cb (14:55cb)
- call Route25Script_515e1
call EnableAutoTextBoxDrawing
ld hl, Route25TrainerHeaders
ld de, Route25ScriptPointers
ld a, [W_ROUTE25CURSCRIPT]
call ExecuteCurMapScriptInTable
ld [W_ROUTE25CURSCRIPT], a
+ call Route25Script_515e1
ret
Route25Script_515e1: ; 515e1 (14:55e1)
+ ld hl, wPreventBlackout
+ res 2, [hl]
+ res 3, [hl]
+ res 4, [hl]
+ res 7, [hl]
+ xor a
+ ld [W_BILLSHOUSECURSCRIPT], a
ld hl, wd126
bit 6, [hl]
res 6, [hl]
@@ -16,14 +23,16 @@ Route25Script_515e1: ; 515e1 (14:55e1)
CheckEventHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING
ret nz
CheckEventReuseHL EVENT_MET_BILL_2
- jr nz, .asm_515ff
+ jr nz, .asm_51638
ResetEventReuseHL EVENT_BILL_SAID_USE_CELL_SEPARATOR
ld a, HS_BILL_POKEMON
ld [wMissableObjectIndex], a
- predef_jump ShowObject
-.asm_515ff
+ predef ShowObject
+ jr .asm_5165c
+
+.asm_51638
CheckEventAfterBranchReuseHL EVENT_GOT_SS_TICKET, EVENT_MET_BILL_2
- ret z
+ jr z, .asm_5165c
SetEventReuseHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING
ld a, HS_NUGGET_BRIDGE_GUY
ld [wMissableObjectIndex], a
@@ -33,7 +42,9 @@ Route25Script_515e1: ; 515e1 (14:55e1)
predef HideObject
ld a, HS_BILL_2
ld [wMissableObjectIndex], a
- predef_jump ShowObject
+ predef ShowObject
+.asm_5165c
+ ret
Route25ScriptPointers: ; 51622 (14:5622)
dw CheckFightingMapTrainers
diff --git a/scripts/route5.asm b/scripts/route5.asm
index 1fad3939..1f42bc4e 100755
--- a/scripts/route5.asm
+++ b/scripts/route5.asm
@@ -1,9 +1,9 @@
-Route5Script: ; 556b2 (15:56b2)
+Route5Script: ; 556c6 (15:56c6)
jp EnableAutoTextBoxDrawing
-Route5TextPointers: ; 556b5 (15:56b5)
+Route5TextPointers: ; 556c9 (15:56c9)
dw Route5Text1
-Route5Text1: ; 556b7 (15:56b7)
+Route5Text1: ; 556cb (15:56cb)
TX_FAR _Route5Text1
db "@"
diff --git a/scripts/route5gate.asm b/scripts/route5gate.asm
index 35f3a020..6442fd83 100755
--- a/scripts/route5gate.asm
+++ b/scripts/route5gate.asm
@@ -2,7 +2,7 @@ Route5GateScript: ; 1df33 (7:5f33)
call EnableAutoTextBoxDrawing
ld a, [W_ROUTE5GATECURSCRIPT]
ld hl, Route5GateScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
Route5GateScriptPointers: ; 1df3f (7:5f3f)
dw Route5GateScript0
diff --git a/scripts/route6.asm b/scripts/route6.asm
index e748fed1..8ef32a42 100755
--- a/scripts/route6.asm
+++ b/scripts/route6.asm
@@ -36,7 +36,7 @@ Route6TrainerHeader1: ; 590e3 (16:50e3)
db ($0 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_ROUTE_6_TRAINER_1
dw Route6BattleText2 ; TextBeforeBattle
- dw Route6AfterBattleText1 ; TextAfterBattle
+ dw Route6AfterBattleText2 ; TextAfterBattle
dw Route6EndBattleText2 ; TextEndBattle
dw Route6EndBattleText2 ; TextEndBattle
@@ -110,6 +110,10 @@ Route6EndBattleText2: ; 59148 (16:5148)
TX_FAR _Route6EndBattleText2
db "@"
+Route6AfterBattleText2:
+ TX_FAR _Route6AfterBattleText2
+ db "@"
+
Route6Text3: ; 5914d (16:514d)
TX_ASM
ld hl, Route6TrainerHeader2
diff --git a/scripts/route6gate.asm b/scripts/route6gate.asm
index a4b6149c..dd179e28 100755
--- a/scripts/route6gate.asm
+++ b/scripts/route6gate.asm
@@ -2,7 +2,7 @@ Route6GateScript: ; 1e03d (7:603d)
call EnableAutoTextBoxDrawing
ld hl, Route6GateScriptPointers
ld a, [W_ROUTE6GATECURSCRIPT]
- call CallFunctionInTable
+ call JumpTable
ret
Route6GateScriptPointers: ; 1e04a (7:604a)
diff --git a/scripts/route7.asm b/scripts/route7.asm
index 484fc539..55183d16 100755
--- a/scripts/route7.asm
+++ b/scripts/route7.asm
@@ -1,9 +1,10 @@
-Route7Script: ; 48152 (12:4152)
- jp EnableAutoTextBoxDrawing
+Route7Script: ; 480eb (12:40eb)
+ call EnableAutoTextBoxDrawing
+ ret
-Route7TextPointers: ; 48155 (12:4155)
+Route7TextPointers: ; 480ef (12:40ef)
dw Route7Text1
-Route7Text1: ; 48157 (12:4157)
+Route7Text1: ; 480f1 (12:40f1)
TX_FAR _Route7Text1
db "@"
diff --git a/scripts/route7gate.asm b/scripts/route7gate.asm
index b55f813c..7f87b78c 100755
--- a/scripts/route7gate.asm
+++ b/scripts/route7gate.asm
@@ -2,7 +2,7 @@ Route7GateScript: ; 1e100 (7:6100)
call EnableAutoTextBoxDrawing
ld a, [W_ROUTE7GATECURSCRIPT]
ld hl, Route7GateScriptPointers
- call CallFunctionInTable
+ call JumpTable
ret
Route7GateScriptPointers: ; 1e10d (7:610d)
diff --git a/scripts/route8gate.asm b/scripts/route8gate.asm
index 96bfa875..5a26b424 100755
--- a/scripts/route8gate.asm
+++ b/scripts/route8gate.asm
@@ -2,7 +2,7 @@ Route8GateScript: ; 1e1c7 (7:61c7)
call EnableAutoTextBoxDrawing
ld hl, Route8GateScriptPointers
ld a, [W_ROUTE8GATECURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
Route8GateScriptPointers: ; 1e1d3 (7:61d3)
dw Route8GateScript0
@@ -27,7 +27,7 @@ Route8GateScript0: ; 1e1ee (7:61ee)
ld hl, CoordsData_1e22c
call ArePlayerCoordsInArray
ret nc
- ld a, PLAYER_DIR_LEFT
+ ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
xor a
ld [hJoyHeld], a
diff --git a/scripts/route9.asm b/scripts/route9.asm
index 9d26ee96..5de98173 100755
--- a/scripts/route9.asm
+++ b/scripts/route9.asm
@@ -14,7 +14,7 @@ Route9ScriptPointers: ; 556cf (15:56cf)
Route9TextPointers: ; 556d5 (15:56d5)
dw Route9Text1
- dw Route9Text2
+ dw Route9TextAJ
dw Route9Text3
dw Route9Text4
dw Route9Text5
@@ -39,10 +39,10 @@ Route9TrainerHeader2: ; 556f7 (15:56f7)
dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_2
db ($2 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_2
- dw Route9BattleText2 ; TextBeforeBattle
- dw Route9AfterBattleText2 ; TextAfterBattle
- dw Route9EndBattleText2 ; TextEndBattle
- dw Route9EndBattleText2 ; TextEndBattle
+ dw Route9BattleTextAJ ; TextBeforeBattle
+ dw Route9AfterBattleTextAJ ; TextAfterBattle
+ dw Route9EndBattleTextAJ ; TextEndBattle
+ dw Route9EndBattleTextAJ ; TextEndBattle
Route9TrainerHeader3: ; 55703 (15:5703)
dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_3
@@ -114,7 +114,7 @@ Route9Text1: ; 55758 (15:5758)
ld hl, Route9TrainerHeader0
jr Route9TalkToTrainer
-Route9Text2: ; 5575e (15:575e)
+Route9TextAJ: ; 5575e (15:575e)
TX_ASM
ld hl, Route9TrainerHeader2
jr Route9TalkToTrainer
@@ -168,16 +168,16 @@ Route9AfterBattleText1: ; 5579c (15:579c)
TX_FAR _Route9AfterBattleText1
db "@"
-Route9BattleText2: ; 557a1 (15:57a1)
- TX_FAR _Route9BattleText2
+Route9BattleTextAJ: ; 557a1 (15:57a1)
+ TX_FAR _Route9BattleTextAJ
db "@"
-Route9EndBattleText2: ; 557a6 (15:57a6)
- TX_FAR _Route9EndBattleText2
+Route9EndBattleTextAJ: ; 557a6 (15:57a6)
+ TX_FAR _Route9EndBattleTextAJ
db "@"
-Route9AfterBattleText2: ; 557ab (15:57ab)
- TX_FAR _Route9AfterBattleText2
+Route9AfterBattleTextAJ: ; 557ab (15:57ab)
+ TX_FAR _Route9AfterBattleTextAJ
db "@"
Route9BattleText3: ; 557b0 (15:57b0)
diff --git a/scripts/safarizoneentrance.asm b/scripts/safarizoneentrance.asm
index 2f8ff34b..a0a0ffda 100755
--- a/scripts/safarizoneentrance.asm
+++ b/scripts/safarizoneentrance.asm
@@ -2,7 +2,7 @@ SafariZoneEntranceScript: ; 751cd (1d:51cd)
call EnableAutoTextBoxDrawing
ld hl, SafariZoneEntranceScriptPointers
ld a, [wSafariZoneEntranceCurScript]
- jp CallFunctionInTable
+ jp JumpTable
SafariZoneEntranceScriptPointers: ; 751d9 (1d:51d9)
dw .SafariZoneEntranceScript0
diff --git a/scripts/school.asm b/scripts/school.asm
index 57eb58c8..6ee0d36e 100755
--- a/scripts/school.asm
+++ b/scripts/school.asm
@@ -1,14 +1,22 @@
SchoolScript: ; 1d54c (7:554c)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
SchoolTextPointers: ; 1d54f (7:554f)
dw SchoolText1
dw SchoolText2
+ dw SchoolText3
SchoolText1: ; 1d553 (7:5553)
TX_FAR _SchoolText1
db "@"
SchoolText2: ; 1d558 (7:5558)
- TX_FAR _SchoolText2
- db "@"
+ TX_ASM
+ callba Func_f1c0f
+ jp TextScriptEnd
+
+SchoolText3: ; 1d558 (7:5558)
+ TX_ASM
+ callba Func_f1c03
+ jp TextScriptEnd
diff --git a/scripts/school2.asm b/scripts/school2.asm
new file mode 100755
index 00000000..677a43ec
--- /dev/null
+++ b/scripts/school2.asm
@@ -0,0 +1,17 @@
+Func_f1c03:
+ ld hl, SchoolText_f1c0a
+ call PrintText
+ ret
+
+SchoolText_f1c0a:
+ TX_FAR _SchoolText3
+ db "@"
+
+Func_f1c0f:
+ ld hl, SchoolText_f1c16
+ call PrintText
+ ret
+
+SchoolText_f1c16:
+ TX_FAR _SchoolText2
+ db "@"
diff --git a/scripts/seafoamislands4.asm b/scripts/seafoamislands4.asm
index e3234b0a..56ccd2e3 100755
--- a/scripts/seafoamislands4.asm
+++ b/scripts/seafoamislands4.asm
@@ -42,7 +42,7 @@ SeafoamIslands4Script: ; 4658d (11:658d)
.asm_465ed
ld hl, SeafoamIslands4ScriptPointers
ld a, [wSeafoamIslands4CurScript]
- jp CallFunctionInTable
+ jp JumpTable
Seafoam4HolesCoords: ; 465f6 (11:65f6)
db $10,$03
diff --git a/scripts/seafoamislands5.asm b/scripts/seafoamislands5.asm
index 98c27666..f8b7aed7 100755
--- a/scripts/seafoamislands5.asm
+++ b/scripts/seafoamislands5.asm
@@ -2,7 +2,7 @@ SeafoamIslands5Script: ; 46799 (11:6799)
call EnableAutoTextBoxDrawing
ld a, [wSeafoamIslands5CurScript]
ld hl, SeafoamIslands5ScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
SeafoamIslands5Script_467a5: ; 467a5 (11:67a5)
xor a
diff --git a/scripts/silphco11_2.asm b/scripts/silphco11_2.asm
new file mode 100755
index 00000000..e7b59757
--- /dev/null
+++ b/scripts/silphco11_2.asm
@@ -0,0 +1,76 @@
+Func_f25a0:
+ ld hl, MissableObjects_f25ce
+.asm_f25a3
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_f25b4
+ push hl
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ pop hl
+ jr .asm_f25a3
+
+.asm_f25b4
+ ld hl, MissableObjects_f25c7
+.asm_f25b7
+ ld a, [hli]
+ cp $ff
+ ret z
+ push hl
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ pop hl
+ jr .asm_f25b7
+
+MissableObjects_f25c7:
+ 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
+
+MissableObjects_f25ce
+ 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 HS_MAP_F4_1
+ db $ff \ No newline at end of file
diff --git a/scripts/ssanne2.asm b/scripts/ssanne2.asm
index eea27ec9..7bdafe2c 100755
--- a/scripts/ssanne2.asm
+++ b/scripts/ssanne2.asm
@@ -2,7 +2,7 @@ SSAnne2Script: ; 6139f (18:539f)
call EnableAutoTextBoxDrawing
ld hl, SSAnne2ScriptPointers
ld a, [W_SSANNE2CURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
SSAnne2Script_613ab: ; 613ab (18:53ab)
xor a
diff --git a/scripts/ssanne9_2.asm b/scripts/ssanne9_2.asm
new file mode 100755
index 00000000..f856221c
--- /dev/null
+++ b/scripts/ssanne9_2.asm
@@ -0,0 +1,35 @@
+Func_f2570:
+ ld hl, SSAnne9Text_f2577
+ call PrintText
+ ret
+
+SSAnne9Text_f2577:
+ TX_FAR _SSAnne9Text_61c1f
+ db "@"
+
+Func_f257c:
+ ld hl, SSAnne9Text_f2583
+ call PrintText
+ ret
+
+SSAnne9Text_f2583:
+ TX_FAR _SSAnne9Text_61c2e
+ db "@"
+
+Func_f2588:
+ ld hl, SSAnne9Text_f258f
+ call PrintText
+ ret
+
+SSAnne9Text_f258f:
+ TX_FAR _SSAnne9Text_61c3d
+ db "@"
+
+Func_f2594:
+ ld hl, SSAnne9Text_f259b
+ call PrintText
+ ret
+
+SSAnne9Text_f259b:
+ TX_FAR _SSAnne9Text_61c4c
+ db "@"
diff --git a/scripts/vermilioncity.asm b/scripts/vermilioncity.asm
index 67e3cddd..a8fc8ce7 100755
--- a/scripts/vermilioncity.asm
+++ b/scripts/vermilioncity.asm
@@ -1,5 +1,7 @@
VermilionCityScript: ; 197a1 (6:57a1)
call EnableAutoTextBoxDrawing
+ ld hl, wPreventBlackout
+ res 7, [hl]
ld hl, wd126
bit 6, [hl]
res 6, [hl]
@@ -11,11 +13,24 @@ VermilionCityScript: ; 197a1 (6:57a1)
call nz, VermilionCityScript_197c0
ld hl, VermilionCityScriptPointers
ld a, [W_VERMILIONCITYCURSCRIPT]
- jp CallFunctionInTable
+ call JumpTable
+ call VermilionCityScript_19869
+ ret
+
+VermilionCityScript_19869:
+ CheckEventHL EVENT_152
+ ret nz
+ CheckEventReuseHL EVENT_GOT_BIKE_VOUCHER
+ ret z
+ SetEventReuseHL EVENT_152
+ ret
VermilionCityScript_197c0: ; 197c0 (6:57c0)
call Random
- ld a, [$ffd4]
+ ld a, [hRandomAdd]
+ ld b, a
+ ld a, [hRandomSub]
+ adc b
and $e
ld [wFirstLockTrashCanIndex], a
ret
@@ -40,10 +55,10 @@ VermilionCityScriptPointers: ; 197dc (6:57dc)
VermilionCityScript0: ; 197e6 (6:57e6)
ld a, [wSpriteStateData1 + 9]
and a ; cp SPRITE_FACING_DOWN
- ret nz
+ jr nz, .asm_198de
ld hl, CoordsData_19823
call ArePlayerCoordsInArray
- ret nc
+ jr nc, .asm_198de
xor a
ld [hJoyHeld], a
ld [wcf0d], a
@@ -67,6 +82,9 @@ VermilionCityScript0: ; 197e6 (6:57e6)
ld [W_VERMILIONCITYCURSCRIPT], a
ret
+.asm_198de
+ ret
+
CoordsData_19823: ; 19823 (6:5823)
db $1e,$12
db $ff
@@ -122,11 +140,12 @@ VermilionCityTextPointers: ; 1986f (6:586f)
dw VermilionCityText6
dw VermilionCityText7
dw VermilionCityText8
+ dw VermilionCityText9
dw MartSignText
dw PokeCenterSignText
- dw VermilionCityText11
dw VermilionCityText12
dw VermilionCityText13
+ dw VermilionCityText14
VermilionCityText1: ; 19889 (6:5889)
TX_FAR _VermilionCityText1
@@ -225,33 +244,43 @@ VermilionCityText5: ; 19922 (6:5922)
ld a, MACHOP
call PlayCry
call WaitForSoundToFinish
- ld hl, VermilionCityText14
+ ld hl, VermilionCityText15
ret
-VermilionCityText14: ; 19933 (6:5933)
- TX_FAR _VermilionCityText14
+VermilionCityText15: ; 19933 (6:5933)
+ TX_FAR _VermilionCityText15
db "@"
VermilionCityText6: ; 19938 (6:5938)
TX_FAR _VermilionCityText6
db "@"
-VermilionCityText7: ; 1993d (6:593d)
- TX_FAR _VermilionCityText7
- db "@"
+VermilionCityText8: ; 1993d (6:593d)
+ TX_ASM
+ callba Func_f1a8a
+ jp TextScriptEnd
-VermilionCityText8: ; 19942 (6:5942)
- TX_FAR _VermilionCityText8
- db "@"
+VermilionCityText9: ; 19942 (6:5942)
+ TX_ASM
+ callba Func_f1a96
+ jp TextScriptEnd
-VermilionCityText11: ; 19947 (6:5947)
- TX_FAR _VermilionCityText11
- db "@"
+VermilionCityText12:
+ TX_ASM
+ callba Func_f1aa2
+ jp TextScriptEnd
-VermilionCityText12: ; 1994c (6:594c)
- TX_FAR _VermilionCityText12
- db "@"
+VermilionCityText13: ; 19947 (6:5947)
+ TX_ASM
+ callba Func_f1aae
+ jp TextScriptEnd
-VermilionCityText13: ; 19951 (6:5951)
- TX_FAR _VermilionCityText13
- db "@"
+VermilionCityText14: ; 1994c (6:594c)
+ TX_ASM
+ callba Func_f1aba
+ jp TextScriptEnd
+
+VermilionCityText7: ; 19951 (6:5951)
+ TX_ASM
+ callba Func_f1a0f
+ jp TextScriptEnd
diff --git a/scripts/vermilioncity2.asm b/scripts/vermilioncity2.asm
new file mode 100755
index 00000000..eb7ea37a
--- /dev/null
+++ b/scripts/vermilioncity2.asm
@@ -0,0 +1,111 @@
+Func_f1a0f:
+ CheckEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY
+ jr nz, .asm_f1a69
+ ld a, [wBeatGymFlags]
+ bit 2, a ; THUNDERBADGE
+ jr nz, .asm_f1a24
+ ld hl, OfficerJennyText1
+ call PrintText
+ ret
+
+.asm_f1a24
+ ld hl, OfficerJennyText2
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_f1a62
+ ld a, SQUIRTLE
+ ld [wd11e], a
+ ld [wcf91], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ lb bc, SQUIRTLE, 10
+ call GivePokemon
+ ret nc
+ ld a, [wAddedToParty]
+ and a
+ call z, WaitForTextScrollButtonPress
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, OfficerJennyText3
+ call PrintText
+ SetEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY
+ ret
+
+.asm_f1a62
+ ld hl, OfficerJennyText4
+ call PrintText
+ ret
+
+.asm_f1a69
+ ld hl, OfficerJennyText5
+ call PrintText
+ ret
+
+OfficerJennyText1:
+ TX_FAR _OfficerJennyText1
+ db "@"
+
+OfficerJennyText2:
+ TX_FAR _OfficerJennyText2
+ db "@"
+
+OfficerJennyText3:
+ TX_FAR _OfficerJennyText3
+ db $d
+ db "@"
+
+OfficerJennyText4:
+ TX_FAR _OfficerJennyText4
+ db "@"
+
+OfficerJennyText5:
+ TX_FAR _OfficerJennyText5
+ db "@"
+
+Func_f1a8a:
+ ld hl, VermilionCityText_f1a91
+ call PrintText
+ ret
+
+VermilionCityText_f1a91:
+ TX_FAR _VermilionCityText8
+ db "@"
+
+Func_f1a96:
+ ld hl, VermilionCityText_f1a9d
+ call PrintText
+ ret
+
+VermilionCityText_f1a9d:
+ TX_FAR _VermilionCityText9
+ db "@"
+
+Func_f1aa2:
+ ld hl, VermilionCityText_f1aa9
+ call PrintText
+ ret
+
+VermilionCityText_f1aa9:
+ TX_FAR _VermilionCityText12
+ db "@"
+
+Func_f1aae:
+ ld hl, VermilionCityText_f1ab5
+ call PrintText
+ ret
+
+VermilionCityText_f1ab5:
+ TX_FAR _VermilionCityText13
+ db "@"
+
+Func_f1aba:
+ ld hl, VermilionCityText_f1ac1
+ call PrintText
+ ret
+
+VermilionCityText_f1ac1:
+ TX_FAR _VermilionCityText14
+ db "@"
diff --git a/scripts/viridiancity.asm b/scripts/viridiancity.asm
index ece2c4a1..c20285bc 100755
--- a/scripts/viridiancity.asm
+++ b/scripts/viridiancity.asm
@@ -1,119 +1,160 @@
-ViridianCityScript: ; 18ff1 (6:4ff1)
+ViridianCityScript: ; 1902a (6:502a)
call EnableAutoTextBoxDrawing
ld hl, ViridianCityScriptPointers
ld a, [W_VIRIDIANCITYCURSCRIPT]
- jp CallFunctionInTable
+ call JumpTable
+ ret
-ViridianCityScriptPointers: ; 18ffd (6:4ffd)
- dw ViridianCityScript0
- dw ViridianCityScript1
- dw ViridianCityScript2
- dw ViridianCityScript3
+ViridianCityScriptPointers: ; 19037 (6:5037)
+ dw ViridianCityScript0 ; 1904d
+ dw ViridianCityScript1 ; 19054
+ dw ViridianCityScript2 ; 19057
+ dw ViridianCityScript3 ; 190ca
+ dw ViridianCityScript4 ; 19104
+ dw ViridianCityScript5 ; 1913f
+ dw ViridianCityScript6 ; 1909d
+ dw ViridianCityScript7 ; 19191
+ dw ViridianCityScript8 ; 191a7
+ dw ViridianCityScript9 ; 191cf
+ dw ViridianCityScript10 ; 191f9
+
+ViridianCityScript0:
+ call ViridianCityScript_1905b
+ call ViridianCityScript_190ab
+ ret
-ViridianCityScript0: ; 19005 (6:5005)
- call ViridianCityScript_1900b
- jp ViridianCityScript_1903d
+ViridianCityScript1: ; 19054
+ call ViridianCityScript_19162
+ViridianCityScript2: ; 19057
+ call ViridianCityScript_1905b
+ ret
-ViridianCityScript_1900b: ; 1900b (6:500b)
+ViridianCityScript_1905b:
CheckEvent EVENT_VIRIDIAN_GYM_OPEN
ret nz
ld a, [wObtainedBadges]
- cp %01111111
- jr nz, .asm_1901e
+ cp $7f ; all but Earthbadge
+ jr nz, .asm_1906e
SetEvent EVENT_VIRIDIAN_GYM_OPEN
ret
-.asm_1901e
+
+.asm_1906e
ld a, [wYCoord]
- cp $8
+ cp 8
ret nz
ld a, [wXCoord]
- cp $20
+ cp 32
ret nz
- ld a, $e
+ ld a, $f
ld [hSpriteIndexOrTextID], a
call DisplayTextID
+ call StartSimulatingJoypadStates
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_DOWN
+ ld [wSimulatedJoypadStatesEnd], a
xor a
+ ld [wSpriteStateData1 + 9], a
+ ld [wJoyIgnore], a
ld [hJoyHeld], a
- call ViridianCityScript_190cf
- ld a, $3
+ ld a, $6
ld [W_VIRIDIANCITYCURSCRIPT], a
ret
-ViridianCityScript_1903d: ; 1903d (6:503d)
- CheckEvent EVENT_GOT_POKEDEX
+ViridianCityScript6: ; 1909d
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
ret nz
+ call Delay3
+ ld a, $2
+ ld [W_VIRIDIANCITYCURSCRIPT], a
+ ret
+
+ViridianCityScript_190ab:
ld a, [wYCoord]
- cp $9
+ cp 9
ret nz
ld a, [wXCoord]
- cp $13
+ cp 19
ret nz
ld a, $5
ld [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [hJoyHeld], a
- call ViridianCityScript_190cf
- ld a, $3
+ call ViridianCityScript_1914d
+ ld a, $5
ld [W_VIRIDIANCITYCURSCRIPT], a
ret
-ViridianCityScript1: ; 19062 (6:5062)
- ld a, [wSpriteStateData1 + $34]
- ld [$ffeb], a
- ld a, [wSpriteStateData1 + $36]
- ld [$ffec], a
- ld a, [wSpriteStateData2 + $34]
- ld [$ffed], a
- ld a, [wSpriteStateData2 + $35]
- ld [$ffee], a
+ViridianCityScript3: ; 190ca
+ call ViridianCityScript_190ef
+ call ViridianCityScript_190db
+ ResetEvent EVENT_02F
+ ld a, $4
+ ld [W_VIRIDIANCITYCURSCRIPT], a
+ ret
+
+ViridianCityScript_190db:
xor a
ld [wListScrollOffset], a
-
- ; set up battle for Old Man
- ld a, $1
+ ld a, OLD_MAN_BATTLE
ld [wBattleType], a
ld a, 5
ld [wCurEnemyLVL], a
- ld a, WEEDLE
+ ld a, RATTATA
ld [wCurOpponent], a
- ld a, $2
- ld [W_VIRIDIANCITYCURSCRIPT], a
ret
-ViridianCityScript2: ; 1908f (6:508f)
- ld a, [$ffeb]
- ld [wSpriteStateData1 + $34], a
- ld a, [$ffec]
- ld [wSpriteStateData1 + $36], a
- ld a, [$ffed]
- ld [wSpriteStateData2 + $34], a
- ld a, [$ffee]
- ld [wSpriteStateData2 + $35], a
+ViridianCityScript_190ef:
+ ld a, [wSpriteStateData1 + 3 * $10 + 4]
+ ld [$ffeb], a
+ ld a, [wSpriteStateData1 + 3 * $10 + 6]
+ ld [$ffec], a
+ ld a, [wSpriteStateData2 + 3 * $10 + 4]
+ ld [$ffed], a
+ ld a, [wSpriteStateData2 + 3 * $10 + 5]
+ ld [$ffee], a
+ ret
+
+ViridianCityScript4: ; 19104
+ call ViridianCityScript_1912a
call UpdateSprites
call Delay3
+ SetEvent EVENT_02E
xor a
ld [wJoyIgnore], a
- ld a, $f
+ ld a, $10
ld [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [wBattleType], a
ld [wJoyIgnore], a
- ld a, $0
+ ld a, $2
ld [W_VIRIDIANCITYCURSCRIPT], a
ret
-ViridianCityScript3: ; 190c1 (6:50c1)
+ViridianCityScript_1912a:
+ ld a, [$ffeb]
+ ld [wSpriteStateData1 + 3 * $10 + 4], a
+ ld a, [$ffec]
+ ld [wSpriteStateData1 + 3 * $10 + 6], a
+ ld a, [$ffed]
+ ld [wSpriteStateData2 + 3 * $10 + 4], a
+ ld a, [$ffee]
+ ld [wSpriteStateData2 + 3 * $10 + 5], a
+ ret
+
+ViridianCityScript5: ; 1913f
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
call Delay3
- ld a, 0
+ ld a, $0
ld [W_VIRIDIANCITYCURSCRIPT], a
ret
-ViridianCityScript_190cf: ; 190cf (6:50cf)
+ViridianCityScript_1914d:
call StartSimulatingJoypadStates
ld a, $1
ld [wSimulatedJoypadStatesIndex], a
@@ -124,203 +165,200 @@ ViridianCityScript_190cf: ; 190cf (6:50cf)
ld [wJoyIgnore], a
ret
-ViridianCityTextPointers: ; 190e4 (6:50e4)
- dw ViridianCityText1
- dw ViridianCityText2
- dw ViridianCityText3
- dw ViridianCityText4
- dw ViridianCityText5
- dw ViridianCityText6
- dw ViridianCityText7
- dw ViridianCityText8
- dw ViridianCityText9
- dw ViridianCityText10
- dw MartSignText
- dw PokeCenterSignText
- dw ViridianCityText13
- dw ViridianCityText14
- dw ViridianCityText15
-
-ViridianCityText1: ; 19102 (6:5102)
- TX_FAR _ViridianCityText1
- db "@"
+ViridianCityScript_19162:
+ CheckEvent EVENT_02D
+ ret nz
+ ld a, [wYCoord]
+ cp 9
+ ret nz
+ ld a, [wXCoord]
+ cp 19
+ ret nz
+ ld a, $8
+ ld [hSpriteIndexOrTextID], a
+ ld a, SPRITE_FACING_RIGHT
+ ld [hSpriteFacingDirection], a
+ call SetSpriteFacingDirectionAndDelay
+ ld a, $8
+ ld [wSpriteStateData1 + 9], a
+ ld a, $8
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT
+ ld [wJoyIgnore], a
+ ret
-ViridianCityText2: ; 19107 (6:5107)
- TX_ASM
- ld a, [wObtainedBadges]
- cp %01111111
- ld hl, ViridianCityText_19127
- jr z, .asm_ae9fe
- CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
- jr nz, .asm_ae9fe
- ld hl, ViridianCityText_19122
-.asm_ae9fe
- call PrintText
- jp TextScriptEnd
+ViridianCityScript7: ; 19191
+ call ViridianCityScript_190ef
+ call ViridianCityScript_190db
+ SetEvent EVENT_02F
+ ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT
+ ld [wJoyIgnore], a
+ ld a, $8
+ ld [W_VIRIDIANCITYCURSCRIPT], a
+ ret
-ViridianCityText_19122: ; 19122 (6:5122)
- TX_FAR _ViridianCityText_19122
- db "@"
+ViridianCityScript8: ; 191a7
+ call ViridianCityScript_1912a
+ call UpdateSprites
+ call Delay3
+ SetEvent EVENT_02D
+ ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT
+ ld [wJoyIgnore], a
+ ld a, $8
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wBattleType], a
+ dec a
+ ld [wJoyIgnore], a
+ ld a, $9
+ ld [W_VIRIDIANCITYCURSCRIPT], a
+ ret
-ViridianCityText_19127: ; 19127 (6:5127)
- TX_FAR _ViridianCityText_19127
- db "@"
+ViridianCityScript9: ; 191cf
+ ld de, ViridianCityOldManMovementData2
+ ld a, [wXCoord]
+ cp 19
+ jr z, .asm_191e4
+ callab Func_f1a01
+ ld de, ViridianCityOldManMovementData1
+.asm_191e4
+ ld a, $8
+ ld [hSpriteIndexOrTextID], a
+ call MoveSprite
+ ld a, $a
+ ld [W_VIRIDIANCITYCURSCRIPT], a
+ ret
+
+ViridianCityOldManMovementData1:
+ db NPC_MOVEMENT_RIGHT
+ViridianCityOldManMovementData2:
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db $ff
+
+ViridianCityScript10: ; 191f9
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+ ld a, $3
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ xor a
+ ld [wJoyIgnore], a
+ ld a, $2
+ ld [W_VIRIDIANCITYCURSCRIPT], a
+ ret
-ViridianCityText3: ; 1912c (6:512c)
+ViridianCityTextPointers:
+ dw ViridianCityText_0 ; 19233
+ dw ViridianCityText_1 ; 1923f
+ dw ViridianCityText_2 ; 1924b
+ dw ViridianCityText_3 ; 19257
+ dw ViridianCityText_4 ; 19263
+ dw ViridianCityText_5 ; 1926f
+ dw ViridianCityText_6 ; 1927b
+ dw ViridianCityText_7 ; 1928c
+ dw ViridianCityText_8 ; 192b9
+ dw ViridianCityText_9 ; 192c5
+ dw ViridianCityText_10 ; 192d1
+ dw MartSignText ; 23e5
+ dw PokeCenterSignText ; 23ea
+ dw ViridianCityText_11 ; 192dd
+ dw ViridianCityText_12 ; 192e9
+ dw ViridianCityText_13 ; 19287
+
+ViridianCityText_0:
TX_ASM
- ld hl, ViridianCityText_1914d
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr nz, .asm_6dfea
- ld hl, ViridianCityText_19157
- call PrintText
- jr .asm_d611f
-.asm_6dfea
- ld hl, ViridianCityText_19152
- call PrintText
-.asm_d611f
+ callba Func_f18bb
jp TextScriptEnd
-ViridianCityText_1914d: ; 1914d (6:514d)
- TX_FAR _ViridianCityText_1914d
- db "@"
-
-ViridianCityText_19152: ; 19152 (6:5152)
- TX_FAR _ViridianCityText_19152
- db "@"
-
-ViridianCityText_19157: ; 19157 (6:5157)
- TX_FAR _ViridianCityText_19157
- db "@"
-
-ViridianCityText4: ; 1915c (6:515c)
+ViridianCityText_1:
TX_ASM
- CheckEvent EVENT_GOT_POKEDEX
- jr nz, .asm_83894
- ld hl, ViridianCityText_19175
- call PrintText
- jr .asm_700a6
-.asm_83894
- ld hl, ViridianCityText_1917a
- call PrintText
-.asm_700a6
+ callba Func_f18c7
jp TextScriptEnd
-ViridianCityText_19175: ; 19175 (6:5175)
- TX_FAR _ViridianCityText_19175
- db "@"
-
-ViridianCityText_1917a: ; 1917a (6:517a)
- TX_FAR _ViridianCityText_1917a
- db "@"
-
-ViridianCityText5: ; 1917f (6:517f)
+ViridianCityText_2:
TX_ASM
- ld hl, ViridianCityText_19191
- call PrintText
- call ViridianCityScript_190cf
- ld a, $3
- ld [W_VIRIDIANCITYCURSCRIPT], a
+ callba Func_f18e9
jp TextScriptEnd
-ViridianCityText_19191: ; 19191 (6:5191)
- TX_FAR _ViridianCityText_19191
- db "@"
-
-ViridianCityText6: ; 19196 (6:5196)
+ViridianCityText_3:
TX_ASM
- CheckEvent EVENT_GOT_TM42
- jr nz, .asm_4e5a0
- ld hl, ViridianCityText_191ca
- call PrintText
- lb bc, TM_42, 1
- call GiveItem
- jr nc, .BagFull
- ld hl, ReceivedTM42Text
- call PrintText
- SetEvent EVENT_GOT_TM42
- jr .asm_3c73c
-.BagFull
- ld hl, TM42NoRoomText
- call PrintText
- jr .asm_3c73c
-.asm_4e5a0
- ld hl, TM42Explanation
- call PrintText
-.asm_3c73c
+ callba Func_f1911
jp TextScriptEnd
-ViridianCityText_191ca: ; 191ca (6:51ca)
- TX_FAR _ViridianCityText_191ca
- db "@"
+ViridianCityText_4:
+ TX_ASM
+ callba Func_f192c
+ jp TextScriptEnd
-ReceivedTM42Text: ; 191cf (6:51cf)
- TX_FAR _ReceivedTM42Text
- db $10, "@"
+ViridianCityText_5:
+ TX_ASM
+ callba Func_f194a
+ jp TextScriptEnd
-TM42Explanation: ; 191d5 (6:51d5)
- TX_FAR _TM42Explanation
- db "@"
+ViridianCityText_6:
+ TX_ASM
+ callba Func_f198e
+ jp TextScriptEnd
-TM42NoRoomText: ; 191da (6:51da)
- TX_FAR _TM42NoRoomText
+ViridianCityText_13:
+ TX_FAR _ViridianCityText_19219
db "@"
-ViridianCityText7: ; 191df (6:51df)
+ViridianCityText_7:
TX_ASM
- ld hl, ViridianCityText_1920a
+ CheckEvent EVENT_02D
+ jr nz, .asm_192a6
+ ld hl, ViridianCityText_192af
call PrintText
ld c, 2
call DelayFrames
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr z, .asm_42f68
- ld hl, ViridianCityText_1920f
- call PrintText
- ld a, $1
+ ld a, $7
ld [W_VIRIDIANCITYCURSCRIPT], a
- jr .asm_2413a
-.asm_42f68
- ld hl, ViridianCityText_19214
+ jr .asm_192ac
+
+.asm_192a6
+ ld hl, ViridianCityText_192b4
call PrintText
-.asm_2413a
+.asm_192ac
jp TextScriptEnd
-ViridianCityText_1920a: ; 1920a (6:520a)
+ViridianCityText_192af:
TX_FAR _ViridianCityText_1920a
db "@"
-ViridianCityText_1920f: ; 1920f (6:520f)
- TX_FAR _ViridianCityText_1920f
- db "@"
-
-ViridianCityText_19214: ; 19214 (6:5214)
- TX_FAR _ViridianCityText_19214
+ViridianCityText_192b4:
+ TX_FAR _OldManTextAfterBattle
db "@"
-ViridianCityText15: ; 19219 (6:5219)
- TX_FAR _ViridianCityText_19219
- db "@"
-
-ViridianCityText8: ; 1921e (6:521e)
- TX_FAR _ViridianCityText8
- db "@"
+ViridianCityText_8:
+ TX_ASM
+ callba Func_f19c5
+ jp TextScriptEnd
-ViridianCityText9: ; 19223 (6:5223)
- TX_FAR _ViridianCityText9
- db "@"
+ViridianCityText_9:
+ TX_ASM
+ callba Func_f19d1
+ jp TextScriptEnd
-ViridianCityText10: ; 19228 (6:5228)
- TX_FAR _ViridianCityText10
- db "@"
+ViridianCityText_10:
+ TX_ASM
+ callba Func_f19dd
+ jp TextScriptEnd
-ViridianCityText13: ; 1922d (6:522d)
- TX_FAR _ViridianCityText13
- db "@"
+ViridianCityText_11:
+ TX_ASM
+ callba Func_f19e9
+ jp TextScriptEnd
-ViridianCityText14: ; 19232 (6:5232)
- TX_FAR _ViridianCityText14
- db "@"
+ViridianCityText_12:
+ TX_ASM
+ callba Func_f19f5
+ jp TextScriptEnd
diff --git a/scripts/viridiancity2.asm b/scripts/viridiancity2.asm
new file mode 100755
index 00000000..80ae3924
--- /dev/null
+++ b/scripts/viridiancity2.asm
@@ -0,0 +1,218 @@
+Func_f18bb:
+ ld hl, ViridianCityText_f18c2
+ call PrintText
+ ret
+
+ViridianCityText_f18c2:
+ TX_FAR _ViridianCityText1
+ db "@"
+
+Func_f18c7:
+ ld hl, ViridianCityText_f18e4
+ ld a, [wObtainedBadges]
+ cp $7f ; all but EARTHBADGE
+ jr z, .asm_f18db
+ CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
+ jr nz, .asm_f18db
+ ld hl, ViridianCityText_f18df
+.asm_f18db
+ call PrintText
+ ret
+
+ViridianCityText_f18df:
+ TX_FAR _ViridianCityText_19122
+ db "@"
+
+ViridianCityText_f18e4:
+ TX_FAR _ViridianCityText_19127
+ db "@"
+
+Func_f18e9:
+ ld hl, ViridianCityText_f1902
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ ld hl, ViridianCityText_f1907
+ jr nz, .asm_f18fe
+ ld hl, ViridianCityText_f190c
+.asm_f18fe
+ call PrintText
+ ret
+
+ViridianCityText_f1902:
+ TX_FAR _ViridianCityText_1914d
+ db "@"
+
+ViridianCityText_f1907:
+ TX_FAR _ViridianCityText_19152
+ db "@"
+
+ViridianCityText_f190c:
+ TX_FAR _ViridianCityText_19157
+ db "@"
+
+Func_f1911:
+ ld hl, ViridianCityText_f1927
+ CheckEvent EVENT_GOT_POKEDEX
+ jr nz, .asm_f191e
+ ld hl, ViridianCityText_f1922
+.asm_f191e
+ call PrintText
+ ret
+
+ViridianCityText_f1922:
+ TX_FAR _ViridianCityText_19175
+ db "@"
+
+ViridianCityText_f1927:
+ TX_FAR _ViridianCityText_1917a
+ db "@"
+
+Func_f192c:
+ ld hl, ViridianCityText_f1945
+ call PrintText
+ call StartSimulatingJoypadStates
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_DOWN
+ ld [wSimulatedJoypadStatesEnd], a
+ ld a, $5
+ ld [W_VIRIDIANCITYCURSCRIPT], a
+ ret
+
+ViridianCityText_f1945:
+ TX_FAR _ViridianCityText_19191
+ db "@"
+
+Func_f194a:
+ CheckEvent EVENT_GOT_TM42
+ jr nz, .asm_f1972
+ ld hl, ViridianCityText_f1979
+ call PrintText
+ lb bc, TM_42, 1
+ call GiveItem
+ jr nc, .asm_f196b
+ ld hl, ViridianCityText_f197e
+ call PrintText
+ SetEvent EVENT_GOT_TM42
+ ret
+
+.asm_f196b
+ ld hl, ViridianCityText_f1989
+ call PrintText
+ ret
+
+.asm_f1972
+ ld hl, ViridianCityText_f1984
+ call PrintText
+ ret
+
+ViridianCityText_f1979:
+ TX_FAR _ViridianCityText_191ca
+ db "@"
+
+ViridianCityText_f197e:
+ TX_FAR _ReceivedTM42Text
+ TX_SFX_CONGRATS
+ db "@"
+
+ViridianCityText_f1984:
+ TX_FAR _TM42Explanation
+ db "@"
+
+ViridianCityText_f1989:
+ TX_FAR _TM42NoRoomText
+ db "@"
+
+Func_f198e:
+ ld hl, ViridianCityText_f19b6
+ call PrintText
+ ld c, 2
+ call DelayFrames
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_f19af
+ ld hl, ViridianCityText_f19bb
+ call PrintText
+ ld a, $3
+ ld [W_VIRIDIANCITYCURSCRIPT], a
+ jr .asm_f19b5
+
+.asm_f19af
+ ld hl, ViridianCityText_f19c0
+ call PrintText
+.asm_f19b5
+ ret
+
+ViridianCityText_f19b6:
+ TX_FAR _OldManAgainText1
+ db "@"
+
+ViridianCityText_f19bb:
+ TX_FAR _OldManAgainText2
+ db "@"
+
+ViridianCityText_f19c0:
+ TX_FAR _OldManAgainText3
+ db "@"
+
+Func_f19c5:
+ ld hl, ViridianCityText_f19cc
+ call PrintText
+ ret
+
+ViridianCityText_f19cc:
+ TX_FAR _ViridianCityText8
+ db "@"
+
+Func_f19d1:
+ ld hl, ViridianCityText_f19d8
+ call PrintText
+ ret
+
+ViridianCityText_f19d8:
+ TX_FAR _ViridianCityText9
+ db "@"
+
+Func_f19dd:
+ ld hl, ViridianCityText_f19e4
+ call PrintText
+ ret
+
+ViridianCityText_f19e4:
+ TX_FAR _ViridianCityText10
+ db "@"
+
+Func_f19e9:
+ ld hl, ViridianCityText_f19f0
+ call PrintText
+ ret
+
+ViridianCityText_f19f0:
+ TX_FAR _ViridianCityText13
+ db "@"
+
+Func_f19f5:
+ ld hl, ViridianCityText_f19fc
+ call PrintText
+ ret
+
+ViridianCityText_f19fc:
+ TX_FAR _ViridianCityText14
+ db "@"
+
+
+Func_f1a01:
+ ld hl, Data_f1a0a
+ ld b, SPRITE_FACING_RIGHT
+ call Func_f0a82
+ ret
+
+Data_f1a0a:
+ db $00
+ db $1d
+ db $1f
+ db $38
+ db $3f
diff --git a/scripts/viridianforest.asm b/scripts/viridianforest.asm
index 892eeef2..8ac0d8a8 100755
--- a/scripts/viridianforest.asm
+++ b/scripts/viridianforest.asm
@@ -17,16 +17,18 @@ ViridianForestTextPointers: ; 61126 (18:5126)
dw ViridianForestText2
dw ViridianForestText3
dw ViridianForestText4
+ dw ViridianForestText5
+ dw ViridianForestText6
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
- dw ViridianForestText8
- dw ViridianForestText9
dw ViridianForestText10
dw ViridianForestText11
dw ViridianForestText12
dw ViridianForestText13
dw ViridianForestText14
+ dw ViridianForestText15
+ dw ViridianForestText16
ViridianForestTrainerHeaders: ; 61142 (18:5142)
ViridianForestTrainerHeader0: ; 61142 (18:5142)
@@ -56,6 +58,24 @@ ViridianForestTrainerHeader2: ; 6115a (18:515a)
dw ViridianForestEndBattleText3 ; TextEndBattle
dw ViridianForestEndBattleText3 ; TextEndBattle
+ViridianForestTrainerHeader3:
+ dbEventFlagBit EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3
+ db ($0 << 4) ; trainer's view range
+ dwEventFlagAddress EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3
+ dw ViridianForestBattleText4 ; TextBeforeBattle
+ dw ViridianForestAfterBattleText4 ; TextAfterBattle
+ dw ViridianForestEndBattleText4 ; TextEndBattle
+ dw ViridianForestEndBattleText4 ; TextEndBattle
+
+ViridianForestTrainerHeader4:
+ dbEventFlagBit EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4
+ db ($4 << 4) ; trainer's view range
+ dwEventFlagAddress EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4
+ dw ViridianForestBattleText5 ; TextBeforeBattle
+ dw ViridianForestAfterBattleText5 ; TextAfterBattle
+ dw ViridianForestEndBattleText5 ; TextEndBattle
+ dw ViridianForestEndBattleText5 ; TextEndBattle
+
db $ff
ViridianForestText1: ; 61167 (18:5167)
@@ -65,18 +85,27 @@ ViridianForestText1: ; 61167 (18:5167)
ViridianForestText2: ; 6116c (18:516c)
TX_ASM
ld hl, ViridianForestTrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr ViridianForestTalkToTrainer
ViridianForestText3: ; 61176 (18:5176)
TX_ASM
ld hl, ViridianForestTrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr ViridianForestTalkToTrainer
ViridianForestText4: ; 61180 (18:5180)
TX_ASM
ld hl, ViridianForestTrainerHeader2
+ jr ViridianForestTalkToTrainer
+
+ViridianForestText5:
+ TX_ASM
+ ld hl, ViridianForestTrainerHeader3
+ jr ViridianForestTalkToTrainer
+
+ViridianForestText6:
+ TX_ASM
+ ld hl, ViridianForestTrainerHeader4
+ViridianForestTalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
@@ -116,30 +145,63 @@ ViridianForestAfterBattleText3: ; 611b2 (18:51b2)
TX_FAR _ViridianFrstAfterBattleText3
db "@"
-ViridianForestText8: ; 611b7 (18:51b7)
- TX_FAR _ViridianForestText8
+ViridianForestBattleText4: ; 611a8 (18:51a8)
+ TX_FAR _ViridianForestBattleTextPikaGirl
db "@"
-ViridianForestText9: ; 611bc (18:51bc)
- TX_FAR _ViridianForestText9
+ViridianForestEndBattleText4: ; 611ad (18:51ad)
+ TX_FAR _ViridianForestEndBattleTextPikaGirl
db "@"
-ViridianForestText10: ; 611c1 (18:51c1)
- TX_FAR _ViridianForestText10
+ViridianForestAfterBattleText4: ; 611b2 (18:51b2)
+ TX_FAR _ViridianForestAfterBattleTextPikaGirl
db "@"
-ViridianForestText11: ; 611c6 (18:51c6)
- TX_FAR _ViridianForestText11
+ViridianForestBattleText5: ; 611a8 (18:51a8)
+ TX_FAR _ViridianForestBattleTextSamurai
db "@"
-ViridianForestText12: ; 611cb (18:51cb)
- TX_FAR _ViridianForestText12
+ViridianForestEndBattleText5: ; 611ad (18:51ad)
+ TX_FAR _ViridianForestEndBattleTextSamurai
db "@"
-ViridianForestText13: ; 611d0 (18:51d0)
- TX_FAR _ViridianForestText13
+ViridianForestAfterBattleText5: ; 611b2 (18:51b2)
+ TX_FAR _ViridianForestAfterBattleTextSamurai
db "@"
-ViridianForestText14: ; 611d5 (18:51d5)
- TX_FAR _ViridianForestText14
+ViridianForestText10: ; 611b7 (18:51b7)
+ TX_FAR _ViridianForestText8
db "@"
+
+ViridianForestText11: ; 611bc (18:51bc)
+ TX_ASM
+ ld hl, Func_f2528
+ jp ViridianForestScript_6120d
+
+ViridianForestText12: ; 611c1 (18:51c1)
+ TX_ASM
+ ld hl, Func_f2534
+ jp ViridianForestScript_6120d
+
+ViridianForestText13: ; 611c6 (18:51c6)
+ TX_ASM
+ ld hl, Func_f2540
+ jp ViridianForestScript_6120d
+
+ViridianForestText14: ; 611cb (18:51cb)
+ TX_ASM
+ ld hl, Func_f254c
+ jp ViridianForestScript_6120d
+
+ViridianForestText15: ; 611d0 (18:51d0)
+ TX_ASM
+ ld hl, Func_f2558
+ jp ViridianForestScript_6120d
+
+ViridianForestText16: ; 611d5 (18:51d5)
+ TX_ASM
+ ld hl, Func_f2528
+ViridianForestScript_6120d
+ ld b, BANK(Func_f2528)
+ call Bankswitch
+ jp TextScriptEnd
diff --git a/scripts/viridianforest2.asm b/scripts/viridianforest2.asm
new file mode 100755
index 00000000..489db39c
--- /dev/null
+++ b/scripts/viridianforest2.asm
@@ -0,0 +1,53 @@
+Func_f2528:
+ ld hl, Text_f252f
+ call PrintText
+ ret
+
+Text_f252f:
+ TX_FAR _ViridianForestText9
+ db "@"
+
+Func_f2534:
+ ld hl, Text_f253b
+ call PrintText
+ ret
+
+Text_f253b:
+ TX_FAR _ViridianForestText10
+ db "@"
+
+Func_f2540:
+ ld hl, Text_f254a
+ call PrintText
+ ret
+
+Text_f254a:
+ TX_FAR _ViridianForestText11
+ db "@"
+
+Func_f254c:
+ ld hl, Text_f2553
+ call PrintText
+ ret
+
+Text_f2553:
+ TX_FAR _ViridianForestText12
+ db "@"
+
+Func_f2558:
+ ld hl, Text_f255f
+ call PrintText
+ ret
+
+Text_f255f:
+ TX_FAR _ViridianForestText13
+ db "@"
+
+Func_f2564:
+ ld hl, ViridianForestText_f256b
+ call PrintText
+ ret
+
+ViridianForestText_f256b:
+ TX_FAR _ViridianForestText14
+ db "@"
diff --git a/scripts/viridianforestentrance.asm b/scripts/viridianforestentrance.asm
index 14b6cf49..dcfa03ba 100755
--- a/scripts/viridianforestentrance.asm
+++ b/scripts/viridianforestentrance.asm
@@ -1,5 +1,6 @@
ViridianForestEntranceScript: ; 5d65c (17:565c)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
ViridianForestEntranceTextPointers: ; 5d65f (17:565f)
dw ViridianForestEntranceText1
diff --git a/scripts/viridianmart.asm b/scripts/viridianmart.asm
index 4f4b2875..05e566fb 100755
--- a/scripts/viridianmart.asm
+++ b/scripts/viridianmart.asm
@@ -3,7 +3,8 @@ ViridianMartScript: ; 1d46e (7:546e)
call EnableAutoTextBoxDrawing
ld hl, ViridianMartScriptPointers
ld a, [W_VIRIDIANMARKETCURSCRIPT]
- jp CallFunctionInTable
+ call JumpTable
+ ret
ViridianMartScript_1d47d: ; 1d47d (7:547d)
CheckEvent EVENT_OAK_GOT_PARCEL
@@ -57,8 +58,19 @@ ViridianMartScript1: ; 1d4c0 (7:54c0)
SetEvent EVENT_GOT_OAKS_PARCEL
ld a, $2
ld [W_VIRIDIANMARKETCURSCRIPT], a
- ; fallthrough
+ ret
+
ViridianMartScript2: ; 1d4df (7:54df)
+ CheckEventHL EVENT_02D
+ ret z
+ CheckAndSetEventReuseHL EVENT_02C
+ ret nz
+ ld a, HS_OLD_MAN
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ld a, HS_OLD_MAN_1
+ ld [wMissableObjectIndex], a
+ predef ShowObject
ret
ViridianMartTextPointers: ; 1d4e0 (7:54e0)
diff --git a/scripts/viridianpokecenter.asm b/scripts/viridianpokecenter.asm
index ae5e32c8..f8aed602 100755
--- a/scripts/viridianpokecenter.asm
+++ b/scripts/viridianpokecenter.asm
@@ -7,6 +7,7 @@ ViridianPokecenterTextPointers: ; 44263 (11:4263)
dw ViridianPokeCenterText2
dw ViridianPokeCenterText3
dw ViridianPokeCenterText4
+ dw ViridianPokeCenterText5
ViridianPokeCenterText1: ; 4426b (11:426b)
db $ff
@@ -21,3 +22,8 @@ ViridianPokeCenterText3: ; 44271 (11:4271)
ViridianPokeCenterText4: ; 44276 (11:4276)
db $f6
+
+ViridianPokeCenterText5:
+ TX_ASM
+ callab Func_f0f12
+ jp TextScriptEnd
diff --git a/text/credits_text.asm b/text/credits_text.asm
index 02614c6a..54b52c97 100755
--- a/text/credits_text.asm
+++ b/text/credits_text.asm
@@ -1,194 +1,264 @@
CreditsTextPointers: ; 742c3 (1d:42c3)
- dw CredVersion
- dw CredTajiri
- dw CredTaOota
- dw CredMorimoto
- dw CredWatanabe
- dw CredMasuda
- dw CredNisino
- dw CredSugimori
- dw CredNishida
- dw CredMiyamoto
- dw CredKawaguchi
- dw CredIshihara
- dw CredYamauchi
- dw CredZinnai
- dw CredHishida
- dw CredSakai
- dw CredYamaguchi
- dw CredYamamoto
- dw CredTaniguchi
- dw CredNonomura
- dw CredFuziwara
- dw CredMatsusima
- dw CredTomisawa
- dw CredKawamoto
- dw CredKakei
- dw CredTsuchiya
- dw CredTaNakamura
- dw CredYuda
- dw CredMon
- dw CredDirector
- dw CredProgrammers
- dw CredCharDesign
- dw CredMusic
- dw CredSoundEffects
- dw CredGameDesign
- dw CredMonsterDesign
- dw CredGameScene
- dw CredParam
- dw CredMap
- dw CredTest
- dw CredSpecial
- dw CredProducers
- dw CredProducer
- dw CredExecutive
- dw CredTamada
- dw CredSaOota
- dw CredYoshikawa
- dw CredToOota
- dw CredUSStaff
- dw CredUSCoord
- dw CredTilden
- dw CredKawakami
- dw CredHiNakamura
- dw CredGiese
- dw CredOsborne
- dw CredTrans
- dw CredOgasawara
- dw CredIwata
- dw CredIzushi
- dw CredHarada
- dw CredMurakawa
- dw CredFukui
- dw CredClub
- dw CredPAAD
+ dw CreditsText_Version
+ dw CreditsText_Tajiri
+ dw CreditsText_Oota
+ dw CreditsText_Morimoto
+ dw CreditsText_Watanabe
+ dw CreditsText_Masuda
+ dw CreditsText_Nishino
+ dw CreditsText_Sugimori
+ dw CreditsText_Nishida
+ dw CreditsText_Miyamoto
+ dw CreditsText_Kawaguchi
+ dw CreditsText_Ishihara
+ dw CreditsText_Yamauchi
+ dw CreditsText_Zinnai
+ dw CreditsText_Hishida
+ dw CreditsText_Sakai
+ dw CreditsText_Yamaguchi
+ dw CreditsText_Yamamoto
+ dw CreditsText_Taniguchi
+ dw CreditsText_Nonomura
+ dw CreditsText_Fuziwara
+ dw CreditsText_Matsusima
+ dw CreditsText_Tomisawa
+ dw CreditsText_Kawamoto
+ dw CreditsText_Kakei
+ dw CreditsText_Tsuchiya
+ dw CreditsText_Nakamura
+ dw CreditsText_Yuda
+ dw CreditsText_Pokemon
+ dw CreditsText_Director
+ dw CreditsText_Programmers
+ dw CreditsText_CharacterDesign
+ dw CreditsText_Music
+ dw CreditsText_SoundEffects
+ dw CreditsText_GameDesign
+ dw CreditsText_MonsterDesign
+ dw CreditsText_GameScenario
+ dw CreditsText_ParametricDesign
+ dw CreditsText_MapDesign
+ dw CreditsText_Testing
+ dw CreditsText_SpecialThanks
+ dw CreditsText_Producer
+ dw CreditsText_ExecutiveProducer
+ dw CreditsText_Tamada
+ dw CreditsText_Oota2
+ dw CreditsText_Yoshikawa
+ dw CreditsText_Oota23
+ dw CreditsText_Yoshida
+ dw CreditsText_Matsumita
+ dw CreditsText_Seya
+ dw CreditsText_Sekine
+ dw CreditsText_Shimamura
+ dw CreditsText_Shimoyamada
+ dw CreditsText_SuperMarioClub
+ dw CreditsText_Izushi
+ dw CreditsText_Nomura
+ dw CreditsText_Harada
+ dw CreditsText_Yamagami
+ dw CreditsText_Nishimura
+ dw CreditsText_Saeki
+ dw CreditsText_Fuzii
+ dw CreditsText_Shogakukan
+ dw CreditsText_Ootani
+ dw CreditsText_PikachuVoice
+ dw CreditsText_USStaff
+ dw CreditsText_USCoord
+ dw CreditsText_Tilden
+ dw CreditsText_Kawakami
+ dw CreditsText_Nakamura2
+ dw CreditsText_Shoemake
+ dw CreditsText_Osborne
+ dw CreditsText_Translation
+ dw CreditsText_Ogasawara
+ dw CreditsText_Iwata
+ dw CreditsText_Izushi2
+ dw CreditsText_Harada2
+ dw CreditsText_Murakawa
+ dw CreditsText_Fukui
+ dw CreditsText_SuperMarioClub2
+ dw CreditsText_Paad
+ dw CreditsText_Producers
+ dw CreditsText_Hosokawa
+ dw CreditsText_Okubo
+ dw CreditsText_Nakamichi
+ dw CreditsText_Yoshimura
+ dw CreditsText_Yamazaki
-CredVersion: ; 74343 (1d:4343) ; this 1 byte difference makes all bank addresses offset by 1 in the blue version
- db -8, "RED VERSION STAFF@"
-CredTajiri: ; 74356 (1d:4356)
+CreditsText_Version:
+ db -6, "YELLOW VERSION"
+ next " STAFF@"
+CreditsText_Tajiri:
db -6, "SATOSHI TAJIRI@"
-CredTaOota: ; 74366 (1d:4366)
+CreditsText_Oota:
db -6, "TAKENORI OOTA@"
-CredMorimoto: ; 74375 (1d:4375)
+CreditsText_Morimoto:
db -7, "SHIGEKI MORIMOTO@"
-CredWatanabe: ; 74387 (1d:4387)
+CreditsText_Watanabe:
db -7, "TETSUYA WATANABE@"
-CredMasuda: ; 74399 (1d:4399)
+CreditsText_Masuda:
db -6, "JUNICHI MASUDA@"
-CredNisino: ; 743a9 (1d:43a9)
- db -5, "KOHJI NISINO@"
-CredSugimori: ; 743b7 (1d:43b7)
+CreditsText_Nishino:
+ db -5, "KOHJI NISHINO@"
+CreditsText_Sugimori:
db -5, "KEN SUGIMORI@"
-CredNishida: ; 743c5 (1d:43c5)
+CreditsText_Nishida:
db -6, "ATSUKO NISHIDA@"
-CredMiyamoto: ; 743d5 (1d:43d5)
+CreditsText_Miyamoto:
db -7, "SHIGERU MIYAMOTO@"
-CredKawaguchi: ; 743e7 (1d:43e7)
+CreditsText_Kawaguchi:
db -8, "TAKASHI KAWAGUCHI@"
-CredIshihara: ; 743fa (1d:43fa)
+CreditsText_Ishihara:
db -8, "TSUNEKAZU ISHIHARA@"
-CredYamauchi: ; 7440e (1d:440e)
+CreditsText_Yamauchi:
db -7, "HIROSHI YAMAUCHI@"
-CredZinnai: ; 74420 (1d:4420)
+CreditsText_Zinnai:
db -7, "HIROYUKI ZINNAI@"
-CredHishida: ; 74431 (1d:4431)
+CreditsText_Hishida:
db -7, "TATSUYA HISHIDA@"
-CredSakai: ; 74442 (1d:4442)
+CreditsText_Sakai:
db -6, "YASUHIRO SAKAI@"
-CredYamaguchi: ; 74452 (1d:4452)
+CreditsText_Yamaguchi:
db -7, "WATARU YAMAGUCHI@"
-CredYamamoto: ; 74464 (1d:4464)
+CreditsText_Yamamoto:
db -8, "KAZUYUKI YAMAMOTO@"
-CredTaniguchi: ; 74477 (1d:4477)
+CreditsText_Taniguchi:
db -8, "RYOHSUKE TANIGUCHI@"
-CredNonomura: ; 7448b (1d:448b)
+CreditsText_Nonomura:
db -8, "FUMIHIRO NONOMURA@"
-CredFuziwara: ; 7449e (1d:449e)
+CreditsText_Fuziwara:
db -7, "MOTOFUMI FUZIWARA@"
-CredMatsusima: ; 744b1 (1d:44b1)
+CreditsText_Matsusima:
db -7, "KENJI MATSUSIMA@"
-CredTomisawa: ; 744c2 (1d:44c2)
+CreditsText_Tomisawa:
db -7, "AKIHITO TOMISAWA@"
-CredKawamoto: ; 744d4 (1d:44d4)
+CreditsText_Kawamoto:
db -7, "HIROSHI KAWAMOTO@"
-CredKakei: ; 744e6 (1d:44e6)
+CreditsText_Kakei:
db -6, "AKIYOSHI KAKEI@"
-CredTsuchiya: ; 744f6 (1d:44f6)
+CreditsText_Tsuchiya:
db -7, "KAZUKI TSUCHIYA@"
-CredTaNakamura: ; 74507 (1d:4507)
+CreditsText_Nakamura:
db -6, "TAKEO NAKAMURA@"
-CredYuda: ; 74517 (1d:4517)
+CreditsText_Yuda:
db -6, "MASAMITSU YUDA@"
-CredMon: ; 74527 (1d:4527)
+CreditsText_Pokemon:
db -3, "#MON@"
-CredDirector: ; 7452d (1d:452d)
+CreditsText_Director:
db -3, "DIRECTOR@"
-CredProgrammers: ; 74537 (1d:4537)
+CreditsText_Programmers:
db -5, "PROGRAMMERS@"
-CredCharDesign: ; 74544 (1d:4544)
+CreditsText_CharacterDesign:
db -7, "CHARACTER DESIGN@"
-CredMusic: ; 74556 (1d:4556)
+CreditsText_Music:
db -2, "MUSIC@"
-CredSoundEffects: ; 7455d (1d:455d)
+CreditsText_SoundEffects:
db -6, "SOUND EFFECTS@"
-CredGameDesign: ; 7456c (1d:456c)
+CreditsText_GameDesign:
db -5, "GAME DESIGN@"
-CredMonsterDesign: ; 74579 (1d:4579)
+CreditsText_MonsterDesign:
db -6, "MONSTER DESIGN@"
-CredGameScene: ; 74589 (1d:4589)
+CreditsText_GameScenario:
db -6, "GAME SCENARIO@"
-CredParam: ; 74598 (1d:4598)
- db -8, "PARAMETRIC DESIGN@"
-CredMap: ; 745ab (1d:45ab)
+CreditsText_ParametricDesign:
+ db -7, "PARAMETRIC DESIGN@"
+CreditsText_MapDesign:
db -4, "MAP DESIGN@"
-CredTest: ; 745b7 (1d:45b7)
- db -7, "PRODUCT TESTING@"
-CredSpecial: ; 745c8 (1d:45c8)
+CreditsText_Testing:
+ db -6, "PRODUCT TESTING@"
+CreditsText_SpecialThanks:
db -6, "SPECIAL THANKS@"
-CredProducers: ; 745d8 (1d:45d8)
+CreditsText_Producers:
db -4, "PRODUCERS@"
-CredProducer: ; 745e3 (1d:45e3)
- db -4, "PRODUCER@"
-CredExecutive: ; 745ed (1d:45ed)
+CreditsText_Producer:
+ db -3, "PRODUCER@"
+CreditsText_ExecutiveProducer:
db -8, "EXECUTIVE PRODUCER@"
-CredTamada: ; 74601 (1d:4601)
+CreditsText_Tamada:
db -6, "SOUSUKE TAMADA@"
-CredSaOota: ; 74611 (1d:4611)
+CreditsText_Oota2:
db -5, "SATOSHI OOTA@"
-CredYoshikawa: ; 7461f (1d:461f)
+CreditsText_Yoshikawa:
db -6, "RENA YOSHIKAWA@"
-CredToOota: ; 7462f (1d:462f)
+CreditsText_Oota23:
db -6, "TOMOMICHI OOTA@"
-CredUSStaff: ; 7463f (1d:463f)
+CreditsText_Matsumita:
+ db -8, "TOSHINOBU MATSUMIYA@"
+CreditsText_Seya:
+ db -5, "NOBUHIRO SEYA@"
+CreditsText_Yoshida:
+ db -7, "HIRONOBU YOSHIDA@"
+CreditsText_Sekine:
+ db -6, "KAZUHITO SEKINE@"
+CreditsText_Shimamura:
+ db -7, "KAZUSHI SHIMAMURA@"
+CreditsText_Shimoyamada:
+ db -9, "TERUYUKI SHIMOYAMADA@"
+CreditsText_SuperMarioClub:
+ db -9, "NCL SUPER MARIO CLUB@"
+CreditsText_Izushi:
+ db -7, "TAKEHIRO IZUSHI@"
+CreditsText_Nomura:
+ db -5, "FUZIKO NOMURA@"
+CreditsText_Harada:
+ db -6, "TAKAHIRO HARADA@"
+CreditsText_Yamagami:
+ db -7, "HITOSHI YAMAGAMI@"
+CreditsText_Nishimura:
+ db -8, "KENTAROU NISHIMURA@"
+CreditsText_Saeki:
+ db -5, "NAOKO SAEKI@"
+CreditsText_Fuzii:
+ db -5, "TAKAYA FUZII@"
+CreditsText_Shogakukan:
+ db -4, "SHOGAKUKAN"
+ next "PRODUCTION@"
+CreditsText_Ootani:
+ db -5, "IKUE OOTANI@"
+CreditsText_PikachuVoice:
+ db -6, "PIKACHU VOICE@"
+
+ db -3, "××××××××@"
+CreditsText_USStaff:
db -7, "US VERSION STAFF@"
-CredUSCoord: ; 74651 (1d:4651)
+CreditsText_USCoord:
db -7, "US COORDINATION@"
-CredTilden: ; 74662 (1d:4662)
+CreditsText_Tilden:
db -5, "GAIL TILDEN@"
-CredKawakami: ; 7466f (1d:466f)
+CreditsText_Kawakami:
db -6, "NAOKO KAWAKAMI@"
-CredHiNakamura: ; 7467f (1d:467f)
+CreditsText_Nakamura2:
db -6, "HIRO NAKAMURA@"
-CredGiese: ; 7468e (1d:468e)
- db -6, "WILLIAM GIESE@"
-CredOsborne: ; 7469d (1d:469d)
+CreditsText_Shoemake:
+ db -6, "RANDY SHOEMAKE@"
+CreditsText_Osborne:
db -5, "SARA OSBORNE@"
-CredTrans: ; 746ab (1d:46ab)
+CreditsText_Translation:
db -7, "TEXT TRANSLATION@"
-CredOgasawara: ; 746bd (1d:46bd)
+CreditsText_Ogasawara:
db -6, "NOB OGASAWARA@"
-CredIwata: ; 746cc (1d:46cc)
+CreditsText_Iwata:
db -5, "SATORU IWATA@"
-CredIzushi: ; 746da (1d:46da)
+CreditsText_Izushi2:
db -7, "TAKEHIRO IZUSHI@"
-CredHarada: ; 746eb (1d:46eb)
+CreditsText_Harada2:
db -7, "TAKAHIRO HARADA@"
-CredMurakawa: ; 746fc (1d:46fc)
+CreditsText_Murakawa:
db -7, "TERUKI MURAKAWA@"
-CredFukui: ; 7470d (1d:470d)
+CreditsText_Fukui:
db -5, "KOHTA FUKUI@"
-CredClub: ; 7471a (1d:471a)
+CreditsText_SuperMarioClub2:
db -9, "NCL SUPER MARIO CLUB@"
-CredPAAD: ; 74730 (1d:4730)
+CreditsText_Paad:
db -5, "PAAD TESTING@"
+CreditsText_Hosokawa:
+ db -8, "TAKEHIKO HOSOKAWA@"
+CreditsText_Okubo:
+ db -5, "KENJI OKUBO@"
+CreditsText_Nakamichi:
+ db -7, "KIMIKO NAKAMICHI@"
+CreditsText_Yoshimura:
+ db -6, "KAMON YOSHIMURA@"
+CreditsText_Yamazaki:
+ db -6, "SAKAE YAMAZAKI@"
diff --git a/text/maps/bike_shop.asm b/text/maps/bike_shop.asm
index 252dffdc..723021a1 100644
--- a/text/maps/bike_shop.asm
+++ b/text/maps/bike_shop.asm
@@ -25,7 +25,7 @@ _BikeShopText_1d81f::
prompt
_BikeShopText_1d824::
- text $52, " exchanged"
+ text "<PLAYER> exchanged"
line "the BIKE VOUCHER"
cont "for a BICYCLE.@@"
diff --git a/text/maps/museum_1f.asm b/text/maps/museum_1f.asm
index f5f7f042..71aeee3c 100644
--- a/text/maps/museum_1f.asm
+++ b/text/maps/museum_1f.asm
@@ -81,7 +81,7 @@ _Museum1FText_5c28e::
prompt
_ReceivedOldAmberText::
- text $52, " received"
+ text "<PLAYER> received"
line "OLD AMBER!@@"
_Museum1FText_5c299::
diff --git a/text/maps/oaks_lab.asm b/text/maps/oaks_lab.asm
index 5b12e1b8..097fa931 100644
--- a/text/maps/oaks_lab.asm
+++ b/text/maps/oaks_lab.asm
@@ -1,6 +1,6 @@
_OaksLabGaryText1::
- text $53,": Yo"
- line $52,"! Gramps"
+ text "<RIVAL>: Yo"
+ line "<PLAYER>! Gramps"
cont "isn't around!"
para "I ran here 'cos"
@@ -9,13 +9,13 @@ _OaksLabGaryText1::
done
_OaksLabText40::
- text $53,": Humph!"
+ text "<RIVAL>: Humph!"
line "I'll get a better"
cont "#MON than you!"
done
_OaksLabText41::
- text $53,": Heh, my"
+ text "<RIVAL>: Heh, my"
line "#MON looks a"
cont "lot stronger."
done
@@ -48,7 +48,7 @@ _OaksLabText_1d2fa::
done
_OaksLabDeliverParcelText1::
- text "OAK: Oh, ", $52, "!"
+ text "OAK: Oh, <PLAYER>!"
para "How is my old"
line "#MON?"
@@ -63,15 +63,15 @@ _OaksLabDeliverParcelText1::
para "What? You have"
line "something for me?"
- para $52, " delivered"
+ para "<PLAYER> delivered"
line "OAK's PARCEL.@@"
_OaksLabDeliverParcelText2::
- db $0
+ text ""
para "Ah! This is the"
line "custom # BALL"
cont "I ordered!"
- cont "Thanks, ",$52,"!"
+ cont "Thanks, <PLAYER>!"
para "By the way, I must"
line "ask you to do"
@@ -81,7 +81,7 @@ _OaksLabDeliverParcelText2::
_OaksLabAroundWorldText::
text "#MON around the"
line "world wait for"
- cont "you, ", $52, "!"
+ cont "you, <PLAYER>!"
done
_OaksLabGivePokeballsText1::
@@ -95,11 +95,11 @@ _OaksLabGivePokeballsText1::
cont "to capture wild"
cont "#MON."
- para $52, " got 5"
+ para "<PLAYER> got 5"
line "# BALLs!@@"
_OaksLabGivePokeballsText2::
- db $0
+ text ""
para "When a wild"
line "#MON appears,"
cont "it's fair game."
@@ -155,13 +155,13 @@ _OaksLabText_1d340::
done
_OaksLabRivalWaitingText::
- text $53, ": Gramps!"
+ text "<RIVAL>: Gramps!"
line "I'm fed up with"
cont "waiting!"
done
_OaksLabChooseMonText::
- text "OAK: Hmm? ",$53,"?"
+ text "OAK: Hmm? <RIVAL>?"
line "Why are you here"
cont "already?"
@@ -171,7 +171,7 @@ _OaksLabChooseMonText::
para "Ah, whatever!"
line "Just wait there."
- para "Look, ",$52,"! Do"
+ para "Look, <PLAYER>! Do"
line "you see that ball"
cont "on the table?"
@@ -184,34 +184,34 @@ _OaksLabChooseMonText::
done
_OaksLabRivalInterjectionText::
- text $53, ": Hey!"
+ text "<RIVAL>: Hey!"
line "Gramps! What"
cont "about me?"
done
_OaksLabBePatientText::
text "OAK: Be patient,"
- line $53,", I'll give"
+ line "<RIVAL>, I'll give"
cont "you one later."
done
_OaksLabRivalTakesText1::
- text $53,": No way!"
- line $52,", I want"
+ text "<RIVAL>: No way!"
+ line "<PLAYER>, I want"
cont "this #MON!"
prompt
_OaksLabRivalTakesText2::
- text $53," snatched"
+ text "<RIVAL> snatched"
line "the #MON!@@"
_OaksLabRivalTakesText3::
- text "OAK: ",$53,"! What"
+ text "OAK: <RIVAL>! What"
line "are you doing?"
prompt
_OaksLabRivalTakesText4::
- text $53,": Gramps, I"
+ text "<RIVAL>: Gramps, I"
line "want this one!"
prompt
@@ -225,12 +225,12 @@ _OaksLabRivalTakesText5::
line "give you one"
cont "anyway..."
- para $52,", come over"
+ para "<PLAYER>, come over"
line "here."
done
_OaksLabOakGivesText::
- text "OAK: ",$52,", this"
+ text "OAK: <PLAYER>, this"
line "is the #MON I"
cont "caught earlier."
@@ -241,9 +241,9 @@ _OaksLabOakGivesText::
prompt
_OaksLabReceivedText::
- text $52," received"
+ text "<PLAYER> received"
line "a @"
- TX_RAM $CD6D
+ TX_RAM wcd6d
text "!@@"
_OaksLabLeavingText::
@@ -252,8 +252,8 @@ _OaksLabLeavingText::
done
_OaksLabRivalChallengeText::
- text $53, ": Wait"
- line $52, "!"
+ text "<RIVAL>: Wait"
+ line "<PLAYER>!"
cont "Let's check out"
cont "our #MON!"
@@ -269,17 +269,17 @@ _OaksLabText_1d3be::
prompt
_OaksLabText_1d3c3::
- text $53, ": Yeah! Am"
+ text "<RIVAL>: Yeah! Am"
line "I great or what?"
prompt
_OaksLabRivalToughenUpText::
- text $53, ": Okay!"
+ text "<RIVAL>: Okay!"
line "I'll make my"
cont "#MON fight to"
cont "toughen it up!"
- para $52, "! Gramps!"
+ para "<PLAYER>! Gramps!"
line "Smell you later!"
done
@@ -308,18 +308,18 @@ _OaksLabPikachuDislikesPokeballsText2::
done
_OaksLabText21::
- text $53, ": Gramps!"
+ text "<RIVAL>: Gramps!"
done
_OaksLabText22::
- text $53,": Gramps,"
+ text "<RIVAL>: Gramps,"
line "my #MON has"
cont "grown stronger!"
cont "Check it out!"
done
_OaksLabText23::
- text "OAK: Ah, ",$53,","
+ text "OAK: Ah, <RIVAL>,"
line "good timing!"
para "I needed to ask"
@@ -342,11 +342,11 @@ _OaksLabText24::
done
_OaksLabText25::
- text "OAK: ", $52, " and"
- line $53, "! Take"
+ text "OAK: <PLAYER> and"
+ line "<RIVAL>! Take"
cont "these with you!"
- para $52, " got"
+ para "<PLAYER> got"
line "#DEX from OAK!@@"
_OaksLabText26::
@@ -373,11 +373,11 @@ _OaksLabText26::
done
_OaksLabText27::
- text $53, ": Alright"
+ text "<RIVAL>: Alright"
line "Gramps! Leave it"
cont "all to me!"
- para $52, ", I hate to"
+ para "<PLAYER>, I hate to"
line "say it, but I"
cont "don't need you!"
@@ -387,10 +387,10 @@ _OaksLabText27::
para "I'll tell her not"
line "to lend you one,"
- cont $52, "! Hahaha!"
+ cont "<PLAYER>! Hahaha!"
done
_OaksLabText_1d405::
text "I study #MON as"
line "PROF.OAK's AIDE."
- done \ No newline at end of file
+ done
diff --git a/text/maps/route_24.asm b/text/maps/route_24.asm
index 7a073916..475a2602 100644
--- a/text/maps/route_24.asm
+++ b/text/maps/route_24.asm
@@ -4,13 +4,13 @@ _Route24Text_51510::
cont "contest trainers!@@"
_Route24Text_51515::
- db $0
+ text ""
para "You just earned a"
line "fabulous prize!"
prompt
_Route24Text_5151a::
- text $52, " received"
+ text "<PLAYER> received"
line "a @"
TX_RAM wcf4b
text "!@@"
@@ -154,3 +154,30 @@ _Route24AfterBattleText6::
line "have no regrets!"
done
+_Route24DamianText1::
+ text "I'm not good at"
+ line "raising #MON."
+
+ para "I should release"
+ line "my CHARMANDER"
+ cont "because I haven't"
+ cont "raised it well..."
+
+ para "If you promise me"
+ line "you'll care for"
+ cont "it, it's yours."
+ done
+
+_Route24DamianText2::
+ text "Take good care of"
+ line "my CHARMANDER!@@"
+
+_Route24DamianText3::
+ text "Oh... I'd better"
+ line "release it then."
+ done
+
+_Route24DamianText4::
+ text "How's CHARMANDER"
+ line "doing?"
+ done
diff --git a/text/maps/route_25.asm b/text/maps/route_25.asm
index 0d0d8b5b..f9f0c8ff 100644
--- a/text/maps/route_25.asm
+++ b/text/maps/route_25.asm
@@ -1,31 +1,3 @@
-_Route25DamianText1::
- text "I'm not good at"
- line "raising #MON."
-
- para "I should release"
- line "my CHARMANDER"
- cont "because I haven't"
- cont "raised it well..."
-
- para "If you promise me"
- line "you'll care for"
- cont "it, it's yours."
- done
-
-_Route25DamianText2::
- text "Take good care of"
- line "my CHARMANDER!@@"
-
-_Route25DamianText3::
- text "Oh... I'd better"
- line "release it then."
- done
-
-_Route25DamianText4::
- text "How's CHARMANDER"
- line "doing?"
- done
-
_Route25BattleText1::
text "Local trainers"
line "come here to"
diff --git a/text/maps/vermilion_city.asm b/text/maps/vermilion_city.asm
index 603b218a..f5e0adba 100644
--- a/text/maps/vermilion_city.asm
+++ b/text/maps/vermilion_city.asm
@@ -35,7 +35,7 @@ _SSAnneWelcomeText9::
prompt
_SSAnneFlashedTicketText::
- text $52, " flashed"
+ text "<PLAYER> flashed"
line "the S.S.TICKET!"
para "Great! Welcome to"
@@ -43,7 +43,7 @@ _SSAnneFlashedTicketText::
done
_SSAnneNoTicketText::
- text $52, " doesn't"
+ text "<PLAYER> doesn't"
line "have the needed"
cont "S.S.TICKET."
@@ -70,8 +70,8 @@ _VermilionCityText5::
text "MACHOP: Guoh!"
line "Gogogoh!@@"
-_VermilionCityText14::
- db $0
+_VermilionCityText15::
+ text ""
para "A MACHOP is"
line "stomping the land"
cont "flat."
@@ -127,13 +127,13 @@ _OfficerJennyText5::
line "doing?"
done
-_VermilionCityText7::
+_VermilionCityText8::
text "VERMILION CITY"
line "The Port of"
cont "Exquisite Sunsets"
done
-_VermilionCityText8::
+_VermilionCityText9::
text "NOTICE!"
para "ROUTE 12 may be"
@@ -147,13 +147,13 @@ _VermilionCityText8::
para "VERMILION POLICE"
done
-_VermilionCityText11::
+_VermilionCityText12::
text "#MON FAN CLUB"
line "All #MON fans"
cont "welcome!"
done
-_VermilionCityText12::
+_VermilionCityText13::
text "VERMILION CITY"
line "#MON GYM"
cont "LEADER: LT.SURGE"
@@ -162,7 +162,7 @@ _VermilionCityText12::
line "American!"
done
-_VermilionCityText13::
+_VermilionCityText14::
text "VERMILION HARBOR"
done
diff --git a/text/maps/viridian_city.asm b/text/maps/viridian_city.asm
index 4459acb8..a9a2184e 100644
--- a/text/maps/viridian_city.asm
+++ b/text/maps/viridian_city.asm
@@ -1,4 +1,4 @@
-_ViridianCityText_19219::
+_ViridianCityText_19219:: ; 2d:4478
text "First, you need"
line "to weaken the"
cont "target #MON."
diff --git a/wram.asm b/wram.asm
index b8b0aa28..610574da 100755
--- a/wram.asm
+++ b/wram.asm
@@ -286,7 +286,13 @@ wSerialEnemyMonsPatchList:: ; c5d0
wTempPic::
wOverworldMap:: ; c6e8
- ds 1300
+ ; ds 1300
+ ds $290
+
+wPrinterTileBuffer:: ; c978
+ ds SCREEN_HEIGHT * SCREEN_WIDTH
+wcae0:: ; cae0
+ ds 284
wRedrawRowOrColumnSrcTiles:: ; cbfc
; the tiles of the row or column to be redrawn by RedrawRowOrColumn
@@ -380,11 +386,7 @@ wTradeCenterPointerTableIndex:: ; cc38
ds 1
-wUnusedCC3A:: ; cc3a
- ds 1
-
-wUnusedCC3B:: ; cc3b
- ds 1
+wTextDestinationTileAddrBuffer:: dw ; cc3a
wDoNotWaitForButtonPressAfterDisplayingText:: ; cc3c
; if non-zero, skip waiting for a button press after displaying text in DisplayTextID
@@ -535,9 +537,23 @@ wAnimPalette:: ; cc79
wNPCMovementDirections2:: ; cc97
+wPikaPicAnimObjectDataBufferSize:: ; cc97
+
wSwitchPartyMonTempBuffer:: ; cc97
; temporary buffer when swapping party mon data
- ds 10
+ ds 1
+
+wPikaPicAnimObjectDataBuffer:: ; cc98
+; 4 structs each of length 8
+; 0: index
+; 1: object id (dw)
+; 3: ?
+; 4: ?
+; 5: ?
+; 6: ?
+; 7: ?
+
+ ds 9
wNumStepsToTake:: ; cca1
; used in Pallet Town scripted movement
@@ -940,6 +956,8 @@ wPlayerSpinWhileMovingUpOrDownAnimMaxY:: ; cd3e
wHiddenObjectFunctionRomBank:: ; cd3e
wTrainerEngageDistance:: ; cd3e
+
+wJigglypuffFacingDirections2:: ; cd3e
ds 1
wHUDGraphicsTiles:: ; cd3f
@@ -1020,6 +1038,8 @@ wHoFTeamNo:: ; cd42
wSlotMachineWheel1MiddleTile:: ; cd42
wFieldMovesLeftmostXCoord:: ; cd42
+
+wcd42:: ; cd42
ds 1
wLastFieldMoveID:: ; cd43
@@ -2266,7 +2286,7 @@ wPartyDataEnd::
wMainDataStart::
-wPokedexOwned:: ; d2f7
+wPokedexOwned:: ; d2f6
flag_array NUM_POKEMON
wPokedexOwnedEnd::
@@ -2503,27 +2523,41 @@ wDestinationWarpID:: ; d42f
; if $ff, the player's coordinates are not updated when entering the map
ds 1
-wd430:: ds 1 ; d42f
+wPikachuOverworldStateFlags:: ds 1 ; d42f
wd431:: ds 1 ; d430
wd432:: ds 1 ; d431
wd433:: ds 1 ; d432
wd434:: ds 1
wd435:: ds 1
wd436:: ds 1
-wd437:: ds 1
-wd438:: ds 1
-
- ds 15
+wPikachuFollowCommandBufferSize:: ds 1
+wPikachuFollowCommandBuffer:: ds 16
wExpressionNumber:: ; d447
ds 1
-
+wExpressionNumber2::
ds 1
-wd44a:: ds 1
+wd44a:: ds 1 ; d449
wd44b:: ds 1
-
- ds 36
+wd44c:: ds 1
+wd44d:: ds 1
+wPikaPicAnimPointer:: dw ; d44d
+wPikaPicAnimPointerSetupFinished:: ds 1 ; d44f
+wPikaPicAnimCurGraphicID:: ds 1
+wPikaPicAnimTimer:: ds 2 ; d451
+wPikaPicAnimDelay::
+wPikaSpriteX:: ds 1
+wPikaPicTextboxStartX::
+wPikaSpriteY:: ds 1 ; d454
+wPikaPicTextboxStartY:: ds 1 ; d455
+wd456:: ds 1 ; d456
+wd457:: ds 1 ; d457
+wd458:: ds 1 ; d458
+wCurPikaPicAnimObject:: ; d459
+wCurPikaPicAnimObjectIndex:: ds 1
+wCurPikaPicAnimObjectGraphicID:: dw
+ ds 19
wPikachuHappiness:: ds 1 ; d46f
wPikachuMood:: ds 1 ; d470
@@ -2816,7 +2850,9 @@ W_MANSION4CURSCRIPT:: ; d63e
W_VICTORYROAD2CURSCRIPT:: ; d63f
ds 1
W_VICTORYROAD3CURSCRIPT:: ; d640
- ds 2
+ ds 1
+W_CELADONCITYCURSCRIPT::
+ ds 1
W_FIGHTINGDOJOCURSCRIPT:: ; d642
ds 1
W_SILPHCO2CURSCRIPT:: ; d643