diff options
Diffstat (limited to 'engine/battle')
34 files changed, 828 insertions, 810 deletions
diff --git a/engine/battle/animations.asm b/engine/battle/animations.asm index 424190d3..31b490f3 100755 --- a/engine/battle/animations.asm +++ b/engine/battle/animations.asm @@ -4,18 +4,18 @@ DrawFrameBlock: ; 78000 (1e:4000) ld l,c ld h,b ld a,[hli] - ld [W_NUMFBTILES],a - ld a,[W_FBDESTADDR + 1] + ld [wNumFBTiles],a + ld a,[wFBDestAddr + 1] ld e,a - ld a,[W_FBDESTADDR] + ld a,[wFBDestAddr] ld d,a xor a - ld [W_FBTILECOUNTER],a ; loop counter + ld [wFBTileCounter],a ; loop counter .loop - ld a,[W_FBTILECOUNTER] + ld a,[wFBTileCounter] inc a - ld [W_FBTILECOUNTER],a - ld a,[W_SUBANIMTRANSFORM] + ld [wFBTileCounter],a + ld a,[wSubAnimTransform] dec a jr z,.flipHorizontalAndVertical ; 1 dec a @@ -23,15 +23,15 @@ DrawFrameBlock: ; 78000 (1e:4000) dec a jr z,.flipBaseCoords ; 3 .noTransformation - ld a,[W_BASECOORDY] + ld a,[wBaseCoordY] add [hl] ld [de],a ; store Y inc hl inc de - ld a,[W_BASECOORDX] + ld a,[wBaseCoordX] jr .finishCopying .flipBaseCoords - ld a,[W_BASECOORDY] + ld a,[wBaseCoordY] ld b,a ld a,136 sub b ; flip Y base coordinate @@ -39,11 +39,11 @@ DrawFrameBlock: ; 78000 (1e:4000) ld [de],a ; store Y inc hl inc de - ld a,[W_BASECOORDX] + ld a,[wBaseCoordX] ld b,a ld a,168 sub b ; flip X base coordinate -.finishCopying ; finish copying values to OAM (when [W_SUBANIMTRANSFORM] not 1 or 2) +.finishCopying ; finish copying values to OAM (when [wSubAnimTransform] not 1 or 2) add [hl] ; X offset ld [de],a ; store X inc hl @@ -57,7 +57,7 @@ DrawFrameBlock: ; 78000 (1e:4000) inc de jp .nextTile .flipHorizontalAndVertical - ld a,[W_BASECOORDY] + ld a,[wBaseCoordY] add [hl] ; Y offset ld b,a ld a,136 @@ -65,7 +65,7 @@ DrawFrameBlock: ; 78000 (1e:4000) ld [de],a ; store Y inc hl inc de - ld a,[W_BASECOORDX] + ld a,[wBaseCoordX] add [hl] ; X offset ld b,a ld a,168 @@ -95,13 +95,13 @@ DrawFrameBlock: ; 78000 (1e:4000) inc de jp .nextTile .flipHorizontalTranslateDown - ld a,[W_BASECOORDY] + ld a,[wBaseCoordY] add [hl] add a,40 ; translate Y coordinate downwards ld [de],a ; store Y inc hl inc de - ld a,[W_BASECOORDX] + ld a,[wBaseCoordX] add [hl] ld b,a ld a,168 @@ -125,47 +125,47 @@ DrawFrameBlock: ; 78000 (1e:4000) ld [de],a inc de .nextTile - ld a,[W_FBTILECOUNTER] + ld a,[wFBTileCounter] ld c,a - ld a,[W_NUMFBTILES] + ld a,[wNumFBTiles] cp c jp nz,.loop ; go back up if there are more tiles to draw .afterDrawingTiles - ld a,[W_FBMODE] + ld a,[wFBMode] cp a,2 jr z,.advanceFrameBlockDestAddr; skip delay and don't clean OAM buffer - ld a,[W_SUBANIMFRAMEDELAY] + ld a,[wSubAnimFrameDelay] ld c,a call DelayFrames - ld a,[W_FBMODE] + ld a,[wFBMode] cp a,3 jr z,.advanceFrameBlockDestAddr ; skip cleaning OAM buffer cp a,4 jr z,.done ; skip cleaning OAM buffer and don't advance the frame block destination address - ld a,[W_ANIMATIONID] + ld a,[wAnimationID] cp a,GROWL jr z,.resetFrameBlockDestAddr call AnimationCleanOAM .resetFrameBlockDestAddr ld hl,wOAMBuffer ; OAM buffer ld a,l - ld [W_FBDESTADDR + 1],a + ld [wFBDestAddr + 1],a ld a,h - ld [W_FBDESTADDR],a ; set destination address to beginning of OAM buffer + ld [wFBDestAddr],a ; set destination address to beginning of OAM buffer ret .advanceFrameBlockDestAddr ld a,e - ld [W_FBDESTADDR + 1],a + ld [wFBDestAddr + 1],a ld a,d - ld [W_FBDESTADDR],a + ld [wFBDestAddr],a .done ret PlayAnimation: ; 780f1 (1e:40f1) xor a ld [$FF8B],a ; it looks like nothing reads this - ld [W_SUBANIMTRANSFORM],a - ld a,[W_ANIMATIONID] ; get animation number + ld [wSubAnimTransform],a + ld a,[wAnimationID] ; get animation number dec a ld l,a ld h,0 @@ -217,7 +217,7 @@ PlayAnimation: ; 780f1 (1e:40f1) .playSubanimation ld c,a and a,%00111111 - ld [W_SUBANIMFRAMEDELAY],a + ld [wSubAnimFrameDelay],a xor a sla c rla @@ -235,9 +235,9 @@ PlayAnimation: ; 780f1 (1e:40f1) ld de,SubanimationPointers add hl,de ld a,l - ld [W_SUBANIMADDRPTR],a + ld [wSubAnimAddrPtr],a ld a,h - ld [W_SUBANIMADDRPTR + 1],a + ld [wSubAnimAddrPtr + 1],a ld l,c ld h,b push hl @@ -257,9 +257,9 @@ PlayAnimation: ; 780f1 (1e:40f1) ret LoadSubanimation: ; 7817c (1e:417c) - ld a,[W_SUBANIMADDRPTR + 1] + ld a,[wSubAnimAddrPtr + 1] ld h,a - ld a,[W_SUBANIMADDRPTR] + ld a,[wSubAnimAddrPtr] ld l,a ld a,[hli] ld e,a @@ -268,7 +268,7 @@ LoadSubanimation: ; 7817c (1e:417c) ld a,[de] ld b,a and a,31 - ld [W_SUBANIMCOUNTER],a ; number of frame blocks + ld [wSubAnimCounter],a ; number of frame blocks ld a,b and a,%11100000 cp a,5 << 5 ; is subanimation type 5? @@ -282,12 +282,12 @@ LoadSubanimation: ; 7817c (1e:417c) ; place the upper 3 bits of a into bits 0-2 of a before storing srl a swap a - ld [W_SUBANIMTRANSFORM],a + ld [wSubAnimTransform],a cp a,4 ; is the animation reversed? ld hl,0 jr nz,.storeSubentryAddr ; if the animation is reversed, then place the initial subentry address at the end of the list of subentries - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] dec a ld bc,3 .loop @@ -298,9 +298,9 @@ LoadSubanimation: ; 7817c (1e:417c) inc de add hl,de ld a,l - ld [W_SUBANIMSUBENTRYADDR],a + ld [wSubAnimSubEntryAddr],a ld a,h - ld [W_SUBANIMSUBENTRYADDR + 1],a + ld [wSubAnimSubEntryAddr + 1],a ret ; called if the subanimation type is not 5 @@ -384,7 +384,7 @@ MoveAnimation: ; 78d5e (1e:4d5e) push af call WaitForSoundToFinish call SetAnimationPalette - ld a,[W_ANIMATIONID] + ld a,[wAnimationID] and a jr z,.AnimationFinished @@ -397,7 +397,7 @@ MoveAnimation: ; 78d5e (1e:4d5e) .MoveAnimation ; check if battle animations are disabled in the options - ld a,[W_OPTIONS] + ld a,[wOptions] bit 7,a jr nz,.AnimationsDisabled call ShareMoveAnimations @@ -411,9 +411,9 @@ MoveAnimation: ; 78d5e (1e:4d5e) .AnimationFinished call WaitForSoundToFinish xor a - ld [W_SUBANIMSUBENTRYADDR],a + ld [wSubAnimSubEntryAddr],a ld [wUnusedD09B],a - ld [W_SUBANIMTRANSFORM],a + ld [wSubAnimTransform],a dec a ld [wAnimSoundID],a pop af @@ -430,7 +430,7 @@ ShareMoveAnimations: ; 78da6 (1e:4da6) ; opponent’s turn - ld a,[W_ANIMATIONID] + ld a,[wAnimationID] cp a,AMNESIA ld b,CONF_ANIM @@ -442,7 +442,7 @@ ShareMoveAnimations: ; 78da6 (1e:4da6) .Replace ld a,b - ld [W_ANIMATIONID],a + ld [wAnimationID],a ret PlayApplyingAttackAnimation: ; 78dbd (1e:4dbd) @@ -529,7 +529,7 @@ SetAnimationPalette: ; 78e23 (1e:4e23) ld a, $f0 ld [wAnimPalette], a ld b, $e4 - ld a, [W_ANIMATIONID] + ld a, [wAnimationID] cp TRADE_BALL_DROP_ANIM jr c, .next cp TRADE_BALL_POOF_ANIM + 1 @@ -558,12 +558,12 @@ PlaySubanimation: ; 78e53 (1e:4e53) .skipPlayingSound ld hl,wOAMBuffer ; base address of OAM buffer ld a,l - ld [W_FBDESTADDR + 1],a + ld [wFBDestAddr + 1],a ld a,h - ld [W_FBDESTADDR],a - ld a,[W_SUBANIMSUBENTRYADDR + 1] + ld [wFBDestAddr],a + ld a,[wSubAnimSubEntryAddr + 1] ld h,a - ld a,[W_SUBANIMSUBENTRYADDR] + ld a,[wSubAnimSubEntryAddr] ld l,a .loop push hl @@ -585,24 +585,24 @@ PlaySubanimation: ; 78e53 (1e:4e53) add hl,de add hl,de ld a,[hli] - ld [W_BASECOORDY],a + ld [wBaseCoordY],a ld a,[hl] - ld [W_BASECOORDX],a + ld [wBaseCoordX],a pop hl inc hl ld a,[hl] ; frame block mode - ld [W_FBMODE],a + ld [wFBMode],a call DrawFrameBlock call DoSpecialEffectByAnimationId ; run animation-specific function (if there is one) - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] dec a - ld [W_SUBANIMCOUNTER],a + ld [wSubAnimCounter],a ret z - ld a,[W_SUBANIMSUBENTRYADDR + 1] + ld a,[wSubAnimSubEntryAddr + 1] ld h,a - ld a,[W_SUBANIMSUBENTRYADDR] + ld a,[wSubAnimSubEntryAddr] ld l,a - ld a,[W_SUBANIMTRANSFORM] + ld a,[wSubAnimTransform] cp a,4 ; is the animation reversed? ld bc,3 jr nz,.nextSubanimationSubentry @@ -610,9 +610,9 @@ PlaySubanimation: ; 78e53 (1e:4e53) .nextSubanimationSubentry add hl,bc ld a,h - ld [W_SUBANIMSUBENTRYADDR + 1],a + ld [wSubAnimSubEntryAddr + 1],a ld a,l - ld [W_SUBANIMSUBENTRYADDR],a + ld [wSubAnimSubEntryAddr],a jp .loop AnimationCleanOAM: ; 78ec8 (1e:4ec8) @@ -634,7 +634,7 @@ DoSpecialEffectByAnimationId: ; 78ed7 (1e:4ed7) push hl push de push bc - ld a,[W_ANIMATIONID] + ld a,[wAnimationID] ld hl,AnimationIdSpecialEffects ld de,3 call IsInArray @@ -737,21 +737,21 @@ DoBallTossSpecialEffects: ; 78f3e (1e:4f3e) xor a,%00111100 ; complement colors 1 and 2 ld [rOBP0],a .skipFlashingEffect - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] cp a,11 ; is it the beginning of the subanimation? jr nz,.skipPlayingSound ; if it is the beginning of the subanimation, play a sound ld a,SFX_BALL_TOSS call PlaySound .skipPlayingSound - ld a,[W_ISINBATTLE] + ld a,[wIsInBattle] cp a,02 ; is it a trainer battle? jr z,.isTrainerBattle ld a,[wd11e] cp a,$10 ; is the enemy pokemon the Ghost Marowak? ret nz ; if the enemy pokemon is the Ghost Marowak, make it dodge during the last 3 frames - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] cp a,3 jr z,.moveGhostMarowakLeft cp a,2 @@ -772,18 +772,18 @@ DoBallTossSpecialEffects: ; 78f3e (1e:4f3e) dec b jr nz,.loop ld a,%00001000 - ld [$ff10],a ; Channel 1 sweep register + ld [rNR10],a ; Channel 1 sweep register ret .isTrainerBattle ; if it's a trainer battle, shorten the animation by one frame - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] cp a,3 ret nz dec a - ld [W_SUBANIMCOUNTER],a + ld [wSubAnimCounter],a ret DoBallShakeSpecialEffects: ; 78f96 (1e:4f96) - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] cp a,4 ; is it the beginning of a shake? jr nz,.skipPlayingSound ; if it is the beginning of a shake, play a sound and wait 2/3 of a second @@ -792,7 +792,7 @@ DoBallShakeSpecialEffects: ; 78f96 (1e:4f96) ld c,40 call DelayFrames .skipPlayingSound - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] dec a ret nz ; if it's the end of the ball shaking subanimation, check if more shakes are left and restart the subanimation @@ -801,30 +801,30 @@ DoBallShakeSpecialEffects: ; 78f96 (1e:4f96) ld [wNumShakes],a ret z ; if there are shakes left, restart the subanimation - ld a,[W_SUBANIMSUBENTRYADDR] + ld a,[wSubAnimSubEntryAddr] ld l,a - ld a,[W_SUBANIMSUBENTRYADDR + 1] + ld a,[wSubAnimSubEntryAddr + 1] ld h,a ld de,-(4 * 3) ; 4 subentries and 3 bytes per subentry add hl,de ld a,l - ld [W_SUBANIMSUBENTRYADDR],a + ld [wSubAnimSubEntryAddr],a ld a,h - ld [W_SUBANIMSUBENTRYADDR + 1],a + ld [wSubAnimSubEntryAddr + 1],a ld a,5 ; number of subentries in the ball shaking subanimation plus one - ld [W_SUBANIMCOUNTER],a + ld [wSubAnimCounter],a ret ; plays a sound after the second frame of the poof animation DoPoofSpecialEffects: ; 78fce (1e:4fce) - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] cp a,5 ret nz ld a,SFX_BALL_POOF jp PlaySound DoRockSlideSpecialEffects: ; 78fd9 (1e:4fd9) - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] cp a,12 ret nc cp a,8 @@ -840,21 +840,21 @@ DoRockSlideSpecialEffects: ; 78fd9 (1e:4fd9) predef_jump PredefShakeScreenVertically ; shake vertically FlashScreenEveryEightFrameBlocks: ; 78ff7 (1e:4ff7) - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] and a,7 ; is the subanimation counter exactly 8? call z,AnimationFlashScreen ; if so, flash the screen ret ; flashes the screen if the subanimation counter is divisible by 4 FlashScreenEveryFourFrameBlocks: ; 79000 (1e:5000) - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] and a,3 call z,AnimationFlashScreen ret ; used for Explosion and Selfdestruct DoExplodeSpecialEffects: ; 79009 (1e:5009) - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] cp a,1 ; is it the end of the subanimation? jr nz,FlashScreenEveryFourFrameBlocks ; if it's the end of the subanimation, make the attacking pokemon disappear @@ -863,7 +863,7 @@ DoExplodeSpecialEffects: ; 79009 (1e:5009) ; flashes the screen when subanimation counter is 1 modulo 4 DoBlizzardSpecialEffects: ; 79016 (1e:5016) - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] cp a,13 jp z,AnimationFlashScreen cp a,9 @@ -877,7 +877,7 @@ DoBlizzardSpecialEffects: ; 79016 (1e:5016) ; flashes the screen at 3 points in the subanimation ; unused FlashScreenUnused: ; 7902e (1e:502e) - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] cp a,14 jp z,AnimationFlashScreen cp a,9 @@ -888,7 +888,7 @@ FlashScreenUnused: ; 7902e (1e:502e) ; function to make the pokemon disappear at the beginning of the animation TradeHidePokemon: ; 79041 (1e:5041) - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] cp a,6 ret nz ld a,2 * SCREEN_WIDTH + 7 @@ -896,7 +896,7 @@ TradeHidePokemon: ; 79041 (1e:5041) ; function to make a shaking pokeball jump up at the end of the animation TradeShakePokeball: ; 7904c (1e:504c) - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] cp a,1 ret nz ; if it's the end of the animation, make the ball jump up @@ -976,7 +976,7 @@ DoGrowlSpecialEffects: ; 790bc (1e:50bc) ld de,wOAMBuffer + $10 ld bc,$10 call CopyData ; copy the musical note graphic - ld a,[W_SUBANIMCOUNTER] + ld a,[wSubAnimCounter] dec a call z,AnimationCleanOAM ; clean up at the end of the subanimation ret @@ -984,7 +984,7 @@ DoGrowlSpecialEffects: ; 790bc (1e:50bc) ; this is associated with Tail Whip, but Tail Whip doesn't use any subanimations TailWhipAnimationUnused: ; 790d0 (1e:50d0) ld a,1 - ld [W_SUBANIMCOUNTER],a + ld [wSubAnimCounter],a ld c,20 jp DelayFrames @@ -1243,17 +1243,17 @@ AnimationWaterDropletsEverywhere: ; 79215 (1e:5215) call LoadAnimationTileset ld d, 32 ld a, -16 - ld [W_BASECOORDX], a + ld [wBaseCoordX], a ld a, $71 ld [wDropletTile], a .loop ld a, 16 - ld [W_BASECOORDY], a + ld [wBaseCoordY], a ld a, 0 ld [wUnusedD08A], a call _AnimationWaterDroplets ld a, 24 - ld [W_BASECOORDY], a + ld [wBaseCoordY], a ld a, 32 ld [wUnusedD08A], a call _AnimationWaterDroplets @@ -1264,24 +1264,24 @@ AnimationWaterDropletsEverywhere: ; 79215 (1e:5215) _AnimationWaterDroplets: ; 79246 (1e:5246) ld hl, wOAMBuffer .loop - ld a, [W_BASECOORDY] + ld a, [wBaseCoordY] ld [hli], a ; Y - ld a, [W_BASECOORDX] + ld a, [wBaseCoordX] add 27 - ld [W_BASECOORDX], a + ld [wBaseCoordX], a ld [hli], a ; X ld a, [wDropletTile] ld [hli], a ; tile xor a ld [hli], a ; attribute - ld a, [W_BASECOORDX] + ld a, [wBaseCoordX] cp 144 jr c, .loop sub 168 - ld [W_BASECOORDX], a - ld a, [W_BASECOORDY] + ld [wBaseCoordX], a + ld a, [wBaseCoordY] add 16 - ld [W_BASECOORDY], a + ld [wBaseCoordY], a cp 112 jr c, .loop call AnimationCleanOAM @@ -1387,14 +1387,14 @@ ShakeEnemyHUD_WritePlayerMonPicOAM: ; 792fd (1e:52fd) ; Writes the OAM entries for a copy of the player mon's pic in OAM. ; The top 5 rows are reproduced in OAM, although only 2 are actually needed. ld a, $10 - ld [W_BASECOORDX], a + ld [wBaseCoordX], a ld a, $30 - ld [W_BASECOORDY], a + ld [wBaseCoordY], a ld hl, wOAMBuffer ld d, 0 ld c, 7 .loop - ld a, [W_BASECOORDY] + ld a, [wBaseCoordY] ld e, a ld b, 5 .innerLoop @@ -1406,21 +1406,21 @@ ShakeEnemyHUD_WritePlayerMonPicOAM: ; 792fd (1e:52fd) ret z inc d inc d - ld a, [W_BASECOORDX] + ld a, [wBaseCoordX] add 8 - ld [W_BASECOORDX], a + ld [wBaseCoordX], a jr .loop BattleAnimWriteOAMEntry: ; 79329 (1e:5329) ; Y coordinate = e (increased by 8 each call, before the write to OAM) -; X coordinate = [W_BASECOORDX] +; X coordinate = [wBaseCoordX] ; tile = d ; attributes = 0 ld a, e add 8 ld e, a ld [hli], a - ld a, [W_BASECOORDX] + ld a, [wBaseCoordX] ld [hli], a ld a, d ld [hli], a @@ -1749,9 +1749,9 @@ AnimationShootBallsUpward: ; 794f9 (1e:54f9) lb bc, 6 * 8, 5 * 8 .next ld a, b - ld [W_BASECOORDY], a + ld [wBaseCoordY], a ld a, c - ld [W_BASECOORDX], a + ld [wBaseCoordX], a lb bc, 5, 1 call _AnimationShootBallsUpward jp AnimationCleanOAM @@ -1765,7 +1765,7 @@ _AnimationShootBallsUpward: ; 79517 (1e:5517) ld d, $7a ; ball tile ld hl, wOAMBuffer push bc - ld a, [W_BASECOORDY] + ld a, [wBaseCoordY] ld e, a .initOAMLoop call BattleAnimWriteOAMEntry @@ -1779,7 +1779,7 @@ _AnimationShootBallsUpward: ; 79517 (1e:5517) push bc ld hl, wOAMBuffer .innerLoop - ld a, [W_BASECOORDY] + ld a, [wBaseCoordY] add 8 ld e, a ld a, [hl] @@ -1819,11 +1819,11 @@ AnimationShootManyBallsUpward: ; 79566 (1e:5566) ld [wSavedY], a .loop ld a, [wSavedY] - ld [W_BASECOORDY], a + ld [wBaseCoordY], a ld a, [hli] cp $ff jp z, AnimationCleanOAM - ld [W_BASECOORDX], a + ld [wBaseCoordX], a lb bc, 4, 1 push hl call _AnimationShootBallsUpward @@ -2096,10 +2096,10 @@ HideSubstituteShowMonAnim: ; 79747 (1e:5747) ld a, [H_WHOSETURN] and a ld hl, wPlayerMonMinimized - ld a, [W_PLAYERBATTSTATUS2] + ld a, [wPlayerBattleStatus2] jr z, .next1 ld hl, wEnemyMonMinimized - ld a, [W_ENEMYBATTSTATUS2] + ld a, [wEnemyBattleStatus2] .next1 push hl ; if the substitute broke, slide it down, else slide it offscreen horizontally @@ -2150,7 +2150,7 @@ ChangeMonPic: ; 79793 (1e:5793) ld [wcf91], a ld [wd0b5], a xor a - ld [W_SPRITEFLIPPED], a + ld [wSpriteFlipped], a call GetMonHeader coord hl, 12, 0 call LoadFrontSpriteByMonIndex @@ -2170,8 +2170,8 @@ ChangeMonPic: ; 79793 (1e:5793) pop af ld [wBattleMonSpecies2], a .done - ld b, $1 - jp GoPAL_SET + ld b, SET_PAL_BATTLE + jp RunPaletteCommand AnimationHideEnemyMonPic: ; 797d8 (1e:57d8) ; Hides the enemy mon's sprite @@ -2196,7 +2196,7 @@ InitMultipleObjectsOAM: ; 797e8 (1e:57e8) pop bc xor a ld e, a - ld [W_BASECOORDX], a + ld [wBaseCoordX], a ld hl, wOAMBuffer .loop call BattleAnimWriteOAMEntry @@ -2335,26 +2335,26 @@ GetMoveSound: ; 7986f (1e:586f) call GetCryData ld b,a pop hl - ld a,[wc0f1] + ld a,[wFrequencyModifier] add [hl] - ld [wc0f1],a + ld [wFrequencyModifier],a inc hl - ld a,[wc0f2] + ld a,[wTempoModifier] add [hl] - ld [wc0f2],a + ld [wTempoModifier],a jr .done .NotCryMove ld a,[hli] - ld [wc0f1],a + ld [wFrequencyModifier],a ld a,[hli] - ld [wc0f2],a + ld [wTempoModifier],a .done ld a,b ret IsCryMove: ; 798ad (1e:58ad) ; set carry if the move animation involves playing a monster cry - ld a,[W_ANIMATIONID] + ld a,[wAnimationID] cp a,GROWL jr z,.CryMove cp a,ROAR @@ -2953,10 +2953,10 @@ BattleAnimCopyTileMapToVRAM: ; 79e0d (1e:5e0d) jp Delay3 TossBallAnimation: ; 79e16 (1e:5e16) - ld a,[W_ISINBATTLE] + ld a,[wIsInBattle] cp a,2 jr z,.BlockBall ; if in trainer battle, play different animation - ld a,[wd11e] + ld a,[wPokeBallAnimData] ld b,a ; upper nybble: how many animations (from PokeBallAnimations) to play @@ -2984,7 +2984,7 @@ TossBallAnimation: ; 79e16 (1e:5e16) .done ld a,b .PlayNextAnimation - ld [W_ANIMATIONID],a + ld [wAnimationID],a push bc push hl call PlayAnimation @@ -3001,12 +3001,12 @@ TossBallAnimation: ; 79e16 (1e:5e16) .BlockBall ; 5E55 ld a,TOSS_ANIM - ld [W_ANIMATIONID],a + ld [wAnimationID],a call PlayAnimation ld a,SFX_FAINT_THUD call PlaySound ld a,BLOCKBALL_ANIM - ld [W_ANIMATIONID],a + ld [wAnimationID],a jp PlayAnimation PlayApplyingAttackSound: ; 79e6a (1e:5e6a) @@ -3029,8 +3029,8 @@ PlayApplyingAttackSound: ; 79e6a (1e:5e6a) ld b, $1 ld c, SFX_NOT_VERY_EFFECTIVE .playSound - ld [wc0f1], a + ld [wFrequencyModifier], a ld a, b - ld [wc0f2], a + ld [wTempoModifier], a ld a, c jp PlaySound diff --git a/engine/battle/bank_e_misc.asm b/engine/battle/bank_e_misc.asm index f47087d8..dc766f23 100755 --- a/engine/battle/bank_e_misc.asm +++ b/engine/battle/bank_e_misc.asm @@ -92,9 +92,9 @@ InitList: ; 39bd5 (e:5bd5) ld a, h ld [wListPointer + 1], a ld a, e - ld [wcf8d], a + ld [wUnusedCF8D], a ld a, d - ld [wcf8e], a + ld [wUnusedCF8D + 1], a ld bc, ItemPrices ld a, c ld [wItemPrices], a diff --git a/engine/battle/battle_transitions.asm b/engine/battle/battle_transitions.asm index e9e247f9..545273ee 100644 --- a/engine/battle/battle_transitions.asm +++ b/engine/battle/battle_transitions.asm @@ -81,8 +81,8 @@ BattleTransitions: ; 709d2 (1c:49d2) dw BattleTransition_Split ; %111 GetBattleTransitionID_WildOrTrainer: ; 709e2 (1c:49e2) - ld a, [W_CUROPPONENT] - cp $c8 + ld a, [wCurOpponent] + cp 200 jr nc, .trainer res 0, c ret @@ -105,7 +105,7 @@ GetBattleTransitionID_CompareLevels: ; 709ef (1c:49ef) ld a, [hl] add $3 ld e, a - ld a, [W_CURENEMYLVL] + ld a, [wCurEnemyLVL] sub e jr nc, .highLevelEnemy res 1, c @@ -122,7 +122,7 @@ GetBattleTransitionID_CompareLevels: ; 709ef (1c:49ef) ; MANSION_1, SEAFOAM_ISLANDS_[2-5], POWER_PLANT, DIGLETTS_CAVE ; and SILPH_CO_[9-11]F as dungeon maps GetBattleTransitionID_IsDungeonMap: ; 70a19 (1c:4a19) - ld a, [W_CURMAP] + ld a, [wCurMap] ld e, a ld hl, DungeonMaps1 .loop1 @@ -151,7 +151,7 @@ GetBattleTransitionID_IsDungeonMap: ; 70a19 (1c:4a19) res 2, c ret -; GetBattleTransitionID_IsDungeonMap checks if W_CURMAP +; GetBattleTransitionID_IsDungeonMap checks if wCurMap ; is equal to one of these maps DungeonMaps1: ; 70a3f (1c:4a3f) db VIRIDIAN_FOREST @@ -160,7 +160,7 @@ DungeonMaps1: ; 70a3f (1c:4a3f) db ROCK_TUNNEL_2 db $FF -; GetBattleTransitionID_IsDungeonMap checks if W_CURMAP +; GetBattleTransitionID_IsDungeonMap checks if wCurMap ; is in between or equal to each pair of maps DungeonMaps2: ; 70a44 (1c:4a44) ; all MT_MOON maps @@ -184,11 +184,12 @@ DungeonMaps2: ; 70a44 (1c:4a44) LoadBattleTransitionTile: ; 70a4d (1c:4a4d) ld hl, vChars1 + $7f0 ld de, BattleTransitionTile - lb bc, BANK(BattleTransitionTile), $01 + lb bc, BANK(BattleTransitionTile), (BattleTransitionTileEnd - BattleTransitionTile) / $10 jp CopyVideoData BattleTransitionTile: ; 70a59 (1c:4a59) INCBIN "gfx/battle_transition.2bpp" +BattleTransitionTileEnd: BattleTransition_BlackScreen: ; 70a69 (1c:4a69) ld a, $ff diff --git a/engine/battle/common_text.asm b/engine/battle/common_text.asm index a00e9d59..476284f0 100644 --- a/engine/battle/common_text.asm +++ b/engine/battle/common_text.asm @@ -1,8 +1,8 @@ PrintBeginningBattleText: ; 58d99 (16:4d99) - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a jr nz, .trainerBattle - ld a, [W_CURMAP] + ld a, [wCurMap] cp POKEMONTOWER_3 jr c, .notPokemonTower cp LAVENDER_HOUSE_1 @@ -11,7 +11,7 @@ PrintBeginningBattleText: ; 58d99 (16:4d99) ld a, [wEnemyMonSpecies2] call PlayCry ld hl, WildMonAppearedText - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] and a jr z, .notFishing ld hl, HookedMonAttackedText @@ -61,9 +61,9 @@ PrintBeginningBattleText: ; 58d99 (16:4d99) .playSFX xor a - ld [wc0f1], a + ld [wFrequencyModifier], a ld a, $80 - ld [wc0f2], a + ld [wTempoModifier], a ld a, SFX_SILPH_SCOPE call PlaySound jp WaitForSoundToFinish diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 65549f7b..c5c3774f 100755 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -184,8 +184,8 @@ SlidePlayerAndEnemySilhouettesOnScreen: ; 3c04c (f:404c) inc a ld [H_AUTOBGTRANSFERENABLED], a call Delay3 - ld b, $1 - call GoPAL_SET + ld b, SET_PAL_BATTLE + call RunPaletteCommand call HideSprites jpab PrintBeginningBattleText @@ -239,7 +239,7 @@ StartBattle: ; 3c11e (f:411e) .foundFirstAliveEnemyMon ld a, d ld [wSerialExchangeNybbleReceiveData], a - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a ; is it a trainer battle? call nz, EnemySendOutFirstMon ; if it is a trainer battle, send out enemy mon ld c, 40 @@ -251,7 +251,7 @@ StartBattle: ; 3c11e (f:411e) and a jp z, HandlePlayerBlackOut ; jump if no mon is alive call LoadScreenTilesFromBuffer1 - ld a, [W_BATTLETYPE] + ld a, [wBattleType] and a ; is it a normal battle? jp z, .playerSendOutFirstMon ; if so, send out player mon ; safari zone battle @@ -261,7 +261,7 @@ StartBattle: ; 3c11e (f:411e) ld a, [wActionResultOrTookBattleTurn] and a ; was the item used successfully? jr z, .displaySafariZoneBattleMenu ; if not, display the menu again; XXX does this ever jump? - ld a, [W_NUMSAFARIBALLS] + ld a, [wNumSafariBalls] and a jr nz, .notOutOfSafariBalls call LoadScreenTilesFromBuffer1 @@ -380,13 +380,13 @@ MainInBattleLoop: ; 3c233 (f:4233) call SaveScreenTilesToBuffer1 xor a ld [wFirstMonsNotOutYet], a - ld a, [W_PLAYERBATTSTATUS2] + ld a, [wPlayerBattleStatus2] and (1 << NeedsToRecharge) | (1 << UsingRage) ; check if the player is using Rage or needs to recharge jr nz, .selectEnemyMove ; the player is not using Rage and doesn't need to recharge - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 res Flinched, [hl] ; reset flinch bit - ld hl, W_PLAYERBATTSTATUS1 + ld hl, wPlayerBattleStatus1 res Flinched, [hl] ; reset flinch bit ld a, [hl] and (1 << ThrashingAbout) | (1 << ChargingUp) ; check if the player is thrashing about or charging for an attack @@ -400,10 +400,10 @@ MainInBattleLoop: ; 3c233 (f:4233) ld a, [wBattleMonStatus] and (1 << FRZ) | SLP ; is mon frozen or asleep? jr nz, .selectEnemyMove ; if so, jump - ld a, [W_PLAYERBATTSTATUS1] + ld a, [wPlayerBattleStatus1] and (1 << StoringEnergy) | (1 << UsingTrappingMove) ; check player is using Bide or using a multi-turn attack like wrap jr nz, .selectEnemyMove ; if so, jump - ld a, [W_ENEMYBATTSTATUS1] + ld a, [wEnemyBattleStatus1] bit UsingTrappingMove, a ; check if enemy is using a multi-turn attack like wrap jr z, .selectPlayerMove ; if not, jump ; enemy is using a mult-turn attack like wrap, so player is trapped and cannot execute a move @@ -416,7 +416,7 @@ MainInBattleLoop: ; 3c233 (f:4233) jr nz, .selectEnemyMove ld [wMoveMenuType], a inc a - ld [W_ANIMATIONID], a + ld [wAnimationID], a xor a ld [wMenuItemToSwap], a call MoveSelectionMenu @@ -441,7 +441,7 @@ MainInBattleLoop: ; 3c233 (f:4233) sub $4 jr c, .noLinkBattle ; the link battle enemy has switched mons - ld a, [W_PLAYERBATTSTATUS1] + ld a, [wPlayerBattleStatus1] bit UsingTrappingMove, a ; check if using multi-turn move like Wrap jr z, .asm_3c2dd ld a, [wPlayerMoveListIndex] @@ -584,11 +584,11 @@ HandlePoisonBurnLeechSeed: ; 3c3bd (f:43bd) pop hl call HandlePoisonBurnLeechSeed_DecreaseOwnHP .notBurnedOrPoisoned - ld de, W_PLAYERBATTSTATUS2 + ld de, wPlayerBattleStatus2 ld a, [H_WHOSETURN] and a jr z, .playersTurn2 - ld de, W_ENEMYBATTSTATUS2 + ld de, wEnemyBattleStatus2 .playersTurn2 ld a, [de] add a @@ -659,13 +659,13 @@ HandlePoisonBurnLeechSeed_DecreaseOwnHP: ; 3c43d (f:443d) jr nz, .nonZeroDamage inc c ; damage is at least 1 .nonZeroDamage - ld hl, W_PLAYERBATTSTATUS3 - ld de, W_PLAYERTOXICCOUNTER + ld hl, wPlayerBattleStatus3 + ld de, wPlayerToxicCounter ld a, [H_WHOSETURN] and a jr z, .playersTurn - ld hl, W_ENEMYBATTSTATUS3 - ld de, W_ENEMYTOXICCOUNTER + ld hl, wEnemyBattleStatus3 + ld de, wEnemyToxcCounter .playersTurn bit BadlyPoisoned, [hl] jr z, .noToxic @@ -775,20 +775,20 @@ CheckNumAttacksLeft: ; 3c50f (f:450f) and a jr nz, .checkEnemy ; player has 0 attacks left - ld hl, W_PLAYERBATTSTATUS1 + ld hl, wPlayerBattleStatus1 res UsingTrappingMove, [hl] ; player not using multi-turn attack like wrap any more .checkEnemy ld a, [wEnemyNumAttacksLeft] and a ret nz ; enemy has 0 attacks left - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 res UsingTrappingMove, [hl] ; enemy not using multi-turn attack like wrap any more ret HandleEnemyMonFainted: ; 3c525 (f:4525) xor a - ld [wccf0], a + ld [wInHandlePlayerMonFainted], a call FaintEnemyPokemon call AnyPartyAlive ld a, d @@ -798,7 +798,7 @@ HandleEnemyMonFainted: ; 3c525 (f:4525) ld a, [hli] or [hl] ; is battle mon HP zero? call nz, DrawPlayerHUDAndHPBar ; if battle mon HP is not zero, draw player HD and HP bar - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a ret z ; return if it's a wild battle call AnyEnemyPokemonAliveCheck @@ -821,7 +821,7 @@ HandleEnemyMonFainted: ; 3c525 (f:4525) FaintEnemyPokemon: ; 0x3c567 call ReadPlayerMonCurHPAndStatus - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a jr z, .wild ld a, [wEnemyMonPartyPos] @@ -832,17 +832,26 @@ FaintEnemyPokemon: ; 0x3c567 ld [hli], a ld [hl], a .wild - ld hl, W_PLAYERBATTSTATUS1 + ld hl, wPlayerBattleStatus1 res AttackingMultipleTimes, [hl] - xor a - ld [wPlayerNumHits], a +; Bug. This only zeroes the high byte of the player's accumulated damage, +; setting the accumulated damage to itself mod 256 instead of 0 as was probably +; intended. That alone is problematic, but this mistake has another more severe +; effect. This function's counterpart for when the player mon faints, +; RemoveFaintedPlayerMon, zeroes both the high byte and the low byte. In a link +; battle, the other player's Game Boy will call that function in response to +; the enemy mon (the player mon from the other side's perspective) fainting, +; and the states of the two Game Boys will go out of sync unless the damage +; was congruent to 0 modulo 256. + xor a + ld [wPlayerBideAccumulatedDamage], a ld hl, wEnemyStatsToDouble ; clear enemy statuses ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hl], a - ld [W_ENEMYDISABLEDMOVE], a + ld [wEnemyDisabledMove], a ld [wEnemyDisabledMoveNumber], a ld [wEnemyMonMinimized], a ld hl, wPlayerUsedMove @@ -854,16 +863,16 @@ FaintEnemyPokemon: ; 0x3c567 coord hl, 0, 0 lb bc, 4, 11 call ClearScreenArea - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a jr z, .wild_win xor a - ld [wc0f1], a - ld [wc0f2], a + ld [wFrequencyModifier], a + ld [wTempoModifier], a ld a, SFX_FAINT_FALL call PlaySoundWaitForCurrent .sfxwait - ld a, [wc02a] + ld a, [wChannelSoundIDs + CH4] cp SFX_FAINT_FALL jr z, .sfxwait ld a, SFX_FAINT_THUD @@ -879,9 +888,9 @@ FaintEnemyPokemon: ; 0x3c567 ld a, [hli] or [hl] jr nz, .playermonnotfaint - ld a, [wccf0] - and a - jr nz, .playermonnotfaint + ld a, [wInHandlePlayerMonFainted] + and a ; was this called by HandlePlayerMonFainted? + jr nz, .playermonnotfaint ; if so, don't call RemoveFaintedPlayerMon twice call RemoveFaintedPlayerMon .playermonnotfaint call AnyPartyAlive @@ -894,7 +903,7 @@ FaintEnemyPokemon: ; 0x3c567 call SaveScreenTilesToBuffer1 xor a ld [wBattleResult], a - ld b, EXP__ALL + ld b, EXP_ALL call IsItemInBag push af jr z, .giveExpToMonsThatFought ; if no exp all, then jump @@ -941,11 +950,13 @@ EnemyMonFaintedText: ; 0x3c63e db "@" EndLowHealthAlarm: ; 3c643 (f:4643) +; This function is called when the player has the won the battle. It turns off +; the low health alarm and prevents it from reactivating until the next battle. xor a - ld [wLowHealthAlarm], a ;disable low health alarm - ld [wc02a], a + ld [wLowHealthAlarm], a ; turn off low health alarm + ld [wChannelSoundIDs + CH4], a inc a - ld [wccf6], a + ld [wLowHealthAlarmDisabled], a ; prevent it from reactivating ret AnyEnemyPokemonAliveCheck: ; 3c64f (f:464f) @@ -967,7 +978,7 @@ AnyEnemyPokemonAliveCheck: ; 3c64f (f:464f) ; stores whether enemy ran in Z flag ReplaceFaintedEnemyMon: ; 3c664 (f:4664) - ld hl, wcf1e + ld hl, wEnemyHPBarColor ld e, $30 call GetBattleHealthBarColor callab DrawEnemyPokeballs @@ -983,7 +994,7 @@ ReplaceFaintedEnemyMon: ; 3c664 (f:4664) .notLinkBattle call EnemySendOut xor a - ld [W_ENEMYMOVENUM], a + ld [wEnemyMoveNum], a ld [wActionResultOrTookBattleTurn], a ld [wAILayer2Encouragement], a inc a ; reset Z flag @@ -992,16 +1003,16 @@ ReplaceFaintedEnemyMon: ; 3c664 (f:4664) TrainerBattleVictory: ; 3c696 (f:4696) call EndLowHealthAlarm ld b, MUSIC_DEFEATED_GYM_LEADER - ld a, [W_GYMLEADERNO] + ld a, [wGymLeaderNo] and a jr nz, .gymleader ld b, MUSIC_DEFEATED_TRAINER .gymleader - ld a, [W_TRAINERCLASS] + ld a, [wTrainerClass] cp SONY3 ; final battle against rival jr nz, .notrival ld b, MUSIC_DEFEATED_GYM_LEADER - ld hl, W_FLAGS_D733 + ld hl, wFlags_D733 set 1, [hl] .notrival ld a, [wLinkState] @@ -1036,7 +1047,7 @@ TrainerDefeatedText: ; 3c6e9 (f:46e9) PlayBattleVictoryMusic: ; 3c6ee (f:46ee) push af ld a, $ff - ld [wc0ee], a + ld [wNewSoundID], a call PlaySoundWaitForCurrent ld c, BANK(Music_DefeatedTrainer) pop af @@ -1044,8 +1055,8 @@ PlayBattleVictoryMusic: ; 3c6ee (f:46ee) jp Delay3 HandlePlayerMonFainted: ; 3c700 (f:4700) - ld a, $1 - ld [wccf0], a + ld a, 1 + ld [wInHandlePlayerMonFainted], a call RemoveFaintedPlayerMon call AnyPartyAlive ; test if any more mons are alive ld a, d @@ -1057,7 +1068,7 @@ HandlePlayerMonFainted: ; 3c700 (f:4700) jr nz, .doUseNextMonDialogue ; if not, jump ; the enemy mon has 0 HP call FaintEnemyPokemon - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a ret z ; if wild encounter, battle is over call AnyEnemyPokemonAliveCheck @@ -1083,7 +1094,7 @@ RemoveFaintedPlayerMon: ; 3c741 (f:4741) ld hl, wPartyGainExpFlags ld b, FLAG_RESET predef FlagActionPredef ; clear gain exp flag for fainted mon - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 res 2, [hl] ; reset "attacking multiple times" flag ld a, [wLowHealthAlarm] bit 7, a ; skip sound flag (red bar (?)) @@ -1092,8 +1103,7 @@ RemoveFaintedPlayerMon: ; 3c741 (f:4741) ld [wLowHealthAlarm], a ;disable low health alarm call WaitForSoundToFinish .skipWaitForSound -; bug? if the player mon faints while the enemy mon is using bide, -; the accumulated damage is overwritten. xxx what values can [wLowHealthAlarm] have here? +; a is 0, so this zeroes the enemy's accumulated damage. ld hl, wEnemyBideAccumulatedDamage ld [hli], a ld [hl], a @@ -1107,9 +1117,15 @@ RemoveFaintedPlayerMon: ; 3c741 (f:4741) call SlideDownFaintedMonPic ld a, $1 ld [wBattleResult], a - ld a, [wccf0] - and a - ret z + +; When the player mon and enemy mon faint at the same time and the fact that the +; enemy mon has fainted is detected first (e.g. when the player mon knocks out +; the enemy mon using a move with recoil and faints due to the recoil), don't +; play the player mon's cry or show the "[player mon] fainted!" message. + ld a, [wInHandlePlayerMonFainted] + and a ; was this called by HandleEnemyMonFainted? + ret z ; if so, return + ld a, [wBattleMonSpecies] call PlayCry ld hl, PlayerMonFaintedText @@ -1124,7 +1140,7 @@ PlayerMonFaintedText: ; 3c796 (f:4796) DoUseNextMonDialogue: ; 3c79b (f:479b) call PrintEmptyString call SaveScreenTilesToBuffer1 - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] and a dec a ret nz ; return if it's a trainer battle @@ -1191,7 +1207,7 @@ ChooseNextMon: ; 3c7d8 (f:47d8) call GBPalWhiteOut call LoadHudTilePatterns call LoadScreenTilesFromBuffer1 - call GoPAL_SET_CF1C + call RunDefaultPaletteCommand call GBPalNormal call SendOutMon ld hl, wEnemyMonHP @@ -1205,8 +1221,8 @@ HandlePlayerBlackOut: ; 3c837 (f:4837) ld a, [wLinkState] cp LINK_STATE_BATTLING jr z, .notSony1Battle - ld a, [W_CUROPPONENT] - cp $c8 + SONY1 + ld a, [wCurOpponent] + cp OPP_SONY1 jr nz, .notSony1Battle coord hl, 0, 0 ; sony 1 battle lb bc, 8, 21 @@ -1216,12 +1232,12 @@ HandlePlayerBlackOut: ; 3c837 (f:4837) call DelayFrames ld hl, Sony1WinText call PrintText - ld a, [W_CURMAP] + ld a, [wCurMap] cp OAKS_LAB ret z ; starter battle in oak's lab: don't black out .notSony1Battle - ld b, $0 - call GoPAL_SET + ld b, SET_PAL_BATTLE_BLACK + call RunPaletteCommand ld hl, PlayerBlackedOutText2 ld a, [wLinkState] cp LINK_STATE_BATTLING @@ -1368,7 +1384,7 @@ EnemySendOutFirstMon: ; 3c92a (f:492a) ld [hli],a ld [hli],a ld [hl],a - ld [W_ENEMYDISABLEDMOVE],a + ld [wEnemyDisabledMove],a ld [wEnemyDisabledMoveNumber],a ld [wEnemyMonMinimized],a ld hl,wPlayerUsedMove @@ -1376,7 +1392,7 @@ EnemySendOutFirstMon: ; 3c92a (f:492a) ld [hl],a dec a ld [wAICount],a - ld hl,W_PLAYERBATTSTATUS1 + ld hl,wPlayerBattleStatus1 res 5,[hl] coord hl, 18, 0 ld a,8 @@ -1416,7 +1432,7 @@ EnemySendOutFirstMon: ; 3c92a (f:492a) ld bc,wEnemyMon2 - wEnemyMon1 call AddNTimes ld a,[hl] - ld [W_CURENEMYLVL],a + ld [wCurEnemyLVL],a ld a,[wWhichPokemon] inc a ld hl,wEnemyPartyCount @@ -1443,7 +1459,7 @@ EnemySendOutFirstMon: ; 3c92a (f:492a) ld a,[wLinkState] cp LINK_STATE_BATTLING jr z,.next4 - ld a,[W_OPTIONS] + ld a,[wOptions] bit 6,a jr nz,.next4 ld hl, TrainerAboutToUseText @@ -1486,8 +1502,8 @@ EnemySendOutFirstMon: ; 3c92a (f:492a) coord hl, 0, 0 lb bc, 4, 11 call ClearScreenArea - ld b,1 - call GoPAL_SET + ld b, SET_PAL_BATTLE + call RunPaletteCommand call GBPalNormal ld hl,TrainerSentOutText call PrintText @@ -1567,13 +1583,13 @@ NoWillText: ; 3cab4 (f:4ab4) TryRunningFromBattle: ; 3cab9 (f:4ab9) call IsGhostBattle jp z, .canEscape ; jump if it's a ghost battle - ld a, [W_BATTLETYPE] - cp $2 + ld a, [wBattleType] + cp BATTLE_TYPE_SAFARI jp z, .canEscape ; jump if it's a safari battle ld a, [wLinkState] cp LINK_STATE_BATTLING jp z, .canEscape - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a jr nz, .trainerBattle ; jump if it's a trainer battle ld a, [wNumRunAttempts] @@ -1720,7 +1736,7 @@ LoadBattleMonFromParty: ; 3cba6 (f:4ba6) ld a, [wPlayerMonNumber] call SkipFixedLengthTextEntries ld de, wBattleMonNick - ld bc, $b + ld bc, NAME_LENGTH call CopyData ld hl, wBattleMonLevel ld de, wPlayerMonUnmodifiedLevel ; block of memory used for unmodified stats @@ -1764,14 +1780,14 @@ LoadEnemyMonFromParty: ; 3cc13 (f:4c13) ld a, [wWhichPokemon] call SkipFixedLengthTextEntries ld de, wEnemyMonNick - ld bc, $b + ld bc, NAME_LENGTH call CopyData ld hl, wEnemyMonLevel ld de, wEnemyMonUnmodifiedLevel ; block of memory used for unmodified stats ld bc, 1 + NUM_STATS * 2 call CopyData call ApplyBurnAndParalysisPenaltiesToEnemy - ld hl, W_MONHBASESTATS + ld hl, wMonHBaseStats ld de, wEnemyMonBaseStats ld b, NUM_STATS .copyBaseStatsLoop @@ -1808,7 +1824,7 @@ SendOutMon: ; 3cc91 (f:4c91) ld [hl], a ld [wBoostExpByExpAll], a ld [wDamageMultipliers], a - ld [W_PLAYERMOVENUM], a + ld [wPlayerMoveNum], a ld hl, wPlayerUsedMove ld [hli], a ld [hl], a @@ -1818,12 +1834,12 @@ SendOutMon: ; 3cc91 (f:4c91) ld [hli], a ld [hli], a ld [hl], a - ld [W_PLAYERDISABLEDMOVE], a + ld [wPlayerDisabledMove], a ld [wPlayerDisabledMoveNumber], a ld [wPlayerMonMinimized], a - ld b, $1 - call GoPAL_SET - ld hl, W_ENEMYBATTSTATUS1 + ld b, SET_PAL_BATTLE + call RunPaletteCommand + ld hl, wEnemyBattleStatus1 res UsingTrappingMove, [hl] ld a, $1 ld [H_WHOSETURN], a @@ -1918,17 +1934,17 @@ DrawPlayerHUDAndHPBar: ; 3cd60 (f:4d60) predef DrawHP ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a - ld hl, wcf1d + ld hl, wPlayerHPBarColor call GetBattleHealthBarColor ld hl, wBattleMonHP ld a, [hli] or [hl] jr z, .asm_3cdd9 - ld a, [wccf6] - and a - ret nz - ld a, [wcf1d] - cp $2 + ld a, [wLowHealthAlarmDisabled] + and a ; has the alarm been disabled because the player has already won? + ret nz ; if so, return + ld a, [wPlayerHPBarColor] + cp HP_BAR_RED jr z, .asm_3cde6 .asm_3cdd9 ld hl, wLowHealthAlarm @@ -1936,7 +1952,7 @@ DrawPlayerHUDAndHPBar: ; 3cd60 (f:4d60) ld [hl], $0 ret z xor a - ld [wc02a], a + ld [wChannelSoundIDs + CH4], a ret .asm_3cde6 ld hl, wLowHealthAlarm @@ -2031,7 +2047,7 @@ DrawEnemyHUDAndHPBar: ; 3cdec (f:4dec) call DrawHPBar ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a - ld hl, wcf1e + ld hl, wEnemyHPBarColor GetBattleHealthBarColor: ; 3ce90 (f:4e90) ld b, [hl] @@ -2039,8 +2055,8 @@ GetBattleHealthBarColor: ; 3ce90 (f:4e90) ld a, [hl] cp b ret z - ld b, $1 - jp GoPAL_SET + ld b, SET_PAL_BATTLE + jp RunPaletteCommand ; center's mon's name on the battle screen ; if the name is 1 or 2 letters long, it is printed 2 spaces more to the right than usual @@ -2070,28 +2086,28 @@ CenterMonName: ; 3ce9c (f:4e9c) DisplayBattleMenu: ; 3ceb3 (f:4eb3) call LoadScreenTilesFromBuffer1 ; restore saved screen - ld a, [W_BATTLETYPE] + ld a, [wBattleType] and a jr nz, .nonstandardbattle call DrawHUDsAndHPBars call PrintEmptyString call SaveScreenTilesToBuffer1 .nonstandardbattle - ld a, [W_BATTLETYPE] - cp $2 ; safari + ld a, [wBattleType] + cp BATTLE_TYPE_SAFARI ld a, BATTLE_MENU_TEMPLATE jr nz, .menuselected ld a, SAFARI_BATTLE_MENU_TEMPLATE .menuselected ld [wTextBoxID], a call DisplayTextBoxID - ld a, [W_BATTLETYPE] + ld a, [wBattleType] dec a jp nz, .handleBattleMenuInput ; handle menu input if it's not the old man tutorial ; the following happens for the old man tutorial ld hl, wPlayerName - ld de, W_GRASSRATE - ld bc, 11 + ld de, wGrassRate + ld bc, NAME_LENGTH call CopyData ; temporarily save the player name in unused space, ; which is supposed to get overwritten when entering a ; map with wild Pokémon. Due to an oversight, the data @@ -2099,7 +2115,7 @@ DisplayBattleMenu: ; 3ceb3 (f:4eb3) ; Missingno. glitch can show up. ld hl, .oldManName ld de, wPlayerName - ld bc, 11 + ld bc, NAME_LENGTH call CopyData ; the following simulates the keystrokes by drawing menus on screen coord hl, 9, 14 @@ -2127,8 +2143,8 @@ DisplayBattleMenu: ; 3ceb3 (f:4eb3) ld [wLastMenuItem], a jr .rightColumn .leftColumn ; put cursor in left column of menu - ld a, [W_BATTLETYPE] - cp $2 + ld a, [wBattleType] + cp BATTLE_TYPE_SAFARI ld a, " " jr z, .safariLeftColumn ; put cursor in left column for normal battle menu (i.e. when it's not a Safari battle) @@ -2140,7 +2156,7 @@ DisplayBattleMenu: ; 3ceb3 (f:4eb3) Coorda 13, 14 Coorda 13, 16 coord hl, 7, 14 - ld de, W_NUMSAFARIBALLS + ld de, wNumSafariBalls lb bc, 1, 2 call PrintNumber ld b, $1 ; top menu item X @@ -2160,8 +2176,8 @@ DisplayBattleMenu: ; 3ceb3 (f:4eb3) jr nz, .rightColumn jr .AButtonPressed ; the A button was pressed .rightColumn ; put cursor in right column of menu - ld a, [W_BATTLETYPE] - cp $2 + ld a, [wBattleType] + cp BATTLE_TYPE_SAFARI ld a, " " jr z, .safariRightColumn ; put cursor in right column for normal battle menu (i.e. when it's not a Safari battle) @@ -2173,7 +2189,7 @@ DisplayBattleMenu: ; 3ceb3 (f:4eb3) Coorda 1, 14 ; clear upper cursor position in left column Coorda 1, 16 ; clear lower cursor position in left column coord hl, 7, 14 - ld de, W_NUMSAFARIBALLS + ld de, wNumSafariBalls lb bc, 1, 2 call PrintNumber ld b, $d ; top menu item X @@ -2197,8 +2213,8 @@ DisplayBattleMenu: ; 3ceb3 (f:4eb3) ld [wCurrentMenuItem], a .AButtonPressed call PlaceUnfilledArrowMenuCursor - ld a, [W_BATTLETYPE] - cp $2 ; is it a Safari battle? + ld a, [wBattleType] + cp BATTLE_TYPE_SAFARI ld a, [wCurrentMenuItem] ld [wBattleAndStartSavedMenuItem], a jr z, .handleMenuSelection @@ -2219,8 +2235,8 @@ DisplayBattleMenu: ; 3ceb3 (f:4eb3) and a jr nz, .upperLeftMenuItemWasNotSelected ; the upper left menu item was selected - ld a, [W_BATTLETYPE] - cp $2 + ld a, [wBattleType] + cp BATTLE_TYPE_SAFARI jr z, .throwSafariBallWasSelected ; the "FIGHT" menu was selected xor a @@ -2247,8 +2263,8 @@ DisplayBattleMenu: ; 3ceb3 (f:4eb3) .notLinkBattle call SaveScreenTilesToBuffer2 - ld a, [W_BATTLETYPE] - cp $2 ; is it a safari battle? + ld a, [wBattleType] + cp BATTLE_TYPE_SAFARI jr nz, BagWasSelected ; bait was selected @@ -2258,14 +2274,14 @@ DisplayBattleMenu: ; 3ceb3 (f:4eb3) BagWasSelected: call LoadScreenTilesFromBuffer1 - ld a, [W_BATTLETYPE] + ld a, [wBattleType] and a ; is it a normal battle? jr nz, .next ; normal battle call DrawHUDsAndHPBars .next - ld a, [W_BATTLETYPE] + ld a, [wBattleType] dec a ; is it the old man tutorial? jr nz, DisplayPlayerBag ; no, it is a normal battle ld hl, OldManItemList @@ -2316,21 +2332,21 @@ UseBagItem: call ClearSprites xor a ld [wCurrentMenuItem], a - ld a, [W_BATTLETYPE] - cp $2 ; is it a safari battle? + ld a, [wBattleType] + cp BATTLE_TYPE_SAFARI jr z, .checkIfMonCaptured ld a, [wActionResultOrTookBattleTurn] and a ; was the item used successfully? jp z, BagWasSelected ; if not, go back to the bag menu - ld a, [W_PLAYERBATTSTATUS1] + ld a, [wPlayerBattleStatus1] bit UsingTrappingMove, a ; is the player using a multi-turn move like wrap? jr z, .checkIfMonCaptured ld hl, wPlayerNumAttacksLeft dec [hl] jr nz, .checkIfMonCaptured - ld hl, W_PLAYERBATTSTATUS1 + ld hl, wPlayerBattleStatus1 res UsingTrappingMove, [hl] ; not using multi-turn move any more .checkIfMonCaptured @@ -2338,8 +2354,8 @@ UseBagItem: and a ; was the enemy mon captured with a ball? jr nz, .returnAfterCapturingMon - ld a, [W_BATTLETYPE] - cp $2 ; is it a safari battle? + ld a, [wBattleType] + cp BATTLE_TYPE_SAFARI jr z, .returnAfterUsingItem_NoCapture ; not a safari battle call LoadScreenTilesFromBuffer1 @@ -2369,8 +2385,8 @@ PartyMenuOrRockOrRun: jp nz, BattleMenu_RunWasSelected ; party menu or rock was selected call SaveScreenTilesToBuffer2 - ld a, [W_BATTLETYPE] - cp $2 ; is it a safari battle? + ld a, [wBattleType] + cp BATTLE_TYPE_SAFARI jr nz, .partyMenuWasSelected ; safari battle ld a, SAFARI_ROCK @@ -2389,12 +2405,12 @@ PartyMenuOrRockOrRun: call GBPalWhiteOut call LoadHudTilePatterns call LoadScreenTilesFromBuffer2 - call GoPAL_SET_CF1C + call RunDefaultPaletteCommand call GBPalNormal jp DisplayBattleMenu .partyMonDeselected coord hl, 11, 11 - ld bc, $81 + ld bc, 6 * SCREEN_WIDTH + 9 ld a, " " call FillMemory xor a ; NORMAL_PARTY_MENU @@ -2437,7 +2453,7 @@ PartyMenuOrRockOrRun: predef StatusScreen predef StatusScreen2 ; now we need to reload the enemy mon pic - ld a, [W_ENEMYBATTSTATUS2] + ld a, [wEnemyBattleStatus2] bit HasSubstituteUp, a ; does the enemy mon have a substitute? ld hl, AnimationSubstitute jr nz, .doEnemyMonAnimation @@ -2478,7 +2494,7 @@ PartyMenuOrRockOrRun: call ClearSprites call LoadHudTilePatterns call LoadScreenTilesFromBuffer1 - call GoPAL_SET_CF1C + call RunDefaultPaletteCommand call GBPalNormal ; fall through to SwitchPlayerMon @@ -2625,8 +2641,8 @@ MoveSelectionMenu: ; 3d219 (f:5219) ld a, [wLinkState] cp LINK_STATE_BATTLING jr z, .matchedkeyspicked - ld a, [W_FLAGS_D733] - bit 0, a + ld a, [wFlags_D733] + bit BIT_TEST_BATTLE, a ld b, D_UP | D_DOWN | A_BUTTON | B_BUTTON | SELECT jr z, .matchedkeyspicked ld b, $ff @@ -2653,8 +2669,8 @@ SelectMenuItem: ; 3d2fe (f:52fe) call PlaceString jr .select .battleselect - ld a, [W_FLAGS_D733] - bit 0, a + ld a, [wFlags_D733] + bit BIT_TEST_BATTLE, a jr nz, .select call PrintMenuItem ld a, [wMenuItemToSwap] @@ -2708,13 +2724,13 @@ SelectMenuItem: ; 3d2fe (f:52fe) ld a, [hl] and $3f jr z, .nopp - ld a, [W_PLAYERDISABLEDMOVE] + ld a, [wPlayerDisabledMove] swap a and $f dec a cp c jr z, .disabled - ld a, [W_PLAYERBATTSTATUS3] + ld a, [wPlayerBattleStatus3] bit 3, a ; transformed jr nz, .dummy ; game freak derp .dummy @@ -2775,7 +2791,7 @@ AnyMoveToSelect: ; 3d3f5 (f:53f5) ; return z and Struggle as the selected move if all moves have 0 PP and/or are disabled ld a, STRUGGLE ld [wPlayerSelectedMove], a - ld a, [W_PLAYERDISABLEDMOVE] + ld a, [wPlayerDisabledMove] and a ld hl, wBattleMonPP jr nz, .asm_3d40e @@ -2827,7 +2843,7 @@ SwapMovesInMenu: ; 3d435 (f:5435) ld hl, wBattleMonPP call .swapBytes ; swap move PP ; update the index of the disabled move if necessary - ld hl, W_PLAYERDISABLEDMOVE + ld hl, wPlayerDisabledMove ld a, [hl] swap a and $f @@ -2901,7 +2917,7 @@ PrintMenuItem: ; 3d4b6 (f:54b6) ld b, $3 ld c, $9 call TextBoxBorder - ld a, [W_PLAYERDISABLEDMOVE] + ld a, [wPlayerDisabledMove] and a jr z, .notDisabled swap a @@ -2954,7 +2970,7 @@ PrintMenuItem: ; 3d4b6 (f:54b6) lb bc, 1, 2 call PrintNumber coord hl, 8, 11 - ld de, wd11e + ld de, wMaxPP lb bc, 1, 2 call PrintNumber call GetCurrentMove @@ -2998,20 +3014,20 @@ SelectEnemyMove: ; 3d564 (f:5564) ld a, [hl] jr .done .noLinkBattle - ld a, [W_ENEMYBATTSTATUS2] + ld a, [wEnemyBattleStatus2] and (1 << NeedsToRecharge) | (1 << UsingRage) ; need to recharge or using rage ret nz - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 ld a, [hl] and (1 << ChargingUp) | (1 << ThrashingAbout) ; using a charging move or thrash/petal dance ret nz ld a, [wEnemyMonStatus] and SLP | 1 << FRZ ; sleeping or frozen ret nz - ld a, [W_ENEMYBATTSTATUS1] + ld a, [wEnemyBattleStatus1] and (1 << UsingTrappingMove) | (1 << StoringEnergy) ; using a trapping move like wrap or bide ret nz - ld a, [W_PLAYERBATTSTATUS1] + ld a, [wPlayerBattleStatus1] bit UsingTrappingMove, a ; caught in player's trapping move (e.g. wrap) jr z, .canSelectMove .unableToSelectMove @@ -3022,12 +3038,12 @@ SelectEnemyMove: ; 3d564 (f:5564) ld a, [hld] and a jr nz, .atLeastTwoMovesAvailable - ld a, [W_ENEMYDISABLEDMOVE] + ld a, [wEnemyDisabledMove] and a ld a, STRUGGLE ; struggle if the only move is disabled jr nz, .done .atLeastTwoMovesAvailable - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a jr z, .chooseRandomMove ; wild encounter callab AIEnemyTrainerChooseMoves @@ -3051,7 +3067,7 @@ SelectEnemyMove: ; 3d564 (f:5564) ld a, b dec a ld [wEnemyMoveListIndex], a - ld a, [W_ENEMYDISABLEDMOVE] + ld a, [wEnemyDisabledMove] swap a and $f cp b @@ -3123,7 +3139,7 @@ ExecutePlayerMove: ; 3d65e (f:565e) inc a jp z, ExecutePlayerMoveDone ; for selected move = FF, skip most of player's turn xor a - ld [W_MOVEMISSED], a + ld [wMoveMissed], a ld [wMonIsDisobedient], a ld [wMoveDidntMiss], a ld a, $a @@ -3138,14 +3154,14 @@ ExecutePlayerMove: ; 3d65e (f:565e) jp [hl] .playerHasNoSpecialCondition call GetCurrentMove - ld hl, W_PLAYERBATTSTATUS1 + ld hl, wPlayerBattleStatus1 bit ChargingUp, [hl] ; charging up for attack jr nz, PlayerCanExecuteChargingMove call CheckForDisobedience jp z, ExecutePlayerMoveDone CheckIfPlayerNeedsToChargeUp: ; 3d69a (f:569a) - ld a, [W_PLAYERMOVEEFFECT] + ld a, [wPlayerMoveEffect] cp CHARGE_EFFECT jp z, JumpMoveEffect cp FLY_EFFECT @@ -3154,7 +3170,7 @@ CheckIfPlayerNeedsToChargeUp: ; 3d69a (f:569a) ; in-battle stuff PlayerCanExecuteChargingMove: ; 3d6a9 (f:56a9) - ld hl,W_PLAYERBATTSTATUS1 + ld hl,wPlayerBattleStatus1 res ChargingUp,[hl] ; reset charging up and invulnerability statuses if mon was charging up for an attack ; being fully paralyzed or hurting oneself in confusion removes charging up status ; resulting in the Pokemon being invulnerable for the whole battle @@ -3165,19 +3181,19 @@ PlayerCanExecuteMove: ; 3d6b0 (f:56b0) ld de,wPlayerSelectedMove ; pointer to the move just used ld b,BANK(DecrementPP) call Bankswitch - ld a,[W_PLAYERMOVEEFFECT] ; effect of the move just used + ld a,[wPlayerMoveEffect] ; effect of the move just used ld hl,ResidualEffects1 ld de,1 call IsInArray jp c,JumpMoveEffect ; ResidualEffects1 moves skip damage calculation and accuracy tests ; unless executed as part of their exclusive effect functions - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] ld hl,SpecialEffectsCont ld de,1 call IsInArray call c,JumpMoveEffect ; execute the effects of SpecialEffectsCont moves (e.g. Wrap, Thrash) but don't skip anything PlayerCalcMoveDamage: ; 3d6dc (f:56dc) - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] ld hl,SetDamageEffects ld de,1 call IsInArray @@ -3194,33 +3210,33 @@ PlayerCalcMoveDamage: ; 3d6dc (f:56dc) .moveHitTest call MoveHitTest handleIfPlayerMoveMissed - ld a,[W_MOVEMISSED] + ld a,[wMoveMissed] and a jr z,getPlayerAnimationType - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] sub a,EXPLODE_EFFECT jr z,playPlayerMoveAnimation ; don't play any animation if the move missed, unless it was EXPLODE_EFFECT jr playerCheckIfFlyOrChargeEffect getPlayerAnimationType - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] and a ld a,4 ; move has no effect other than dealing damage jr z,playPlayerMoveAnimation ld a,5 ; move has effect playPlayerMoveAnimation push af - ld a,[W_PLAYERBATTSTATUS2] + ld a,[wPlayerBattleStatus2] bit HasSubstituteUp,a ld hl,HideSubstituteShowMonAnim ld b,BANK(HideSubstituteShowMonAnim) call nz,Bankswitch pop af ld [wAnimationType],a - ld a,[W_PLAYERMOVENUM] + ld a,[wPlayerMoveNum] call PlayMoveAnimation call HandleExplodingAnimation call DrawPlayerHUDAndHPBar - ld a,[W_PLAYERBATTSTATUS2] + ld a,[wPlayerBattleStatus2] bit HasSubstituteUp,a ld hl,ReshowSubstituteAnim ld b,BANK(ReshowSubstituteAnim) @@ -3229,7 +3245,7 @@ playPlayerMoveAnimation playerCheckIfFlyOrChargeEffect ld c,30 call DelayFrames - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] cp a,FLY_EFFECT jr z,.playAnim cp a,CHARGE_EFFECT @@ -3241,7 +3257,7 @@ playerCheckIfFlyOrChargeEffect ld a,STATUS_AFFECTED_ANIM call PlayMoveAnimation MirrorMoveCheck - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] cp a,MIRROR_MOVE_EFFECT jr nz,.metronomeCheck call MirrorMoveCopyMove @@ -3255,16 +3271,16 @@ MirrorMoveCheck call MetronomePickMove jp CheckIfPlayerNeedsToChargeUp ; Go back to damage calculation for the move picked by Metronome .next - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] ld hl,ResidualEffects2 ld de,1 call IsInArray jp c,JumpMoveEffect ; done here after executing effects of ResidualEffects2 - ld a,[W_MOVEMISSED] + ld a,[wMoveMissed] and a jr z,.moveDidNotMiss call PrintMoveFailureText - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] cp a,EXPLODE_EFFECT ; even if Explosion or Selfdestruct missed, its effect still needs to be activated jr z,.notDone jp ExecutePlayerMoveDone ; otherwise, we're done if the move missed @@ -3275,7 +3291,7 @@ MirrorMoveCheck ld a,1 ld [wMoveDidntMiss],a .notDone - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] ld hl,AlwaysHappenSideEffects ld de,1 call IsInArray @@ -3287,7 +3303,7 @@ MirrorMoveCheck ret z ; don't do anything else if the enemy fainted call HandleBuildingRage - ld hl,W_PLAYERBATTSTATUS1 + ld hl,wPlayerBattleStatus1 bit AttackingMultipleTimes,[hl] jr z,.executeOtherEffects ld a,[wPlayerNumAttacksLeft] @@ -3301,7 +3317,7 @@ MirrorMoveCheck xor a ld [wPlayerNumHits],a .executeOtherEffects - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] and a jp z,ExecutePlayerMoveDone ld hl,SpecialEffects @@ -3352,10 +3368,10 @@ GetOutText: ; 3d835 (f:5835) db "@" IsGhostBattle: ; 3d83a (f:583a) - ld a,[W_ISINBATTLE] + ld a,[wIsInBattle] dec a ret nz - ld a,[W_CURMAP] + ld a,[wCurMap] cp a,POKEMONTOWER_1 jr c,.next cp a,LAVENDER_HOUSE_1 @@ -3408,7 +3424,7 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) jp .returnToHL .HeldInPlaceCheck - ld a,[W_ENEMYBATTSTATUS1] + ld a,[wEnemyBattleStatus1] bit UsingTrappingMove,a ; is enemy using a mult-turn move like wrap? jp z,.FlinchedCheck ld hl,CantMoveText @@ -3417,7 +3433,7 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) jp .returnToHL .FlinchedCheck - ld hl,W_PLAYERBATTSTATUS1 + ld hl,wPlayerBattleStatus1 bit Flinched,[hl] jp z,.HyperBeamCheck res Flinched,[hl] ; reset player's flinch status @@ -3427,7 +3443,7 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) jp .returnToHL .HyperBeamCheck - ld hl,W_PLAYERBATTSTATUS2 + ld hl,wPlayerBattleStatus2 bit NeedsToRecharge,[hl] jr z,.AnyMoveDisabledCheck res NeedsToRecharge,[hl] ; reset player's recharge status @@ -3437,7 +3453,7 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) jp .returnToHL .AnyMoveDisabledCheck - ld hl,W_PLAYERDISABLEDMOVE + ld hl,wPlayerDisabledMove ld a,[hl] and a jr z,.ConfusedCheck @@ -3451,13 +3467,13 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) call PrintText .ConfusedCheck - ld a,[W_PLAYERBATTSTATUS1] + ld a,[wPlayerBattleStatus1] add a ; is player confused? jr nc,.TriedToUseDisabledMoveCheck - ld hl,W_PLAYERCONFUSEDCOUNTER + ld hl,wPlayerConfusedCounter dec [hl] jr nz,.IsConfused - ld hl,W_PLAYERBATTSTATUS1 + ld hl,wPlayerBattleStatus1 res Confused,[hl] ; if confused counter hit 0, reset confusion status ld hl,ConfusedNoMoreText call PrintText @@ -3472,9 +3488,9 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) call BattleRandom cp a,$80 ; 50% chance to hurt itself jr c,.TriedToUseDisabledMoveCheck - ld hl,W_PLAYERBATTSTATUS1 + ld hl,wPlayerBattleStatus1 ld a,[hl] - and a, 1 << Confused ; if mon hurts itself, clear every other status from W_PLAYERBATTSTATUS1 + and a, 1 << Confused ; if mon hurts itself, clear every other status from wPlayerBattleStatus1 ld [hl],a call HandleSelfConfusionDamage jr .MonHurtItselfOrFullyParalysed @@ -3502,12 +3518,12 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) call PrintText .MonHurtItselfOrFullyParalysed - ld hl,W_PLAYERBATTSTATUS1 + ld hl,wPlayerBattleStatus1 ld a,[hl] ; clear bide, thrashing, charging up, and trapping moves such as warp (already cleared for confusion damage) and $ff ^ ((1 << StoringEnergy) | (1 << ThrashingAbout) | (1 << ChargingUp) | (1 << UsingTrappingMove)) ld [hl],a - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] cp a,FLY_EFFECT jr z,.FlyOrChargeEffect cp a,CHARGE_EFFECT @@ -3524,12 +3540,12 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) jp .returnToHL ; if using a two-turn move, we need to recharge the first turn .BideCheck - ld hl,W_PLAYERBATTSTATUS1 + ld hl,wPlayerBattleStatus1 bit StoringEnergy,[hl] ; is mon using bide? jr z,.ThrashingAboutCheck xor a - ld [W_PLAYERMOVENUM],a - ld hl,W_DAMAGE + ld [wPlayerMoveNum],a + ld hl,wDamage ld a,[hli] ld b,a ld c,[hl] @@ -3546,30 +3562,30 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) ld hl,ExecutePlayerMoveDone jp .returnToHL ; unless mon unleashes energy, can't move this turn .UnleashEnergy - ld hl,W_PLAYERBATTSTATUS1 + ld hl,wPlayerBattleStatus1 res StoringEnergy,[hl] ; not using bide any more ld hl,UnleashedEnergyText call PrintText ld a,1 - ld [W_PLAYERMOVEPOWER],a + ld [wPlayerMovePower],a ld hl,wPlayerBideAccumulatedDamage + 1 ld a,[hld] add a ld b,a - ld [W_DAMAGE + 1],a + ld [wDamage + 1],a ld a,[hl] rl a ; double the damage - ld [W_DAMAGE],a + ld [wDamage],a or b jr nz,.next ld a,1 - ld [W_MOVEMISSED],a + ld [wMoveMissed],a .next xor a ld [hli],a ld [hl],a ld a,BIDE - ld [W_PLAYERMOVENUM],a + ld [wPlayerMoveNum],a ld hl,handleIfPlayerMoveMissed ; skip damage calculation, DecrementPP and MoveHitTest jp .returnToHL @@ -3577,7 +3593,7 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) bit ThrashingAbout,[hl] ; is mon using thrash or petal dance? jr z,.MultiturnMoveCheck ld a,THRASH - ld [W_PLAYERMOVENUM],a + ld [wPlayerMoveNum],a ld hl,ThrashingAboutText call PrintText ld hl,wPlayerNumAttacksLeft @@ -3585,14 +3601,14 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) ld hl,PlayerCalcMoveDamage ; skip DecrementPP jp nz,.returnToHL push hl - ld hl,W_PLAYERBATTSTATUS1 + ld hl,wPlayerBattleStatus1 res ThrashingAbout,[hl] ; no longer thrashing about set Confused,[hl] ; confused call BattleRandom and a,3 inc a inc a ; confused for 2-5 turns - ld [W_PLAYERCONFUSEDCOUNTER],a + ld [wPlayerConfusedCounter],a pop hl ; skip DecrementPP jp .returnToHL @@ -3610,7 +3626,7 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) jp .returnToHL .RageCheck - ld a, [W_PLAYERBATTSTATUS2] + ld a, [wPlayerBattleStatus2] bit UsingRage, a ; is mon using rage? jp z, .checkPlayerStatusConditionsDone ; if we made it this far, mon can move normally this turn ld a, RAGE @@ -3618,7 +3634,7 @@ CheckPlayerStatusConditions: ; 3d854 (f:5854) call GetMoveName call CopyStringToCF4B xor a - ld [W_PLAYERMOVEEFFECT], a + ld [wPlayerMoveEffect], a ld hl, PlayerCanExecuteMove jp .returnToHL @@ -3693,12 +3709,12 @@ CantMoveText: ; 3da83 (f:5a83) PrintMoveIsDisabledText: ; 3da88 (f:5a88) ld hl, wPlayerSelectedMove - ld de, W_PLAYERBATTSTATUS1 + ld de, wPlayerBattleStatus1 ld a, [H_WHOSETURN] and a jr z, .removeChargingUp inc hl - ld de, W_ENEMYBATTSTATUS1 + ld de, wEnemyBattleStatus1 .removeChargingUp ld a, [de] res ChargingUp, a ; end the pokemon's @@ -3725,7 +3741,7 @@ HandleSelfConfusionDamage: ; 3daad (f:5aad) ld [hli], a ld a, [wBattleMonDefense + 1] ld [hl], a - ld hl, W_PLAYERMOVEEFFECT + ld hl, wPlayerMoveEffect push hl ld a, [hl] push af @@ -3771,10 +3787,10 @@ MonName1Text: ; 3dafb (f:5afb) TX_ASM ld a, [H_WHOSETURN] and a - ld a, [W_PLAYERMOVENUM] + ld a, [wPlayerMoveNum] ld hl, wPlayerUsedMove jr z, .asm_3db11 - ld a, [W_ENEMYMOVENUM] + ld a, [wEnemyMoveNum] ld hl, wEnemyUsedMove .asm_3db11 ld [hl], a @@ -3905,11 +3921,11 @@ ExclamationPointMoveSets: ; 3dba3 (f:5ba3) db $FF ; terminator PrintMoveFailureText: ; 3dbe2 (f:5be2) - ld de, W_PLAYERMOVEEFFECT + ld de, wPlayerMoveEffect ld a, [H_WHOSETURN] and a jr z, .playersTurn - ld de, W_ENEMYMOVEEFFECT + ld de, wEnemyMoveEffect .playersTurn ld hl, DoesntAffectMonText ld a, [wDamageMultipliers] @@ -3931,7 +3947,7 @@ PrintMoveFailureText: ; 3dbe2 (f:5be2) ret nz ; if you get here, the mon used jump kick or hi jump kick and missed - ld hl, W_DAMAGE ; since the move missed, W_DAMAGE will always contain 0 at this point. + ld hl, wDamage ; since the move missed, wDamage will always contain 0 at this point. ; Thus, recoil damage will always be equal to 1 ; even if it was intended to be potential damage/8. ld a, [hli] @@ -4041,7 +4057,7 @@ CheckForDisobedience: ; 3dc88 (f:5c88) ; it was traded .monIsTraded ; what level might disobey? - ld hl, W_OBTAINEDBADGES + ld hl, wObtainedBadges bit 7, [hl] ld a, 101 jr nz, .next @@ -4218,15 +4234,15 @@ IgnoredOrdersText: ; 3ddca (f:5dca) ; sets b, c, d, and e for the CalculateDamage routine in the case of an attack by the player mon GetDamageVarsForPlayerAttack: ; 3ddcf (f:5dcf) xor a - ld hl, W_DAMAGE ; damage to eventually inflict, initialise to zero + ld hl, wDamage ; damage to eventually inflict, initialise to zero ldi [hl], a ld [hl], a - ld hl, W_PLAYERMOVEPOWER + ld hl, wPlayerMovePower ld a, [hli] and a ld d, a ; d = move power ret z ; return if move power is zero - ld a, [hl] ; a = [W_PLAYERMOVETYPE] + ld a, [hl] ; a = [wPlayerMoveType] cp FIRE ; types >= FIRE are all special jr nc, .specialAttack .physicalAttack @@ -4234,7 +4250,7 @@ GetDamageVarsForPlayerAttack: ; 3ddcf (f:5dcf) ld a, [hli] ld b, a ld c, [hl] ; bc = enemy defense - ld a, [W_ENEMYBATTSTATUS3] + ld a, [wEnemyBattleStatus3] bit HasReflectUp, a ; check for Reflect jr z, .physicalAttackCritCheck ; if the enemy has used Reflect, double the enemy's defense @@ -4264,7 +4280,7 @@ GetDamageVarsForPlayerAttack: ; 3ddcf (f:5dcf) ld a, [hli] ld b, a ld c, [hl] ; bc = enemy special - ld a, [W_ENEMYBATTSTATUS3] + ld a, [wEnemyBattleStatus3] bit HasLightScreenUp, a ; check for Light Screen jr z, .specialAttackCritCheck ; if the enemy has used Light Screen, double the enemy's special @@ -4330,16 +4346,16 @@ GetDamageVarsForPlayerAttack: ; 3ddcf (f:5dcf) ; sets b, c, d, and e for the CalculateDamage routine in the case of an attack by the enemy mon GetDamageVarsForEnemyAttack: ; 3de75 (f:5e75) - ld hl, W_DAMAGE ; damage to eventually inflict, initialise to zero + ld hl, wDamage ; damage to eventually inflict, initialise to zero xor a ld [hli], a ld [hl], a - ld hl, W_ENEMYMOVEPOWER + ld hl, wEnemyMovePower ld a, [hli] ld d, a ; d = move power and a ret z ; return if move power is zero - ld a, [hl] ; a = [W_ENEMYMOVETYPE] + ld a, [hl] ; a = [wEnemyMoveType] cp FIRE ; types >= FIRE are all special jr nc, .specialAttack .physicalAttack @@ -4347,7 +4363,7 @@ GetDamageVarsForEnemyAttack: ; 3de75 (f:5e75) ld a, [hli] ld b, a ld c, [hl] ; bc = player defense - ld a, [W_PLAYERBATTSTATUS3] + ld a, [wPlayerBattleStatus3] bit HasReflectUp, a ; check for Reflect jr z, .physicalAttackCritCheck ; if the player has used Reflect, double the player's defense @@ -4377,7 +4393,7 @@ GetDamageVarsForEnemyAttack: ; 3de75 (f:5e75) ld a, [hli] ld b, a ld c, [hl] - ld a, [W_PLAYERBATTSTATUS3] + ld a, [wPlayerBattleStatus3] bit HasLightScreenUp, a ; check for Light Screen jr z, .specialAttackCritCheck ; if the player has used Light Screen, double the player's special @@ -4467,7 +4483,7 @@ GetEnemyMonStat: ; 3df1c (f:5f1c) ret .notLinkBattle ld a, [wEnemyMonLevel] - ld [W_CURENEMYLVL], a + ld [wCurEnemyLVL], a ld a, [wEnemyMonSpecies] ld [wd0b5], a call GetMonHeader @@ -4494,9 +4510,9 @@ CalculateDamage: ; 3df65 (f:5f65) ld a, [H_WHOSETURN] ; whose turn? and a - ld a, [W_PLAYERMOVEEFFECT] + ld a, [wPlayerMoveEffect] jr z, .effect - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] .effect ; EXPLODE_EFFECT halves defense. @@ -4573,7 +4589,7 @@ CalculateDamage: ; 3df65 (f:5f65) ld b, 4 call Divide - ld hl, W_DAMAGE + ld hl, wDamage ld b, [hl] ld a, [H_QUOTIENT + 3] add b @@ -4649,7 +4665,7 @@ CalculateDamage: ; 3df65 (f:5f65) JumpToOHKOMoveEffect: ; 3e016 (f:6016) call JumpMoveEffect - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] dec a ret @@ -4676,16 +4692,16 @@ CriticalHitTest: ; 3e023 (f:6023) .asm_3e032 ld [wd0b5], a call GetMonHeader - ld a, [W_MONHBASESPEED] + ld a, [wMonHBaseSpeed] ld b, a srl b ; (effective (base speed/2)) ld a, [H_WHOSETURN] and a - ld hl, W_PLAYERMOVEPOWER - ld de, W_PLAYERBATTSTATUS2 + ld hl, wPlayerMovePower + ld de, wPlayerBattleStatus2 jr z, .calcCriticalHitProbability - ld hl, W_ENEMYMOVEPOWER - ld de, W_ENEMYBATTSTATUS2 + ld hl, wEnemyMovePower + ld de, wEnemyBattleStatus2 .calcCriticalHitProbability ld a, [hld] ; read base power from RAM and a @@ -4752,18 +4768,18 @@ HandleCounterMove: ; 3e093 (f:6093) and a ; player's turn ld hl,wEnemySelectedMove - ld de,W_ENEMYMOVEPOWER + ld de,wEnemyMovePower ld a,[wPlayerSelectedMove] jr z,.next ; enemy's turn ld hl,wPlayerSelectedMove - ld de,W_PLAYERMOVEPOWER + ld de,wPlayerMovePower ld a,[wEnemySelectedMove] .next cp a,COUNTER ret nz ; return if not using Counter ld a,$01 - ld [W_MOVEMISSED],a ; initialize the move missed variable to true (it is set to false below if the move hits) + ld [wMoveMissed],a ; initialize the move missed variable to true (it is set to false below if the move hits) ld a,[hl] cp a,COUNTER ret z ; miss if the opponent's last selected move is Counter. @@ -4781,11 +4797,11 @@ HandleCounterMove: ; 3e093 (f:6093) xor a ret .counterableType - ld hl,W_DAMAGE + ld hl,wDamage ld a,[hli] or [hl] ret z ; If we made it here, Counter still misses if the last move used in battle did no damage to its target. - ; W_DAMAGE is shared by both players, so Counter may strike back damage dealt by the Counter user itself + ; wDamage is shared by both players, so Counter may strike back damage dealt by the Counter user itself ; if the conditions meet, even though 99% of the times damage will come from the target. ; if it did damage, double it ld a,[hl] @@ -4801,27 +4817,27 @@ HandleCounterMove: ; 3e093 (f:6093) ld [hl],a .noCarry xor a - ld [W_MOVEMISSED],a + ld [wMoveMissed],a call MoveHitTest ; do the normal move hit test in addition to Counter's special rules xor a ret ApplyAttackToEnemyPokemon: ; 3e0df (f:60df) - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] cp a,OHKO_EFFECT jr z,ApplyDamageToEnemyPokemon cp a,SUPER_FANG_EFFECT jr z,.superFangEffect cp a,SPECIAL_DAMAGE_EFFECT jr z,.specialDamage - ld a,[W_PLAYERMOVEPOWER] + ld a,[wPlayerMovePower] and a jp z,ApplyAttackToEnemyPokemonDone ; no attack to apply if base power is 0 jr ApplyDamageToEnemyPokemon .superFangEffect ; set the damage to half the target's HP ld hl,wEnemyMonHP - ld de,W_DAMAGE + ld de,wDamage ld a,[hli] srl a ld [de],a @@ -4840,7 +4856,7 @@ ApplyAttackToEnemyPokemon: ; 3e0df (f:60df) ld hl,wBattleMonLevel ld a,[hl] ld b,a ; Seismic Toss deals damage equal to the user's level - ld a,[W_PLAYERMOVENUM] + ld a,[wPlayerMoveNum] cp a,SEISMIC_TOSS jr z,.storeDamage cp a,NIGHT_SHADE @@ -4866,20 +4882,20 @@ ApplyAttackToEnemyPokemon: ; 3e0df (f:60df) jr nc,.loop ld b,a .storeDamage ; store damage value at b - ld hl,W_DAMAGE + ld hl,wDamage xor a ld [hli],a ld a,b ld [hl],a ApplyDamageToEnemyPokemon: ; 3e142 (f:6142) - ld hl,W_DAMAGE + ld hl,wDamage ld a,[hli] ld b,a ld a,[hl] or b jr z,ApplyAttackToEnemyPokemonDone ; we're done if damage is 0 - ld a,[W_ENEMYBATTSTATUS2] + ld a,[wEnemyBattleStatus2] bit HasSubstituteUp,a ; does the enemy have a substitute? jp nz,AttackSubstitute ; subtract the damage from the pokemon's current HP @@ -4897,7 +4913,7 @@ ApplyDamageToEnemyPokemon: ; 3e142 (f:6142) sbc b ld [wEnemyMonHP],a jr nc,.animateHpBar -; if more damage was done than the current HP, zero the HP and set the damage (W_DAMAGE) +; if more damage was done than the current HP, zero the HP and set the damage (wDamage) ; equal to how much HP the pokemon had before the attack ld a,[wHPBarOldHP+1] ld [hli],a @@ -4926,21 +4942,21 @@ ApplyAttackToEnemyPokemonDone: ; 3e19d (f:619d) jp DrawHUDsAndHPBars ApplyAttackToPlayerPokemon: ; 3e1a0 (f:61a0) - ld a,[W_ENEMYMOVEEFFECT] + ld a,[wEnemyMoveEffect] cp a,OHKO_EFFECT jr z,ApplyDamageToPlayerPokemon cp a,SUPER_FANG_EFFECT jr z,.superFangEffect cp a,SPECIAL_DAMAGE_EFFECT jr z,.specialDamage - ld a,[W_ENEMYMOVEPOWER] + ld a,[wEnemyMovePower] and a jp z,ApplyAttackToPlayerPokemonDone jr ApplyDamageToPlayerPokemon .superFangEffect ; set the damage to half the target's HP ld hl,wBattleMonHP - ld de,W_DAMAGE + ld de,wDamage ld a,[hli] srl a ld [de],a @@ -4959,7 +4975,7 @@ ApplyAttackToPlayerPokemon: ; 3e1a0 (f:61a0) ld hl,wEnemyMonLevel ld a,[hl] ld b,a - ld a,[W_ENEMYMOVENUM] + ld a,[wEnemyMoveNum] cp a,SEISMIC_TOSS jr z,.storeDamage cp a,NIGHT_SHADE @@ -4985,20 +5001,20 @@ ApplyAttackToPlayerPokemon: ; 3e1a0 (f:61a0) jr nc,.loop ld b,a .storeDamage - ld hl,W_DAMAGE + ld hl,wDamage xor a ld [hli],a ld a,b ld [hl],a ApplyDamageToPlayerPokemon: ; 3e200 (f:6200) - ld hl,W_DAMAGE + ld hl,wDamage ld a,[hli] ld b,a ld a,[hl] or b jr z,ApplyAttackToPlayerPokemonDone ; we're done if damage is 0 - ld a,[W_PLAYERBATTSTATUS2] + ld a,[wPlayerBattleStatus2] bit HasSubstituteUp,a ; does the player have a substitute? jp nz,AttackSubstitute ; subtract the damage from the pokemon's current HP @@ -5017,7 +5033,7 @@ ApplyDamageToPlayerPokemon: ; 3e200 (f:6200) ld [wBattleMonHP],a ld [wHPBarNewHP+1],a jr nc,.animateHpBar -; if more damage was done than the current HP, zero the HP and set the damage (W_DAMAGE) +; if more damage was done than the current HP, zero the HP and set the damage (wDamage) ; equal to how much HP the pokemon had before the attack ld a,[wHPBarOldHP+1] ld [hli],a @@ -5055,15 +5071,15 @@ AttackSubstitute: ; 3e25e (f:625e) call PrintText ; values for player turn ld de,wEnemySubstituteHP - ld bc,W_ENEMYBATTSTATUS2 + ld bc,wEnemyBattleStatus2 ld a,[H_WHOSETURN] and a jr z,.applyDamageToSubstitute ; values for enemy turn ld de,wPlayerSubstituteHP - ld bc,W_PLAYERBATTSTATUS2 + ld bc,wPlayerBattleStatus2 .applyDamageToSubstitute - ld hl,W_DAMAGE + ld hl,wDamage ld a,[hli] and a jr nz,.substituteBroke ; damage > 0xFF always breaks substitutes @@ -5073,7 +5089,7 @@ AttackSubstitute: ; 3e25e (f:625e) ld [de],a ret nc .substituteBroke -; If the target's Substitute breaks, W_DAMAGE isn't updated with the amount of HP +; If the target's Substitute breaks, wDamage isn't updated with the amount of HP ; the Substitute had before being attacked. ld h,b ld l,c @@ -5089,10 +5105,10 @@ AttackSubstitute: ; 3e25e (f:625e) ld a,[H_WHOSETURN] xor a,$01 ld [H_WHOSETURN],a - ld hl,W_PLAYERMOVEEFFECT ; value for player's turn + ld hl,wPlayerMoveEffect ; value for player's turn and a jr z,.nullifyEffect - ld hl,W_ENEMYMOVEEFFECT ; value for enemy's turn + ld hl,wEnemyMoveEffect ; value for enemy's turn .nullifyEffect xor a ld [hl],a ; zero the effect of the attacker's move @@ -5109,16 +5125,16 @@ SubstituteBrokeText: ; 3e2b1 (f:62b1) ; this function raises the attack modifier of a pokemon using Rage when that pokemon is attacked HandleBuildingRage: ; 3e2b6 (f:62b6) ; values for the player turn - ld hl,W_ENEMYBATTSTATUS2 + ld hl,wEnemyBattleStatus2 ld de,wEnemyMonStatMods - ld bc,W_ENEMYMOVENUM + ld bc,wEnemyMoveNum ld a,[H_WHOSETURN] and a jr z,.next ; values for the enemy turn - ld hl,W_PLAYERBATTSTATUS2 + ld hl,wPlayerBattleStatus2 ld de,wPlayerMonStatMods - ld bc,W_PLAYERMOVENUM + ld bc,wPlayerMoveNum .next bit UsingRage,[hl] ; is the pokemon being attacked under the effect of Rage? ret z ; return if not @@ -5167,11 +5183,11 @@ MirrorMoveCopyMove: ; 3e2fd (f:62fd) ; values for player turn ld a,[wEnemyUsedMove] ld hl,wPlayerSelectedMove - ld de,W_PLAYERMOVENUM + ld de,wPlayerMoveNum jr z,.next ; values for enemy turn ld a,[wPlayerUsedMove] - ld de,W_ENEMYMOVENUM + ld de,wEnemyMoveNum ld hl,wEnemySelectedMove .next ld [hl],a @@ -5194,7 +5210,7 @@ ReloadMoveData: ; 3e329 (f:6329) ld [wd11e],a dec a ld hl,Moves - ld bc,$0006 + ld bc,MoveEnd - Moves call AddNTimes ld a,BANK(Moves) call FarCopyData ; copy the move's stats @@ -5213,13 +5229,13 @@ MetronomePickMove: ; 3e348 (f:6348) ld a,METRONOME call PlayMoveAnimation ; play Metronome's animation ; values for player turn - ld de,W_PLAYERMOVENUM + ld de,wPlayerMoveNum ld hl,wPlayerSelectedMove ld a,[H_WHOSETURN] and a jr z,.pickMoveLoop ; values for enemy turn - ld de,W_ENEMYMOVENUM + ld de,wEnemyMoveNum ld hl,wEnemySelectedMove ; loop to pick a random number in the range [1, $a5) to be the move used by Metronome .pickMoveLoop @@ -5278,8 +5294,8 @@ AdjustDamageForMoveType: ; 3e3a5 (f:63a5) ld a,[hli] ld d,a ; d = type 1 of defender ld e,[hl] ; e = type 2 of defender - ld a,[W_PLAYERMOVETYPE] - ld [wd11e],a + ld a,[wPlayerMoveType] + ld [wMoveType],a ld a,[H_WHOSETURN] and a jr z,.next @@ -5292,10 +5308,10 @@ AdjustDamageForMoveType: ; 3e3a5 (f:63a5) ld a,[hli] ld d,a ; d = type 1 of defender ld e,[hl] ; e = type 2 of defender - ld a,[W_ENEMYMOVETYPE] - ld [wd11e],a + ld a,[wEnemyMoveType] + ld [wMoveType],a .next - ld a,[wd11e] ; move type + ld a,[wMoveType] cp b ; does the move type match type 1 of the attacker? jr z,.sameTypeAttackBonus cp c ; does the move type match type 2 of the attacker? @@ -5303,7 +5319,7 @@ AdjustDamageForMoveType: ; 3e3a5 (f:63a5) jr .skipSameTypeAttackBonus .sameTypeAttackBonus ; if the move type matches one of the attacker's types - ld hl,W_DAMAGE + 1 + ld hl,wDamage + 1 ld a,[hld] ld h,[hl] ld l,a ; hl = damage @@ -5314,14 +5330,14 @@ AdjustDamageForMoveType: ; 3e3a5 (f:63a5) add hl,bc ; hl = floor(1.5 * damage) ; store damage ld a,h - ld [W_DAMAGE],a + ld [wDamage],a ld a,l - ld [W_DAMAGE + 1],a + ld [wDamage + 1],a ld hl,wDamageMultipliers set 7,[hl] .skipSameTypeAttackBonus - ld a,[wd11e] - ld b,a ; b = move type + ld a,[wMoveType] + ld b,a ld hl,TypeEffects .loop ld a,[hli] ; a = "attacking type" of the current type pair @@ -5349,7 +5365,7 @@ AdjustDamageForMoveType: ; 3e3a5 (f:63a5) ld [wDamageMultipliers],a xor a ld [H_MULTIPLICAND],a - ld hl,W_DAMAGE + ld hl,wDamage ld a,[hli] ld [H_MULTIPLICAND + 1],a ld a,[hld] @@ -5370,7 +5386,7 @@ AdjustDamageForMoveType: ; 3e3a5 (f:63a5) ; if damage is 0, make the move miss ; this only occurs if a move that would do 2 or 3 damage is 0.25x effective against the target inc a - ld [W_MOVEMISSED],a + ld [wMoveMissed],a .skipTypeImmunity pop bc pop hl @@ -5384,29 +5400,29 @@ AdjustDamageForMoveType: ; 3e3a5 (f:63a5) ; function to tell how effective the type of an enemy attack is on the player's current pokemon ; this doesn't take into account the effects that dual types can have ; (e.g. 4x weakness / resistance, weaknesses and resistances canceling) -; the result is stored in [wd11e] +; the result is stored in [wTypeEffectiveness] ; ($05 is not very effective, $10 is neutral, $14 is super effective) ; as far is can tell, this is only used once in some AI code to help decide which move to use AIGetTypeEffectiveness: ; 3e449 (f:6449) - ld a,[W_ENEMYMOVETYPE] - ld d,a ; d = type of enemy move + ld a,[wEnemyMoveType] + ld d,a ; d = type of enemy move ld hl,wBattleMonType - ld b,[hl] ; b = type 1 of player's pokemon + ld b,[hl] ; b = type 1 of player's pokemon inc hl - ld c,[hl] ; c = type 2 of player's pokemon + ld c,[hl] ; c = type 2 of player's pokemon ld a,$10 - ld [wd11e],a ; initialize [wd11e] to neutral effectiveness + ld [wTypeEffectiveness],a ; initialize to neutral effectiveness ld hl,TypeEffects .loop ld a,[hli] cp a,$ff ret z - cp d ; match the type of the move + cp d ; match the type of the move jr nz,.nextTypePair1 ld a,[hli] - cp b ; match with type 1 of pokemon + cp b ; match with type 1 of pokemon jr z,.done - cp c ; or match with type 2 of pokemon + cp c ; or match with type 2 of pokemon jr z,.done jr .nextTypePair2 .nextTypePair1 @@ -5416,7 +5432,7 @@ AIGetTypeEffectiveness: ; 3e449 (f:6449) jr .loop .done ld a,[hl] - ld [wd11e],a ; store damage multiplier + ld [wTypeEffectiveness],a ; store damage multiplier ret INCLUDE "data/type_effects.asm" @@ -5424,15 +5440,15 @@ INCLUDE "data/type_effects.asm" ; some tests that need to pass for a move to hit MoveHitTest: ; 3e56b (f:656b) ; player's turn - ld hl,W_ENEMYBATTSTATUS1 - ld de,W_PLAYERMOVEEFFECT + ld hl,wEnemyBattleStatus1 + ld de,wPlayerMoveEffect ld bc,wEnemyMonStatus ld a,[H_WHOSETURN] and a jr z,.dreamEaterCheck ; enemy's turn - ld hl,W_PLAYERBATTSTATUS1 - ld de,W_ENEMYMOVEEFFECT + ld hl,wPlayerBattleStatus1 + ld de,wEnemyMoveEffect ld bc,wBattleMonStatus .dreamEaterCheck ld a,[de] @@ -5461,7 +5477,7 @@ MoveHitTest: ; 3e56b (f:656b) jr nz,.enemyTurn .playerTurn ; this checks if the move effect is disallowed by mist - ld a,[W_PLAYERMOVEEFFECT] + ld a,[wPlayerMoveEffect] cp a,ATTACK_DOWN1_EFFECT jr c,.skipEnemyMistCheck cp a,HAZE_EFFECT + 1 @@ -5478,16 +5494,16 @@ MoveHitTest: ; 3e56b (f:656b) ; FLASH, CONVERSION*, HAZE*, SCREECH, LIGHT SCREEN*, REFLECT* ; the moves that are marked with an asterisk are not affected since this ; function is not called when those moves are used - ld a,[W_ENEMYBATTSTATUS2] + ld a,[wEnemyBattleStatus2] bit ProtectedByMist,a ; is mon protected by mist? jp nz,.moveMissed .skipEnemyMistCheck - ld a,[W_PLAYERBATTSTATUS2] + ld a,[wPlayerBattleStatus2] bit UsingXAccuracy,a ; is the player using X Accuracy? ret nz ; if so, always hit regardless of accuracy/evasion jr .calcHitChance .enemyTurn - ld a,[W_ENEMYMOVEEFFECT] + ld a,[wEnemyMoveEffect] cp a,ATTACK_DOWN1_EFFECT jr c,.skipPlayerMistCheck cp a,HAZE_EFFECT + 1 @@ -5499,21 +5515,21 @@ MoveHitTest: ; 3e56b (f:656b) jr .skipPlayerMistCheck .playerMistCheck ; similar to enemy mist check - ld a,[W_PLAYERBATTSTATUS2] + ld a,[wPlayerBattleStatus2] bit ProtectedByMist,a ; is mon protected by mist? jp nz,.moveMissed .skipPlayerMistCheck - ld a,[W_ENEMYBATTSTATUS2] + ld a,[wEnemyBattleStatus2] bit UsingXAccuracy,a ; is the enemy using X Accuracy? ret nz ; if so, always hit regardless of accuracy/evasion .calcHitChance call CalcHitChance ; scale the move accuracy according to attacker's accuracy and target's evasion - ld a,[W_PLAYERMOVEACCURACY] + ld a,[wPlayerMoveAccuracy] ld b,a ld a,[H_WHOSETURN] and a jr z,.doAccuracyCheck - ld a,[W_ENEMYMOVEACCURACY] + ld a,[wEnemyMoveAccuracy] ld b,a .doAccuracyCheck ; if the random number generated is greater than or equal to the scaled accuracy, the move misses @@ -5524,26 +5540,26 @@ MoveHitTest: ; 3e56b (f:656b) ret .moveMissed xor a - ld hl,W_DAMAGE ; zero the damage + ld hl,wDamage ; zero the damage ld [hli],a ld [hl],a inc a - ld [W_MOVEMISSED],a + ld [wMoveMissed],a ld a,[H_WHOSETURN] and a jr z,.playerTurn2 .enemyTurn2 - ld hl,W_ENEMYBATTSTATUS1 + ld hl,wEnemyBattleStatus1 res UsingTrappingMove,[hl] ; end multi-turn attack e.g. wrap ret .playerTurn2 - ld hl,W_PLAYERBATTSTATUS1 + ld hl,wPlayerBattleStatus1 res UsingTrappingMove,[hl] ; end multi-turn attack e.g. wrap ret ; values for player turn CalcHitChance: ; 3e624 (f:6624) - ld hl,W_PLAYERMOVEACCURACY + ld hl,wPlayerMoveAccuracy ld a,[H_WHOSETURN] and a ld a,[wPlayerMonAccuracyMod] @@ -5552,7 +5568,7 @@ CalcHitChance: ; 3e624 (f:6624) ld c,a jr z,.next ; values for enemy turn - ld hl,W_ENEMYMOVEACCURACY + ld hl,wEnemyMoveAccuracy ld a,[wEnemyMonAccuracyMod] ld b,a ld a,[wPlayerMonEvasionMod] @@ -5615,7 +5631,7 @@ CalcHitChance: ; 3e624 (f:6624) ; multiplies damage by a random percentage from ~85% to 100% RandomizeDamage: ; 3e687 (f:6687) - ld hl, W_DAMAGE + ld hl, wDamage ld a, [hli] and a jr nz, .DamageGreaterThanOne @@ -5644,7 +5660,7 @@ RandomizeDamage: ; 3e687 (f:6687) call Divide ; divide the result by 255 ; store the modified damage ld a, [H_QUOTIENT + 2] - ld hl, W_DAMAGE + ld hl, wDamage ld [hli], a ld a, [H_QUOTIENT + 3] ld [hl], a @@ -5670,7 +5686,7 @@ ExecuteEnemyMove: ; 3e6bc (f:66bc) ld hl, wAILayer2Encouragement inc [hl] xor a - ld [W_MOVEMISSED], a + ld [wMoveMissed], a ld [wMoveDidntMiss], a ld a, $a ld [wDamageMultipliers], a @@ -5678,23 +5694,23 @@ ExecuteEnemyMove: ; 3e6bc (f:66bc) jr nz, .enemyHasNoSpecialConditions jp [hl] .enemyHasNoSpecialConditions - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 bit ChargingUp, [hl] ; is the enemy charging up for attack? jr nz, EnemyCanExecuteChargingMove ; if so, jump call GetCurrentMove CheckIfEnemyNeedsToChargeUp: ; 3e6fc (f:66fc) - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] cp CHARGE_EFFECT jp z, JumpMoveEffect cp FLY_EFFECT jp z, JumpMoveEffect jr EnemyCanExecuteMove EnemyCanExecuteChargingMove: ; 3e70b (f:670b) - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 res ChargingUp, [hl] ; no longer charging up for attack res Invulnerable, [hl] ; no longer invulnerable to typical attacks - ld a, [W_ENEMYMOVENUM] + ld a, [wEnemyMoveNum] ld [wd0b5], a ld a, BANK(MoveNames) ld [wPredefBank], a @@ -5707,19 +5723,19 @@ EnemyCanExecuteMove: ; 3e72b (f:672b) xor a ld [wMonIsDisobedient], a call PrintMonName1Text - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] ld hl, ResidualEffects1 ld de, $1 call IsInArray jp c, JumpMoveEffect - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] ld hl, SpecialEffectsCont ld de, $1 call IsInArray call c, JumpMoveEffect EnemyCalcMoveDamage: ; 3e750 (f:6750) call SwapPlayerAndEnemyLevels - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] ld hl, SetDamageEffects ld de, $1 call IsInArray @@ -5738,10 +5754,10 @@ EnemyCalcMoveDamage: ; 3e750 (f:6750) EnemyMoveHitTest: ; 3e77f (f:677f) call MoveHitTest handleIfEnemyMoveMissed: ; 3e782 (f:6782) - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] and a jr z, .asm_3e791 - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] cp EXPLODE_EFFECT jr z, asm_3e7a0 jr EnemyCheckIfFlyOrChargeEffect @@ -5749,7 +5765,7 @@ handleIfEnemyMoveMissed: ; 3e782 (f:6782) call SwapPlayerAndEnemyLevels GetEnemyAnimationType: ; 3e794 (f:6794) - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] and a ld a, $1 jr z, playEnemyMoveAnimation @@ -5760,18 +5776,18 @@ asm_3e7a0: ; 3e7a0 (f:67a0) xor a playEnemyMoveAnimation: ; 3e7a4 (f:67a4) push af - ld a, [W_ENEMYBATTSTATUS2] + ld a, [wEnemyBattleStatus2] bit HasSubstituteUp, a ; does mon have a substitute? ld hl, HideSubstituteShowMonAnim ld b, BANK(HideSubstituteShowMonAnim) call nz, Bankswitch pop af ld [wAnimationType], a - ld a, [W_ENEMYMOVENUM] + ld a, [wEnemyMoveNum] call PlayMoveAnimation call HandleExplodingAnimation call DrawEnemyHUDAndHPBar - ld a, [W_ENEMYBATTSTATUS2] + ld a, [wEnemyBattleStatus2] bit HasSubstituteUp, a ; does mon have a substitute? ld hl, ReshowSubstituteAnim ld b, BANK(ReshowSubstituteAnim) @@ -5782,7 +5798,7 @@ EnemyCheckIfFlyOrChargeEffect: ; 3e7d1 (f:67d1) call SwapPlayerAndEnemyLevels ld c, 30 call DelayFrames - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] cp FLY_EFFECT jr z, .playAnim cp CHARGE_EFFECT @@ -5794,7 +5810,7 @@ EnemyCheckIfFlyOrChargeEffect: ; 3e7d1 (f:67d1) ld a,STATUS_AFFECTED_ANIM call PlayMoveAnimation EnemyCheckIfMirrorMoveEffect: ; 3e7ef (f:67ef) - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] cp MIRROR_MOVE_EFFECT jr nz, .notMirrorMoveEffect call MirrorMoveCopyMove @@ -5806,16 +5822,16 @@ EnemyCheckIfMirrorMoveEffect: ; 3e7ef (f:67ef) call MetronomePickMove jp CheckIfEnemyNeedsToChargeUp .notMetronomeEffect - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] ld hl, ResidualEffects2 ld de, $1 call IsInArray jp c, JumpMoveEffect - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] and a jr z, .asm_3e82b call PrintMoveFailureText - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] cp EXPLODE_EFFECT jr z, .asm_3e83e jp ExecuteEnemyMoveDone @@ -5826,7 +5842,7 @@ EnemyCheckIfMirrorMoveEffect: ; 3e7ef (f:67ef) ld a, 1 ld [wMoveDidntMiss], a .asm_3e83e - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] ld hl, AlwaysHappenSideEffects ld de, $1 call IsInArray @@ -5837,7 +5853,7 @@ EnemyCheckIfMirrorMoveEffect: ; 3e7ef (f:67ef) or b ret z call HandleBuildingRage - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 bit AttackingMultipleTimes, [hl] ; is mon hitting multiple times? (example: double kick) jr z, .asm_3e873 push hl @@ -5851,7 +5867,7 @@ EnemyCheckIfMirrorMoveEffect: ; 3e7ef (f:67ef) xor a ld [wEnemyNumHits], a .asm_3e873 - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] and a jr z, ExecuteEnemyMoveDone ld hl, SpecialEffects @@ -5904,7 +5920,7 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) ld hl, ExecuteEnemyMoveDone ; enemy can't move this turn jp .enemyReturnToHL .checkIfTrapped - ld a, [W_PLAYERBATTSTATUS1] + ld a, [wPlayerBattleStatus1] bit UsingTrappingMove, a ; is the player using a multi-turn attack like warp jp z, .checkIfFlinched ld hl, CantMoveText @@ -5912,7 +5928,7 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) ld hl, ExecuteEnemyMoveDone ; enemy can't move this turn jp .enemyReturnToHL .checkIfFlinched - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 bit Flinched, [hl] ; check if enemy mon flinched jp z, .checkIfMustRecharge res Flinched, [hl] @@ -5921,7 +5937,7 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) ld hl, ExecuteEnemyMoveDone ; enemy can't move this turn jp .enemyReturnToHL .checkIfMustRecharge - ld hl, W_ENEMYBATTSTATUS2 + ld hl, wEnemyBattleStatus2 bit NeedsToRecharge, [hl] ; check if enemy mon has to recharge after using a move jr z, .checkIfAnyMoveDisabled res NeedsToRecharge, [hl] @@ -5930,7 +5946,7 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) ld hl, ExecuteEnemyMoveDone ; enemy can't move this turn jp .enemyReturnToHL .checkIfAnyMoveDisabled - ld hl, W_ENEMYDISABLEDMOVE + ld hl, wEnemyDisabledMove ld a, [hl] and a jr z, .checkIfConfused @@ -5943,13 +5959,13 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) ld hl, DisabledNoMoreText call PrintText .checkIfConfused - ld a, [W_ENEMYBATTSTATUS1] + ld a, [wEnemyBattleStatus1] add a ; check if enemy mon is confused jp nc, .checkIfTriedToUseDisabledMove - ld hl, W_ENEMYCONFUSEDCOUNTER + ld hl, wEnemyConfusedCounter dec [hl] jr nz, .isConfused - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 res Confused, [hl] ; if confused counter hit 0, reset confusion status ld hl, ConfusedNoMoreText call PrintText @@ -5964,9 +5980,9 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) call BattleRandom cp $80 jr c, .checkIfTriedToUseDisabledMove - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 ld a, [hl] - and 1 << Confused ; if mon hurts itself, clear every other status from W_ENEMYBATTSTATUS1 + and 1 << Confused ; if mon hurts itself, clear every other status from wEnemyBattleStatus1 ld [hl], a ld hl, HurtItselfText call PrintText @@ -5979,7 +5995,7 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) ld [hli], a ld a, [wEnemyMonDefense + 1] ld [hl], a - ld hl, W_ENEMYMOVEEFFECT + ld hl, wEnemyMoveEffect push hl ld a, [hl] push af @@ -6030,12 +6046,12 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) ld hl, FullyParalyzedText call PrintText .monHurtItselfOrFullyParalysed - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 ld a, [hl] ; clear bide, thrashing about, charging up, and multi-turn moves such as warp and $ff ^ ((1 << StoringEnergy) | (1 << ThrashingAbout) | (1 << ChargingUp) | (1 << UsingTrappingMove)) ld [hl], a - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] cp FLY_EFFECT jr z, .flyOrChargeEffect cp CHARGE_EFFECT @@ -6050,12 +6066,12 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) ld hl, ExecuteEnemyMoveDone jp .enemyReturnToHL ; if using a two-turn move, enemy needs to recharge the first turn .checkIfUsingBide - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 bit StoringEnergy, [hl] ; is mon using bide? jr z, .checkIfThrashingAbout xor a - ld [W_ENEMYMOVENUM], a - ld hl, W_DAMAGE + ld [wEnemyMoveNum], a + ld hl, wDamage ld a, [hli] ld b, a ld c, [hl] @@ -6072,30 +6088,30 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) ld hl, ExecuteEnemyMoveDone jp .enemyReturnToHL ; unless mon unleashes energy, can't move this turn .unleashEnergy - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 res StoringEnergy, [hl] ; not using bide any more ld hl, UnleashedEnergyText call PrintText ld a, $1 - ld [W_ENEMYMOVEPOWER], a + ld [wEnemyMovePower], a ld hl, wEnemyBideAccumulatedDamage + 1 ld a, [hld] add a ld b, a - ld [W_DAMAGE + 1], a + ld [wDamage + 1], a ld a, [hl] rl a ; double the damage - ld [W_DAMAGE], a + ld [wDamage], a or b jr nz, .next ld a, $1 - ld [W_MOVEMISSED], a + ld [wMoveMissed], a .next xor a ld [hli], a ld [hl], a ld a, BIDE - ld [W_ENEMYMOVENUM], a + ld [wEnemyMoveNum], a call SwapPlayerAndEnemyLevels ld hl, handleIfEnemyMoveMissed ; skip damage calculation, DecrementPP and MoveHitTest jp .enemyReturnToHL @@ -6103,7 +6119,7 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) bit ThrashingAbout, [hl] ; is mon using thrash or petal dance? jr z, .checkIfUsingMultiturnMove ld a, THRASH - ld [W_ENEMYMOVENUM], a + ld [wEnemyMoveNum], a ld hl, ThrashingAboutText call PrintText ld hl, wEnemyNumAttacksLeft @@ -6111,14 +6127,14 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) ld hl, EnemyCalcMoveDamage ; skip DecrementPP jp nz, .enemyReturnToHL push hl - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 res ThrashingAbout, [hl] ; mon is no longer using thrash or petal dance set Confused, [hl] ; mon is now confused call BattleRandom and $3 inc a inc a ; confused for 2-5 turns - ld [W_ENEMYCONFUSEDCOUNTER], a + ld [wEnemyConfusedCounter], a pop hl ; skip DecrementPP jp .enemyReturnToHL .checkIfUsingMultiturnMove @@ -6133,7 +6149,7 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) jp nz, .enemyReturnToHL jp .enemyReturnToHL .checkIfUsingRage - ld a, [W_ENEMYBATTSTATUS2] + ld a, [wEnemyBattleStatus2] bit UsingRage, a ; is mon using rage? jp z, .checkEnemyStatusConditionsDone ; if we made it this far, mon can move normally this turn ld a, RAGE @@ -6141,7 +6157,7 @@ CheckEnemyStatusConditions: ; 3e88f (f:688f) call GetMoveName call CopyStringToCF4B xor a - ld [W_ENEMYMOVEEFFECT], a + ld [wEnemyMoveEffect], a ld hl, EnemyCanExecuteMove jp .enemyReturnToHL .enemyReturnToHL @@ -6156,21 +6172,21 @@ GetCurrentMove: ; 3eabe (f:6abe) ld a, [H_WHOSETURN] and a jp z, .player - ld de, W_ENEMYMOVENUM + ld de, wEnemyMoveNum ld a, [wEnemySelectedMove] jr .selected .player - ld de, W_PLAYERMOVENUM - ld a, [W_FLAGS_D733] - bit 0, a - ld a, [wccd9] + ld de, wPlayerMoveNum + ld a, [wFlags_D733] + bit BIT_TEST_BATTLE, a + ld a, [wTestBattlePlayerSelectedMove] jr nz, .selected ld a, [wPlayerSelectedMove] .selected ld [wd0b5], a dec a ld hl, Moves - ld bc, $6 + ld bc, MoveEnd - Moves call AddNTimes ld a, BANK(Moves) call FarCopyData @@ -6191,13 +6207,13 @@ LoadEnemyMonData: ; 3eb01 (f:6b01) ld [wEnemyMonSpecies], a ld [wd0b5], a call GetMonHeader - ld a, [W_ENEMYBATTSTATUS3] + ld a, [wEnemyBattleStatus3] bit Transformed, a ; is enemy mon transformed? - ld hl, wcceb ; copied DVs from when it used Transform + ld hl, wTransformedEnemyMonOriginalDVs ; original DVs before transforming ld a, [hli] ld b, [hl] jr nz, .storeDVs - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] cp $2 ; is it a trainer battle? ; fixed DVs for trainer mon ld a, $98 @@ -6212,7 +6228,7 @@ LoadEnemyMonData: ; 3eb01 (f:6b01) ld [hli], a ld [hl], b ld de, wEnemyMonLevel - ld a, [W_CURENEMYLVL] + ld a, [wCurEnemyLVL] ld [de], a inc de ld b, $0 @@ -6220,10 +6236,10 @@ LoadEnemyMonData: ; 3eb01 (f:6b01) push hl call CalcStats pop hl - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] cp $2 ; is it a trainer battle? jr z, .copyHPAndStatusFromPartyData - ld a, [W_ENEMYBATTSTATUS3] + ld a, [wEnemyBattleStatus3] bit Transformed, a ; is enemy mon transformed? jr nz, .copyTypes ; if transformed, jump ; if it's a wild mon and not transformed, init the current HP to max HP and the status to 0 @@ -6252,7 +6268,7 @@ LoadEnemyMonData: ; 3eb01 (f:6b01) ld [wEnemyMonStatus], a jr .copyTypes .copyTypes - ld hl, W_MONHTYPES + ld hl, wMonHTypes ld de, wEnemyMonType ld a, [hli] ; copy type 1 ld [de], a @@ -6263,7 +6279,7 @@ LoadEnemyMonData: ; 3eb01 (f:6b01) ld a, [hli] ; copy catch rate ld [de], a inc de - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] cp $2 ; is it a trainer battle? jr nz, .copyStandardMoves ; if it's a trainer battle, copy moves from enemy party data @@ -6276,7 +6292,7 @@ LoadEnemyMonData: ; 3eb01 (f:6b01) jr .loadMovePPs .copyStandardMoves ; for a wild mon, first copy default moves from the mon header - ld hl, W_MONHMOVES + ld hl, wMonHMoves ld a, [hli] ld [de], a inc de @@ -6298,7 +6314,7 @@ LoadEnemyMonData: ; 3eb01 (f:6b01) ld hl, wEnemyMonMoves ld de, wEnemyMonPP - 1 predef LoadMovePPs - ld hl, W_MONHBASESTATS + ld hl, wMonHBaseStats ld de, wEnemyMonBaseStats ld b, NUM_STATS .copyBaseStatsLoop @@ -6307,7 +6323,7 @@ LoadEnemyMonData: ; 3eb01 (f:6b01) inc de dec b jr nz, .copyBaseStatsLoop - ld hl, W_MONHCATCHRATE + ld hl, wMonHCatchRate ld a, [hli] ld [de], a inc de @@ -6318,7 +6334,7 @@ LoadEnemyMonData: ; 3eb01 (f:6b01) call GetMonName ld hl, wcd6d ld de, wEnemyMonNick - ld bc, 11 + ld bc, NAME_LENGTH call CopyData ld a, [wEnemyMonSpecies2] ld [wd11e], a @@ -6375,7 +6391,7 @@ DoBattleTransitionAndInitBattleVariables: ; 3ec32 (f:6c32) ld [hli], a ld [hli], a ld [hl], a - ld [W_PLAYERDISABLEDMOVE], a + ld [wPlayerDisabledMove], a ret ; swaps the level values of the BattleMon and EnemyMon structs @@ -6394,7 +6410,7 @@ SwapPlayerAndEnemyLevels: ; 3ec81 (f:6c81) ; also writes OAM data and loads tile patterns for the Red or Old Man back sprite's head ; (for use when scrolling the player sprite and enemy's silhouettes on screen) LoadPlayerBackPic: ; 3ec92 (f:6c92) - ld a, [W_BATTLETYPE] + ld a, [wBattleType] dec a ; is it the old man tutorial? ld de, RedPicBack jr nz, .next @@ -6441,7 +6457,7 @@ LoadPlayerBackPic: ; 3ec92 (f:6c92) xor a ld [$4000], a ld hl, vSprites - ld de, S_SPRITEBUFFER1 + ld de, sSpriteBuffer1 ld a, [H_LOADEDROMBANK] ld b, a ld c, 7 * 7 @@ -6569,12 +6585,12 @@ CalculateModifiedStats: ; 3ed99 (f:6d99) CalculateModifiedStat: ; 3eda5 (f:6da5) push bc push bc - ld a, [wd11e] + ld a, [wCalculateWhoseStats] and a ld a, c ld hl, wBattleMonAttack ld de, wPlayerMonUnmodifiedAttack - ld bc, wPlayerMonAttackMod + ld bc, wPlayerMonStatMods jr z, .next ld hl, wEnemyMonAttack ld de, wEnemyMonUnmodifiedAttack @@ -6648,7 +6664,7 @@ ApplyBadgeStatBoosts: ; 3ee19 (f:6e19) ld a, [wLinkState] cp LINK_STATE_BATTLING ret z ; return if link battle - ld a, [W_OBTAINEDBADGES] + ld a, [wObtainedBadges] ld b, a ld hl, wBattleMonAttack ld c, $4 @@ -6707,22 +6723,22 @@ LoadHudTilePatterns: ; 3ee5b (f:6e5b) .lcdDisabled ld hl, BattleHudTiles1 ld de, vChars2 + $6d0 - ld bc, $18 + ld bc, BattleHudTiles1End - BattleHudTiles1 ld a, BANK(BattleHudTiles1) call FarCopyDataDouble ld hl, BattleHudTiles2 ld de, vChars2 + $730 - ld bc, $30 + ld bc, BattleHudTiles3End - BattleHudTiles2 ld a, BANK(BattleHudTiles2) jp FarCopyDataDouble .lcdEnabled ld de, BattleHudTiles1 ld hl, vChars2 + $6d0 - lb bc, BANK(BattleHudTiles1), $03 + lb bc, BANK(BattleHudTiles1), (BattleHudTiles1End - BattleHudTiles1) / $8 call CopyVideoDataDouble ld de, BattleHudTiles2 ld hl, vChars2 + $730 - lb bc, BANK(BattleHudTiles2), $06 + lb bc, BANK(BattleHudTiles2), (BattleHudTiles3End - BattleHudTiles2) / $8 jp CopyVideoDataDouble PrintEmptyString: ; 3ee94 (f:6e94) @@ -6788,12 +6804,12 @@ HandleExplodingAnimation: ; 3eed3 (f:6ed3) ld a, [H_WHOSETURN] and a ld hl, wEnemyMonType1 - ld de, W_ENEMYBATTSTATUS1 - ld a, [W_PLAYERMOVENUM] + ld de, wEnemyBattleStatus1 + ld a, [wPlayerMoveNum] jr z, .asm_3eeea ld hl, wBattleMonType1 - ld de, W_ENEMYBATTSTATUS1 - ld a, [W_ENEMYMOVENUM] + ld de, wEnemyBattleStatus1 + ld a, [wEnemyMoveNum] .asm_3eeea cp SELFDESTRUCT jr z, .asm_3eef1 @@ -6809,24 +6825,24 @@ HandleExplodingAnimation: ; 3eed3 (f:6ed3) ld a, [hl] cp GHOST ret z - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] and a ret nz ld a, 5 ld [wAnimationType], a PlayMoveAnimation: ; 3ef07 (f:6f07) - ld [W_ANIMATIONID],a + ld [wAnimationID],a call Delay3 predef_jump MoveAnimation InitBattle: ; 3ef12 (f:6f12) - ld a, [W_CUROPPONENT] + ld a, [wCurOpponent] and a jr z, DetermineWildOpponent InitOpponent: ; 3ef18 (f:6f18) - ld a, [W_CUROPPONENT] + ld a, [wCurOpponent] ld [wcf91], a ld [wEnemyMonSpecies2], a jr InitBattleCommon @@ -6853,9 +6869,9 @@ InitBattleCommon: ; 3ef3d (f:6f3d) res 1, [hl] callab InitBattleVariables ld a, [wEnemyMonSpecies2] - sub $c8 + sub 200 jp c, InitWildBattle - ld [W_TRAINERCLASS], a + ld [wTrainerClass], a call GetTrainerInformation callab ReadTrainer call DoBattleTransitionAndInitBattleVariables @@ -6870,21 +6886,21 @@ InitBattleCommon: ; 3ef3d (f:6f3d) ld a, $ff ld [wEnemyMonPartyPos], a ld a, $2 - ld [W_ISINBATTLE], a - jp InitBattle_Common + ld [wIsInBattle], a + jp _InitBattleCommon InitWildBattle: ; 3ef8b (f:6f8b) ld a, $1 - ld [W_ISINBATTLE], a + ld [wIsInBattle], a call LoadEnemyMonData call DoBattleTransitionAndInitBattleVariables - ld a, [W_CUROPPONENT] + ld a, [wCurOpponent] cp MAROWAK jr z, .isGhost call IsGhostBattle jr nz, .isNoGhost .isGhost - ld hl, W_MONHSPRITEDIM + ld hl, wMonHSpriteDim ld a, $66 ld [hli], a ; write sprite dimensions ld bc, GhostPic @@ -6917,15 +6933,15 @@ InitWildBattle: ; 3ef8b (f:6f8b) call LoadMonFrontSprite ; load mon sprite .spriteLoaded xor a - ld [W_TRAINERCLASS], a + ld [wTrainerClass], a ld [hStartTileID], a coord hl, 12, 0 predef CopyUncompressedPicToTilemap ; common code that executes after init battle code specific to trainer or wild battles -InitBattle_Common: ; 3efeb (f:6feb) - ld b, $0 - call GoPAL_SET +_InitBattleCommon: ; 3efeb (f:6feb) + ld b, SET_PAL_BATTLE_BLACK + call RunPaletteCommand call SlidePlayerAndEnemySilhouettesOnScreen xor a ld [H_AUTOBGTRANSFERENABLED], a @@ -6948,7 +6964,7 @@ InitBattle_Common: ; 3efeb (f:6feb) lb bc, 4, 10 call ClearScreenArea call ClearSprites - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a ; is it a wild battle? call z, DrawEnemyHUDAndHPBar ; draw enemy HUD and HP bar if it's a wild battle call StartBattle @@ -6985,8 +7001,8 @@ _LoadTrainerPic: ; 3f04b (f:704b) ; unreferenced ResetCryModifiers: ; 3f069 (f:7069) xor a - ld [wc0f1], a - ld [wc0f2], a + ld [wFrequencyModifier], a + ld [wTempoModifier], a jp PlaySound ; animates the mon "growing" out of the pokeball @@ -6998,7 +7014,7 @@ AnimateSendingOutMon: ; 3f073 (f:7073) ld a, [hStartTileID] ld [hBaseTileID], a ld b, $4c - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] and a jr z, .notInBattle add b @@ -7040,7 +7056,7 @@ CopyUncompressedPicToHL: ; 3f0d0 (f:70d0) lb bc, 7, 7 ld de, SCREEN_WIDTH push af - ld a, [W_SPRITEFLIPPED] + ld a, [wSpriteFlipped] and a jr nz, .flipped pop af @@ -7092,7 +7108,7 @@ LoadMonBackPic: ; 3f103 (f:7103) ld b, 7 ld c, 8 call ClearScreenArea - ld hl, W_MONHBACKSPRITE - W_MONHEADER + ld hl, wMonHBackSprite - wMonHeader call UncompressMonSprite predef ScaleSpriteByTwo ld de, vBackPic @@ -7112,9 +7128,9 @@ JumpMoveEffect: ; 3f132 (f:7132) _JumpMoveEffect: ; 3f138 (f:7138) ld a, [H_WHOSETURN] and a - ld a, [W_PLAYERMOVEEFFECT] + ld a, [wPlayerMoveEffect] jr z, .next1 - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] .next1 dec a ; subtract 1, there is no special effect for 00 add a ; x2, 16bit pointers @@ -7217,12 +7233,12 @@ MoveEffectPointerTable: ; 3f150 (f:7150) SleepEffect: ; 3f1fc (f:71fc) ld de, wEnemyMonStatus - ld bc, W_ENEMYBATTSTATUS2 + ld bc, wEnemyBattleStatus2 ld a, [H_WHOSETURN] and a jp z, .sleepEffect ld de, wBattleMonStatus - ld bc, W_PLAYERBATTSTATUS2 + ld bc, wPlayerBattleStatus2 .sleepEffect ld a, [bc] @@ -7244,7 +7260,7 @@ SleepEffect: ; 3f1fc (f:71fc) push de call MoveHitTest ; apply accuracy tests pop de - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] and a jr nz, .didntAffect .setSleepCounter @@ -7269,12 +7285,12 @@ AlreadyAsleepText: ; 3f24a (f:724a) PoisonEffect: ; 3f24f (f:724f) ld hl, wEnemyMonStatus - ld de, W_PLAYERMOVEEFFECT + ld de, wPlayerMoveEffect ld a, [H_WHOSETURN] and a jr z, .poisonEffect ld hl, wBattleMonStatus - ld de, W_ENEMYMOVEEFFECT + ld de, wEnemyMoveEffect .poisonEffect call CheckTargetSubstitute jr nz, .noEffect ; can't posion a substitute target @@ -7300,7 +7316,7 @@ PoisonEffect: ; 3f24f (f:724f) call MoveHitTest ; apply accuracy tests pop de pop hl - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] and a jr nz, .didntAffect jr .inflictPoison @@ -7316,13 +7332,13 @@ PoisonEffect: ; 3f24f (f:724f) ld a, [H_WHOSETURN] and a ld b, ANIM_C7 - ld hl, W_PLAYERBATTSTATUS3 + ld hl, wPlayerBattleStatus3 ld a, [de] - ld de, W_PLAYERTOXICCOUNTER + ld de, wPlayerToxicCounter jr nz, .ok ld b, ANIM_A9 - ld hl, W_ENEMYBATTSTATUS3 - ld de, W_ENEMYTOXICCOUNTER + ld hl, wEnemyBattleStatus3 + ld de, wEnemyToxcCounter .ok cp TOXIC jr nz, .normalPoison ; done if move is not Toxic @@ -7366,12 +7382,12 @@ DrainHPEffect: ; 3f2e9 (f:72e9) ExplodeEffect: ; 3f2f1 (f:72f1) ld hl, wBattleMonHP - ld de, W_PLAYERBATTSTATUS2 + ld de, wPlayerBattleStatus2 ld a, [H_WHOSETURN] and a jr z, .faintUser ld hl, wEnemyMonHP - ld de, W_ENEMYBATTSTATUS2 + ld de, wEnemyBattleStatus2 .faintUser xor a ld [hli], a ; set the mon's HP to 0 @@ -7394,7 +7410,7 @@ FreezeBurnParalyzeEffect: ; 3f30c (f:730c) ld a, [wEnemyMonStatus] and a jp nz, CheckDefrost ; can't inflict status if opponent is already statused - ld a, [W_PLAYERMOVETYPE] + ld a, [wPlayerMoveType] ld b, a ld a, [wEnemyMonType1] cp b ; do target type 1 and move type match? @@ -7402,7 +7418,7 @@ FreezeBurnParalyzeEffect: ; 3f30c (f:730c) ld a, [wEnemyMonType2] cp b ; do target type 2 and move type match? ret z ; return if they match - ld a, [W_PLAYERMOVEEFFECT] + ld a, [wPlayerMoveEffect] cp a, PARALYZE_SIDE_EFFECT1 + 1 ; 10% status effects are 04, 05, 06 so 07 will set carry for those ld b, $1a ; 0x1A/0x100 or 26/256 = 10.2%~ chance jr c, .next1 ; branch ahead if this is a 10% chance effect.. @@ -7446,7 +7462,7 @@ opponentAttacker: ; 3f382 (f:7382) ld a, [wBattleMonStatus] ; mostly same as above with addresses swapped for opponent and a jp nz, CheckDefrost - ld a, [W_ENEMYMOVETYPE] + ld a, [wEnemyMoveType] ld b, a ld a, [wBattleMonType1] cp b @@ -7454,7 +7470,7 @@ opponentAttacker: ; 3f382 (f:7382) ld a, [wBattleMonType2] cp b ret z - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] cp a, PARALYZE_SIDE_EFFECT1 + 1 ld b, $1a jr c, .next1 @@ -7504,7 +7520,7 @@ CheckDefrost: ; 3f3e2 (f:73e2) and a jr nz, .opponent ;player [attacker] - ld a, [W_PLAYERMOVETYPE] + ld a, [wPlayerMoveType] sub a, FIRE ret nz ; return if type of move used isn't fire ld [wEnemyMonStatus], a ; set opponent status to 00 ["defrost" a frozen monster] @@ -7517,7 +7533,7 @@ CheckDefrost: ; 3f3e2 (f:73e2) ld hl, FireDefrostedText jr .common .opponent - ld a, [W_ENEMYMOVETYPE] ; same as above with addresses swapped + ld a, [wEnemyMoveType] ; same as above with addresses swapped sub a, FIRE ret nz ld [wBattleMonStatus], a @@ -7537,12 +7553,12 @@ FireDefrostedText: ; 3f423 (f:7423) StatModifierUpEffect: ; 3f428 (f:7428) ld hl, wPlayerMonStatMods - ld de, W_PLAYERMOVEEFFECT + ld de, wPlayerMoveEffect ld a, [H_WHOSETURN] and a jr z, .statModifierUpEffect ld hl, wEnemyMonStatMods - ld de, W_ENEMYMOVEEFFECT + ld de, wEnemyMoveEffect .statModifierUpEffect ld a, [de] sub ATTACK_UP1_EFFECT @@ -7644,14 +7660,14 @@ UpdateStatDone: ; 3f4ca (f:74ca) ld b, c inc b call PrintStatText - ld hl, W_PLAYERBATTSTATUS2 - ld de, W_PLAYERMOVENUM + ld hl, wPlayerBattleStatus2 + ld de, wPlayerMoveNum ld bc, wPlayerMonMinimized ld a, [H_WHOSETURN] and a jr z, .asm_3f4e6 - ld hl, W_ENEMYBATTSTATUS2 - ld de, W_ENEMYMOVENUM + ld hl, wEnemyBattleStatus2 + ld de, wEnemyMoveNum ld bc, wEnemyMonMinimized .asm_3f4e6 ld a, [de] @@ -7705,9 +7721,9 @@ MonsStatsRoseText: ; 3f528 (f:7528) ld hl, GreatlyRoseText ld a, [H_WHOSETURN] and a - ld a, [W_PLAYERMOVEEFFECT] + ld a, [wPlayerMoveEffect] jr z, .asm_3f53b - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] .asm_3f53b cp ATTACK_DOWN1_EFFECT ret nc @@ -7724,14 +7740,14 @@ RoseText: ; 3f547 (f:7547) StatModifierDownEffect: ; 3f54c (f:754c) ld hl, wEnemyMonStatMods - ld de, W_PLAYERMOVEEFFECT - ld bc, W_ENEMYBATTSTATUS1 + ld de, wPlayerMoveEffect + ld bc, wEnemyBattleStatus1 ld a, [H_WHOSETURN] and a jr z, .statModifierDownEffect ld hl, wPlayerMonStatMods - ld de, W_ENEMYMOVEEFFECT - ld bc, W_PLAYERBATTSTATUS1 + ld de, wEnemyMoveEffect + ld bc, wPlayerBattleStatus1 ld a, [wLinkState] cp LINK_STATE_BATTLING jr z, .statModifierDownEffect @@ -7758,7 +7774,7 @@ StatModifierDownEffect: ; 3f54c (f:754c) pop bc pop de pop hl - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] and a jp nz, MoveMissed ld a, [bc] @@ -7907,9 +7923,9 @@ MonsStatsFellText: ; 3f661 (f:7661) ld hl, FellText ld a, [H_WHOSETURN] and a - ld a, [W_PLAYERMOVEEFFECT] + ld a, [wPlayerMoveEffect] jr z, .asm_3f674 - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] .asm_3f674 cp $1a ret c @@ -7967,13 +7983,13 @@ StatModifierRatios: ; 3f6cb (f:76cb) db 4, 1 ; 4.00 BideEffect: ; 3f6e5 (f:76e5) - ld hl, W_PLAYERBATTSTATUS1 + ld hl, wPlayerBattleStatus1 ld de, wPlayerBideAccumulatedDamage ld bc, wPlayerNumAttacksLeft ld a, [H_WHOSETURN] and a jr z, .bideEffect - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 ld de, wEnemyBideAccumulatedDamage ld bc, wEnemyNumAttacksLeft .bideEffect @@ -7982,8 +7998,8 @@ BideEffect: ; 3f6e5 (f:76e5) ld [de], a inc de ld [de], a - ld [W_PLAYERMOVEEFFECT], a - ld [W_ENEMYMOVEEFFECT], a + ld [wPlayerMoveEffect], a + ld [wEnemyMoveEffect], a call BattleRandom and $1 inc a @@ -7994,12 +8010,12 @@ BideEffect: ; 3f6e5 (f:76e5) jp PlayBattleAnimation2 ThrashPetalDanceEffect: ; 3f717 (f:7717) - ld hl, W_PLAYERBATTSTATUS1 + ld hl, wPlayerBattleStatus1 ld de, wPlayerNumAttacksLeft ld a, [H_WHOSETURN] and a jr z, .thrashPetalDanceEffect - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 ld de, wEnemyNumAttacksLeft .thrashPetalDanceEffect set ThrashingAbout, [hl] ; mon is now using thrash/petal dance @@ -8016,10 +8032,10 @@ SwitchAndTeleportEffect: ; 3f739 (f:7739) ld a, [H_WHOSETURN] and a jr nz, .asm_3f791 - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a jr nz, .asm_3f77e - ld a, [W_CURENEMYLVL] + ld a, [wCurEnemyLVL] ld b, a ld a, [wBattleMonLevel] cp b @@ -8037,7 +8053,7 @@ SwitchAndTeleportEffect: ; 3f739 (f:7739) jr nc, .asm_3f76e ld c, 50 call DelayFrames - ld a, [W_PLAYERMOVENUM] + ld a, [wPlayerMoveNum] cp TELEPORT jp nz, PrintDidntAffectText jp PrintButItFailedText_ @@ -8047,23 +8063,23 @@ SwitchAndTeleportEffect: ; 3f739 (f:7739) ld [wAnimationType], a inc a ld [wEscapedFromBattle], a - ld a, [W_PLAYERMOVENUM] + ld a, [wPlayerMoveNum] jr .asm_3f7e4 .asm_3f77e ld c, 50 call DelayFrames ld hl, IsUnaffectedText - ld a, [W_PLAYERMOVENUM] + ld a, [wPlayerMoveNum] cp TELEPORT jp nz, PrintText jp PrintButItFailedText_ .asm_3f791 - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a jr nz, .asm_3f7d1 ld a, [wBattleMonLevel] ld b, a - ld a, [W_CURENEMYLVL] + ld a, [wCurEnemyLVL] cp b jr nc, .asm_3f7c1 add b @@ -8079,7 +8095,7 @@ SwitchAndTeleportEffect: ; 3f739 (f:7739) jr nc, .asm_3f7c1 ld c, 50 call DelayFrames - ld a, [W_ENEMYMOVENUM] + ld a, [wEnemyMoveNum] cp TELEPORT jp nz, PrintDidntAffectText jp PrintButItFailedText_ @@ -8089,13 +8105,13 @@ SwitchAndTeleportEffect: ; 3f739 (f:7739) ld [wAnimationType], a inc a ld [wEscapedFromBattle], a - ld a, [W_ENEMYMOVENUM] + ld a, [wEnemyMoveNum] jr .asm_3f7e4 .asm_3f7d1 ld c, 50 call DelayFrames ld hl, IsUnaffectedText - ld a, [W_ENEMYMOVENUM] + ld a, [wEnemyMoveNum] cp TELEPORT jp nz, PrintText jp ConditionalPrintButItFailed @@ -8128,24 +8144,24 @@ WasBlownAwayText: ; 3f80c (f:780c) db "@" TwoToFiveAttacksEffect: ; 3f811 (f:7811) - ld hl, W_PLAYERBATTSTATUS1 + ld hl, wPlayerBattleStatus1 ld de, wPlayerNumAttacksLeft ld bc, wPlayerNumHits ld a, [H_WHOSETURN] and a jr z, .twoToFiveAttacksEffect - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 ld de, wEnemyNumAttacksLeft ld bc, wEnemyNumHits .twoToFiveAttacksEffect bit AttackingMultipleTimes, [hl] ; is mon attacking multiple times? ret nz set AttackingMultipleTimes, [hl] ; mon is now attacking multiple times - ld hl, W_PLAYERMOVEEFFECT + ld hl, wPlayerMoveEffect ld a, [H_WHOSETURN] and a jr z, .setNumberOfHits - ld hl, W_ENEMYMOVEEFFECT + ld hl, wEnemyMoveEffect .setNumberOfHits ld a, [hl] cp TWINEEDLE_EFFECT @@ -8175,13 +8191,13 @@ TwoToFiveAttacksEffect: ; 3f811 (f:7811) FlinchSideEffect: ; 3f85b (f:785b) call CheckTargetSubstitute ret nz - ld hl, W_ENEMYBATTSTATUS1 - ld de, W_PLAYERMOVEEFFECT + ld hl, wEnemyBattleStatus1 + ld de, wPlayerMoveEffect ld a, [H_WHOSETURN] and a jr z, .flinchSideEffect - ld hl, W_PLAYERBATTSTATUS1 - ld de, W_ENEMYMOVEEFFECT + ld hl, wPlayerBattleStatus1 + ld de, wEnemyMoveEffect .flinchSideEffect ld a, [de] cp FLINCH_SIDE_EFFECT1 @@ -8200,14 +8216,14 @@ OneHitKOEffect: ; 3f884 (f:7884) jpab OneHitKOEffect_ ChargeEffect: ; 3f88c (f:788c) - ld hl, W_PLAYERBATTSTATUS1 - ld de, W_PLAYERMOVEEFFECT + ld hl, wPlayerBattleStatus1 + ld de, wPlayerMoveEffect ld a, [H_WHOSETURN] and a ld b, XSTATITEM_ANIM jr z, .chargeEffect - ld hl, W_ENEMYBATTSTATUS1 - ld de, W_ENEMYMOVEEFFECT + ld hl, wEnemyBattleStatus1 + ld de, wEnemyMoveEffect ld b, ANIM_AF .chargeEffect set ChargingUp, [hl] @@ -8282,12 +8298,12 @@ DugAHoleText: ; 3f912 (f:7912) db "@" TrappingEffect: ; 3f917 (f:7917) - ld hl, W_PLAYERBATTSTATUS1 + ld hl, wPlayerBattleStatus1 ld de, wPlayerNumAttacksLeft ld a, [H_WHOSETURN] and a jr z, .trappingEffect - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 ld de, wEnemyNumAttacksLeft .trappingEffect bit UsingTrappingMove, [hl] @@ -8325,20 +8341,20 @@ ConfusionEffect: ; 3f961 (f:7961) call CheckTargetSubstitute jr nz, ConfusionEffectFailed call MoveHitTest - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] and a jr nz, ConfusionEffectFailed ConfusionSideEffectSuccess: ; 3f96f (f:796f) ld a, [H_WHOSETURN] and a - ld hl, W_ENEMYBATTSTATUS1 - ld bc, W_ENEMYCONFUSEDCOUNTER - ld a, [W_PLAYERMOVEEFFECT] + ld hl, wEnemyBattleStatus1 + ld bc, wEnemyConfusedCounter + ld a, [wPlayerMoveEffect] jr z, .confuseTarget - ld hl, W_PLAYERBATTSTATUS1 - ld bc, W_PLAYERCONFUSEDCOUNTER - ld a, [W_ENEMYMOVEEFFECT] + ld hl, wPlayerBattleStatus1 + ld bc, wPlayerConfusedCounter + ld a, [wEnemyMoveEffect] .confuseTarget bit Confused, [hl] ; is mon confused? jr nz, ConfusionEffectFailed @@ -8373,33 +8389,33 @@ SubstituteEffect: ; 3f9b9 (f:79b9) jpab SubstituteEffect_ HyperBeamEffect: ; 3f9c1 (f:79c1) - ld hl, W_PLAYERBATTSTATUS2 + ld hl, wPlayerBattleStatus2 ld a, [H_WHOSETURN] and a jr z, .hyperBeamEffect - ld hl, W_ENEMYBATTSTATUS2 + ld hl, wEnemyBattleStatus2 .hyperBeamEffect set NeedsToRecharge, [hl] ; mon now needs to recharge ret ClearHyperBeam: ; 3f9cf (f:79cf) push hl - ld hl, W_ENEMYBATTSTATUS2 + ld hl, wEnemyBattleStatus2 ld a, [H_WHOSETURN] and a jr z, .asm_3f9db - ld hl, W_PLAYERBATTSTATUS2 + ld hl, wPlayerBattleStatus2 .asm_3f9db res NeedsToRecharge, [hl] ; mon no longer needs to recharge pop hl ret RageEffect: ; 3f9df (f:79df) - ld hl, W_PLAYERBATTSTATUS2 + ld hl, wPlayerBattleStatus2 ld a, [H_WHOSETURN] and a jr z, .player - ld hl, W_ENEMYBATTSTATUS2 + ld hl, wEnemyBattleStatus2 .player set UsingRage, [hl] ; mon is now in "rage" mode ret @@ -8408,19 +8424,19 @@ MimicEffect: ; 3f9ed (f:79ed) ld c, 50 call DelayFrames call MoveHitTest - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] and a jr nz, .asm_3fa74 ld a, [H_WHOSETURN] and a ld hl, wBattleMonMoves - ld a, [W_PLAYERBATTSTATUS1] + ld a, [wPlayerBattleStatus1] jr nz, .asm_3fa13 ld a, [wLinkState] cp LINK_STATE_BATTLING jr nz, .asm_3fa3a ld hl, wEnemyMonMoves - ld a, [W_ENEMYBATTSTATUS1] + ld a, [wEnemyBattleStatus1] .asm_3fa13 bit Invulnerable, a jr nz, .asm_3fa74 @@ -8445,7 +8461,7 @@ MimicEffect: ; 3f9ed (f:79ed) ld a, [wEnemyMoveListIndex] jr .asm_3fa5f .asm_3fa3a - ld a, [W_ENEMYBATTSTATUS1] + ld a, [wEnemyBattleStatus1] bit Invulnerable, a jr nz, .asm_3fa74 ld a, [wCurrentMenuItem] @@ -8489,15 +8505,15 @@ SplashEffect: ; 3fa84 (f:7a84) DisableEffect: ; 3fa8a (f:7a8a) call MoveHitTest - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] and a jr nz, .moveMissed - ld de, W_ENEMYDISABLEDMOVE + ld de, wEnemyDisabledMove ld hl, wEnemyMonMoves ld a, [H_WHOSETURN] and a jr z, .disableEffect - ld de, W_PLAYERDISABLEDMOVE + ld de, wPlayerDisabledMove ld hl, wBattleMonMoves .disableEffect ; no effect if target already has a move disabled @@ -8551,7 +8567,7 @@ DisableEffect: ; 3fa8a (f:7a8a) inc a ; 1-8 turns disabled inc c ; move 1-4 will be disabled swap c - add c ; map disabled move to high nibble of W_ENEMYDISABLEDMOVE / W_PLAYERDISABLEDMOVE + add c ; map disabled move to high nibble of wEnemyDisabledMove / wPlayerDisabledMove ld [de], a call PlayCurrentMoveAnimation2 ld hl, wPlayerDisabledMoveNumber @@ -8639,11 +8655,11 @@ ParalyzedMayNotAttackText: ; 3fb74 (f:7b74) CheckTargetSubstitute: ; 3fb79 (f:7b79) push hl - ld hl, W_ENEMYBATTSTATUS2 + ld hl, wEnemyBattleStatus2 ld a, [H_WHOSETURN] and a jr z, .next1 - ld hl, W_PLAYERBATTSTATUS2 + ld hl, wPlayerBattleStatus2 .next1 bit HasSubstituteUp, [hl] pop hl @@ -8654,16 +8670,16 @@ PlayCurrentMoveAnimation2: ; 3fb89 (f:7b89) ; plays wAnimationType 3 or 6 ld a, [H_WHOSETURN] and a - ld a, [W_PLAYERMOVENUM] + ld a, [wPlayerMoveNum] jr z, .notEnemyTurn - ld a, [W_ENEMYMOVENUM] + ld a, [wEnemyMoveNum] .notEnemyTurn and a ret z PlayBattleAnimation2: ; 3fb96 (f:7b96) ; play animation ID at a and animation type 6 or 3 - ld [W_ANIMATIONID], a + ld [wAnimationID], a ld a, [H_WHOSETURN] and a ld a, $6 @@ -8680,19 +8696,19 @@ PlayCurrentMoveAnimation: ; 3fba8 (f:7ba8) ld [wAnimationType], a ld a, [H_WHOSETURN] and a - ld a, [W_PLAYERMOVENUM] + ld a, [wPlayerMoveNum] jr z, .notEnemyTurn - ld a, [W_ENEMYMOVENUM] + ld a, [wEnemyMoveNum] .notEnemyTurn and a ret z PlayBattleAnimation: ; 3fbb9 (f:7bb9) ; play animation ID at a and predefined animation type - ld [W_ANIMATIONID], a + ld [wAnimationID], a PlayBattleAnimationGotID: ; 3fbbc (f:7bbc) -; play animation at W_ANIMATIONID +; play animation at wAnimationID push hl push de push bc diff --git a/engine/battle/decrement_pp.asm b/engine/battle/decrement_pp.asm index 7345c5c1..f1a0dd58 100644 --- a/engine/battle/decrement_pp.asm +++ b/engine/battle/decrement_pp.asm @@ -4,9 +4,9 @@ DecrementPP: ; 68000 (1a:4000) cp a, STRUGGLE ret z ; if the pokemon is using "struggle", there's nothing to do ; we don't decrement PP for "struggle" - ld hl, W_PLAYERBATTSTATUS1 - ld a, [hli] ; load the W_PLAYERBATTSTATUS1 pokemon status flags and increment hl to load the - ; W_PLAYERBATTSTATUS2 status flags later + ld hl, wPlayerBattleStatus1 + ld a, [hli] ; load the wPlayerBattleStatus1 pokemon status flags and increment hl to load the + ; wPlayerBattleStatus2 status flags later and a, (1 << StoringEnergy) | (1 << ThrashingAbout) | (1 << AttackingMultipleTimes) ret nz ; if any of these statuses are true, don't decrement PP bit UsingRage, [hl] @@ -17,7 +17,7 @@ DecrementPP: ; 68000 (1a:4000) call .DecrementPP ; decrement PP in the party struct - ld a, [W_PLAYERBATTSTATUS3] + ld a, [wPlayerBattleStatus3] bit Transformed, a ret nz ; Return if transformed. Pokemon Red stores the "current pokemon's" PP ; separately from the "Pokemon in your party's" PP. This is diff --git a/engine/battle/draw_hud_pokeball_gfx.asm b/engine/battle/draw_hud_pokeball_gfx.asm index 7198d984..8cfd30af 100644 --- a/engine/battle/draw_hud_pokeball_gfx.asm +++ b/engine/battle/draw_hud_pokeball_gfx.asm @@ -1,7 +1,7 @@ DrawAllPokeballs: ; 3a849 (e:6849) call LoadPartyPokeballGfx call SetupOwnPartyPokeballs - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a ret z ; return if wild pokémon jp SetupEnemyPartyPokeballs @@ -13,7 +13,7 @@ DrawEnemyPokeballs: ; 3a857 (e:6857) LoadPartyPokeballGfx: ; 3a85d (e:685d) ld de, PokeballTileGraphics ld hl, vSprites + $310 - lb bc, BANK(PokeballTileGraphics), $04 + lb bc, BANK(PokeballTileGraphics), (PokeballTileGraphicsEnd - PokeballTileGraphics) / $10 jp CopyVideoData SetupOwnPartyPokeballs: ; 3a869 (e:6869) @@ -22,7 +22,7 @@ SetupOwnPartyPokeballs: ; 3a869 (e:6869) ld de, wPartyCount call SetupPokeballs ld a, $60 - ld hl, W_BASECOORDX + ld hl, wBaseCoordX ld [hli], a ld [hl], a ld a, 8 @@ -35,7 +35,7 @@ SetupEnemyPartyPokeballs: ; 3a887 (e:6887) ld hl, wEnemyMons ld de, wEnemyPartyCount call SetupPokeballs - ld hl, W_BASECOORDX + ld hl, wBaseCoordX ld a, $48 ld [hli], a ld [hl], $20 @@ -98,19 +98,19 @@ WritePokeballOAMData: ; 3a8e1 (e:68e1) ld de, wBuffer ld c, PARTY_LENGTH .loop - ld a, [W_BASECOORDY] + ld a, [wBaseCoordY] ld [hli], a - ld a, [W_BASECOORDX] + ld a, [wBaseCoordX] ld [hli], a ld a, [de] ld [hli], a xor a ld [hli], a - ld a, [W_BASECOORDX] + ld a, [wBaseCoordX] ld b, a ld a, [wHUDPokeballGfxOffsetX] add b - ld [W_BASECOORDX], a + ld [wBaseCoordX], a inc de dec c jr nz, .loop @@ -168,7 +168,7 @@ SetupPlayerAndEnemyPokeballs: ; 3a948 (e:6948) ld hl, wPartyMons ld de, wPartyCount call SetupPokeballs - ld hl, W_BASECOORDX + ld hl, wBaseCoordX ld a, $50 ld [hli], a ld [hl], $40 @@ -179,7 +179,7 @@ SetupPlayerAndEnemyPokeballs: ; 3a948 (e:6948) ld hl, wEnemyMons ld de, wEnemyPartyCount call SetupPokeballs - ld hl, W_BASECOORDX + ld hl, wBaseCoordX ld a, $50 ld [hli], a ld [hl], $68 @@ -189,3 +189,4 @@ SetupPlayerAndEnemyPokeballs: ; 3a948 (e:6948) ; four tiles: pokeball, black pokeball (status ailment), crossed out pokeball (faited) and pokeball slot (no mon) PokeballTileGraphics:: ; 3a97e (e:697e) INCBIN "gfx/pokeball.2bpp" +PokeballTileGraphicsEnd: diff --git a/engine/battle/end_of_battle.asm b/engine/battle/end_of_battle.asm index c642d206..34bc3119 100755 --- a/engine/battle/end_of_battle.asm +++ b/engine/battle/end_of_battle.asm @@ -46,11 +46,11 @@ EndOfBattle: ; 137aa (4:77aa) .resetVariables xor a ld [wLowHealthAlarm], a ;disable low health alarm - ld [wc02a], a - ld [W_ISINBATTLE], a - ld [W_BATTLETYPE], a - ld [W_MOVEMISSED], a - ld [W_CUROPPONENT], a + ld [wChannelSoundIDs + CH4], a + ld [wIsInBattle], a + ld [wBattleType], a + ld [wMoveMissed], a + ld [wCurOpponent], a ld [wForcePlayerToChooseMon], a ld [wNumRunAttempts], a ld [wEscapedFromBattle], a diff --git a/engine/battle/experience.asm b/engine/battle/experience.asm index edee81b1..0480bfcb 100644 --- a/engine/battle/experience.asm +++ b/engine/battle/experience.asm @@ -76,14 +76,14 @@ GainExperience: ; 5524f (15:524f) ld b, [hl] ld a, [wPlayerID + 1] cp b - ld a, $0 + ld a, 0 jr z, .next .tradedMon call BoostExp ; traded mon exp boost - ld a, $1 + ld a, 1 .next ld [wGainBoostedExp], a - ld a, [W_ISINBATTLE] + ld a, [wIsInBattle] dec a ; is it a trainer battle? call nz, BoostExp ; if so, boost exp inc hl @@ -92,12 +92,12 @@ GainExperience: ; 5524f (15:524f) ; add the gained exp to the party mon's exp ld b, [hl] ld a, [H_QUOTIENT + 3] - ld [wcf4c], a + ld [wExpAmountGained + 1], a add b ld [hld], a ld b, [hl] ld a, [H_QUOTIENT + 2] - ld [wcf4b], a + ld [wExpAmountGained], a adc b ld [hl], a jr nc, .noCarry @@ -160,11 +160,11 @@ GainExperience: ; 5524f (15:524f) ld a, [hl] ; current level cp d jp z, .nextMon ; if level didn't change, go to next mon - ld a, [W_CURENEMYLVL] + ld a, [wCurEnemyLVL] push af push hl ld a, d - ld [W_CURENEMYLVL], a + ld [wCurEnemyLVL], a ld [hl], a ld bc, wPartyMon1Species - wPartyMon1Level add hl, bc @@ -223,7 +223,7 @@ GainExperience: ; 5524f (15:524f) ld bc, 1 + NUM_STATS * 2 ; size of stats call CopyData pop hl - ld a, [W_PLAYERBATTSTATUS3] + ld a, [wPlayerBattleStatus3] bit 3, a ; is the mon transformed? jr nz, .recalcStatChanges ; the mon is not transformed, so update the unmodified stats @@ -231,8 +231,8 @@ GainExperience: ; 5524f (15:524f) ld bc, 1 + NUM_STATS * 2 call CopyData .recalcStatChanges - xor a - ld [wd11e], a + xor a ; battle mon + ld [wCalculateWhoseStats], a callab CalculateModifiedStats callab ApplyBurnAndParalysisPenaltiesToPlayer callab ApplyBadgeStatBoosts @@ -261,7 +261,7 @@ GainExperience: ; 5524f (15:524f) predef FlagActionPredef pop hl pop af - ld [W_CURENEMYLVL], a + ld [wCurEnemyLVL], a .nextMon ld a, [wPartyCount] diff --git a/engine/battle/get_trainer_name.asm b/engine/battle/get_trainer_name.asm index 961f25cf..36492292 100644 --- a/engine/battle/get_trainer_name.asm +++ b/engine/battle/get_trainer_name.asm @@ -1,10 +1,10 @@ GetTrainerName_: ; 13a58 (4:7a58) - ld hl, W_GRASSRATE + ld hl, wGrassRate ld a, [wLinkState] and a jr nz, .rival - ld hl, W_RIVALNAME - ld a, [W_TRAINERCLASS] + ld hl, wRivalName + ld a, [wTrainerClass] cp SONY1 jr z, .rival cp SONY2 @@ -19,6 +19,6 @@ GetTrainerName_: ; 13a58 (4:7a58) call GetName ld hl, wcd6d .rival - ld de, W_TRAINERNAME + ld de, wTrainerName ld bc, $d jp CopyData diff --git a/engine/battle/ghost_marowak_anim.asm b/engine/battle/ghost_marowak_anim.asm index d76f3f41..6702589d 100644 --- a/engine/battle/ghost_marowak_anim.asm +++ b/engine/battle/ghost_marowak_anim.asm @@ -55,22 +55,22 @@ CopyMonPicFromBGToSpriteVRAM: ; 7092a (1c:492a) ld bc, 7 * 7 call CopyVideoData ld a, $10 - ld [W_BASECOORDY], a + ld [wBaseCoordY], a ld a, $70 - ld [W_BASECOORDX], a + ld [wBaseCoordX], a ld hl, wOAMBuffer lb bc, 6, 6 ld d, $8 .oamLoop push bc - ld a, [W_BASECOORDY] + ld a, [wBaseCoordY] ld e, a .oamInnerLoop ld a, e add $8 ld e, a ld [hli], a - ld a, [W_BASECOORDX] + ld a, [wBaseCoordX] ld [hli], a ld a, d ld [hli], a @@ -80,9 +80,9 @@ CopyMonPicFromBGToSpriteVRAM: ; 7092a (1c:492a) dec c jr nz, .oamInnerLoop inc d - ld a, [W_BASECOORDX] + ld a, [wBaseCoordX] add $8 - ld [W_BASECOORDX], a + ld [wBaseCoordX], a pop bc dec b jr nz, .oamLoop diff --git a/engine/battle/init_battle_variables.asm b/engine/battle/init_battle_variables.asm index 3c926858..9372a786 100644 --- a/engine/battle/init_battle_variables.asm +++ b/engine/battle/init_battle_variables.asm @@ -16,23 +16,23 @@ InitBattleVariables: ; 525af (14:65af) ld [wPlayerMonNumber], a ld [wEscapedFromBattle], a ld [wMapPalOffset], a - ld hl, wcf1d - ld [hli], a - ld [hl], a + ld hl, wPlayerHPBarColor + ld [hli], a ; wPlayerHPBarColor + ld [hl], a ; wEnemyHPBarColor ld hl, wCanEvolveFlags ld b, $3c .loop ld [hli], a dec b jr nz, .loop - inc a - ld [wccd9], a - ld a, [W_CURMAP] + inc a ; POUND + ld [wTestBattlePlayerSelectedMove], a + ld a, [wCurMap] cp SAFARI_ZONE_EAST jr c, .notSafariBattle cp SAFARI_ZONE_REST_HOUSE_1 jr nc, .notSafariBattle - ld a, $2 ; safari battle - ld [W_BATTLETYPE], a + ld a, BATTLE_TYPE_SAFARI + ld [wBattleType], a .notSafariBattle jpab PlayBattleMusic diff --git a/engine/battle/moveEffects/conversion_effect.asm b/engine/battle/moveEffects/conversion_effect.asm index e4c5b4bd..8e895361 100644 --- a/engine/battle/moveEffects/conversion_effect.asm +++ b/engine/battle/moveEffects/conversion_effect.asm @@ -3,13 +3,13 @@ ConversionEffect_: ; 139a3 (4:79a3) ld de, wBattleMonType1 ld a, [H_WHOSETURN] and a - ld a, [W_ENEMYBATTSTATUS1] + ld a, [wEnemyBattleStatus1] jr z, .conversionEffect push hl ld h, d ld l, e pop de - ld a, [W_PLAYERBATTSTATUS1] + ld a, [wPlayerBattleStatus1] .conversionEffect bit Invulnerable, a ; is mon immune to typical attacks (dig/fly) jr nz, PrintButItFailedText diff --git a/engine/battle/moveEffects/drain_hp_effect.asm b/engine/battle/moveEffects/drain_hp_effect.asm index 1096794f..ffa75c13 100644 --- a/engine/battle/moveEffects/drain_hp_effect.asm +++ b/engine/battle/moveEffects/drain_hp_effect.asm @@ -1,5 +1,5 @@ DrainHPEffect_: ; 783f (1:783f) - ld hl, W_DAMAGE + ld hl, wDamage ld a, [hl] srl a ; divide damage by 2 ld [hli], a @@ -36,12 +36,12 @@ DrainHPEffect_: ; 783f (1:783f) dec bc ld [bc], a ; add damage to attacker's HP and copy new HP to wHPBarNewHP - ld a, [W_DAMAGE + 1] + ld a, [wDamage + 1] ld b, [hl] add b ld [hld], a ld [wHPBarNewHP], a - ld a, [W_DAMAGE] + ld a, [wDamage] ld b, [hl] adc b ld [hli], a @@ -85,9 +85,9 @@ DrainHPEffect_: ; 783f (1:783f) ld hl, SuckedHealthText ld a, [H_WHOSETURN] and a - ld a, [W_PLAYERMOVEEFFECT] + ld a, [wPlayerMoveEffect] jr z, .next3 - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] .next3 cp DREAM_EATER_EFFECT jr nz, .printText diff --git a/engine/battle/moveEffects/focus_energy_effect.asm b/engine/battle/moveEffects/focus_energy_effect.asm index b8a783e4..b1cd03f3 100644 --- a/engine/battle/moveEffects/focus_energy_effect.asm +++ b/engine/battle/moveEffects/focus_energy_effect.asm @@ -1,9 +1,9 @@ FocusEnergyEffect_: ; 27f86 (9:7f86) - ld hl, W_PLAYERBATTSTATUS2 + ld hl, wPlayerBattleStatus2 ld a, [H_WHOSETURN] and a jr z, .notEnemy - ld hl, W_ENEMYBATTSTATUS2 + ld hl, wEnemyBattleStatus2 .notEnemy bit GettingPumped, [hl] ; is mon already using focus energy? jr nz, .alreadyUsing diff --git a/engine/battle/moveEffects/haze_effect.asm b/engine/battle/moveEffects/haze_effect.asm index 5c5443c0..8c759cce 100644 --- a/engine/battle/moveEffects/haze_effect.asm +++ b/engine/battle/moveEffects/haze_effect.asm @@ -31,14 +31,14 @@ HazeEffect_: ; 139da (4:79da) .cureVolatileStatuses xor a - ld [W_PLAYERDISABLEDMOVE], a - ld [W_ENEMYDISABLEDMOVE], a + ld [wPlayerDisabledMove], a + ld [wEnemyDisabledMove], a ld hl, wPlayerDisabledMoveNumber ld [hli], a ld [hl], a - ld hl, W_PLAYERBATTSTATUS1 + ld hl, wPlayerBattleStatus1 call CureVolatileStatuses - ld hl, W_ENEMYBATTSTATUS1 + ld hl, wEnemyBattleStatus1 call CureVolatileStatuses ld hl, PlayCurrentMoveAnimation call CallBankF diff --git a/engine/battle/moveEffects/heal_effect.asm b/engine/battle/moveEffects/heal_effect.asm index cea63a1f..4b8f83bd 100644 --- a/engine/battle/moveEffects/heal_effect.asm +++ b/engine/battle/moveEffects/heal_effect.asm @@ -3,11 +3,11 @@ HealEffect_: ; 3b9ec (e:79ec) and a ld de, wBattleMonHP ld hl, wBattleMonMaxHP - ld a, [W_PLAYERMOVENUM] + ld a, [wPlayerMoveNum] jr z, .healEffect ld de, wEnemyMonHP ld hl, wEnemyMonMaxHP - ld a, [W_ENEMYMOVENUM] + ld a, [wEnemyMoveNum] .healEffect ld b, a ld a, [de] diff --git a/engine/battle/moveEffects/leech_seed_effect.asm b/engine/battle/moveEffects/leech_seed_effect.asm index 1b0afe4b..ea7ceb30 100644 --- a/engine/battle/moveEffects/leech_seed_effect.asm +++ b/engine/battle/moveEffects/leech_seed_effect.asm @@ -1,14 +1,14 @@ LeechSeedEffect_: ; 2bea9 (a:7ea9) callab MoveHitTest - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] and a jr nz, .moveMissed - ld hl, W_ENEMYBATTSTATUS2 + ld hl, wEnemyBattleStatus2 ld de, wEnemyMonType1 ld a, [H_WHOSETURN] and a jr z, .leechSeedEffect - ld hl, W_PLAYERBATTSTATUS2 + ld hl, wPlayerBattleStatus2 ld de, wBattleMonType1 .leechSeedEffect ; miss if the target is grass-type or already seeded diff --git a/engine/battle/moveEffects/mist_effect.asm b/engine/battle/moveEffects/mist_effect.asm index 1f8e40b0..fcdb4b28 100644 --- a/engine/battle/moveEffects/mist_effect.asm +++ b/engine/battle/moveEffects/mist_effect.asm @@ -1,9 +1,9 @@ MistEffect_: ; 33f2b (c:7f2b) - ld hl, W_PLAYERBATTSTATUS2 + ld hl, wPlayerBattleStatus2 ld a, [H_WHOSETURN] and a jr z, .mistEffect - ld hl, W_ENEMYBATTSTATUS2 + ld hl, wEnemyBattleStatus2 .mistEffect bit ProtectedByMist, [hl] ; is mon protected by mist? jr nz, .mistAlreadyInUse diff --git a/engine/battle/moveEffects/one_hit_ko_effect.asm b/engine/battle/moveEffects/one_hit_ko_effect.asm index 907db80c..efba0b79 100644 --- a/engine/battle/moveEffects/one_hit_ko_effect.asm +++ b/engine/battle/moveEffects/one_hit_ko_effect.asm @@ -1,5 +1,5 @@ OneHitKOEffect_: ; 33f57 (c:7f57) - ld hl, W_DAMAGE + ld hl, wDamage xor a ld [hli], a ld [hl], a ; set the damage output to zero @@ -24,7 +24,7 @@ OneHitKOEffect_: ; 33f57 (c:7f57) ld a, [hl] sbc b jr c, .userIsSlower - ld hl, W_DAMAGE + ld hl, wDamage ld a, $ff ld [hli], a ld [hl], a @@ -34,5 +34,5 @@ OneHitKOEffect_: ; 33f57 (c:7f57) .userIsSlower ; keep damage at 0 and set move missed flag if target's current speed is higher instead ld a, $1 - ld [W_MOVEMISSED], a + ld [wMoveMissed], a ret diff --git a/engine/battle/moveEffects/paralyze_effect.asm b/engine/battle/moveEffects/paralyze_effect.asm index 658b0c50..eac42a90 100644 --- a/engine/battle/moveEffects/paralyze_effect.asm +++ b/engine/battle/moveEffects/paralyze_effect.asm @@ -1,11 +1,11 @@ ParalyzeEffect_: ; 52601 (14:6601) ld hl, wEnemyMonStatus - ld de, W_PLAYERMOVETYPE + ld de, wPlayerMoveType ld a, [H_WHOSETURN] and a jp z, .next ld hl, wBattleMonStatus - ld de, W_ENEMYMOVETYPE + ld de, wEnemyMoveType .next ld a, [hl] and a ; does the target already have a status ailment? @@ -28,7 +28,7 @@ ParalyzeEffect_: ; 52601 (14:6601) push hl callab MoveHitTest pop hl - ld a, [W_MOVEMISSED] + ld a, [wMoveMissed] and a jr nz, .didntAffect set PAR, [hl] diff --git a/engine/battle/moveEffects/pay_day_effect.asm b/engine/battle/moveEffects/pay_day_effect.asm index 26e69ef5..eb228615 100644 --- a/engine/battle/moveEffects/pay_day_effect.asm +++ b/engine/battle/moveEffects/pay_day_effect.asm @@ -1,4 +1,4 @@ -PayDayEffect_ ; 2feb8 (b:7eb8) +PayDayEffect_: ; 2feb8 (b:7eb8) xor a ld hl, wcd6d ld [hli], a diff --git a/engine/battle/moveEffects/recoil_effect.asm b/engine/battle/moveEffects/recoil_effect.asm index 51232af6..43bf8d5f 100644 --- a/engine/battle/moveEffects/recoil_effect.asm +++ b/engine/battle/moveEffects/recoil_effect.asm @@ -1,16 +1,16 @@ RecoilEffect_: ; 1392c (4:792c) ld a, [H_WHOSETURN] and a - ld a, [W_PLAYERMOVENUM] + ld a, [wPlayerMoveNum] ld hl, wBattleMonMaxHP jr z, .recoilEffect - ld a, [W_ENEMYMOVENUM] + ld a, [wEnemyMoveNum] ld hl, wEnemyMonMaxHP .recoilEffect ld d, a - ld a, [W_DAMAGE] + ld a, [wDamage] ld b, a - ld a, [W_DAMAGE + 1] + ld a, [wDamage + 1] ld c, a srl b rr c diff --git a/engine/battle/moveEffects/reflect_light_screen_effect.asm b/engine/battle/moveEffects/reflect_light_screen_effect.asm index df34827f..45f785a4 100644 --- a/engine/battle/moveEffects/reflect_light_screen_effect.asm +++ b/engine/battle/moveEffects/reflect_light_screen_effect.asm @@ -1,11 +1,11 @@ ReflectLightScreenEffect_: ; 3bb97 (e:7b97) - ld hl, W_PLAYERBATTSTATUS3 - ld de, W_PLAYERMOVEEFFECT + ld hl, wPlayerBattleStatus3 + ld de, wPlayerMoveEffect ld a, [H_WHOSETURN] and a jr z, .reflectLightScreenEffect - ld hl, W_ENEMYBATTSTATUS3 - ld de, W_ENEMYMOVEEFFECT + ld hl, wEnemyBattleStatus3 + ld de, wEnemyMoveEffect .reflectLightScreenEffect ld a, [de] cp LIGHT_SCREEN_EFFECT diff --git a/engine/battle/moveEffects/substitute_effect.asm b/engine/battle/moveEffects/substitute_effect.asm index c72fffbe..7cac9f62 100644 --- a/engine/battle/moveEffects/substitute_effect.asm +++ b/engine/battle/moveEffects/substitute_effect.asm @@ -3,13 +3,13 @@ SubstituteEffect_: ; 17dad (5:7dad) call DelayFrames ld hl, wBattleMonMaxHP ld de, wPlayerSubstituteHP - ld bc, W_PLAYERBATTSTATUS2 + ld bc, wPlayerBattleStatus2 ld a, [H_WHOSETURN] and a jr z, .notEnemy ld hl, wEnemyMonMaxHP ld de, wEnemySubstituteHP - ld bc, W_ENEMYBATTSTATUS2 + ld bc, wEnemyBattleStatus2 .notEnemy ld a, [bc] bit HasSubstituteUp, a ; user already has substitute? @@ -44,7 +44,7 @@ SubstituteEffect_: ; 17dad (5:7dad) ld h, b ld l, c set HasSubstituteUp, [hl] - ld a, [W_OPTIONS] + ld a, [wOptions] bit 7, a ; battle animation is enabled? ld hl, PlayCurrentMoveAnimation ld b, BANK(PlayCurrentMoveAnimation) diff --git a/engine/battle/moveEffects/transform_effect.asm b/engine/battle/moveEffects/transform_effect.asm index 185d47af..097a0d3a 100644 --- a/engine/battle/moveEffects/transform_effect.asm +++ b/engine/battle/moveEffects/transform_effect.asm @@ -1,27 +1,27 @@ TransformEffect_: ; 3bab1 (e:7ab1) ld hl, wBattleMonSpecies ld de, wEnemyMonSpecies - ld bc, W_ENEMYBATTSTATUS3 - ld a, [W_ENEMYBATTSTATUS1] + ld bc, wEnemyBattleStatus3 + ld a, [wEnemyBattleStatus1] ld a, [H_WHOSETURN] and a jr nz, .hitTest ld hl, wEnemyMonSpecies ld de, wBattleMonSpecies - ld bc, W_PLAYERBATTSTATUS3 + ld bc, wPlayerBattleStatus3 ld [wPlayerMoveListIndex], a - ld a, [W_PLAYERBATTSTATUS1] + ld a, [wPlayerBattleStatus1] .hitTest bit Invulnerable, a ; is mon invulnerable to typical attacks? (fly/dig) jp nz, .failed push hl push de push bc - ld hl, W_PLAYERBATTSTATUS2 + ld hl, wPlayerBattleStatus2 ld a, [H_WHOSETURN] and a jr z, .transformEffect - ld hl, W_ENEMYBATTSTATUS2 + ld hl, wEnemyBattleStatus2 .transformEffect ; animation(s) played are different if target has Substitute up bit HasSubstituteUp, [hl] @@ -29,7 +29,7 @@ TransformEffect_: ; 3bab1 (e:7ab1) ld hl, HideSubstituteShowMonAnim ld b, BANK(HideSubstituteShowMonAnim) call nz, Bankswitch - ld a, [W_OPTIONS] + ld a, [wOptions] add a ld hl, PlayCurrentMoveAnimation ld b, BANK(PlayCurrentMoveAnimation) @@ -67,12 +67,12 @@ TransformEffect_: ; 3bab1 (e:7ab1) ld a, [H_WHOSETURN] and a jr z, .next -; save enemy mon DVs in wcceb/wccec (enemy turn only) +; save enemy mon DVs at wTransformedEnemyMonOriginalDVs ld a, [de] - ld [wcceb], a + ld [wTransformedEnemyMonOriginalDVs], a inc de ld a, [de] - ld [wccec], a + ld [wTransformedEnemyMonOriginalDVs + 1], a dec de .next ; DVs diff --git a/engine/battle/print_type.asm b/engine/battle/print_type.asm index 38c701a8..deca2426 100644 --- a/engine/battle/print_type.asm +++ b/engine/battle/print_type.asm @@ -6,11 +6,11 @@ PrintMonType: ; 27d6b (9:7d6b) call GetMonHeader pop hl push hl - ld a, [W_MONHTYPE1] + ld a, [wMonHType1] call PrintType - ld a, [W_MONHTYPE1] + ld a, [wMonHType1] ld b, a - ld a, [W_MONHTYPE2] + ld a, [wMonHType2] cp b pop hl jr z, EraseType2Text @@ -34,7 +34,7 @@ EraseType2Text: ; 27d8c (9:7d8c) PrintMoveType: ; 27d98 (9:7d98) call GetPredefRegisters push hl - ld a, [W_PLAYERMOVETYPE] + ld a, [wPlayerMoveType] ; fall through PrintType_: ; 27d9f (9:7d9f) diff --git a/engine/battle/read_trainer_party.asm b/engine/battle/read_trainer_party.asm index 0976c7c7..4a5657b2 100755 --- a/engine/battle/read_trainer_party.asm +++ b/engine/battle/read_trainer_party.asm @@ -15,7 +15,7 @@ ReadTrainer: ; 39c53 (e:5c53) ld [hl],a ; get the pointer to trainer data for this class - ld a,[W_CUROPPONENT] + ld a,[wCurOpponent] sub $C9 ; convert value from pokemon to trainer add a,a ld hl,TrainerDataPointers @@ -25,7 +25,7 @@ ReadTrainer: ; 39c53 (e:5c53) ld a,[hli] ld h,[hl] ld l,a - ld a,[W_TRAINERNO] + ld a,[wTrainerNo] ld b,a ; At this point b contains the trainer number, ; and hl points to the trainer class. @@ -43,13 +43,13 @@ ReadTrainer: ; 39c53 (e:5c53) ; if the first byte of trainer data is FF, ; - each pokemon has a specific level ; (as opposed to the whole team being of the same level) -; - if [W_LONEATTACKNO] != 0, one pokemon on the team has a special move +; - if [wLoneAttackNo] != 0, one pokemon on the team has a special move ; else the first byte is the level of every pokemon on the team .IterateTrainer ld a,[hli] cp $FF ; is the trainer special? jr z,.SpecialTrainer ; if so, check for special moves - ld [W_CURENEMYLVL],a + ld [wCurEnemyLVL],a .LoopTrainerData ld a,[hli] and a ; have we reached the end of the trainer data? @@ -65,11 +65,11 @@ ReadTrainer: ; 39c53 (e:5c53) ; if this code is being run: ; - each pokemon has a specific level ; (as opposed to the whole team being of the same level) -; - if [W_LONEATTACKNO] != 0, one pokemon on the team has a special move +; - if [wLoneAttackNo] != 0, one pokemon on the team has a special move ld a,[hli] and a ; have we reached the end of the trainer data? jr z,.AddLoneMove - ld [W_CURENEMYLVL],a + ld [wCurEnemyLVL],a ld a,[hli] ld [wcf91],a ld a,ENEMY_PARTY_DATA @@ -80,7 +80,7 @@ ReadTrainer: ; 39c53 (e:5c53) jr .SpecialTrainer .AddLoneMove ; does the trainer have a single monster with a different move - ld a,[W_LONEATTACKNO] ; Brock is 01, Misty is 02, Erika is 04, etc + ld a,[wLoneAttackNo] ; Brock is 01, Misty is 02, Erika is 04, etc and a jr z,.AddTeamMove dec a @@ -100,8 +100,8 @@ ReadTrainer: ; 39c53 (e:5c53) ; check if our trainer's team has special moves ; get trainer class number - ld a,[W_CUROPPONENT] - sub $C8 + ld a,[wCurOpponent] + sub 200 ld b,a ld hl,TeamMoves @@ -130,7 +130,7 @@ ReadTrainer: ; 39c53 (e:5c53) ld [wEnemyMon1Moves + 2],a ; starter - ld a,[W_RIVALSTARTER] + ld a,[wRivalStarter] cp STARTER3 ld b,MEGA_DRAIN jr z,.GiveStarterMove @@ -150,7 +150,7 @@ ReadTrainer: ; 39c53 (e:5c53) ld [de],a inc de ld [de],a - ld a,[W_CURENEMYLVL] + ld a,[wCurEnemyLVL] ld b,a .LastLoop ; update wAmountMoneyWon addresses (money to win) based on enemy's level @@ -162,5 +162,5 @@ ReadTrainer: ; 39c53 (e:5c53) inc de inc de dec b - jr nz,.LastLoop ; repeat W_CURENEMYLVL times + jr nz,.LastLoop ; repeat wCurEnemyLVL times ret diff --git a/engine/battle/safari_zone.asm b/engine/battle/safari_zone.asm index 6b0e2220..344e2309 100755 --- a/engine/battle/safari_zone.asm +++ b/engine/battle/safari_zone.asm @@ -18,7 +18,7 @@ PrintSafariZoneBattleText: ; 4277 (1:4277) ld a, [wEnemyMonSpecies] ld [wd0b5], a call GetMonHeader - ld a, [W_MONHCATCHRATE] + ld a, [wMonHCatchRate] ld [wEnemyMonCatchRate], a pop hl .asm_429f diff --git a/engine/battle/save_trainer_name.asm b/engine/battle/save_trainer_name.asm index 84ef1f69..ceba63bd 100644 --- a/engine/battle/save_trainer_name.asm +++ b/engine/battle/save_trainer_name.asm @@ -1,6 +1,6 @@ SaveTrainerName: ; 27e4a (9:7e4a) ld hl,TrainerNamePointers - ld a,[W_TRAINERCLASS] + ld a,[wTrainerClass] dec a ld c,a ld b,0 @@ -23,50 +23,50 @@ TrainerNamePointers: ; 27e64 (9:7e64) dw YoungsterName dw BugCatcherName dw LassName - dw W_TRAINERNAME + dw wTrainerName dw JrTrainerMName dw JrTrainerFName dw PokemaniacName dw SuperNerdName - dw W_TRAINERNAME - dw W_TRAINERNAME + dw wTrainerName + dw wTrainerName dw BurglarName dw EngineerName dw JugglerXName - dw W_TRAINERNAME + dw wTrainerName dw SwimmerName - dw W_TRAINERNAME - dw W_TRAINERNAME + dw wTrainerName + dw wTrainerName dw BeautyName - dw W_TRAINERNAME + dw wTrainerName dw RockerName dw JugglerName - dw W_TRAINERNAME - dw W_TRAINERNAME + dw wTrainerName + dw wTrainerName dw BlackbeltName - dw W_TRAINERNAME + dw wTrainerName dw ProfOakName dw ChiefName dw ScientistName - dw W_TRAINERNAME + dw wTrainerName dw RocketName dw CooltrainerMName dw CooltrainerFName - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME + dw wTrainerName + dw wTrainerName + dw wTrainerName + dw wTrainerName + dw wTrainerName + dw wTrainerName + dw wTrainerName + dw wTrainerName + dw wTrainerName + dw wTrainerName + dw wTrainerName + dw wTrainerName + dw wTrainerName + dw wTrainerName + dw wTrainerName YoungsterName: ; 27ec2 (9:7ec2) db "YOUNGSTER@" diff --git a/engine/battle/scale_sprites.asm b/engine/battle/scale_sprites.asm index ed227984..6a8d43a9 100644 --- a/engine/battle/scale_sprites.asm +++ b/engine/battle/scale_sprites.asm @@ -2,12 +2,12 @@ ; assumes that input sprite chunks are 4x4 tiles, and the rightmost and bottommost 4 pixels will be ignored ; resulting in a 7*7 tile output sprite chunk ScaleSpriteByTwo: ; 2fe40 (b:7e40) - ld de, S_SPRITEBUFFER1 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped - ld hl, S_SPRITEBUFFER0 + SPRITEBUFFERSIZE - 1 ; end of destination buffer + ld de, sSpriteBuffer1 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped + ld hl, sSpriteBuffer0 + SPRITEBUFFERSIZE - 1 ; end of destination buffer call ScaleLastSpriteColumnByTwo ; last tile column is special case call ScaleFirstThreeSpriteColumnsByTwo ; scale first 3 tile columns - ld de, S_SPRITEBUFFER2 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped - ld hl, S_SPRITEBUFFER1 + SPRITEBUFFERSIZE - 1 ; end of destination buffer + ld de, sSpriteBuffer2 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped + ld hl, sSpriteBuffer1 + SPRITEBUFFERSIZE - 1 ; end of destination buffer call ScaleLastSpriteColumnByTwo ; last tile column is special case ScaleFirstThreeSpriteColumnsByTwo: ; 2fe55 (b:7e55) diff --git a/engine/battle/scroll_draw_trainer_pic.asm b/engine/battle/scroll_draw_trainer_pic.asm index b32650e3..5949208c 100644 --- a/engine/battle/scroll_draw_trainer_pic.asm +++ b/engine/battle/scroll_draw_trainer_pic.asm @@ -3,8 +3,8 @@ _ScrollTrainerPicAfterBattle: ; 396d3 (e:56d3) ; the screen from the right. xor a ld [wEnemyMonSpecies2], a - ld b, $1 - call GoPAL_SET + ld b, SET_PAL_BATTLE + call RunPaletteCommand callab _LoadTrainerPic coord hl, 19, 0 ld c, $0 diff --git a/engine/battle/trainer_ai.asm b/engine/battle/trainer_ai.asm index 9102b2d8..bab4c253 100644 --- a/engine/battle/trainer_ai.asm +++ b/engine/battle/trainer_ai.asm @@ -7,7 +7,7 @@ AIEnemyTrainerChooseMoves: ; 39719 (e:5719) ld [hli], a ; move 2 ld [hli], a ; move 3 ld [hl], a ; move 4 - ld a, [W_ENEMYDISABLEDMOVE] ; forbid disabled move (if any) + ld a, [wEnemyDisabledMove] ; forbid disabled move (if any) swap a and $f jr z, .noMoveDisabled @@ -19,7 +19,7 @@ AIEnemyTrainerChooseMoves: ; 39719 (e:5719) ld [hl], $50 ; forbid (highly discourage) disabled move .noMoveDisabled ld hl, TrainerClassMoveChoiceModifications - ld a, [W_TRAINERCLASS] + ld a, [wTrainerClass] ld b, a .loopTrainerClasses dec b @@ -126,10 +126,10 @@ AIMoveChoiceModification1: ; 397ab (e:57ab) ret z ; no more moves in move set inc de call ReadMove - ld a, [W_ENEMYMOVEPOWER] + ld a, [wEnemyMovePower] and a jr nz, .nextMove - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] push hl push de push bc @@ -171,7 +171,7 @@ AIMoveChoiceModification2: ; 397e7 (e:57e7) ret z ; no more moves in move set inc de call ReadMove - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] cp ATTACK_UP1_EFFECT jr c, .nextMove cp BIDE_EFFECT @@ -191,7 +191,7 @@ AIMoveChoiceModification2: ; 397e7 (e:57e7) AIMoveChoiceModification3: ; 39817 (e:5817) ld hl, wBuffer - 1 ; temp move selection array (-1 byte offset) ld de, wEnemyMonMoves ; enemy moves - ld b, $5 + ld b, NUM_MOVES + 1 .nextMove dec b ret z ; processed all 4 moves @@ -208,7 +208,7 @@ AIMoveChoiceModification3: ; 39817 (e:5817) pop de pop bc pop hl - ld a, [wd11e] + ld a, [wTypeEffectiveness] cp $10 jr z, .nextMove jr c, .notEffectiveMove @@ -218,7 +218,7 @@ AIMoveChoiceModification3: ; 39817 (e:5817) push hl push de push bc - ld a, [W_ENEMYMOVETYPE] + ld a, [wEnemyMoveType] ld d, a ld hl, wEnemyMonMoves ; enemy moves ld b, NUM_MOVES + 1 @@ -230,17 +230,17 @@ AIMoveChoiceModification3: ; 39817 (e:5817) and a jr z, .done call ReadMove - ld a, [W_ENEMYMOVEEFFECT] + ld a, [wEnemyMoveEffect] cp SUPER_FANG_EFFECT jr z, .betterMoveFound ; Super Fang is considered to be a better move cp SPECIAL_DAMAGE_EFFECT jr z, .betterMoveFound ; any special damage moves are considered to be better moves cp FLY_EFFECT jr z, .betterMoveFound ; Fly is considered to be a better move - ld a, [W_ENEMYMOVETYPE] + ld a, [wEnemyMoveType] cp d jr z, .loopMoves - ld a, [W_ENEMYMOVEPOWER] + ld a, [wEnemyMovePower] and a jr nz, .betterMoveFound ; damaging moves of a different type are considered to be better moves jr .loopMoves @@ -264,9 +264,9 @@ ReadMove: ; 39884 (e:5884) push bc dec a ld hl,Moves - ld bc,6 + ld bc,MoveEnd - Moves call AddNTimes - ld de,W_ENEMYMOVENUM + ld de,wEnemyMoveNum call CopyData pop bc pop de @@ -280,8 +280,8 @@ TrainerClassMoveChoiceModifications: ; 3989b (e:589b) db 1,0 ; BUG CATCHER db 1,0 ; LASS db 1,3,0 ; SAILOR - db 1,0 ; JR__TRAINER_M - db 1,0 ; JR__TRAINER_F + db 1,0 ; JR_TRAINER_M + db 1,0 ; JR_TRAINER_F db 1,2,3,0; POKEMANIAC db 1,2,0 ; SUPER_NERD db 1,0 ; HIKER @@ -311,7 +311,7 @@ TrainerClassMoveChoiceModifications: ; 3989b (e:589b) db 1,0 ; BRUNO db 1,0 ; BROCK db 1,3,0 ; MISTY - db 1,3,0 ; LT__SURGE + db 1,3,0 ; LT_SURGE db 1,3,0 ; ERIKA db 1,3,0 ; KOGA db 1,3,0 ; BLAINE @@ -338,13 +338,13 @@ INCLUDE "data/trainer_parties.asm" TrainerAI: ; 3a52e (e:652e) and a - ld a,[W_ISINBATTLE] + ld a,[wIsInBattle] dec a ret z ; if not a trainer, we're done here ld a,[wLinkState] cp LINK_STATE_BATTLING ret z - ld a,[W_TRAINERCLASS] ; what trainer class is this? + ld a,[wTrainerClass] ; what trainer class is this? dec a ld c,a ld b,0 @@ -727,27 +727,27 @@ AICureStatus: ; 3a791 (e:6791) xor a ld [hl],a ; clear status in enemy team roster ld [wEnemyMonStatus],a ; clear status of active enemy - ld hl,W_ENEMYBATTSTATUS3 + ld hl,wEnemyBattleStatus3 res 0,[hl] ret AIUseXAccuracy: ; 0x3a7a8 unused call AIPlayRestoringSFX - ld hl,W_ENEMYBATTSTATUS2 + ld hl,wEnemyBattleStatus2 set 0,[hl] ld a,X_ACCURACY jp AIPrintItemUse AIUseGuardSpec: ; 3a7b5 (e:67b5) call AIPlayRestoringSFX - ld hl,W_ENEMYBATTSTATUS2 + ld hl,wEnemyBattleStatus2 set 1,[hl] - ld a,GUARD_SPEC_ + ld a,GUARD_SPEC jp AIPrintItemUse AIUseDireHit: ; 0x3a7c2 unused call AIPlayRestoringSFX - ld hl,W_ENEMYBATTSTATUS2 + ld hl,wEnemyBattleStatus2 set 2,[hl] ld a,DIRE_HIT jp AIPrintItemUse @@ -803,7 +803,7 @@ AIIncreaseStat: ; 3a808 (e:6808) push bc call AIPrintItemUse_ pop bc - ld hl,W_ENEMYMOVEEFFECT + ld hl,wEnemyMoveEffect ld a,[hld] push af ld a,[hl] diff --git a/engine/battle/wild_encounters.asm b/engine/battle/wild_encounters.asm index 144234bb..044f7ea5 100644 --- a/engine/battle/wild_encounters.asm +++ b/engine/battle/wild_encounters.asm @@ -27,24 +27,24 @@ TryDoWildEncounter: ; 13870 (4:7870) ; is the bottom right tile (9,9) of the half-block we're standing in a grass/water tile? coord hl, 9, 9 ld c, [hl] - ld a, [W_GRASSTILE] + ld a, [wGrassTile] cp c - ld a, [W_GRASSRATE] + ld a, [wGrassRate] jr z, .CanEncounter ld a, $14 ; in all tilesets with a water tile, this is its id cp c - ld a, [W_WATERRATE] + ld a, [wWaterRate] jr z, .CanEncounter ; even if not in grass/water, standing anywhere we can encounter pokemon ; so long as the map is "indoor" and has wild pokemon defined. ; ...as long as it's not Viridian Forest or Safari Zone. - ld a, [W_CURMAP] + ld a, [wCurMap] cp REDS_HOUSE_1F ; is this an indoor map? jr c, .CantEncounter2 - ld a, [W_CURMAPTILESET] + ld a, [wCurMapTileset] cp FOREST ; Viridian Forest/Safari Zone jr z, .CantEncounter2 - ld a, [W_GRASSRATE] + ld a, [wGrassRate] .CanEncounter ; compare encounter chance with a random number to determine if there will be an encounter ld b, a @@ -63,18 +63,18 @@ TryDoWildEncounter: ; 13870 (4:7870) .gotEncounterSlot ; determine which wild pokemon (grass or water) can appear in the half-block we're standing in ld c, [hl] - ld hl, W_GRASSMONS + ld hl, wGrassMons aCoord 8, 9 cp $14 ; is the bottom left tile (8,9) of the half-block we're standing in a water tile? jr nz, .gotWildEncounterType ; else, it's treated as a grass tile by default - ld hl, W_WATERMONS + ld hl, wWaterMons ; since the bottom right tile of a "left shore" half-block is $14 but the bottom left tile is not, ; "left shore" half-blocks (such as the one in the east coast of Cinnabar) load grass encounters. .gotWildEncounterType ld b, 0 add hl, bc ld a, [hli] - ld [W_CURENEMYLVL], a + ld [wCurEnemyLVL], a ld a, [hl] ld [wcf91], a ld [wEnemyMonSpecies2], a @@ -83,7 +83,7 @@ TryDoWildEncounter: ; 13870 (4:7870) jr z, .willEncounter ld a, [wPartyMon1Level] ld b, a - ld a, [W_CURENEMYLVL] + ld a, [wCurEnemyLVL] cp b jr c, .CantEncounter2 ; repel prevents encounters if the leading party mon's level is higher than the wild mon jr .willEncounter |