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 | 
