diff options
Diffstat (limited to 'engine')
114 files changed, 1353 insertions, 1353 deletions
diff --git a/engine/battle/animations.asm b/engine/battle/animations.asm index 78301b2e..c9f53961 100755 --- a/engine/battle/animations.asm +++ b/engine/battle/animations.asm @@ -163,7 +163,7 @@ DrawFrameBlock: PlayAnimation: xor a - ld [hROMBankTemp], a ; it looks like nothing reads this + ldh [hROMBankTemp], a ; it looks like nothing reads this ld [wSubAnimTransform], a ld a, [wAnimationID] ; get animation number dec a @@ -241,15 +241,15 @@ PlayAnimation: ld l, c ld h, b push hl - ld a, [rOBP0] + ldh a, [rOBP0] push af ld a, [wAnimPalette] - ld [rOBP0], a + ldh [rOBP0], a call LoadAnimationTileset call LoadSubanimation call PlaySubanimation pop af - ld [rOBP0], a + ldh [rOBP0], a .nextAnimationCommand pop hl jr .animationLoop @@ -308,7 +308,7 @@ LoadSubanimation: ; sets the transform to the subanimation type if it's the enemy's turn GetSubanimationTransform1: ld b, a - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, b ret nz @@ -319,7 +319,7 @@ GetSubanimationTransform1: ; sets the transform to 2 (i.e. horizontal and vertical flip) if it's the player's turn ; sets the transform to 0 (i.e. no transform) if it's the enemy's turn GetSubanimationTransform2: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, 2 << 5 ret z @@ -421,7 +421,7 @@ MoveAnimation: ShareMoveAnimations: ; some moves just reuse animations from status conditions - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ret z @@ -497,18 +497,18 @@ AnimationShakeScreenHorizontallySlow: push bc push bc .loop1 - ld a, [rWX] + ldh a, [rWX] inc a - ld [rWX], a + ldh [rWX], a ld c, 2 call DelayFrames dec b jr nz, .loop1 pop bc .loop2 - ld a, [rWX] + ldh a, [rWX] dec a - ld [rWX], a + ldh [rWX], a ld c, 2 call DelayFrames dec b @@ -534,16 +534,16 @@ SetAnimationPalette: ld b, $f0 .next ld a, b - ld [rOBP0], a + ldh [rOBP0], a ld a, $6c - ld [rOBP1], a + ldh [rOBP1], a ret .notSGB ld a, $e4 ld [wAnimPalette], a - ld [rOBP0], a + ldh [rOBP0], a ld a, $6c - ld [rOBP1], a + ldh [rOBP1], a ret PlaySubanimation: @@ -656,9 +656,9 @@ DoBallTossSpecialEffects: cp 3 ; is it a Master Ball or Ultra Ball? jr nc, .skipFlashingEffect .flashingEffect ; do a flashing effect if it's Master Ball or Ultra Ball - ld a, [rOBP0] + ldh a, [rOBP0] xor %00111100 ; complement colors 1 and 2 - ld [rOBP0], a + ldh [rOBP0], a .skipFlashingEffect ld a, [wSubAnimCounter] cp 11 ; is it the beginning of the subanimation? @@ -695,7 +695,7 @@ DoBallTossSpecialEffects: dec b jr nz, .loop ld a, %00001000 - ld [rNR10], a ; Channel 1 sweep register + ldh [rNR10], a ; Channel 1 sweep register ret .isTrainerBattle ; if it's a trainer battle, shorten the animation by one frame ld a, [wSubAnimCounter] @@ -882,9 +882,9 @@ TradeJumpPokeball: ld c, 5 call DelayFrames pop bc - ld a, [hSCX] ; background scroll X + ldh a, [hSCX] ; background scroll X sub 8 ; scroll to the left - ld [hSCX], a + ldh [hSCX], a pop de jr .loop @@ -920,16 +920,16 @@ AnimationDelay10: ; calls a function with the turn flipped from player to enemy or vice versa ; input - hl - address of function to call CallWithTurnFlipped: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] push af xor 1 - ld [hWhoseTurn], a + ldh [hWhoseTurn], a ld de, .returnAddress push de jp hl .returnAddress pop af - ld [hWhoseTurn], a + ldh [hWhoseTurn], a ret ; flashes the screen for an extended period (48 frames) @@ -947,7 +947,7 @@ AnimationFlashScreenLong: ld a, [hli] cp $01 ; is it the end of the palettes? jr z, .endOfPalettes - ld [rBGP], a + ldh [rBGP], a call FlashScreenLongDelay jr .innerLoop .endOfPalettes @@ -1006,18 +1006,18 @@ FlashScreenLongDelay: jp DelayFrames AnimationFlashScreen: - ld a, [rBGP] + ldh a, [rBGP] push af ; save initial palette ld a, %00011011 ; 0, 1, 2, 3 (inverted colors) - ld [rBGP], a + ldh [rBGP], a ld c, 2 call DelayFrames xor a ; white out background - ld [rBGP], a + ldh [rBGP], a ld c, 2 call DelayFrames pop af - ld [rBGP], a ; restore initial palette + ldh [rBGP], a ; restore initial palette ret AnimationDarkScreenPalette: @@ -1062,7 +1062,7 @@ SetAnimationBGPalette: jr z, .next ld a, c .next - ld [rBGP], a + ldh [rBGP], a ret ld b, $5 @@ -1133,7 +1133,7 @@ _AnimationWaterDroplets: AnimationSlideMonUp: ; Slides the mon's sprite upwards. ld c, 7 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a coord hl, 1, 6 coord de, 1, 5 @@ -1201,7 +1201,7 @@ _AnimationSlideMonUp: jr nz, .slideLoop ; Fill in the bottom row of the mon pic with the next row's tile IDs. - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a coord hl, 1, 11 jr z, .next @@ -1370,7 +1370,7 @@ AnimationShowEnemyMonPic: AnimationShakeBackAndForth: ; Shakes the mon's sprite back and forth rapidly. This is used in Double Team. ; The mon's sprite disappears after this animation. - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a coord hl, 0, 5 coord de, 2, 5 @@ -1418,7 +1418,7 @@ AnimationMoveMonHorizontally: ; Shifts the mon's sprite horizontally to a fixed location. Used by lots of ; animations like Tackle/Body Slam. call AnimationHideMonPic - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a coord hl, 2, 5 jr z, .next @@ -1434,7 +1434,7 @@ AnimationMoveMonHorizontally: AnimationResetMonPosition: ; Resets the mon's sprites to be located at the normal coordinates. - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, 5 * SCREEN_WIDTH + 2 jr z, .next @@ -1446,7 +1446,7 @@ AnimationResetMonPosition: AnimationSpiralBallsInward: ; Creates an effect that looks like energy balls spiralling into the ; player mon's sprite. Used in Focus Energy, for example. - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playerTurn ld a, -40 @@ -1530,7 +1530,7 @@ AnimationSquishMonPic: ld c, 4 .loop push bc - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playerTurn coord hl, 16, 0 @@ -1583,7 +1583,7 @@ _AnimationSquishMonPic: AnimationShootBallsUpward: ; Shoots one pillar of "energy" balls upwards. Used in Teleport/Sky Attack ; animations. - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playerTurn lb bc, 0, 16 * 8 @@ -1651,7 +1651,7 @@ _AnimationShootBallsUpward: AnimationShootManyBallsUpward: ; Shoots several pillars of "energy" balls upward. - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld hl, UpwardBallsAnimXCoordinatesPlayerTurn ld a, $50 ; y coordinate for "energy" ball pillar @@ -1743,7 +1743,7 @@ AnimationSlideMonDownAndHide: _AnimationSlideMonOff: ; Slides the mon's sprite off the screen horizontally by e tiles and waits ; [wSlideMonDelay] V-blanks each time the pic is slid by one tile. - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playerTurn coord hl, 12, 0 @@ -1758,7 +1758,7 @@ _AnimationSlideMonOff: .rowLoop ; iterates once for each row ld c, 8 .tileLoop ; iterates once for each tile in the row - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playerTurn2 call .EnemyNextTile @@ -1821,7 +1821,7 @@ AnimationSlideMonHalfOff: jp Delay3 CopyTempPicToMonPic: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld hl, vBackPic ; player turn jr z, .next @@ -1837,9 +1837,9 @@ AnimationWavyScreen: call BattleAnimCopyTileMapToVRAM call Delay3 xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld a, SCREEN_HEIGHT_PX - ld [hWY], a + ldh [hWY], a ld d, $80 ; terminator ld e, SCREEN_HEIGHT_PX - 1 ld c, $ff @@ -1848,7 +1848,7 @@ AnimationWavyScreen: push hl .innerLoop call WavyScreen_SetSCX - ld a, [rLY] + ldh a, [rLY] cp e ; is it the last visible line in the frame? jr nz, .innerLoop ; keep going if not pop hl @@ -1861,11 +1861,11 @@ AnimationWavyScreen: dec c jr nz, .loop xor a - ld [hWY], a + ldh [hWY], a call SaveScreenTilesToBuffer2 call ClearScreen ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 call LoadScreenTilesFromBuffer2 ld hl, vBGMap1 @@ -1873,11 +1873,11 @@ AnimationWavyScreen: ret WavyScreen_SetSCX: - ld a, [rSTAT] + ldh a, [rSTAT] and $3 ; is it H-blank? jr nz, WavyScreen_SetSCX ; wait until it's H-blank ld a, [hl] - ld [rSCX], a + ldh [rSCX], a inc hl ld a, [hl] cp d ; have we reached the end? @@ -1898,7 +1898,7 @@ AnimationSubstitute: xor a ld bc, $310 call FillMemory - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playerTurn ld hl, SlowbroSprite ; facing down sprite @@ -1937,7 +1937,7 @@ CopySlowbroSpriteData: jp FarCopyData2 HideSubstituteShowMonAnim: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld hl, wPlayerMonMinimized ld a, [wPlayerBattleStatus2] @@ -1987,7 +1987,7 @@ AnimationTransformMon: ld [wChangeMonPicEnemyTurnSpecies], a ChangeMonPic: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playerTurn ld a, [wChangeMonPicEnemyTurnSpecies] @@ -2020,11 +2020,11 @@ ChangeMonPic: AnimationHideEnemyMonPic: ; Hides the enemy mon's sprite xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld hl, AnimationHideMonPic call CallWithTurnFlipped ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a jp Delay3 InitMultipleObjectsOAM: @@ -2050,7 +2050,7 @@ InitMultipleObjectsOAM: AnimationHideMonPic: ; Hides the mon's sprite. - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playerTurn ld a, 12 @@ -2078,7 +2078,7 @@ ClearMonPicFromTileMap: ; in order to show only a portion of the mon sprite. GetMonSpriteTileMapPointerFromRowCount: push de - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr nz, .enemyTurn ld a, 20 * 5 + 1 @@ -2166,7 +2166,7 @@ GetMoveSound: ld b, a call IsCryMove jr nc, .NotCryMove - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr nz, .next ld a, [wBattleMonSpecies] ; get number of current monster @@ -2211,14 +2211,14 @@ IsCryMove: INCLUDE "data/moves/sfx.asm" CopyPicTiles: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, $31 ; base tile ID of player mon sprite jr z, .next ; enemy turn xor a ; base tile ID of enemy mon sprite .next - ld [hBaseTileID], a + ldh [hBaseTileID], a jr CopyTileIDs_NoBGTransfer ; copy the tiles used when a mon is being sent out of or into a pokeball @@ -2235,7 +2235,7 @@ CopyDownscaledMonTiles: CopyTileIDs_NoBGTransfer: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ; fall through ; b = number of rows @@ -2245,7 +2245,7 @@ CopyTileIDs: .rowLoop push bc push hl - ld a, [hBaseTileID] + ldh a, [hBaseTileID] ld b, a .columnLoop ld a, [de] @@ -2261,7 +2261,7 @@ CopyTileIDs: dec b jr nz, .rowLoop ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a pop hl ret @@ -2361,16 +2361,16 @@ Unknown_79c50: AnimationLeavesFalling: ; Makes leaves float down from the top of the screen. This is used ; in Razor Leaf's animation. - ld a, [rOBP0] + ldh a, [rOBP0] push af ld a, [wAnimPalette] - ld [rOBP0], a + ldh [rOBP0], a ld d, $37 ; leaf tile ld a, 3 ; number of leaves ld [wNumFallingObjects], a call AnimationFallingObjects pop af - ld [rOBP0], a + ldh [rOBP0], a ret AnimationPetalsFalling: @@ -2529,7 +2529,7 @@ AnimationShakeEnemyHUD: call CopyVideoData xor a - ld [hSCX], a + ldh [hSCX], a ; Copy wTileMap to BG map 0. The regular BG (not the window) is set to use ; map 0 and can be scrolled with SCX, which allows a shaking effect. @@ -2539,7 +2539,7 @@ AnimationShakeEnemyHUD: ; Now that the regular BG is showing the same thing the window was, move the ; window off the screen so that we can modify its contents below. ld a, SCREEN_HEIGHT_PX - ld [hWY], a + ldh [hWY], a ; Copy wTileMap to VRAM such that the row below the enemy HUD (in wTileMap) is ; lined up with row 0 of the window. @@ -2551,7 +2551,7 @@ AnimationShakeEnemyHUD: ; covers everything below the enemy HD with a copy that looks just like what ; was there before. ld a, 7 * 8 - ld [hWY], a + ldh [hWY], a ; Write OAM entries so that the copy of the back pic from the top of this ; function shows up on screen. We need this because the back pic's Y coordinates @@ -2576,11 +2576,11 @@ AnimationShakeEnemyHUD: call AnimationShowMonPic call ClearSprites ld a, SCREEN_HEIGHT_PX - ld [hWY], a + ldh [hWY], a ld hl, vBGMap1 call BattleAnimCopyTileMapToVRAM xor a - ld [hWY], a + ldh [hWY], a call SaveScreenTilesToBuffer1 ld hl, vBGMap0 call BattleAnimCopyTileMapToVRAM @@ -2595,7 +2595,7 @@ AnimationShakeEnemyHUD: CopyTileIDsFromList: call GetPredefRegisters ld a, c - ld [hBaseTileID], a + ldh [hBaseTileID], a ld a, b push hl call GetTileIDList @@ -2603,30 +2603,30 @@ CopyTileIDsFromList: jp CopyTileIDs ShakeEnemyHUD_ShakeBG: - ld a, [hSCX] + ldh a, [hSCX] ld [wTempSCX], a .loop ld a, [wTempSCX] add d - ld [hSCX], a + ldh [hSCX], a ld c, 2 call DelayFrames ld a, [wTempSCX] sub d - ld [hSCX], a + ldh [hSCX], a ld c, 2 call DelayFrames dec e jr nz, .loop ld a, [wTempSCX] - ld [hSCX], a + ldh [hSCX], a ret BattleAnimCopyTileMapToVRAM: ld a, h - ld [hAutoBGTransferDest + 1], a + ldh [hAutoBGTransferDest + 1], a ld a, l - ld [hAutoBGTransferDest], a + ldh [hAutoBGTransferDest], a jp Delay3 TossBallAnimation: diff --git a/engine/battle/battle_transitions.asm b/engine/battle/battle_transitions.asm index 548e85fb..8a22e70f 100644 --- a/engine/battle/battle_transitions.asm +++ b/engine/battle/battle_transitions.asm @@ -1,9 +1,9 @@ BattleTransition: ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 xor a - ld [hWY], a + ldh [hWY], a dec a ld [wUpdateSpritesEnabled], a call DelayFrame @@ -11,7 +11,7 @@ BattleTransition: ; Determine which OAM block is being used by the enemy trainer sprite (if there ; is one). ld hl, wSpritePlayerStateData1ImageIndex - ld a, [hSpriteIndexOrTextID] ; enemy trainer sprite index (0 if wild battle) + ldh a, [hSpriteIndexOrTextID] ; enemy trainer sprite index (0 if wild battle) ld c, a ld b, 0 ld de, $10 @@ -165,9 +165,9 @@ BattleTransitionTileEnd: BattleTransition_BlackScreen: ld a, $ff - ld [rBGP], a - ld [rOBP0], a - ld [rOBP1], a + ldh [rBGP], a + ldh [rOBP0], a + ldh [rOBP1], a ret ; for non-dungeon trainer battles @@ -330,7 +330,7 @@ BattleTransition_FlashScreen_: ld a, [hli] cp $1 jr z, .done - ld [rBGP], a + ldh [rBGP], a ld c, 2 call DelayFrames jr .loop @@ -349,7 +349,7 @@ BattleTransition_Shrink: .loop push bc xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a coord hl, 0, 7 coord de, 0, 8 ld bc, -SCREEN_WIDTH * 2 @@ -367,7 +367,7 @@ BattleTransition_Shrink: ld bc, 2 call BattleTransition_CopyTiles2 ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld c, 6 call DelayFrames pop bc @@ -381,7 +381,7 @@ BattleTransition_Shrink: BattleTransition_Split: ld c, SCREEN_HEIGHT / 2 xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a .loop push bc coord hl, 0, 16 @@ -496,7 +496,7 @@ BattleTransition_VerticalStripes: coord hl, 0, 0 coord de, 1, 17 xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a .loop push bc push hl @@ -535,7 +535,7 @@ BattleTransition_HorizontalStripes: coord hl, 0, 0 coord de, 19, 1 xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a .loop push bc push hl @@ -582,7 +582,7 @@ BattleTransition_FlashScreen: ld b, $3 call BattleTransition_FlashScreen_ xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ret BattleTransition_Circle_Sub1: @@ -601,10 +601,10 @@ BattleTransition_Circle_Sub1: BattleTransition_TransferDelay3: ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ret ; used for low level wild non-dungeon battles diff --git a/engine/battle/common_text.asm b/engine/battle/common_text.asm index 1cb455f3..b65bb84b 100644 --- a/engine/battle/common_text.asm +++ b/engine/battle/common_text.asm @@ -101,16 +101,16 @@ PrintSendOutMonMessage: ld hl, GoText jr z, .printText xor a - ld [hMultiplicand], a + ldh [hMultiplicand], a ld hl, wEnemyMonHP ld a, [hli] ld [wLastSwitchInEnemyMonHP], a - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a ld a, [hl] ld [wLastSwitchInEnemyMonHP + 1], a - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a ld a, 25 - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ld hl, wEnemyMonMaxHP ld a, [hli] @@ -121,9 +121,9 @@ PrintSendOutMonMessage: rr b ld a, b ld b, 4 - ld [hDivisor], a ; enemy mon max HP divided by 4 + ldh [hDivisor], a ; enemy mon max HP divided by 4 call Divide - ld a, [hQuotient + 3] ; a = (enemy mon current HP * 25) / (enemy max HP / 4); this approximates the current percentage of max HP + ldh a, [hQuotient + 3] ; a = (enemy mon current HP * 25) / (enemy max HP / 4); this approximates the current percentage of max HP ld hl, GoText ; 70% or greater cp 70 jr nc, .printText @@ -179,14 +179,14 @@ PlayerMon2Text: dec hl ld a, [de] sub b - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a dec de ld b, [hl] ld a, [de] sbc b - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a ld a, 25 - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ld hl, wEnemyMonMaxHP ld a, [hli] @@ -197,11 +197,11 @@ PlayerMon2Text: rr b ld a, b ld b, 4 - ld [hDivisor], a + ldh [hDivisor], a call Divide pop bc pop de - ld a, [hQuotient + 3] ; a = ((LastSwitchInEnemyMonHP - CurrentEnemyMonHP) / 25) / (EnemyMonMaxHP / 4) + ldh a, [hQuotient + 3] ; a = ((LastSwitchInEnemyMonHP - CurrentEnemyMonHP) / 25) / (EnemyMonMaxHP / 4) ; Assuming that the enemy mon hasn't gained HP since the last switch in, ; a approximates the percentage that the enemy mon's total HP has decreased ; since the last switch in. diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 935764aa..24ae8dfc 100755 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -48,25 +48,25 @@ SlidePlayerAndEnemySilhouettesOnScreen: jr nz, .copyRowLoop call EnableLCD ld a, $90 - ld [hWY], a - ld [rWY], a + ldh [hWY], a + ldh [rWY], a xor a - ld [hTilesetType], a - ld [hSCY], a + ldh [hTilesetType], a + ldh [hSCY], a dec a ld [wUpdateSpritesEnabled], a call Delay3 xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld b, $70 ld c, $90 ld a, c - ld [hSCX], a + ldh [hSCX], a call DelayFrame ld a, %11100100 ; inverted palette for silhouette effect - ld [rBGP], a - ld [rOBP0], a - ld [rOBP1], a + ldh [rBGP], a + ldh [rOBP0], a + ldh [rOBP1], a .slideSilhouettesLoop ; slide silhouettes of the player's pic and the enemy's pic onto the screen ld h, b ld l, $40 @@ -78,21 +78,21 @@ SlidePlayerAndEnemySilhouettesOnScreen: call SetScrollXForSlidingPlayerBodyLeft ; end background scrolling on line $60 call SlidePlayerHeadLeft ld a, c - ld [hSCX], a + ldh [hSCX], a dec c dec c jr nz, .slideSilhouettesLoop ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld a, $31 - ld [hStartTileID], a + ldh [hStartTileID], a coord hl, 1, 5 predef CopyUncompressedPicToTilemap xor a - ld [hWY], a - ld [rWY], a + ldh [hWY], a + ldh [rWY], a inc a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 ld b, SET_PAL_BATTLE call RunPaletteCommand @@ -118,13 +118,13 @@ SlidePlayerHeadLeft: ret SetScrollXForSlidingPlayerBodyLeft: - ld a, [rLY] + ldh a, [rLY] cp l jr nz, SetScrollXForSlidingPlayerBodyLeft ld a, h - ld [rSCX], a + ldh [rSCX], a .loop - ld a, [rLY] + ldh a, [rLY] cp h jr z, .loop ret @@ -266,7 +266,7 @@ EnemyRan: ld a, SFX_RUN call PlaySoundWaitForCurrent xor a - ld [hWhoseTurn], a + ldh [hWhoseTurn], a jpab AnimationSlideEnemyMonOff WildRanText: @@ -398,7 +398,7 @@ MainInBattleLoop: jr nc, .playerMovesFirst ; if player is faster jr .enemyMovesFirst ; if enemy is faster .speedEqual ; 50/50 chance for both players - ld a, [hSerialConnectionStatus] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK jr z, .invertOutcome call BattleRandom @@ -412,7 +412,7 @@ MainInBattleLoop: jr .playerMovesFirst .enemyMovesFirst ld a, $1 - ld [hWhoseTurn], a + ldh [hWhoseTurn], a callab TrainerAI jr c, .AIActionUsedEnemyFirst call ExecuteEnemyMove @@ -450,7 +450,7 @@ MainInBattleLoop: jp z, HandlePlayerMonFainted call DrawHUDsAndHPBars ld a, $1 - ld [hWhoseTurn], a + ldh [hWhoseTurn], a callab TrainerAI jr c, .AIActionUsedPlayerFirst call ExecuteEnemyMove @@ -470,7 +470,7 @@ MainInBattleLoop: HandlePoisonBurnLeechSeed: ld hl, wBattleMonHP ld de, wBattleMonStatus - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playersTurn ld hl, wEnemyMonHP @@ -495,7 +495,7 @@ HandlePoisonBurnLeechSeed: call HandlePoisonBurnLeechSeed_DecreaseOwnHP .notBurnedOrPoisoned ld de, wPlayerBattleStatus2 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playersTurn2 ld de, wEnemyBattleStatus2 @@ -504,16 +504,16 @@ HandlePoisonBurnLeechSeed: add a jr nc, .notLeechSeeded push hl - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] push af xor $1 - ld [hWhoseTurn], a + ldh [hWhoseTurn], a xor a ld [wAnimationType], a ld a, ABSORB call PlayMoveAnimation ; play leech seed animation (from opposing mon) pop af - ld [hWhoseTurn], a + ldh [hWhoseTurn], a pop hl call HandlePoisonBurnLeechSeed_DecreaseOwnHP call HandlePoisonBurnLeechSeed_IncreaseEnemyHP @@ -571,7 +571,7 @@ HandlePoisonBurnLeechSeed_DecreaseOwnHP: .nonZeroDamage ld hl, wPlayerBattleStatus3 ld de, wPlayerToxicCounter - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playersTurn ld hl, wEnemyBattleStatus3 @@ -618,7 +618,7 @@ HandlePoisonBurnLeechSeed_DecreaseOwnHP: HandlePoisonBurnLeechSeed_IncreaseEnemyHP: push hl ld hl, wEnemyMonMaxHP - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playersTurn ld hl, wBattleMonMaxHP @@ -655,19 +655,19 @@ HandlePoisonBurnLeechSeed_IncreaseEnemyHP: ld [hl], a ld [wHPBarNewHP], a .noOverfullHeal - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] xor $1 - ld [hWhoseTurn], a + ldh [hWhoseTurn], a call UpdateCurMonHPBar - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] xor $1 - ld [hWhoseTurn], a + ldh [hWhoseTurn], a pop hl ret UpdateCurMonHPBar: coord hl, 10, 9 ; tile pointer to player HP bar - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, $1 jr z, .playersTurn @@ -1232,7 +1232,7 @@ SevenSpacesText: ; if a is 8, the slide is to the right, else it is to the left ; bug: when this is called, [hAutoBGTransferEnabled] is non-zero, so there is screen tearing SlideTrainerPicOffScreen: - ld [hSlideAmount], a + ldh [hSlideAmount], a ld c, a .slideStepLoop ; each iteration, the trainer pic is slid one tile left/right push bc @@ -1240,10 +1240,10 @@ SlideTrainerPicOffScreen: ld b, 7 ; number of rows .rowLoop push hl - ld a, [hSlideAmount] + ldh a, [hSlideAmount] ld c, a .columnLoop - ld a, [hSlideAmount] + ldh a, [hSlideAmount] cp 8 jr z, .slideRight .slideLeft ; slide player sprite off screen @@ -1426,7 +1426,7 @@ EnemySendOutFirstMon: ld de, vFrontPic call LoadMonFrontSprite ld a, -$31 - ld [hStartTileID], a + ldh [hStartTileID], a coord hl, 15, 6 predef AnimateSendingOutMon ld a, [wEnemyMonSpecies2] @@ -1508,14 +1508,14 @@ TryRunningFromBattle: inc a ld [wNumRunAttempts], a ld a, [hli] - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a ld a, [hl] - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a ld a, [de] - ld [hEnemySpeed], a + ldh [hEnemySpeed], a inc de ld a, [de] - ld [hEnemySpeed + 1], a + ldh [hEnemySpeed + 1], a call LoadScreenTilesFromBuffer1 ld de, hMultiplicand + 1 ld hl, hEnemySpeed @@ -1523,17 +1523,17 @@ TryRunningFromBattle: call StringCmp jr nc, .canEscape ; jump if player speed greater than enemy speed xor a - ld [hMultiplicand], a + ldh [hMultiplicand], a ld a, 32 - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ; multiply player speed by 32 - ld a, [hProduct + 2] - ld [hDividend], a - ld a, [hProduct + 3] - ld [hDividend + 1], a - ld a, [hEnemySpeed] + ldh a, [hProduct + 2] + ldh [hDividend], a + ldh a, [hProduct + 3] + ldh [hDividend + 1], a + ldh a, [hEnemySpeed] ld b, a - ld a, [hEnemySpeed + 1] + ldh a, [hEnemySpeed + 1] ; divide enemy speed by 4 srl b rr a @@ -1541,10 +1541,10 @@ TryRunningFromBattle: rr a and a jr z, .canEscape ; jump if enemy speed divided by 4, mod 256 is 0 - ld [hDivisor], a ; ((enemy speed / 4) % 256) + ldh [hDivisor], a ; ((enemy speed / 4) % 256) ld b, $2 call Divide ; divide (player speed * 32) by ((enemy speed / 4) % 256) - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] and a ; is the quotient greater than 256? jr nz, .canEscape ; if so, the player can escape ld a, [wNumRunAttempts] @@ -1554,15 +1554,15 @@ TryRunningFromBattle: dec c jr z, .compareWithRandomValue ld b, 30 - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] add b - ld [hQuotient + 3], a + ldh [hQuotient + 3], a jr c, .canEscape jr .loop .compareWithRandomValue call BattleRandom ld b, a - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] cp b jr nc, .canEscape ; if the random value was less than or equal to the quotient ; plus 30 times the number of attempts, the player can escape @@ -1730,7 +1730,7 @@ SendOutMon: call DrawPlayerHUDAndHPBar predef LoadMonBackPic xor a - ld [hStartTileID], a + ldh [hStartTileID], a ld hl, wBattleAndStartSavedMenuItem ld [hli], a ld [hl], a @@ -1754,7 +1754,7 @@ SendOutMon: ld hl, wEnemyBattleStatus1 res USING_TRAPPING_MOVE, [hl] ld a, $1 - ld [hWhoseTurn], a + ldh [hWhoseTurn], a ld a, POOF_ANIM call PlayMoveAnimation coord hl, 4, 11 @@ -1773,7 +1773,7 @@ AnimateRetreatingPlayerMon: lb bc, 5, 5 xor a ld [wDownscaledMonSize], a - ld [hBaseTileID], a + ldh [hBaseTileID], a predef CopyDownscaledMonTiles ld c, 4 call DelayFrames @@ -1783,7 +1783,7 @@ AnimateRetreatingPlayerMon: ld a, 1 ld [wDownscaledMonSize], a xor a - ld [hBaseTileID], a + ldh [hBaseTileID], a predef CopyDownscaledMonTiles call Delay3 call .clearScreenArea @@ -1812,7 +1812,7 @@ DrawHUDsAndHPBars: DrawPlayerHUDAndHPBar: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a coord hl, 9, 7 lb bc, 5, 11 call ClearScreenArea @@ -1845,7 +1845,7 @@ DrawPlayerHUDAndHPBar: coord hl, 10, 9 predef DrawHP ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld hl, wPlayerHPBarColor call GetBattleHealthBarColor ld hl, wBattleMonHP @@ -1873,7 +1873,7 @@ DrawPlayerHUDAndHPBar: DrawEnemyHUDAndHPBar: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a coord hl, 0, 0 lb bc, 4, 12 call ClearScreenArea @@ -1895,9 +1895,9 @@ DrawEnemyHUDAndHPBar: .skipPrintLevel ld hl, wEnemyMonHP ld a, [hli] - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a ld a, [hld] - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a or [hl] ; is current HP zero? jr nz, .hpNonzero ; current HP is 0 @@ -1908,45 +1908,45 @@ DrawEnemyHUDAndHPBar: jp .drawHPBar .hpNonzero xor a - ld [hMultiplicand], a + ldh [hMultiplicand], a ld a, 48 - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ; multiply current HP by 48 ld hl, wEnemyMonMaxHP ld a, [hli] ld b, a ld a, [hl] - ld [hDivisor], a + ldh [hDivisor], a ld a, b and a ; is max HP > 255? jr z, .doDivide ; if max HP > 255, scale both (current HP * 48) and max HP by dividing by 4 so that max HP fits in one byte ; (it needs to be one byte so it can be used as the divisor for the Divide function) - ld a, [hDivisor] + ldh a, [hDivisor] srl b rr a srl b rr a - ld [hDivisor], a - ld a, [hProduct + 2] + ldh [hDivisor], a + ldh a, [hProduct + 2] ld b, a srl b - ld a, [hProduct + 3] + ldh a, [hProduct + 3] rr a srl b rr a - ld [hProduct + 3], a + ldh [hProduct + 3], a ld a, b - ld [hProduct + 2], a + ldh [hProduct + 2], a .doDivide - ld a, [hProduct + 2] - ld [hDividend], a - ld a, [hProduct + 3] - ld [hDividend + 1], a + ldh a, [hProduct + 2] + ldh [hDividend], a + ldh a, [hProduct + 3] + ldh [hDividend + 1], a ld a, $2 ld b, a call Divide ; divide (current HP * 48) by max HP - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] ; set variables for DrawHPBar ld e, a ld a, $6 @@ -1958,7 +1958,7 @@ DrawEnemyHUDAndHPBar: coord hl, 2, 2 call DrawHPBar ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld hl, wEnemyHPBarColor GetBattleHealthBarColor: @@ -2469,13 +2469,13 @@ MoveSelectionMenu: .writemoves ld de, wMovesString - ld a, [hFlagsFFF6] + ldh a, [hFlagsFFF6] set 2, a - ld [hFlagsFFF6], a + ldh [hFlagsFFF6], a call PlaceString - ld a, [hFlagsFFF6] + ldh a, [hFlagsFFF6] res 2, a - ld [hFlagsFFF6], a + ldh [hFlagsFFF6], a ret .regularmenu @@ -2825,7 +2825,7 @@ SwapMovesInMenu: PrintMenuItem: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a coord hl, 0, 8 ld b, 3 ld c, 9 @@ -2847,7 +2847,7 @@ PrintMenuItem: ld hl, wCurrentMenuItem dec [hl] xor a - ld [hWhoseTurn], a + ldh [hWhoseTurn], a ld hl, wBattleMonMoves ld a, [wCurrentMenuItem] ld c, a @@ -2891,7 +2891,7 @@ PrintMenuItem: predef PrintMoveType .moveDisabled ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a jp Delay3 DisabledText: @@ -3043,7 +3043,7 @@ LinkBattleExchangeData: ExecutePlayerMove: xor a - ld [hWhoseTurn], a ; set player's turn + ldh [hWhoseTurn], a ; set player's turn ld a, [wPlayerSelectedMove] inc a jp z, ExecutePlayerMoveDone ; for selected move = FF, skip most of player's turn @@ -3252,7 +3252,7 @@ PrintGhostText: ; print the ghost battle messages call IsGhostBattle ret nz - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr nz, .Ghost ld a, [wBattleMonStatus] ; player’s turn @@ -3619,7 +3619,7 @@ CantMoveText: PrintMoveIsDisabledText: ld hl, wPlayerSelectedMove ld de, wPlayerBattleStatus1 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .removeChargingUp inc hl @@ -3675,11 +3675,11 @@ HandleSelfConfusionDamage: xor a ld [wAnimationType], a inc a - ld [hWhoseTurn], a + ldh [hWhoseTurn], a call PlayMoveAnimation call DrawPlayerHUDAndHPBar xor a - ld [hWhoseTurn], a + ldh [hWhoseTurn], a jp ApplyDamageToPlayerPokemon PrintMonName1Text: @@ -3694,7 +3694,7 @@ PrintMonName1Text: MonName1Text: text_far _MonName1Text text_asm - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wPlayerMoveNum] ld hl, wPlayerUsedMove @@ -3818,7 +3818,7 @@ INCLUDE "data/moves/grammar.asm" PrintMoveFailureText: ld de, wPlayerMoveEffect - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playersTurn ld de, wEnemyMoveEffect @@ -3866,7 +3866,7 @@ PrintMoveFailureText: call PrintText ld b, $4 predef PredefShakeScreenHorizontally - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr nz, .enemyTurn jp ApplyDamageToPlayerPokemon @@ -4160,9 +4160,9 @@ GetDamageVarsForPlayerAttack: ; in the case of a critical hit, reset the player's attack and the enemy's defense to their base values ld c, 3 ; defense stat call GetEnemyMonStat - ld a, [hProduct + 2] + ldh a, [hProduct + 2] ld b, a - ld a, [hProduct + 3] + ldh a, [hProduct + 3] ld c, a push bc ld hl, wPartyMon1Attack @@ -4192,9 +4192,9 @@ GetDamageVarsForPlayerAttack: ; in the case of a critical hit, reset the player's and enemy's specials to their base values ld c, 5 ; special stat call GetEnemyMonStat - ld a, [hProduct + 2] + ldh a, [hProduct + 2] ld b, a - ld a, [hProduct + 3] + ldh a, [hProduct + 3] ld c, a push bc ld hl, wPartyMon1Special @@ -4371,9 +4371,9 @@ GetEnemyMonStat: ld bc, wEnemyMon2 - wEnemyMon1 call AddNTimes ld a, [hli] - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a ld a, [hl] - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a pop bc pop de ret @@ -4404,7 +4404,7 @@ CalculateDamage: ; d: base power ; e: level - ld a, [hWhoseTurn] ; whose turn? + ldh a, [hWhoseTurn] ; whose turn? and a ld a, [wPlayerMoveEffect] jr z, .effect @@ -4489,44 +4489,44 @@ CalculateDamage: ; Capped at MAX_NEUTRAL_DAMAGE - MIN_NEUTRAL_DAMAGE: 999 - 2 = 997. ld hl, wDamage ld b, [hl] - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] add b - ld [hQuotient + 3], a + ldh [hQuotient + 3], a jr nc, .dont_cap_1 - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] inc a - ld [hQuotient + 2], a + ldh [hQuotient + 2], a and a jr z, .cap .dont_cap_1 - ld a, [hQuotient] + ldh a, [hQuotient] ld b, a - ld a, [hQuotient + 1] + ldh a, [hQuotient + 1] or a jr nz, .cap - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] cp (MAX_NEUTRAL_DAMAGE - MIN_NEUTRAL_DAMAGE + 1) / $100 jr c, .dont_cap_2 cp (MAX_NEUTRAL_DAMAGE - MIN_NEUTRAL_DAMAGE + 1) / $100 + 1 jr nc, .cap - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] cp (MAX_NEUTRAL_DAMAGE - MIN_NEUTRAL_DAMAGE + 1) % $100 jr nc, .cap .dont_cap_2 inc hl - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] ld b, [hl] add b ld [hld], a - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] ld b, [hl] adc b ld [hl], a @@ -4579,7 +4579,7 @@ INCLUDE "data/battle/unused_critical_hit_moves.asm" CriticalHitTest: xor a ld [wCriticalHitOrOHKO], a - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wEnemyMonSpecies] jr nz, .handleEnemy @@ -4590,7 +4590,7 @@ CriticalHitTest: ld a, [wMonHBaseSpeed] ld b, a srl b ; (effective (base speed/2)) - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld hl, wPlayerMovePower ld de, wPlayerBattleStatus2 @@ -4652,7 +4652,7 @@ HandleCounterMove: ; the outcome may be affected by the player's actions in the move selection menu prior to switching the Pokemon. ; This might also lead to desync glitches in link battles. - ld a, [hWhoseTurn] ; whose turn + ldh a, [hWhoseTurn] ; whose turn and a ; player's turn ld hl, wEnemySelectedMove @@ -4960,7 +4960,7 @@ AttackSubstitute: ; values for player turn ld de, wEnemySubstituteHP ld bc, wEnemyBattleStatus2 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .applyDamageToSubstitute ; values for enemy turn @@ -4985,14 +4985,14 @@ AttackSubstitute: ld hl, SubstituteBrokeText call PrintText ; flip whose turn it is for the next function call - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] xor $01 - ld [hWhoseTurn], a + ldh [hWhoseTurn], a callab HideSubstituteShowMonAnim ; animate the substitute breaking ; flip the turn back to the way it was - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] xor $01 - ld [hWhoseTurn], a + ldh [hWhoseTurn], a ld hl, wPlayerMoveEffect ; value for player's turn and a jr z, .nullifyEffect @@ -5016,7 +5016,7 @@ HandleBuildingRage: ld hl, wEnemyBattleStatus2 ld de, wEnemyMonStatMods ld bc, wEnemyMoveNum - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .next ; values for the enemy turn @@ -5029,9 +5029,9 @@ HandleBuildingRage: ld a, [de] cp $0d ; maximum stat modifier value ret z ; return if attack modifier is already maxed - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] xor $01 ; flip turn for the stat modifier raising function - ld [hWhoseTurn], a + ldh [hWhoseTurn], a ; temporarily change the target pokemon's move to $00 and the effect to the one ; that causes the attack modifier to go up one stage ld h, b @@ -5048,9 +5048,9 @@ HandleBuildingRage: ldd [hl], a ; null move effect ld a, RAGE ld [hl], a ; restore the target pokemon's move number to Rage - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] xor $01 ; flip turn back to the way it was - ld [hWhoseTurn], a + ldh [hWhoseTurn], a ret BuildingRageText: @@ -5066,7 +5066,7 @@ MirrorMoveCopyMove: ; wPlayerUsedMove is also set to 0 whenever the player is fast asleep or frozen solid. ; wEnemyUsedMove is also set to 0 whenever the enemy is fast asleep or frozen solid. - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ; values for player turn ld a, [wEnemyUsedMove] @@ -5119,7 +5119,7 @@ MetronomePickMove: ; values for player turn ld de, wPlayerMoveNum ld hl, wPlayerSelectedMove - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .pickMoveLoop ; values for enemy turn @@ -5141,7 +5141,7 @@ MetronomePickMove: ; it's used to prevent moves that run another move within the same turn ; (like Mirror Move and Metronome) from losing 2 PP IncrementMovePP: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ; values for player turn ld hl, wBattleMonPP @@ -5160,7 +5160,7 @@ IncrementMovePP: ld h, d ld l, e add hl, bc - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wPlayerMonNumber] ; value for player turn jr z, .updatePP @@ -5184,7 +5184,7 @@ AdjustDamageForMoveType: ld e, [hl] ; e = type 2 of defender ld a, [wPlayerMoveType] ld [wMoveType], a - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .next ; values for enemy turn @@ -5248,25 +5248,25 @@ AdjustDamageForMoveType: and $80 ld b, a ld a, [hl] ; a = damage multiplier - ld [hMultiplier], a + ldh [hMultiplier], a add b ld [wDamageMultipliers], a xor a - ld [hMultiplicand], a + ldh [hMultiplicand], a ld hl, wDamage ld a, [hli] - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a ld a, [hld] - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a call Multiply ld a, 10 - ld [hDivisor], a + ldh [hDivisor], a ld b, $04 call Divide - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] ld [hli], a ld b, a - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] ld [hl], a or b ; is damage 0? jr nz, .skipTypeImmunity @@ -5331,7 +5331,7 @@ MoveHitTest: ld hl, wEnemyBattleStatus1 ld de, wPlayerMoveEffect ld bc, wEnemyMonStatus - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .dreamEaterCheck ; enemy's turn @@ -5360,7 +5360,7 @@ MoveHitTest: .checkForDigOrFlyStatus bit INVULNERABLE, [hl] jp nz, .moveMissed - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr nz, .enemyTurn .playerTurn @@ -5414,7 +5414,7 @@ MoveHitTest: call CalcHitChance ; scale the move accuracy according to attacker's accuracy and target's evasion ld a, [wPlayerMoveAccuracy] ld b, a - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .doAccuracyCheck ld a, [wEnemyMoveAccuracy] @@ -5433,7 +5433,7 @@ MoveHitTest: ld [hl], a inc a ld [wMoveMissed], a - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playerTurn2 .enemyTurn2 @@ -5448,7 +5448,7 @@ MoveHitTest: ; values for player turn CalcHitChance: ld hl, wPlayerMoveAccuracy - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wPlayerMonAccuracyMod] ld b, a @@ -5468,10 +5468,10 @@ CalcHitChance: ; decreases the hit chance instead of increasing the hit chance) ; zero the high bytes of the multiplicand xor a - ld [hMultiplicand], a - ld [hMultiplicand + 1], a + ldh [hMultiplicand], a + ldh [hMultiplicand + 1], a ld a, [hl] - ld [hMultiplicand + 2], a ; set multiplicand to move accuracy + ldh [hMultiplicand + 2], a ; set multiplicand to move accuracy push hl ld d, $02 ; loop has two iterations ; loop to do the calculations, the first iteration multiplies by the accuracy ratio and @@ -5486,29 +5486,29 @@ CalcHitChance: add hl, bc ; hl = address of stat modifier ratio pop bc ld a, [hli] - ld [hMultiplier], a ; set multiplier to the numerator of the ratio + ldh [hMultiplier], a ; set multiplier to the numerator of the ratio call Multiply ld a, [hl] - ld [hDivisor], a ; set divisor to the the denominator of the ratio + ldh [hDivisor], a ; set divisor to the the denominator of the ratio ; (the dividend is the product of the previous multiplication) ld b, $04 ; number of bytes in the dividend call Divide - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] ld b, a - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] or b jp nz, .nextCalculation ; make sure the result is always at least one - ld [hQuotient + 2], a + ldh [hQuotient + 2], a ld a, $01 - ld [hQuotient + 3], a + ldh [hQuotient + 3], a .nextCalculation ld b, c dec d jr nz, .loop - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] and a ; is the calculated hit chance over 0xFF? - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] jr z, .storeAccuracy ; if calculated hit chance over 0xFF ld a, $ff ; set the hit chance to 0xFF @@ -5528,29 +5528,29 @@ RandomizeDamage: ret c ; return if damage is equal to 0 or 1 .DamageGreaterThanOne xor a - ld [hMultiplicand], a + ldh [hMultiplicand], a dec hl ld a, [hli] - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a ld a, [hl] - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a ; loop until a random number greater than or equal to 217 is generated .loop call BattleRandom rrca cp 217 jr c, .loop - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ; multiply damage by the random number, which is in the range [217, 255] ld a, 255 - ld [hDivisor], a + ldh [hDivisor], a ld b, $4 call Divide ; divide the result by 255 ; store the modified damage - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] ld hl, wDamage ld [hli], a - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] ld [hl], a ret @@ -5906,11 +5906,11 @@ CheckEnemyStatusConditions: ld [hl], a xor a ld [wAnimationType], a - ld [hWhoseTurn], a + ldh [hWhoseTurn], a ld a, POUND call PlayMoveAnimation ld a, $1 - ld [hWhoseTurn], a + ldh [hWhoseTurn], a call ApplyDamageToEnemyPokemon jr .monHurtItselfOrFullyParalysed .checkIfTriedToUseDisabledMove @@ -6057,7 +6057,7 @@ CheckEnemyStatusConditions: ret GetCurrentMove: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jp z, .player ld de, wEnemyMoveNum @@ -6263,16 +6263,16 @@ DoBattleTransitionAndInitBattleVariables: predef BattleTransition callab LoadHudAndHpBarAndStatusTilePatterns ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld a, $ff ld [wUpdateSpritesEnabled], a call ClearSprites call ClearScreen xor a - ld [hAutoBGTransferEnabled], a - ld [hWY], a - ld [rWY], a - ld [hTilesetType], a + ldh [hAutoBGTransferEnabled], a + ldh [hWY], a + ldh [rWY], a + ldh [hTilesetType], a ld hl, wPlayerStatsToDouble ld [hli], a ld [hli], a @@ -6309,7 +6309,7 @@ LoadPlayerBackPic: predef ScaleSpriteByTwo ld hl, wOAMBuffer xor a - ld [hOAMTile], a ; initial tile number + ldh [hOAMTile], a ; initial tile number ld b, $7 ; 7 columns ld e, $a0 ; X for the left-most column .loop ; each loop iteration writes 3 OAM entries in a vertical column @@ -6323,16 +6323,16 @@ LoadPlayerBackPic: add d ; increase Y by height of tile ld d, a inc hl - ld a, [hOAMTile] + ldh a, [hOAMTile] ld [hli], a ; OAM tile number inc a ; increment tile number - ld [hOAMTile], a + ldh [hOAMTile], a inc hl dec c jr nz, .innerLoop - ld a, [hOAMTile] + ldh a, [hOAMTile] add $4 ; increase tile number by 4 - ld [hOAMTile], a + ldh [hOAMTile], a ld a, $8 ; width of tile add e ; increase X by width of tile ld e, a @@ -6346,14 +6346,14 @@ LoadPlayerBackPic: ld [MBC1SRamBank], a ld hl, vSprites ld de, sSpriteBuffer1 - ld a, [hLoadedROMBank] + ldh a, [hLoadedROMBank] ld b, a ld c, 7 * 7 call CopyVideoData xor a ld [MBC1SRamEnable], a ld a, $31 - ld [hStartTileID], a + ldh [hStartTileID], a coord hl, 1, 5 predef_jump CopyUncompressedPicToTilemap @@ -6373,12 +6373,12 @@ ApplyBurnAndParalysisPenaltiesToEnemy: xor a ApplyBurnAndParalysisPenalties: - ld [hWhoseTurn], a + ldh [hWhoseTurn], a call QuarterSpeedDueToParalysis jp HalveAttackDueToBurn QuarterSpeedDueToParalysis: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playerTurn .enemyTurn ; quarter the player's speed @@ -6421,7 +6421,7 @@ QuarterSpeedDueToParalysis: ret HalveAttackDueToBurn: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playerTurn .enemyTurn ; halve the player's attack @@ -6511,35 +6511,35 @@ CalculateModifiedStat: ld b, 0 add hl, bc xor a - ld [hMultiplicand], a + ldh [hMultiplicand], a ld a, [de] - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a inc de ld a, [de] - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a ld a, [hli] - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ld a, [hl] - ld [hDivisor], a + ldh [hDivisor], a ld b, $4 call Divide pop hl - ld a, [hDividend + 3] + ldh a, [hDividend + 3] sub 999 % $100 - ld a, [hDividend + 2] + ldh a, [hDividend + 2] sbc 999 / $100 jp c, .storeNewStatValue ; cap the stat at 999 ld a, 999 / $100 - ld [hDividend + 2], a + ldh [hDividend + 2], a ld a, 999 % $100 - ld [hDividend + 3], a + ldh [hDividend + 3], a .storeNewStatValue - ld a, [hDividend + 2] + ldh a, [hDividend + 2] ld [hli], a ld b, a - ld a, [hDividend + 3] + ldh a, [hDividend + 3] ld [hl], a or b jr nz, .done @@ -6605,7 +6605,7 @@ LoadHudAndHpBarAndStatusTilePatterns: call LoadHpBarAndStatusTilePatterns LoadHudTilePatterns: - ld a, [rLCDC] + ldh a, [rLCDC] add a ; is LCD disabled? jr c, .lcdEnabled .lcdDisabled @@ -6690,7 +6690,7 @@ BattleRandom: HandleExplodingAnimation: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld hl, wEnemyMonType1 ld de, wEnemyBattleStatus1 @@ -6740,7 +6740,7 @@ DetermineWildOpponent: ld a, [wd732] bit 1, a jr z, .asm_3ef2f - ld a, [hJoyHeld] + ldh a, [hJoyHeld] bit 1, a ; B button pressed? ret nz .asm_3ef2f @@ -6767,7 +6767,7 @@ InitBattleCommon: call _LoadTrainerPic xor a ld [wEnemyMonSpecies2], a - ld [hStartTileID], a + ldh [hStartTileID], a dec a ld [wAICount], a coord hl, 12, 0 @@ -6823,7 +6823,7 @@ InitWildBattle: .spriteLoaded xor a ld [wTrainerClass], a - ld [hStartTileID], a + ldh [hStartTileID], a coord hl, 12, 0 predef CopyUncompressedPicToTilemap @@ -6833,18 +6833,18 @@ _InitBattleCommon: call RunPaletteCommand call SlidePlayerAndEnemySilhouettesOnScreen xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld hl, .emptyString call PrintText call SaveScreenTilesToBuffer1 call ClearScreen ld a, $98 - ld [hAutoBGTransferDest + 1], a + ldh [hAutoBGTransferDest + 1], a ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 ld a, $9c - ld [hAutoBGTransferDest + 1], a + ldh [hAutoBGTransferDest + 1], a call LoadScreenTilesFromBuffer1 coord hl, 9, 7 lb bc, 5, 10 @@ -6863,7 +6863,7 @@ _InitBattleCommon: pop af ld [wMapPalOffset], a ld a, [wSavedTilesetType] - ld [hTilesetType], a + ldh [hTilesetType], a scf ret .emptyString @@ -6900,8 +6900,8 @@ AnimateSendingOutMon: ld h, a ld a, [wPredefRegisters + 1] ld l, a - ld a, [hStartTileID] - ld [hBaseTileID], a + ldh a, [hStartTileID] + ldh [hBaseTileID], a ld b, $4c ld a, [wIsInBattle] and a @@ -6931,7 +6931,7 @@ AnimateSendingOutMon: ld bc, -(SCREEN_WIDTH * 6 + 3) .next add hl, bc - ld a, [hBaseTileID] + ldh a, [hBaseTileID] add $31 jr CopyUncompressedPicToHL @@ -6940,7 +6940,7 @@ CopyUncompressedPicToTilemap: ld h, a ld a, [wPredefRegisters + 1] ld l, a - ld a, [hStartTileID] + ldh a, [hStartTileID] CopyUncompressedPicToHL:: lb bc, 7, 7 ld de, SCREEN_WIDTH @@ -7005,6 +7005,6 @@ LoadMonBackPic: ld hl, vSprites ld de, vBackPic ld c, (2*SPRITEBUFFERSIZE)/16 ; count of 16-byte chunks to be copied - ld a, [hLoadedROMBank] + ldh a, [hLoadedROMBank] ld b, a jp CopyVideoData diff --git a/engine/battle/effects.asm b/engine/battle/effects.asm index 22fadb42..c3a2a213 100644 --- a/engine/battle/effects.asm +++ b/engine/battle/effects.asm @@ -4,7 +4,7 @@ JumpMoveEffect: ret _JumpMoveEffect: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wPlayerMoveEffect] jr z, .next1 @@ -26,7 +26,7 @@ INCLUDE "data/moves/effects_pointers.asm" SleepEffect: ld de, wEnemyMonStatus ld bc, wEnemyBattleStatus2 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jp z, .sleepEffect ld de, wBattleMonStatus @@ -78,7 +78,7 @@ AlreadyAsleepText: PoisonEffect: ld hl, wEnemyMonStatus ld de, wPlayerMoveEffect - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .poisonEffect ld hl, wBattleMonStatus @@ -121,7 +121,7 @@ PoisonEffect: set 3, [hl] ; mon is now poisoned push de dec de - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld b, ANIM_C7 ld hl, wPlayerBattleStatus3 @@ -175,7 +175,7 @@ DrainHPEffect: ExplodeEffect: ld hl, wBattleMonHP ld de, wPlayerBattleStatus2 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .faintUser ld hl, wEnemyMonHP @@ -196,7 +196,7 @@ FreezeBurnParalyzeEffect: ld [wAnimationType], a call CheckTargetSubstitute ; test bit 4 of d063/d068 flags [target has substitute flag] ret nz ; return if they have a substitute, can't effect them - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jp nz, opponentAttacker ld a, [wEnemyMonStatus] @@ -308,7 +308,7 @@ CheckDefrost: ; any fire-type move that has a chance inflict burn (all but Fire Spin) will defrost a frozen target and 1 << FRZ ; are they frozen? ret z ; return if so - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr nz, .opponent ;player [attacker] @@ -346,7 +346,7 @@ FireDefrostedText: StatModifierUpEffect: ld hl, wPlayerMonStatMods ld de, wPlayerMoveEffect - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .statModifierUpEffect ld hl, wEnemyMonStatMods @@ -382,7 +382,7 @@ StatModifierUpEffect: push hl ld hl, wBattleMonAttack + 1 ld de, wPlayerMonUnmodifiedAttack - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .pointToStats ld hl, wEnemyMonAttack + 1 @@ -417,35 +417,35 @@ StatModifierUpEffect: add hl, bc pop bc xor a - ld [hMultiplicand], a + ldh [hMultiplicand], a ld a, [de] - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a inc de ld a, [de] - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a ld a, [hli] - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ld a, [hl] - ld [hDivisor], a + ldh [hDivisor], a ld b, $4 call Divide pop hl ; cap at 999 - ld a, [hProduct + 3] + ldh a, [hProduct + 3] sub 999 % $100 - ld a, [hProduct + 2] + ldh a, [hProduct + 2] sbc 999 / $100 jp c, UpdateStat ld a, 999 / $100 - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a ld a, 999 % $100 - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a UpdateStat: - ld a, [hProduct + 2] + ldh a, [hProduct + 2] ld [hli], a - ld a, [hProduct + 3] + ldh a, [hProduct + 3] ld [hl], a pop hl UpdateStatDone: @@ -455,7 +455,7 @@ UpdateStatDone: ld hl, wPlayerBattleStatus2 ld de, wPlayerMoveNum ld bc, wPlayerMonMinimized - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .asm_3f4e6 ld hl, wEnemyBattleStatus2 @@ -488,7 +488,7 @@ UpdateStatDone: pop af call nz, Bankswitch .applyBadgeBoostsAndStatusPenalties - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a call z, ApplyBadgeStatBoosts ; whenever the player uses a stat-up move, badge boosts get reapplied again to every stat, ; even to those not affected by the stat-up move (will be boosted further) @@ -511,7 +511,7 @@ MonsStatsRoseText: text_far _MonsStatsRoseText text_asm ld hl, GreatlyRoseText - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wPlayerMoveEffect] jr z, .playerTurn @@ -534,7 +534,7 @@ StatModifierDownEffect: ld hl, wEnemyMonStatMods ld de, wPlayerMoveEffect ld bc, wEnemyBattleStatus1 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .statModifierDownEffect ld hl, wPlayerMonStatMods @@ -601,7 +601,7 @@ StatModifierDownEffect: push de ld hl, wEnemyMonAttack + 1 ld de, wEnemyMonUnmodifiedAttack - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .pointToStat ld hl, wBattleMonAttack + 1 @@ -637,33 +637,33 @@ StatModifierDownEffect: add hl, bc pop bc xor a - ld [hMultiplicand], a + ldh [hMultiplicand], a ld a, [de] - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a inc de ld a, [de] - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a ld a, [hli] - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ld a, [hl] - ld [hDivisor], a + ldh [hDivisor], a ld b, $4 call Divide pop hl - ld a, [hProduct + 3] + ldh a, [hProduct + 3] ld b, a - ld a, [hProduct + 2] + ldh a, [hProduct + 2] or b jp nz, UpdateLoweredStat - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a ld a, $1 - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a UpdateLoweredStat: - ld a, [hProduct + 2] + ldh a, [hProduct + 2] ld [hli], a - ld a, [hProduct + 3] + ldh a, [hProduct + 3] ld [hl], a pop de pop hl @@ -678,7 +678,7 @@ UpdateLoweredStatDone: jr nc, .ApplyBadgeBoostsAndStatusPenalties call PlayCurrentMoveAnimation2 .ApplyBadgeBoostsAndStatusPenalties - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a call nz, ApplyBadgeStatBoosts ; whenever the player uses a stat-down move, badge boosts get reapplied again to every stat, ; even to those not affected by the stat-up move (will be boosted further) @@ -713,7 +713,7 @@ MonsStatsFellText: text_far _MonsStatsFellText text_asm ld hl, FellText - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wPlayerMoveEffect] jr z, .playerTurn @@ -759,7 +759,7 @@ BideEffect: ld hl, wPlayerBattleStatus1 ld de, wPlayerBideAccumulatedDamage ld bc, wPlayerNumAttacksLeft - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .bideEffect ld hl, wEnemyBattleStatus1 @@ -778,14 +778,14 @@ BideEffect: inc a inc a ld [bc], a ; set Bide counter to 2 or 3 at random - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] add XSTATITEM_ANIM jp PlayBattleAnimation2 ThrashPetalDanceEffect: ld hl, wPlayerBattleStatus1 ld de, wPlayerNumAttacksLeft - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .thrashPetalDanceEffect ld hl, wEnemyBattleStatus1 @@ -797,12 +797,12 @@ ThrashPetalDanceEffect: inc a inc a ld [de], a ; set thrash/petal dance counter to 2 or 3 at random - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] add ANIM_B0 jp PlayBattleAnimation2 SwitchAndTeleportEffect: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr nz, .handleEnemy ld a, [wIsInBattle] @@ -920,7 +920,7 @@ TwoToFiveAttacksEffect: ld hl, wPlayerBattleStatus1 ld de, wPlayerNumAttacksLeft ld bc, wPlayerNumHits - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .twoToFiveAttacksEffect ld hl, wEnemyBattleStatus1 @@ -931,7 +931,7 @@ TwoToFiveAttacksEffect: ret nz set ATTACKING_MULTIPLE_TIMES, [hl] ; mon is now attacking multiple times ld hl, wPlayerMoveEffect - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .setNumberOfHits ld hl, wEnemyMoveEffect @@ -967,7 +967,7 @@ FlinchSideEffect: ret nz ld hl, wEnemyBattleStatus1 ld de, wPlayerMoveEffect - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .flinchSideEffect ld hl, wPlayerBattleStatus1 @@ -992,7 +992,7 @@ OneHitKOEffect: ChargeEffect: ld hl, wPlayerBattleStatus1 ld de, wPlayerMoveEffect - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld b, XSTATITEM_ANIM jr z, .chargeEffect @@ -1074,7 +1074,7 @@ DugAHoleText: TrappingEffect: ld hl, wPlayerBattleStatus1 ld de, wPlayerNumAttacksLeft - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .trappingEffect ld hl, wEnemyBattleStatus1 @@ -1120,7 +1120,7 @@ ConfusionEffect: jr nz, ConfusionEffectFailed ConfusionSideEffectSuccess: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld hl, wEnemyBattleStatus1 ld bc, wEnemyConfusedCounter @@ -1164,7 +1164,7 @@ SubstituteEffect: HyperBeamEffect: ld hl, wPlayerBattleStatus2 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .hyperBeamEffect ld hl, wEnemyBattleStatus2 @@ -1175,7 +1175,7 @@ HyperBeamEffect: ClearHyperBeam: push hl ld hl, wEnemyBattleStatus2 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .playerTurn ld hl, wPlayerBattleStatus2 @@ -1186,7 +1186,7 @@ ClearHyperBeam: RageEffect: ld hl, wPlayerBattleStatus2 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .player ld hl, wEnemyBattleStatus2 @@ -1201,7 +1201,7 @@ MimicEffect: ld a, [wMoveMissed] and a jr nz, .mimicMissed - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld hl, wBattleMonMoves ld a, [wPlayerBattleStatus1] @@ -1226,7 +1226,7 @@ MimicEffect: and a jr z, .getRandomMove ld d, a - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld hl, wBattleMonMoves ld a, [wPlayerMoveListIndex] @@ -1284,7 +1284,7 @@ DisableEffect: jr nz, .moveMissed ld de, wEnemyDisabledMove ld hl, wEnemyMonMoves - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .disableEffect ld de, wPlayerDisabledMove @@ -1307,7 +1307,7 @@ DisableEffect: jr z, .pickMoveToDisable ; loop until a non-00 move slot is found ld [wd11e], a ; store move number push hl - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld hl, wBattleMonPP jr nz, .enemyTurn @@ -1345,7 +1345,7 @@ DisableEffect: ld [de], a call PlayCurrentMoveAnimation2 ld hl, wPlayerDisabledMoveNumber - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr nz, .printDisableText inc hl ; wEnemyDisabledMoveNumber @@ -1430,7 +1430,7 @@ ParalyzedMayNotAttackText: CheckTargetSubstitute: push hl ld hl, wEnemyBattleStatus2 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .next1 ld hl, wPlayerBattleStatus2 @@ -1442,7 +1442,7 @@ CheckTargetSubstitute: PlayCurrentMoveAnimation2: ; animation at MOVENUM will be played unless MOVENUM is 0 ; plays wAnimationType 3 or 6 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wPlayerMoveNum] jr z, .notEnemyTurn @@ -1454,7 +1454,7 @@ PlayCurrentMoveAnimation2: PlayBattleAnimation2: ; play animation ID at a and animation type 6 or 3 ld [wAnimationID], a - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, $6 jr z, .storeAnimationType @@ -1468,7 +1468,7 @@ PlayCurrentMoveAnimation: ; resets wAnimationType xor a ld [wAnimationType], a - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wPlayerMoveNum] jr z, .notEnemyTurn diff --git a/engine/battle/experience.asm b/engine/battle/experience.asm index 6bc0a019..2e21d874 100644 --- a/engine/battle/experience.asm +++ b/engine/battle/experience.asm @@ -55,15 +55,15 @@ GainExperience: jr .gainStatExpLoop .statExpDone xor a - ld [hMultiplicand], a - ld [hMultiplicand + 1], a + ldh [hMultiplicand], a + ldh [hMultiplicand + 1], a ld a, [wEnemyMonBaseExp] - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a ld a, [wEnemyMonLevel] - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ld a, 7 - ld [hDivisor], a + ldh [hDivisor], a ld b, 4 call Divide ld hl, wPartyMon1OTID - (wPartyMon1DVs - 1) @@ -91,12 +91,12 @@ GainExperience: inc hl ; add the gained exp to the party mon's exp ld b, [hl] - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] ld [wExpAmountGained + 1], a add b ld [hld], a ld b, [hl] - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] ld [wExpAmountGained], a adc b ld [hl], a @@ -119,11 +119,11 @@ GainExperience: ld d, MAX_LEVEL callab CalcExperience ; get max exp ; compare max exp with current exp - ld a, [hExperience] + ldh a, [hExperience] ld b, a - ld a, [hExperience + 1] + ldh a, [hExperience + 1] ld c, a - ld a, [hExperience + 2] + ldh a, [hExperience + 2] ld d, a pop hl ld a, [hld] @@ -311,14 +311,14 @@ DivideExpDataByNumMonsGainingExp: ld c, wEnemyMonBaseExp + 1 - wEnemyMonBaseStats .divideLoop xor a - ld [hDividend], a + ldh [hDividend], a ld a, [hl] - ld [hDividend + 1], a + ldh [hDividend + 1], a ld a, [wd11e] - ld [hDivisor], a + ldh [hDivisor], a ld b, $2 call Divide ; divide value by number of mons gaining exp - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] ld [hli], a dec c jr nz, .divideLoop @@ -326,17 +326,17 @@ DivideExpDataByNumMonsGainingExp: ; multiplies exp by 1.5 BoostExp: - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] ld b, a - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] ld c, a srl b rr c add c - ld [hQuotient + 3], a - ld a, [hQuotient + 2] + ldh [hQuotient + 3], a + ldh a, [hQuotient + 2] adc b - ld [hQuotient + 2], a + ldh [hQuotient + 2], a ret GainedText: diff --git a/engine/battle/ghost_marowak_anim.asm b/engine/battle/ghost_marowak_anim.asm index 28f536ca..bef680fe 100644 --- a/engine/battle/ghost_marowak_anim.asm +++ b/engine/battle/ghost_marowak_anim.asm @@ -1,7 +1,7 @@ MarowakAnim: ; animate the ghost being unveiled as a Marowak ld a, $e4 - ld [rOBP1], a + ldh [rOBP1], a call CopyMonPicFromBGToSpriteVRAM ; cover the BG ghost pic with a sprite ghost pic that looks the same ; now that the ghost pic is being displayed using sprites, clear the ghost pic from the BG tilemap coord hl, 12, 0 @@ -9,12 +9,12 @@ MarowakAnim: call ClearScreenArea call Delay3 xor a - ld [hAutoBGTransferEnabled], a ; disable BG transfer so we don't see the Marowak too soon + ldh [hAutoBGTransferEnabled], a ; disable BG transfer so we don't see the Marowak too soon ; replace ghost pic with Marowak in BG ld a, MAROWAK ld [wChangeMonPicEnemyTurnSpecies], a ld a, $1 - ld [hWhoseTurn], a + ldh [hWhoseTurn], a callab ChangeMonPic ; alternate between black and light grey 8 times. ; this makes the ghost's body appear to flash @@ -23,10 +23,10 @@ MarowakAnim: .fadeOutGhostLoop ld c, 10 call DelayFrames - ld a, [rOBP1] + ldh a, [rOBP1] sla a sla a - ld [rOBP1], a + ldh [rOBP1], a jr nz, .fadeOutGhostLoop call ClearSprites call CopyMonPicFromBGToSpriteVRAM ; copy Marowak pic from BG to sprite VRAM @@ -34,17 +34,17 @@ MarowakAnim: .fadeInMarowakLoop ld c, 10 call DelayFrames - ld a, [rOBP1] + ldh a, [rOBP1] srl b rra srl b rra - ld [rOBP1], a + ldh [rOBP1], a ld a, b and a jr nz, .fadeInMarowakLoop ld a, $1 - ld [hAutoBGTransferEnabled], a ; enable BG transfer so the BG Marowak pic will be visible after the sprite one is cleared + ldh [hAutoBGTransferEnabled], a ; enable BG transfer so the BG Marowak pic will be visible after the sprite one is cleared call Delay3 jp ClearSprites diff --git a/engine/battle/init_battle_variables.asm b/engine/battle/init_battle_variables.asm index 7bc912d2..d670319c 100644 --- a/engine/battle/init_battle_variables.asm +++ b/engine/battle/init_battle_variables.asm @@ -1,5 +1,5 @@ InitBattleVariables: - ld a, [hTilesetType] + ldh a, [hTilesetType] ld [wSavedTilesetType], a xor a ld [wActionResultOrTookBattleTurn], a diff --git a/engine/battle/move_effects/conversion.asm b/engine/battle/move_effects/conversion.asm index 662f65e0..1f64ec5b 100644 --- a/engine/battle/move_effects/conversion.asm +++ b/engine/battle/move_effects/conversion.asm @@ -1,7 +1,7 @@ ConversionEffect_: ld hl, wEnemyMonType1 ld de, wBattleMonType1 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wEnemyBattleStatus1] jr z, .conversionEffect diff --git a/engine/battle/move_effects/drain_hp.asm b/engine/battle/move_effects/drain_hp.asm index 452ccf0c..74e5d376 100644 --- a/engine/battle/move_effects/drain_hp.asm +++ b/engine/battle/move_effects/drain_hp.asm @@ -14,7 +14,7 @@ DrainHPEffect_: .getAttackerHP ld hl, wBattleMonHP ld de, wBattleMonMaxHP - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jp z, .addDamageToAttackerHP ld hl, wEnemyMonHP @@ -69,7 +69,7 @@ DrainHPEffect_: ld [wHPBarNewHP+1], a inc de .next - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a coord hl, 10, 9 ld a, $1 @@ -83,7 +83,7 @@ DrainHPEffect_: predef DrawEnemyHUDAndHPBar callab ReadPlayerMonCurHPAndStatus ld hl, SuckedHealthText - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wPlayerMoveEffect] jr z, .next3 diff --git a/engine/battle/move_effects/focus_energy.asm b/engine/battle/move_effects/focus_energy.asm index 7a426d2c..fd04e024 100644 --- a/engine/battle/move_effects/focus_energy.asm +++ b/engine/battle/move_effects/focus_energy.asm @@ -1,6 +1,6 @@ FocusEnergyEffect_: ld hl, wPlayerBattleStatus2 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .notEnemy ld hl, wEnemyBattleStatus2 diff --git a/engine/battle/move_effects/haze.asm b/engine/battle/move_effects/haze.asm index 521ff662..915eeed8 100644 --- a/engine/battle/move_effects/haze.asm +++ b/engine/battle/move_effects/haze.asm @@ -15,7 +15,7 @@ HazeEffect_: ; cure non-volatile status, but only for the target ld hl, wEnemyMonStatus ld de, wEnemySelectedMove - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .cureStatuses ld hl, wBattleMonStatus diff --git a/engine/battle/move_effects/heal.asm b/engine/battle/move_effects/heal.asm index 8cc9da93..d12b1ea4 100644 --- a/engine/battle/move_effects/heal.asm +++ b/engine/battle/move_effects/heal.asm @@ -1,5 +1,5 @@ HealEffect_: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld de, wBattleMonHP ld hl, wBattleMonMaxHP @@ -27,7 +27,7 @@ HealEffect_: ld c, 50 call DelayFrames ld hl, wBattleMonStatus - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .restEffect ld hl, wEnemyMonStatus @@ -87,7 +87,7 @@ HealEffect_: .playAnim ld hl, PlayCurrentMoveAnimation call BankswitchEtoF - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a coord hl, 10, 9 ld a, $1 diff --git a/engine/battle/move_effects/leech_seed.asm b/engine/battle/move_effects/leech_seed.asm index 74360233..061c0073 100644 --- a/engine/battle/move_effects/leech_seed.asm +++ b/engine/battle/move_effects/leech_seed.asm @@ -5,7 +5,7 @@ LeechSeedEffect_: jr nz, .moveMissed ld hl, wEnemyBattleStatus2 ld de, wEnemyMonType1 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .leechSeedEffect ld hl, wPlayerBattleStatus2 diff --git a/engine/battle/move_effects/mist.asm b/engine/battle/move_effects/mist.asm index 67ee4921..a9cb21b8 100644 --- a/engine/battle/move_effects/mist.asm +++ b/engine/battle/move_effects/mist.asm @@ -1,6 +1,6 @@ MistEffect_: ld hl, wPlayerBattleStatus2 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .mistEffect ld hl, wEnemyBattleStatus2 diff --git a/engine/battle/move_effects/one_hit_ko.asm b/engine/battle/move_effects/one_hit_ko.asm index 347a4c7b..7e5db0f7 100644 --- a/engine/battle/move_effects/one_hit_ko.asm +++ b/engine/battle/move_effects/one_hit_ko.asm @@ -7,7 +7,7 @@ OneHitKOEffect_: ld [wCriticalHitOrOHKO], a ld hl, wBattleMonSpeed + 1 ld de, wEnemyMonSpeed + 1 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .compareSpeed ld hl, wEnemyMonSpeed + 1 diff --git a/engine/battle/move_effects/paralyze.asm b/engine/battle/move_effects/paralyze.asm index b01aa5cf..d828e333 100644 --- a/engine/battle/move_effects/paralyze.asm +++ b/engine/battle/move_effects/paralyze.asm @@ -1,7 +1,7 @@ ParalyzeEffect_: ld hl, wEnemyMonStatus ld de, wPlayerMoveType - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jp z, .next ld hl, wBattleMonStatus diff --git a/engine/battle/move_effects/pay_day.asm b/engine/battle/move_effects/pay_day.asm index 11140ec2..fa373038 100644 --- a/engine/battle/move_effects/pay_day.asm +++ b/engine/battle/move_effects/pay_day.asm @@ -2,7 +2,7 @@ PayDayEffect_: xor a ld hl, wcd6d ld [hli], a - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wBattleMonLevel] jr z, .payDayEffect @@ -10,28 +10,28 @@ PayDayEffect_: .payDayEffect ; level * 2 add a - ld [hDividend + 3], a + ldh [hDividend + 3], a xor a - ld [hDividend], a - ld [hDividend + 1], a - ld [hDividend + 2], a + ldh [hDividend], a + ldh [hDividend + 1], a + ldh [hDividend + 2], a ; convert to BCD ld a, 100 - ld [hDivisor], a + ldh [hDivisor], a ld b, $4 call Divide - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] ld [hli], a - ld a, [hRemainder] - ld [hDividend + 3], a + ldh a, [hRemainder] + ldh [hDividend + 3], a ld a, 10 - ld [hDivisor], a + ldh [hDivisor], a ld b, $4 call Divide - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] swap a ld b, a - ld a, [hRemainder] + ldh a, [hRemainder] add b ld [hl], a ld de, wTotalPayDayMoney + 2 diff --git a/engine/battle/move_effects/recoil.asm b/engine/battle/move_effects/recoil.asm index 63aff429..aa2a3fed 100644 --- a/engine/battle/move_effects/recoil.asm +++ b/engine/battle/move_effects/recoil.asm @@ -1,5 +1,5 @@ RecoilEffect_: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wPlayerMoveNum] ld hl, wBattleMonMaxHP @@ -54,7 +54,7 @@ RecoilEffect_: ld [hl], a .getHPBarCoords coord hl, 10, 9 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, $1 jr z, .updateHPBar diff --git a/engine/battle/move_effects/reflect_light_screen.asm b/engine/battle/move_effects/reflect_light_screen.asm index 07338c9a..7bdc7be7 100644 --- a/engine/battle/move_effects/reflect_light_screen.asm +++ b/engine/battle/move_effects/reflect_light_screen.asm @@ -1,7 +1,7 @@ ReflectLightScreenEffect_: ld hl, wPlayerBattleStatus3 ld de, wPlayerMoveEffect - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .reflectLightScreenEffect ld hl, wEnemyBattleStatus3 diff --git a/engine/battle/move_effects/substitute.asm b/engine/battle/move_effects/substitute.asm index 95c43462..eb6d0e89 100644 --- a/engine/battle/move_effects/substitute.asm +++ b/engine/battle/move_effects/substitute.asm @@ -4,7 +4,7 @@ SubstituteEffect_: ld hl, wBattleMonMaxHP ld de, wPlayerSubstituteHP ld bc, wPlayerBattleStatus2 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .notEnemy ld hl, wEnemyMonMaxHP diff --git a/engine/battle/move_effects/transform.asm b/engine/battle/move_effects/transform.asm index da26d031..46cea51c 100644 --- a/engine/battle/move_effects/transform.asm +++ b/engine/battle/move_effects/transform.asm @@ -3,7 +3,7 @@ TransformEffect_: ld de, wEnemyMonSpecies ld bc, wEnemyBattleStatus3 ld a, [wEnemyBattleStatus1] - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr nz, .hitTest ld hl, wEnemyMonSpecies @@ -18,7 +18,7 @@ TransformEffect_: push de push bc ld hl, wPlayerBattleStatus2 - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .transformEffect ld hl, wEnemyBattleStatus2 @@ -64,7 +64,7 @@ TransformEffect_: inc bc inc bc call CopyData - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .next ; save enemy mon DVs at wTransformedEnemyMonOriginalDVs @@ -128,7 +128,7 @@ TransformEffect_: jp PrintText .copyBasedOnTurn - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a jr z, .gotStatsOrModsToCopy push hl diff --git a/engine/battle/scale_sprites.asm b/engine/battle/scale_sprites.asm index 11967ba1..69979412 100644 --- a/engine/battle/scale_sprites.asm +++ b/engine/battle/scale_sprites.asm @@ -41,16 +41,16 @@ ScaleFirstThreeSpriteColumnsByTwo: ScaleLastSpriteColumnByTwo: ld a, 4*8 - 4 ; $1c, 4 tiles minus 4 unused rows - ld [hSpriteInterlaceCounter], a + ldh [hSpriteInterlaceCounter], a ld bc, -1 .columnInnerLoop ld a, [de] dec de swap a ; only high nybble contains information call ScalePixelsByTwo - ld a, [hSpriteInterlaceCounter] + ldh a, [hSpriteInterlaceCounter] dec a - ld [hSpriteInterlaceCounter], a + ldh [hSpriteInterlaceCounter], a jr nz, .columnInnerLoop dec de ; skip last 4 rows of new column dec de diff --git a/engine/battle/trainer_ai.asm b/engine/battle/trainer_ai.asm index 8373ef4f..3e444f8b 100644 --- a/engine/battle/trainer_ai.asm +++ b/engine/battle/trainer_ai.asm @@ -655,17 +655,17 @@ AIUseDireHit: ; unused AICheckIfHPBelowFraction: ; return carry if enemy trainer's current HP is below 1 / a of the maximum - ld [hDivisor], a + ldh [hDivisor], a ld hl, wEnemyMonMaxHP ld a, [hli] - ld [hDividend], a + ldh [hDividend], a ld a, [hl] - ld [hDividend + 1], a + ldh [hDividend + 1], a ld b, 2 call Divide - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] ld c, a - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] ld b, a ld hl, wEnemyMonHP + 1 ld a, [hld] diff --git a/engine/battle/unused_stats_functions.asm b/engine/battle/unused_stats_functions.asm index fb3422c7..5174adf5 100644 --- a/engine/battle/unused_stats_functions.asm +++ b/engine/battle/unused_stats_functions.asm @@ -1,6 +1,6 @@ ; does nothing since no stats are ever selected (barring glitches) DoubleSelectedStats: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wPlayerStatsToDouble] ld hl, wBattleMonAttack + 1 @@ -30,7 +30,7 @@ DoubleSelectedStats: ; does nothing since no stats are ever selected (barring glitches) HalveSelectedStats: - ld a, [hWhoseTurn] + ldh a, [hWhoseTurn] and a ld a, [wPlayerStatsToHalve] ld hl, wBattleMonAttack diff --git a/engine/battle/wild_encounters.asm b/engine/battle/wild_encounters.asm index 9d6fcb8d..9b637f97 100644 --- a/engine/battle/wild_encounters.asm +++ b/engine/battle/wild_encounters.asm @@ -48,10 +48,10 @@ TryDoWildEncounter: .CanEncounter ; compare encounter chance with a random number to determine if there will be an encounter ld b, a - ld a, [hRandomAdd] + ldh a, [hRandomAdd] cp b jr nc, .CantEncounter2 - ld a, [hRandomSub] + ldh a, [hRandomSub] ld b, a ld hl, WildMonEncounterSlotChances .determineEncounterSlot @@ -90,7 +90,7 @@ TryDoWildEncounter: .lastRepelStep ld [wRepelRemainingSteps], a ld a, TEXT_REPEL_WORE_OFF - ld [hSpriteIndexOrTextID], a + ldh [hSpriteIndexOrTextID], a call EnableAutoTextBoxDrawing call DisplayTextID .CantEncounter2 diff --git a/engine/debug/test_battle.asm b/engine/debug/test_battle.asm index 92d6e4a9..92f74576 100644 --- a/engine/debug/test_battle.asm +++ b/engine/debug/test_battle.asm @@ -41,5 +41,5 @@ TestBattle: ; do it all again. ld a, 1 ld [wUpdateSpritesEnabled], a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a jr .loop diff --git a/engine/events/black_out.asm b/engine/events/black_out.asm index 6c358ce3..16d2081f 100644 --- a/engine/events/black_out.asm +++ b/engine/events/black_out.asm @@ -6,34 +6,34 @@ ResetStatusAndHalveMoneyOnBlackout:: ld [wIsInBattle], a ld [wMapPalOffset], a ld [wNPCMovementScriptFunctionNum], a - ld [hJoyHeld], a + ldh [hJoyHeld], a ld [wNPCMovementScriptPointerTableNum], a ld [wFlags_0xcd60], a - ld [hMoney], a - ld [hMoney + 1], a - ld [hMoney + 2], a + ldh [hMoney], a + ldh [hMoney + 1], a + ldh [hMoney + 2], a call HasEnoughMoney jr c, .lostmoney ; never happens ; Halve the player's money. ld a, [wPlayerMoney] - ld [hMoney], a + ldh [hMoney], a ld a, [wPlayerMoney + 1] - ld [hMoney + 1], a + ldh [hMoney + 1], a ld a, [wPlayerMoney + 2] - ld [hMoney + 2], a + ldh [hMoney + 2], a xor a - ld [hDivideBCDDivisor], a - ld [hDivideBCDDivisor + 1], a + ldh [hDivideBCDDivisor], a + ldh [hDivideBCDDivisor + 1], a ld a, 2 - ld [hDivideBCDDivisor + 2], a + ldh [hDivideBCDDivisor + 2], a predef DivideBCDPredef3 - ld a, [hDivideBCDQuotient] + ldh a, [hDivideBCDQuotient] ld [wPlayerMoney], a - ld a, [hDivideBCDQuotient + 1] + ldh a, [hDivideBCDQuotient + 1] ld [wPlayerMoney + 1], a - ld a, [hDivideBCDQuotient + 2] + ldh a, [hDivideBCDQuotient + 2] ld [wPlayerMoney + 2], a .lostmoney diff --git a/engine/events/card_key.asm b/engine/events/card_key.asm index a37a1f27..7ac39a6f 100755 --- a/engine/events/card_key.asm +++ b/engine/events/card_key.asm @@ -28,7 +28,7 @@ PrintCardKeyText: call GetCoordsInFrontOfPlayer push de tx_pre_id CardKeySuccessText - ld [hSpriteIndexOrTextID], a + ldh [hSpriteIndexOrTextID], a call PrintPredefTextID pop de srl d @@ -55,7 +55,7 @@ PrintCardKeyText: jp PlaySound .noCardKey tx_pre_id CardKeyFailText - ld [hSpriteIndexOrTextID], a + ldh [hSpriteIndexOrTextID], a jp PrintPredefTextID SilphCoMapList: diff --git a/engine/events/cinnabar_lab.asm b/engine/events/cinnabar_lab.asm index 7878780c..0e0af0bb 100755 --- a/engine/events/cinnabar_lab.asm +++ b/engine/events/cinnabar_lab.asm @@ -35,7 +35,7 @@ GiveFossilToCinnabarLab:: ld e, a add hl, de ld a, [hl] - ld [hItemToRemoveID], a + ldh [hItemToRemoveID], a cp DOME_FOSSIL jr z, .choseDomeFossil cp HELIX_FOSSIL @@ -61,7 +61,7 @@ GiveFossilToCinnabarLab:: ld hl, LabFossil_610b3 call PrintText ld a, [wFossilItem] - ld [hItemToRemoveID], a + ldh [hItemToRemoveID], a callba RemoveItemByID ld hl, LabFossil_610b8 call PrintText @@ -92,7 +92,7 @@ PrintFossilsInBag: ; Prints each fossil in the player's bag on a separate line in the menu. ld hl, wFilteredBagItems xor a - ld [hItemCounter], a + ldh [hItemCounter], a .loop ld a, [hli] cp $ff @@ -101,7 +101,7 @@ PrintFossilsInBag: ld [wd11e], a call GetItemName coord hl, 2, 2 - ld a, [hItemCounter] + ldh a, [hItemCounter] ld bc, SCREEN_WIDTH * 2 call AddNTimes ld de, wcd6d diff --git a/engine/events/diploma.asm b/engine/events/diploma.asm index 92196537..9e9da9a5 100755 --- a/engine/events/diploma.asm +++ b/engine/events/diploma.asm @@ -62,7 +62,7 @@ DisplayDiploma:: call Delay3 call GBPalNormal ld a, $90 - ld [rOBP0], a + ldh [rOBP0], a call WaitForTextScrollButtonPress ld hl, wd730 res 6, [hl] diff --git a/engine/events/hidden_items.asm b/engine/events/hidden_items.asm index 85ae7c93..6a5835cd 100755 --- a/engine/events/hidden_items.asm +++ b/engine/events/hidden_items.asm @@ -67,9 +67,9 @@ HiddenCoins: and a ret nz xor a - ld [hUnusedCoinsByte], a - ld [hCoins], a - ld [hCoins + 1], a + ldh [hUnusedCoinsByte], a + ldh [hCoins], a + ldh [hCoins + 1], a ld a, [wHiddenObjectFunctionArgument] sub COIN cp 10 @@ -81,19 +81,19 @@ HiddenCoins: jr .bcd100 .bcd10 ld a, $10 - ld [hCoins + 1], a + ldh [hCoins + 1], a jr .bcdDone .bcd20 ld a, $20 - ld [hCoins + 1], a + ldh [hCoins + 1], a jr .bcdDone .bcd40 ; due to a typo, this is never used ld a, $40 - ld [hCoins + 1], a + ldh [hCoins + 1], a jr .bcdDone .bcd100 ld a, $1 - ld [hCoins], a + ldh [hCoins], a .bcdDone ld de, wPlayerCoins + 1 ld hl, hCoins + 1 diff --git a/engine/events/hidden_objects/bookshelves.asm b/engine/events/hidden_objects/bookshelves.asm index 9cdd037a..daa8205d 100644 --- a/engine/events/hidden_objects/bookshelves.asm +++ b/engine/events/hidden_objects/bookshelves.asm @@ -24,7 +24,7 @@ PrintBookshelfText:: pop af call PrintPredefTextID xor a - ld [hFFDB], a + ldh [hFFDB], a ret .nextBookshelfEntry1 inc hl @@ -33,7 +33,7 @@ PrintBookshelfText:: jr .loop .noMatch ld a, $ff - ld [hFFDB], a + ldh [hFFDB], a jpba PrintCardKeyText INCLUDE "data/tilesets/bookshelf_tile_ids.asm" diff --git a/engine/events/hidden_objects/cinnabar_gym_quiz.asm b/engine/events/hidden_objects/cinnabar_gym_quiz.asm index da309f87..2e4f48f3 100644 --- a/engine/events/hidden_objects/cinnabar_gym_quiz.asm +++ b/engine/events/hidden_objects/cinnabar_gym_quiz.asm @@ -12,14 +12,14 @@ CinnabarGymQuiz:: ld a, [wHiddenObjectFunctionArgument] push af and $f - ld [hGymGateIndex], a + ldh [hGymGateIndex], a pop af and $f0 swap a - ld [hGymGateAnswer], a + ldh [hGymGateAnswer], a ld hl, CinnabarGymQuizIntroText call PrintText - ld a, [hGymGateIndex] + ldh a, [hGymGateIndex] dec a add a ld d, 0 @@ -77,18 +77,18 @@ CinnabarGymGateFlagAction: CinnabarGymQuiz_1ea92: call YesNoChoice - ld a, [hGymGateAnswer] + ldh a, [hGymGateAnswer] ld c, a ld a, [wCurrentMenuItem] cp c jr nz, .wrongAnswer ld hl, wCurrentMapScriptFlags set 5, [hl] - ld a, [hGymGateIndex] - ld [hBackupGymGateIndex], a + ldh a, [hGymGateIndex] + ldh [hBackupGymGateIndex], a ld hl, CinnabarGymQuizCorrectText call PrintText - ld a, [hBackupGymGateIndex] + ldh a, [hBackupGymGateIndex] AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0 ld c, a ld b, FLAG_SET @@ -101,7 +101,7 @@ CinnabarGymQuiz_1ea92: call WaitForSoundToFinish ld hl, CinnabarGymQuizIncorrectText call PrintText - ld a, [hGymGateIndex] + ldh a, [hGymGateIndex] add $2 AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2 ld c, a @@ -111,7 +111,7 @@ CinnabarGymQuiz_1ea92: ld a, c and a ret nz - ld a, [hGymGateIndex] + ldh a, [hGymGateIndex] add $2 ld [wOpponentAfterWrongAnswer], a ret @@ -122,7 +122,7 @@ CinnabarGymQuizCorrectText: text_promptbutton text_asm - ld a, [hBackupGymGateIndex] + ldh a, [hBackupGymGateIndex] AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0 ld c, a ld b, FLAG_TEST @@ -144,9 +144,9 @@ UpdateCinnabarGymGateTileBlocks_:: ; Update the overworld map with open floor blocks or locked gate blocks ; depending on event flags. ld a, 6 - ld [hGymGateIndex], a + ldh [hGymGateIndex], a .loop - ld a, [hGymGateIndex] + ldh a, [hGymGateIndex] dec a add a add a @@ -161,8 +161,8 @@ UpdateCinnabarGymGateTileBlocks_:: ld a, [hl] ld [wGymGateTileBlock], a push bc - ld a, [hGymGateIndex] - ld [hBackupGymGateIndex], a + ldh a, [hGymGateIndex] + ldh [hBackupGymGateIndex], a AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0 ld c, a ld b, FLAG_TEST diff --git a/engine/events/hidden_objects/museum_fossils.asm b/engine/events/hidden_objects/museum_fossils.asm index 36fb2556..ef53ed89 100644 --- a/engine/events/hidden_objects/museum_fossils.asm +++ b/engine/events/hidden_objects/museum_fossils.asm @@ -26,10 +26,10 @@ DisplayMonFrontSpriteInBox: ; Displays a pokemon's front sprite in a pop-up window. ; [wcf91] = pokemon internal id number ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 xor a - ld [hWY], a + ldh [hWY], a call SaveScreenTilesToBuffer1 ld a, MON_SPRITE_POPUP ld [wTextBoxID], a @@ -41,12 +41,12 @@ DisplayMonFrontSpriteInBox: ld de, vChars1 + $310 call LoadMonFrontSprite ld a, $80 - ld [hStartTileID], a + ldh [hStartTileID], a coord hl, 10, 11 predef AnimateSendingOutMon call WaitForTextScrollButtonPress call LoadScreenTilesFromBuffer1 call Delay3 ld a, $90 - ld [hWY], a + ldh [hWY], a ret diff --git a/engine/events/hidden_objects/safari_game.asm b/engine/events/hidden_objects/safari_game.asm index 656e872a..5996fc6f 100644 --- a/engine/events/hidden_objects/safari_game.asm +++ b/engine/events/hidden_objects/safari_game.asm @@ -37,12 +37,12 @@ SafariZoneGameOver: cp SFX_SAFARI_ZONE_PA jr nz, .waitForMusicToPlay ld a, TEXT_SAFARI_GAME_OVER - ld [hSpriteIndexOrTextID], a + ldh [hSpriteIndexOrTextID], a call DisplayTextID xor a ld [wPlayerMovingDirection], a ld a, SAFARI_ZONE_GATE - ld [hWarpDestinationMap], a + ldh [hWarpDestinationMap], a ld a, $3 ld [wDestinationWarpID], a ld a, $5 diff --git a/engine/events/hidden_objects/town_map.asm b/engine/events/hidden_objects/town_map.asm index 9481b902..866d38c8 100644 --- a/engine/events/hidden_objects/town_map.asm +++ b/engine/events/hidden_objects/town_map.asm @@ -8,15 +8,15 @@ TownMapText:: set 6, [hl] call GBPalWhiteOutWithDelay3 xor a - ld [hWY], a + ldh [hWY], a inc a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call LoadFontTilePatterns callba DisplayTownMap ld hl, wd730 res 6, [hl] ld de, TextScriptEnd push de - ld a, [hLoadedROMBank] + ldh a, [hLoadedROMBank] push af jp CloseTextDisplay diff --git a/engine/events/hidden_objects/vermilion_gym_trash.asm b/engine/events/hidden_objects/vermilion_gym_trash.asm index f46b53c2..c2bfed06 100644 --- a/engine/events/hidden_objects/vermilion_gym_trash.asm +++ b/engine/events/hidden_objects/vermilion_gym_trash.asm @@ -56,12 +56,12 @@ GymTrashScript: ; 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 + ldh [hGymTrashCanRandNumMask], a push hl call Random swap a ld b, a - ld a, [hGymTrashCanRandNumMask] + ldh a, [hGymTrashCanRandNumMask] and b dec a pop hl diff --git a/engine/events/oaks_aide.asm b/engine/events/oaks_aide.asm index 61304877..dd4e5fd7 100755 --- a/engine/events/oaks_aide.asm +++ b/engine/events/oaks_aide.asm @@ -9,16 +9,16 @@ OaksAideScript: ld b, wPokedexOwnedEnd - wPokedexOwned call CountSetBits ld a, [wNumSetBits] - ld [hOaksAideNumMonsOwned], a + ldh [hOaksAideNumMonsOwned], a ld b, a - ld a, [hOaksAideRequirement] + ldh a, [hOaksAideRequirement] cp b jr z, .giveItem jr nc, .notEnoughOwnedMons .giveItem ld hl, OaksAideHereYouGoText call PrintText - ld a, [hOaksAideRewardItem] + ldh a, [hOaksAideRewardItem] ld b, a ld c, 1 call GiveItem @@ -42,7 +42,7 @@ OaksAideScript: call PrintText ld a, $ff .done - ld [hOaksAideResult], a + ldh [hOaksAideResult], a ret OaksAideHiText: diff --git a/engine/events/pick_up_item.asm b/engine/events/pick_up_item.asm index ec50d9c4..548db5be 100644 --- a/engine/events/pick_up_item.asm +++ b/engine/events/pick_up_item.asm @@ -1,7 +1,7 @@ PickUpItem: call EnableAutoTextBoxDrawing - ld a, [hSpriteIndexOrTextID] + ldh a, [hSpriteIndexOrTextID] ld b, a ld hl, wMissableObjectList .missableObjectsListLoop @@ -15,10 +15,10 @@ PickUpItem: .isMissable ld a, [hl] - ld [hMissableObjectIndex], a + ldh [hMissableObjectIndex], a ld hl, wMapSpriteExtraData - ld a, [hSpriteIndexOrTextID] + ldh a, [hSpriteIndexOrTextID] dec a add a ld d, 0 @@ -30,7 +30,7 @@ PickUpItem: call GiveItem jr nc, .BagFull - ld a, [hMissableObjectIndex] + ldh a, [hMissableObjectIndex] ld [wMissableObjectIndex], a predef HideObject ld a, 1 diff --git a/engine/events/poison.asm b/engine/events/poison.asm index 5d8eb9fd..8bb756b5 100644 --- a/engine/events/poison.asm +++ b/engine/events/poison.asm @@ -52,7 +52,7 @@ ApplyOutOfBattlePoisonDamage: ld [wJoyIgnore], a call EnableAutoTextBoxDrawing ld a, TEXT_MON_FAINTED - ld [hSpriteIndexOrTextID], a + ldh [hSpriteIndexOrTextID], a call DisplayTextID pop de pop hl @@ -99,7 +99,7 @@ ApplyOutOfBattlePoisonDamage: jr nz, .noBlackOut call EnableAutoTextBoxDrawing ld a, TEXT_BLACKED_OUT - ld [hSpriteIndexOrTextID], a + ldh [hSpriteIndexOrTextID], a call DisplayTextID ld hl, wd72e set 5, [hl] diff --git a/engine/events/pokedex_rating.asm b/engine/events/pokedex_rating.asm index 9dbe2138..f17f7b17 100755 --- a/engine/events/pokedex_rating.asm +++ b/engine/events/pokedex_rating.asm @@ -3,17 +3,17 @@ DisplayDexRating: ld b, wPokedexSeenEnd - wPokedexSeen call CountSetBits ld a, [wNumSetBits] - ld [hDexRatingNumMonsSeen], a + ldh [hDexRatingNumMonsSeen], a ld hl, wPokedexOwned ld b, wPokedexOwnedEnd - wPokedexOwned call CountSetBits ld a, [wNumSetBits] - ld [hDexRatingNumMonsOwned], a + ldh [hDexRatingNumMonsOwned], a ld hl, DexRatingsTable .findRating ld a, [hli] ld b, a - ld a, [hDexRatingNumMonsOwned] + ldh a, [hDexRatingNumMonsOwned] cp b jr c, .foundRating inc hl @@ -34,10 +34,10 @@ DisplayDexRating: jp WaitForTextScrollButtonPress .hallOfFame ld de, wDexRatingNumMonsSeen - ld a, [hDexRatingNumMonsSeen] + ldh a, [hDexRatingNumMonsSeen] ld [de], a inc de - ld a, [hDexRatingNumMonsOwned] + ldh a, [hDexRatingNumMonsOwned] ld [de], a inc de .copyRatingTextLoop diff --git a/engine/events/pokemart.asm b/engine/events/pokemart.asm index b05e4ed6..0c71e4de 100755 --- a/engine/events/pokemart.asm +++ b/engine/events/pokemart.asm @@ -77,7 +77,7 @@ DisplayPokemartDialogue_:: jr c, .unsellableItem ld a, PRICEDITEMLISTMENU ld [wListMenuID], a - ld [hHalveItemPrices], a ; halve prices when selling + ldh [hHalveItemPrices], a ; halve prices when selling call DisplayChooseQuantityMenu inc a jr z, .sellMenuLoop ; if the player closed the choose quantity menu with the B button @@ -152,7 +152,7 @@ DisplayPokemartDialogue_:: ld a, 99 ld [wMaxItemQuantity], a xor a - ld [hHalveItemPrices], a ; don't halve item prices when buying + ldh [hHalveItemPrices], a ; don't halve item prices when buying call DisplayChooseQuantityMenu inc a jr z, .buyMenuLoop ; if the player closed the choose quantity menu with the B button diff --git a/engine/events/prize_menu.asm b/engine/events/prize_menu.asm index 0030aafb..2d8bde90 100755 --- a/engine/events/prize_menu.asm +++ b/engine/events/prize_menu.asm @@ -64,7 +64,7 @@ GetPrizeMenuId: ; display the three prizes' names ; (distinguishing between Pokemon names ; and Items (specifically TMs) names) - ld a, [hSpriteIndexOrTextID] + ldh a, [hSpriteIndexOrTextID] sub 3 ; prize-texts' id are 3, 4 and 5 ld [wWhichPrizeWindow], a ; prize-texts' id (relative, i.e. 0, 1 or 2) add a @@ -177,11 +177,11 @@ LoadCoinsToSubtract: ld hl, wPrize1Price add hl, de ; get selected prize's price xor a - ld [hUnusedCoinsByte], a + ldh [hUnusedCoinsByte], a ld a, [hli] - ld [hCoins], a + ldh [hCoins], a ld a, [hl] - ld [hCoins + 1], a + ldh [hCoins + 1], a ret HandlePrizeChoice: diff --git a/engine/events/saffron_guards.asm b/engine/events/saffron_guards.asm index 59c2725c..cd008394 100755 --- a/engine/events/saffron_guards.asm +++ b/engine/events/saffron_guards.asm @@ -2,7 +2,7 @@ RemoveGuardDrink:: ld hl, GuardDrinksList .drinkLoop ld a, [hli] - ld [hItemToRemoveID], a + ldh [hItemToRemoveID], a and a ret z push hl diff --git a/engine/events/vending_machine.asm b/engine/events/vending_machine.asm index acb8dce8..7bda91b0 100755 --- a/engine/events/vending_machine.asm +++ b/engine/events/vending_machine.asm @@ -37,17 +37,17 @@ VendingMachineMenu:: cp 3 ; chose Cancel? jr z, .notThirsty xor a - ld [hMoney], a - ld [hMoney + 2], a + ldh [hMoney], a + ldh [hMoney + 2], a ld a, $2 - ld [hMoney + 1], a + ldh [hMoney + 1], a call HasEnoughMoney jr nc, .enoughMoney ld hl, VendingMachineText4 jp PrintText .enoughMoney call LoadVendingMachineItem - ld a, [hVendingMachineItem] + ldh a, [hVendingMachineItem] ld b, a ld c, 1 call GiveItem @@ -121,13 +121,13 @@ LoadVendingMachineItem: ld e, a add hl, de ld a, [hli] - ld [hVendingMachineItem], a + ldh [hVendingMachineItem], a ld a, [hli] - ld [hVendingMachinePrice], a + ldh [hVendingMachinePrice], a ld a, [hli] - ld [hVendingMachinePrice + 1], a + ldh [hVendingMachinePrice + 1], a ld a, [hl] - ld [hVendingMachinePrice + 2], a + ldh [hVendingMachinePrice + 2], a ret INCLUDE "data/items/vending_prices.asm" diff --git a/engine/gfx/hp_bar.asm b/engine/gfx/hp_bar.asm index 4b91da58..b7bd97f2 100755 --- a/engine/gfx/hp_bar.asm +++ b/engine/gfx/hp_bar.asm @@ -21,22 +21,22 @@ GetHPBarLength: rr e srl d rr e - ld a, [hMultiplicand+1] + ldh a, [hMultiplicand+1] ld b, a - ld a, [hMultiplicand+2] + ldh a, [hMultiplicand+2] srl b ; divide multiplication result as well rr a srl b rr a - ld [hMultiplicand+2], a + ldh [hMultiplicand+2], a ld a, b - ld [hMultiplicand+1], a + ldh [hMultiplicand+1], a .maxHPSmaller256 ld a, e - ld [hDivisor], a + ldh [hDivisor], a ld b, $4 call Divide - ld a, [hMultiplicand+2] + ldh a, [hMultiplicand+2] ld e, a ; e = bc * 48 / de (num of pixels of HP bar) pop hl and a @@ -213,7 +213,7 @@ UpdateHPBar_PrintHPNumber: ld a, [wHPBarOldHP + 1] ld [wHPBarTempHP], a push hl - ld a, [hFlagsFFF6] + ldh a, [hFlagsFFF6] bit 0, a jr z, .asm_fb15 ld de, $9 diff --git a/engine/gfx/mon_icons.asm b/engine/gfx/mon_icons.asm index 7a96b36c..19008c05 100755 --- a/engine/gfx/mon_icons.asm +++ b/engine/gfx/mon_icons.asm @@ -169,7 +169,7 @@ WriteMonPartySpriteOAMByPartyIndex: push hl push de push bc - ld a, [hPartyMonIndex] + ldh a, [hPartyMonIndex] ld hl, wPartySpecies ld e, a ld d, 0 @@ -187,7 +187,7 @@ WriteMonPartySpriteOAMBySpecies: ; Write OAM blocks for the party sprite of the species in ; [wMonPartySpriteSpecies]. xor a - ld [hPartyMonIndex], a + ldh [hPartyMonIndex], a ld a, [wMonPartySpriteSpecies] call GetPartyMonSpriteID ld [wOAMBaseTile], a @@ -237,7 +237,7 @@ WriteMonPartySpriteOAM: push af ld c, $10 ld h, wOAMBuffer / $100 - ld a, [hPartyMonIndex] + ldh a, [hPartyMonIndex] swap a ld l, a add $10 diff --git a/engine/gfx/oam_dma.asm b/engine/gfx/oam_dma.asm index aeea4c01..d8d8839a 100644 --- a/engine/gfx/oam_dma.asm +++ b/engine/gfx/oam_dma.asm @@ -15,7 +15,7 @@ WriteDMACodeToHRAM:: DMARoutine: ; initiate DMA ld a, wOAMBuffer / $100 - ld [rDMA], a + ldh [rDMA], a ; wait for DMA to finish ld a, $28 diff --git a/engine/gfx/palettes.asm b/engine/gfx/palettes.asm index 58e08e86..23203374 100755 --- a/engine/gfx/palettes.asm +++ b/engine/gfx/palettes.asm @@ -335,13 +335,13 @@ SendSGBPacket: push bc ; disable ReadJoypad to prevent it from interfering with sending the packet ld a, 1 - ld [hDisableJoypadPolling], a + ldh [hDisableJoypadPolling], a ; send RESET signal (P14=LOW, P15=LOW) xor a - ld [rJOYP], a + ldh [rJOYP], a ; set P14=HIGH, P15=HIGH ld a, $30 - ld [rJOYP], a + ldh [rJOYP], a ;load length of packets (16 bytes) ld b, $10 .nextByte @@ -358,10 +358,10 @@ SendSGBPacket: ; else (if 0th bit is zero) set P14=LOW,P15=HIGH (send bit 0) ld a, $20 .next0 - ld [rJOYP], a + ldh [rJOYP], a ; must set P14=HIGH,P15=HIGH between each "pulse" ld a, $30 - ld [rJOYP], a + ldh [rJOYP], a ; rotation will put next bit in 0th position (so we can always use command ; "bit 0,d" to fetch the bit that has to be sent) rr d @@ -372,12 +372,12 @@ SendSGBPacket: jr nz, .nextByte ; send bit 1 as a "stop bit" (end of parameter data) ld a, $20 - ld [rJOYP], a + ldh [rJOYP], a ; set P14=HIGH,P15=HIGH ld a, $30 - ld [rJOYP], a + ldh [rJOYP], a xor a - ld [hDisableJoypadPolling], a + ldh [hDisableJoypadPolling], a ; wait for about 70000 cycles call Wait7000 ; restore (previously pushed) number of packets @@ -457,41 +457,41 @@ CheckSGB: di call SendSGBPacket ld a, 1 - ld [hDisableJoypadPolling], a + ldh [hDisableJoypadPolling], a ei call Wait7000 - ld a, [rJOYP] + ldh a, [rJOYP] and $3 cp $3 jr nz, .isSGB ld a, $20 - ld [rJOYP], a - ld a, [rJOYP] - ld a, [rJOYP] + ldh [rJOYP], a + ldh a, [rJOYP] + ldh a, [rJOYP] call Wait7000 call Wait7000 ld a, $30 - ld [rJOYP], a + ldh [rJOYP], a call Wait7000 call Wait7000 ld a, $10 - ld [rJOYP], a - ld a, [rJOYP] - ld a, [rJOYP] - ld a, [rJOYP] - ld a, [rJOYP] - ld a, [rJOYP] - ld a, [rJOYP] + ldh [rJOYP], a + ldh a, [rJOYP] + ldh a, [rJOYP] + ldh a, [rJOYP] + ldh a, [rJOYP] + ldh a, [rJOYP] + ldh a, [rJOYP] call Wait7000 call Wait7000 ld a, $30 - ld [rJOYP], a - ld a, [rJOYP] - ld a, [rJOYP] - ld a, [rJOYP] + ldh [rJOYP], a + ldh a, [rJOYP] + ldh a, [rJOYP] + ldh a, [rJOYP] call Wait7000 call Wait7000 - ld a, [rJOYP] + ldh a, [rJOYP] and $3 cp $3 jr nz, .isSGB @@ -513,7 +513,7 @@ CopyGfxToSuperNintendoVRAM: push de call DisableLCD ld a, $e4 - ld [rBGP], a + ldh [rBGP], a ld de, vChars1 ld a, [wCopyingSGBTileData] and a @@ -539,11 +539,11 @@ CopyGfxToSuperNintendoVRAM: dec c jr nz, .loop ld a, $e3 - ld [rLCDC], a + ldh [rLCDC], a pop hl call SendSGBPacket xor a - ld [rBGP], a + ldh [rBGP], a ei ret @@ -577,7 +577,7 @@ SendSGBPackets: InitGBCPalettes: ld a, $80 ; index 0 with auto-increment - ld [rBGPI], a + ldh [rBGPI], a inc hl ld c, $20 .loop @@ -592,7 +592,7 @@ InitGBCPalettes: inc d .noCarry ld a, [de] - ld [rBGPD], a + ldh [rBGPD], a dec c jr nz, .loop ret diff --git a/engine/gfx/screen_effects.asm b/engine/gfx/screen_effects.asm index 0d3806c1..e8648901 100755 --- a/engine/gfx/screen_effects.asm +++ b/engine/gfx/screen_effects.asm @@ -1,14 +1,14 @@ ; b = new colour for BG colour 0 (usually white) for 4 frames ChangeBGPalColor0_4Frames: call GetPredefRegisters - ld a, [rBGP] + ldh a, [rBGP] or b - ld [rBGP], a + ldh [rBGP], a ld c, 4 call DelayFrames - ld a, [rBGP] + ldh a, [rBGP] and %11111100 - ld [rBGP], a + ldh [rBGP], a ret PredefShakeScreenVertically: @@ -19,7 +19,7 @@ PredefShakeScreenVertically: ld [wDisableVBlankWYUpdate], a xor a .loop - ld [hMutateWY], a + ldh [hMutateWY], a call .MutateWY call .MutateWY dec b @@ -30,10 +30,10 @@ PredefShakeScreenVertically: ret .MutateWY - ld a, [hMutateWY] + ldh a, [hMutateWY] xor b - ld [hMutateWY], a - ld [rWY], a + ldh [hMutateWY], a + ldh [rWY], a ld c, 3 jp DelayFrames @@ -43,7 +43,7 @@ PredefShakeScreenHorizontally: call GetPredefRegisters xor a .loop - ld [hMutateWX], a + ldh [hMutateWX], a call .MutateWX ld c, 1 call DelayFrames @@ -54,18 +54,18 @@ PredefShakeScreenHorizontally: ; restore normal WX ld a, 7 - ld [rWX], a + ldh [rWX], a ret .MutateWX - ld a, [hMutateWX] + ldh a, [hMutateWX] xor b - ld [hMutateWX], a + ldh [hMutateWX], a bit 7, a jr z, .skipZeroing xor a ; zero a if it's negative .skipZeroing add 7 - ld [rWX], a + ldh [rWX], a ld c, 4 jp DelayFrames diff --git a/engine/gfx/sprite_oam.asm b/engine/gfx/sprite_oam.asm index 68128413..1a96286d 100644 --- a/engine/gfx/sprite_oam.asm +++ b/engine/gfx/sprite_oam.asm @@ -13,13 +13,13 @@ PrepareOAMData:: .updateEnabled xor a - ld [hOAMBufferOffset], a + ldh [hOAMBufferOffset], a .spriteLoop - ld [hSpriteOffset2], a + ldh [hSpriteOffset2], a ld d, wSpriteStateData1 / $100 - ld a, [hSpriteOffset2] + ldh a, [hSpriteOffset2] ld e, a ld a, [de] ; c1x0 and a @@ -58,7 +58,7 @@ PrepareOAMData:: ld e, a ld a, [de] ; c2x7 and $80 - ld [hSpritePriority], a ; temp store sprite priority + ldh [hSpritePriority], a ; temp store sprite priority pop de ; read the entry from the table @@ -77,17 +77,17 @@ PrepareOAMData:: call GetSpriteScreenXY - ld a, [hOAMBufferOffset] + ldh a, [hOAMBufferOffset] ld e, a ld d, wOAMBuffer / $100 .tileLoop - ld a, [hSpriteScreenY] ; temp for sprite Y position + ldh a, [hSpriteScreenY] ; temp for sprite Y position add $10 ; Y=16 is top of screen (Y=0 is invisible) add [hl] ; add Y offset from table ld [de], a ; write new sprite OAM Y position inc hl - ld a, [hSpriteScreenX] ; temp for sprite X position + ldh a, [hSpriteScreenX] ; temp for sprite X position add $8 ; X=8 is left of screen (X=0 is invisible) add [hl] ; add X offset from table inc e @@ -126,7 +126,7 @@ PrepareOAMData:: ld a, [hl] bit 1, a ; is the tile allowed to set the sprite priority bit? jr z, .skipPriority - ld a, [hSpritePriority] + ldh a, [hSpritePriority] or [hl] .skipPriority inc hl @@ -136,16 +136,16 @@ PrepareOAMData:: jr z, .tileLoop ld a, e - ld [hOAMBufferOffset], a + ldh [hOAMBufferOffset], a .nextSprite - ld a, [hSpriteOffset2] + ldh a, [hSpriteOffset2] add $10 cp $100 % $100 jp nz, .spriteLoop ; Clear unused OAM. - ld a, [hOAMBufferOffset] + ldh a, [hOAMBufferOffset] ld l, a ld h, wOAMBuffer / $100 ld de, $4 @@ -170,20 +170,20 @@ GetSpriteScreenXY: inc e inc e ld a, [de] ; c1x4 - ld [hSpriteScreenY], a + ldh [hSpriteScreenY], a inc e inc e ld a, [de] ; c1x6 - ld [hSpriteScreenX], a + ldh [hSpriteScreenX], a ld a, 4 add e ld e, a - ld a, [hSpriteScreenY] + ldh a, [hSpriteScreenY] add 4 and $f0 ld [de], a ; c1xa (y) inc e - ld a, [hSpriteScreenX] + ldh a, [hSpriteScreenX] and $f0 ld [de], a ; c1xb (x) ret diff --git a/engine/items/item_effects.asm b/engine/items/item_effects.asm index 238c2ea9..3668dd74 100755 --- a/engine/items/item_effects.asm +++ b/engine/items/item_effects.asm @@ -239,14 +239,14 @@ ItemUseBall: ; Calculate MaxHP * 255. xor a - ld [hMultiplicand], a + ldh [hMultiplicand], a ld hl, wEnemyMonMaxHP ld a, [hli] - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a ld a, [hl] - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a ld a, 255 - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ; Determine BallFactor. It's 8 for Great Balls and 12 for the others. @@ -260,7 +260,7 @@ ItemUseBall: ; Note that the results of all division operations are floored. ; Calculate (MaxHP * 255) / BallFactor. - ld [hDivisor], a + ldh [hDivisor], a ld b, 4 ; number of bytes in dividend call Divide @@ -281,17 +281,17 @@ ItemUseBall: .skip2 ; Let W = ((MaxHP * 255) / BallFactor) / max(HP / 4, 1). Calculate W. - ld [hDivisor], a + ldh [hDivisor], a ld b, 4 call Divide ; If W > 255, store 255 in [hQuotient + 3]. ; Let X = min(W, 255) = [hQuotient + 3]. - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] and a jr z, .skip3 ld a, 255 - ld [hQuotient + 3], a + ldh [hQuotient + 3], a .skip3 pop bc ; b = Rand1 - Status @@ -302,7 +302,7 @@ ItemUseBall: jr c, .failedToCapture ; If W > 255, the ball captures the Pokémon. - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] and a jr nz, .captured @@ -310,7 +310,7 @@ ItemUseBall: ; If Rand2 > X, the ball fails to capture the Pokémon. ld b, a - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] cp b jr c, .failedToCapture @@ -318,17 +318,17 @@ ItemUseBall: jr .skipShakeCalculations .failedToCapture - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] ld [wPokeBallCaptureCalcTemp], a ; Save X. ; Calculate CatchRate * 100. xor a - ld [hMultiplicand], a - ld [hMultiplicand + 1], a + ldh [hMultiplicand], a + ldh [hMultiplicand + 1], a ld a, [wEnemyMonActualCatchRate] - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a ld a, 100 - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ; Determine BallFactor2. @@ -349,26 +349,26 @@ ItemUseBall: .skip4 ; Let Y = (CatchRate * 100) / BallFactor2. Calculate Y. ld a, b - ld [hDivisor], a + ldh [hDivisor], a ld b, 4 call Divide ; If Y > 255, there are 3 shakes. ; Note that this shouldn't be possible. ; The maximum value of Y is (255 * 100) / 150 = 170. - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] and a ld b, $63 ; 3 shakes jr nz, .setAnimData ; Calculate X * Y. ld a, [wPokeBallCaptureCalcTemp] - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ; Calculate (X * Y) / 255. ld a, 255 - ld [hDivisor], a + ldh [hDivisor], a ld b, 4 call Divide @@ -386,9 +386,9 @@ ItemUseBall: .addAilmentValue ; If the Pokémon has a status ailment, add Status2. - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] add b - ld [hQuotient + 3], a + ldh [hQuotient + 3], a .skip5 ; Finally determine the number of shakes. @@ -398,7 +398,7 @@ ItemUseBall: ; 10 ≤ Z < 30: 1 shake ; 30 ≤ Z < 70: 2 shakes ; 70 ≤ Z: 3 shakes - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] cp 10 ld b, $20 jr c, .setAnimData @@ -422,7 +422,7 @@ ItemUseBall: ld a, TOSS_ANIM ld [wAnimationID], a xor a - ld [hWhoseTurn], a + ldh [hWhoseTurn], a ld [wAnimationType], a ld [wDamageMultipliers], a ld a, [wWhichPokemon] @@ -656,7 +656,7 @@ ItemUseBicycle: jp nc, NoCyclingAllowedHere call ItemUseReloadOverworldData xor a ; no keys pressed - ld [hJoyHeld], a ; current joypad state + ldh [hJoyHeld], a ; current joypad state inc a ld [wWalkBikeSurfState], a ; change player state to bicycling ld hl, GotOnBicycleText @@ -687,11 +687,11 @@ ItemUseSurfboard: jp PrintText .tryToStopSurfing xor a - ld [hSpriteIndexOrTextID], a + ldh [hSpriteIndexOrTextID], a ld d, 16 ; talking range in pixels (normal range) call IsSpriteInFrontOfPlayer2 res 7, [hl] - ld a, [hSpriteIndexOrTextID] + ldh a, [hSpriteIndexOrTextID] and a ; is there a sprite in the way? jr nz, .cannotStopSurfing ld hl, TilePairCollisionsWater @@ -1018,18 +1018,18 @@ ItemUseMedicine: call AddNTimes ld a, [hli] ld [wHPBarMaxHP + 1], a - ld [hDividend], a + ldh [hDividend], a ld a, [hl] ld [wHPBarMaxHP], a - ld [hDividend + 1], a + ldh [hDividend + 1], a ld a, 5 - ld [hDivisor], a + ldh [hDivisor], a ld b, 2 ; number of bytes call Divide ; get 1/5 of max HP of pokemon that used Softboiled ld bc, (wPartyMon1HP + 1) - (wPartyMon1MaxHP + 1) add hl, bc ; hl now points to LSB of current HP of pokemon that used Softboiled ; subtract 1/5 of max HP from current HP of pokemon that used Softboiled - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] push af ld b, a ld a, [hl] @@ -1037,7 +1037,7 @@ ItemUseMedicine: sub b ld [hld], a ld [wHPBarNewHP], a - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] ld b, a ld a, [hl] ld [wHPBarOldHP+1], a @@ -1050,15 +1050,15 @@ ItemUseMedicine: call AddNTimes ; calculate coordinates of HP bar of pokemon that used Softboiled ld a, SFX_HEAL_HP call PlaySoundWaitForCurrent - ld a, [hFlagsFFF6] + ldh a, [hFlagsFFF6] set 0, a - ld [hFlagsFFF6], a + ldh [hFlagsFFF6], a ld a, $02 ld [wHPBarType], a predef UpdateHPBar2 ; animate HP bar decrease of pokemon that used Softboiled - ld a, [hFlagsFFF6] + ldh a, [hFlagsFFF6] res 0, a - ld [hFlagsFFF6], a + ldh [hFlagsFFF6], a pop af ld b, a ; store heal amount (1/5 of max HP) ld hl, wHPBarOldHP + 1 @@ -1200,15 +1200,15 @@ ItemUseMedicine: jr z, .playStatusAilmentCuringSound ld a, SFX_HEAL_HP call PlaySoundWaitForCurrent - ld a, [hFlagsFFF6] + ldh a, [hFlagsFFF6] set 0, a - ld [hFlagsFFF6], a + ldh [hFlagsFFF6], a ld a, $02 ld [wHPBarType], a predef UpdateHPBar2 ; animate the HP bar lengthening - ld a, [hFlagsFFF6] + ldh a, [hFlagsFFF6] res 0, a - ld [hFlagsFFF6], a + ldh [hFlagsFFF6], a ld a, REVIVE_MSG ld [wPartyMenuTypeOrMessageID], a ld a, [wcf91] @@ -1224,13 +1224,13 @@ ItemUseMedicine: call PlaySoundWaitForCurrent .showHealingItemMessage xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call ClearScreen dec a ld [wUpdateSpritesEnabled], a call RedrawPartyMenu ; redraws the party menu and displays the message ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld c, 50 call DelayFrames call WaitForTextScrollButtonPress @@ -1347,11 +1347,11 @@ ItemUseMedicine: ld bc, wPartyMon1Exp - wPartyMon1Level add hl, bc ; hl now points to MSB of experience ; update experience to minimum for new level - ld a, [hExperience] + ldh a, [hExperience] ld [hli], a - ld a, [hExperience + 1] + ldh a, [hExperience + 1] ld [hli], a - ld a, [hExperience + 2] + ldh a, [hExperience + 2] ld [hl], a pop hl ld a, [wWhichPokemon] @@ -1459,7 +1459,7 @@ BaitRockCommon: ld [wAnimationID], a xor a ld [wAnimationType], a - ld [hWhoseTurn], a + ldh [hWhoseTurn], a ld [de], a ; zero escape factor (for bait), zero bait factor (for rock) .randomLoop ; loop until a random number less than 5 is generated call Random @@ -1698,7 +1698,7 @@ ItemUseXStat: call LoadScreenTilesFromBuffer1 ; restore saved screen call Delay3 xor a - ld [hWhoseTurn], a ; set turn to player's turn + ldh [hWhoseTurn], a ; set turn to player's turn callba StatModifierUpEffect ; do stat increase move pop hl pop af @@ -2463,13 +2463,13 @@ RestoreBonusPP: AddBonusPP: push bc ld a, [de] ; normal max PP of move - ld [hDividend + 3], a + ldh [hDividend + 3], a xor a - ld [hDividend], a - ld [hDividend + 1], a - ld [hDividend + 2], a + ldh [hDividend], a + ldh [hDividend + 1], a + ldh [hDividend + 2], a ld a, 5 - ld [hDivisor], a + ldh [hDivisor], a ld b, 4 call Divide ld a, [hl] ; move PP @@ -2480,7 +2480,7 @@ AddBonusPP: srl a ld c, a ; c = number of PP Ups used .loop - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] cp 8 ; is the amount greater than or equal to 8? jr c, .addAmount ld a, 7 ; cap the amount at 7 @@ -2822,13 +2822,13 @@ SendNewMonToBox: ld d, a callab CalcExperience pop de - ld a, [hExperience] + ldh a, [hExperience] ld [de], a inc de - ld a, [hExperience + 1] + ldh a, [hExperience + 1] ld [de], a inc de - ld a, [hExperience + 2] + ldh a, [hExperience + 2] ld [de], a inc de xor a diff --git a/engine/items/tm_prices.asm b/engine/items/tm_prices.asm index 502191d5..df9761bd 100755 --- a/engine/items/tm_prices.asm +++ b/engine/items/tm_prices.asm @@ -16,10 +16,10 @@ GetMachinePrice:: swap a .highNybbleIsPrice and $f0 - ld [hItemPrice + 1], a + ldh [hItemPrice + 1], a xor a - ld [hItemPrice], a - ld [hItemPrice + 2], a + ldh [hItemPrice], a + ldh [hItemPrice + 2], a ret INCLUDE "data/items/tm_prices.asm" diff --git a/engine/items/town_map.asm b/engine/items/town_map.asm index 285dbfa5..3f6d4fa5 100755 --- a/engine/items/town_map.asm +++ b/engine/items/town_map.asm @@ -6,7 +6,7 @@ DisplayTownMap: ld [hl], $ff push hl ld a, $1 - ld [hJoy7], a + ldh [hJoy7], a ld a, [wCurMap] push af ld b, $0 @@ -65,7 +65,7 @@ DisplayTownMap: .inputLoop call TownMapSpriteBlinkingAnimation call JoypadLowSensitivity - ld a, [hJoy5] + ldh a, [hJoy5] ld b, a and A_BUTTON | B_BUTTON | D_UP | D_DOWN jr z, .inputLoop @@ -77,7 +77,7 @@ DisplayTownMap: jr nz, .pressedDown xor a ld [wTownMapSpriteBlinkingEnabled], a - ld [hJoy7], a + ldh [hJoy7], a ld [wAnimCounter], a call ExitTownMap pop hl @@ -187,7 +187,7 @@ LoadTownMap_Fly:: push hl call DelayFrame call JoypadLowSensitivity - ld a, [hJoy5] + ldh a, [hJoy5] ld b, a pop hl and A_BUTTON | B_BUTTON | D_UP | D_DOWN diff --git a/engine/joypad.asm b/engine/joypad.asm index 31e197e2..87f92635 100644 --- a/engine/joypad.asm +++ b/engine/joypad.asm @@ -2,29 +2,29 @@ _Joypad:: ; hJoyReleased: (hJoyLast ^ hJoyInput) & hJoyLast ; hJoyPressed: (hJoyLast ^ hJoyInput) & hJoyInput - ld a, [hJoyInput] + ldh a, [hJoyInput] cp A_BUTTON + B_BUTTON + SELECT + START ; soft reset jp z, TrySoftReset ld b, a - ld a, [hJoyLast] + ldh a, [hJoyLast] ld e, a xor b ld d, a and e - ld [hJoyReleased], a + ldh [hJoyReleased], a ld a, d and b - ld [hJoyPressed], a + ldh [hJoyPressed], a ld a, b - ld [hJoyLast], a + ldh [hJoyLast], a ld a, [wd730] bit 5, a jr nz, DiscardButtonPresses - ld a, [hJoyLast] - ld [hJoyHeld], a + ldh a, [hJoyLast] + ldh [hJoyHeld], a ld a, [wJoyIgnore] and a @@ -32,19 +32,19 @@ _Joypad:: cpl ld b, a - ld a, [hJoyHeld] + ldh a, [hJoyHeld] and b - ld [hJoyHeld], a - ld a, [hJoyPressed] + ldh [hJoyHeld], a + ldh a, [hJoyPressed] and b - ld [hJoyPressed], a + ldh [hJoyPressed], a ret DiscardButtonPresses: xor a - ld [hJoyHeld], a - ld [hJoyPressed], a - ld [hJoyReleased], a + ldh [hJoyHeld], a + ldh [hJoyPressed], a + ldh [hJoyReleased], a ret TrySoftReset: @@ -52,7 +52,7 @@ TrySoftReset: ; deselect (redundant) ld a, $30 - ld [rJOYP], a + ldh [rJOYP], a ld hl, hSoftReset dec [hl] diff --git a/engine/link/cable_club.asm b/engine/link/cable_club.asm index ca43a895..abb88cc0 100755 --- a/engine/link/cable_club.asm +++ b/engine/link/cable_club.asm @@ -102,25 +102,25 @@ CableClub_DoBattleOrTradeAgain: ld a, SERIAL_PATCH_LIST_PART_TERMINATOR ld [de], a ; end of part 2 call Serial_SyncAndExchangeNybble - ld a, [hSerialConnectionStatus] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK jr nz, .skipSendingTwoZeroBytes ; if using internal clock ; send two zero bytes for syncing purposes? call Delay3 xor a - ld [hSerialSendData], a + ldh [hSerialSendData], a ld a, START_TRANSFER_INTERNAL_CLOCK - ld [rSC], a + ldh [rSC], a call DelayFrame xor a - ld [hSerialSendData], a + ldh [hSerialSendData], a ld a, START_TRANSFER_INTERNAL_CLOCK - ld [rSC], a + ldh [rSC], a .skipSendingTwoZeroBytes call Delay3 ld a, (1 << SERIAL) - ld [rIE], a + ldh [rIE], a ld hl, wSerialRandomNumberListBlock ld de, wSerialOtherGameboyRandomNumberListBlock ld bc, $11 @@ -138,10 +138,10 @@ CableClub_DoBattleOrTradeAgain: ld bc, $c8 call Serial_ExchangeBytes ld a, (1 << SERIAL) | (1 << TIMER) | (1 << VBLANK) - ld [rIE], a + ldh [rIE], a ld a, SFX_STOP_ALL_MUSIC call PlaySound - ld a, [hSerialConnectionStatus] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK jr z, .skipCopyingRandomNumberList ; the list generated by the gameboy clocking the connection is used by both gameboys ld hl, wSerialOtherGameboyRandomNumberListBlock @@ -263,7 +263,7 @@ CableClub_DoBattleOrTradeAgain: ld [wTradeCenterPointerTableIndex], a ld a, SFX_STOP_ALL_MUSIC call PlaySound - ld a, [hSerialConnectionStatus] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK ld c, 66 call z, DelayFrames ; delay if using internal clock @@ -551,7 +551,7 @@ TradeCenter_SelectMon: Coorda 1, 16 .cancelMenuItem_JoypadLoop call JoypadLowSensitivity - ld a, [hJoy5] + ldh a, [hJoy5] and a ; pressed anything? jr z, .cancelMenuItem_JoypadLoop bit 0, a ; A button pressed? @@ -663,7 +663,7 @@ TradeCenter_PrintPartyListNames: push de push hl ld a, c - ld [hPastLeadingZeros], a + ldh [hPastLeadingZeros], a call GetMonName pop hl call PlaceString @@ -837,7 +837,7 @@ TradeCenter_Trade: call LoadHpBarAndStatusTilePatterns xor a ld [wUnusedCC5B], a - ld a, [hSerialConnectionStatus] + ldh a, [hSerialConnectionStatus] cp USING_EXTERNAL_CLOCK jr z, .usingExternalClock predef InternalClockTradeAnim @@ -914,7 +914,7 @@ CableClub_Run: ld [wGrassRate], a inc a ; LINK_STATE_IN_CABLE_CLUB ld [wLinkState], a - ld [hJoy5], a + ldh [hJoy5], a ld a, 10 ld [wAudioFadeOutControl], a ld a, BANK(Music_Celadon) diff --git a/engine/link/cable_club_npc.asm b/engine/link/cable_club_npc.asm index 6001c314..16c62f9e 100755 --- a/engine/link/cable_club_npc.asm +++ b/engine/link/cable_club_npc.asm @@ -15,27 +15,27 @@ CableClubNPC:: ld a, 90 ld [wLinkTimeoutCounter], a .establishConnectionLoop - ld a, [hSerialConnectionStatus] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK jr z, .establishedConnection cp USING_EXTERNAL_CLOCK jr z, .establishedConnection ld a, CONNECTION_NOT_ESTABLISHED - ld [hSerialConnectionStatus], a + ldh [hSerialConnectionStatus], a ld a, ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK - ld [rSB], a + ldh [rSB], a xor a - ld [hSerialReceiveData], a + ldh [hSerialReceiveData], a ld a, START_TRANSFER_EXTERNAL_CLOCK - ld [rSC], a + ldh [rSC], a ld a, [wLinkTimeoutCounter] dec a ld [wLinkTimeoutCounter], a jr z, .failedToEstablishConnection ld a, ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK - ld [rSB], a + ldh [rSB], a ld a, START_TRANSFER_INTERNAL_CLOCK - ld [rSC], a + ldh [rSC], a call DelayFrame jr .establishConnectionLoop .establishedConnection @@ -65,7 +65,7 @@ CableClubNPC:: ld [hli], a xor a ld [hl], a - ld [hSerialReceivedNewData], a + ldh [hSerialReceivedNewData], a ld [wSerialExchangeNybbleSendData], a call Serial_SyncAndExchangeNybble ld hl, wUnknownSerialCounter @@ -141,11 +141,11 @@ CableClubNPCMakingPreparationsText: CloseLinkConnection: call Delay3 ld a, CONNECTION_NOT_ESTABLISHED - ld [hSerialConnectionStatus], a + ldh [hSerialConnectionStatus], a ld a, ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK - ld [rSB], a + ldh [rSB], a xor a - ld [hSerialReceiveData], a + ldh [hSerialReceiveData], a ld a, START_TRANSFER_EXTERNAL_CLOCK - ld [rSC], a + ldh [rSC], a ret diff --git a/engine/math/bcd.asm b/engine/math/bcd.asm index 2d0b43df..1e5aedc9 100644 --- a/engine/math/bcd.asm +++ b/engine/math/bcd.asm @@ -6,39 +6,39 @@ DivideBCDPredef4:: DivideBCD:: xor a - ld [hDivideBCDBuffer], a - ld [hDivideBCDBuffer+1], a - ld [hDivideBCDBuffer+2], a + ldh [hDivideBCDBuffer], a + ldh [hDivideBCDBuffer+1], a + ldh [hDivideBCDBuffer+2], a ld d, $1 .mulBy10Loop ; multiply the divisor by 10 until the leading digit is nonzero ; to set up the standard long division algorithm - ld a, [hDivideBCDDivisor] + ldh a, [hDivideBCDDivisor] and $f0 jr nz, .next inc d - ld a, [hDivideBCDDivisor] + ldh a, [hDivideBCDDivisor] swap a and $f0 ld b, a - ld a, [hDivideBCDDivisor+1] + ldh a, [hDivideBCDDivisor+1] swap a - ld [hDivideBCDDivisor+1], a + ldh [hDivideBCDDivisor+1], a and $f or b - ld [hDivideBCDDivisor], a - ld a, [hDivideBCDDivisor+1] + ldh [hDivideBCDDivisor], a + ldh a, [hDivideBCDDivisor+1] and $f0 ld b, a - ld a, [hDivideBCDDivisor+2] + ldh a, [hDivideBCDDivisor+2] swap a - ld [hDivideBCDDivisor+2], a + ldh [hDivideBCDDivisor+2], a and $f or b - ld [hDivideBCDDivisor+1], a - ld a, [hDivideBCDDivisor+2] + ldh [hDivideBCDDivisor+1], a + ldh a, [hDivideBCDDivisor+2] and $f0 - ld [hDivideBCDDivisor+2], a + ldh [hDivideBCDDivisor+2], a jr .mulBy10Loop .next push de @@ -48,16 +48,16 @@ DivideBCD:: ld a, b swap a and $f0 - ld [hDivideBCDBuffer], a + ldh [hDivideBCDBuffer], a dec d jr z, .next2 push de call DivideBCD_divDivisorBy10 call DivideBCD_getNextDigit pop de - ld a, [hDivideBCDBuffer] + ldh a, [hDivideBCDBuffer] or b - ld [hDivideBCDBuffer], a + ldh [hDivideBCDBuffer], a dec d jr z, .next2 push de @@ -67,16 +67,16 @@ DivideBCD:: ld a, b swap a and $f0 - ld [hDivideBCDBuffer+1], a + ldh [hDivideBCDBuffer+1], a dec d jr z, .next2 push de call DivideBCD_divDivisorBy10 call DivideBCD_getNextDigit pop de - ld a, [hDivideBCDBuffer+1] + ldh a, [hDivideBCDBuffer+1] or b - ld [hDivideBCDBuffer+1], a + ldh [hDivideBCDBuffer+1], a dec d jr z, .next2 push de @@ -86,23 +86,23 @@ DivideBCD:: ld a, b swap a and $f0 - ld [hDivideBCDBuffer+2], a + ldh [hDivideBCDBuffer+2], a dec d jr z, .next2 push de call DivideBCD_divDivisorBy10 call DivideBCD_getNextDigit pop de - ld a, [hDivideBCDBuffer+2] + ldh a, [hDivideBCDBuffer+2] or b - ld [hDivideBCDBuffer+2], a + ldh [hDivideBCDBuffer+2], a .next2 - ld a, [hDivideBCDBuffer] - ld [hDivideBCDQuotient], a ; the same memory location as hDivideBCDDivisor - ld a, [hDivideBCDBuffer+1] - ld [hDivideBCDQuotient+1], a - ld a, [hDivideBCDBuffer+2] - ld [hDivideBCDQuotient+2], a + ldh a, [hDivideBCDBuffer] + ldh [hDivideBCDQuotient], a ; the same memory location as hDivideBCDDivisor + ldh a, [hDivideBCDBuffer+1] + ldh [hDivideBCDQuotient+1], a + ldh a, [hDivideBCDBuffer+2] + ldh [hDivideBCDQuotient+2], a pop de ld a, $6 sub d @@ -117,28 +117,28 @@ DivideBCD:: ret DivideBCD_divDivisorBy10: - ld a, [hDivideBCDDivisor+2] + ldh a, [hDivideBCDDivisor+2] swap a and $f ld b, a - ld a, [hDivideBCDDivisor+1] + ldh a, [hDivideBCDDivisor+1] swap a - ld [hDivideBCDDivisor+1], a + ldh [hDivideBCDDivisor+1], a and $f0 or b - ld [hDivideBCDDivisor+2], a - ld a, [hDivideBCDDivisor+1] + ldh [hDivideBCDDivisor+2], a + ldh a, [hDivideBCDDivisor+1] and $f ld b, a - ld a, [hDivideBCDDivisor] + ldh a, [hDivideBCDDivisor] swap a - ld [hDivideBCDDivisor], a + ldh [hDivideBCDDivisor], a and $f0 or b - ld [hDivideBCDDivisor+1], a - ld a, [hDivideBCDDivisor] + ldh [hDivideBCDDivisor+1], a + ldh a, [hDivideBCDDivisor] and $f - ld [hDivideBCDDivisor], a + ldh [hDivideBCDDivisor], a ret DivideBCD_getNextDigit: diff --git a/engine/math/multiply_divide.asm b/engine/math/multiply_divide.asm index 8bbc20a1..2fcda158 100755 --- a/engine/math/multiply_divide.asm +++ b/engine/math/multiply_divide.asm @@ -2,142 +2,142 @@ _Multiply:: ld a, $8 ld b, a xor a - ld [hProduct], a - ld [hMultiplyBuffer], a - ld [hMultiplyBuffer+1], a - ld [hMultiplyBuffer+2], a - ld [hMultiplyBuffer+3], a + ldh [hProduct], a + ldh [hMultiplyBuffer], a + ldh [hMultiplyBuffer+1], a + ldh [hMultiplyBuffer+2], a + ldh [hMultiplyBuffer+3], a .loop - ld a, [hMultiplier] + ldh a, [hMultiplier] srl a - ld [hMultiplier], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) + ldh [hMultiplier], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) jr nc, .smallMultiplier - ld a, [hMultiplyBuffer+3] + ldh a, [hMultiplyBuffer+3] ld c, a - ld a, [hMultiplicand+2] + ldh a, [hMultiplicand+2] add c - ld [hMultiplyBuffer+3], a - ld a, [hMultiplyBuffer+2] + ldh [hMultiplyBuffer+3], a + ldh a, [hMultiplyBuffer+2] ld c, a - ld a, [hMultiplicand+1] + ldh a, [hMultiplicand+1] adc c - ld [hMultiplyBuffer+2], a - ld a, [hMultiplyBuffer+1] + ldh [hMultiplyBuffer+2], a + ldh a, [hMultiplyBuffer+1] ld c, a - ld a, [hMultiplicand] ; (aliases: hMultiplicand) + ldh a, [hMultiplicand] ; (aliases: hMultiplicand) adc c - ld [hMultiplyBuffer+1], a - ld a, [hMultiplyBuffer] + ldh [hMultiplyBuffer+1], a + ldh a, [hMultiplyBuffer] ld c, a - ld a, [hProduct] ; (aliases: hProduct, hPastLeadingZeros, hQuotient) + ldh a, [hProduct] ; (aliases: hProduct, hPastLeadingZeros, hQuotient) adc c - ld [hMultiplyBuffer], a + ldh [hMultiplyBuffer], a .smallMultiplier dec b jr z, .done - ld a, [hMultiplicand+2] + ldh a, [hMultiplicand+2] sla a - ld [hMultiplicand+2], a - ld a, [hMultiplicand+1] + ldh [hMultiplicand+2], a + ldh a, [hMultiplicand+1] rl a - ld [hMultiplicand+1], a - ld a, [hMultiplicand] + ldh [hMultiplicand+1], a + ldh a, [hMultiplicand] rl a - ld [hMultiplicand], a - ld a, [hProduct] + ldh [hMultiplicand], a + ldh a, [hProduct] rl a - ld [hProduct], a + ldh [hProduct], a jr .loop .done - ld a, [hMultiplyBuffer+3] - ld [hProduct+3], a - ld a, [hMultiplyBuffer+2] - ld [hProduct+2], a - ld a, [hMultiplyBuffer+1] - ld [hProduct+1], a - ld a, [hMultiplyBuffer] - ld [hProduct], a + ldh a, [hMultiplyBuffer+3] + ldh [hProduct+3], a + ldh a, [hMultiplyBuffer+2] + ldh [hProduct+2], a + ldh a, [hMultiplyBuffer+1] + ldh [hProduct+1], a + ldh a, [hMultiplyBuffer] + ldh [hProduct], a ret _Divide:: xor a - ld [hDivideBuffer], a - ld [hDivideBuffer+1], a - ld [hDivideBuffer+2], a - ld [hDivideBuffer+3], a - ld [hDivideBuffer+4], a + ldh [hDivideBuffer], a + ldh [hDivideBuffer+1], a + ldh [hDivideBuffer+2], a + ldh [hDivideBuffer+3], a + ldh [hDivideBuffer+4], a ld a, $9 ld e, a .asm_37db3 - ld a, [hDivideBuffer] + ldh a, [hDivideBuffer] ld c, a - ld a, [hDividend+1] ; (aliases: hMultiplicand) + ldh a, [hDividend+1] ; (aliases: hMultiplicand) sub c ld d, a - ld a, [hDivisor] ; (aliases: hDivisor, hMultiplier, hPowerOf10) + ldh a, [hDivisor] ; (aliases: hDivisor, hMultiplier, hPowerOf10) ld c, a - ld a, [hDividend] ; (aliases: hProduct, hPastLeadingZeros, hQuotient) + ldh a, [hDividend] ; (aliases: hProduct, hPastLeadingZeros, hQuotient) sbc c jr c, .asm_37dce - ld [hDividend], a ; (aliases: hProduct, hPastLeadingZeros, hQuotient) + ldh [hDividend], a ; (aliases: hProduct, hPastLeadingZeros, hQuotient) ld a, d - ld [hDividend+1], a ; (aliases: hMultiplicand) - ld a, [hDivideBuffer+4] + ldh [hDividend+1], a ; (aliases: hMultiplicand) + ldh a, [hDivideBuffer+4] inc a - ld [hDivideBuffer+4], a + ldh [hDivideBuffer+4], a jr .asm_37db3 .asm_37dce ld a, b cp $1 jr z, .asm_37e18 - ld a, [hDivideBuffer+4] + ldh a, [hDivideBuffer+4] sla a - ld [hDivideBuffer+4], a - ld a, [hDivideBuffer+3] + ldh [hDivideBuffer+4], a + ldh a, [hDivideBuffer+3] rl a - ld [hDivideBuffer+3], a - ld a, [hDivideBuffer+2] + ldh [hDivideBuffer+3], a + ldh a, [hDivideBuffer+2] rl a - ld [hDivideBuffer+2], a - ld a, [hDivideBuffer+1] + ldh [hDivideBuffer+2], a + ldh a, [hDivideBuffer+1] rl a - ld [hDivideBuffer+1], a + ldh [hDivideBuffer+1], a dec e jr nz, .asm_37e04 ld a, $8 ld e, a - ld a, [hDivideBuffer] - ld [hDivisor], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) + ldh a, [hDivideBuffer] + ldh [hDivisor], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) xor a - ld [hDivideBuffer], a - ld a, [hDividend+1] ; (aliases: hMultiplicand) - ld [hDividend], a ; (aliases: hProduct, hPastLeadingZeros, hQuotient) - ld a, [hDividend+2] - ld [hDividend+1], a ; (aliases: hMultiplicand) - ld a, [hDividend+3] - ld [hDividend+2], a + ldh [hDivideBuffer], a + ldh a, [hDividend+1] ; (aliases: hMultiplicand) + ldh [hDividend], a ; (aliases: hProduct, hPastLeadingZeros, hQuotient) + ldh a, [hDividend+2] + ldh [hDividend+1], a ; (aliases: hMultiplicand) + ldh a, [hDividend+3] + ldh [hDividend+2], a .asm_37e04 ld a, e cp $1 jr nz, .asm_37e0a dec b .asm_37e0a - ld a, [hDivisor] ; (aliases: hDivisor, hMultiplier, hPowerOf10) + ldh a, [hDivisor] ; (aliases: hDivisor, hMultiplier, hPowerOf10) srl a - ld [hDivisor], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) - ld a, [hDivideBuffer] + ldh [hDivisor], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) + ldh a, [hDivideBuffer] rr a - ld [hDivideBuffer], a + ldh [hDivideBuffer], a jr .asm_37db3 .asm_37e18 - ld a, [hDividend+1] ; (aliases: hMultiplicand) - ld [hRemainder], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) - ld a, [hDivideBuffer+4] - ld [hQuotient+3], a - ld a, [hDivideBuffer+3] - ld [hQuotient+2], a - ld a, [hDivideBuffer+2] - ld [hQuotient+1], a ; (aliases: hMultiplicand) - ld a, [hDivideBuffer+1] - ld [hDividend], a ; (aliases: hProduct, hPastLeadingZeros, hQuotient) + ldh a, [hDividend+1] ; (aliases: hMultiplicand) + ldh [hRemainder], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) + ldh a, [hDivideBuffer+4] + ldh [hQuotient+3], a + ldh a, [hDivideBuffer+3] + ldh [hQuotient+2], a + ldh a, [hDivideBuffer+2] + ldh [hQuotient+1], a ; (aliases: hMultiplicand) + ldh a, [hDivideBuffer+1] + ldh [hDividend], a ; (aliases: hProduct, hPastLeadingZeros, hQuotient) ret diff --git a/engine/math/random.asm b/engine/math/random.asm index 2fc83f6f..c8760157 100755 --- a/engine/math/random.asm +++ b/engine/math/random.asm @@ -1,13 +1,13 @@ Random_:: ; Generate a random 16-bit value. - ld a, [rDIV] + ldh a, [rDIV] ld b, a - ld a, [hRandomAdd] + ldh a, [hRandomAdd] adc b - ld [hRandomAdd], a - ld a, [rDIV] + ldh [hRandomAdd], a + ldh a, [rDIV] ld b, a - ld a, [hRandomSub] + ldh a, [hRandomSub] sbc b - ld [hRandomSub], a + ldh [hRandomSub], a ret diff --git a/engine/menus/display_text_id_init.asm b/engine/menus/display_text_id_init.asm index c02e5bbc..fd1d3960 100644 --- a/engine/menus/display_text_id_init.asm +++ b/engine/menus/display_text_id_init.asm @@ -5,7 +5,7 @@ DisplayTextIDInit:: ld a, [wAutoTextBoxDrawingControl] bit 0, a jr nz, .skipDrawingTextBoxBorder - ld a, [hSpriteIndexOrTextID] ; text ID (or sprite ID) + ldh a, [hSpriteIndexOrTextID] ; text ID (or sprite ID) and a jr nz, .notStartMenu ; if text ID is 0 (i.e. the start menu) @@ -71,8 +71,8 @@ DisplayTextIDInit:: ld b, $9c ; window background address call CopyScreenTileBufferToVRAM ; transfer background in WRAM to VRAM xor a - ld [hWY], a ; put the window on the screen + ldh [hWY], a ; put the window on the screen call LoadFontTilePatterns ld a, $01 - ld [hAutoBGTransferEnabled], a ; enable continuous WRAM to VRAM transfer each V-blank + ldh [hAutoBGTransferEnabled], a ; enable continuous WRAM to VRAM transfer each V-blank ret diff --git a/engine/menus/league_pc.asm b/engine/menus/league_pc.asm index c07c6bc1..7bf0458d 100755 --- a/engine/menus/league_pc.asm +++ b/engine/menus/league_pc.asm @@ -6,10 +6,10 @@ PKMNLeaguePC: push hl ld a, [wUpdateSpritesEnabled] push af - ld a, [hTilesetType] + ldh a, [hTilesetType] push af xor a - ld [hTilesetType], a + ldh [hTilesetType], a ld [wSpriteFlipped], a ld [wUpdateSpritesEnabled], a ld [wHoFTeamIndex2], a @@ -40,7 +40,7 @@ PKMNLeaguePC: jr nz, .loop .doneShowingTeams pop af - ld [hTilesetType], a + ldh [hTilesetType], a pop af ld [wUpdateSpritesEnabled], a pop hl @@ -56,7 +56,7 @@ LeaguePCShowTeam: push bc call LeaguePCShowMon call WaitForTextScrollButtonPress - ld a, [hJoyHeld] + ldh a, [hJoyHeld] bit 1, a jr nz, .exit ld hl, wHallOfFame + HOF_MON diff --git a/engine/menus/main_menu.asm b/engine/menus/main_menu.asm index 43289ce8..44aeccca 100755 --- a/engine/menus/main_menu.asm +++ b/engine/menus/main_menu.asm @@ -94,11 +94,11 @@ MainMenu: set 5, [hl] .inputLoop xor a - ld [hJoyPressed], a - ld [hJoyReleased], a - ld [hJoyHeld], a + ldh [hJoyPressed], a + ldh [hJoyReleased], a + ldh [hJoyHeld], a call Joypad - ld a, [hJoyHeld] + ldh a, [hJoyHeld] bit 0, a jr nz, .pressedA bit 1, a @@ -205,7 +205,7 @@ LinkMenu: jr z, .useEnemyMenuSelection ; if the enemy pressed A or B but the player didn't, use the enemy's selection ; the enemy and the player both pressed A or B ; The gameboy that is clocking the connection wins. - ld a, [hSerialConnectionStatus] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK jr z, .doneChoosingMenuSelection .useEnemyMenuSelection @@ -214,13 +214,13 @@ LinkMenu: and $3 ld [wCurrentMenuItem], a .doneChoosingMenuSelection - ld a, [hSerialConnectionStatus] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK jr nz, .skipStartingTransfer call DelayFrame call DelayFrame ld a, START_TRANSFER_INTERNAL_CLOCK - ld [rSC], a + ldh [rSC], a .skipStartingTransfer ld b, $7f ld c, $7f @@ -314,9 +314,9 @@ StartNewGame: ; enter map after using a special warp or loading the game from the main menu SpecialEnterMap:: xor a - ld [hJoyPressed], a - ld [hJoyHeld], a - ld [hJoy5], a + ldh [hJoyPressed], a + ldh [hJoyHeld], a + ldh [hJoy5], a ld [wd72d], a ld hl, wd732 set 0, [hl] ; count play time @@ -344,7 +344,7 @@ CableClubOptionsText: DisplayContinueGameInfo: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a coord hl, 4, 7 ld b, 8 ld c, 14 @@ -362,13 +362,13 @@ DisplayContinueGameInfo: coord hl, 13, 15 call PrintPlayTime ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld c, 30 jp DelayFrames PrintSaveScreenText: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a coord hl, 4, 0 ld b, $8 ld c, $e @@ -388,7 +388,7 @@ PrintSaveScreenText: coord hl, 13, 8 call PrintPlayTime ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld c, 30 jp DelayFrames @@ -465,14 +465,14 @@ DisplayOptionMenu: ld a, [wOptionsTextSpeedCursorX] ; text speed cursor X coordinate ld [wTopMenuItemX], a ld a, $01 - ld [hAutoBGTransferEnabled], a ; enable auto background transfer + ldh [hAutoBGTransferEnabled], a ; enable auto background transfer call Delay3 .loop call PlaceMenuCursor call SetOptionsFromCursorPositions .getJoypadStateLoop call JoypadLowSensitivity - ld a, [hJoy5] + ldh a, [hJoy5] ld b, a and A_BUTTON | B_BUTTON | START | D_RIGHT | D_LEFT | D_UP | D_DOWN ; any key besides select pressed? jr z, .getJoypadStateLoop diff --git a/engine/menus/naming_screen.asm b/engine/menus/naming_screen.asm index a84609c9..170e778a 100755 --- a/engine/menus/naming_screen.asm +++ b/engine/menus/naming_screen.asm @@ -132,7 +132,7 @@ DisplayNamingScreen: pop af ld [wCurrentMenuItem], a call JoypadLowSensitivity - ld a, [hJoyPressed] + ldh a, [hJoyPressed] and a jr z, .inputLoop ld hl, .namingScreenButtonFunctions @@ -337,7 +337,7 @@ ED_TileEnd: PrintAlphabet: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld a, [wAlphabetCase] and a ld de, LowerCaseAlphabet @@ -362,7 +362,7 @@ PrintAlphabet: jr nz, .outerLoop call PlaceString ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a jp Delay3 INCLUDE "data/text/alphabets.asm" diff --git a/engine/menus/party_menu.asm b/engine/menus/party_menu.asm index f63a3cf0..f46b3994 100755 --- a/engine/menus/party_menu.asm +++ b/engine/menus/party_menu.asm @@ -19,7 +19,7 @@ ; f8: leveled up DrawPartyMenu_:: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call ClearScreen call UpdateSprites callba LoadMonPartySpriteGfxWithLCDDisabled ; load pokemon icon graphics @@ -34,7 +34,7 @@ RedrawPartyMenu_:: ld de, wPartySpecies xor a ld c, a - ld [hPartyMonIndex], a + ldh [hPartyMonIndex], a ld [wWhichPartyMenuHPBar], a .loop ld a, [de] @@ -50,10 +50,10 @@ RedrawPartyMenu_:: pop hl call PlaceString ; print the pokemon's name callba WriteMonPartySpriteOAMByPartyIndex ; place the appropriate pokemon icon - ld a, [hPartyMonIndex] + ldh a, [hPartyMonIndex] ld [wWhichPokemon], a inc a - ld [hPartyMonIndex], a + ldh [hPartyMonIndex], a call LoadMonData pop hl push hl @@ -88,14 +88,14 @@ RedrawPartyMenu_:: pop hl push hl ld bc, SCREEN_WIDTH + 1 ; down 1 row and right 1 column - ld a, [hFlagsFFF6] + ldh a, [hFlagsFFF6] set 0, a - ld [hFlagsFFF6], a + ldh [hFlagsFFF6], a add hl, bc predef DrawHP2 ; draw HP bar and prints current / max HP - ld a, [hFlagsFFF6] + ldh a, [hFlagsFFF6] res 0, a - ld [hFlagsFFF6], a + ldh [hFlagsFFF6], a call SetPartyMenuHPBarColor ; color the HP bar (on SGB) pop hl jr .printLevel @@ -213,7 +213,7 @@ RedrawPartyMenu_:: pop af ld [hl], a ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 jp GBPalNormal .printItemUseMessage diff --git a/engine/menus/pc.asm b/engine/menus/pc.asm index f296ad61..1006cbbe 100755 --- a/engine/menus/pc.asm +++ b/engine/menus/pc.asm @@ -117,10 +117,10 @@ AccessedMyPCText: ; removes one of the specified item ID [hItemToRemoveID] from bag (if existent) RemoveItemByID:: ld hl, wBagItems - ld a, [hItemToRemoveID] + ldh a, [hItemToRemoveID] ld b, a xor a - ld [hItemToRemoveIndex], a + ldh [hItemToRemoveIndex], a .loop ld a, [hli] cp -1 ; reached terminator? @@ -128,14 +128,14 @@ RemoveItemByID:: cp b jr z, .foundItem inc hl - ld a, [hItemToRemoveIndex] + ldh a, [hItemToRemoveIndex] inc a - ld [hItemToRemoveIndex], a + ldh [hItemToRemoveIndex], a jr .loop .foundItem ld a, $1 ld [wItemQuantity], a - ld a, [hItemToRemoveIndex] + ldh a, [hItemToRemoveIndex] ld [wWhichPokemon], a ld hl, wNumBagItems jp RemoveItemFromInventory diff --git a/engine/menus/pokedex.asm b/engine/menus/pokedex.asm index 542ef873..d0ef3e31 100755 --- a/engine/menus/pokedex.asm +++ b/engine/menus/pokedex.asm @@ -10,7 +10,7 @@ ShowPokedexMenu: ld [wLastMenuItem], a inc a ld [wd11e], a - ld [hJoy7], a + ldh [hJoy7], a .setUpGraphics ld b, SET_PAL_GENERIC call RunPaletteCommand @@ -35,7 +35,7 @@ ShowPokedexMenu: ld [wMenuWatchMovingOutOfBounds], a ld [wCurrentMenuItem], a ld [wLastMenuItem], a - ld [hJoy7], a + ldh [hJoy7], a ld [wWastedByteCD3A], a ld [wOverrideSimulatedJoypadStatesMask], a pop af @@ -156,7 +156,7 @@ HandlePokedexSideMenu: ; sets carry flag if player presses A, unsets carry flag if player presses B HandlePokedexListMenu: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ; draw the horizontal line separating the seen and owned amounts from the menu coord hl, 15, 8 ld a, "─" @@ -216,7 +216,7 @@ HandlePokedexListMenu: ld [wDexMaxSeenMon], a .loop xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a coord hl, 4, 2 lb bc, 14, 10 call ClearScreenArea @@ -280,7 +280,7 @@ HandlePokedexListMenu: dec d jr nz, .printPokemonLoop ld a, 01 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 call GBPalNormal call HandleMenuInput @@ -400,7 +400,7 @@ ShowPokedexDataInternal: ld hl, wd72c set 1, [hl] ld a, $33 ; 3/7 volume - ld [rNR50], a + ldh [rNR50], a call GBPalWhiteOut ; zero all palettes call ClearScreen ld a, [wd11e] ; pokemon ID @@ -410,10 +410,10 @@ ShowPokedexDataInternal: call RunPaletteCommand pop af ld [wd11e], a - ld a, [hTilesetType] + ldh a, [hTilesetType] push af xor a - ld [hTilesetType], a + ldh [hTilesetType], a coord hl, 0, 0 ld de, 1 @@ -548,9 +548,9 @@ ShowPokedexDataInternal: lb bc, 2, 5 ; 2 bytes, 5 digits call PrintNumber ; print weight coord hl, 14, 8 - ld a, [hDexWeight + 1] + ldh a, [hDexWeight + 1] sub 10 - ld a, [hDexWeight] + ldh a, [hDexWeight] sbc 0 jr nc, .next ld [hl], "0" ; if the weight is less than 10, put a 0 before the decimal point @@ -560,24 +560,24 @@ ShowPokedexDataInternal: ld [hld], a ; make space for the decimal point by moving the last digit forward one tile ld [hl], "<DOT>" ; decimal point tile pop af - ld [hDexWeight + 1], a ; restore original value of [hDexWeight + 1] + ldh [hDexWeight + 1], a ; restore original value of [hDexWeight + 1] pop af - ld [hDexWeight], a ; restore original value of [hDexWeight] + ldh [hDexWeight], a ; restore original value of [hDexWeight] pop hl inc hl ; hl = address of pokedex description text coord bc, 1, 11 ld a, %10 - ld [hClearLetterPrintingDelayFlags], a + ldh [hClearLetterPrintingDelayFlags], a call TextCommandProcessor ; print pokedex description text xor a - ld [hClearLetterPrintingDelayFlags], a + ldh [hClearLetterPrintingDelayFlags], a .waitForButtonPress call JoypadLowSensitivity - ld a, [hJoy5] + ldh a, [hJoy5] and A_BUTTON | B_BUTTON jr z, .waitForButtonPress pop af - ld [hTilesetType], a + ldh [hTilesetType], a call GBPalWhiteOut call ClearScreen call RunDefaultPaletteCommand @@ -586,7 +586,7 @@ ShowPokedexDataInternal: ld hl, wd72c res 1, [hl] ld a, $77 ; max volume - ld [rNR50], a + ldh [rNR50], a ret HeightWeightText: diff --git a/engine/menus/save.asm b/engine/menus/save.asm index 462e0eea..34fa9142 100755 --- a/engine/menus/save.asm +++ b/engine/menus/save.asm @@ -70,7 +70,7 @@ LoadSAV0: ld bc, wSpriteDataEnd - wSpriteDataStart call CopyData ld a, [sTilesetType] - ld [hTilesetType], a + ldh [hTilesetType], a ld hl, sCurBoxData ld de, wBoxDataStart ld bc, wBoxDataEnd - wBoxDataStart @@ -217,7 +217,7 @@ SaveSAVtoSRAM0: ld de, sCurBoxData ld bc, wBoxDataEnd - wBoxDataStart call CopyData - ld a, [hTilesetType] + ldh a, [hTilesetType] ld [sTilesetType], a ld hl, sPlayerName ld bc, sMainDataCheckSum - sPlayerName @@ -420,7 +420,7 @@ CopyBoxToOrFromSRAM: DisplayChangeBoxMenu: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld a, A_BUTTON | B_BUTTON ld [wMenuWatchedKeys], a ld a, 11 @@ -486,7 +486,7 @@ DisplayChangeBoxMenu: dec a jr nz, .loop ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ret ChooseABoxText: diff --git a/engine/menus/start_sub_menus.asm b/engine/menus/start_sub_menus.asm index 5182ae79..acc6bda8 100755 --- a/engine/menus/start_sub_menus.asm +++ b/engine/menus/start_sub_menus.asm @@ -50,7 +50,7 @@ StartMenu_Pokemon:: ld hl, wTopMenuItemY ld a, c ld [hli], a ; top menu item Y - ld a, [hFieldMoveMonMenuTopMenuItemX] + ldh a, [hFieldMoveMonMenuTopMenuItemX] ld [hli], a ; top menu item X xor a ld [hli], a ; current menu item ID @@ -239,21 +239,21 @@ StartMenu_Pokemon:: ld bc, wPartyMon2 - wPartyMon1 call AddNTimes ld a, [hli] - ld [hDividend], a + ldh [hDividend], a ld a, [hl] - ld [hDividend + 1], a + ldh [hDividend + 1], a ld a, 5 - ld [hDivisor], a + ldh [hDivisor], a ld b, 2 ; number of bytes call Divide ld bc, wPartyMon1HP - wPartyMon1MaxHP add hl, bc ld a, [hld] ld b, a - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] sub b ld b, [hl] - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] sbc b jp nc, .notHealthyEnough ld a, [wPartyAndBillsPCSavedMenuItem] @@ -454,10 +454,10 @@ StartMenu_TrainerInfo:: call GBPalWhiteOut call ClearScreen call UpdateSprites - ld a, [hTilesetType] + ldh a, [hTilesetType] push af xor a - ld [hTilesetType], a + ldh [hTilesetType], a call DrawTrainerInfo predef DrawBadges ; draw badges ld b, SET_PAL_TRAINER_CARD @@ -471,7 +471,7 @@ StartMenu_TrainerInfo:: call ReloadMapData call LoadGBPal pop af - ld [hTilesetType], a + ldh [hTilesetType], a jp RedisplayStartMenu ; loads tile patterns and draws everything except for gym leader faces / badges @@ -648,7 +648,7 @@ StartMenu_SaveReset:: StartMenu_Option:: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call ClearScreen call UpdateSprites callab DisplayOptionMenu @@ -737,10 +737,10 @@ SwitchPartyMon_InitVarOrSwapData: inc d .noCarry2 ld a, [hl] - ld [hSwapTemp], a + ldh [hSwapTemp], a ld a, [de] ld [hl], a - ld a, [hSwapTemp] + ldh a, [hSwapTemp] ld [de], a ld hl, wPartyMons ld bc, wPartyMon2 - wPartyMon1 diff --git a/engine/menus/swap_items.asm b/engine/menus/swap_items.asm index 8b793ea1..2d506ce2 100644 --- a/engine/menus/swap_items.asm +++ b/engine/menus/swap_items.asm @@ -77,18 +77,18 @@ HandleItemListSwapping:: cp b jr z, .swapSameItemType .swapDifferentItems - ld [hSwapItemID], a ; save second item ID + ldh [hSwapItemID], a ; save second item ID ld a, [hld] - ld [hSwapItemQuantity], a ; save second item quantity + ldh [hSwapItemQuantity], a ; save second item quantity ld a, [de] ld [hli], a ; put first item ID in second item slot inc de ld a, [de] ld [hl], a ; put first item quantity in second item slot - ld a, [hSwapItemQuantity] + ldh a, [hSwapItemQuantity] ld [de], a ; put second item quantity in first item slot dec de - ld a, [hSwapItemID] + ldh a, [hSwapItemID] ld [de], a ; put second item ID in first item slot xor a ld [wMenuItemToSwap], a ; 0 means no item is currently being swapped diff --git a/engine/menus/text_box.asm b/engine/menus/text_box.asm index e3de41b4..51339ec2 100644 --- a/engine/menus/text_box.asm +++ b/engine/menus/text_box.asm @@ -584,7 +584,7 @@ DisplayFieldMoveMonMenu: call TextBoxBorder call UpdateSprites ld a, 12 - ld [hFieldMoveMonMenuTopMenuItemX], a + ldh [hFieldMoveMonMenuTopMenuItemX], a coord hl, 13, 12 ld de, PokemonMenuEntries jp PlaceString @@ -673,7 +673,7 @@ DisplayFieldMoveMonMenu: .donePrintingNames pop hl ld a, [wFieldMovesLeftmostXCoord] - ld [hFieldMoveMonMenuTopMenuItemX], a + ldh [hFieldMoveMonMenuTopMenuItemX], a coord hl, 0, 12 ld a, [wFieldMovesLeftmostXCoord] inc a diff --git a/engine/movie/credits.asm b/engine/movie/credits.asm index d8e593a5..caf62852 100755 --- a/engine/movie/credits.asm +++ b/engine/movie/credits.asm @@ -19,7 +19,7 @@ HallOfFamePC: coord hl, 0, 14 call FillFourRowsWithBlack ld a, %11000000 - ld [rBGP], a + ldh [rBGP], a call EnableLCD ld a, SFX_STOP_ALL_MUSIC call PlaySoundWaitForCurrent @@ -38,7 +38,7 @@ FadeInCreditsText: ld b, 4 .loop ld a, [hli] - ld [rBGP], a + ldh [rBGP], a ld c, 5 call DelayFrames dec b @@ -47,7 +47,7 @@ FadeInCreditsText: DisplayCreditsMon: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call SaveScreenTilesToBuffer1 call FillMiddleOfScreenWithWhite @@ -67,17 +67,17 @@ DisplayCreditsMon: ld hl, vBGMap0 + $c call CreditsCopyTileMapToVRAM xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call LoadScreenTilesFromBuffer1 ld hl, vBGMap0 call CreditsCopyTileMapToVRAM ld a, $A7 - ld [rWX], a + ldh [rWX], a ld hl, vBGMap1 call CreditsCopyTileMapToVRAM call FillMiddleOfScreenWithWhite ld a, %11111100 ; make the mon a black silhouette - ld [rBGP], a + ldh [rBGP], a ; scroll the mon left by one tile 7 times ld bc, 7 @@ -92,16 +92,16 @@ DisplayCreditsMon: ld c, 20 .scrollLoop2 call ScrollCreditsMonLeft - ld a, [rWX] + ldh a, [rWX] sub 8 - ld [rWX], a + ldh [rWX], a dec c jr nz, .scrollLoop2 xor a - ld [hWY], a + ldh [hWY], a ld a, %11000000 - ld [rBGP], a + ldh [rBGP], a ret INCLUDE "data/credits/credits_mons.asm" @@ -119,13 +119,13 @@ ScrollCreditsMonLeft: ret ScrollCreditsMonLeft_SetSCX: - ld a, [rLY] + ldh a, [rLY] cp l jr nz, ScrollCreditsMonLeft_SetSCX ld a, h - ld [rSCX], a + ldh [rSCX], a .loop - ld a, [rLY] + ldh a, [rLY] cp h jr z, .loop ret @@ -138,11 +138,11 @@ HoFGBPalettes: CreditsCopyTileMapToVRAM: ld a, l - ld [hAutoBGTransferDest], a + ldh [hAutoBGTransferDest], a ld a, h - ld [hAutoBGTransferDest + 1], a + ldh [hAutoBGTransferDest + 1], a ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a jp Delay3 ZeroMemory: diff --git a/engine/movie/evolution.asm b/engine/movie/evolution.asm index 1e3aaad4..b006dea6 100755 --- a/engine/movie/evolution.asm +++ b/engine/movie/evolution.asm @@ -13,13 +13,13 @@ EvolveMon: ld [wNewSoundID], a call PlaySound ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld a, SFX_TINK call PlaySound call Delay3 xor a - ld [hAutoBGTransferEnabled], a - ld [hTilesetType], a + ldh [hAutoBGTransferEnabled], a + ldh [hTilesetType], a ld a, [wEvoOldSpecies] ld [wWholeScreenPaletteMonSpecies], a ld c, 0 @@ -37,7 +37,7 @@ EvolveMon: ld [wd0b5], a call Evolution_LoadPic ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld a, [wEvoOldSpecies] call PlayCry call WaitForSoundToFinish @@ -117,7 +117,7 @@ Evolution_BackAndForthAnim: Evolution_ChangeMonPic: push bc xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a coord hl, 7, 2 lb bc, 7, 7 ld de, SCREEN_WIDTH - 7 @@ -134,7 +134,7 @@ Evolution_ChangeMonPic: dec b jr nz, .loop ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 pop bc ret @@ -143,7 +143,7 @@ Evolution_CheckForCancel: call DelayFrame push bc call JoypadLowSensitivity - ld a, [hJoy5] + ldh a, [hJoy5] pop bc and B_BUTTON jr nz, .pressedB diff --git a/engine/movie/gamefreak.asm b/engine/movie/gamefreak.asm index 78e48384..d3b5eb88 100755 --- a/engine/movie/gamefreak.asm +++ b/engine/movie/gamefreak.asm @@ -1,8 +1,8 @@ LoadShootingStarGraphics: ld a, $f9 - ld [rOBP0], a + ldh [rOBP0], a ld a, $a4 - ld [rOBP1], a + ldh [rOBP1], a ld de, AnimationTileset2 + $30 ; star tile (top left quadrant) ld hl, vChars1 + $200 lb bc, BANK(AnimationTileset2), $01 @@ -201,9 +201,9 @@ MoveDownSmallStars: jr nz, .innerLoop ; Toggle the palette so that the lower star in the small stars tile blinks in ; and out. - ld a, [rOBP1] + ldh a, [rOBP1] xor %10100000 - ld [rOBP1], a + ldh [rOBP1], a ld c, 3 call CheckForUserInterruption diff --git a/engine/movie/hall_of_fame.asm b/engine/movie/hall_of_fame.asm index f0553eb6..355a3f4f 100755 --- a/engine/movie/hall_of_fame.asm +++ b/engine/movie/hall_of_fame.asm @@ -19,12 +19,12 @@ AnimateHallOfFame: call FillMemory xor a ld [wUpdateSpritesEnabled], a - ld [hTilesetType], a + ldh [hTilesetType], a ld [wSpriteFlipped], a ld [wLetterPrintingDelayFlags], a ; no delay ld [wHoFMonOrPlayer], a ; mon inc a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld hl, wNumHoFTeams ld a, [hl] inc a @@ -32,7 +32,7 @@ AnimateHallOfFame: inc [hl] .skipInc ld a, $90 - ld [hWY], a + ldh [hWY], a ld c, BANK(Music_HallOfFame) ld a, MUSIC_HALL_OF_FAME call PlayMusic @@ -86,7 +86,7 @@ AnimateHallOfFame: call HoFDisplayPlayerStats call HoFFadeOutScreenAndMusic xor a - ld [hWY], a + ldh [hWY], a ld hl, rLCDC res 3, [hl] ret @@ -97,9 +97,9 @@ HallOfFameText: HoFShowMonOrPlayer: call ClearScreen ld a, $d0 - ld [hSCY], a + ldh [hSCY], a ld a, $c0 - ld [hSCX], a + ldh [hSCX], a ld a, [wHoFMonSpecies] ld [wcf91], a ld [wd0b5], a @@ -121,7 +121,7 @@ HoFShowMonOrPlayer: ld c, 0 call RunPaletteCommand ld a, %11100100 - ld [rBGP], a + ldh [rBGP], a ld c, $31 ; back pic call HoFLoadMonPlayerPicTileIDs ld d, $a0 @@ -133,7 +133,7 @@ HoFShowMonOrPlayer: .next2 call .ScrollPic ; scroll back pic left xor a - ld [hSCY], a + ldh [hSCY], a ld c, a ; front pic call HoFLoadMonPlayerPicTileIDs ld d, 0 @@ -142,9 +142,9 @@ HoFShowMonOrPlayer: .ScrollPic call DelayFrame - ld a, [hSCX] + ldh a, [hSCX] add e - ld [hSCX], a + ldh [hSCX], a cp d jr nz, .ScrollPic ret diff --git a/engine/movie/intro.asm b/engine/movie/intro.asm index 21f1a885..1aba3408 100755 --- a/engine/movie/intro.asm +++ b/engine/movie/intro.asm @@ -12,15 +12,15 @@ const_value = 3 PlayIntro: xor a - ld [hJoyHeld], a + ldh [hJoyHeld], a inc a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call PlayShootingStar call PlayIntroScene call GBFadeOutToWhite xor a - ld [hSCX], a - ld [hAutoBGTransferEnabled], a + ldh [hSCX], a + ldh [hAutoBGTransferEnabled], a call ClearSprites call DelayFrame ret @@ -29,11 +29,11 @@ PlayIntroScene: ld b, SET_PAL_NIDORINO_INTRO call RunPaletteCommand ldPal a, BLACK, DARK_GRAY, LIGHT_GRAY, WHITE - ld [rBGP], a - ld [rOBP0], a - ld [rOBP1], a + ldh [rBGP], a + ldh [rOBP0], a + ldh [rOBP1], a xor a - ld [hSCX], a + ldh [hSCX], a ld b, GENGAR_INTRO_TILES1 call IntroCopyTiles ld a, 0 @@ -245,7 +245,7 @@ IntroMoveMon: cp MOVE_GENGAR_LEFT jr z, .moveGengarLeft ; move Gengar right - ld a, [hSCX] + ldh a, [hSCX] dec a dec a jr .next @@ -259,11 +259,11 @@ IntroMoveMon: call UpdateIntroNidorinoOAM pop de .moveGengarLeft - ld a, [hSCX] + ldh a, [hSCX] inc a inc a .next - ld [hSCX], a + ldh [hSCX], a push de ld c, 2 call CheckForUserInterruption @@ -313,7 +313,7 @@ PlayShootingStar: call RunPaletteCommand callba LoadCopyrightAndTextBoxTiles ldPal a, BLACK, DARK_GRAY, LIGHT_GRAY, WHITE - ld [rBGP], a + ldh [rBGP], a ld c, 180 call DelayFrames call ClearScreen diff --git a/engine/movie/oak_speech/init_player_data.asm b/engine/movie/oak_speech/init_player_data.asm index c576e65a..bd181bbd 100644 --- a/engine/movie/oak_speech/init_player_data.asm +++ b/engine/movie/oak_speech/init_player_data.asm @@ -2,11 +2,11 @@ InitPlayerData: InitPlayerData2: call Random - ld a, [hRandomSub] + ldh a, [hRandomSub] ld [wPlayerID], a call Random - ld a, [hRandomAdd] + ldh a, [hRandomAdd] ld [wPlayerID + 1], a ld a, $ff diff --git a/engine/movie/oak_speech/oak_speech.asm b/engine/movie/oak_speech/oak_speech.asm index 0dd0c2dc..2328e3ab 100755 --- a/engine/movie/oak_speech/oak_speech.asm +++ b/engine/movie/oak_speech/oak_speech.asm @@ -52,7 +52,7 @@ OakSpeech: ld [wDestinationMap], a call SpecialWarpIn xor a - ld [hTilesetType], a + ldh [hTilesetType], a ld a, [wd732] bit 1, a ; possibly a debug mode bit jp nz, .skipChoosingNames @@ -104,12 +104,12 @@ OakSpeech: ld hl, OakSpeechText3 call PrintText .next - ld a, [hLoadedROMBank] + ldh a, [hLoadedROMBank] push af ld a, SFX_SHRINK call PlaySound pop af - ld [hLoadedROMBank], a + ldh [hLoadedROMBank], a ld [MBC1RomBank], a ld c, 4 call DelayFrames @@ -126,7 +126,7 @@ OakSpeech: lb bc, BANK(ShrinkPic2), $00 call IntroDisplayPicCenteredOrUpperRight call ResetPlayerSpriteData - ld a, [hLoadedROMBank] + ldh a, [hLoadedROMBank] push af ld a, BANK(Music_PalletTown) ld [wAudioROMBank], a @@ -137,7 +137,7 @@ OakSpeech: ld [wNewSoundID], a call PlaySound pop af - ld [hLoadedROMBank], a + ldh [hLoadedROMBank], a ld [MBC1RomBank], a ld c, 20 call DelayFrames @@ -175,7 +175,7 @@ FadeInIntroPic: ld b, 6 .next ld a, [hli] - ld [rBGP], a + ldh [rBGP], a ld c, 10 call DelayFrames dec b @@ -192,18 +192,18 @@ IntroFadePalettes: MovePicLeft: ld a, 119 - ld [rWX], a + ldh [rWX], a call DelayFrame ld a, %11100100 - ld [rBGP], a + ldh [rBGP], a .next call DelayFrame - ld a, [rWX] + ldh a, [rWX] sub 8 cp $FF ret z - ld [rWX], a + ldh [rWX], a jr .next DisplayPicCenteredOrUpperRight: @@ -229,5 +229,5 @@ IntroDisplayPicCenteredOrUpperRight: coord hl, 6, 4 .next xor a - ld [hStartTileID], a + ldh [hStartTileID], a predef_jump CopyUncompressedPicToTilemap diff --git a/engine/movie/oak_speech/oak_speech2.asm b/engine/movie/oak_speech/oak_speech2.asm index 743d0d13..5ee0a871 100755 --- a/engine/movie/oak_speech/oak_speech2.asm +++ b/engine/movie/oak_speech/oak_speech2.asm @@ -90,13 +90,13 @@ OakSpeechSlidePicCommon: push hl push de push bc - ld [hSlideDirection], a + ldh [hSlideDirection], a ld a, d - ld [hSlideAmount], a + ldh [hSlideAmount], a ld a, e - ld [hSlidingRegionSize], a + ldh [hSlidingRegionSize], a ld c, a - ld a, [hSlideDirection] + ldh a, [hSlideDirection] and a jr nz, .next ; If sliding right, point hl to the end of the pic's tiles. @@ -107,8 +107,8 @@ OakSpeechSlidePicCommon: ld e, l .loop xor a - ld [hAutoBGTransferEnabled], a - ld a, [hSlideDirection] + ldh [hAutoBGTransferEnabled], a + ldh a, [hSlideDirection] and a jr nz, .slideLeft ; sliding right @@ -123,7 +123,7 @@ OakSpeechSlidePicCommon: .next2 dec c jr nz, .loop - ld a, [hSlideDirection] + ldh a, [hSlideDirection] and a jr z, .next3 ; If sliding left, we need to zero the last tile in the pic (there is no need @@ -134,13 +134,13 @@ OakSpeechSlidePicCommon: ld [hl], a .next3 ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 - ld a, [hSlidingRegionSize] + ldh a, [hSlidingRegionSize] ld c, a ld h, d ld l, e - ld a, [hSlideDirection] + ldh a, [hSlideDirection] and a jr nz, .slideLeft2 inc hl @@ -150,9 +150,9 @@ OakSpeechSlidePicCommon: .next4 ld d, h ld e, l - ld a, [hSlideAmount] + ldh a, [hSlideAmount] dec a - ld [hSlideAmount], a + ldh [hSlideAmount], a jr nz, .loop pop bc pop de diff --git a/engine/movie/title.asm b/engine/movie/title.asm index 5ee9b77f..62eb37d0 100755 --- a/engine/movie/title.asm +++ b/engine/movie/title.asm @@ -11,7 +11,7 @@ SetDefaultNamesBeforeTitlescreen:: ld de, wRivalName call CopyFixedLengthText xor a - ld [hWY], a + ldh [hWY], a ld [wLetterPrintingDelayFlags], a ld hl, wd732 ld [hli], a @@ -24,14 +24,14 @@ SetDefaultNamesBeforeTitlescreen:: DisplayTitleScreen: call GBPalWhiteOut ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a xor a - ld [hTilesetType], a - ld [hSCX], a + ldh [hTilesetType], a + ldh [hSCX], a ld a, $40 - ld [hSCY], a + ldh [hSCY], a ld a, $90 - ld [hWY], a + ldh [hWY], a call ClearScreen call DisableLCD call LoadFontTilePatterns @@ -130,7 +130,7 @@ ENDC call TitleScreenCopyTileMapToVRAM call SaveScreenTilesToBuffer1 ld a, $40 - ld [hWY], a + ldh [hWY], a call LoadScreenTilesFromBuffer2 ld a, vBGMap0 / $100 call TitleScreenCopyTileMapToVRAM @@ -138,7 +138,7 @@ ENDC call RunPaletteCommand call GBPalNormal ld a, %11100100 - ld [rOBP0], a + ldh [rOBP0], a ; make pokemon logo bounce up and down ld bc, hSCY ; background scroll Y @@ -190,7 +190,7 @@ ENDC ; scroll game version in from the right call PrintGameVersionOnTitleScreen ld a, SCREEN_HEIGHT_PX - ld [hWY], a + ldh [hWY], a ld d, 144 .scrollTitleScreenGameVersionLoop ld h, d @@ -237,9 +237,9 @@ ENDC call GBPalWhiteOutWithDelay3 call ClearSprites xor a - ld [hWY], a + ldh [hWY], a inc a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call ClearScreen ld a, vBGMap0 / $100 call TitleScreenCopyTileMapToVRAM @@ -247,7 +247,7 @@ ENDC call TitleScreenCopyTileMapToVRAM call Delay3 call LoadGBPal - ld a, [hJoyHeld] + ldh a, [hJoyHeld] ld b, a and D_UP | SELECT | B_BUTTON cp D_UP | SELECT | B_BUTTON @@ -280,7 +280,7 @@ TitleScreenPickNewMon: call LoadTitleMonSprite ld a, $90 - ld [hWY], a + ldh [hWY], a ld d, 1 ; scroll out callba TitleScroll ret @@ -289,20 +289,20 @@ TitleScreenScrollInMon: ld d, 0 ; scroll in callba TitleScroll xor a - ld [hWY], a + ldh [hWY], a ret ScrollTitleScreenGameVersion: .wait - ld a, [rLY] + ldh a, [rLY] cp l jr nz, .wait ld a, h - ld [rSCX], a + ldh [rSCX], a .wait2 - ld a, [rLY] + ldh a, [rLY] cp h jr z, .wait2 ret @@ -358,12 +358,12 @@ LoadTitleMonSprite: jp LoadFrontSpriteByMonIndex TitleScreenCopyTileMapToVRAM: - ld [hAutoBGTransferDest + 1], a + ldh [hAutoBGTransferDest + 1], a jp Delay3 LoadCopyrightAndTextBoxTiles: xor a - ld [hWY], a + ldh [hWY], a call ClearScreen call LoadTextBoxTilePatterns diff --git a/engine/movie/title2.asm b/engine/movie/title2.asm index 2346fcc5..315cf6b5 100755 --- a/engine/movie/title2.asm +++ b/engine/movie/title2.asm @@ -69,15 +69,15 @@ _TitleScroll: .ScrollBetween: .wait - ld a, [rLY] ; rLY + ldh a, [rLY] ; rLY cp l jr nz, .wait ld a, h - ld [rSCX], a + ldh [rSCX], a .wait2 - ld a, [rLY] ; rLY + ldh a, [rLY] ; rLY cp h jr z, .wait2 ret diff --git a/engine/movie/trade.asm b/engine/movie/trade.asm index 8b596e5e..c8005b93 100755 --- a/engine/movie/trade.asm +++ b/engine/movie/trade.asm @@ -20,14 +20,14 @@ ExternalClockTradeAnim: TradeAnimCommon: ld a, [wOptions] push af - ld a, [hSCY] + ldh a, [hSCY] push af - ld a, [hSCX] + ldh a, [hSCX] push af xor a ld [wOptions], a - ld [hSCY], a - ld [hSCX], a + ldh [hSCY], a + ldh [hSCX], a push de .loop pop de @@ -49,9 +49,9 @@ TradeAnimCommon: jp hl ; call trade func, which will return to the top of the loop .done pop af - ld [hSCX], a + ldh [hSCX], a pop af - ld [hSCY], a + ldh [hSCY], a pop af ld [wOptions], a ret @@ -137,10 +137,10 @@ Trade_Delay100: Trade_CopyTileMapToVRAM: ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ret Trade_Delay80: @@ -181,10 +181,10 @@ LoadTradingGFXAndMonNames: jr z, .next ld a, $f0 ; SGB OBP0 .next - ld [rOBP0], a + ldh [rOBP0], a call EnableLCD xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld a, [wTradedPlayerMonSpecies] ld [wd11e], a call GetMonName @@ -198,7 +198,7 @@ LoadTradingGFXAndMonNames: Trade_LoadMonPartySpriteGfx: ld a, %11010000 - ld [rOBP1], a + ldh [rOBP1], a jpba LoadMonPartySpriteGfx Trade_SwapNames: @@ -224,14 +224,14 @@ Trade_Cleanup: Trade_ShowPlayerMon: ld a, %10101011 - ld [rLCDC], a + ldh [rLCDC], a ld a, $50 - ld [hWY], a + ldh [hWY], a ld a, $86 - ld [rWX], a - ld [hSCX], a + ldh [rWX], a + ldh [hSCX], a xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a coord hl, 4, 0 ld b, 6 ld c, 10 @@ -247,8 +247,8 @@ Trade_ShowPlayerMon: push af call DelayFrame pop af - ld [rWX], a - ld [hSCX], a + ldh [rWX], a + ldh [hSCX], a dec a dec a and a @@ -261,7 +261,7 @@ Trade_ShowPlayerMon: ld a, [wTradedPlayerMonSpecies] call PlayCry xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ret Trade_DrawOpenEndOfLinkCable: @@ -277,10 +277,10 @@ Trade_DrawOpenEndOfLinkCable: call Trade_CopyCableTilesOffScreen ld a, $a0 - ld [hSCX], a + ldh [hSCX], a call DelayFrame ld a, %10001011 - ld [rLCDC], a + ldh [rLCDC], a coord hl, 6, 2 ld b, $7 ; open end of link cable tile ID list index call CopyTileIDsFromList_ZeroBaseTileID @@ -289,9 +289,9 @@ Trade_DrawOpenEndOfLinkCable: call PlaySound ld c, 20 .loop - ld a, [hSCX] + ldh a, [hSCX] add 4 - ld [hSCX], a + ldh [hSCX], a dec c jr nz, .loop ret @@ -302,7 +302,7 @@ Trade_AnimateBallEnteringLinkCable: ld c, 10 call DelayFrames ld a, %11100100 - ld [rOBP0], a + ldh [rOBP0], a xor a ld [wLinkCableAnimBulgeToggle], a lb bc, $20, $60 @@ -336,13 +336,13 @@ Trade_AnimateBallEnteringLinkCable: .ballSpriteReachedEdgeOfScreen call ClearSprites ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call ClearScreen ld b, $98 call CopyScreenTileBufferToVRAM call Delay3 xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ret Trade_BallInsideLinkCableOAM: @@ -360,13 +360,13 @@ Trade_ShowEnemyMon: call Trade_PrintEnemyMonInfoText call Trade_CopyTileMapToVRAM ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld a, [wTradedEnemyMonSpecies] call Trade_LoadMonSprite ld a, TRADE_BALL_POOF_ANIM call Trade_ShowAnimation ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld a, [wTradedEnemyMonSpecies] call PlayCry call Trade_Delay100 @@ -381,7 +381,7 @@ Trade_AnimLeftToRight: ld a, $1 ld [wTradedMonMovingRight], a ld a, %11100100 - ld [rOBP0], a + ldh [rOBP0], a ld a, $54 ld [wBaseCoordX], a ld a, $1c @@ -397,7 +397,7 @@ Trade_AnimLeftToRight: ld b, $6 call Trade_AnimMonMoveHorizontal ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Trade_DrawCableAcrossScreen ld b, $4 call Trade_AnimMonMoveHorizontal @@ -405,7 +405,7 @@ Trade_AnimLeftToRight: ld b, $6 call Trade_AnimMonMoveHorizontal xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Trade_AnimMonMoveVertical jp ClearSprites @@ -430,7 +430,7 @@ Trade_AnimRightToLeft: ld b, $6 call Trade_AnimMonMoveHorizontal ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Trade_DrawCableAcrossScreen ld b, $4 call Trade_AnimMonMoveHorizontal @@ -438,24 +438,24 @@ Trade_AnimRightToLeft: ld b, $6 call Trade_AnimMonMoveHorizontal xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a jp ClearSprites Trade_InitGameboyTransferGfx: ; Initialises the graphics for showing a mon moving between gameboys. ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call ClearScreen xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Trade_LoadMonPartySpriteGfx call DelayFrame ld a, %10101011 - ld [rLCDC], a + ldh [rLCDC], a xor a - ld [hSCX], a + ldh [hSCX], a ld a, $90 - ld [hWY], a + ldh [hWY], a ret Trade_DrawLeftGameboy: @@ -555,11 +555,11 @@ Trade_CopyCableTilesOffScreen: call CopyToRedrawRowOrColumnSrcTiles pop hl ld a, h - ld [hRedrawRowOrColumnDest + 1], a + ldh [hRedrawRowOrColumnDest + 1], a ld a, l - ld [hRedrawRowOrColumnDest], a + ldh [hRedrawRowOrColumnDest], a ld a, REDRAW_ROW - ld [hRedrawRowOrColumnMode], a + ldh [hRedrawRowOrColumnMode], a ld c, 10 jp DelayFrames @@ -574,14 +574,14 @@ Trade_AnimMonMoveHorizontal: dec a jr z, .movingRight ; moving left - ld a, [hSCX] + ldh a, [hSCX] sub $2 jr .next .movingRight - ld a, [hSCX] + ldh a, [hSCX] add $2 .next - ld [hSCX], a + ldh [hSCX], a call DelayFrame dec d jr nz, .scrollLoop @@ -596,9 +596,9 @@ Trade_AnimCircledMon: push de push bc push hl - ld a, [rBGP] + ldh a, [rBGP] xor $3c ; make link cable flash - ld [rBGP], a + ldh [rBGP], a ld hl, wOAMBuffer + $02 ld de, $4 ld c, $14 @@ -731,9 +731,9 @@ Trade_LoadMonSprite: ld b, SET_PAL_POKEMON_WHOLE_SCREEN ld c, 0 call RunPaletteCommand - ld a, [hAutoBGTransferEnabled] + ldh a, [hAutoBGTransferEnabled] xor $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call GetMonHeader coord hl, 7, 2 call LoadFlippedFrontSpriteByMonIndex @@ -743,16 +743,16 @@ Trade_LoadMonSprite: Trade_ShowClearedWindow: ; clears the window and covers the BG entirely with the window ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call ClearScreen ld a, %11100011 - ld [rLCDC], a + ldh [rLCDC], a ld a, $7 - ld [rWX], a + ldh [rWX], a xor a - ld [hWY], a + ldh [hWY], a ld a, $90 - ld [hSCX], a + ldh [hSCX], a ret Trade_SlideTextBoxOffScreen: @@ -764,17 +764,17 @@ Trade_SlideTextBoxOffScreen: call DelayFrames .loop call DelayFrame - ld a, [rWX] + ldh a, [rWX] inc a inc a - ld [rWX], a + ldh [rWX], a cp $a1 jr nz, .loop call Trade_ClearTileMap ld c, 10 call DelayFrames ld a, $7 - ld [rWX], a + ldh [rWX], a ret PrintTradeWentToText: diff --git a/engine/overworld/auto_movement.asm b/engine/overworld/auto_movement.asm index 5e70ab8c..9a717641 100755 --- a/engine/overworld/auto_movement.asm +++ b/engine/overworld/auto_movement.asm @@ -66,7 +66,7 @@ PalletMovementScript_OakMoveLeft: call FillMemory ld [hl], $ff ld a, [wSpriteIndex] - ld [hSpriteIndex], a + ldh [hSpriteIndex], a ld de, wNPCMovementDirections2 call MoveSprite ld a, $1 @@ -91,7 +91,7 @@ PalletMovementScript_PlayerMoveLeft: ret nz ; return if Oak is still moving ld a, [wNumStepsToTake] ld [wSimulatedJoypadStatesIndex], a - ld [hNPCMovementDirections2Index], a + ldh [hNPCMovementDirections2Index], a predef ConvertNPCMovementDirectionsToJoypadMasks call StartSimulatingJoypadStates ld a, $2 @@ -282,7 +282,7 @@ FreezeEnemyTrainerSprite:: jr .loop .notRival ld a, [wSpriteIndex] - ld [hSpriteIndex], a + ldh [hSpriteIndex], a jp SetSpriteMovementBytesToFF RivalIDs: diff --git a/engine/overworld/clear_variables.asm b/engine/overworld/clear_variables.asm index 9b735495..bbb7c986 100644 --- a/engine/overworld/clear_variables.asm +++ b/engine/overworld/clear_variables.asm @@ -1,14 +1,14 @@ ClearVariablesOnEnterMap:: ld a, SCREEN_HEIGHT_PX - ld [hWY], a - ld [rWY], a + ldh [hWY], a + ldh [rWY], a xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld [wStepCounter], a ld [wLoneAttackNo], a - ld [hJoyPressed], a - ld [hJoyReleased], a - ld [hJoyHeld], a + ldh [hJoyPressed], a + ldh [hJoyReleased], a + ldh [hJoyHeld], a ld [wActionResultOrTookBattleTurn], a ld [wUnusedD5A3], a ld hl, wCardKeyDoorY diff --git a/engine/overworld/cut.asm b/engine/overworld/cut.asm index f99bf323..fc5fb578 100755 --- a/engine/overworld/cut.asm +++ b/engine/overworld/cut.asm @@ -38,14 +38,14 @@ UsedCut: call ClearSprites call RestoreScreenTilesAndReloadTilePatterns ld a, SCREEN_HEIGHT_PX - ld [hWY], a + ldh [hWY], a call Delay3 call LoadGBPal call LoadCurrentMapView call SaveScreenTilesToBuffer2 call Delay3 xor a - ld [hWY], a + ldh [hWY], a ld hl, UsedCutText call PrintText call LoadScreenTilesFromBuffer2 @@ -63,7 +63,7 @@ UsedCut: ld a, SFX_CUT call PlaySound ld a, $90 - ld [hWY], a + ldh [hWY], a call UpdateSprites jp RedrawMapView @@ -75,7 +75,7 @@ InitCutAnimOAM: xor a ld [wWhichAnimationOffsets], a ld a, %11100100 - ld [rOBP1], a + ldh [rOBP1], a ld a, [wCutTile] cp $52 jr z, .grass diff --git a/engine/overworld/cut2.asm b/engine/overworld/cut2.asm index f16fed66..3d4a5905 100755 --- a/engine/overworld/cut2.asm +++ b/engine/overworld/cut2.asm @@ -15,9 +15,9 @@ AnimCut: ld [wCoordAdjustmentAmount], a ld c, 2 call AdjustOAMBlockXPos2 - ld a, [rOBP1] + ldh a, [rOBP1] xor $64 - ld [rOBP1], a + ldh [rOBP1], a call DelayFrame pop bc dec c @@ -65,9 +65,9 @@ AnimCutGrass_UpdateOAMEntries: ld [wCoordAdjustmentAmount], a ld c, 1 call AdjustOAMBlockXPos2 - ld a, [rOBP1] + ldh a, [rOBP1] xor $64 - ld [rOBP1], a + ldh [rOBP1], a call DelayFrame pop bc dec c diff --git a/engine/overworld/dust_smoke.asm b/engine/overworld/dust_smoke.asm index 2dc6882e..3d87e25a 100755 --- a/engine/overworld/dust_smoke.asm +++ b/engine/overworld/dust_smoke.asm @@ -6,7 +6,7 @@ AnimateBoulderDust: ld a, $ff ld [wUpdateSpritesEnabled], a ld a, %11100100 - ld [rOBP1], a + ldh [rOBP1], a call LoadSmokeTileFourTimes callba WriteCutOrBoulderDustAnimationOAMBlock ld c, 8 ; number of steps in animation @@ -18,9 +18,9 @@ AnimateBoulderDust: ld c, 4 jp hl .returnAddress - ld a, [rOBP1] + ldh a, [rOBP1] xor %01100100 - ld [rOBP1], a + ldh [rOBP1], a call Delay3 pop bc dec c diff --git a/engine/overworld/elevator.asm b/engine/overworld/elevator.asm index 05ca08c9..7a6aca85 100755 --- a/engine/overworld/elevator.asm +++ b/engine/overworld/elevator.asm @@ -6,7 +6,7 @@ ShakeElevator:: call Delay3 ld a, SFX_STOP_ALL_MUSIC call PlaySound - ld a, [hSCY] + ldh a, [hSCY] ld d, a ld e, $1 ld b, 100 @@ -15,7 +15,7 @@ ShakeElevator:: xor $fe ld e, a add d - ld [hSCY], a + ldh [hSCY], a push bc ld c, BANK(SFX_Collision_1) ld a, SFX_COLLISION @@ -26,7 +26,7 @@ ShakeElevator:: dec b jr nz, .shakeLoop ld a, d - ld [hSCY], a + ldh [hSCY], a ld a, SFX_STOP_ALL_MUSIC call PlaySound ld c, BANK(SFX_Safari_Zone_PA) diff --git a/engine/overworld/healing_machine.asm b/engine/overworld/healing_machine.asm index a09a7590..062ef7ea 100755 --- a/engine/overworld/healing_machine.asm +++ b/engine/overworld/healing_machine.asm @@ -8,10 +8,10 @@ AnimateHealingMachine: push af ld [hl], $ff push hl - ld a, [rOBP1] + ldh a, [rOBP1] push af ld a, $e0 - ld [rOBP1], a + ldh [rOBP1], a ld hl, wOAMBuffer + $84 ld de, PokeCenterOAMData call CopyHealingMachineOAM @@ -56,7 +56,7 @@ AnimateHealingMachine: ld c, 32 call DelayFrames pop af - ld [rOBP1], a + ldh [rOBP1], a pop hl pop af ld [hl], a @@ -78,9 +78,9 @@ PokeCenterOAMData: FlashSprite8Times: ld b, 8 .loop - ld a, [rOBP1] + ldh a, [rOBP1] xor d - ld [rOBP1], a + ldh [rOBP1], a ld c, 10 call DelayFrames dec b diff --git a/engine/overworld/hidden_objects.asm b/engine/overworld/hidden_objects.asm index 5ce7f3cb..855328e7 100755 --- a/engine/overworld/hidden_objects.asm +++ b/engine/overworld/hidden_objects.asm @@ -58,7 +58,7 @@ CheckForHiddenObject:: ld [wHiddenObjectX], a ld c, a call CheckIfCoordsInFrontOfPlayerMatch - ld a, [hCoordsInFrontOfPlayerMatch] + ldh a, [hCoordsInFrontOfPlayerMatch] and a jr z, .foundMatchingObject inc hl @@ -81,7 +81,7 @@ CheckForHiddenObject:: ret .noMatch ld a, $ff - ld [hDidntFindAnyHiddenObject], a + ldh [hDidntFindAnyHiddenObject], a ret ; checks if the coordinates in front of the player's sprite match Y in b and X in c @@ -127,7 +127,7 @@ CheckIfCoordsInFrontOfPlayerMatch: .didNotMatch ld a, $ff .done - ld [hCoordsInFrontOfPlayerMatch], a + ldh [hCoordsInFrontOfPlayerMatch], a ret INCLUDE "data/events/hidden_objects.asm" diff --git a/engine/overworld/ledges.asm b/engine/overworld/ledges.asm index 0f135fb6..cba544f6 100755 --- a/engine/overworld/ledges.asm +++ b/engine/overworld/ledges.asm @@ -36,7 +36,7 @@ HandleLedges:: inc hl jr .loop .foundMatch - ld a, [hJoyHeld] + ldh a, [hJoyHeld] and e ret z ld a, $ff diff --git a/engine/overworld/map_sprites.asm b/engine/overworld/map_sprites.asm index 0de1befd..26a8f1bb 100755 --- a/engine/overworld/map_sprites.asm +++ b/engine/overworld/map_sprites.asm @@ -39,7 +39,7 @@ LoadMapSpriteTilePatterns: ld b, $10 ; number of sprite slots ld hl, wSpritePlayerStateData2PictureID xor a - ld [hFourTileSpriteCount], a + ldh [hFourTileSpriteCount], a .copyPictureIDLoop ; loop to copy picture ID from $C2XD to $C2XE ld a, [hli] ; $C2XD (sprite picture ID) ld [hld], a ; $C2XE @@ -98,14 +98,14 @@ LoadMapSpriteTilePatterns: cp SPRITE_BALL ; is it a 4-tile sprite? jr c, .notFourTileSprite pop af - ld a, [hFourTileSpriteCount] + ldh a, [hFourTileSpriteCount] add 11 jr .storeVRAMSlot .notFourTileSprite pop af .storeVRAMSlot ld [hl], a ; store VRAM slot at $C2XE - ld [hVRAMSlot], a ; used to determine if it's 4-tile sprite later + ldh [hVRAMSlot], a ; used to determine if it's 4-tile sprite later ld a, b ; a = current sprite picture ID dec a add a @@ -128,7 +128,7 @@ LoadMapSpriteTilePatterns: push bc ld hl, vNPCSprites ; VRAM base address ld bc, $c0 ; number of bytes per VRAM slot - ld a, [hVRAMSlot] + ldh a, [hVRAMSlot] cp 11 ; is it a 4-tile sprite? jr nc, .fourTileSpriteVRAMAddr ld d, a @@ -141,13 +141,13 @@ LoadMapSpriteTilePatterns: jr .loadStillTilePattern .fourTileSpriteVRAMAddr ld hl, vSprites + $7c0 ; address for second 4-tile sprite - ld a, [hFourTileSpriteCount] + ldh a, [hFourTileSpriteCount] and a jr nz, .loadStillTilePattern ; if it's the first 4-tile sprite ld hl, vSprites + $780 ; address for first 4-tile sprite inc a - ld [hFourTileSpriteCount], a + ldh [hFourTileSpriteCount], a .loadStillTilePattern pop bc pop de @@ -167,7 +167,7 @@ LoadMapSpriteTilePatterns: .skipFirstLoad pop de pop hl - ld a, [hVRAMSlot] + ldh a, [hVRAMSlot] cp 11 ; is it a 4-tile sprite? jr nc, .skipSecondLoad ; if so, there is no second block push de diff --git a/engine/overworld/missable_objects.asm b/engine/overworld/missable_objects.asm index 1ebe8064..fd2fe578 100644 --- a/engine/overworld/missable_objects.asm +++ b/engine/overworld/missable_objects.asm @@ -31,19 +31,19 @@ LoadMissableObjects: sub d ld h, a ld a, h - ld [hDividend], a + ldh [hDividend], a ld a, l - ld [hDividend+1], a + ldh [hDividend+1], a xor a - ld [hDividend+2], a - ld [hDividend+3], a + ldh [hDividend+2], a + ldh [hDividend+3], a ld a, $3 - ld [hDivisor], a + ldh [hDivisor], a ld b, $2 call Divide ; divide difference by 3, resulting in the global offset (number of missable items before ours) ld a, [wCurMap] ld b, a - ld a, [hDividend+3] + ldh a, [hDividend+3] ld c, a ; store global offset in c ld de, wMissableObjectList pop hl @@ -99,7 +99,7 @@ InitializeMissableObjectsFlags: ; tests if current sprite is a missable object that is hidden/has been removed IsObjectHidden: - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] swap a ld b, a ld hl, wMissableObjectList @@ -120,7 +120,7 @@ IsObjectHidden: .notHidden xor a .hidden - ld [hIsHiddenMissableObject], a + ldh [hIsHiddenMissableObject], a ret ; adds missable object (items, leg. pokemon, etc.) to the map diff --git a/engine/overworld/movement.asm b/engine/overworld/movement.asm index d27ccb4b..ac7e1b46 100644 --- a/engine/overworld/movement.asm +++ b/engine/overworld/movement.asm @@ -14,7 +14,7 @@ UpdatePlayerSprite: ; the maximum number for map tiles .checkIfTextBoxInFrontOfSprite aCoord 8, 9 - ld [hTilePlayerStandingOn], a + ldh [hTilePlayerStandingOn], a cp MAP_TILESET_SIZE jr c, .lowerLeftTileIsMapTile .disableSprite @@ -63,7 +63,7 @@ UpdatePlayerSprite: ld a, [wd736] bit 7, a ; is the player sprite spinning due to a spin tile? jr nz, .skipSpriteAnim - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $7 ld l, a ld a, [hl] @@ -89,7 +89,7 @@ UpdatePlayerSprite: ; lower priority than the background so that it's partially obscured by the ; grass. Only the lower half of the sprite is permitted to have the priority ; bit set by later logic. - ld a, [hTilePlayerStandingOn] + ldh a, [hTilePlayerStandingOn] ld c, a ld a, [wGrassTile] cp c @@ -103,7 +103,7 @@ UpdatePlayerSprite: UnusedReadSpriteDataFunction: push bc push af - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] ld c, a pop af add c @@ -112,7 +112,7 @@ UnusedReadSpriteDataFunction: ret UpdateNPCSprite: - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] swap a dec a add a @@ -122,7 +122,7 @@ UpdateNPCSprite: ld a, [hl] ; read movement byte 2 ld [wCurSpriteMovement2], a ld h, $c1 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] ld l, a inc l ld a, [hl] ; c1x1 @@ -131,7 +131,7 @@ UpdateNPCSprite: call CheckSpriteAvailability ret c ; if sprite is invisible, on tile >=MAP_TILESET_SIZE, in grass or player is currently walking ld h, $c1 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] ld l, a inc l ld a, [hl] ; c1x1 @@ -151,7 +151,7 @@ UpdateNPCSprite: ret nz ; don't do anything yet if player is currently moving (redundant, already tested in CheckSpriteAvailability) call InitializeSpriteScreenPosition ld h, $c2 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $6 ld l, a ld a, [hl] ; c2x6: movement byte 1 @@ -264,11 +264,11 @@ ChangeFacingDirection: TryWalking: push hl ld h, $c1 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $9 ld l, a ld [hl], c ; c1x9 (update facing direction) - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $3 ld l, a ld [hl], d ; c1x3 (update Y movement delta) @@ -282,7 +282,7 @@ TryWalking: pop de ret c ; cannot walk there (reinitialization of delay values already done) ld h, $c2 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $4 ld l, a ld a, [hl] ; c2x4: Y position @@ -291,7 +291,7 @@ TryWalking: ld a, [hl] ; c2x5: X position add e ld [hl], a ; update X position - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] ld l, a ld [hl], $10 ; c2x0=16: walk animation counter dec h @@ -301,7 +301,7 @@ TryWalking: ; update the walking animation parameters for a sprite that is currently walking UpdateSpriteInWalkingAnimation: - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $7 ld l, a ld a, [hl] ; c1x7 (counter until next walk animation frame) @@ -317,7 +317,7 @@ UpdateSpriteInWalkingAnimation: and $3 ld [hl], a ; advance to next animation frame every 4 ticks (16 ticks total for one step) .noNextAnimationFrame - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $3 ld l, a ld a, [hli] ; c1x3 (movement Y delta) @@ -330,7 +330,7 @@ UpdateSpriteInWalkingAnimation: ld a, [hl] ; c1x6 (screen X position) add b ld [hl], a ; update screen X position - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] ld l, a inc h ld a, [hl] ; c2x0 (walk animation counter) @@ -343,7 +343,7 @@ UpdateSpriteInWalkingAnimation: ld a, [hl] ; c2x6 (movement byte 1) cp $fe jr nc, .initNextMovementCounter ; values $fe and $ff - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] inc a ld l, a dec h @@ -351,14 +351,14 @@ UpdateSpriteInWalkingAnimation: ret .initNextMovementCounter call Random - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $8 ld l, a - ld a, [hRandomAdd] + ldh a, [hRandomAdd] and $7f ld [hl], a ; c2x8: set next movement delay to a random value in [0,$7f] dec h ; note that value 0 actually makes the delay $100 (bug?) - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] inc a ld l, a ld [hl], $2 ; c1x1 = 2 (movement status) @@ -375,7 +375,7 @@ UpdateSpriteInWalkingAnimation: ; update delay value (c2x8) for sprites in the delayed state (c1x1) UpdateSpriteMovementDelay: ld h, $c2 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $6 ld l, a ld a, [hl] ; c2x6: movement byte 1 @@ -390,13 +390,13 @@ UpdateSpriteMovementDelay: jr nz, notYetMoving .moving dec h - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] inc a ld l, a ld [hl], $1 ; c1x1 = 1 (mark as ready to move) notYetMoving: ld h, wSpriteStateData1 / $100 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpritePlayerStateData1AnimFrameCounter - wSpritePlayerStateData1 ld l, a ld [hl], $0 ; c1x8 = 0 (walk animation frame) @@ -429,7 +429,7 @@ MakeNPCFacePlayer: .notFacingRight ld c, SPRITE_FACING_LEFT .facingDirectionDetermined - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $9 ld l, a ld [hl], c ; c1x9: set facing direction @@ -440,7 +440,7 @@ InitializeSpriteStatus: inc l ld [hl], $ff ; $c1x2: set sprite image to $ff (invisible/off screen) inc h - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $2 ld l, a ld a, $8 @@ -451,7 +451,7 @@ InitializeSpriteStatus: ; calculates the sprite's screen position form its map position and the player position InitializeSpriteScreenPosition: ld h, wSpriteStateData2 / $100 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpritePlayerStateData2MapY - wSpritePlayerStateData2 ld l, a ld a, [wYCoord] @@ -475,17 +475,17 @@ InitializeSpriteScreenPosition: ; tests if sprite is off screen or otherwise unable to do anything CheckSpriteAvailability: predef IsObjectHidden - ld a, [hIsHiddenMissableObject] + ldh a, [hIsHiddenMissableObject] and a jp nz, .spriteInvisible ld h, wSpriteStateData2 / $100 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpritePlayerStateData2MovementByte1 - wSpritePlayerStateData2 ld l, a ld a, [hl] ; c2x6: movement byte 1 cp $fe jr c, .skipXVisibilityTest ; movement byte 1 < $fe (i.e. the sprite's movement is scripted) - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpritePlayerStateData2MapY - wSpritePlayerStateData2 ld l, a ld b, [hl] ; c2x4: Y pos (+4) @@ -527,7 +527,7 @@ CheckSpriteAvailability: jr c, .spriteVisible ; standing on tile with ID >=MAP_TILESET_SIZE (top right tile) .spriteInvisible ld h, wSpriteStateData1 / $100 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpritePlayerStateData1ImageIndex - wSpritePlayerStateData1 ld l, a ld [hl], $ff ; c1x2 @@ -540,7 +540,7 @@ CheckSpriteAvailability: jr nz, .done ; if player is currently walking, we're done call UpdateSpriteImage inc h - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $7 ld l, a ld a, [wGrassTile] @@ -556,7 +556,7 @@ CheckSpriteAvailability: UpdateSpriteImage: ld h, $c1 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $8 ld l, a ld a, [hli] ; c1x8: walk animation frame @@ -564,10 +564,10 @@ UpdateSpriteImage: ld a, [hl] ; c1x9: facing direction add b ld b, a - ld a, [hTilePlayerStandingOn] + ldh a, [hTilePlayerStandingOn] add b ld b, a - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $2 ld l, a ld [hl], b ; c1x2: sprite to display @@ -581,7 +581,7 @@ UpdateSpriteImage: ; set carry on failure, clears carry on success CanWalkOntoTile: ld h, wSpriteStateData2 / $100 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpritePlayerStateData2MovementByte1 - wSpritePlayerStateData2 ld l, a ld a, [hl] ; c2x6 (movement byte 1) @@ -602,14 +602,14 @@ CanWalkOntoTile: cp c jr nz, .tilePassableLoop ld h, $c2 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $6 ld l, a ld a, [hl] ; $c2x6 (movement byte 1) inc a jr z, .impassable ; if $ff, no movement allowed (however, changing direction is) ld h, wSpriteStateData1 / $100 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1 ld l, a ld a, [hli] ; c1x4 (screen Y pos) @@ -628,14 +628,14 @@ CanWalkOntoTile: pop bc pop de ld h, wSpriteStateData1 / $100 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $c ld l, a ld a, [hl] ; c1xc (directions in which sprite collision would occur) and b ; check against chosen direction (1,2,4 or 8) jr nz, .impassable ; collision between sprites, don't go there ld h, wSpriteStateData2 / $100 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpritePlayerStateData2YDisplacement - wSpritePlayerStateData2 ld l, a ld a, [hli] ; c2x2 (sprite Y displacement, initialized at $8, keep track of where a sprite did go) @@ -666,7 +666,7 @@ CanWalkOntoTile: ret .impassable ld h, wSpriteStateData1 / $100 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] inc a ld l, a ld [hl], $2 ; c1x1 = 2 (set movement status to delayed) @@ -677,11 +677,11 @@ CanWalkOntoTile: inc l ld [hl], a ; c1x5 = 0 (clear X movement delta) inc h - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $8 ld l, a call Random - ld a, [hRandomAdd] + ldh a, [hRandomAdd] and $7f ld [hl], a ; c2x8: set next movement delay to a random value in [0,$7f] (again with delay $100 if value is 0) scf ; set carry (marking failure to walk) @@ -692,7 +692,7 @@ CanWalkOntoTile: ; hl: output pointer GetTileSpriteStandsOn: ld h, wSpriteStateData1 / $100 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1 ld l, a ld a, [hli] ; c1x4: screen Y position @@ -784,7 +784,7 @@ DoScriptedNPCMovement: ld a, [hl] add b ld [hl], a - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $9 ld l, a ld a, c @@ -817,7 +817,7 @@ GetSpriteScreenXPointer: GetSpriteScreenXYPointerCommon: ld hl, wSpriteStateData1 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add l add b ld l, a @@ -825,7 +825,7 @@ GetSpriteScreenXYPointerCommon: AnimScriptedNPCMovement: ld hl, wSpriteStateData2 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpritePlayerStateData2ImageBaseOffset - wSpritePlayerStateData2 ld l, a ld a, [hl] ; VRAM slot @@ -833,7 +833,7 @@ AnimScriptedNPCMovement: swap a ld b, a ld hl, wSpriteStateData1 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpritePlayerStateData1FacingDirection - wSpritePlayerStateData1 ld l, a ld a, [hl] ; facing direction @@ -849,21 +849,21 @@ AnimScriptedNPCMovement: .anim add b ld b, a - ld [hSpriteVRAMSlotAndFacing], a + ldh [hSpriteVRAMSlotAndFacing], a call AdvanceScriptedNPCAnimFrameCounter ld hl, wSpriteStateData1 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpritePlayerStateData1ImageIndex - wSpritePlayerStateData1 ld l, a - ld a, [hSpriteVRAMSlotAndFacing] + ldh a, [hSpriteVRAMSlotAndFacing] ld b, a - ld a, [hSpriteAnimFrameCounter] + ldh a, [hSpriteAnimFrameCounter] add b ld [hl], a ret AdvanceScriptedNPCAnimFrameCounter: - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $7 ld l, a ld a, [hl] ; intra-animation frame counter @@ -878,5 +878,5 @@ AdvanceScriptedNPCAnimFrameCounter: inc a and $3 ld [hl], a - ld [hSpriteAnimFrameCounter], a + ldh [hSpriteAnimFrameCounter], a ret diff --git a/engine/overworld/pathfinding.asm b/engine/overworld/pathfinding.asm index 7251759c..54cb86b9 100644 --- a/engine/overworld/pathfinding.asm +++ b/engine/overworld/pathfinding.asm @@ -8,29 +8,29 @@ FindPathToPlayer: ld hl, wNPCMovementDirections2 ld de, $0 .loop - ld a, [hFindPathYProgress] + ldh a, [hFindPathYProgress] ld b, a - ld a, [hNPCPlayerYDistance] ; Y distance in steps + ldh a, [hNPCPlayerYDistance] ; Y distance in steps call CalcDifference ld d, a and a jr nz, .asm_f8da - ld a, [hFindPathFlags] + ldh a, [hFindPathFlags] set 0, a ; current end of path matches the player's Y coordinate - ld [hFindPathFlags], a + ldh [hFindPathFlags], a .asm_f8da - ld a, [hFindPathXProgress] + ldh a, [hFindPathXProgress] ld b, a - ld a, [hNPCPlayerXDistance] ; X distance in steps + ldh a, [hNPCPlayerXDistance] ; X distance in steps call CalcDifference ld e, a and a jr nz, .asm_f8ec - ld a, [hFindPathFlags] + ldh a, [hFindPathFlags] set 1, a ; current end of path matches the player's X coordinate - ld [hFindPathFlags], a + ldh [hFindPathFlags], a .asm_f8ec - ld a, [hFindPathFlags] + ldh a, [hFindPathFlags] cp $3 ; has the end of the path reached the player's position? jr z, .done ; Compare whether the X distance between the player and the current of the path @@ -39,7 +39,7 @@ FindPathToPlayer: cp d jr c, .yDistanceGreater ; x distance is greater - ld a, [hNPCPlayerRelativePosFlags] + ldh a, [hNPCPlayerRelativePosFlags] bit 1, a jr nz, .playerIsLeftOfNPC ld d, NPC_MOVEMENT_RIGHT @@ -47,12 +47,12 @@ FindPathToPlayer: .playerIsLeftOfNPC ld d, NPC_MOVEMENT_LEFT .next1 - ld a, [hFindPathXProgress] + ldh a, [hFindPathXProgress] add 1 - ld [hFindPathXProgress], a + ldh [hFindPathXProgress], a jr .storeDirection .yDistanceGreater - ld a, [hNPCPlayerRelativePosFlags] + ldh a, [hNPCPlayerRelativePosFlags] bit 0, a jr nz, .playerIsAboveNPC ld d, NPC_MOVEMENT_DOWN @@ -60,15 +60,15 @@ FindPathToPlayer: .playerIsAboveNPC ld d, NPC_MOVEMENT_UP .next2 - ld a, [hFindPathYProgress] + ldh a, [hFindPathYProgress] add 1 - ld [hFindPathYProgress], a + ldh [hFindPathYProgress], a .storeDirection ld a, d ld [hli], a - ld a, [hFindPathNumSteps] + ldh a, [hFindPathNumSteps] inc a - ld [hFindPathNumSteps], a + ldh [hFindPathNumSteps], a jp .loop .done ld [hl], $ff @@ -76,13 +76,13 @@ FindPathToPlayer: CalcPositionOfPlayerRelativeToNPC: xor a - ld [hNPCPlayerRelativePosFlags], a + ldh [hNPCPlayerRelativePosFlags], a ld a, [wSpritePlayerStateData1YPixels] ld d, a ld a, [wSpritePlayerStateData1XPixels] ld e, a ld hl, wSpriteStateData1 - ld a, [hNPCSpriteOffset] + ldh a, [hNPCSpriteOffset] add l add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1 ld l, a @@ -115,7 +115,7 @@ CalcPositionOfPlayerRelativeToNPC: ld [hli], a call DivideBytes ; divide Y absolute distance by 16 ld a, [hl] ; quotient - ld [hNPCPlayerYDistance], a + ldh [hNPCPlayerYDistance], a pop hl inc hl ld b, e @@ -136,23 +136,23 @@ CalcPositionOfPlayerRelativeToNPC: res 1, [hl] pop hl .divideXDistance - ld [hDividend2], a + ldh [hDividend2], a ld a, 16 - ld [hDivisor2], a + ldh [hDivisor2], a call DivideBytes ; divide X absolute distance by 16 - ld a, [hQuotient2] - ld [hNPCPlayerXDistance], a - ld a, [hNPCPlayerRelativePosPerspective] + ldh a, [hQuotient2] + ldh [hNPCPlayerXDistance], a + ldh a, [hNPCPlayerRelativePosPerspective] and a ret z - ld a, [hNPCPlayerRelativePosFlags] + ldh a, [hNPCPlayerRelativePosFlags] cpl and $3 - ld [hNPCPlayerRelativePosFlags], a + ldh [hNPCPlayerRelativePosFlags], a ret ConvertNPCMovementDirectionsToJoypadMasks: - ld a, [hNPCMovementDirections2Index] + ldh a, [hNPCMovementDirections2Index] ld [wNPCMovementDirections2Index], a dec a ld de, wSimulatedJoypadStatesEnd @@ -166,9 +166,9 @@ ConvertNPCMovementDirectionsToJoypadMasks: call ConvertNPCMovementDirectionToJoypadMask ld [de], a inc de - ld a, [hNPCMovementDirections2Index] + ldh a, [hNPCMovementDirections2Index] dec a - ld [hNPCMovementDirections2Index], a + ldh [hNPCMovementDirections2Index], a jr nz, .loop ret diff --git a/engine/overworld/player_animations.asm b/engine/overworld/player_animations.asm index cfd6cc8d..fec10daf 100755 --- a/engine/overworld/player_animations.asm +++ b/engine/overworld/player_animations.asm @@ -516,9 +516,9 @@ _HandleMidJump:: call UpdateSprites call Delay3 xor a - ld [hJoyHeld], a - ld [hJoyPressed], a - ld [hJoyReleased], a + ldh [hJoyHeld], a + ldh [hJoyPressed], a + ldh [hJoyReleased], a ld [wPlayerJumpingYScreenCoordsIndex], a ld hl, wd736 res 6, [hl] ; not jumping down a ledge any more diff --git a/engine/overworld/player_state.asm b/engine/overworld/player_state.asm index 9ff67df8..f2e74683 100644 --- a/engine/overworld/player_state.asm +++ b/engine/overworld/player_state.asm @@ -17,7 +17,7 @@ IsPlayerStandingOnWarp:: ld a, [hli] ; target warp ld [wDestinationWarpID], a ld a, [hl] ; target map - ld [hWarpDestinationMap], a + ldh [hWarpDestinationMap], a ld hl, wd736 set 2, [hl] ; standing on warp flag ret @@ -297,7 +297,7 @@ _GetTileAndCoordsInFrontOfPlayer: GetTileTwoStepsInFrontOfPlayer: xor a - ld [hPlayerFacing], a + ldh [hPlayerFacing], a ld hl, wYCoord ld a, [hli] ld d, a @@ -378,33 +378,33 @@ CheckForBoulderCollisionWithSprites: ld hl, wSprite01StateData2MapY add hl, de ld a, [hli] ; map Y position - ld [hPlayerYCoord], a + ldh [hPlayerYCoord], a ld a, [hl] ; map X position - ld [hPlayerXCoord], a + ldh [hPlayerXCoord], a ld a, [wNumSprites] ld c, a ld de, $f ld hl, wSprite01StateData2MapY - ld a, [hPlayerFacing] + ldh a, [hPlayerFacing] and $3 ; facing up or down? jr z, .pushingHorizontallyLoop .pushingVerticallyLoop inc hl - ld a, [hPlayerXCoord] + ldh a, [hPlayerXCoord] cp [hl] jr nz, .nextSprite1 ; if X coordinates don't match dec hl ld a, [hli] ld b, a - ld a, [hPlayerFacing] + ldh a, [hPlayerFacing] rrca jr c, .pushingDown ; pushing up - ld a, [hPlayerYCoord] + ldh a, [hPlayerYCoord] dec a jr .compareYCoords .pushingDown - ld a, [hPlayerYCoord] + ldh a, [hPlayerYCoord] inc a .compareYCoords cp b @@ -417,19 +417,19 @@ CheckForBoulderCollisionWithSprites: .pushingHorizontallyLoop ld a, [hli] ld b, a - ld a, [hPlayerYCoord] + ldh a, [hPlayerYCoord] cp b jr nz, .nextSprite2 ld b, [hl] - ld a, [hPlayerFacing] + ldh a, [hPlayerFacing] bit 2, a jr nz, .pushingLeft ; pushing right - ld a, [hPlayerXCoord] + ldh a, [hPlayerXCoord] inc a jr .compareXCoords .pushingLeft - ld a, [hPlayerXCoord] + ldh a, [hPlayerXCoord] dec a .compareXCoords cp b diff --git a/engine/overworld/push_boulder.asm b/engine/overworld/push_boulder.asm index da1c6dee..fb4d06aa 100644 --- a/engine/overworld/push_boulder.asm +++ b/engine/overworld/push_boulder.asm @@ -6,15 +6,15 @@ TryPushingBoulder:: bit 1, a ; has boulder dust animation from previous push played yet? ret nz xor a - ld [hSpriteIndexOrTextID], a + ldh [hSpriteIndexOrTextID], a call IsSpriteInFrontOfPlayer - ld a, [hSpriteIndexOrTextID] + ldh a, [hSpriteIndexOrTextID] ld [wBoulderSpriteIndex], a and a jp z, ResetBoulderPushFlags ld hl, wSpritePlayerStateData1MovementStatus ld d, $0 - ld a, [hSpriteIndexOrTextID] + ldh a, [hSpriteIndexOrTextID] swap a ld e, a add hl, de @@ -27,14 +27,14 @@ TryPushingBoulder:: bit 6, [hl] set 6, [hl] ; indicate that the player has tried pushing ret z ; the player must try pushing twice before the boulder will move - ld a, [hJoyHeld] + ldh a, [hJoyHeld] and D_RIGHT | D_LEFT | D_UP | D_DOWN ret z predef CheckForCollisionWhenPushingBoulder ld a, [wTileInFrontOfBoulderAndBoulderCollisionResult] and a ; was there a collision? jp nz, ResetBoulderPushFlags - ld a, [hJoyHeld] + ldh a, [hJoyHeld] ld b, a ld a, [wSpritePlayerStateData1FacingDirection] cp SPRITE_FACING_UP @@ -92,7 +92,7 @@ DoBoulderDustAnimation:: call ResetBoulderPushFlags set 7, [hl] ld a, [wBoulderSpriteIndex] - ld [hSpriteIndex], a + ldh [hSpriteIndex], a call GetSpriteMovementByte2Pointer ld [hl], $10 ld a, SFX_CUT diff --git a/engine/overworld/special_warps.asm b/engine/overworld/special_warps.asm index 042146f9..54471ee0 100644 --- a/engine/overworld/special_warps.asm +++ b/engine/overworld/special_warps.asm @@ -34,7 +34,7 @@ LoadSpecialWarpData: cp TRADE_CENTER jr nz, .notTradeCenter ld hl, TradeCenterSpec1 - ld a, [hSerialConnectionStatus] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK ; which gameboy is clocking determines who is on the left and who is on the right jr z, .copyWarpData ld hl, TradeCenterSpec2 @@ -43,7 +43,7 @@ LoadSpecialWarpData: cp COLOSSEUM jr nz, .notColosseum ld hl, ColosseumSpec1 - ld a, [hSerialConnectionStatus] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK jr z, .copyWarpData ld hl, ColosseumSpec2 diff --git a/engine/overworld/sprite_collisions.asm b/engine/overworld/sprite_collisions.asm index 48cd95b9..e6c415ab 100644 --- a/engine/overworld/sprite_collisions.asm +++ b/engine/overworld/sprite_collisions.asm @@ -6,7 +6,7 @@ _UpdateSprites:: ld l, a sub wSpritePlayerStateData2ImageBaseOffset - wSpritePlayerStateData2 ld c, a - ld [hCurrentSpriteOffset], a + ldh [hCurrentSpriteOffset], a ld a, [hl] and a jr z, .skipSprite ; tests $c2Xe @@ -31,10 +31,10 @@ _UpdateSprites:: UpdateNonPlayerSprite: dec a swap a - ld [hTilePlayerStandingOn], a ; $10 * sprite# + ldh [hTilePlayerStandingOn], a ; $10 * sprite# ld a, [wNPCMovementScriptSpriteOffset] ; some sprite offset? ld b, a - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] cp b jr nz, .unequal jp DoScriptedNPCMovement @@ -54,7 +54,7 @@ DetectCollisionBetweenSprites: nop ld h, wSpriteStateData1 / $100 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add wSpriteStateData1 % $100 ld l, a @@ -79,7 +79,7 @@ DetectCollisionBetweenSprites: and $f0 or c - ld [hFF90], a ; store Y coordinate adjusted for direction of movement + ldh [hFF90], a ; store Y coordinate adjusted for direction of movement ld a, [hli] ; a = [$c1i5] (delta X) (-1, 0, or 1) call SetSpriteCollisionValues @@ -92,7 +92,7 @@ DetectCollisionBetweenSprites: and $f0 or c - ld [hFF91], a ; store X coordinate adjusted for direction of movement + ldh [hFF91], a ; store X coordinate adjusted for direction of movement ld a, l add 7 @@ -102,18 +102,18 @@ DetectCollisionBetweenSprites: ld [hld], a ; zero [$c1id] XXX what's [$c1id] for? ld [hld], a ; zero [$c1ic] (directions in which collisions occurred) - ld a, [hFF91] + ldh a, [hFF91] ld [hld], a ; [$c1ib] = adjusted X coordinate - ld a, [hFF90] + ldh a, [hFF90] ld [hl], a ; [$c1ia] = adjusted Y coordinate xor a ; zero the loop counter .loop - ld [hFF8F], a ; store loop counter + ldh [hFF8F], a ; store loop counter swap a ld e, a - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] cp e ; does the loop sprite match the current sprite? jp z, .next ; go to the next sprite if they match @@ -128,7 +128,7 @@ DetectCollisionBetweenSprites: inc a jp z, .next ; go the next sprite if offscreen - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add 10 ld l, a @@ -154,7 +154,7 @@ DetectCollisionBetweenSprites: cpl inc a .noCarry1 - ld [hFF90], a ; store the distance between the two sprites' adjusted Y values + ldh [hFF90], a ; store the distance between the two sprites' adjusted Y values ; Use the carry flag set by the above subtraction to determine which sprite's ; Y coordinate is larger. This information is used later to set [$c1ic], @@ -176,11 +176,11 @@ DetectCollisionBetweenSprites: ld b, 9 .next1 - ld a, [hFF90] ; a = distance between adjusted Y coordinates + ldh a, [hFF90] ; a = distance between adjusted Y coordinates sub b - ld [hFF92], a ; store distance adjusted using sprite i's direction + ldh [hFF92], a ; store distance adjusted using sprite i's direction ld a, b - ld [hFF90], a ; store 7 or 9 depending on sprite i's delta Y + ldh [hFF90], a ; store 7 or 9 depending on sprite i's delta Y jr c, .checkXDistance ; If sprite j's delta Y is 0, then b = 7, else b = 9. @@ -193,7 +193,7 @@ DetectCollisionBetweenSprites: ld b, 9 .next2 - ld a, [hFF92] ; a = distance adjusted using sprite i's direction + ldh a, [hFF92] ; a = distance adjusted using sprite i's direction sub b ; adjust distance using sprite j's direction jr z, .checkXDistance jr nc, .next ; go to next sprite if distance is still positive after both adjustments @@ -225,7 +225,7 @@ DetectCollisionBetweenSprites: cpl inc a .noCarry2 - ld [hFF91], a ; store the distance between the two sprites' adjusted X values + ldh [hFF91], a ; store the distance between the two sprites' adjusted X values ; Use the carry flag set by the above subtraction to determine which sprite's ; X coordinate is larger. This information is used later to set [$c1ic], @@ -247,11 +247,11 @@ DetectCollisionBetweenSprites: ld b, 9 .next3 - ld a, [hFF91] ; a = distance between adjusted X coordinates + ldh a, [hFF91] ; a = distance between adjusted X coordinates sub b - ld [hFF92], a ; store distance adjusted using sprite i's direction + ldh [hFF92], a ; store distance adjusted using sprite i's direction ld a, b - ld [hFF91], a ; store 7 or 9 depending on sprite i's delta X + ldh [hFF91], a ; store 7 or 9 depending on sprite i's delta X jr c, .collision ; If sprite j's delta X is 0, then b = 7, else b = 9. @@ -264,15 +264,15 @@ DetectCollisionBetweenSprites: ld b, 9 .next4 - ld a, [hFF92] ; a = distance adjusted using sprite i's direction + ldh a, [hFF92] ; a = distance adjusted using sprite i's direction sub b ; adjust distance using sprite j's direction jr z, .collision jr nc, .next ; go to next sprite if distance is still positive after both adjustments .collision - ld a, [hFF91] ; a = 7 or 9 depending on sprite i's delta X + ldh a, [hFF91] ; a = 7 or 9 depending on sprite i's delta X ld b, a - ld a, [hFF90] ; a = 7 or 9 depending on sprite i's delta Y + ldh a, [hFF90] ; a = 7 or 9 depending on sprite i's delta Y inc l ; If delta X isn't 0 and delta Y is 0, then b = %0011, else b = %1100. @@ -294,7 +294,7 @@ DetectCollisionBetweenSprites: ; set bit in [$c1ie] or [$c1if] to indicate which sprite the collision occurred with inc l inc l - ld a, [hFF8F] ; a = loop counter + ldh a, [hFF8F] ; a = loop counter ld de, SpriteCollisionBitTable add a add e @@ -311,7 +311,7 @@ DetectCollisionBetweenSprites: ld [hl], a .next - ld a, [hFF8F] ; a = loop counter + ldh a, [hFF8F] ; a = loop counter inc a cp $10 jp nz, .loop diff --git a/engine/overworld/tilesets.asm b/engine/overworld/tilesets.asm index 88147233..f40cbbc2 100644 --- a/engine/overworld/tilesets.asm +++ b/engine/overworld/tilesets.asm @@ -23,9 +23,9 @@ LoadTilesetHeader: dec c jr nz, .copyTilesetHeaderLoop ld a, [hl] - ld [hTilesetType], a + ldh [hTilesetType], a xor a - ld [hMovingBGTilesCounter1], a + ldh [hMovingBGTilesCounter1], a pop hl ld a, [wCurMapTileset] push hl @@ -38,7 +38,7 @@ LoadTilesetHeader: jr c, .asm_c797 ld a, [wCurMapTileset] ld b, a - ld a, [hPreviousTileset] + ldh a, [hPreviousTileset] cp b jr z, .done .asm_c797 diff --git a/engine/overworld/trainer_sight.asm b/engine/overworld/trainer_sight.asm index c12c064b..5046f5f6 100755 --- a/engine/overworld/trainer_sight.asm +++ b/engine/overworld/trainer_sight.asm @@ -2,26 +2,26 @@ _GetSpritePosition1:: ld hl, wSpriteStateData1 ld de, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1 ld a, [wSpriteIndex] - ld [hSpriteIndex], a + ldh [hSpriteIndex], a call GetSpriteDataPointer ld a, [hli] ; c1x4 (screen Y pos) - ld [hSpriteScreenYCoord], a + ldh [hSpriteScreenYCoord], a inc hl ld a, [hl] ; c1x6 (screen X pos) - ld [hSpriteScreenXCoord], a + ldh [hSpriteScreenXCoord], a ld de, wSpritePlayerStateData2MapY - wSpritePlayerStateData1XPixels add hl, de ld a, [hli] ; c2x4 (map Y pos) - ld [hSpriteMapYCoord], a + ldh [hSpriteMapYCoord], a ld a, [hl] ; c2x5 (map X pos) - ld [hSpriteMapXCoord], a + ldh [hSpriteMapXCoord], a ret _GetSpritePosition2:: ld hl, wSpriteStateData1 ld de, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1 ld a, [wSpriteIndex] - ld [hSpriteIndex], a + ldh [hSpriteIndex], a call GetSpriteDataPointer ld a, [hli] ; c1x4 (screen Y pos) ld [wSavedSpriteScreenY], a @@ -40,18 +40,18 @@ _SetSpritePosition1:: ld hl, wSpriteStateData1 ld de, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1 ld a, [wSpriteIndex] - ld [hSpriteIndex], a + ldh [hSpriteIndex], a call GetSpriteDataPointer - ld a, [hSpriteScreenYCoord] ; c1x4 (screen Y pos) + ldh a, [hSpriteScreenYCoord] ; c1x4 (screen Y pos) ld [hli], a inc hl - ld a, [hSpriteScreenXCoord] ; c1x6 (screen X pos) + ldh a, [hSpriteScreenXCoord] ; c1x6 (screen X pos) ld [hl], a ld de, wSpritePlayerStateData2MapY - wSpritePlayerStateData1XPixels add hl, de - ld a, [hSpriteMapYCoord] ; c2x4 (map Y pos) + ldh a, [hSpriteMapYCoord] ; c2x4 (map Y pos) ld [hli], a - ld a, [hSpriteMapXCoord] ; c2x5 (map X pos) + ldh a, [hSpriteMapXCoord] ; c2x5 (map X pos) ld [hl], a ret @@ -59,7 +59,7 @@ _SetSpritePosition2:: ld hl, wSpriteStateData1 ld de, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1 ld a, [wSpriteIndex] - ld [hSpriteIndex], a + ldh [hSpriteIndex], a call GetSpriteDataPointer ld a, [wSavedSpriteScreenY] ld [hli], a ; c1x4 (screen Y pos) @@ -144,7 +144,7 @@ TrainerWalkUpToPlayer:: call FillMemory ; write the necessary steps to reach player ld [hl], $ff ; write end of list sentinel ld a, [wSpriteIndex] - ld [hSpriteIndex], a + ldh [hSpriteIndex], a jp MoveSprite_ ; input: de = offset within sprite entry @@ -152,7 +152,7 @@ TrainerWalkUpToPlayer:: GetSpriteDataPointer: push de add hl, de - ld a, [hSpriteIndex] + ldh a, [hSpriteIndex] swap a ld d, $0 ld e, a diff --git a/engine/overworld/turn_sprite.asm b/engine/overworld/turn_sprite.asm index bef26537..4ff58239 100755 --- a/engine/overworld/turn_sprite.asm +++ b/engine/overworld/turn_sprite.asm @@ -1,12 +1,12 @@ UpdateSpriteFacingOffsetAndDelayMovement:: ld h, $c2 - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $8 ld l, a ld a, $7f ; maximum movement delay ld [hl], a ; c2x8 (movement delay) dec h - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $9 ld l, a ld a, [hld] ; c1x9 (facing direction) @@ -14,7 +14,7 @@ UpdateSpriteFacingOffsetAndDelayMovement:: xor a ld [hld], a ld [hl], a ; c1x8 (walk animation frame) - ld a, [hCurrentSpriteOffset] + ldh a, [hCurrentSpriteOffset] add $2 ld l, a ld a, [hl] ; c1x2 (facing and animation table offset) diff --git a/engine/overworld/update_map.asm b/engine/overworld/update_map.asm index 92ae2b10..53a5592d 100644 --- a/engine/overworld/update_map.asm +++ b/engine/overworld/update_map.asm @@ -50,13 +50,13 @@ RedrawMapView: ld a, [wIsInBattle] inc a ret z - ld a, [hAutoBGTransferEnabled] + ldh a, [hAutoBGTransferEnabled] push af - ld a, [hTilesetType] + ldh a, [hTilesetType] push af xor a - ld [hAutoBGTransferEnabled], a - ld [hTilesetType], a ; no flower/water BG tile animations + ldh [hAutoBGTransferEnabled], a + ldh [hTilesetType], a ; no flower/water BG tile animations call LoadCurrentMapView call RunDefaultPaletteCommand ld hl, wMapViewVRAMPointer @@ -73,7 +73,7 @@ RedrawMapView: ld a, h ld [wBuffer + 1], a ; this copy of the address is not used ld a, 2 - ld [hRedrawMapViewRowOffset], a + ldh [hRedrawMapViewRowOffset], a ld c, SCREEN_HEIGHT / 2 ; number of rows of 2x2 tiles (this covers the whole screen) .redrawRowLoop push bc @@ -81,7 +81,7 @@ RedrawMapView: push hl ld hl, wTileMap - 2 * SCREEN_WIDTH ld de, SCREEN_WIDTH - ld a, [hRedrawMapViewRowOffset] + ldh a, [hRedrawMapViewRowOffset] .calcWRAMAddrLoop add hl, de dec a @@ -89,7 +89,7 @@ RedrawMapView: call CopyToRedrawRowOrColumnSrcTiles pop hl ld de, BG_MAP_WIDTH - ld a, [hRedrawMapViewRowOffset] + ldh a, [hRedrawMapViewRowOffset] ld c, a .calcVRAMAddrLoop add hl, de @@ -98,11 +98,11 @@ RedrawMapView: or $98 dec c jr nz, .calcVRAMAddrLoop - ld [hRedrawRowOrColumnDest + 1], a + ldh [hRedrawRowOrColumnDest + 1], a ld a, l - ld [hRedrawRowOrColumnDest], a + ldh [hRedrawRowOrColumnDest], a ld a, REDRAW_ROW - ld [hRedrawRowOrColumnMode], a + ldh [hRedrawRowOrColumnMode], a call DelayFrame ld hl, hRedrawMapViewRowOffset inc [hl] @@ -112,9 +112,9 @@ RedrawMapView: dec c jr nz, .redrawRowLoop pop af - ld [hTilesetType], a + ldh [hTilesetType], a pop af - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ret CompareHLWithBC: diff --git a/engine/play_time.asm b/engine/play_time.asm index 504830cb..29897242 100755 --- a/engine/play_time.asm +++ b/engine/play_time.asm @@ -56,6 +56,6 @@ CountDownIgnoreInputBitReset: ld [wd730], a ret z xor a - ld [hJoyPressed], a - ld [hJoyHeld], a + ldh [hJoyPressed], a + ldh [hJoyHeld], a ret diff --git a/engine/pokemon/add_mon.asm b/engine/pokemon/add_mon.asm index 8d0a6495..eeef40b0 100644 --- a/engine/pokemon/add_mon.asm +++ b/engine/pokemon/add_mon.asm @@ -15,7 +15,7 @@ _AddPartyMon:: ret nc ; return if the party is already full ld [de], a ld a, [de] - ld [hNewPartyLength], a + ldh [hNewPartyLength], a add e ld e, a jr nc, .noCarry @@ -32,7 +32,7 @@ _AddPartyMon:: jr z, .next2 ld hl, wEnemyMonOT .next2 - ld a, [hNewPartyLength] + ldh a, [hNewPartyLength] dec a call SkipFixedLengthTextEntries ld d, h @@ -44,7 +44,7 @@ _AddPartyMon:: and a jr nz, .skipNaming ld hl, wPartyMonNicks - ld a, [hNewPartyLength] + ldh a, [hNewPartyLength] dec a call SkipFixedLengthTextEntries ld a, NAME_MON_SCREEN @@ -57,7 +57,7 @@ _AddPartyMon:: jr z, .next3 ld hl, wEnemyMons .next3 - ld a, [hNewPartyLength] + ldh a, [hNewPartyLength] dec a ld bc, wPartyMon2 - wPartyMon1 call AddNTimes @@ -129,10 +129,10 @@ _AddPartyMon:: xor a ld b, a call CalcStat ; calc HP stat (set cur Hp to max HP) - ld a, [hMultiplicand+1] + ldh a, [hMultiplicand+1] ld [de], a inc de - ld a, [hMultiplicand+2] + ldh a, [hMultiplicand+2] ld [de], a inc de xor a @@ -204,13 +204,13 @@ _AddPartyMon:: callab CalcExperience pop de inc de - ld a, [hExperience] ; write experience + ldh a, [hExperience] ; write experience ld [de], a inc de - ld a, [hExperience + 1] + ldh a, [hExperience + 1] ld [de], a inc de - ld a, [hExperience + 2] + ldh a, [hExperience + 2] ld [de], a xor a ld b, NUM_STATS * 2 diff --git a/engine/pokemon/bills_pc.asm b/engine/pokemon/bills_pc.asm index 7877ada1..80739de4 100644 --- a/engine/pokemon/bills_pc.asm +++ b/engine/pokemon/bills_pc.asm @@ -1,6 +1,6 @@ DisplayPCMainMenu:: xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call SaveScreenTilesToBuffer2 ld a, [wNumHoFTeams] and a @@ -82,7 +82,7 @@ DisplayPCMainMenu:: ld [wCurrentMenuItem], a ld [wLastMenuItem], a ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ret SomeonesPCText: db "SOMEONE's PC@" @@ -168,7 +168,7 @@ BillsPCMenu: ld de, BoxNoPCText call PlaceString ld a, 1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 call HandleMenuInput bit 1, a @@ -501,7 +501,7 @@ MonWasReleasedText: text_end CableClubLeftGameboy:: - ld a, [hSerialConnectionStatus] + ldh a, [hSerialConnectionStatus] cp USING_EXTERNAL_CLOCK ret z ld a, [wSpritePlayerStateData1FacingDirection] @@ -518,7 +518,7 @@ CableClubLeftGameboy:: tx_pre_jump JustAMomentText CableClubRightGameboy:: - ld a, [hSerialConnectionStatus] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK ret z ld a, [wSpritePlayerStateData1FacingDirection] diff --git a/engine/pokemon/evos_moves.asm b/engine/pokemon/evos_moves.asm index 469d689a..c54bf7c7 100755 --- a/engine/pokemon/evos_moves.asm +++ b/engine/pokemon/evos_moves.asm @@ -11,7 +11,7 @@ TryEvolvingMon: ; this is only called after battle ; it is supposed to do level up evolutions, though there is a bug that allows item evolutions to occur EvolutionAfterBattle: - ld a, [hTilesetType] + ldh a, [hTilesetType] push af xor a ld [wEvolutionOccurred], a @@ -120,12 +120,12 @@ Evolution_PartyMonLoop: ; loop over party mons ld c, 50 call DelayFrames xor a - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a coord hl, 0, 0 lb bc, 12, 20 call ClearScreenArea ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a ld a, $ff ld [wUpdateSpritesEnabled], a call ClearSprites @@ -245,7 +245,7 @@ Evolution_PartyMonLoop: ; loop over party mons pop bc pop hl pop af - ld [hTilesetType], a + ldh [hTilesetType], a ld a, [wLinkState] cp LINK_STATE_TRADING ret z diff --git a/engine/pokemon/experience.asm b/engine/pokemon/experience.asm index 76e6b88b..427d2a7f 100755 --- a/engine/pokemon/experience.asm +++ b/engine/pokemon/experience.asm @@ -10,15 +10,15 @@ CalcLevelFromExperience:: push hl ld hl, wLoadedMonExp + 2 ; current exp ; compare exp needed for level d with current exp - ld a, [hExperience + 2] + ldh a, [hExperience + 2] ld c, a ld a, [hld] sub c - ld a, [hExperience + 1] + ldh a, [hExperience + 1] ld c, a ld a, [hld] sbc c - ld a, [hExperience] + ldh a, [hExperience] ld c, a ld a, [hl] sbc c @@ -38,56 +38,56 @@ CalcExperience:: add hl, bc call CalcDSquared ld a, d - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ld a, [hl] and $f0 swap a - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ld a, [hli] and $f - ld [hDivisor], a + ldh [hDivisor], a ld b, $4 call Divide - ld a, [hQuotient + 1] + ldh a, [hQuotient + 1] push af - ld a, [hQuotient + 2] + ldh a, [hQuotient + 2] push af - ld a, [hQuotient + 3] + ldh a, [hQuotient + 3] push af call CalcDSquared ld a, [hl] and $7f - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply - ld a, [hProduct + 1] + ldh a, [hProduct + 1] push af - ld a, [hProduct + 2] + ldh a, [hProduct + 2] push af - ld a, [hProduct + 3] + ldh a, [hProduct + 3] push af ld a, [hli] push af xor a - ld [hMultiplicand], a - ld [hMultiplicand + 1], a + ldh [hMultiplicand], a + ldh [hMultiplicand + 1], a ld a, d - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a ld a, [hli] - ld [hMultiplier], a + ldh [hMultiplier], a call Multiply ld b, [hl] - ld a, [hProduct + 3] + ldh a, [hProduct + 3] sub b - ld [hProduct + 3], a + ldh [hProduct + 3], a ld b, $0 - ld a, [hProduct + 2] + ldh a, [hProduct + 2] sbc b - ld [hProduct + 2], a - ld a, [hProduct + 1] + ldh [hProduct + 2], a + ldh a, [hProduct + 1] sbc b - ld [hProduct + 1], a + ldh [hProduct + 1], a ; The difference of the linear term and the constant term consists of 3 bytes ; starting at hProduct + 1. Below, hExperience (an alias of that address) will ; be used instead for the further work of adding or subtracting the squared @@ -96,54 +96,54 @@ CalcExperience:: and $80 jr nz, .subtractSquaredTerm ; check sign pop bc - ld a, [hExperience + 2] + ldh a, [hExperience + 2] add b - ld [hExperience + 2], a + ldh [hExperience + 2], a pop bc - ld a, [hExperience + 1] + ldh a, [hExperience + 1] adc b - ld [hExperience + 1], a + ldh [hExperience + 1], a pop bc - ld a, [hExperience] + ldh a, [hExperience] adc b - ld [hExperience], a + ldh [hExperience], a jr .addCubedTerm .subtractSquaredTerm pop bc - ld a, [hExperience + 2] + ldh a, [hExperience + 2] sub b - ld [hExperience + 2], a + ldh [hExperience + 2], a pop bc - ld a, [hExperience + 1] + ldh a, [hExperience + 1] sbc b - ld [hExperience + 1], a + ldh [hExperience + 1], a pop bc - ld a, [hExperience] + ldh a, [hExperience] sbc b - ld [hExperience], a + ldh [hExperience], a .addCubedTerm pop bc - ld a, [hExperience + 2] + ldh a, [hExperience + 2] add b - ld [hExperience + 2], a + ldh [hExperience + 2], a pop bc - ld a, [hExperience + 1] + ldh a, [hExperience + 1] adc b - ld [hExperience + 1], a + ldh [hExperience + 1], a pop bc - ld a, [hExperience] + ldh a, [hExperience] adc b - ld [hExperience], a + ldh [hExperience], a ret ; calculates d*d CalcDSquared: xor a - ld [hMultiplicand], a - ld [hMultiplicand + 1], a + ldh [hMultiplicand], a + ldh [hMultiplicand + 1], a ld a, d - ld [hMultiplicand + 2], a - ld [hMultiplier], a + ldh [hMultiplicand + 2], a + ldh [hMultiplier], a jp Multiply INCLUDE "data/growth_rates.asm" diff --git a/engine/pokemon/learn_move.asm b/engine/pokemon/learn_move.asm index e1b1a4c7..510300cd 100755 --- a/engine/pokemon/learn_move.asm +++ b/engine/pokemon/learn_move.asm @@ -126,13 +126,13 @@ TryingToLearn: call TextBoxBorder coord hl, 6, 8 ld de, wMovesString - ld a, [hFlagsFFF6] + ldh a, [hFlagsFFF6] set 2, a - ld [hFlagsFFF6], a + ldh [hFlagsFFF6], a call PlaceString - ld a, [hFlagsFFF6] + ldh a, [hFlagsFFF6] res 2, a - ld [hFlagsFFF6], a + ldh [hFlagsFFF6], a ld hl, wTopMenuItemY ld a, 8 ld [hli], a ; wTopMenuItemY diff --git a/engine/pokemon/status_screen.asm b/engine/pokemon/status_screen.asm index 35cc9502..e46adae4 100755 --- a/engine/pokemon/status_screen.asm +++ b/engine/pokemon/status_screen.asm @@ -40,7 +40,7 @@ DrawHP_: push hl call DrawHPBar pop hl - ld a, [hFlagsFFF6] + ldh a, [hFlagsFFF6] bit 0, a jr z, .printFractionBelowBar ld bc, $9 ; right of bar @@ -80,7 +80,7 @@ StatusScreen: ld hl, wd72c set 1, [hl] ld a, $33 - ld [rNR50], a ; Reduce the volume + ldh [rNR50], a ; Reduce the volume call GBPalWhiteOutWithDelay3 call ClearScreen call UpdateSprites @@ -101,10 +101,10 @@ StatusScreen: ld hl, vChars2 + $720 lb bc, BANK(PTile), (PTileEnd - PTile) / $8 call CopyVideoDataDouble ; P (for PP), inline - ld a, [hTilesetType] + ldh a, [hTilesetType] push af xor a - ld [hTilesetType], a + ldh [hTilesetType], a coord hl, 19, 1 lb bc, 6, 10 call DrawLineBox ; Draws the box around name, HP and status @@ -174,7 +174,7 @@ StatusScreen: call PlayCry ; play Pokémon cry call WaitForTextScrollButtonPress ; wait for button pop af - ld [hTilesetType], a + ldh [hTilesetType], a ret .GetStringPointer @@ -298,11 +298,11 @@ StatsText: next "SPECIAL@" StatusScreen2: - ld a, [hTilesetType] + ldh a, [hTilesetType] push af xor a - ld [hTilesetType], a - ld [hAutoBGTransferEnabled], a + ldh [hTilesetType], a + ldh [hAutoBGTransferEnabled], a ld bc, NUM_MOVES + 1 ld hl, wMoves call FillMemory @@ -427,15 +427,15 @@ StatusScreen2: coord hl, 9, 1 call PlaceString ld a, $1 - ld [hAutoBGTransferEnabled], a + ldh [hAutoBGTransferEnabled], a call Delay3 call WaitForTextScrollButtonPress ; wait for button pop af - ld [hTilesetType], a + ldh [hTilesetType], a ld hl, wd72c res 1, [hl] ld a, $77 - ld [rNR50], a + ldh [rNR50], a call GBPalWhiteOut jp ClearScreen @@ -447,13 +447,13 @@ CalcExpToLevelUp: ld d, a callab CalcExperience ld hl, wLoadedMonExp + 2 - ld a, [hExperience + 2] + ldh a, [hExperience + 2] sub [hl] ld [hld], a - ld a, [hExperience + 1] + ldh a, [hExperience + 1] sbc [hl] ld [hld], a - ld a, [hExperience] + ldh a, [hExperience] sbc [hl] ld [hld], a ret diff --git a/engine/slots/game_corner_slots.asm b/engine/slots/game_corner_slots.asm index 84f3efdc..797c381c 100755 --- a/engine/slots/game_corner_slots.asm +++ b/engine/slots/game_corner_slots.asm @@ -22,7 +22,7 @@ StartSlotMachine: ld a, 250 .next ld [wSlotMachineSevenAndBarModeChance], a - ld a, [hLoadedROMBank] + ldh a, [hLoadedROMBank] ld [wSlotMachineSavedROMBank], a call PromptUserToPlaySlots ret diff --git a/engine/slots/slot_machine.asm b/engine/slots/slot_machine.asm index 3802cdd5..b6eda6d1 100755 --- a/engine/slots/slot_machine.asm +++ b/engine/slots/slot_machine.asm @@ -25,7 +25,7 @@ PromptUserToPlaySlots: call RunPaletteCommand call GBPalNormal ld a, $e4 - ld [rOBP0], a + ldh [rOBP0], a ld hl, wd730 set 6, [hl] xor a @@ -454,9 +454,9 @@ SlotMachine_CheckForMatches: jp hl .flashScreenLoop - ld a, [rBGP] + ldh a, [rBGP] xor $40 - ld [rBGP], a + ldh [rBGP], a ld c, 5 call DelayFrames dec b @@ -472,7 +472,7 @@ SlotMachine_CheckForMatches: call SlotMachine_PayCoinsToPlayer call SlotMachine_PrintPayoutCoins ld a, $e4 - ld [rOBP0], a + ldh [rOBP0], a jp .done SymbolLinedUpSlotMachineText: @@ -695,9 +695,9 @@ SlotMachine_PayCoinsToPlayer: ld a, [wAnimCounter] dec a jr nz, .skip1 - ld a, [rOBP0] + ldh a, [rOBP0] xor $40 ; make the slot wheel symbols flash - ld [rOBP0], a + ldh [rOBP0], a ld a, 5 .skip1 ld [wAnimCounter], a @@ -825,7 +825,7 @@ SlotMachine_AnimWheel: SlotMachine_HandleInputWhileWheelsSpin: call DelayFrame call JoypadLowSensitivity - ld a, [hJoy5] + ldh a, [hJoy5] and A_BUTTON ret z ld hl, wStoppingWhichSlotMachineWheel |