mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-02-06 15:45:24 +13:00
No more W_
This commit is contained in:
parent
1ee9fb408c
commit
38065a744d
190 changed files with 2202 additions and 2202 deletions
|
|
@ -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
|
||||
|
|
@ -775,15 +775,15 @@ DoBallTossSpecialEffects: ; 78f3e (1e:4f3e)
|
|||
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
|
||||
|
|
@ -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
|
||||
|
|
@ -2354,7 +2354,7 @@ GetMoveSound: ; 7986f (1e:586f)
|
|||
|
||||
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,7 +2953,7 @@ 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,[wPokeBallAnimData]
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ BattleTransitions: ; 709d2 (1c:49d2)
|
|||
dw BattleTransition_Split ; %111
|
||||
|
||||
GetBattleTransitionID_WildOrTrainer: ; 709e2 (1c:49e2)
|
||||
ld a, [W_CUROPPONENT]
|
||||
ld a, [wCurOpponent]
|
||||
cp 200
|
||||
jr nc, .trainer
|
||||
res 0, c
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -47,10 +47,10 @@ EndOfBattle: ; 137aa (4:77aa)
|
|||
xor a
|
||||
ld [wLowHealthAlarm], a ;disable low health alarm
|
||||
ld [wChannelSoundIDs + CH4], a
|
||||
ld [W_ISINBATTLE], a
|
||||
ld [W_BATTLETYPE], a
|
||||
ld [W_MOVEMISSED], a
|
||||
ld [W_CUROPPONENT], a
|
||||
ld [wIsInBattle], a
|
||||
ld [wBattleType], a
|
||||
ld [wMoveMissed], a
|
||||
ld [wCurOpponent], a
|
||||
ld [wForcePlayerToChooseMon], a
|
||||
ld [wNumRunAttempts], a
|
||||
ld [wEscapedFromBattle], a
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ GainExperience: ; 5524f (15:524f)
|
|||
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
|
||||
|
|
@ -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
|
||||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -27,12 +27,12 @@ InitBattleVariables: ; 525af (14:65af)
|
|||
jr nz, .loop
|
||||
inc a ; POUND
|
||||
ld [wTestBattlePlayerSelectedMove], a
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
cp SAFARI_ZONE_EAST
|
||||
jr c, .notSafariBattle
|
||||
cp SAFARI_ZONE_REST_HOUSE_1
|
||||
jr nc, .notSafariBattle
|
||||
ld a, BATTLE_TYPE_SAFARI
|
||||
ld [W_BATTLETYPE], a
|
||||
ld [wBattleType], a
|
||||
.notSafariBattle
|
||||
jpab PlayBattleMusic
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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,7 +100,7 @@ ReadTrainer: ; 39c53 (e:5c53)
|
|||
; check if our trainer's team has special moves
|
||||
|
||||
; get trainer class number
|
||||
ld a,[W_CUROPPONENT]
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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@"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -266,7 +266,7 @@ ReadMove: ; 39884 (e:5884)
|
|||
ld hl,Moves
|
||||
ld bc,MoveEnd - Moves
|
||||
call AddNTimes
|
||||
ld de,W_ENEMYMOVENUM
|
||||
ld de,wEnemyMoveNum
|
||||
call CopyData
|
||||
pop bc
|
||||
pop de
|
||||
|
|
@ -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_
|
||||
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]
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@ 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
|
||||
|
|
@ -38,13 +38,13 @@ TryDoWildEncounter: ; 13870 (4:7870)
|
|||
; 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,7 +63,7 @@ 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
|
||||
|
|
@ -74,7 +74,7 @@ TryDoWildEncounter: ; 13870 (4:7870)
|
|||
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
|
||||
|
|
|
|||
|
|
@ -57,8 +57,8 @@ CableClub_DoBattleOrTradeAgain: ; 5345
|
|||
ld [hli], a
|
||||
dec b
|
||||
jr nz, .zeroPlayerDataPatchListLoop
|
||||
ld hl, W_GRASSRATE
|
||||
ld bc, W_TRAINERHEADERPTR - W_GRASSRATE
|
||||
ld hl, wGrassRate
|
||||
ld bc, wTrainerHeaderPtr - wGrassRate
|
||||
.zeroEnemyPartyLoop
|
||||
xor a
|
||||
ld [hli], a
|
||||
|
|
@ -186,7 +186,7 @@ CableClub_DoBattleOrTradeAgain: ; 5345
|
|||
dec c
|
||||
jr nz, .copyEnemyNameLoop
|
||||
ld de, wEnemyPartyCount
|
||||
ld bc, W_TRAINERHEADERPTR - wEnemyPartyCount
|
||||
ld bc, wTrainerHeaderPtr - wEnemyPartyCount
|
||||
.copyEnemyPartyLoop
|
||||
ld a, [hli]
|
||||
cp SERIAL_NO_DATA_BYTE
|
||||
|
|
@ -275,10 +275,10 @@ CableClub_DoBattleOrTradeAgain: ; 5345
|
|||
ld a, LINK_STATE_BATTLING
|
||||
ld [wLinkState], a
|
||||
ld a, OPP_SONY1
|
||||
ld [W_CUROPPONENT], a
|
||||
ld [wCurOpponent], a
|
||||
call ClearScreen
|
||||
call Delay3
|
||||
ld hl, W_OPTIONS
|
||||
ld hl, wOptions
|
||||
res 7, [hl]
|
||||
predef InitOpponent
|
||||
predef HealParty
|
||||
|
|
@ -900,18 +900,18 @@ CableClub_Run: ; 5a5f (1:5a5f)
|
|||
call CableClub_DoBattleOrTrade
|
||||
ld hl, Club_GFX
|
||||
ld a, h
|
||||
ld [W_TILESETGFXPTR + 1], a
|
||||
ld [wTileSetGFXPtr + 1], a
|
||||
ld a, l
|
||||
ld [W_TILESETGFXPTR], a
|
||||
ld [wTileSetGFXPtr], a
|
||||
ld a, Bank(Club_GFX)
|
||||
ld [W_TILESETBANK], a
|
||||
ld [wTileSetBank], a
|
||||
ld hl, Club_Coll
|
||||
ld a, h
|
||||
ld [W_TILESETCOLLISIONPTR + 1], a
|
||||
ld [wTileSetCollisionPtr + 1], a
|
||||
ld a, l
|
||||
ld [W_TILESETCOLLISIONPTR], a
|
||||
ld [wTileSetCollisionPtr], a
|
||||
xor a
|
||||
ld [W_GRASSRATE], a
|
||||
ld [wGrassRate], a
|
||||
inc a ; LINK_STATE_IN_CABLE_CLUB
|
||||
ld [wLinkState], a
|
||||
ld [$ffb5], a
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ Evolution_PartyMonLoop: ; loop over party mons
|
|||
cp b ; is the mon's level greater than the evolution requirement?
|
||||
jp c, .nextEvoEntry2 ; if so, go the next evolution entry
|
||||
.doEvolution
|
||||
ld [W_CURENEMYLVL], a
|
||||
ld [wCurEnemyLVL], a
|
||||
ld a, 1
|
||||
ld [wEvolutionOccurred], a
|
||||
push hl
|
||||
|
|
@ -163,10 +163,10 @@ Evolution_PartyMonLoop: ; loop over party mons
|
|||
ld hl, BaseStats
|
||||
ld bc, MonBaseStatsEnd - MonBaseStats
|
||||
call AddNTimes
|
||||
ld de, W_MONHEADER
|
||||
ld de, wMonHeader
|
||||
call CopyData
|
||||
ld a, [wd0b5]
|
||||
ld [W_MONHINDEX], a
|
||||
ld [wMonHIndex], a
|
||||
pop af
|
||||
ld [wd11e], a
|
||||
ld hl, wLoadedMonHPExp - 1
|
||||
|
|
@ -210,7 +210,7 @@ Evolution_PartyMonLoop: ; loop over party mons
|
|||
call LearnMoveFromLevelUp
|
||||
pop hl
|
||||
predef SetPartyMonTypes
|
||||
ld a, [W_ISINBATTLE]
|
||||
ld a, [wIsInBattle]
|
||||
and a
|
||||
call z, Evolution_ReloadTilesetTilePatterns
|
||||
predef IndexToPokedex
|
||||
|
|
@ -249,7 +249,7 @@ Evolution_PartyMonLoop: ; loop over party mons
|
|||
ld a, [wLinkState]
|
||||
cp LINK_STATE_TRADING
|
||||
ret z
|
||||
ld a, [W_ISINBATTLE]
|
||||
ld a, [wIsInBattle]
|
||||
and a
|
||||
ret nz
|
||||
ld a, [wEvolutionOccurred]
|
||||
|
|
@ -262,7 +262,7 @@ RenameEvolvedMon: ; 3aef7 (e:6ef7)
|
|||
; nickname, in which case the nickname is kept.
|
||||
ld a, [wd0b5]
|
||||
push af
|
||||
ld a, [W_MONHINDEX]
|
||||
ld a, [wMonHIndex]
|
||||
ld [wd0b5], a
|
||||
call GetName
|
||||
pop af
|
||||
|
|
@ -340,7 +340,7 @@ LearnMoveFromLevelUp: ; 3af5b (e:6f5b)
|
|||
and a ; have we reached the end of the learn set?
|
||||
jr z, .done ; if we've reached the end of the learn set, jump
|
||||
ld b, a ; level the move is learnt at
|
||||
ld a, [W_CURENEMYLVL]
|
||||
ld a, [wCurEnemyLVL]
|
||||
cp b ; is the move learnt at the mon's current level?
|
||||
ld a, [hli] ; move ID
|
||||
jr nz, .learnSetLoop
|
||||
|
|
@ -375,7 +375,7 @@ LearnMoveFromLevelUp: ; 3af5b (e:6f5b)
|
|||
ld [wd11e], a
|
||||
ret
|
||||
|
||||
; writes the moves a mon has at level [W_CURENEMYLVL] to [de]
|
||||
; writes the moves a mon has at level [wCurEnemyLVL] to [de]
|
||||
; move slots are being filled up sequentially and shifted if all slots are full
|
||||
WriteMonMoves: ; 3afb8 (e:6fb8)
|
||||
call GetPredefRegisters
|
||||
|
|
@ -407,7 +407,7 @@ WriteMonMoves: ; 3afb8 (e:6fb8)
|
|||
and a
|
||||
jp z, .done ; end of list
|
||||
ld b, a
|
||||
ld a, [W_CURENEMYLVL]
|
||||
ld a, [wCurEnemyLVL]
|
||||
cp b
|
||||
jp c, .done ; mon level < move level (assumption: learnset is sorted by level)
|
||||
ld a, [wLearningMovesFromDayCare]
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ CalcLevelFromExperience: ; 58f43 (16:4f43)
|
|||
|
||||
; calculates the amount of experience needed for level d
|
||||
CalcExperience: ; 58f6a (16:4f6a)
|
||||
ld a, [W_MONHGROWTHRATE]
|
||||
ld a, [wMonHGrowthRate]
|
||||
add a
|
||||
add a
|
||||
ld c, a
|
||||
|
|
|
|||
|
|
@ -7,12 +7,12 @@ _GivePokemon: ; 4fda5 (13:7da5)
|
|||
ld a, [wPartyCount]
|
||||
cp PARTY_LENGTH
|
||||
jr c, .addToParty
|
||||
ld a, [W_NUMINBOX]
|
||||
ld a, [wNumInBox]
|
||||
cp MONS_PER_BOX
|
||||
jr nc, .boxFull
|
||||
; add to box
|
||||
xor a
|
||||
ld [W_ENEMYBATTSTATUS3], a
|
||||
ld [wEnemyBattleStatus3], a
|
||||
ld a, [wcf91]
|
||||
ld [wEnemyMonSpecies2], a
|
||||
callab LoadEnemyMonData
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ AnimateHallOfFame: ; 701a0 (1c:41a0)
|
|||
xor a
|
||||
ld [wUpdateSpritesEnabled], a
|
||||
ld [hTilesetType], a
|
||||
ld [W_SPRITEFLIPPED], a
|
||||
ld [wSpriteFlipped], a
|
||||
ld [wLetterPrintingDelayFlags], a ; no delay
|
||||
ld [wHoFMonOrPlayer], a ; mon
|
||||
inc a
|
||||
|
|
@ -224,12 +224,12 @@ HoFDisplayPlayerStats: ; 70377 (1c:4377)
|
|||
ld de, HoFPlayTimeText
|
||||
call PlaceString
|
||||
coord hl, 5, 7
|
||||
ld de, W_PLAYTIMEHOURS + 1
|
||||
ld de, wPlayTimeHours + 1
|
||||
lb bc, 1, 3
|
||||
call PrintNumber
|
||||
ld [hl], $6d
|
||||
inc hl
|
||||
ld de, W_PLAYTIMEMINUTES + 1
|
||||
ld de, wPlayTimeMinutes + 1
|
||||
lb bc, LEADING_ZEROES | 1, 2
|
||||
call PrintNumber
|
||||
coord hl, 1, 9
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ GymStatues: ; 62419 (18:6419)
|
|||
cp SPRITE_FACING_UP
|
||||
ret nz
|
||||
ld hl, .BadgeFlags
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
ld b, a
|
||||
.loop
|
||||
ld a, [hli]
|
||||
|
|
@ -50,7 +50,7 @@ GymStatueText2: ; 62458 (18:6458)
|
|||
PrintBenchGuyText: ; 6245d (18:645d)
|
||||
call EnableAutoTextBoxDrawing
|
||||
ld hl, BenchGuyTextPointers
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
ld b, a
|
||||
.loop
|
||||
ld a, [hli]
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ PrintBookshelfText: ; fb50 (3:7b50)
|
|||
cp SPRITE_FACING_UP
|
||||
jr nz, .noMatch
|
||||
; facing up
|
||||
ld a, [W_CURMAPTILESET]
|
||||
ld a, [wCurMapTileset]
|
||||
ld b, a
|
||||
aCoord 8, 7
|
||||
ld c, a
|
||||
|
|
@ -78,7 +78,7 @@ IndigoPlateauStatues: ; fbbf (3:7bbf)
|
|||
TX_ASM
|
||||
ld hl, IndigoPlateauStatuesText1
|
||||
call PrintText
|
||||
ld a, [W_XCOORD]
|
||||
ld a, [wXCoord]
|
||||
bit 0, a
|
||||
ld hl, IndigoPlateauStatuesText2
|
||||
jr nz, .asm_fbd3
|
||||
|
|
@ -102,7 +102,7 @@ IndigoPlateauStatuesText3: ; fbe3 (3:7be3)
|
|||
BookOrSculptureText: ; fbe8 (3:7be8)
|
||||
TX_ASM
|
||||
ld hl, PokemonBooksText
|
||||
ld a, [W_CURMAPTILESET]
|
||||
ld a, [wCurMapTileset]
|
||||
cp MANSION ; Celadon Mansion tileset
|
||||
jr nz, .asm_fbfd
|
||||
aCoord 8, 6
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ StrengthsAndWeaknessesText: ; 1e983 (7:6983)
|
|||
SafariZoneCheck: ; 1e988 (7:6988)
|
||||
CheckEventHL EVENT_IN_SAFARI_ZONE ; if we are not in the Safari Zone,
|
||||
jr z, SafariZoneGameStillGoing ; don't bother printing game over text
|
||||
ld a, [W_NUMSAFARIBALLS]
|
||||
ld a, [wNumSafariBalls]
|
||||
and a
|
||||
jr z, SafariZoneGameOver
|
||||
jr SafariZoneGameStillGoing
|
||||
|
|
@ -83,7 +83,7 @@ SafariZoneGameOver: ; 1e9b0 (7:69b0)
|
|||
ld a, $3
|
||||
ld [wDestinationWarpID], a
|
||||
ld a, $5
|
||||
ld [W_SAFARIZONEENTRANCECURSCRIPT], a
|
||||
ld [wSafariZoneEntranceCurScript], a
|
||||
SetEvent EVENT_SAFARI_GAME_OVER
|
||||
ld a, 1
|
||||
ld [wSafariZoneGameOver], a
|
||||
|
|
@ -97,7 +97,7 @@ PrintSafariGameOverText: ; 1e9ed (7:69ed)
|
|||
|
||||
SafariGameOverText: ; 1e9f7 (7:69f7)
|
||||
TX_ASM
|
||||
ld a, [W_NUMSAFARIBALLS]
|
||||
ld a, [wNumSafariBalls]
|
||||
and a
|
||||
jr z, .asm_1ea04
|
||||
ld hl, TimesUpText
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ InGameTrade_DoTrade: ; 71c07 (1c:5c07)
|
|||
ld bc, wPartyMon2 - wPartyMon1
|
||||
call AddNTimes
|
||||
ld a,[hl]
|
||||
ld [W_CURENEMYLVL],a
|
||||
ld [wCurEnemyLVL],a
|
||||
ld hl,wCompletedInGameTradeFlags
|
||||
ld a,[wWhichTrade]
|
||||
ld c,a
|
||||
|
|
@ -118,13 +118,13 @@ InGameTrade_DoTrade: ; 71c07 (1c:5c07)
|
|||
call PrintText
|
||||
ld a,[wWhichPokemon]
|
||||
push af
|
||||
ld a,[W_CURENEMYLVL]
|
||||
ld a,[wCurEnemyLVL]
|
||||
push af
|
||||
call LoadHpBarAndStatusTilePatterns
|
||||
call InGameTrade_PrepareTradeData
|
||||
predef InternalClockTradeAnim
|
||||
pop af
|
||||
ld [W_CURENEMYLVL],a
|
||||
ld [wCurEnemyLVL],a
|
||||
pop af
|
||||
ld [wWhichPokemon],a
|
||||
ld a,[wInGameTradeReceiveMonSpecies]
|
||||
|
|
|
|||
|
|
@ -29,9 +29,9 @@ PlayIntroScene: ; 4169d (10:569d)
|
|||
ld b, $3 ; Gengar tiles
|
||||
call IntroCopyTiles
|
||||
ld a, 0
|
||||
ld [W_BASECOORDX], a
|
||||
ld [wBaseCoordX], a
|
||||
ld a, 80
|
||||
ld [W_BASECOORDY], a
|
||||
ld [wBaseCoordY], a
|
||||
lb bc, 6, 6
|
||||
call InitIntroNidorinoOAM
|
||||
lb de, 80 / 2, MOVE_NIDORINO_RIGHT
|
||||
|
|
@ -141,10 +141,10 @@ AnimateIntroNidorino: ; 41793 (10:5793)
|
|||
ld a, [de]
|
||||
cp $50
|
||||
ret z
|
||||
ld [W_BASECOORDY], a
|
||||
ld [wBaseCoordY], a
|
||||
inc de
|
||||
ld a, [de]
|
||||
ld [W_BASECOORDX], a
|
||||
ld [wBaseCoordX], a
|
||||
push de
|
||||
ld c, 6 * 6
|
||||
call UpdateIntroNidorinoOAM
|
||||
|
|
@ -159,10 +159,10 @@ UpdateIntroNidorinoOAM: ; 417ae (10:57ae)
|
|||
ld a, [wIntroNidorinoBaseTile]
|
||||
ld d, a
|
||||
.loop
|
||||
ld a, [W_BASECOORDY]
|
||||
ld a, [wBaseCoordY]
|
||||
add [hl]
|
||||
ld [hli], a ; Y
|
||||
ld a, [W_BASECOORDX]
|
||||
ld a, [wBaseCoordX]
|
||||
add [hl]
|
||||
ld [hli], a ; X
|
||||
ld a, d
|
||||
|
|
@ -178,14 +178,14 @@ InitIntroNidorinoOAM: ; 417c7 (10:57c7)
|
|||
ld d, 0
|
||||
.loop
|
||||
push bc
|
||||
ld a, [W_BASECOORDY]
|
||||
ld a, [wBaseCoordY]
|
||||
ld e, a
|
||||
.innerLoop
|
||||
ld a, e
|
||||
add 8
|
||||
ld e, a
|
||||
ld [hli], a ; Y
|
||||
ld a, [W_BASECOORDX]
|
||||
ld a, [wBaseCoordX]
|
||||
ld [hli], a ; X
|
||||
ld a, d
|
||||
ld [hli], a ; tile
|
||||
|
|
@ -194,9 +194,9 @@ InitIntroNidorinoOAM: ; 417c7 (10:57c7)
|
|||
inc d
|
||||
dec c
|
||||
jr nz, .innerLoop
|
||||
ld a, [W_BASECOORDX]
|
||||
ld a, [wBaseCoordX]
|
||||
add 8
|
||||
ld [W_BASECOORDX], a
|
||||
ld [wBaseCoordX], a
|
||||
pop bc
|
||||
dec b
|
||||
jr nz, .loop
|
||||
|
|
@ -245,9 +245,9 @@ IntroMoveMon: ; 4180e (10:580e)
|
|||
.moveNidorinoRight
|
||||
push de
|
||||
ld a, 2
|
||||
ld [W_BASECOORDX], a
|
||||
ld [wBaseCoordX], a
|
||||
xor a
|
||||
ld [W_BASECOORDY], a
|
||||
ld [wBaseCoordY], a
|
||||
ld c, 6 * 6
|
||||
call UpdateIntroNidorinoOAM
|
||||
pop de
|
||||
|
|
@ -312,7 +312,7 @@ PlayShootingStar: ; 4188a (10:588a)
|
|||
call ClearScreen
|
||||
call DisableLCD
|
||||
xor a
|
||||
ld [W_CUROPPONENT], a
|
||||
ld [wCurOpponent], a
|
||||
call IntroDrawBlackBars
|
||||
call LoadIntroGraphics
|
||||
call EnableLCD
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ HiddenItemNear: ; 7481f (1d:481f)
|
|||
ld b, 0
|
||||
.loop
|
||||
ld de, 3
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
call IsInRestOfArray
|
||||
ret nc ; return if current map has no hidden items
|
||||
push bc
|
||||
|
|
@ -24,19 +24,19 @@ HiddenItemNear: ; 7481f (1d:481f)
|
|||
inc hl
|
||||
jr nz, .loop ; if the item has already been obtained
|
||||
; check if the item is within 4-5 tiles (depending on the direction of item)
|
||||
ld a, [W_YCOORD]
|
||||
ld a, [wYCoord]
|
||||
call Sub5ClampTo0
|
||||
cp d
|
||||
jr nc, .loop
|
||||
ld a, [W_YCOORD]
|
||||
ld a, [wYCoord]
|
||||
add 4
|
||||
cp d
|
||||
jr c, .loop
|
||||
ld a, [W_XCOORD]
|
||||
ld a, [wXCoord]
|
||||
call Sub5ClampTo0
|
||||
cp e
|
||||
jr nc, .loop
|
||||
ld a, [W_XCOORD]
|
||||
ld a, [wXCoord]
|
||||
add 5
|
||||
cp e
|
||||
jr c, .loop
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ ItemUsePtrTable: ; d5e1 (3:55e1)
|
|||
ItemUseBall: ; d687 (3:5687)
|
||||
|
||||
; Balls can't be used out of battle.
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp z,ItemUseNotTime
|
||||
|
||||
|
|
@ -112,14 +112,14 @@ ItemUseBall: ; d687 (3:5687)
|
|||
jp nz,ThrowBallAtTrainerMon
|
||||
|
||||
; If this is for the old man battle, skip checking if the party & box are full.
|
||||
ld a,[W_BATTLETYPE]
|
||||
ld a,[wBattleType]
|
||||
dec a
|
||||
jr z,.canUseBall
|
||||
|
||||
ld a,[wPartyCount] ; is party full?
|
||||
cp a,PARTY_LENGTH
|
||||
jr nz,.canUseBall
|
||||
ld a,[W_NUMINBOX] ; is box full?
|
||||
ld a,[wNumInBox] ; is box full?
|
||||
cp a,MONS_PER_BOX
|
||||
jp z,BoxFullCannotThrowBall
|
||||
|
||||
|
|
@ -127,12 +127,12 @@ ItemUseBall: ; d687 (3:5687)
|
|||
xor a
|
||||
ld [wCapturedMonSpecies],a
|
||||
|
||||
ld a,[W_BATTLETYPE]
|
||||
ld a,[wBattleType]
|
||||
cp a,BATTLE_TYPE_SAFARI
|
||||
jr nz,.skipSafariZoneCode
|
||||
|
||||
.safariZone
|
||||
ld hl,W_NUMSAFARIBALLS
|
||||
ld hl,wNumSafariBalls
|
||||
dec [hl] ; remove a Safari Ball
|
||||
|
||||
.skipSafariZoneCode
|
||||
|
|
@ -151,12 +151,12 @@ ItemUseBall: ; d687 (3:5687)
|
|||
ld b,$10 ; can't be caught value
|
||||
jp z,.setAnimData
|
||||
|
||||
ld a,[W_BATTLETYPE]
|
||||
ld a,[wBattleType]
|
||||
dec a
|
||||
jr nz,.notOldManBattle
|
||||
|
||||
.oldManBattle
|
||||
ld hl,W_GRASSRATE
|
||||
ld hl,wGrassRate
|
||||
ld de,wPlayerName
|
||||
ld bc,NAME_LENGTH
|
||||
call CopyData ; save the player's name in the Wild Monster data (part of the Cinnabar Island Missingno. glitch)
|
||||
|
|
@ -165,7 +165,7 @@ ItemUseBall: ; d687 (3:5687)
|
|||
.notOldManBattle
|
||||
; If the player is fighting the ghost Marowak, set the value that indicates the
|
||||
; Pokémon can't be caught and skip the capture calculations.
|
||||
ld a,[W_CURMAP]
|
||||
ld a,[wCurMap]
|
||||
cp a,POKEMONTOWER_6
|
||||
jr nz,.loop
|
||||
ld a,[wEnemyMonSpecies2]
|
||||
|
|
@ -420,7 +420,7 @@ ItemUseBall: ; d687 (3:5687)
|
|||
|
||||
; Do the animation.
|
||||
ld a,TOSS_ANIM
|
||||
ld [W_ANIMATIONID],a
|
||||
ld [wAnimationID],a
|
||||
xor a
|
||||
ld [H_WHOSETURN],a
|
||||
ld [wAnimationType],a
|
||||
|
|
@ -470,7 +470,7 @@ ItemUseBall: ; d687 (3:5687)
|
|||
; If the Pokémon is transformed, the Pokémon is assumed to be a Ditto.
|
||||
; This is a bug because a wild Pokémon could have used Transform via
|
||||
; Mirror Move even though the only wild Pokémon that knows Transform is Ditto.
|
||||
ld hl,W_ENEMYBATTSTATUS3
|
||||
ld hl,wEnemyBattleStatus3
|
||||
bit Transformed,[hl]
|
||||
jr z,.notTransformed
|
||||
ld a,DITTO
|
||||
|
|
@ -494,7 +494,7 @@ ItemUseBall: ; d687 (3:5687)
|
|||
ld a,[wEnemyMonSpecies2]
|
||||
ld [wcf91],a
|
||||
ld a,[wEnemyMonLevel]
|
||||
ld [W_CURENEMYLVL],a
|
||||
ld [wCurEnemyLVL],a
|
||||
callab LoadEnemyMonData
|
||||
pop af
|
||||
ld [wcf91],a
|
||||
|
|
@ -510,7 +510,7 @@ ItemUseBall: ; d687 (3:5687)
|
|||
ld [wCapturedMonSpecies],a
|
||||
ld [wcf91],a
|
||||
ld [wd11e],a
|
||||
ld a,[W_BATTLETYPE]
|
||||
ld a,[wBattleType]
|
||||
dec a ; is this the old man battle?
|
||||
jr z,.oldManCaughtMon ; if so, don't give the player the caught Pokémon
|
||||
|
||||
|
|
@ -573,7 +573,7 @@ ItemUseBall: ; d687 (3:5687)
|
|||
call ClearSprites
|
||||
|
||||
.done
|
||||
ld a,[W_BATTLETYPE]
|
||||
ld a,[wBattleType]
|
||||
and a ; is this the old man battle?
|
||||
ret nz ; if so, don't remove a ball from the bag
|
||||
|
||||
|
|
@ -627,13 +627,13 @@ ItemUseBallText06: ; d961 (3:5961)
|
|||
db "@"
|
||||
|
||||
ItemUseTownMap: ; d968 (3:5968)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp nz,ItemUseNotTime
|
||||
jpba DisplayTownMap
|
||||
|
||||
ItemUseBicycle: ; d977 (3:5977)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp nz,ItemUseNotTime
|
||||
ld a,[wWalkBikeSurfState]
|
||||
|
|
@ -695,7 +695,7 @@ ItemUseSurfboard: ; d9b4 (3:59b4)
|
|||
ld hl,TilePairCollisionsWater
|
||||
call CheckForTilePairCollisions
|
||||
jr c,.cannotStopSurfing
|
||||
ld hl,W_TILESETCOLLISIONPTR ; pointer to list of passable tiles
|
||||
ld hl,wTileSetCollisionPtr ; pointer to list of passable tiles
|
||||
ld a,[hli]
|
||||
ld h,[hl]
|
||||
ld l,a ; hl now points to passable tiles
|
||||
|
|
@ -754,7 +754,7 @@ ItemUsePokedex: ; da56 (3:5a56)
|
|||
predef_jump ShowPokedexMenu
|
||||
|
||||
ItemUseEvoStone: ; da5b (3:5a5b)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp nz,ItemUseNotTime
|
||||
ld a,[wWhichPokemon]
|
||||
|
|
@ -795,7 +795,7 @@ ItemUseEvoStone: ; da5b (3:5a5b)
|
|||
ret
|
||||
|
||||
ItemUseVitamin: ; dab4 (3:5ab4)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp nz,ItemUseNotTime
|
||||
|
||||
|
|
@ -898,7 +898,7 @@ ItemUseMedicine: ; dabb (3:5abb)
|
|||
xor a
|
||||
ld [wBattleMonStatus],a ; remove the status ailment in the in-battle pokemon data
|
||||
push hl
|
||||
ld hl,W_PLAYERBATTSTATUS3
|
||||
ld hl,wPlayerBattleStatus3
|
||||
res BadlyPoisoned,[hl] ; heal Toxic status
|
||||
pop hl
|
||||
ld bc,wPartyMon1Stats - wPartyMon1Status
|
||||
|
|
@ -926,7 +926,7 @@ ItemUseMedicine: ; dabb (3:5abb)
|
|||
jr z,.updateInBattleFaintedData
|
||||
jp .healingItemNoEffect
|
||||
.updateInBattleFaintedData
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jr z,.compareCurrentHPToMaxHP
|
||||
push hl
|
||||
|
|
@ -1244,7 +1244,7 @@ ItemUseMedicine: ; dabb (3:5abb)
|
|||
ret nz ; if so, return
|
||||
call GBPalWhiteOut
|
||||
call z,RunDefaultPaletteCommand
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
ret nz
|
||||
jp ReloadMapData
|
||||
|
|
@ -1256,7 +1256,7 @@ ItemUseMedicine: ; dabb (3:5abb)
|
|||
ld bc,wPartyMon1Level - wPartyMon1
|
||||
add hl,bc ; hl now points to level
|
||||
ld a,[hl] ; a = level
|
||||
ld [W_CURENEMYLVL],a ; store level
|
||||
ld [wCurEnemyLVL],a ; store level
|
||||
call GetMonHeader
|
||||
push de
|
||||
ld a,d
|
||||
|
|
@ -1335,7 +1335,7 @@ ItemUseMedicine: ; dabb (3:5abb)
|
|||
jr z,.vitaminNoEffect ; can't raise level above 100
|
||||
inc a
|
||||
ld [hl],a ; store incremented level
|
||||
ld [W_CURENEMYLVL],a
|
||||
ld [wCurEnemyLVL],a
|
||||
push hl
|
||||
push de
|
||||
ld d,a
|
||||
|
|
@ -1454,7 +1454,7 @@ ItemUseRock: ; df67 (3:5f67)
|
|||
ld de,wSafariBaitFactor ; bait factor
|
||||
|
||||
BaitRockCommon: ; df7f (3:5f7f)
|
||||
ld [W_ANIMATIONID],a
|
||||
ld [wAnimationID],a
|
||||
xor a
|
||||
ld [wAnimationType],a
|
||||
ld [H_WHOSETURN],a
|
||||
|
|
@ -1486,13 +1486,13 @@ ThrewRockText: ; dfaa (3:5faa)
|
|||
|
||||
; also used for Dig out-of-battle effect
|
||||
ItemUseEscapeRope: ; dfaf (3:5faf)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jr nz,.notUsable
|
||||
ld a,[W_CURMAP]
|
||||
ld a,[wCurMap]
|
||||
cp a,AGATHAS_ROOM
|
||||
jr z,.notUsable
|
||||
ld a,[W_CURMAPTILESET]
|
||||
ld a,[wCurMapTileset]
|
||||
ld b,a
|
||||
ld hl,EscapeRopeTilesets
|
||||
.loop
|
||||
|
|
@ -1508,8 +1508,8 @@ ItemUseEscapeRope: ; dfaf (3:5faf)
|
|||
res 4,[hl]
|
||||
ResetEvent EVENT_IN_SAFARI_ZONE
|
||||
xor a
|
||||
ld [W_NUMSAFARIBALLS],a
|
||||
ld [W_SAFARIZONEENTRANCECURSCRIPT],a
|
||||
ld [wNumSafariBalls],a
|
||||
ld [wSafariZoneEntranceCurScript],a
|
||||
inc a
|
||||
ld [wEscapedFromBattle],a
|
||||
ld [wActionResultOrTookBattleTurn],a ; item used
|
||||
|
|
@ -1531,7 +1531,7 @@ ItemUseRepel: ; e003 (3:6003)
|
|||
ld b,100
|
||||
|
||||
ItemUseRepelCommon: ; e005 (3:6005)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp nz,ItemUseNotTime
|
||||
ld a,b
|
||||
|
|
@ -1540,10 +1540,10 @@ ItemUseRepelCommon: ; e005 (3:6005)
|
|||
|
||||
; handles X Accuracy item
|
||||
ItemUseXAccuracy: ; e013 (3:6013)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp z,ItemUseNotTime
|
||||
ld hl,W_PLAYERBATTSTATUS2
|
||||
ld hl,wPlayerBattleStatus2
|
||||
set UsingXAccuracy,[hl] ; X Accuracy bit
|
||||
jp PrintItemUseTextAndRemoveItem
|
||||
|
||||
|
|
@ -1568,7 +1568,7 @@ ItemUseCardKey: ; e022 (3:6022)
|
|||
jp nz,ItemUseNotTime
|
||||
ld hl,CardKeyTable3
|
||||
.next1
|
||||
ld a,[W_CURMAP]
|
||||
ld a,[wCurMap]
|
||||
ld b,a
|
||||
.loop
|
||||
ld a,[hli]
|
||||
|
|
@ -1641,7 +1641,7 @@ CardKeyTable3: ; e0c4 (3:60c4)
|
|||
db $ff
|
||||
|
||||
ItemUsePokedoll: ; e0cd (3:60cd)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
dec a
|
||||
jp nz,ItemUseNotTime
|
||||
ld a,$01
|
||||
|
|
@ -1649,10 +1649,10 @@ ItemUsePokedoll: ; e0cd (3:60cd)
|
|||
jp PrintItemUseTextAndRemoveItem
|
||||
|
||||
ItemUseGuardSpec: ; e0dc (3:60dc)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp z,ItemUseNotTime
|
||||
ld hl,W_PLAYERBATTSTATUS2
|
||||
ld hl,wPlayerBattleStatus2
|
||||
set ProtectedByMist,[hl] ; Mist bit
|
||||
jp PrintItemUseTextAndRemoveItem
|
||||
|
||||
|
|
@ -1665,15 +1665,15 @@ ItemUseMaxRepel: ; e0f0 (3:60f0)
|
|||
jp ItemUseRepelCommon
|
||||
|
||||
ItemUseDireHit: ; e0f5 (3:60f5)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp z,ItemUseNotTime
|
||||
ld hl,W_PLAYERBATTSTATUS2
|
||||
ld hl,wPlayerBattleStatus2
|
||||
set GettingPumped,[hl] ; Focus Energy bit
|
||||
jp PrintItemUseTextAndRemoveItem
|
||||
|
||||
ItemUseXStat: ; e104 (3:6104)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jr nz,.inBattle
|
||||
call ItemUseNotTime
|
||||
|
|
@ -1681,18 +1681,18 @@ ItemUseXStat: ; e104 (3:6104)
|
|||
ld [wActionResultOrTookBattleTurn],a ; item not used
|
||||
ret
|
||||
.inBattle
|
||||
ld hl,W_PLAYERMOVENUM
|
||||
ld hl,wPlayerMoveNum
|
||||
ld a,[hli]
|
||||
push af ; save [W_PLAYERMOVENUM]
|
||||
push af ; save [wPlayerMoveNum]
|
||||
ld a,[hl]
|
||||
push af ; save [W_PLAYERMOVEEFFECT]
|
||||
push af ; save [wPlayerMoveEffect]
|
||||
push hl
|
||||
ld a,[wcf91]
|
||||
sub a,X_ATTACK - ATTACK_UP1_EFFECT
|
||||
ld [hl],a ; store player move effect
|
||||
call PrintItemUseTextAndRemoveItem
|
||||
ld a,XSTATITEM_ANIM ; X stat item animation ID
|
||||
ld [W_PLAYERMOVENUM],a
|
||||
ld [wPlayerMoveNum],a
|
||||
call LoadScreenTilesFromBuffer1 ; restore saved screen
|
||||
call Delay3
|
||||
xor a
|
||||
|
|
@ -1700,18 +1700,18 @@ ItemUseXStat: ; e104 (3:6104)
|
|||
callba StatModifierUpEffect ; do stat increase move
|
||||
pop hl
|
||||
pop af
|
||||
ld [hld],a ; restore [W_PLAYERMOVEEFFECT]
|
||||
ld [hld],a ; restore [wPlayerMoveEffect]
|
||||
pop af
|
||||
ld [hl],a ; restore [W_PLAYERMOVENUM]
|
||||
ld [hl],a ; restore [wPlayerMoveNum]
|
||||
ret
|
||||
|
||||
ItemUsePokeflute: ; e140 (3:6140)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jr nz,.inBattle
|
||||
; if not in battle
|
||||
call ItemUseReloadOverworldData
|
||||
ld a,[W_CURMAP]
|
||||
ld a,[wCurMap]
|
||||
cp a,ROUTE_12
|
||||
jr nz,.notRoute12
|
||||
CheckEvent EVENT_BEAT_ROUTE12_SNORLAX
|
||||
|
|
@ -1746,7 +1746,7 @@ ItemUsePokeflute: ; e140 (3:6140)
|
|||
ld b,~SLP & $ff
|
||||
ld hl,wPartyMon1Status
|
||||
call WakeUpEntireParty
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
dec a ; is it a trainer battle?
|
||||
jr z,.skipWakingUpEnemyParty
|
||||
; if it's a trainer battle
|
||||
|
|
@ -1838,7 +1838,7 @@ PlayedFluteHadEffectText: ; e215 (3:6215)
|
|||
TX_FAR _PlayedFluteHadEffectText
|
||||
db $06
|
||||
TX_ASM
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jr nz,.done
|
||||
; play out-of-battle pokeflute music
|
||||
|
|
@ -1856,7 +1856,7 @@ PlayedFluteHadEffectText: ; e215 (3:6215)
|
|||
jp TextScriptEnd ; end text
|
||||
|
||||
ItemUseCoinCase: ; e23a (3:623a)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp nz,ItemUseNotTime
|
||||
ld hl,CoinCaseNumCoinsText
|
||||
|
|
@ -1913,11 +1913,11 @@ RodResponse: ; e28d (3:628d)
|
|||
jr nz, .next
|
||||
; if yes, store level and species data
|
||||
ld a, 1
|
||||
ld [W_MOVEMISSED], a
|
||||
ld [wMoveMissed], a
|
||||
ld a, b ; level
|
||||
ld [W_CURENEMYLVL], a
|
||||
ld [wCurEnemyLVL], a
|
||||
ld a, c ; species
|
||||
ld [W_CUROPPONENT], a
|
||||
ld [wCurOpponent], a
|
||||
|
||||
.next
|
||||
ld hl, wWalkBikeSurfState
|
||||
|
|
@ -1934,7 +1934,7 @@ RodResponse: ; e28d (3:628d)
|
|||
; checks if fishing is possible and if so, runs initialization code common to all rods
|
||||
; unsets carry if fishing is possible, sets carry if not
|
||||
FishingInit: ; e2b4 (3:62b4)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jr z,.notInBattle
|
||||
scf ; can't fish during battle
|
||||
|
|
@ -1962,7 +1962,7 @@ ItemUseOaksParcel: ; e2de (3:62de)
|
|||
jp ItemUseNotYoursToUse
|
||||
|
||||
ItemUseItemfinder: ; e2e1 (3:62e1)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp nz,ItemUseNotTime
|
||||
call ItemUseReloadOverworldData
|
||||
|
|
@ -1990,7 +1990,7 @@ ItemfinderFoundNothingText: ; e312 (3:6312)
|
|||
db "@"
|
||||
|
||||
ItemUsePPUp: ; e317 (3:6317)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp nz,ItemUseNotTime
|
||||
|
||||
|
|
@ -2195,7 +2195,7 @@ UnusableItem: ; e476 (3:6476)
|
|||
jp ItemUseNotTime
|
||||
|
||||
ItemUseTMHM: ; e479 (3:6479)
|
||||
ld a,[W_ISINBATTLE]
|
||||
ld a,[wIsInBattle]
|
||||
and a
|
||||
jp nz,ItemUseNotTime
|
||||
ld a,[wcf91]
|
||||
|
|
@ -2337,7 +2337,7 @@ ThrowBallAtTrainerMon: ; e58b (3:658b)
|
|||
call LoadScreenTilesFromBuffer1 ; restore saved screen
|
||||
call Delay3
|
||||
ld a,TOSS_ANIM
|
||||
ld [W_ANIMATIONID],a
|
||||
ld [wAnimationID],a
|
||||
predef MoveAnimation ; do animation
|
||||
ld hl,ThrowBallAtTrainerMonText1
|
||||
call PrintText
|
||||
|
|
@ -2687,7 +2687,7 @@ IsKeyItem_: ; e764 (3:6764)
|
|||
INCLUDE "data/key_items.asm"
|
||||
|
||||
SendNewMonToBox: ; e7a4 (3:67a4)
|
||||
ld de, W_NUMINBOX
|
||||
ld de, wNumInBox
|
||||
ld a, [de]
|
||||
inc a
|
||||
ld [de], a
|
||||
|
|
@ -2706,7 +2706,7 @@ SendNewMonToBox: ; e7a4 (3:67a4)
|
|||
call GetMonHeader
|
||||
ld hl, wBoxMonOT
|
||||
ld bc, NAME_LENGTH
|
||||
ld a, [W_NUMINBOX]
|
||||
ld a, [wNumInBox]
|
||||
dec a
|
||||
jr z, .asm_e7ee
|
||||
dec a
|
||||
|
|
@ -2717,7 +2717,7 @@ SendNewMonToBox: ; e7a4 (3:67a4)
|
|||
ld d, h
|
||||
ld e, l
|
||||
pop hl
|
||||
ld a, [W_NUMINBOX]
|
||||
ld a, [wNumInBox]
|
||||
dec a
|
||||
ld b, a
|
||||
.asm_e7db
|
||||
|
|
@ -2738,7 +2738,7 @@ SendNewMonToBox: ; e7a4 (3:67a4)
|
|||
ld de, wBoxMonOT
|
||||
ld bc, NAME_LENGTH
|
||||
call CopyData
|
||||
ld a, [W_NUMINBOX]
|
||||
ld a, [wNumInBox]
|
||||
dec a
|
||||
jr z, .asm_e82a
|
||||
ld hl, wBoxMonNicks
|
||||
|
|
@ -2751,7 +2751,7 @@ SendNewMonToBox: ; e7a4 (3:67a4)
|
|||
ld d, h
|
||||
ld e, l
|
||||
pop hl
|
||||
ld a, [W_NUMINBOX]
|
||||
ld a, [wNumInBox]
|
||||
dec a
|
||||
ld b, a
|
||||
.asm_e817
|
||||
|
|
@ -2772,7 +2772,7 @@ SendNewMonToBox: ; e7a4 (3:67a4)
|
|||
ld a, NAME_MON_SCREEN
|
||||
ld [wNamingScreenType], a
|
||||
predef AskName
|
||||
ld a, [W_NUMINBOX]
|
||||
ld a, [wNumInBox]
|
||||
dec a
|
||||
jr z, .asm_e867
|
||||
ld hl, wBoxMons
|
||||
|
|
@ -2785,7 +2785,7 @@ SendNewMonToBox: ; e7a4 (3:67a4)
|
|||
ld d, h
|
||||
ld e, l
|
||||
pop hl
|
||||
ld a, [W_NUMINBOX]
|
||||
ld a, [wNumInBox]
|
||||
dec a
|
||||
ld b, a
|
||||
.asm_e854
|
||||
|
|
@ -2816,7 +2816,7 @@ SendNewMonToBox: ; e7a4 (3:67a4)
|
|||
ld [de], a
|
||||
inc de
|
||||
push de
|
||||
ld a, [W_CURENEMYLVL]
|
||||
ld a, [wCurEnemyLVL]
|
||||
ld d, a
|
||||
callab CalcExperience
|
||||
pop de
|
||||
|
|
@ -2856,12 +2856,12 @@ SendNewMonToBox: ; e7a4 (3:67a4)
|
|||
; used for surfing and fishing
|
||||
; unsets carry if it is, sets carry if not
|
||||
IsNextTileShoreOrWater: ; e8b8 (3:68b8)
|
||||
ld a, [W_CURMAPTILESET]
|
||||
ld a, [wCurMapTileset]
|
||||
ld hl, WaterTilesets
|
||||
ld de,1
|
||||
call IsInArray
|
||||
jr nc, .notShoreOrWater
|
||||
ld a, [W_CURMAPTILESET]
|
||||
ld a, [wCurMapTileset]
|
||||
cp SHIP_PORT ; Vermilion Dock tileset
|
||||
ld a, [wTileInFrontOfPlayer] ; tile in front of player
|
||||
jr z, .skipShoreTiles ; if it's the Vermilion Dock tileset
|
||||
|
|
@ -2888,7 +2888,7 @@ ReadSuperRodData: ; e8ea (3:68ea)
|
|||
; return e = 2 if no fish on this map
|
||||
; return e = 1 if a bite, bc = level,species
|
||||
; return e = 0 if no bite
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
ld de, 3 ; each fishing group is three bytes wide
|
||||
ld hl, SuperRodData
|
||||
call IsInArray
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ CanLearnTM: ; 1373e (4:773e)
|
|||
ld a, [wcf91]
|
||||
ld [wd0b5], a
|
||||
call GetMonHeader
|
||||
ld hl, W_MONHLEARNSET
|
||||
ld hl, wMonHLearnset
|
||||
push hl
|
||||
ld a, [wMoveNum]
|
||||
ld b, a
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ DontAbandonLearning: ; 6e5b (1:6e5b)
|
|||
pop de
|
||||
pop hl
|
||||
ld [hl], a
|
||||
ld a, [W_ISINBATTLE]
|
||||
ld a, [wIsInBattle]
|
||||
and a
|
||||
jp z, PrintLearnedMove
|
||||
ld a, [wWhichPokemon]
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ BillsPCDeposit: ; 215ac (8:55ac)
|
|||
call PrintText
|
||||
jp BillsPCMenu
|
||||
.partyLargeEnough
|
||||
ld a, [W_NUMINBOX]
|
||||
ld a, [wNumInBox]
|
||||
cp MONS_PER_BOX
|
||||
jr nz, .boxNotFull
|
||||
ld hl, BoxFullText
|
||||
|
|
@ -254,7 +254,7 @@ BillsPCDeposit: ; 215ac (8:55ac)
|
|||
jp BillsPCMenu
|
||||
|
||||
BillsPCWithdraw: ; 21618 (8:5618)
|
||||
ld a, [W_NUMINBOX]
|
||||
ld a, [wNumInBox]
|
||||
and a
|
||||
jr nz, .boxNotEmpty
|
||||
ld hl, NoMonText
|
||||
|
|
@ -268,7 +268,7 @@ BillsPCWithdraw: ; 21618 (8:5618)
|
|||
call PrintText
|
||||
jp BillsPCMenu
|
||||
.partyNotFull
|
||||
ld hl, W_NUMINBOX
|
||||
ld hl, wNumInBox
|
||||
call DisplayMonListMenu
|
||||
jp c, BillsPCMenu
|
||||
call DisplayDepositWithdrawMenu
|
||||
|
|
@ -291,14 +291,14 @@ BillsPCWithdraw: ; 21618 (8:5618)
|
|||
jp BillsPCMenu
|
||||
|
||||
BillsPCRelease: ; 21673 (8:5673)
|
||||
ld a, [W_NUMINBOX]
|
||||
ld a, [wNumInBox]
|
||||
and a
|
||||
jr nz, .loop
|
||||
ld hl, NoMonText
|
||||
call PrintText
|
||||
jp BillsPCMenu
|
||||
.loop
|
||||
ld hl, W_NUMINBOX
|
||||
ld hl, wNumInBox
|
||||
call DisplayMonListMenu
|
||||
jp c, BillsPCMenu
|
||||
ld hl, OnceReleasedText
|
||||
|
|
@ -515,7 +515,7 @@ CableClubLeftGameboy:: ; 5824 (8:5825)
|
|||
ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
|
||||
cp SPRITE_FACING_RIGHT
|
||||
ret nz
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
cp TRADE_CENTER
|
||||
ld a, LINK_STATE_START_TRADE
|
||||
jr z, .next
|
||||
|
|
@ -532,7 +532,7 @@ CableClubRightGameboy:: ; 5845 (8:5845)
|
|||
ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
|
||||
cp SPRITE_FACING_LEFT
|
||||
ret nz
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
cp TRADE_CENTER
|
||||
ld a, LINK_STATE_START_TRADE
|
||||
jr z, .next
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ PKMNLeaguePC: ; 0x7657e
|
|||
push af
|
||||
xor a
|
||||
ld [hTilesetType], a
|
||||
ld [W_SPRITEFLIPPED], a
|
||||
ld [wSpriteFlipped], a
|
||||
ld [wUpdateSpritesEnabled], a
|
||||
ld [wHoFTeamIndex2], a
|
||||
ld [wHoFTeamNo], a
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ MainMenu: ; 5af2 (1:5af2)
|
|||
ld a,[wNumHoFTeams]
|
||||
and a
|
||||
jp z,SpecialEnterMap
|
||||
ld a,[W_CURMAP] ; map ID
|
||||
ld a,[wCurMap] ; map ID
|
||||
cp a,HALL_OF_FAME
|
||||
jp nz,SpecialEnterMap
|
||||
xor a
|
||||
|
|
@ -128,7 +128,7 @@ InitOptions: ; 5bff (1:5bff)
|
|||
ld a,1 ; no delay
|
||||
ld [wLetterPrintingDelayFlags],a
|
||||
ld a,3 ; medium speed
|
||||
ld [W_OPTIONS],a
|
||||
ld [wOptions],a
|
||||
ret
|
||||
|
||||
LinkMenu: ; 5c0a (1:5c0a)
|
||||
|
|
@ -392,7 +392,7 @@ PrintSaveScreenText: ; 5def (1:5def)
|
|||
|
||||
PrintNumBadges: ; 5e2f (1:5e2f)
|
||||
push hl
|
||||
ld hl, W_OBTAINEDBADGES
|
||||
ld hl, wObtainedBadges
|
||||
ld b, $1
|
||||
call CountSetBits
|
||||
pop hl
|
||||
|
|
@ -411,12 +411,12 @@ PrintNumOwnedMons: ; 5e42 (1:5e42)
|
|||
jp PrintNumber
|
||||
|
||||
PrintPlayTime: ; 5e55 (1:5e55)
|
||||
ld de, W_PLAYTIMEHOURS + 1
|
||||
ld de, wPlayTimeHours + 1
|
||||
lb bc, 1, 3
|
||||
call PrintNumber
|
||||
ld [hl], $6d
|
||||
inc hl
|
||||
ld de, W_PLAYTIMEMINUTES + 1
|
||||
ld de, wPlayTimeMinutes + 1
|
||||
lb bc, LEADING_ZEROES | 1, 2
|
||||
jp PrintNumber
|
||||
|
||||
|
|
@ -626,13 +626,13 @@ SetOptionsFromCursorPositions: ; 601f (1:601f)
|
|||
res 6,d
|
||||
.storeOptions
|
||||
ld a,d
|
||||
ld [W_OPTIONS],a
|
||||
ld [wOptions],a
|
||||
ret
|
||||
|
||||
; reads the options variable and places menu cursors in the correct positions within the options menu
|
||||
SetCursorPositionsFromOptions: ; 604c (1:604c)
|
||||
ld hl,TextSpeedOptionData + 1
|
||||
ld a,[W_OPTIONS]
|
||||
ld a,[wOptions]
|
||||
ld c,a
|
||||
and a,$3f
|
||||
push bc
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ AskName: ; 64eb (1:64eb)
|
|||
call SaveScreenTilesToBuffer1
|
||||
call GetPredefRegisters
|
||||
push hl
|
||||
ld a, [W_ISINBATTLE]
|
||||
ld a, [wIsInBattle]
|
||||
dec a
|
||||
coord hl, 0, 0
|
||||
ld b, 4
|
||||
|
|
@ -30,7 +30,7 @@ AskName: ; 64eb (1:64eb)
|
|||
ld a, NAME_MON_SCREEN
|
||||
ld [wNamingScreenType], a
|
||||
call DisplayNamingScreen
|
||||
ld a, [W_ISINBATTLE]
|
||||
ld a, [wIsInBattle]
|
||||
and a
|
||||
jr nz, .inBattle
|
||||
call ReloadMapSpriteTilePatterns
|
||||
|
|
@ -169,7 +169,7 @@ DisplayNamingScreen: ; 6596 (1:6596)
|
|||
ld [wAnimCounter], a
|
||||
ld hl, wd730
|
||||
res 6, [hl]
|
||||
ld a, [W_ISINBATTLE]
|
||||
ld a, [wIsInBattle]
|
||||
and a
|
||||
jp z, LoadTextBoxTilePatterns
|
||||
jpab LoadHudTilePatterns
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ GetPrizeMenuId: ; 5278e (14:678e)
|
|||
ld e,a
|
||||
inc hl
|
||||
push hl
|
||||
ld hl,W_PRIZE1
|
||||
ld hl,wPrize1
|
||||
call CopyString
|
||||
pop hl
|
||||
ld a,[hli]
|
||||
|
|
@ -90,34 +90,34 @@ GetPrizeMenuId: ; 5278e (14:678e)
|
|||
ld a,[wWhichPrizeWindow]
|
||||
cp a,$02 ;is TM_menu?
|
||||
jr nz,.putMonName
|
||||
ld a,[W_PRIZE1]
|
||||
ld a,[wPrize1]
|
||||
ld [wd11e],a
|
||||
call GetItemName
|
||||
coord hl, 2, 4
|
||||
call PlaceString
|
||||
ld a,[W_PRIZE2]
|
||||
ld a,[wPrize2]
|
||||
ld [wd11e],a
|
||||
call GetItemName
|
||||
coord hl, 2, 6
|
||||
call PlaceString
|
||||
ld a,[W_PRIZE3]
|
||||
ld a,[wPrize3]
|
||||
ld [wd11e],a
|
||||
call GetItemName
|
||||
coord hl, 2, 8
|
||||
call PlaceString
|
||||
jr .putNoThanksText
|
||||
.putMonName
|
||||
ld a,[W_PRIZE1]
|
||||
ld a,[wPrize1]
|
||||
ld [wd11e],a
|
||||
call GetMonName
|
||||
coord hl, 2, 4
|
||||
call PlaceString
|
||||
ld a,[W_PRIZE2]
|
||||
ld a,[wPrize2]
|
||||
ld [wd11e],a
|
||||
call GetMonName
|
||||
coord hl, 2, 6
|
||||
call PlaceString
|
||||
ld a,[W_PRIZE3]
|
||||
ld a,[wPrize3]
|
||||
ld [wd11e],a
|
||||
call GetMonName
|
||||
coord hl, 2, 8
|
||||
|
|
@ -191,7 +191,7 @@ HandlePrizeChoice: ; 528c6 (14:68c6)
|
|||
ld [wWhichPrize],a
|
||||
ld d,0
|
||||
ld e,a
|
||||
ld hl,W_PRIZE1
|
||||
ld hl,wPrize1
|
||||
add hl,de
|
||||
ld a,[hl]
|
||||
ld [wd11e],a
|
||||
|
|
@ -300,7 +300,7 @@ GetPrizeMonLevel: ; 52977 (14:6977)
|
|||
jr .loop
|
||||
.matchFound
|
||||
ld a,[hl]
|
||||
ld [W_CURENEMYLVL],a
|
||||
ld [wCurEnemyLVL],a
|
||||
ret
|
||||
|
||||
INCLUDE "data/prize_mon_levels.asm"
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ StartMenu_Pokemon: ; 130a9 (4:70a9)
|
|||
ld a,[hli]
|
||||
ld h,[hl]
|
||||
ld l,a
|
||||
ld a,[W_OBTAINEDBADGES] ; badges obtained
|
||||
ld a,[wObtainedBadges] ; badges obtained
|
||||
jp [hl]
|
||||
.outOfBattleMovePointers
|
||||
dw .cut
|
||||
|
|
@ -601,12 +601,12 @@ DrawTrainerInfo: ; 1349a (4:749a)
|
|||
ld c,$e3
|
||||
call PrintBCDNumber
|
||||
coord hl, 9, 6
|
||||
ld de,W_PLAYTIMEHOURS + 1 ; hours
|
||||
ld de,wPlayTimeHours + 1 ; hours
|
||||
lb bc, LEFT_ALIGN | 1, 3
|
||||
call PrintNumber
|
||||
ld [hl],$d6 ; colon tile ID
|
||||
inc hl
|
||||
ld de,W_PLAYTIMEMINUTES + 1 ; minutes
|
||||
ld de,wPlayTimeMinutes + 1 ; minutes
|
||||
lb bc, LEADING_ZEROES | 1, 2
|
||||
jp PrintNumber
|
||||
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ StatusScreen: ; 12953 (4:6953)
|
|||
; mon is in a box or daycare
|
||||
ld a, [wLoadedMonBoxLevel]
|
||||
ld [wLoadedMonLevel], a
|
||||
ld [W_CURENEMYLVL], a
|
||||
ld [wCurEnemyLVL], a
|
||||
ld hl, wLoadedMonHPExp - 1
|
||||
ld de, wLoadedMonStats
|
||||
ld b, $1
|
||||
|
|
@ -138,7 +138,7 @@ StatusScreen: ; 12953 (4:6953)
|
|||
call PlaceString ; "STATUS/"
|
||||
coord hl, 14, 2
|
||||
call PrintLevel ; Pokémon level
|
||||
ld a, [W_MONHINDEX]
|
||||
ld a, [wMonHIndex]
|
||||
ld [wd11e], a
|
||||
ld [wd0b5], a
|
||||
predef IndexToPokedex
|
||||
|
|
@ -196,13 +196,13 @@ OTPointers: ; 12a95 (4:6a95)
|
|||
dw wPartyMonOT
|
||||
dw wEnemyMonOT
|
||||
dw wBoxMonOT
|
||||
dw W_DAYCAREMONOT
|
||||
dw wDayCareMonOT
|
||||
|
||||
NamePointers2: ; 12a9d (4:6a9d)
|
||||
dw wPartyMonNicks
|
||||
dw wEnemyMonNicks
|
||||
dw wBoxMonNicks
|
||||
dw W_DAYCAREMONNAME
|
||||
dw wDayCareMonName
|
||||
|
||||
Type1Text: ; 12aa5 (4:6aa5)
|
||||
db "TYPE1/", $4e
|
||||
|
|
@ -417,7 +417,7 @@ StatusScreen2: ; 12b57 (4:6b57)
|
|||
call StatusScreen_ClearName
|
||||
coord hl, 9, 1
|
||||
call StatusScreen_ClearName
|
||||
ld a, [W_MONHINDEX]
|
||||
ld a, [wMonHIndex]
|
||||
ld [wd11e], a
|
||||
call GetMonName
|
||||
coord hl, 9, 1
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
SetDefaultNames: ; 60ca (1:60ca)
|
||||
ld a, [wLetterPrintingDelayFlags]
|
||||
push af
|
||||
ld a, [W_OPTIONS]
|
||||
ld a, [wOptions]
|
||||
push af
|
||||
ld a, [wd732]
|
||||
push af
|
||||
|
|
@ -16,7 +16,7 @@ SetDefaultNames: ; 60ca (1:60ca)
|
|||
pop af
|
||||
ld [wd732], a
|
||||
pop af
|
||||
ld [W_OPTIONS], a
|
||||
ld [wOptions], a
|
||||
pop af
|
||||
ld [wLetterPrintingDelayFlags], a
|
||||
ld a, [wOptionsInitialized]
|
||||
|
|
@ -27,7 +27,7 @@ SetDefaultNames: ; 60ca (1:60ca)
|
|||
ld bc, NAME_LENGTH
|
||||
call CopyData
|
||||
ld hl, SonyText
|
||||
ld de, W_RIVALNAME
|
||||
ld de, wRivalName
|
||||
ld bc, NAME_LENGTH
|
||||
jp CopyData
|
||||
|
||||
|
|
|
|||
|
|
@ -40,11 +40,11 @@ ChooseRivalName: ; 69a4 (1:69a4)
|
|||
jr z, .customName
|
||||
ld hl, DefaultNamesRivalList
|
||||
call GetDefaultName
|
||||
ld de, W_RIVALNAME
|
||||
ld de, wRivalName
|
||||
call OakSpeechSlidePicLeft
|
||||
jr .done
|
||||
.customName
|
||||
ld hl, W_RIVALNAME
|
||||
ld hl, wRivalName
|
||||
ld a, NAME_RIVAL_SCREEN
|
||||
ld [wNamingScreenType], a
|
||||
call DisplayNamingScreen
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
PrintCardKeyText: ; 52673 (14:6673)
|
||||
ld hl, SilphCoMapList
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
ld b, a
|
||||
.silphCoMapListLoop
|
||||
ld a, [hli]
|
||||
|
|
@ -15,7 +15,7 @@ PrintCardKeyText: ; 52673 (14:6673)
|
|||
cp $24
|
||||
jr z, .cardKeyDoorInFrontOfPlayer
|
||||
ld b, a
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
cp SILPH_CO_11F
|
||||
ret nz
|
||||
ld a, b
|
||||
|
|
@ -39,7 +39,7 @@ PrintCardKeyText: ; 52673 (14:6673)
|
|||
ld a, e
|
||||
ld c, a
|
||||
ld [wCardKeyDoorX], a
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
cp SILPH_CO_11F
|
||||
jr nz, .notSilphCo11F
|
||||
ld a, $3
|
||||
|
|
@ -84,9 +84,9 @@ CardKeyFailText: ; 526f8 (14:66f8)
|
|||
; d = Y
|
||||
; e = X
|
||||
GetCoordsInFrontOfPlayer: ; 526fd (14:66fd)
|
||||
ld a, [W_YCOORD]
|
||||
ld a, [wYCoord]
|
||||
ld d, a
|
||||
ld a, [W_XCOORD]
|
||||
ld a, [wXCoord]
|
||||
ld e, a
|
||||
ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
|
||||
and a
|
||||
|
|
|
|||
|
|
@ -48,9 +48,9 @@ GiveFossilToCinnabarLab: ; 61006 (18:5006)
|
|||
.choseDomeFossil
|
||||
ld b, KABUTO
|
||||
.fossilSelected
|
||||
ld [W_FOSSILITEM], a
|
||||
ld [wFossilItem], a
|
||||
ld a, b
|
||||
ld [W_FOSSILMON], a
|
||||
ld [wFossilMon], a
|
||||
call LoadFossilItemAndMonName
|
||||
ld hl, LabFossil_610ae
|
||||
call PrintText
|
||||
|
|
@ -60,7 +60,7 @@ GiveFossilToCinnabarLab: ; 61006 (18:5006)
|
|||
jr nz, .cancelledGivingFossil
|
||||
ld hl, LabFossil_610b3
|
||||
call PrintText
|
||||
ld a, [W_FOSSILITEM]
|
||||
ld a, [wFossilItem]
|
||||
ld [hItemToRemoveID], a
|
||||
callba RemoveItemByID
|
||||
ld hl, LabFossil_610b8
|
||||
|
|
@ -113,11 +113,11 @@ PrintFossilsInBag: ; 610c2 (18:50c2)
|
|||
|
||||
; loads the names of the fossil item and the resulting mon
|
||||
LoadFossilItemAndMonName: ; 610eb (18:50eb)
|
||||
ld a, [W_FOSSILMON]
|
||||
ld a, [wFossilMon]
|
||||
ld [wd11e], a
|
||||
call GetMonName
|
||||
call CopyStringToCF4B
|
||||
ld a, [W_FOSSILITEM]
|
||||
ld a, [wFossilItem]
|
||||
ld [wd11e], a
|
||||
call GetItemName
|
||||
ret
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
UsedCut: ; ef54 (3:6f54)
|
||||
xor a
|
||||
ld [wActionResultOrTookBattleTurn], a ; initialise to failure value
|
||||
ld a, [W_CURMAPTILESET]
|
||||
ld a, [wCurMapTileset]
|
||||
and a ; OVERWORLD
|
||||
jr z, .overworld
|
||||
cp GYM
|
||||
|
|
@ -177,7 +177,7 @@ ReplaceTreeTileBlock: ; f09f (3:709f)
|
|||
; player (i.e. where the tree is) and replace it with the corresponding tile
|
||||
; block that doesn't have the tree.
|
||||
push de
|
||||
ld a, [W_CURMAPWIDTH]
|
||||
ld a, [wCurMapWidth]
|
||||
add 6
|
||||
ld c, a
|
||||
ld b, 0
|
||||
|
|
@ -195,22 +195,22 @@ ReplaceTreeTileBlock: ; f09f (3:709f)
|
|||
cp SPRITE_FACING_LEFT
|
||||
jr z, .left
|
||||
; right
|
||||
ld a, [W_XBLOCKCOORD]
|
||||
ld a, [wXBlockCoord]
|
||||
and a
|
||||
jr z, .centerTileBlock
|
||||
jr .rightOfCenter
|
||||
.down
|
||||
ld a, [W_YBLOCKCOORD]
|
||||
ld a, [wYBlockCoord]
|
||||
and a
|
||||
jr z, .centerTileBlock
|
||||
jr .belowCenter
|
||||
.up
|
||||
ld a, [W_YBLOCKCOORD]
|
||||
ld a, [wYBlockCoord]
|
||||
and a
|
||||
jr z, .aboveCenter
|
||||
jr .centerTileBlock
|
||||
.left
|
||||
ld a, [W_XBLOCKCOORD]
|
||||
ld a, [wXBlockCoord]
|
||||
and a
|
||||
jr z, .leftOfCenter
|
||||
jr .centerTileBlock
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
IsPlayerStandingOnDoorTile: ; 1a609 (6:6609)
|
||||
push de
|
||||
ld hl, DoorTileIDPointers
|
||||
ld a, [W_CURMAPTILESET]
|
||||
ld a, [wCurMapTileset]
|
||||
ld de, $3
|
||||
call IsInArray
|
||||
pop de
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ FindHiddenItemOrCoinsIndex: ; 76857 (1d:6857)
|
|||
ld d, a
|
||||
ld a, [wHiddenObjectX]
|
||||
ld e, a
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
ld b, a
|
||||
ld c, -1
|
||||
.loop
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ CheckForHiddenObject: ; 469a0 (11:69a0)
|
|||
ld b, a
|
||||
cp $ff
|
||||
jr z, .noMatch
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
cp b
|
||||
jr z, .foundMatchingMap
|
||||
inc de
|
||||
|
|
@ -95,30 +95,30 @@ CheckIfCoordsInFrontOfPlayerMatch: ; 46a01 (11:6a01)
|
|||
cp SPRITE_FACING_RIGHT
|
||||
jr z, .facingRight
|
||||
; facing down
|
||||
ld a, [W_YCOORD]
|
||||
ld a, [wYCoord]
|
||||
inc a
|
||||
jr .upDownCommon
|
||||
.facingUp
|
||||
ld a, [W_YCOORD]
|
||||
ld a, [wYCoord]
|
||||
dec a
|
||||
.upDownCommon
|
||||
cp b
|
||||
jr nz, .didNotMatch
|
||||
ld a, [W_XCOORD]
|
||||
ld a, [wXCoord]
|
||||
cp c
|
||||
jr nz, .didNotMatch
|
||||
jr .matched
|
||||
.facingLeft
|
||||
ld a, [W_XCOORD]
|
||||
ld a, [wXCoord]
|
||||
dec a
|
||||
jr .leftRightCommon
|
||||
.facingRight
|
||||
ld a, [W_XCOORD]
|
||||
ld a, [wXCoord]
|
||||
inc a
|
||||
.leftRightCommon
|
||||
cp c
|
||||
jr nz, .didNotMatch
|
||||
ld a, [W_YCOORD]
|
||||
ld a, [wYCoord]
|
||||
cp b
|
||||
jr nz, .didNotMatch
|
||||
.matched
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
; returns whether the player is one tile outside the map in Z
|
||||
IsPlayerJustOutsideMap: ; 128d8 (4:68d8)
|
||||
ld a, [W_YCOORD]
|
||||
ld a, [wYCoord]
|
||||
ld b, a
|
||||
ld a, [W_CURMAPHEIGHT]
|
||||
ld a, [wCurMapHeight]
|
||||
call .compareCoordWithMapDimension
|
||||
ret z
|
||||
ld a, [W_XCOORD]
|
||||
ld a, [wXCoord]
|
||||
ld b, a
|
||||
ld a, [W_CURMAPWIDTH]
|
||||
ld a, [wCurMapWidth]
|
||||
.compareCoordWithMapDimension
|
||||
add a
|
||||
cp b
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ PickUpItem:
|
|||
|
||||
ld a, [hSpriteIndexOrTextID]
|
||||
ld b, a
|
||||
ld hl, W_MISSABLEOBJECTLIST
|
||||
ld hl, wMissableObjectList
|
||||
.missableObjectsListLoop
|
||||
ld a, [hli]
|
||||
cp $ff
|
||||
|
|
@ -17,7 +17,7 @@ PickUpItem:
|
|||
ld a, [hl]
|
||||
ld [$ffdb], a
|
||||
|
||||
ld hl, W_MAPSPRITEEXTRADATA
|
||||
ld hl, wMapSpriteExtraData
|
||||
ld a, [hSpriteIndexOrTextID]
|
||||
dec a
|
||||
add a
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ HandleLedges: ; 1a672 (6:6672)
|
|||
ld a, [wd736]
|
||||
bit 6, a ; already jumping down ledge
|
||||
ret nz
|
||||
ld a, [W_CURMAPTILESET]
|
||||
ld a, [wCurMapTileset]
|
||||
and a ; OVERWORLD
|
||||
ret nz
|
||||
predef GetTileAndCoordsInFrontOfPlayer
|
||||
|
|
|
|||
|
|
@ -30,12 +30,12 @@ InitMapSprites: ; 1785b (5:785b)
|
|||
; InitOutsideMapSprites.
|
||||
; Loads tile pattern data for sprites into VRAM.
|
||||
LoadMapSpriteTilePatterns: ; 17871 (5:7871)
|
||||
ld a,[W_NUMSPRITES]
|
||||
ld a,[wNumSprites]
|
||||
and a ; are there any sprites?
|
||||
jr nz,.spritesExist
|
||||
ret
|
||||
.spritesExist
|
||||
ld c,a ; c = [W_NUMSPRITES]
|
||||
ld c,a ; c = [wNumSprites]
|
||||
ld b,$10 ; number of sprite slots
|
||||
ld hl,wSpriteStateData2 + $0d
|
||||
xor a
|
||||
|
|
@ -251,7 +251,7 @@ ReadSpriteSheetData: ; 17971 (5:7971)
|
|||
; Loads sprite set for outside maps (cities and routes) and sets VRAM slots.
|
||||
; sets carry if the map is a city or route, unsets carry if not
|
||||
InitOutsideMapSprites: ; 1797b (5:797b)
|
||||
ld a,[W_CURMAP]
|
||||
ld a,[wCurMap]
|
||||
cp a,REDS_HOUSE_1F ; is the map a city or a route (map ID less than $25)?
|
||||
ret nc ; if not, return
|
||||
ld hl,MapSpriteSets
|
||||
|
|
@ -267,12 +267,12 @@ InitOutsideMapSprites: ; 1797b (5:797b)
|
|||
ld a,[wFontLoaded]
|
||||
bit 0,a ; reloading upper half of tile patterns after displaying text?
|
||||
jr nz,.loadSpriteSet ; if so, forcibly reload the sprite set
|
||||
ld a,[W_SPRITESETID]
|
||||
ld a,[wSpriteSetID]
|
||||
cp b ; has the sprite set ID changed?
|
||||
jr z,.skipLoadingSpriteSet ; if not, don't load it again
|
||||
.loadSpriteSet
|
||||
ld a,b
|
||||
ld [W_SPRITESETID],a
|
||||
ld [wSpriteSetID],a
|
||||
dec a
|
||||
ld b,a
|
||||
sla a
|
||||
|
|
@ -291,7 +291,7 @@ InitOutsideMapSprites: ; 1797b (5:797b)
|
|||
ld hl,wSpriteStateData2 + $0d
|
||||
ld a,SPRITE_RED
|
||||
ld [hl],a
|
||||
ld bc,W_SPRITESET
|
||||
ld bc,wSpriteSet
|
||||
; Load the sprite set into RAM.
|
||||
; This loop also fills $C2XD (sprite picture ID) where X is from $0 to $A
|
||||
; with picture ID's. This is done so that LoadMapSpriteTilePatterns will
|
||||
|
|
@ -317,13 +317,13 @@ InitOutsideMapSprites: ; 1797b (5:797b)
|
|||
ld [hl],a ; $C2XD (sprite picture ID)
|
||||
dec b
|
||||
jr nz,.zeroRemainingSlotsLoop
|
||||
ld a,[W_NUMSPRITES]
|
||||
ld a,[wNumSprites]
|
||||
push af ; save number of sprites
|
||||
ld a,11 ; 11 sprites in sprite set
|
||||
ld [W_NUMSPRITES],a
|
||||
ld [wNumSprites],a
|
||||
call LoadMapSpriteTilePatterns
|
||||
pop af
|
||||
ld [W_NUMSPRITES],a ; restore number of sprites
|
||||
ld [wNumSprites],a ; restore number of sprites
|
||||
ld hl,wSpriteStateData2 + $1e
|
||||
ld b,$0f
|
||||
; The VRAM tile pattern slots that LoadMapSpriteTilePatterns set are in the
|
||||
|
|
@ -352,7 +352,7 @@ InitOutsideMapSprites: ; 1797b (5:797b)
|
|||
and a ; is the sprite slot used?
|
||||
jr z,.skipGettingPictureIndex ; if the sprite slot is not used
|
||||
ld b,a ; b = picture ID
|
||||
ld de,W_SPRITESET
|
||||
ld de,wSpriteSet
|
||||
; Loop to find the index of the sprite's picture ID within the sprite set.
|
||||
.getPictureIndexLoop
|
||||
inc c
|
||||
|
|
@ -399,10 +399,10 @@ GetSplitMapSpriteSetID: ; 17a1a (5:7a1a)
|
|||
ld b,a
|
||||
jr z,.eastWestDivide
|
||||
.northSouthDivide
|
||||
ld a,[W_YCOORD]
|
||||
ld a,[wYCoord]
|
||||
jr .compareCoord
|
||||
.eastWestDivide
|
||||
ld a,[W_XCOORD]
|
||||
ld a,[wXCoord]
|
||||
.compareCoord
|
||||
cp b
|
||||
jr c,.loadSpriteSetID
|
||||
|
|
@ -415,7 +415,7 @@ GetSplitMapSpriteSetID: ; 17a1a (5:7a1a)
|
|||
; Route 20 is a special case because the two map sections have a more complex
|
||||
; shape instead of the map simply being split horizontally or vertically.
|
||||
.route20
|
||||
ld hl,W_XCOORD
|
||||
ld hl,wXCoord
|
||||
ld a,[hl]
|
||||
cp a,$2b
|
||||
ld a,$01
|
||||
|
|
@ -430,7 +430,7 @@ GetSplitMapSpriteSetID: ; 17a1a (5:7a1a)
|
|||
jr nc,.next
|
||||
ld b,$0d
|
||||
.next
|
||||
ld a,[W_YCOORD]
|
||||
ld a,[wYCoord]
|
||||
cp b
|
||||
ld a,$0a
|
||||
ret c
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ UpdatePlayerSprite: ; 4e31 (1:4e31)
|
|||
; bit set by later logic.
|
||||
ld a, [hTilePlayerStandingOn]
|
||||
ld c, a
|
||||
ld a, [W_GRASSTILE]
|
||||
ld a, [wGrassTile]
|
||||
cp c
|
||||
ld a, $0
|
||||
jr nz, .next2
|
||||
|
|
@ -114,7 +114,7 @@ UpdateNPCSprite: ; 4ed1 (1:4ed1)
|
|||
swap a
|
||||
dec a
|
||||
add a
|
||||
ld hl, W_MAPSPRITEDATA
|
||||
ld hl, wMapSpriteData
|
||||
add l
|
||||
ld l, a
|
||||
ld a, [hl] ; read movement byte 2
|
||||
|
|
@ -453,7 +453,7 @@ InitializeSpriteScreenPosition: ; 50bd (1:50bd)
|
|||
ld a, [H_CURRENTSPRITEOFFSET]
|
||||
add $4
|
||||
ld l, a
|
||||
ld a, [W_YCOORD]
|
||||
ld a, [wYCoord]
|
||||
ld b, a
|
||||
ld a, [hl] ; c2x4 (Y position + 4)
|
||||
sub b ; relative to player position
|
||||
|
|
@ -462,7 +462,7 @@ InitializeSpriteScreenPosition: ; 50bd (1:50bd)
|
|||
dec h
|
||||
ld [hli], a ; c1x4 (screen Y position)
|
||||
inc h
|
||||
ld a, [W_XCOORD]
|
||||
ld a, [wXCoord]
|
||||
ld b, a
|
||||
ld a, [hli] ; c2x6 (X position + 4)
|
||||
sub b ; relative to player position
|
||||
|
|
@ -488,7 +488,7 @@ CheckSpriteAvailability: ; 50dc (1:50dc)
|
|||
add $4
|
||||
ld l, a
|
||||
ld b, [hl] ; c2x4: Y pos (+4)
|
||||
ld a, [W_YCOORD]
|
||||
ld a, [wYCoord]
|
||||
cp b
|
||||
jr z, .skipYVisibilityTest
|
||||
jr nc, .spriteInvisible ; above screen region
|
||||
|
|
@ -498,7 +498,7 @@ CheckSpriteAvailability: ; 50dc (1:50dc)
|
|||
.skipYVisibilityTest
|
||||
inc l
|
||||
ld b, [hl] ; c2x5: X pos (+4)
|
||||
ld a, [W_XCOORD]
|
||||
ld a, [wXCoord]
|
||||
cp b
|
||||
jr z, .skipXVisibilityTest
|
||||
jr nc, .spriteInvisible ; left of screen region
|
||||
|
|
@ -542,7 +542,7 @@ CheckSpriteAvailability: ; 50dc (1:50dc)
|
|||
ld a, [H_CURRENTSPRITEOFFSET]
|
||||
add $7
|
||||
ld l, a
|
||||
ld a, [W_GRASSTILE]
|
||||
ld a, [wGrassTile]
|
||||
cp c
|
||||
ld a, $0
|
||||
jr nz, .notInGrass
|
||||
|
|
@ -590,9 +590,9 @@ CanWalkOntoTile: ; 516e (1:516e)
|
|||
and a
|
||||
ret
|
||||
.notScripted
|
||||
ld a, [W_TILESETCOLLISIONPTR]
|
||||
ld a, [wTileSetCollisionPtr]
|
||||
ld l, a
|
||||
ld a, [W_TILESETCOLLISIONPTR+1]
|
||||
ld a, [wTileSetCollisionPtr+1]
|
||||
ld h, a
|
||||
.tilePassableLoop
|
||||
ld a, [hli]
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ PalletMovementScriptPointerTable: ; 1a442 (6:6442)
|
|||
dw PalletMovementScript_Done
|
||||
|
||||
PalletMovementScript_OakMoveLeft: ; 1a44c (6:644c)
|
||||
ld a, [W_XCOORD]
|
||||
ld a, [wXCoord]
|
||||
sub $a
|
||||
ld [wNumStepsToTake], a
|
||||
jr z, .playerOnLeftTile
|
||||
|
|
@ -79,7 +79,7 @@ PalletMovementScript_OakMoveLeft: ; 1a44c (6:644c)
|
|||
ld a, $3
|
||||
ld [wNPCMovementScriptFunctionNum], a
|
||||
.done
|
||||
ld hl, W_FLAGS_D733
|
||||
ld hl, wFlags_D733
|
||||
set 1, [hl]
|
||||
ld a, $fc
|
||||
ld [wJoyIgnore], a
|
||||
|
|
@ -267,7 +267,7 @@ RLEList_PewterGymGuy: ; 1a5da (6:65da)
|
|||
db $FF
|
||||
|
||||
FreezeEnemyTrainerSprite: ; 1a5e7 (6:65e7)
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
cp POKEMONTOWER_7
|
||||
ret z ; the Rockets on Pokemon Tower 7F leave after battling, so don't freeze them
|
||||
ld hl, RivalIDs
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@ PewterGuys: ; 37ca1 (d:7ca1)
|
|||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld a, [W_YCOORD]
|
||||
ld a, [wYCoord]
|
||||
ld b, a
|
||||
ld a, [W_XCOORD]
|
||||
ld a, [wXCoord]
|
||||
ld c, a
|
||||
.findMatchingCoordsLoop
|
||||
ld a, [hli]
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ EnterMapAnim: ; 70510 (1c:4510)
|
|||
call Delay3
|
||||
push hl
|
||||
call GBFadeInFromWhite
|
||||
ld hl, W_FLAGS_D733
|
||||
ld hl, wFlags_D733
|
||||
bit 7, [hl] ; used fly out of battle?
|
||||
res 7, [hl]
|
||||
jr nz, .flyAnimation
|
||||
|
|
@ -350,7 +350,7 @@ GetPlayerTeleportAnimFrameDelay: ; 7077f (1c:477f)
|
|||
IsPlayerStandingOnWarpPadOrHole: ; 70787 (1c:4787)
|
||||
ld b, 0
|
||||
ld hl, .warpPadAndHoleData
|
||||
ld a, [W_CURMAPTILESET]
|
||||
ld a, [wCurMapTileset]
|
||||
ld c, a
|
||||
.loop
|
||||
ld a, [hli]
|
||||
|
|
|
|||
|
|
@ -291,7 +291,7 @@ CheckSpriteCanSeePlayer: ; 569af (15:69af)
|
|||
|
||||
; tests if the player is in front of the sprite (rather than behind it)
|
||||
CheckPlayerIsInFrontOfSprite: ; 569e3 (15:69e3)
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
cp POWER_PLANT
|
||||
jp z, .engage ; bypass this for power plant to get voltorb fake items to work
|
||||
ld a, [wTrainerSpriteOffset]
|
||||
|
|
|
|||
|
|
@ -30,11 +30,11 @@ SetPal_Battle: ; 71e06 (1c:5e06)
|
|||
ld de, wPalPacket
|
||||
ld bc, $10
|
||||
call CopyData
|
||||
ld a, [W_PLAYERBATTSTATUS3]
|
||||
ld a, [wPlayerBattleStatus3]
|
||||
ld hl, wBattleMonSpecies
|
||||
call DeterminePaletteID
|
||||
ld b, a
|
||||
ld a, [W_ENEMYBATTSTATUS3]
|
||||
ld a, [wEnemyBattleStatus3]
|
||||
ld hl, wEnemyMonSpecies2
|
||||
call DeterminePaletteID
|
||||
ld c, a
|
||||
|
|
@ -139,12 +139,12 @@ SetPal_Overworld: ; 71ec7 (1c:5ec7)
|
|||
ld de, wPalPacket
|
||||
ld bc, $10
|
||||
call CopyData
|
||||
ld a, [W_CURMAPTILESET]
|
||||
ld a, [wCurMapTileset]
|
||||
cp CEMETERY
|
||||
jr z, .PokemonTowerOrAgatha
|
||||
cp CAVERN
|
||||
jr z, .caveOrBruno
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
cp REDS_HOUSE_1F
|
||||
jr c, .townOrRoute
|
||||
cp UNKNOWN_DUNGEON_2
|
||||
|
|
@ -207,7 +207,7 @@ SetPal_TrainerCard: ; 71f3b (1c:5f3b)
|
|||
call CopyData
|
||||
ld de, BadgeBlkDataLengths
|
||||
ld hl, wTrainerCardBlkPacket + 2
|
||||
ld a, [W_OBTAINEDBADGES]
|
||||
ld a, [wObtainedBadges]
|
||||
ld c, 8
|
||||
.badgeLoop
|
||||
srl a
|
||||
|
|
|
|||
|
|
@ -3,37 +3,37 @@ TrackPlayTime: ; 18dee (6:4dee)
|
|||
ld a, [wd732]
|
||||
bit 0, a
|
||||
ret z
|
||||
ld a, [W_PLAYTIMEMINUTES]
|
||||
ld a, [wPlayTimeMinutes]
|
||||
and a
|
||||
ret nz
|
||||
ld a, [W_PLAYTIMEFRAMES]
|
||||
ld a, [wPlayTimeFrames]
|
||||
inc a
|
||||
ld [W_PLAYTIMEFRAMES], a
|
||||
ld [wPlayTimeFrames], a
|
||||
cp 60
|
||||
ret nz
|
||||
xor a
|
||||
ld [W_PLAYTIMEFRAMES], a
|
||||
ld a, [W_PLAYTIMESECONDS]
|
||||
ld [wPlayTimeFrames], a
|
||||
ld a, [wPlayTimeSeconds]
|
||||
inc a
|
||||
ld [W_PLAYTIMESECONDS], a
|
||||
ld [wPlayTimeSeconds], a
|
||||
cp 60
|
||||
ret nz
|
||||
xor a
|
||||
ld [W_PLAYTIMESECONDS], a
|
||||
ld a, [W_PLAYTIMEMINUTES + 1]
|
||||
ld [wPlayTimeSeconds], a
|
||||
ld a, [wPlayTimeMinutes + 1]
|
||||
inc a
|
||||
ld [W_PLAYTIMEMINUTES + 1], a
|
||||
ld [wPlayTimeMinutes + 1], a
|
||||
cp 60
|
||||
ret nz
|
||||
xor a
|
||||
ld [W_PLAYTIMEMINUTES + 1], a
|
||||
ld a, [W_PLAYTIMEHOURS + 1]
|
||||
ld [wPlayTimeMinutes + 1], a
|
||||
ld a, [wPlayTimeHours + 1]
|
||||
inc a
|
||||
ld [W_PLAYTIMEHOURS + 1], a
|
||||
ld [wPlayTimeHours + 1], a
|
||||
cp $ff
|
||||
ret nz
|
||||
ld a, $ff
|
||||
ld [W_PLAYTIMEMINUTES], a
|
||||
ld [wPlayTimeMinutes], a
|
||||
ret
|
||||
|
||||
CountDownIgnoreInputBitReset: ; 18e36 (6:4e36)
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ SetPartyMonTypes: ; 5db5e (17:5b5e)
|
|||
push hl
|
||||
call GetMonHeader
|
||||
pop hl
|
||||
ld a, [W_MONHTYPE1]
|
||||
ld a, [wMonHType1]
|
||||
ld [hli], a
|
||||
ld a, [W_MONHTYPE2]
|
||||
ld a, [wMonHType2]
|
||||
ld [hl], a
|
||||
ret
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ LoadSAV0: ; 73623 (1c:7623)
|
|||
ld de, wMainDataStart
|
||||
ld bc, wMainDataEnd - wMainDataStart
|
||||
call CopyData
|
||||
ld hl, W_CURMAPTILESET
|
||||
ld hl, wCurMapTileset
|
||||
set 7, [hl]
|
||||
ld hl, sSpriteData
|
||||
ld de, wSpriteDataStart
|
||||
|
|
@ -369,7 +369,7 @@ ChangeBox:: ; 738a1 (1c:78a1)
|
|||
call GetBoxSRAMLocation
|
||||
ld de, wBoxDataStart
|
||||
call CopyBoxToOrFromSRAM ; copy new box from SRAM to WRAM
|
||||
ld hl, W_MAPTEXTPTR
|
||||
ld hl, wMapTextPtr
|
||||
ld de, wChangeBoxSavedMapTextPointer
|
||||
ld a, [hli]
|
||||
ld [de], a
|
||||
|
|
@ -580,7 +580,7 @@ GetMonCountsForAllBoxes: ; 73a84 (1c:7a84)
|
|||
ld c, a
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
ld a, [W_NUMINBOX]
|
||||
ld a, [wNumInBox]
|
||||
ld [hl], a
|
||||
|
||||
ret
|
||||
|
|
|
|||
|
|
@ -758,7 +758,7 @@ SlotMachine_AnimWheel1: ; 37813 (d:7813)
|
|||
ld de, wSlotMachineWheel1Offset
|
||||
ld hl, wOAMBuffer
|
||||
ld a, $30
|
||||
ld [W_BASECOORDX], a
|
||||
ld [wBaseCoordX], a
|
||||
jr SlotMachine_AnimWheel
|
||||
|
||||
SlotMachine_AnimWheel2: ; 37823 (d:7823)
|
||||
|
|
@ -766,7 +766,7 @@ SlotMachine_AnimWheel2: ; 37823 (d:7823)
|
|||
ld de, wSlotMachineWheel2Offset
|
||||
ld hl, wOAMBuffer + $30
|
||||
ld a, $50
|
||||
ld [W_BASECOORDX], a
|
||||
ld [wBaseCoordX], a
|
||||
jr SlotMachine_AnimWheel
|
||||
|
||||
SlotMachine_AnimWheel3: ; 37833 (d:7833)
|
||||
|
|
@ -774,11 +774,11 @@ SlotMachine_AnimWheel3: ; 37833 (d:7833)
|
|||
ld de, wSlotMachineWheel3Offset
|
||||
ld hl, wOAMBuffer + $60
|
||||
ld a, $70
|
||||
ld [W_BASECOORDX], a
|
||||
ld [wBaseCoordX], a
|
||||
|
||||
SlotMachine_AnimWheel: ; 37841 (d:7841)
|
||||
ld a, $58
|
||||
ld [W_BASECOORDY], a
|
||||
ld [wBaseCoordY], a
|
||||
push de
|
||||
ld a, [de]
|
||||
ld d, b
|
||||
|
|
@ -787,17 +787,17 @@ SlotMachine_AnimWheel: ; 37841 (d:7841)
|
|||
jr nc, .loop
|
||||
inc d
|
||||
.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
|
||||
ld a, $80
|
||||
ld [hli], a
|
||||
ld a, [W_BASECOORDY]
|
||||
ld a, [wBaseCoordY]
|
||||
ld [hli], a
|
||||
ld a, [W_BASECOORDX]
|
||||
ld a, [wBaseCoordX]
|
||||
add $8
|
||||
ld [hli], a
|
||||
ld a, [de]
|
||||
|
|
@ -806,9 +806,9 @@ SlotMachine_AnimWheel: ; 37841 (d:7841)
|
|||
ld a, $80
|
||||
ld [hli], a
|
||||
inc de
|
||||
ld a, [W_BASECOORDY]
|
||||
ld a, [wBaseCoordY]
|
||||
sub $8
|
||||
ld [W_BASECOORDY], a
|
||||
ld [wBaseCoordY], a
|
||||
cp $28
|
||||
jr nz, .loop
|
||||
pop de
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ SetDefaultNamesBeforeTitlescreen: ; 42b7 (1:42b7)
|
|||
ld de, wPlayerName
|
||||
call CopyFixedLengthText
|
||||
ld hl, SonyText
|
||||
ld de, W_RIVALNAME
|
||||
ld de, wRivalName
|
||||
call CopyFixedLengthText
|
||||
xor a
|
||||
ld [hWY], a
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ DisplayTownMap: ; 70e3e (1c:4e3e)
|
|||
push hl
|
||||
ld a, $1
|
||||
ld [hJoy7], a
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
push af
|
||||
ld b, $0
|
||||
call DrawPlayerOrBirdSprite ; player sprite
|
||||
|
|
@ -156,7 +156,7 @@ LoadTownMap_Fly: ; 70f90 (1c:4f90)
|
|||
coord hl, 0, 0
|
||||
ld de, ToText
|
||||
call PlaceString
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
ld b, $0
|
||||
call DrawPlayerOrBirdSprite
|
||||
ld hl, wFlyLocationsList
|
||||
|
|
@ -250,9 +250,9 @@ BuildFlyLocationsList: ; 71070 (1c:5070)
|
|||
ld hl, wFlyLocationsList - 1
|
||||
ld [hl], $ff
|
||||
inc hl
|
||||
ld a, [W_TOWNVISITEDFLAG]
|
||||
ld a, [wTownVisitedFlag]
|
||||
ld e, a
|
||||
ld a, [W_TOWNVISITEDFLAG + 1]
|
||||
ld a, [wTownVisitedFlag + 1]
|
||||
ld d, a
|
||||
ld bc, SAFFRON_CITY + 1
|
||||
.loop
|
||||
|
|
@ -405,7 +405,7 @@ DisplayWildLocations: ; 711ef (1c:51ef)
|
|||
call PlaceString
|
||||
jr .done
|
||||
.drawPlayerSprite
|
||||
ld a, [W_CURMAP]
|
||||
ld a, [wCurMap]
|
||||
ld b, $0
|
||||
call DrawPlayerOrBirdSprite
|
||||
.done
|
||||
|
|
|
|||
|
|
@ -18,14 +18,14 @@ ExternalClockTradeAnim: ; 410f3 (10:50f3)
|
|||
ld de, ExternalClockTradeFuncSequence
|
||||
|
||||
TradeAnimCommon: ; 41102 (10:5102)
|
||||
ld a, [W_OPTIONS]
|
||||
ld a, [wOptions]
|
||||
push af
|
||||
ld a, [hSCY]
|
||||
push af
|
||||
ld a, [hSCX]
|
||||
push af
|
||||
xor a
|
||||
ld [W_OPTIONS], a
|
||||
ld [wOptions], a
|
||||
ld [hSCY], a
|
||||
ld [hSCX], a
|
||||
push de
|
||||
|
|
@ -53,7 +53,7 @@ TradeAnimCommon: ; 41102 (10:5102)
|
|||
pop af
|
||||
ld [hSCY], a
|
||||
pop af
|
||||
ld [W_OPTIONS], a
|
||||
ld [wOptions], a
|
||||
ret
|
||||
|
||||
addtradefunc: MACRO
|
||||
|
|
@ -383,9 +383,9 @@ Trade_AnimLeftToRight: ; 41376 (10:5376)
|
|||
ld a, $e4
|
||||
ld [rOBP0], a
|
||||
ld a, $54
|
||||
ld [W_BASECOORDX], a
|
||||
ld [wBaseCoordX], a
|
||||
ld a, $1c
|
||||
ld [W_BASECOORDY], a
|
||||
ld [wBaseCoordY], a
|
||||
ld a, [wLeftGBMonSpecies]
|
||||
ld [wMonPartySpriteSpecies], a
|
||||
call Trade_WriteCircledMonOAM
|
||||
|
|
@ -415,9 +415,9 @@ Trade_AnimRightToLeft: ; 413c6 (10:53c6)
|
|||
xor a
|
||||
ld [wTradedMonMovingRight], a
|
||||
ld a, $64
|
||||
ld [W_BASECOORDX], a
|
||||
ld [wBaseCoordX], a
|
||||
ld a, $44
|
||||
ld [W_BASECOORDY], a
|
||||
ld [wBaseCoordY], a
|
||||
ld a, [wRightGBMonSpecies]
|
||||
ld [wMonPartySpriteSpecies], a
|
||||
call Trade_WriteCircledMonOAM
|
||||
|
|
@ -622,10 +622,10 @@ Trade_AddOffsetsToOAMCoords: ; 41510 (10:5510)
|
|||
ld hl, wOAMBuffer
|
||||
ld c, $14
|
||||
.loop
|
||||
ld a, [W_BASECOORDY]
|
||||
ld a, [wBaseCoordY]
|
||||
add [hl]
|
||||
ld [hli], a
|
||||
ld a, [W_BASECOORDX]
|
||||
ld a, [wBaseCoordX]
|
||||
add [hl]
|
||||
ld [hli], a
|
||||
inc hl
|
||||
|
|
@ -657,9 +657,9 @@ Trade_AnimMonMoveVertical: ; 41525 (10:5525)
|
|||
lb bc, -4, 0 ; move left
|
||||
.doAnim
|
||||
ld a, b
|
||||
ld [W_BASECOORDX], a
|
||||
ld [wBaseCoordX], a
|
||||
ld a, c
|
||||
ld [W_BASECOORDY], a
|
||||
ld [wBaseCoordY], a
|
||||
ld d, $4
|
||||
.loop
|
||||
call Trade_AddOffsetsToOAMCoords
|
||||
|
|
@ -847,7 +847,7 @@ TradeforText: ; 41671 (10:5671)
|
|||
db "@"
|
||||
|
||||
Trade_ShowAnimation: ; 41676 (10:5676)
|
||||
ld [W_ANIMATIONID], a
|
||||
ld [wAnimationID], a
|
||||
xor a
|
||||
ld [wAnimationType], a
|
||||
predef_jump MoveAnimation
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue