summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Harding <corrnondacqb@yahoo.com>2015-07-20 17:40:25 -0500
committerDaniel Harding <corrnondacqb@yahoo.com>2015-07-20 17:40:25 -0500
commit13e28b0ece7c7888cba792cc6f7219b384213427 (patch)
tree4dcd58e0fe7ac33bf38817f423754dc758cb902f
parent64b4cf624fe2175e2c7539b91bc41b6dae28a00e (diff)
parentdb7d941d22d89cf8d6d13cbf768208c5cf2ac2c2 (diff)
Merge pull request #106 from YamaArashi/master
jpab/jpba macros
-rw-r--r--constants/misc_constants.asm18
-rwxr-xr-xengine/HoF_room_pc.asm2
-rwxr-xr-xengine/battle/core.asm92
-rw-r--r--engine/battle/experience.asm6
-rw-r--r--engine/battle/init_battle_variables.asm6
-rw-r--r--engine/battle/moveEffects/focus_energy_effect.asm4
-rw-r--r--engine/battle/moveEffects/mist_effect.asm4
-rw-r--r--engine/battle/moveEffects/paralyze_effect.asm12
-rw-r--r--engine/battle/moveEffects/substitute_effect.asm4
-rwxr-xr-xengine/evos_moves.asm6
-rwxr-xr-xengine/give_pokemon.asm2
-rwxr-xr-xengine/hidden_object_functions3.asm4
-rwxr-xr-xengine/hidden_object_functions7.asm10
-rwxr-xr-xengine/in_game_trades.asm8
-rwxr-xr-xengine/items/itemfinder.asm2
-rwxr-xr-xengine/items/items.asm26
-rwxr-xr-xengine/items/tms.asm2
-rwxr-xr-xengine/menu/league_pc.asm4
-rwxr-xr-xengine/menu/main_menu.asm4
-rwxr-xr-xengine/menu/naming_screen.asm4
-rwxr-xr-xengine/menu/pokedex.asm2
-rwxr-xr-xengine/menu/prize_menu.asm2
-rwxr-xr-xengine/overworld/cable_club_npc.asm4
-rwxr-xr-xengine/overworld/hidden_items.asm10
-rw-r--r--engine/overworld/movement.asm26
-rwxr-xr-xengine/overworld/saffron_guards.asm4
-rwxr-xr-xengine/titlescreen.asm4
-rwxr-xr-xengine/trade.asm4
-rw-r--r--home.asm54
-rw-r--r--home/overworld.asm148
-rw-r--r--hram.asm6
-rw-r--r--macros.asm12
-rwxr-xr-xmain.asm18
-rwxr-xr-xscripts/celadongamecorner.asm8
-rwxr-xr-xscripts/celadonmartelevator.asm4
-rwxr-xr-xscripts/celadonmartroof.asm4
-rwxr-xr-xscripts/ceruleancity.asm8
-rwxr-xr-xscripts/cinnabargym.asm14
-rwxr-xr-xscripts/cinnabarisland.asm4
-rwxr-xr-xscripts/fightingdojo.asm8
-rwxr-xr-xscripts/gary.asm4
-rwxr-xr-xscripts/halloffameroom.asm10
-rwxr-xr-xscripts/lab4.asm4
-rwxr-xr-xscripts/oakslab.asm16
-rwxr-xr-xscripts/pallettown.asm8
-rwxr-xr-xscripts/pokemontower2.asm6
-rwxr-xr-xscripts/redshouse2f.asm4
-rwxr-xr-xscripts/route22.asm24
-rwxr-xr-xscripts/route23.asm6
-rwxr-xr-xscripts/route5gate.asm4
-rwxr-xr-xscripts/route6gate.asm4
-rwxr-xr-xscripts/route7gate.asm4
-rwxr-xr-xscripts/route8gate.asm4
-rwxr-xr-xscripts/safarizoneentrance.asm4
-rwxr-xr-xscripts/silphco11.asm10
-rwxr-xr-xscripts/silphco7.asm8
-rwxr-xr-xscripts/ssanne2.asm4
-rwxr-xr-xscripts/viridiangym.asm4
-rwxr-xr-xwram.asm62
59 files changed, 360 insertions, 394 deletions
diff --git a/constants/misc_constants.asm b/constants/misc_constants.asm
index c06e7a65..68090c78 100644
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -121,6 +121,24 @@ BOX_DATA EQU 2
DAYCARE_DATA EQU 3
BATTLE_MON_DATA EQU 4
+; player direction constants
+
+PLAYER_DIR_BIT_RIGHT EQU 0
+PLAYER_DIR_BIT_LEFT EQU 1
+PLAYER_DIR_BIT_DOWN EQU 2
+PLAYER_DIR_BIT_UP EQU 3
+
+PLAYER_DIR_RIGHT EQU (1 << PLAYER_DIR_BIT_RIGHT)
+PLAYER_DIR_LEFT EQU (1 << PLAYER_DIR_BIT_LEFT)
+PLAYER_DIR_DOWN EQU (1 << PLAYER_DIR_BIT_DOWN)
+PLAYER_DIR_UP EQU (1 << PLAYER_DIR_BIT_UP)
+
+; flag operations
+
+FLAG_RESET EQU 0
+FLAG_SET EQU 1
+FLAG_TEST EQU 2
+
; serial
ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK EQU $01
diff --git a/engine/HoF_room_pc.asm b/engine/HoF_room_pc.asm
index 06c926db..5e3ff37b 100755
--- a/engine/HoF_room_pc.asm
+++ b/engine/HoF_room_pc.asm
@@ -29,7 +29,7 @@ HallOfFamePC: ; 7405c (1d:405c)
ld c, 128
call DelayFrames
xor a
- ld [wNumCreditsMonsDisplayed - 1], a ; not read
+ ld [wUnusedCD3D], a ; not read
ld [wNumCreditsMonsDisplayed], a
jp Credits
diff --git a/engine/battle/core.asm b/engine/battle/core.asm
index 075bc179..a74e0a27 100755
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -187,9 +187,7 @@ SlidePlayerAndEnemySilhouettesOnScreen: ; 3c04c (f:404c)
ld b, $1
call GoPAL_SET
call HideSprites
- ld hl, PrintBeginningBattleText
- ld b, BANK(PrintBeginningBattleText)
- jp Bankswitch
+ jpab PrintBeginningBattleText
; when a battle is starting, silhouettes of the player's pic and the enemy's pic are slid onto the screen
; the lower of the player's pic (his body) is part of the background, but his head is a sprite
@@ -330,7 +328,7 @@ StartBattle: ; 3c11e (f:411e)
call SaveScreenTilesToBuffer1
ld a, [wWhichPokemon]
ld c, a
- ld b, $1
+ ld b, FLAG_SET
push bc
ld hl, wPartyGainExpFlags
predef FlagActionPredef
@@ -359,9 +357,7 @@ EnemyRan: ; 3c202 (f:4202)
call PlaySoundWaitForCurrent
xor a
ld [H_WHOSETURN], a
- ld hl, AnimationSlideEnemyMonOut
- ld b, BANK(AnimationSlideEnemyMonOut)
- jp Bankswitch
+ jpab AnimationSlideEnemyMonOut
WildRanText: ; 3c229 (f:4229)
TX_FAR _WildRanText
@@ -938,9 +934,7 @@ FaintEnemyPokemon: ; 0x3c567
jr nz, .gainExpFlagsLoop
ld a, b
ld [wPartyGainExpFlags], a
- ld hl, GainExperience
- ld b, BANK(GainExperience)
- jp Bankswitch
+ jpab GainExperience
EnemyMonFaintedText: ; 0x3c63e
TX_FAR _EnemyMonFaintedText
@@ -1087,7 +1081,7 @@ RemoveFaintedPlayerMon: ; 3c741 (f:4741)
ld a, [wPlayerMonNumber]
ld c, a
ld hl, wPartyGainExpFlags
- ld b, $0
+ ld b, FLAG_RESET
predef FlagActionPredef ; clear gain exp flag for fainted mon
ld hl, W_ENEMYBATTSTATUS1
res 2, [hl] ; reset "attacking multiple times" flag
@@ -1187,7 +1181,7 @@ ChooseNextMon: ; 3c7d8 (f:47d8)
ld [wPlayerMonNumber], a
ld c, a
ld hl, wPartyGainExpFlags
- ld b, $1
+ ld b, FLAG_SET
push bc
predef FlagActionPredef
pop bc
@@ -1356,7 +1350,7 @@ EnemySendOut: ; 3c90e (f:490e)
ld [hl],a
ld a,[wPlayerMonNumber]
ld c,a
- ld b,1
+ ld b,FLAG_SET
push bc
predef FlagActionPredef
ld hl,wPartyFoughtCurrentEnemyFlags
@@ -2496,7 +2490,7 @@ SwitchPlayerMon: ; 3d1ba (f:51ba)
ld a, [wWhichPokemon]
ld [wPlayerMonNumber], a
ld c, a
- ld b, $1
+ ld b, FLAG_SET
push bc
ld hl, wPartyGainExpFlags
predef FlagActionPredef
@@ -6302,7 +6296,7 @@ LoadEnemyMonData: ; 3eb01 (f:6b01)
predef WriteMonMoves ; get moves based on current level
.loadMovePPs
ld hl, wEnemyMonMoves
- ld de, wEnemyMonSpecial + 1
+ ld de, wEnemyMonPP - 1
predef LoadMovePPs
ld hl, W_MONHBASESTATS
ld de, wEnemyMonBaseStats
@@ -6332,7 +6326,7 @@ LoadEnemyMonData: ; 3eb01 (f:6b01)
ld a, [wd11e]
dec a
ld c, a
- ld b, $1
+ ld b, FLAG_SET
ld hl, wPokedexSeen
predef FlagActionPredef ; mark this mon as seen in the pokedex
ld hl, wEnemyMonLevel
@@ -6462,14 +6456,10 @@ LoadPlayerBackPic: ; 3ec92 (f:6c92)
; does nothing since no stats are ever selected (barring glitches)
DoubleOrHalveSelectedStats: ; 3ed02 (f:6d02)
callab DoubleSelectedStats
- ld hl, HalveSelectedStats
- ld b, BANK(HalveSelectedStats)
- jp Bankswitch
+ jpab HalveSelectedStats
ScrollTrainerPicAfterBattle: ; 3ed12 (f:6d12)
- ld hl, _ScrollTrainerPicAfterBattle
- ld b, BANK(_ScrollTrainerPicAfterBattle)
- jp Bankswitch
+ jpab _ScrollTrainerPicAfterBattle
ApplyBurnAndParalysisPenaltiesToPlayer: ; 3ed1a (f:6d1a)
ld a, $1
@@ -6967,7 +6957,7 @@ InitBattle_Common: ; 3efeb (f:6feb)
ld [wLetterPrintingDelayFlags], a
pop af
ld [wMapPalOffset], a
- ld a, [wd0d4]
+ ld a, [wSavedTilesetType]
ld [hTilesetType], a
scf
ret
@@ -7372,9 +7362,7 @@ BadlyPoisonedText: ; 3f2e4 (f:72e4)
db "@"
DrainHPEffect: ; 3f2e9 (f:72e9)
- ld hl, DrainHPEffect_
- ld b, BANK(DrainHPEffect_)
- jp Bankswitch
+ jpab DrainHPEffect_
ExplodeEffect: ; 3f2f1 (f:72f1)
ld hl, wBattleMonHP
@@ -8209,9 +8197,7 @@ FlinchSideEffect: ; 3f85b (f:785b)
ret
OneHitKOEffect: ; 3f884 (f:7884)
- ld hl, OneHitKOEffect_
- ld b, BANK(OneHitKOEffect_)
- jp Bankswitch
+ jpab OneHitKOEffect_
ChargeEffect: ; 3f88c (f:788c)
ld hl, W_PLAYERBATTSTATUS1
@@ -8321,19 +8307,13 @@ TrappingEffect: ; 3f917 (f:7917)
ret
MistEffect: ; 3f941 (f:7941)
- ld hl, MistEffect_
- ld b, BANK(MistEffect_)
- jp Bankswitch
+ jpab MistEffect_
FocusEnergyEffect: ; 3f949 (f:7949)
- ld hl, FocusEnergyEffect_
- ld b, BANK(FocusEnergyEffect_)
- jp Bankswitch
+ jpab FocusEnergyEffect_
RecoilEffect: ; 3f951 (f:7951)
- ld hl, RecoilEffect_
- ld b, BANK(RecoilEffect_)
- jp Bankswitch
+ jpab RecoilEffect_
ConfusionSideEffect: ; 3f959 (f:7959)
call BattleRandom
@@ -8387,14 +8367,10 @@ ConfusionEffectFailed: ; 3f9a6 (f:79a6)
jp ConditionalPrintButItFailed
ParalyzeEffect: ; 3f9b1 (f:79b1)
- ld hl, ParalyzeEffect_
- ld b, BANK(ParalyzeEffect_)
- jp Bankswitch
+ jpab ParalyzeEffect_
SubstituteEffect: ; 3f9b9 (f:79b9)
- ld hl, SubstituteEffect_
- ld b, BANK(SubstituteEffect_)
- jp Bankswitch
+ jpab SubstituteEffect_
HyperBeamEffect: ; 3f9c1 (f:79c1)
ld hl, W_PLAYERBATTSTATUS2
@@ -8505,9 +8481,7 @@ MimicLearnedMoveText: ; 3fa77 (f:7a77)
db "@"
LeechSeedEffect: ; 3fa7c (f:7a7c)
- ld hl, LeechSeedEffect_
- ld b, BANK(LeechSeedEffect_)
- jp Bankswitch
+ jpab LeechSeedEffect_
SplashEffect: ; 3fa84 (f:7a84)
call PlayCurrentMoveAnimation
@@ -8601,34 +8575,22 @@ MoveWasDisabledText: ; 3fb09 (f:7b09)
db "@"
PayDayEffect: ; 3fb0e (f:7b0e)
- ld hl, PayDayEffect_
- ld b, BANK(PayDayEffect_)
- jp Bankswitch
+ jpab PayDayEffect_
ConversionEffect: ; 3fb16 (f:7b16)
- ld hl, ConversionEffect_
- ld b, BANK(ConversionEffect_)
- jp Bankswitch
+ jpab ConversionEffect_
HazeEffect: ; 3fb1e (f:7b1e)
- ld hl, HazeEffect_
- ld b, BANK(HazeEffect_)
- jp Bankswitch
+ jpab HazeEffect_
HealEffect: ; 3fb26 (f:7b26)
- ld hl, HealEffect_
- ld b, BANK(HealEffect_)
- jp Bankswitch
+ jpab HealEffect_
TransformEffect: ; 3fb2e (f:7b2e)
- ld hl, TransformEffect_
- ld b, BANK(TransformEffect_)
- jp Bankswitch
+ jpab TransformEffect_
ReflectLightScreenEffect: ; 3fb36 (f:7b36)
- ld hl, ReflectLightScreenEffect_
- ld b, BANK(ReflectLightScreenEffect_)
- jp Bankswitch
+ jpab ReflectLightScreenEffect_
NothingHappenedText: ; 3fb3e (f:7b3e)
TX_FAR _NothingHappenedText
diff --git a/engine/battle/experience.asm b/engine/battle/experience.asm
index 6ec8c463..6f479ea3 100644
--- a/engine/battle/experience.asm
+++ b/engine/battle/experience.asm
@@ -15,7 +15,7 @@ GainExperience: ; 5524f (15:524f)
ld hl, wPartyGainExpFlags
ld a, [wWhichPokemon]
ld c, a
- ld b, $2
+ ld b, FLAG_TEST
predef FlagActionPredef
ld a, c
and a ; is mon's gain exp flag set?
@@ -257,7 +257,7 @@ GainExperience: ; 5524f (15:524f)
ld hl, wCanEvolveFlags
ld a, [wWhichPokemon]
ld c, a
- ld b, $1
+ ld b, FLAG_SET
predef FlagActionPredef
pop hl
pop af
@@ -281,7 +281,7 @@ GainExperience: ; 5524f (15:524f)
ld [hl], a ; clear gain exp flags
ld a, [wPlayerMonNumber]
ld c, a
- ld b, $1
+ ld b, FLAG_SET
push bc
predef FlagActionPredef ; set the gain exp flag for the mon that is currently out
ld hl, wPartyFoughtCurrentEnemyFlags
diff --git a/engine/battle/init_battle_variables.asm b/engine/battle/init_battle_variables.asm
index f10e9f5e..3c926858 100644
--- a/engine/battle/init_battle_variables.asm
+++ b/engine/battle/init_battle_variables.asm
@@ -1,6 +1,6 @@
InitBattleVariables: ; 525af (14:65af)
ld a, [hTilesetType]
- ld [wd0d4], a
+ ld [wSavedTilesetType], a
xor a
ld [wActionResultOrTookBattleTurn], a
ld [wBattleResult], a
@@ -35,6 +35,4 @@ InitBattleVariables: ; 525af (14:65af)
ld a, $2 ; safari battle
ld [W_BATTLETYPE], a
.notSafariBattle
- ld hl, PlayBattleMusic
- ld b, BANK(PlayBattleMusic)
- jp Bankswitch
+ jpab PlayBattleMusic
diff --git a/engine/battle/moveEffects/focus_energy_effect.asm b/engine/battle/moveEffects/focus_energy_effect.asm
index 20a0c07e..b8a783e4 100644
--- a/engine/battle/moveEffects/focus_energy_effect.asm
+++ b/engine/battle/moveEffects/focus_energy_effect.asm
@@ -14,9 +14,7 @@ FocusEnergyEffect_: ; 27f86 (9:7f86)
.alreadyUsing
ld c, 50
call DelayFrames
- ld hl, PrintButItFailedText_
- ld b, BANK(PrintButItFailedText_)
- jp Bankswitch
+ jpab PrintButItFailedText_
GettingPumpedText: ; 27fb3 (9:7fb3)
db $0a
diff --git a/engine/battle/moveEffects/mist_effect.asm b/engine/battle/moveEffects/mist_effect.asm
index 8394eec1..1f8e40b0 100644
--- a/engine/battle/moveEffects/mist_effect.asm
+++ b/engine/battle/moveEffects/mist_effect.asm
@@ -12,9 +12,7 @@ MistEffect_: ; 33f2b (c:7f2b)
ld hl, ShroudedInMistText
jp PrintText
.mistAlreadyInUse
- ld hl, PrintButItFailedText_
- ld b, BANK(PrintButItFailedText_)
- jp Bankswitch
+ jpab PrintButItFailedText_
ShroudedInMistText: ; 33f52 (c:7f52)
TX_FAR _ShroudedInMistText
diff --git a/engine/battle/moveEffects/paralyze_effect.asm b/engine/battle/moveEffects/paralyze_effect.asm
index b88e6479..658b0c50 100644
--- a/engine/battle/moveEffects/paralyze_effect.asm
+++ b/engine/battle/moveEffects/paralyze_effect.asm
@@ -36,18 +36,12 @@ ParalyzeEffect_: ; 52601 (14:6601)
ld c, 30
call DelayFrames
callab PlayCurrentMoveAnimation
- ld hl, PrintMayNotAttackText
- ld b, BANK(PrintMayNotAttackText)
- jp Bankswitch
+ jpab PrintMayNotAttackText
.didntAffect
ld c, 50
call DelayFrames
- ld hl, PrintDidntAffectText
- ld b, BANK(PrintDidntAffectText)
- jp Bankswitch
+ jpab PrintDidntAffectText
.doesntAffect
ld c, 50
call DelayFrames
- ld hl, PrintDoesntAffectText
- ld b, BANK(PrintDoesntAffectText)
- jp Bankswitch
+ jpab PrintDoesntAffectText
diff --git a/engine/battle/moveEffects/substitute_effect.asm b/engine/battle/moveEffects/substitute_effect.asm
index 444c755b..c72fffbe 100644
--- a/engine/battle/moveEffects/substitute_effect.asm
+++ b/engine/battle/moveEffects/substitute_effect.asm
@@ -55,9 +55,7 @@ SubstituteEffect_: ; 17dad (5:7dad)
call Bankswitch ; jump to routine depending on animation setting
ld hl, SubstituteText
call PrintText
- ld hl, DrawHUDsAndHPBars
- ld b, BANK(DrawHUDsAndHPBars)
- jp Bankswitch
+ jpab DrawHUDsAndHPBars
.alreadyHasSubstitute
ld hl, HasSubstituteText
jr .printText
diff --git a/engine/evos_moves.asm b/engine/evos_moves.asm
index 3129b560..2c668d63 100755
--- a/engine/evos_moves.asm
+++ b/engine/evos_moves.asm
@@ -5,7 +5,7 @@ TryEvolvingMon: ; 3ad0e (e:6d0e)
ld [hl], a
ld a, [wWhichPokemon]
ld c, a
- ld b, $1
+ ld b, FLAG_SET
call Evolution_FlagAction
; this is only called after battle
@@ -36,7 +36,7 @@ Evolution_PartyMonLoop: ; loop over party mons
ld a, [wWhichPokemon]
ld c, a
ld hl, wCanEvolveFlags
- ld b, $2
+ ld b, FLAG_TEST
call Evolution_FlagAction
ld a, c
and a ; is the mon's bit set?
@@ -217,7 +217,7 @@ Evolution_PartyMonLoop: ; loop over party mons
ld a, [wd11e]
dec a
ld c, a
- ld b, $1
+ ld b, FLAG_SET
ld hl, wPokedexOwned
push bc
call Evolution_FlagAction
diff --git a/engine/give_pokemon.asm b/engine/give_pokemon.asm
index 4b45631d..02e2b743 100755
--- a/engine/give_pokemon.asm
+++ b/engine/give_pokemon.asm
@@ -60,7 +60,7 @@ SetPokedexOwnedFlag: ; 4fe11 (13:7e11)
dec a
ld c, a
ld hl, wPokedexOwned
- ld b, $1
+ ld b, FLAG_SET
predef FlagActionPredef
pop af
ld [wd11e], a
diff --git a/engine/hidden_object_functions3.asm b/engine/hidden_object_functions3.asm
index 8502cea8..80251b94 100755
--- a/engine/hidden_object_functions3.asm
+++ b/engine/hidden_object_functions3.asm
@@ -34,9 +34,7 @@ PrintBookshelfText: ; fb50 (3:7b50)
.noMatch
ld a, $ff
ld [$ffdb], a
- ld b, BANK(PrintCardKeyText)
- ld hl, PrintCardKeyText
- jp Bankswitch
+ jpba PrintCardKeyText
; format: db tileset id, bookshelf tile id, text id
BookshelfTileIDs: ; fb8b (3:7b8b)
diff --git a/engine/hidden_object_functions7.asm b/engine/hidden_object_functions7.asm
index f7deae66..8893e496 100755
--- a/engine/hidden_object_functions7.asm
+++ b/engine/hidden_object_functions7.asm
@@ -78,7 +78,7 @@ SafariZoneGameOver: ; 1e9b0 (7:69b0)
ld [H_DOWNARROWBLINKCNT2], a
call DisplayTextID
xor a
- ld [wd528], a
+ ld [wPlayerMovingDirection], a
ld a, SAFARI_ZONE_ENTRANCE
ld [H_DOWNARROWBLINKCNT1], a
ld a, $3
@@ -209,7 +209,7 @@ CinnabarGymQuiz_1ea92: ; 1ea92 (7:6a92)
call PrintText
ld a, [$ffe0]
ld c, a
- ld b, $1
+ ld b, FLAG_SET
call CinnabarGymQuiz_1ea8a
jp CinnabarGymQuiz_1eb0a
.asm_1eab8
@@ -222,7 +222,7 @@ CinnabarGymQuiz_1ea92: ; 1ea92 (7:6a92)
ld a, [$ffdb]
add $2
ld c, a
- ld b, $2
+ ld b, FLAG_TEST
ld hl, wd79a
predef FlagActionPredef
ld a, c
@@ -241,7 +241,7 @@ CinnabarGymQuizCorrectText: ; 1eae3 (7:6ae3)
ld a, [$ffe0]
ld c, a
- ld b, $2
+ ld b, FLAG_TEST
call CinnabarGymQuiz_1ea8a
ld a, c
and a
@@ -278,7 +278,7 @@ CinnabarGymQuiz_1eb0a: ; 1eb0a (7:6b0a)
ld a, [$ffdb]
ld [$ffe0], a
ld c, a
- ld b, $2
+ ld b, FLAG_TEST
call CinnabarGymQuiz_1ea8a
ld a, c
and a
diff --git a/engine/in_game_trades.asm b/engine/in_game_trades.asm
index 6f1167d0..96c37ab0 100755
--- a/engine/in_game_trades.asm
+++ b/engine/in_game_trades.asm
@@ -38,7 +38,7 @@ DoInGameTradeDialogue: ; 71ad9 (1c:5ad9)
ld hl,wCompletedInGameTradeFlags
ld a,[wWhichTrade]
ld c,a
- ld b,$2
+ ld b,FLAG_TEST
predef FlagActionPredef
ld a,c
and a
@@ -112,7 +112,7 @@ InGameTrade_DoTrade: ; 71c07 (1c:5c07)
ld hl,wCompletedInGameTradeFlags
ld a,[wWhichTrade]
ld c,a
- ld b,$1
+ ld b,FLAG_SET
predef FlagActionPredef
ld hl, ConnectCableText
call PrintText
@@ -159,9 +159,7 @@ InGameTrade_RestoreScreen: ; 71ca2 (1c:5ca2)
call LoadGBPal
ld c, 10
call DelayFrames
- ld b, BANK(LoadWildData)
- ld hl, LoadWildData
- jp Bankswitch
+ jpba LoadWildData
InGameTrade_PrepareTradeData: ; 71cc1 (1c:5cc1)
ld hl, wTradedPlayerMonSpecies
diff --git a/engine/items/itemfinder.asm b/engine/items/itemfinder.asm
index 51277632..5da72388 100755
--- a/engine/items/itemfinder.asm
+++ b/engine/items/itemfinder.asm
@@ -10,7 +10,7 @@ HiddenItemNear: ; 7481f (1d:481f)
push hl
ld hl, wObtainedHiddenItemsFlags
ld c, b
- ld b, $2
+ ld b, FLAG_TEST
predef FlagActionPredef
ld a, c
pop hl
diff --git a/engine/items/items.asm b/engine/items/items.asm
index 704e6034..f2c41ef6 100755
--- a/engine/items/items.asm
+++ b/engine/items/items.asm
@@ -400,15 +400,15 @@ ItemUseBall: ; d687 (3:5687)
ld a,[wd11e]
dec a
ld c,a
- ld b,2
- ld hl,wPokedexOwned ;Dex_own_flags (pokemon)
+ ld b,FLAG_TEST
+ ld hl,wPokedexOwned
predef FlagActionPredef
ld a,c
push af
ld a,[wd11e]
dec a
ld c,a
- ld b,1
+ ld b,FLAG_SET
predef FlagActionPredef
pop af
and a
@@ -499,9 +499,7 @@ ItemUseTownMap: ; d968 (3:5968)
ld a,[W_ISINBATTLE]
and a
jp nz,ItemUseNotTime
- ld b, BANK(DisplayTownMap)
- ld hl, DisplayTownMap
- jp Bankswitch ; display Town Map
+ jpba DisplayTownMap
ItemUseBicycle: ; d977 (3:5977)
ld a,[W_ISINBATTLE]
@@ -593,14 +591,14 @@ ItemUseSurfboard: ; d9b4 (3:59b4)
jp LoadWalkingPlayerSpriteGraphics
; uses a simulated button press to make the player move forward
.makePlayerMoveForward
- ld a,[wd52a] ; direction the player is going
- bit 3,a
+ ld a,[wPlayerDirection] ; direction the player is going
+ bit PLAYER_DIR_BIT_UP,a
ld b,D_UP
jr nz,.storeSimulatedButtonPress
- bit 2,a
+ bit PLAYER_DIR_BIT_DOWN,a
ld b,D_DOWN
jr nz,.storeSimulatedButtonPress
- bit 1,a
+ bit PLAYER_DIR_BIT_LEFT,a
ld b,D_LEFT
jr nz,.storeSimulatedButtonPress
ld b,D_RIGHT
@@ -806,7 +804,7 @@ ItemUseMedicine: ; dabb (3:5abb)
ld a,[wUsedItemOnWhichPokemon]
ld c,a
ld hl,wPartyFoughtCurrentEnemyFlags
- ld b,$02
+ ld b,FLAG_TEST
predef FlagActionPredef
ld a,c
and a
@@ -814,7 +812,7 @@ ItemUseMedicine: ; dabb (3:5abb)
ld a,[wUsedItemOnWhichPokemon]
ld c,a
ld hl,wPartyGainExpFlags
- ld b,$01
+ ld b,FLAG_SET
predef FlagActionPredef
.next
pop bc
@@ -2552,8 +2550,8 @@ IsKeyItem_: ; e764 (3:6764)
dec a
ld c,a
ld hl,wHPBarMaxHP
- ld b,$02 ; test bit
- predef FlagActionPredef ; bitfield operation function
+ ld b,FLAG_TEST
+ predef FlagActionPredef
ld a,c
and a
ret nz
diff --git a/engine/items/tms.asm b/engine/items/tms.asm
index 511aab5b..23912b34 100755
--- a/engine/items/tms.asm
+++ b/engine/items/tms.asm
@@ -17,7 +17,7 @@ CanLearnTM: ; 1373e (4:773e)
jr .findTMloop
.TMfoundLoop
pop hl
- ld b, $2 ; read corresponding bit from TM compatibility array
+ ld b, FLAG_TEST
predef_jump FlagActionPredef
; converts TM/HM number in wd11e into move number
diff --git a/engine/menu/league_pc.asm b/engine/menu/league_pc.asm
index 06a7894c..1f5cf8e0 100755
--- a/engine/menu/league_pc.asm
+++ b/engine/menu/league_pc.asm
@@ -110,9 +110,7 @@ LeaguePCShowMon: ; 76610 (1d:6610)
ld de, wHoFTeamNo
ld bc, $0103
call PrintNumber
- ld b, BANK(HoFDisplayMonInfo)
- ld hl, HoFDisplayMonInfo
- jp Bankswitch
+ jpba HoFDisplayMonInfo
HallOfFameNoText: ; 76670 (1d:6670)
db "HALL OF FAME No @"
diff --git a/engine/menu/main_menu.asm b/engine/menu/main_menu.asm
index eeaa4594..3ed2f443 100755
--- a/engine/menu/main_menu.asm
+++ b/engine/menu/main_menu.asm
@@ -107,8 +107,8 @@ MainMenu: ; 5af2 (1:5af2)
.pressedA
call GBPalWhiteOutWithDelay3
call ClearScreen
- ld a,4
- ld [wd52a],a
+ ld a,PLAYER_DIR_DOWN
+ ld [wPlayerDirection],a
ld c,10
call DelayFrames
ld a,[wNumHoFTeams]
diff --git a/engine/menu/naming_screen.asm b/engine/menu/naming_screen.asm
index 9a608491..6037329e 100755
--- a/engine/menu/naming_screen.asm
+++ b/engine/menu/naming_screen.asm
@@ -172,9 +172,7 @@ DisplayNamingScreen: ; 6596 (1:6596)
ld a, [W_ISINBATTLE]
and a
jp z, LoadTextBoxTilePatterns
- ld hl, LoadHudTilePatterns
- ld b, BANK(LoadHudTilePatterns)
- jp Bankswitch
+ jpab LoadHudTilePatterns
.namingScreenButtonFunctions
dw .dPadReturnPoint
diff --git a/engine/menu/pokedex.asm b/engine/menu/pokedex.asm
index 4e173bc0..2f22f78e 100755
--- a/engine/menu/pokedex.asm
+++ b/engine/menu/pokedex.asm
@@ -379,7 +379,7 @@ IsPokemonBitSet: ; 402c2 (10:42c2)
ld a,[wd11e]
dec a
ld c,a
- ld b,2
+ ld b,FLAG_TEST
predef FlagActionPredef
ld a,c
and a
diff --git a/engine/menu/prize_menu.asm b/engine/menu/prize_menu.asm
index b1b751b9..f2f2a794 100755
--- a/engine/menu/prize_menu.asm
+++ b/engine/menu/prize_menu.asm
@@ -179,7 +179,7 @@ LoadCoinsToSubtract: ; 528b1 (14:68b1)
ld hl,wd141 ; first prize's price
add hl,de ; get selected prize's price
xor a
- ld [hCoins - 1],a
+ ld [hUnusedCoinsByte],a
ld a,[hli]
ld [hCoins],a
ld a,[hl]
diff --git a/engine/overworld/cable_club_npc.asm b/engine/overworld/cable_club_npc.asm
index b9e3102a..2a9b19fe 100755
--- a/engine/overworld/cable_club_npc.asm
+++ b/engine/overworld/cable_club_npc.asm
@@ -111,9 +111,7 @@ Func_72a8: ; 72a8 (1:72a8)
xor a
ld [hld], a
ld [hl], a
- ld hl, LinkMenu
- ld b, BANK(LinkMenu)
- jp Bankswitch
+ jpab LinkMenu
CableClubNPCAreaReservedFor2FriendsLinkedByCableText: ; 72b3 (1:72b3)
TX_FAR _CableClubNPCAreaReservedFor2FriendsLinkedByCableText
diff --git a/engine/overworld/hidden_items.asm b/engine/overworld/hidden_items.asm
index fee5b5bc..fc69afc1 100755
--- a/engine/overworld/hidden_items.asm
+++ b/engine/overworld/hidden_items.asm
@@ -5,7 +5,7 @@ HiddenItems: ; 76688 (1d:6688)
ld hl, wObtainedHiddenItemsFlags
ld a, [wHiddenItemOrCoinsIndex]
ld c, a
- ld b, $2
+ ld b, FLAG_TEST
predef FlagActionPredef
ld a, c
and a
@@ -31,7 +31,7 @@ FoundHiddenItemText: ; 7675b (1d:675b)
ld hl, wObtainedHiddenItemsFlags
ld a, [wTrainerScreenX]
ld c, a
- ld b, $1
+ ld b, FLAG_SET
predef FlagActionPredef
ld a, SFX_GET_ITEM_2
call PlaySoundWaitForCurrent
@@ -61,13 +61,13 @@ HiddenCoins: ; 76799 (1d:6799)
ld hl, wObtainedHiddenCoinsFlags
ld a, [wHiddenItemOrCoinsIndex]
ld c, a
- ld b, $2
+ ld b, FLAG_TEST
predef FlagActionPredef
ld a, c
and a
ret nz
xor a
- ld [hCoins - 1], a
+ ld [hUnusedCoinsByte], a
ld [hCoins], a
ld [hCoins + 1], a
ld a, [wHiddenObjectFunctionArgument]
@@ -102,7 +102,7 @@ HiddenCoins: ; 76799 (1d:6799)
ld hl, wObtainedHiddenCoinsFlags
ld a, [wTrainerScreenX]
ld c, a
- ld b, $1
+ ld b, FLAG_SET
predef FlagActionPredef
call EnableAutoTextBoxDrawing
ld a, [wPlayerCoins]
diff --git a/engine/overworld/movement.asm b/engine/overworld/movement.asm
index f618261e..be10fd69 100644
--- a/engine/overworld/movement.asm
+++ b/engine/overworld/movement.asm
@@ -25,24 +25,24 @@ UpdatePlayerSprite: ; 4e31 (1:4e31)
ld a, [wWalkCounter]
and a
jr nz, .moving
- ld a, [wd528]
+ ld a, [wPlayerMovingDirection]
; check if down
- bit 2, a
+ bit PLAYER_DIR_BIT_DOWN, a
jr z, .checkIfUp
xor a ; ld a, SPRITE_FACING_DOWN
jr .next
.checkIfUp
- bit 3, a
+ bit PLAYER_DIR_BIT_UP, a
jr z, .checkIfLeft
ld a, SPRITE_FACING_UP
jr .next
.checkIfLeft
- bit 1, a
+ bit PLAYER_DIR_BIT_LEFT, a
jr z, .checkIfRight
ld a, SPRITE_FACING_LEFT
jr .next
.checkIfRight
- bit 0, a
+ bit PLAYER_DIR_BIT_RIGHT, a
jr z, .notMoving
ld a, SPRITE_FACING_RIGHT
jr .next
@@ -405,23 +405,23 @@ InitializeSpriteFacingDirection: ; 507f (1:507f)
bit 5, a
jr nz, notYetMoving
res 7, [hl]
- ld a, [wd52a]
- bit 3, a
+ ld a, [wPlayerDirection]
+ bit PLAYER_DIR_BIT_UP, a
jr z, .notFacingDown
- ld c, $0 ; make sprite face down
+ ld c, SPRITE_FACING_DOWN
jr .facingDirectionDetermined
.notFacingDown
- bit 2, a
+ bit PLAYER_DIR_BIT_DOWN, a
jr z, .notFacingUp
- ld c, $4 ; make sprite face up
+ ld c, SPRITE_FACING_UP
jr .facingDirectionDetermined
.notFacingUp
- bit 1, a
+ bit PLAYER_DIR_BIT_LEFT, a
jr z, .notFacingRight
- ld c, $c ; make sprite face right
+ ld c, SPRITE_FACING_RIGHT
jr .facingDirectionDetermined
.notFacingRight
- ld c, $8 ; make sprite face left
+ ld c, SPRITE_FACING_LEFT
.facingDirectionDetermined
ld a, [H_CURRENTSPRITEOFFSET]
add $9
diff --git a/engine/overworld/saffron_guards.asm b/engine/overworld/saffron_guards.asm
index 8e584a2d..c0d6a985 100755
--- a/engine/overworld/saffron_guards.asm
+++ b/engine/overworld/saffron_guards.asm
@@ -10,9 +10,7 @@ RemoveGuardDrink: ; 5a59f (16:659f)
call IsItemInBag
pop hl
jr z, .drinkLoop
- ld b, BANK(RemoveItemByID)
- ld hl, RemoveItemByID
- jp Bankswitch
+ jpba RemoveItemByID
GuardDrinksList: ; 5a5b7 (16:65b7)
db FRESH_WATER, SODA_POP, LEMONADE, $00
diff --git a/engine/titlescreen.asm b/engine/titlescreen.asm
index 729e16bb..84c0cdf7 100755
--- a/engine/titlescreen.asm
+++ b/engine/titlescreen.asm
@@ -262,9 +262,7 @@ ENDC
jp MainMenu
.doClearSaveDialogue
- ld b, BANK(DoClearSaveDialogue)
- ld hl, DoClearSaveDialogue
- jp Bankswitch
+ jpba DoClearSaveDialogue
TitleScreenPickNewMon: ; 4496 (1:4496)
ld a, vBGMap0 / $100
diff --git a/engine/trade.asm b/engine/trade.asm
index 68baaa16..ba8de4ff 100755
--- a/engine/trade.asm
+++ b/engine/trade.asm
@@ -199,9 +199,7 @@ LoadTradingGFXAndMonNames: ; 411a1 (10:51a1)
Trade_LoadMonPartySpriteGfx: ; 4120b (10:520b)
ld a, %11010000
ld [rOBP1], a
- ld b, BANK(LoadMonPartySpriteGfx)
- ld hl, LoadMonPartySpriteGfx
- jp Bankswitch
+ jpba LoadMonPartySpriteGfx
Trade_SwapNames: ; 41217 (10:5217)
ld hl, wPlayerName
diff --git a/home.asm b/home.asm
index 69634a7c..6bb54df2 100644
--- a/home.asm
+++ b/home.asm
@@ -253,9 +253,7 @@ DrawHPBar:: ; 1336 (0:1336)
; wLoadedMon = base address of pokemon data
; W_MONHDEXNUM = base address of base stats
LoadMonData:: ; 1372 (0:1372)
- ld hl, LoadMonData_
- ld b, BANK(LoadMonData_)
- jp Bankswitch
+ jpab LoadMonData_
OverwritewMoves:: ; 137a (0:137a)
@@ -1317,9 +1315,7 @@ CountSetBits:: ; 2b7f (0:2b7f)
; subtracts the amount the player paid from their money
; sets carry flag if there is enough money and unsets carry flag if not
SubtractAmountPaidFromMoney:: ; 2b96 (0:2b96)
- ld b,BANK(SubtractAmountPaidFromMoney_)
- ld hl,SubtractAmountPaidFromMoney_
- jp Bankswitch
+ jpba SubtractAmountPaidFromMoney_
; adds the amount the player sold to their money
AddAmountSoldToMoney:: ; 2b9e (0:2b9e)
@@ -2077,9 +2073,7 @@ ReloadTilesetTilePatterns:: ; 3090 (0:3090)
ChooseFlyDestination:: ; 30a9 (0:30a9)
ld hl,wd72e
res 4,[hl]
- ld b, BANK(LoadTownMap_Fly)
- ld hl, LoadTownMap_Fly
- jp Bankswitch
+ jpba LoadTownMap_Fly
; causes the text box to close without waiting for a button press after displaying text
DisableWaitingAfterTextDisplay:: ; 30b6 (0:30b6)
@@ -2097,9 +2091,7 @@ DisableWaitingAfterTextDisplay:: ; 30b6 (0:30b6)
; 01: successful
; 02: not able to be used right now, no extra menu displayed (only certain items use this)
UseItem:: ; 30bc (0:30bc)
- ld b,BANK(UseItem_)
- ld hl,UseItem_
- jp Bankswitch
+ jpba UseItem_
; confirms the item toss and then tosses the item
; INPUT:
@@ -2201,14 +2193,10 @@ RunNPCMovementScript:: ; 310e (0:310e)
dw PewterMuseumGuyMovementScriptPointerTable
dw PewterGymGuyMovementScriptPointerTable
.playerStepOutFromDoor
- ld b, BANK(PlayerStepOutFromDoor)
- ld hl, PlayerStepOutFromDoor
- jp Bankswitch
+ jpba PlayerStepOutFromDoor
EndNPCMovementScript:: ; 314e (0:314e)
- ld b, BANK(_EndNPCMovementScript)
- ld hl, _EndNPCMovementScript
- jp Bankswitch
+ jpba _EndNPCMovementScript
EmptyFunc2:: ; 3156 (0:3156)
ret
@@ -2309,7 +2297,7 @@ TalkToTrainer:: ; 31cc (0:31cc)
call ReadTrainerHeaderInfo ; read flag's byte ptr
ld a, [wTrainerHeaderFlagBit]
ld c, a
- ld b, $2
+ ld b, FLAG_TEST
call TrainerFlagAction ; read trainer's flag
ld a, c
and a
@@ -2404,7 +2392,7 @@ EndTrainerBattle:: ; 3275 (0:3275)
call ReadTrainerHeaderInfo
ld a, [wTrainerHeaderFlagBit]
ld c, a
- ld b, $1
+ ld b, FLAG_SET
call TrainerFlagAction ; flag trainer as fought
ld a, [W_ENEMYMONORTRAINERCLASS]
cp $c8
@@ -2434,9 +2422,7 @@ ResetButtonPressedAndMapScript:: ; 32c1 (0:32c1)
; calls TrainerWalkUpToPlayer
TrainerWalkUpToPlayer_Bank0:: ; 32cf (0:32cf)
- ld b, BANK(TrainerWalkUpToPlayer)
- ld hl, TrainerWalkUpToPlayer
- jp Bankswitch
+ jpba TrainerWalkUpToPlayer
; sets opponent type and mon set/lvl based on the engaging trainer data
InitBattleEnemyParameters:: ; 32d7 (0:32d7)
@@ -2484,7 +2470,7 @@ CheckForEngagingTrainers:: ; 3306 (0:3306)
ret z
ld a, $2
call ReadTrainerHeaderInfo ; read trainer flag's byte ptr
- ld b, $2
+ ld b, FLAG_TEST
ld a, [wTrainerHeaderFlagBit]
ld c, a
call TrainerFlagAction ; read trainer flag
@@ -2726,9 +2712,7 @@ IsItemInBag:: ; 3493 (0:3493)
DisplayPokedex:: ; 349b (0:349b)
ld [wd11e], a
- ld b, BANK(_DisplayPokedex)
- ld hl, _DisplayPokedex
- jp Bankswitch
+ jpba _DisplayPokedex
SetSpriteFacingDirectionAndDelay:: ; 34a6 (0:34a6)
call SetSpriteFacingDirection
@@ -2937,9 +2921,7 @@ GetTrainerInformation:: ; 3566 (0:3566)
ret
GetTrainerName:: ; 359e (0:359e)
- ld b, BANK(GetTrainerName_)
- ld hl, GetTrainerName_
- jp Bankswitch
+ jpba GetTrainerName_
HasEnoughMoney::
@@ -3604,9 +3586,7 @@ CopyDataUntil:: ; 3913 (0:3913)
; [wRemoveMonFromBox] == 0 specifies the party.
; [wRemoveMonFromBox] != 0 specifies the current box.
RemovePokemon:: ; 391f (0:391f)
- ld hl, _RemovePokemon
- ld b, BANK(_RemovePokemon)
- jp Bankswitch
+ jpab _RemovePokemon
AddPartyMon:: ; 3927 (0:3927)
push hl
@@ -4590,9 +4570,7 @@ GivePokemon::
ld [W_CURENEMYLVL], a
xor a ; PLAYER_PARTY_DATA
ld [wMonDataLocation], a
- ld b, BANK(_GivePokemon)
- ld hl, _GivePokemon
- jp Bankswitch
+ jpba _GivePokemon
Random::
@@ -4613,9 +4591,7 @@ INCLUDE "home/predef.asm"
Func_3ead:: ; 3ead (0:3ead)
- ld b, BANK(CinnabarGymQuiz_1eb0a)
- ld hl, CinnabarGymQuiz_1eb0a
- jp Bankswitch
+ jpba CinnabarGymQuiz_1eb0a
CheckForHiddenObjectOrBookshelfOrCardKeyDoor:: ; 3eb5 (0:3eb5)
ld a, [H_LOADEDROMBANK]
diff --git a/home/overworld.asm b/home/overworld.asm
index 13cce7ee..cc5e9f5e 100644
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -1,9 +1,7 @@
HandleMidJump::
; Handle the player jumping down
; a ledge in the overworld.
- ld b, BANK(_HandleMidJump)
- ld hl, _HandleMidJump
- jp Bankswitch
+ jpba _HandleMidJump
EnterMap::
; Load a new map.
@@ -136,52 +134,52 @@ OverworldLoopLessDelay::
call UpdateSprites
ld a,$01
ld [wcc4b],a
- ld a,[wd528] ; the direction that was pressed last time
+ ld a,[wPlayerMovingDirection] ; the direction that was pressed last time
and a
jp z,OverworldLoop
; if a direction was pressed last time
- ld [wd529],a ; save the last direction
+ ld [wPlayerLastStopDirection],a ; save the last direction
xor a
- ld [wd528],a ; zero the direction
+ ld [wPlayerMovingDirection],a ; zero the direction
jp OverworldLoop
.checkIfDownButtonIsPressed
ld a,[hJoyHeld] ; current joypad state
bit 7,a ; down button
jr z,.checkIfUpButtonIsPressed
- ld a,$01
- ld [wSpriteStateData1 + 3],a
- ld a,$04
+ ld a,1
+ ld [wSpriteStateData1 + 3],a ; delta Y
+ ld a,PLAYER_DIR_DOWN
jr .handleDirectionButtonPress
.checkIfUpButtonIsPressed
bit 6,a ; up button
jr z,.checkIfLeftButtonIsPressed
- ld a,$ff
- ld [wSpriteStateData1 + 3],a
- ld a,$08
+ ld a,-1
+ ld [wSpriteStateData1 + 3],a ; delta Y
+ ld a,PLAYER_DIR_UP
jr .handleDirectionButtonPress
.checkIfLeftButtonIsPressed
bit 5,a ; left button
jr z,.checkIfRightButtonIsPressed
- ld a,$ff
- ld [wSpriteStateData1 + 5],a
- ld a,$02
+ ld a,-1
+ ld [wSpriteStateData1 + 5],a ; delta X
+ ld a,PLAYER_DIR_LEFT
jr .handleDirectionButtonPress
.checkIfRightButtonIsPressed
bit 4,a ; right button
jr z,.noDirectionButtonsPressed
- ld a,$01
- ld [wSpriteStateData1 + 5],a
+ ld a,1 ; PLAYER_DIR_RIGHT
+ ld [wSpriteStateData1 + 5],a ; delta X
.handleDirectionButtonPress
- ld [wd52a],a ; new direction
+ ld [wPlayerDirection],a ; new direction
ld a,[wd730]
bit 7,a ; are we simulating button presses?
jr nz,.noDirectionChange ; ignore direction changes if we are
ld a,[wcc4b]
and a
jr z,.noDirectionChange
- ld a,[wd52a] ; new direction
+ ld a,[wPlayerDirection] ; new direction
ld b,a
- ld a,[wd529] ; old direction
+ ld a,[wPlayerLastStopDirection] ; old direction
cp b
jr z,.noDirectionChange
; the code below is strange
@@ -189,42 +187,42 @@ OverworldLoopLessDelay::
; also, it does a seemingly pointless loop afterwards
swap a ; put old direction in upper half
or b ; put new direction in lower half
- cp a,$48 ; change dir from down to up
+ cp a,(PLAYER_DIR_DOWN << 4) | PLAYER_DIR_UP ; change dir from down to up
jr nz,.notDownToUp
- ld a,$02
- ld [wd528],a
+ ld a,PLAYER_DIR_LEFT
+ ld [wPlayerMovingDirection],a
jr .oddLoop
.notDownToUp
- cp a,$84 ; change dir from up to down
+ cp a,(PLAYER_DIR_UP << 4) | PLAYER_DIR_DOWN ; change dir from up to down
jr nz,.notUpToDown
- ld a,$01
- ld [wd528],a
+ ld a,PLAYER_DIR_RIGHT
+ ld [wPlayerMovingDirection],a
jr .oddLoop
.notUpToDown
- cp a,$12 ; change dir from right to left
+ cp a,(PLAYER_DIR_RIGHT << 4) | PLAYER_DIR_LEFT ; change dir from right to left
jr nz,.notRightToLeft
- ld a,$04
- ld [wd528],a
+ ld a,PLAYER_DIR_DOWN
+ ld [wPlayerMovingDirection],a
jr .oddLoop
.notRightToLeft
- cp a,$21 ; change dir from left to right
+ cp a,(PLAYER_DIR_LEFT << 4) | PLAYER_DIR_RIGHT ; change dir from left to right
jr nz,.oddLoop
- ld a,$08
- ld [wd528],a
+ ld a,PLAYER_DIR_UP
+ ld [wPlayerMovingDirection],a
.oddLoop
ld hl,wFlags_0xcd60
set 2,[hl]
ld hl,wcc4b
dec [hl]
jr nz,.oddLoop
- ld a,[wd52a]
- ld [wd528],a
+ ld a,[wPlayerDirection]
+ ld [wPlayerMovingDirection],a
call NewBattle
jp c,.battleOccurred
jp OverworldLoop
.noDirectionChange
- ld a,[wd52a] ; current direction
- ld [wd528],a ; save direction
+ ld a,[wPlayerDirection] ; current direction
+ ld [wPlayerMovingDirection],a ; save direction
call UpdateSprites
ld a,[wWalkBikeSurfState]
cp a,$02 ; surfing
@@ -355,9 +353,7 @@ NewBattle:: ; 0683 (0:0683)
ld a,[wd72e]
bit 4,a
jr nz,.noBattle
- ld b, BANK(InitBattle)
- ld hl, InitBattle
- jp Bankswitch
+ jpba InitBattle
.noBattle
and a
ret
@@ -570,7 +566,7 @@ CheckMapConnections:: ; 07ba (0:07ba)
jp .loadNewMap
.checkEastMap
ld b,a
- ld a,[wd525] ; map width
+ ld a,[wCurrentMapWidth2] ; map width
cp b
jr nz,.checkNorthMap
ld a,[W_MAPCONN4PTR]
@@ -632,7 +628,7 @@ CheckMapConnections:: ; 07ba (0:07ba)
jp .loadNewMap
.checkSouthMap
ld b,a
- ld a,[wd524]
+ ld a,[wCurrentMapHeight2]
cp b
jr nz,.didNotEnterConnectedMap
ld a,[W_MAPCONN2PTR]
@@ -783,9 +779,7 @@ HandleFlyWarpOrDungeonWarp::
jp SpecialEnterMap
LeaveMapAnim::
- ld b, BANK(_LeaveMapAnim)
- ld hl, _LeaveMapAnim
- jp Bankswitch
+ jpba _LeaveMapAnim
LoadPlayerSpriteGraphics::
; Load sprite graphics based on whether the player is standing, biking, or surfing.
@@ -870,7 +864,7 @@ LoadTilesetTilePatternData:: ; 09e8 (0:09e8)
LoadTileBlockMap:: ; 09fc (0:09fc)
; fill C6E8-CBFB with the background tile
ld hl,wOverworldMap
- ld a,[wd3ad] ; background tile number
+ ld a,[wMapBackgroundTile]
ld d,a
ld bc,$0514
.backgroundTileLoop
@@ -1063,15 +1057,15 @@ LoadEastWestConnectionsTileMap:: ; 0b02 (0:0b02)
IsSpriteOrSignInFrontOfPlayer:: ; 0b23 (0:0b23)
xor a
ld [hSpriteIndexOrTextID],a
- ld a,[wd4b0] ; number of signs in the map
+ ld a,[wNumSigns]
and a
jr z,.extendRangeOverCounter
; if there are signs
predef GetTileAndCoordsInFrontOfPlayer ; get the coordinates in front of the player in de
- ld hl,wd4b1 ; start of sign coordinates
- ld a,[wd4b0] ; number of signs in the map
+ ld hl,wSignCoords
+ ld a,[wNumSigns]
ld b,a
- ld c,$00
+ ld c,0
.signLoop
inc c
ld a,[hli] ; sign Y
@@ -1087,8 +1081,8 @@ IsSpriteOrSignInFrontOfPlayer:: ; 0b23 (0:0b23)
; found sign
push hl
push bc
- ld hl,wd4d1 ; start of sign text ID's
- ld b,$00
+ ld hl,wSignTextIDs
+ ld b,0
dec c
add hl,bc
ld a,[hl]
@@ -1103,7 +1097,7 @@ IsSpriteOrSignInFrontOfPlayer:: ; 0b23 (0:0b23)
.extendRangeOverCounter
predef GetTileAndCoordsInFrontOfPlayer ; get the tile in front of the player in c
ld hl,W_TILESETTALKINGOVERTILES ; list of tiles that extend talking range (counter tiles)
- ld b,$03
+ ld b,3
ld d,$20 ; talking range in pixels (long range)
.counterTilesLoop
ld a,[hli]
@@ -1117,7 +1111,7 @@ IsSpriteOrSignInFrontOfPlayer:: ; 0b23 (0:0b23)
IsSpriteInFrontOfPlayer:: ; 0b6b (0:0b6b)
ld d,$10 ; talking range in pixels (normal range)
IsSpriteInFrontOfPlayer2:: ; 0b6d (0:0b6d)
- ld bc,$3c40 ; Y and X position of player sprite
+ lb bc, $3c, $40 ; Y and X position of player sprite
ld a,[wSpriteStateData1 + 9] ; direction the player is facing
.checkIfPlayerFacingUp
cp SPRITE_FACING_UP
@@ -1126,7 +1120,7 @@ IsSpriteInFrontOfPlayer2:: ; 0b6d (0:0b6d)
ld a,b
sub d
ld b,a
- ld a,$08
+ ld a,PLAYER_DIR_UP
jr .doneCheckingDirection
.checkIfPlayerFacingDown
cp SPRITE_FACING_DOWN
@@ -1135,7 +1129,7 @@ IsSpriteInFrontOfPlayer2:: ; 0b6d (0:0b6d)
ld a,b
add d
ld b,a
- ld a,$04
+ ld a,PLAYER_DIR_DOWN
jr .doneCheckingDirection
.checkIfPlayerFacingRight
cp SPRITE_FACING_RIGHT
@@ -1144,16 +1138,16 @@ IsSpriteInFrontOfPlayer2:: ; 0b6d (0:0b6d)
ld a,c
add d
ld c,a
- ld a,$01
+ ld a,PLAYER_DIR_RIGHT
jr .doneCheckingDirection
.playerFacingLeft
; facing left
ld a,c
sub d
ld c,a
- ld a,$02
+ ld a,PLAYER_DIR_LEFT
.doneCheckingDirection
- ld [wd52a],a
+ ld [wPlayerDirection],a
ld a,[W_NUMSPRITES] ; number of sprites
and a
ret z
@@ -1208,7 +1202,7 @@ CollisionCheckOnLand:: ; 0bd1 (0:0bd1)
ld a,[wSimulatedJoypadStatesIndex]
and a
jr nz,.noCollision ; no collisions when the player's movements are being controlled by the game
- ld a,[wd52a] ; the direction that the player is trying to go in
+ ld a,[wPlayerDirection] ; the direction that the player is trying to go in
ld d,a
ld a,[wSpriteStateData1 + 12] ; the player sprite's collision data (bit field) (set in the sprite movement code)
and d ; check if a sprite is in the direction the player is trying to go
@@ -1899,7 +1893,7 @@ CollisionCheckOnWater:: ; 0fb7 (0:0fb7)
ld a,[wd730]
bit 7,a
jp nz,.noCollision ; return and clear carry if button presses are being simulated
- ld a,[wd52a] ; the direction that the player is trying to go in
+ ld a,[wPlayerDirection] ; the direction that the player is trying to go in
ld d,a
ld a,[wSpriteStateData1 + 12] ; the player sprite's collision data (bit field) (set in the sprite movement code)
and d ; check if a sprite is in the direction the player is trying to go
@@ -2079,17 +2073,17 @@ LoadMapHeader:: ; 107c (0:107c)
call CopyMapConnectionHeader
.getObjectDataPointer
ld a,[hli]
- ld [wd3a9],a
+ ld [wObjectDataPointerTemp],a
ld a,[hli]
- ld [wd3aa],a
+ ld [wObjectDataPointerTemp + 1],a
push hl
- ld a,[wd3a9]
+ ld a,[wObjectDataPointerTemp]
ld l,a
- ld a,[wd3aa]
+ ld a,[wObjectDataPointerTemp + 1]
ld h,a ; hl = base of object data
- ld de,wd3ad ; background tile ID
+ ld de,wMapBackgroundTile
ld a,[hli]
- ld [de],a ; save background tile ID
+ ld [de],a
.loadWarpData
ld a,[hli]
ld [wNumberOfWarps],a
@@ -2109,16 +2103,16 @@ LoadMapHeader:: ; 107c (0:107c)
jr nz,.warpLoop
.loadSignData
ld a,[hli] ; number of signs
- ld [wd4b0],a ; save the number of signs
+ ld [wNumSigns],a
and a ; are there any signs?
jr z,.loadSpriteData ; if not, skip this
ld c,a
- ld de,wd4d1 ; base address of sign text IDs
+ ld de,wSignTextIDs
ld a,d
- ld [$ff95],a
+ ld [hSignCoordPointer],a
ld a,e
- ld [$ff96],a
- ld de,wd4b1 ; base address of sign coordinates
+ ld [hSignCoordPointer + 1],a
+ ld de,wSignCoords
.signLoop
ld a,[hli]
ld [de],a
@@ -2127,17 +2121,17 @@ LoadMapHeader:: ; 107c (0:107c)
ld [de],a
inc de
push de
- ld a,[$ff95]
+ ld a,[hSignCoordPointer]
ld d,a
- ld a,[$ff96]
+ ld a,[hSignCoordPointer + 1]
ld e,a
ld a,[hli]
ld [de],a
inc de
ld a,d
- ld [$ff95],a
+ ld [hSignCoordPointer],a
ld a,e
- ld [$ff96],a
+ ld [hSignCoordPointer + 1],a
pop de
dec c
jr nz,.signLoop
@@ -2265,10 +2259,10 @@ LoadMapHeader:: ; 107c (0:107c)
pop hl ; restore hl from before going to the warp/sign/sprite data (this value was saved for seemingly no purpose)
ld a,[W_CURMAPHEIGHT] ; map height in 4x4 tile blocks
add a ; double it
- ld [wd524],a ; store map height in 2x2 tile blocks
+ ld [wCurrentMapHeight2],a ; store map height in 2x2 tile blocks
ld a,[W_CURMAPWIDTH] ; map width in 4x4 tile blocks
add a ; double it
- ld [wd525],a ; map width in 2x2 tile blocks
+ ld [wCurrentMapWidth2],a ; map width in 2x2 tile blocks
ld a,[W_CURMAP]
ld c,a
ld b,$00
diff --git a/hram.asm b/hram.asm
index 8bbf7150..0b7274ad 100644
--- a/hram.asm
+++ b/hram.asm
@@ -82,6 +82,9 @@ hTilePlayerStandingOn EQU $FF93
hSpritePriority EQU $FF94
+; 2 bytes
+hSignCoordPointer EQU $FF95
+
hNPCMovementDirections2Index EQU $FF95
; CalcPositionOfPlayerRelativeToNPC
@@ -137,6 +140,9 @@ hNPCPlayerRelativePosPerspective EQU $FF9B
; 1 = target is to the west
hNPCPlayerRelativePosFlags EQU $FF9D
+; some code zeroes this for no reason when writing a coin amount
+hUnusedCoinsByte EQU $FF9F
+
hMoney EQU $FF9F ; 3-byte BCD number
hCoins EQU $FFA0 ; 2-byte BCD number
diff --git a/macros.asm b/macros.asm
index ba83e73a..659b0722 100644
--- a/macros.asm
+++ b/macros.asm
@@ -53,6 +53,18 @@ callab: MACRO
call Bankswitch
ENDM
+jpba: MACRO
+ ld b, BANK(\1)
+ ld hl, \1
+ jp Bankswitch
+ ENDM
+
+jpab: MACRO
+ ld hl, \1
+ ld b, BANK(\1)
+ jp Bankswitch
+ ENDM
+
bcd2: MACRO
dn ((\1) / 1000) % 10, ((\1) / 100) % 10
dn ((\1) / 10) % 10, (\1) % 10
diff --git a/main.asm b/main.asm
index d45b8825..2261acb8 100755
--- a/main.asm
+++ b/main.asm
@@ -2038,7 +2038,7 @@ _DisplayPokedex: ; 7c18 (1:7c18)
ld a, [wd11e]
dec a
ld c, a
- ld b, $1
+ ld b, FLAG_SET
ld hl, wPokedexSeen
predef FlagActionPredef
ld a, $1
@@ -3235,7 +3235,7 @@ MarkTownVisitedAndLoadMissableObjects: ; f113 (3:7113)
cp ROUTE_1
jr nc, .notInTown
ld c, a
- ld b, $1
+ ld b, FLAG_SET
ld hl, W_TOWNVISITEDFLAG ; mark town as visited (for flying)
predef FlagActionPredef
.notInTown
@@ -3319,7 +3319,7 @@ InitializeMissableObjectsFlags: ; f175 (3:7175)
ld hl, W_MISSABLEOBJECTFLAGS
ld a, [wd048]
ld c, a
- ld b, $1
+ ld b, FLAG_SET
call MissableObjectFlagAction ; set flag iff Item is hidden
.asm_f19d
ld hl, wd048
@@ -3343,7 +3343,7 @@ IsObjectHidden: ; f1a6 (3:71a6)
ld a, [hli]
jr nz, .loop
ld c, a
- ld b, $2
+ ld b, FLAG_TEST
ld hl, W_MISSABLEOBJECTFLAGS
call MissableObjectFlagAction
ld a, c
@@ -3362,7 +3362,7 @@ ShowObject2:
ld hl, W_MISSABLEOBJECTFLAGS
ld a, [wcc4d]
ld c, a
- ld b, $0
+ ld b, FLAG_RESET
call MissableObjectFlagAction ; reset "removed" flag
jp UpdateSprites
@@ -3372,7 +3372,7 @@ HideObject: ; f1d7 (3:71d7)
ld hl, W_MISSABLEOBJECTFLAGS
ld a, [wcc4d]
ld c, a
- ld b, $1
+ ld b, FLAG_SET
call MissableObjectFlagAction ; set "removed" flag
jp UpdateSprites
@@ -3642,7 +3642,7 @@ _AddPartyMon: ; f2e5 (3:72e5)
ld a, [wd11e]
dec a
ld c, a
- ld b, $2
+ ld b, FLAG_TEST
ld hl, wPokedexOwned
call FlagAction
ld a, c
@@ -3650,7 +3650,7 @@ _AddPartyMon: ; f2e5 (3:72e5)
ld a, [wd11e]
dec a
ld c, a
- ld b, $1
+ ld b, FLAG_SET
push bc
call FlagAction
pop bc
@@ -3882,7 +3882,7 @@ _AddEnemyMonToPlayerParty: ; f49d (3:749d)
ld a, [wd11e]
dec a
ld c, a
- ld b, $1
+ ld b, FLAG_SET
ld hl, wPokedexOwned
push bc
call FlagAction ; add to owned pokemon
diff --git a/scripts/celadongamecorner.asm b/scripts/celadongamecorner.asm
index 53e55872..c8d07058 100755
--- a/scripts/celadongamecorner.asm
+++ b/scripts/celadongamecorner.asm
@@ -170,7 +170,7 @@ CeladonGameCornerText2: ; 48ca9 (12:4ca9)
ld c, $3
predef SubBCDPredef
xor a
- ld [hCoins - 1], a
+ ld [hUnusedCoinsByte], a
ld [hCoins], a
ld a, $50
ld [hCoins + 1], a
@@ -238,7 +238,7 @@ CeladonGameCornerText5: ; 48d4a (12:4d4a)
call Has9990Coins
jr nc, .asm_48d8e
xor a
- ld [hCoins - 1], a
+ ld [hUnusedCoinsByte], a
ld [hCoins], a
ld a, $10
ld [hCoins + 1], a
@@ -320,7 +320,7 @@ CeladonGameCornerText9: ; 48dd9 (12:4dd9)
call Has9990Coins
jr nc, .asm_48e18
xor a
- ld [hCoins - 1], a
+ ld [hUnusedCoinsByte], a
ld [hCoins], a
ld a, $20
ld [hCoins + 1], a
@@ -373,7 +373,7 @@ CeladonGameCornerText10: ; 48e3b (12:4e3b)
call Has9990Coins
jr z, .asm_48e7a
xor a
- ld [hCoins - 1], a
+ ld [hUnusedCoinsByte], a
ld [hCoins], a
ld a, $20
ld [hCoins + 1], a
diff --git a/scripts/celadonmartelevator.asm b/scripts/celadonmartelevator.asm
index a0aa576d..c8ff1a6d 100755
--- a/scripts/celadonmartelevator.asm
+++ b/scripts/celadonmartelevator.asm
@@ -55,9 +55,7 @@ CeldaonMartElevatorWarpMaps: ; 4864a (12:464a)
db $02, CELADON_MART_5
CeladonMartElevatorScript_48654: ; 48654 (12:4654)
- ld b, BANK(ShakeElevator)
- ld hl, ShakeElevator
- jp Bankswitch
+ jpba ShakeElevator
CeladonMartElevatorTextPointers: ; 4865c (12:465c)
dw CeladonMartElevatorText1
diff --git a/scripts/celadonmartroof.asm b/scripts/celadonmartroof.asm
index b0afbee0..f83e466d 100755
--- a/scripts/celadonmartroof.asm
+++ b/scripts/celadonmartroof.asm
@@ -135,9 +135,7 @@ CeladonMartRoofScript_4840c: ; 4840c (12:440c)
jp PrintText
RemoveItemByIDBank12: ; 484e6 (12:44e6)
- ld b, BANK(RemoveItemByID)
- ld hl, RemoveItemByID
- jp Bankswitch
+ jpba RemoveItemByID
CeladonMartRoofText_484ee: ; 484ee (12:44ee)
TX_FAR _CeladonMartRoofText_484ee
diff --git a/scripts/ceruleancity.asm b/scripts/ceruleancity.asm
index 2c7bd449..48480167 100755
--- a/scripts/ceruleancity.asm
+++ b/scripts/ceruleancity.asm
@@ -44,15 +44,15 @@ CeruleanCityScript0: ; 194c8 (6:54c8)
jr nc, .asm_194f7
ld a, [wCoordIndex]
cp $1
- ld a, $8
+ ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN
jr nz, .asm_194e6
- ld a, $4
+ ld a, PLAYER_DIR_DOWN
ld b, SPRITE_FACING_UP
.asm_194e6
- ld [wd528], a
+ ld [wPlayerMovingDirection], a
ld a, b
- ld [wSpriteStateData1 + $29], a
+ ld [wSpriteStateData1 + 2 * $10 + $9], a
call Delay3
ld a, $2
ld [hSpriteIndexOrTextID], a
diff --git a/scripts/cinnabargym.asm b/scripts/cinnabargym.asm
index 9b308bd3..213568d5 100755
--- a/scripts/cinnabargym.asm
+++ b/scripts/cinnabargym.asm
@@ -54,14 +54,14 @@ CinnabarGymScript0: ; 757ae (1d:57ae)
ld [H_SPRITEINDEX], a
cp $4
jr nz, .asm_757c3
- ld a, $4
- ld [wd528], a
+ ld a, PLAYER_DIR_DOWN
+ ld [wPlayerMovingDirection], a
ld de, MovementData_757d7
jr .asm_757cb
.asm_757c3
ld de, MovementData_757da
- ld a, $1
- ld [wd528], a
+ ld a, PLAYER_DIR_RIGHT
+ ld [wPlayerMovingDirection], a
.asm_757cb
call MoveSprite
ld a, $1
@@ -99,7 +99,7 @@ CinnabarGymScript2: ; 757f6 (1d:57f6)
ld a, [wTrainerHeaderFlagBit]
ld [$ffdb], a
ld c, a
- ld b, $2
+ ld b, FLAG_TEST
ld hl, wd79a
call CinnabarGymScript_757f1
ld a, c
@@ -113,13 +113,13 @@ CinnabarGymScript2: ; 757f6 (1d:57f6)
ld a, [wTrainerHeaderFlagBit]
ld [$ffdb], a
ld c, a
- ld b, $1
+ ld b, FLAG_SET
ld hl, wd79a
call CinnabarGymScript_757f1
ld a, [wTrainerHeaderFlagBit]
sub $2
ld c, a
- ld b, $1
+ ld b, FLAG_SET
ld hl, wd79c
call CinnabarGymScript_757f1
call Func_3ead
diff --git a/scripts/cinnabarisland.asm b/scripts/cinnabarisland.asm
index 70ea25a5..92c0fc6b 100755
--- a/scripts/cinnabarisland.asm
+++ b/scripts/cinnabarisland.asm
@@ -24,8 +24,8 @@ CinnabarIslandScript0: ; 1ca38 (7:4a38)
ld a, [W_XCOORD]
cp $12
ret nz
- ld a, $8
- ld [wd528], a
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
ld a, $8
ld [hSpriteIndexOrTextID], a
call DisplayTextID
diff --git a/scripts/fightingdojo.asm b/scripts/fightingdojo.asm
index 8a4a0464..c21dde00 100755
--- a/scripts/fightingdojo.asm
+++ b/scripts/fightingdojo.asm
@@ -42,8 +42,8 @@ FightingDojoScript1: ; 5cd83 (17:4d83)
ret nz
ld a, $1
ld [wcf0d], a
- ld a, $1
- ld [wd528], a
+ ld a, PLAYER_DIR_RIGHT
+ ld [wPlayerMovingDirection], a
ld a, $1
ld [H_SPRITEINDEX], a
ld a, SPRITE_FACING_LEFT
@@ -61,8 +61,8 @@ FightingDojoScript3: ; 5cdc6 (17:4dc6)
ld a, [wcf0d]
and a
jr z, .asm_5cde4
- ld a, $1
- ld [wd528], a
+ ld a, PLAYER_DIR_RIGHT
+ ld [wPlayerMovingDirection], a
ld a, $1
ld [H_SPRITEINDEX], a
ld a, SPRITE_FACING_LEFT
diff --git a/scripts/gary.asm b/scripts/gary.asm
index 476a59b0..d01161da 100755
--- a/scripts/gary.asm
+++ b/scripts/gary.asm
@@ -139,8 +139,8 @@ GaryScript5: ; 7601a (1d:601a)
ld a, [wd730]
bit 0, a
ret nz
- ld a, $2
- ld [wd528], a
+ ld a, PLAYER_DIR_LEFT
+ ld [wPlayerMovingDirection], a
ld a, $1
ld [H_SPRITEINDEX], a
ld a, SPRITE_FACING_LEFT
diff --git a/scripts/halloffameroom.asm b/scripts/halloffameroom.asm
index 680ebdd9..bc0d19e1 100755
--- a/scripts/halloffameroom.asm
+++ b/scripts/halloffameroom.asm
@@ -80,19 +80,19 @@ HallofFameRoomScript1: ; 5a52b (16:652b)
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
- ld a, $1
- ld [wd528], a
+ ld a, PLAYER_DIR_RIGHT
+ ld [wPlayerMovingDirection], a
ld a, $1
ld [H_SPRITEINDEX], a
call SetSpriteMovementBytesToFF
- ld a, $8
+ ld a, SPRITE_FACING_LEFT
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
call Delay3
xor a
ld [wJoyIgnore], a
- inc a
- ld [wd528], a
+ inc a ; PLAYER_DIR_RIGHT
+ ld [wPlayerMovingDirection], a
ld a, $1
ld [hSpriteIndexOrTextID], a
call DisplayTextID
diff --git a/scripts/lab4.asm b/scripts/lab4.asm
index 6d4bd923..21fee0c6 100755
--- a/scripts/lab4.asm
+++ b/scripts/lab4.asm
@@ -112,6 +112,4 @@ Lab4Text2: ; 75dda (1d:5dda)
jp TextScriptEnd
LoadFossilItemAndMonNameBank1D: ; 75de8 (1d:5de8)
- ld b, BANK(LoadFossilItemAndMonName)
- ld hl, LoadFossilItemAndMonName
- jp Bankswitch
+ jpba LoadFossilItemAndMonName
diff --git a/scripts/oakslab.asm b/scripts/oakslab.asm
index 226c2d2d..ae6da40d 100755
--- a/scripts/oakslab.asm
+++ b/scripts/oakslab.asm
@@ -178,8 +178,8 @@ OaksLabScript6: ; 1cc36 (7:4c36)
ld a, D_UP
ld [wSimulatedJoypadStatesEnd], a
call StartSimulatingJoypadStates
- ld a, $8
- ld [wd528], a
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
ld a, $7
ld [W_OAKSLABCURSCRIPT], a
@@ -354,8 +354,8 @@ OaksLabScript10: ; 1cd6d (7:4d6d)
xor a ; SPRITE_FACING_DOWN
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, $8
- ld [wd528], a
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
@@ -414,8 +414,8 @@ OaksLabScript11: ; 1cdb9 (7:4db9)
set 7, [hl]
xor a
ld [wJoyIgnore], a
- ld a, $8
- ld [wd528], a
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
ld a, $c
ld [W_OAKSLABCURSCRIPT], a
ret
@@ -423,8 +423,8 @@ OaksLabScript11: ; 1cdb9 (7:4db9)
OaksLabScript12: ; 1ce03 (7:4e03)
ld a, $f0
ld [wJoyIgnore], a
- ld a, $8
- ld [wd528], a
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
call UpdateSprites
ld a, $1
ld [wSpriteIndex], a
diff --git a/scripts/pallettown.asm b/scripts/pallettown.asm
index 327a32ff..b463c4d6 100755
--- a/scripts/pallettown.asm
+++ b/scripts/pallettown.asm
@@ -28,8 +28,8 @@ PalletTownScript0: ; 18e81 (6:4e81)
ret nz
xor a
ld [hJoyHeld],a
- ld a,4
- ld [wd528],a
+ ld a,PLAYER_DIR_DOWN
+ ld [wPlayerMovingDirection],a
ld a,$FF
call PlaySound ; stop music
ld a, BANK(Music_MeetProfOak)
@@ -190,8 +190,8 @@ OakAppearsText: ; 18fb0 (6:4fb0)
ld [wEmotionBubbleSpriteIndex],a ; player's sprite
ld [wWhichEmotionBubble],a ; EXCLAMATION_BUBBLE
predef EmotionBubble
- ld a,4
- ld [wd528],a
+ ld a,PLAYER_DIR_DOWN
+ ld [wPlayerMovingDirection],a
jp TextScriptEnd
OakWalksUpText: ; 18fce (6:4fce)
diff --git a/scripts/pokemontower2.asm b/scripts/pokemontower2.asm
index 8520b10b..6a54d549 100755
--- a/scripts/pokemontower2.asm
+++ b/scripts/pokemontower2.asm
@@ -33,15 +33,15 @@ PokemonTower2Script0: ; 6050f (18:450f)
res 6, [hl]
ld a, [wCoordIndex]
cp $1
- ld a, $8
+ ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN
jr nz, .asm_60544
ld hl, wd764
set 6, [hl]
- ld a, $2
+ ld a, PLAYER_DIR_LEFT
ld b, SPRITE_FACING_RIGHT
.asm_60544
- ld [wd528], a
+ ld [wPlayerMovingDirection], a
ld a, $1
ld [H_SPRITEINDEX], a
ld a, b
diff --git a/scripts/redshouse2f.asm b/scripts/redshouse2f.asm
index 8fcdc66e..2335e6d1 100755
--- a/scripts/redshouse2f.asm
+++ b/scripts/redshouse2f.asm
@@ -11,8 +11,8 @@ RedsHouse2FScriptPointers: ; 5c0bc (17:40bc)
RedsHouse2FScript0: ; 5c0c0 (17:40c0)
xor a
ld [hJoyHeld],a
- ld a,8
- ld [wd528],a
+ ld a,PLAYER_DIR_UP
+ ld [wPlayerMovingDirection],a
ld a,1
ld [W_REDSHOUSE2CURSCRIPT],a
ret
diff --git a/scripts/route22.asm b/scripts/route22.asm
index f125030e..01f8bee8 100755
--- a/scripts/route22.asm
+++ b/scripts/route22.asm
@@ -67,8 +67,8 @@ Route22Script0: ; 50f00 (14:4f00)
ld [hJoyHeld], a
ld a, $f0
ld [wJoyIgnore], a
- ld a, $2
- ld [wd528], a
+ ld a, PLAYER_DIR_LEFT
+ ld [wPlayerMovingDirection], a
ld a, [wd7eb]
bit 0, a ; is this the rival battle at the beginning of the game?
jr nz, .firstRivalBattle
@@ -111,8 +111,8 @@ Route22Script1: ; 50f62 (14:4f62)
ld a, [wcf0d]
cp $1
jr nz, .asm_50f78
- ld a, $4
- ld [wd528], a
+ ld a, PLAYER_DIR_DOWN
+ ld [wPlayerMovingDirection], a
ld a, SPRITE_FACING_UP
jr .asm_50f7a
.asm_50f78
@@ -270,13 +270,13 @@ Route22Script4: ; 51087 (14:5087)
ld a, [wcf0d]
cp $1
jr nz, .asm_510a1
- ld a, $4
- ld [wd528], a
+ ld a, PLAYER_DIR_DOWN
+ ld [wPlayerMovingDirection], a
ld a, SPRITE_FACING_UP
jr .asm_510a8
.asm_510a1
- ld a, $2
- ld [wd528], a
+ ld a, PLAYER_DIR_LEFT
+ ld [wPlayerMovingDirection], a
ld a, SPRITE_FACING_RIGHT
.asm_510a8
ld [hSpriteFacingDirection], a
@@ -314,13 +314,13 @@ Route22Script5: ; 510df (14:50df)
ld a, [wcf0d]
cp $1
jr nz, .asm_510fb
- ld a, $4
- ld [wd528], a
+ ld a, PLAYER_DIR_DOWN
+ ld [wPlayerMovingDirection], a
ld a, SPRITE_FACING_UP
jr .asm_51102
.asm_510fb
- ld a, $2
- ld [wd528], a
+ ld a, PLAYER_DIR_LEFT
+ ld [wPlayerMovingDirection], a
ld a, SPRITE_FACING_RIGHT
.asm_51102
ld [hSpriteFacingDirection], a
diff --git a/scripts/route23.asm b/scripts/route23.asm
index a258b88a..cfcf41f5 100755
--- a/scripts/route23.asm
+++ b/scripts/route23.asm
@@ -52,7 +52,7 @@ Route23Script0: ; 51219 (14:5219)
ld [hSpriteIndexOrTextID], a
ld a, c
ld [wWhichBadge], a
- ld b, $2
+ ld b, FLAG_TEST
ld hl, wd7ed
predef FlagActionPredef
ld a, c
@@ -193,7 +193,7 @@ Route23Script_51346: ; 51346 (14:5346)
ld a, [wWhichBadge]
inc a
ld c, a
- ld b, $2
+ ld b, FLAG_TEST
ld hl, W_OBTAINEDBADGES
predef FlagActionPredef
ld a, c
@@ -210,7 +210,7 @@ Route23Script_51346: ; 51346 (14:5346)
call PrintText
ld a, [wWhichBadge]
ld c, a
- ld b, $1
+ ld b, FLAG_SET
ld hl, wd7ed
predef FlagActionPredef
ld a, $2
diff --git a/scripts/route5gate.asm b/scripts/route5gate.asm
index 1ccf27af..35f3a020 100755
--- a/scripts/route5gate.asm
+++ b/scripts/route5gate.asm
@@ -22,8 +22,8 @@ Route5GateScript0: ; 1df50 (7:5f50)
ld hl, CoordsData_1df8f
call ArePlayerCoordsInArray
ret nc
- ld a, $2
- ld [wd528], a
+ ld a, PLAYER_DIR_LEFT
+ ld [wPlayerMovingDirection], a
xor a
ld [hJoyHeld], a
callba RemoveGuardDrink
diff --git a/scripts/route6gate.asm b/scripts/route6gate.asm
index d1aed2df..a4b6149c 100755
--- a/scripts/route6gate.asm
+++ b/scripts/route6gate.asm
@@ -16,8 +16,8 @@ Route6GateScript0: ; 1e04e (7:604e)
ld hl, CoordsData_1e08c
call ArePlayerCoordsInArray
ret nc
- ld a, $1
- ld [wd528], a
+ ld a, PLAYER_DIR_RIGHT
+ ld [wPlayerMovingDirection], a
xor a
ld [hJoyHeld], a
callba RemoveGuardDrink
diff --git a/scripts/route7gate.asm b/scripts/route7gate.asm
index d73dc566..b55f813c 100755
--- a/scripts/route7gate.asm
+++ b/scripts/route7gate.asm
@@ -28,8 +28,8 @@ Route7GateScript0: ; 1e128 (7:6128)
ld hl, CoordsData_1e167
call ArePlayerCoordsInArray
ret nc
- ld a, $8
- ld [wd528], a
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
xor a
ld [hJoyHeld], a
callba RemoveGuardDrink
diff --git a/scripts/route8gate.asm b/scripts/route8gate.asm
index 261a7a1e..96bfa875 100755
--- a/scripts/route8gate.asm
+++ b/scripts/route8gate.asm
@@ -27,8 +27,8 @@ Route8GateScript0: ; 1e1ee (7:61ee)
ld hl, CoordsData_1e22c
call ArePlayerCoordsInArray
ret nc
- ld a, $2
- ld [wd528], a
+ ld a, PLAYER_DIR_LEFT
+ ld [wPlayerMovingDirection], a
xor a
ld [hJoyHeld], a
callba RemoveGuardDrink
diff --git a/scripts/safarizoneentrance.asm b/scripts/safarizoneentrance.asm
index 2e5b55f7..ab54dd8a 100755
--- a/scripts/safarizoneentrance.asm
+++ b/scripts/safarizoneentrance.asm
@@ -72,8 +72,8 @@ SafariZoneEntranceScriptPointers: ; 751d9 (1d:51d9)
ret
.SafariZoneEntranceScript5
- ld a, $4
- ld [wd528], a
+ ld a, PLAYER_DIR_DOWN
+ ld [wPlayerMovingDirection], a
ld hl, wd790
bit 6, [hl]
res 6, [hl]
diff --git a/scripts/silphco11.asm b/scripts/silphco11.asm
index b4f94b13..62591476 100755
--- a/scripts/silphco11.asm
+++ b/scripts/silphco11.asm
@@ -199,7 +199,7 @@ MovementData_62216: ; 62216 (18:6216)
db $FF
SilphCo11Script_6221a: ; 6221a (18:621a)
- ld [wd528], a
+ ld [wPlayerMovingDirection], a
ld a, $3
ld [H_SPRITEINDEX], a
ld a, b
@@ -213,11 +213,11 @@ SilphCo11Script5: ; 62227 (18:6227)
ld a, [wcf0d]
cp $1
jr z, .asm_6223c
- ld a, $2
+ ld a, PLAYER_DIR_LEFT
ld b, SPRITE_FACING_RIGHT
jr .asm_62240
.asm_6223c
- ld a, $8
+ ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN
.asm_62240
call SilphCo11Script_6221a
@@ -247,11 +247,11 @@ SilphCo11Script3: ; 6226a (18:626a)
ld a, [wcf0d]
cp $1
jr z, .asm_62284
- ld a, $2
+ ld a, PLAYER_DIR_LEFT
ld b, SPRITE_FACING_RIGHT
jr .asm_62288
.asm_62284
- ld a, $8
+ ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN
.asm_62288
call SilphCo11Script_6221a
diff --git a/scripts/silphco7.asm b/scripts/silphco7.asm
index 5043b947..78d6e0d7 100755
--- a/scripts/silphco7.asm
+++ b/scripts/silphco7.asm
@@ -127,8 +127,8 @@ SilphCo7Script0: ; 51c23 (14:5c23)
ld [hJoyHeld], a
ld a, $f0
ld [wJoyIgnore], a
- ld a, $4
- ld [wd528], a
+ ld a, PLAYER_DIR_DOWN
+ ld [wPlayerMovingDirection], a
ld a, $ff
ld [wc0ee], a
call PlaySound
@@ -209,8 +209,8 @@ SilphCo7Script4: ; 51cc8 (14:5cc8)
ld [wJoyIgnore], a
ld hl, wd82f
set 0, [hl]
- ld a, $4
- ld [wd528], a
+ ld a, PLAYER_DIR_DOWN
+ ld [wPlayerMovingDirection], a
ld a, $9
ld [H_SPRITEINDEX], a
ld a, SPRITE_FACING_UP
diff --git a/scripts/ssanne2.asm b/scripts/ssanne2.asm
index d4651a22..bc13d4b6 100755
--- a/scripts/ssanne2.asm
+++ b/scripts/ssanne2.asm
@@ -74,8 +74,8 @@ SSAnne2Script_61416: ; 61416 (18:5416)
ld a, [W_XCOORD]
cp $25
jr nz, .asm_61426
- ld a, $2
- ld [wd528], a
+ ld a, PLAYER_DIR_LEFT
+ ld [wPlayerMovingDirection], a
ld a, SPRITE_FACING_RIGHT
jr .asm_61427
.asm_61426
diff --git a/scripts/viridiangym.asm b/scripts/viridiangym.asm
index 7a577095..40484d21 100755
--- a/scripts/viridiangym.asm
+++ b/scripts/viridiangym.asm
@@ -128,9 +128,7 @@ ViridianGymScript4: ; 7496b (1d:496b)
ld [W_CURMAPSCRIPT], a
ret
.asm_74980
- ld b, BANK(LoadSpinnerArrowTiles)
- ld hl, LoadSpinnerArrowTiles
- jp Bankswitch
+ jpba LoadSpinnerArrowTiles
ViridianGymScript3: ; 74988 (1d:4988)
ld a, [W_ISINBATTLE]
diff --git a/wram.asm b/wram.asm
index f089352b..b43f3845 100755
--- a/wram.asm
+++ b/wram.asm
@@ -733,6 +733,8 @@ wWhichTrade:: ; cd3d
; which entry from TradeMons to select
wTrainerSpriteOffset:: ; cd3d
+
+wUnusedCD3D:: ; cd3d
ds 1
wSSAnneSmokeX:: ; cd3e
@@ -1699,7 +1701,11 @@ W_MONHLEARNSET:: ; d0cc
flag_array 50 + 5
ds 1
-wd0d4:: ds 3 ; temp storage for hTilesetType
+wSavedTilesetType:: ; d0d4
+; saved at the start of a battle and then written back at the end of the battle
+ ds 1
+
+ ds 2
W_MONHPADDING:: ; d0d7
@@ -2064,9 +2070,14 @@ W_SPRITESETID:: ; d3a8
; sprite set ID for the current map
ds 1
-wd3a9:: ds 1 ; used when getting the object data pointer
-wd3aa:: ds 3 ; second part of the pointer
-wd3ad:: ds 1 ; used as the beginning value for copying warp data
+wObjectDataPointerTemp:: ; d3a9
+ ds 2
+
+ ds 2
+
+wMapBackgroundTile:: ; d3ad
+; the tile shown outside the boundaries of the map
+ ds 1
wNumberOfWarps:: ; d3ae
; number of warps in current map
@@ -2082,9 +2093,17 @@ wDestinationWarpID:: ; d42f
ds 128
-wd4b0:: ds 1 ; number of signs on the map
-wd4b1:: ds 32 ; starting address for sign coords
-wd4d1:: ds 16 ; starting address for sign text IDs
+wNumSigns:: ; d4b0
+; number of signs in the current map (up to 16)
+ ds 1
+
+wSignCoords:: ; d4b1
+; 2 bytes each
+; Y, X
+ ds 32
+
+wSignTextIDs:: ; d4d1
+ ds 16
W_NUMSPRITES:: ; d4e1
; number of sprites on the current map
@@ -2105,16 +2124,35 @@ W_MAPSPRITEEXTRADATA:: ; d504
; two bytes per sprite (trainer class/item ID, trainer set ID)
ds 32
-wd524:: ds 1 ; map height in 2x2 metatiles, also used with checking connections
-wd525:: ds 1 ; map width in 2x2 metatiles, also used with checking connections
+wCurrentMapHeight2:: ; d524
+; map height in 2x2 meta-tiles
+ ds 1
+
+wCurrentMapWidth2:: ; d525
+; map width in 2x2 meta-tiles
+ ds 1
wMapViewVRAMPointer:: ; d526
; the address of the upper left corner of the visible portion of the BG tile map in VRAM
ds 2
-wd528:: ds 1 ; additional storage for directions
-wd529:: ds 1 ; same case as above, but used differently
-wd52a:: ds 1 ; same case as above
+; In the comments for the player direction variables below, "moving" refers to
+; both walking and changing facing direction without taking a step.
+
+wPlayerMovingDirection:: ; d528
+; if the player is moving, the current direction
+; if the player is not moving, zero
+; map scripts write to this in order to change the player's facing direction
+ ds 1
+
+wPlayerLastStopDirection:: ; d529
+; the direction in which the player was moving before the player last stopped
+ ds 1
+
+wPlayerDirection:: ; d52a
+; if the player is moving, the current direction
+; if the player is not moving, the last the direction in which the player moved
+ ds 1
W_TILESETBANK:: ; d52b
ds 1