diff options
author | luckytyphlosion <alan.rj.huang@gmail.com> | 2016-03-17 18:22:37 -0400 |
---|---|---|
committer | luckytyphlosion <alan.rj.huang@gmail.com> | 2016-03-17 18:22:37 -0400 |
commit | 29b6c60cb7801a4b240f398dd85938f020190234 (patch) | |
tree | 5715b7675a9576513b7e716886bbef27703d7c4e | |
parent | b6d2115df4b4f9d86be898292fca473222941f1d (diff) |
Replaced some wram labels before committing, need to commit now.
-rwxr-xr-x | engine/battle/animations.asm | 128 | ||||
-rw-r--r-- | engine/battle/animations_.asm | 394 | ||||
-rwxr-xr-x | engine/menu/naming_screen.asm | 2 | ||||
-rwxr-xr-x | wram.asm | 20 | ||||
-rwxr-xr-x | yellow/main.asm | 27 |
5 files changed, 471 insertions, 100 deletions
diff --git a/engine/battle/animations.asm b/engine/battle/animations.asm index aa9a6c3b..00c828e6 100755 --- a/engine/battle/animations.asm +++ b/engine/battle/animations.asm @@ -4,18 +4,18 @@ DrawFrameBlock: ; 78000 (1e:4000) ld l,c ld h,b ld a,[hli] - ld [W_NUMFBTILES],a - ld a,[W_FBDESTADDR + 1] + ld [wNumFBTiles],a + ld a,[wFBDestAddr + 1] ld e,a - ld a,[W_FBDESTADDR] + ld a,[wFBDestAddr] ld d,a xor a - ld [W_FBTILECOUNTER],a ; loop counter + ld [wFBTileCounter],a ; loop counter .loop - ld a,[W_FBTILECOUNTER] + ld a,[wFBTileCounter] inc a - ld [W_FBTILECOUNTER],a - ld a,[W_SUBANIMTRANSFORM] + ld [wFBTileCounter],a + ld a,[wSubAnimTransform] dec a jr z,.flipHorizontalAndVertical ; 1 dec a @@ -43,7 +43,7 @@ DrawFrameBlock: ; 78000 (1e:4000) 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 @@ -125,19 +125,19 @@ 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 @@ -149,22 +149,22 @@ DrawFrameBlock: ; 78000 (1e:4000) .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 [wSubAnimTransform],a ld a,[wAnimationID] ; get animation number dec a ld l,a @@ -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 @@ -403,9 +403,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 @@ -550,12 +550,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 @@ -583,18 +583,18 @@ PlaySubanimation: ; 78e53 (1e:4e53) 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 @@ -602,9 +602,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) @@ -729,7 +729,7 @@ 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 @@ -743,7 +743,7 @@ DoBallTossSpecialEffects: ; 78f3e (1e:4f3e) 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 @@ -767,15 +767,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 @@ -784,7 +784,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 @@ -793,30 +793,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 @@ -832,21 +832,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 @@ -855,7 +855,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 @@ -869,7 +869,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 @@ -880,7 +880,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 @@ -888,7 +888,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 @@ -968,7 +968,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 @@ -976,7 +976,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 diff --git a/engine/battle/animations_.asm b/engine/battle/animations_.asm new file mode 100644 index 00000000..f9260802 --- /dev/null +++ b/engine/battle/animations_.asm @@ -0,0 +1,394 @@ +; Draws a "frame block". Frame blocks are blocks of tiles that are put +; together to form frames in battle animations. +DrawFrameBlock: ; 78000 (1e:4000) + ld l,c + ld h,b + ld a,[hli] + ld [W_NUMFBTILES],a + ld a,[W_FBDESTADDR + 1] + ld e,a + ld a,[W_FBDESTADDR] + ld d,a + xor a + ld [W_FBTILECOUNTER],a ; loop counter +.loop + ld a,[W_FBTILECOUNTER] + inc a + ld [W_FBTILECOUNTER],a + ld a,[W_SUBANIMTRANSFORM] + dec a + jr z,.flipHorizontalAndVertical ; 1 + dec a + jp z,.flipHorizontalTranslateDown ; 2 + dec a + jr z,.flipBaseCoords ; 3 +.noTransformation + ld a,[wBaseCoordY] + add [hl] + ld [de],a ; store Y + inc hl + inc de + ld a,[wBaseCoordX] + jr .finishCopying +.flipBaseCoords + ld a,[wBaseCoordY] + ld b,a + ld a,136 + sub b ; flip Y base coordinate + add [hl] ; Y offset + ld [de],a ; store Y + inc hl + inc de + 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) + add [hl] ; X offset + ld [de],a ; store X + inc hl + inc de + ld a,[hli] + add a,$31 ; base tile ID for battle animations + ld [de],a ; store tile ID + inc de + ld a,[hli] + ld [de],a ; store flags + inc de + jp .nextTile +.flipHorizontalAndVertical + ld a,[wBaseCoordY] + add [hl] ; Y offset + ld b,a + ld a,136 + sub b ; flip Y coordinate + ld [de],a ; store Y + inc hl + inc de + ld a,[wBaseCoordX] + add [hl] ; X offset + ld b,a + ld a,168 + sub b ; flip X coordinate + ld [de],a ; store X + inc hl + inc de + ld a,[hli] + add a,$31 ; base tile ID for battle animations + ld [de],a ; store tile ID + inc de +; toggle horizontal and vertical flip + ld a,[hli] ; flags + and a + ld b,OAM_VFLIP | OAM_HFLIP + jr z,.storeFlags1 + cp a,OAM_HFLIP + ld b,OAM_VFLIP + jr z,.storeFlags1 + cp a,OAM_VFLIP + ld b,OAM_HFLIP + jr z,.storeFlags1 + ld b,0 +.storeFlags1 + ld a,b + ld [de],a + inc de + jp .nextTile +.flipHorizontalTranslateDown + ld a,[wBaseCoordY] + add [hl] + add a,40 ; translate Y coordinate downwards + ld [de],a ; store Y + inc hl + inc de + ld a,[wBaseCoordX] + add [hl] + ld b,a + ld a,168 + sub b ; flip X coordinate + ld [de],a ; store X + inc hl + inc de + ld a,[hli] + add a,$31 ; base tile ID for battle animations + ld [de],a ; store tile ID + inc de + ld a,[hli] + bit 5,a ; is horizontal flip enabled? + jr nz,.disableHorizontalFlip +.enableHorizontalFlip + set 5,a + jr .storeFlags2 +.disableHorizontalFlip + res 5,a +.storeFlags2 + ld [de],a + inc de +.nextTile + ld a,[W_FBTILECOUNTER] + ld c,a + ld a,[W_NUMFBTILES] + cp c + jp nz,.loop ; go back up if there are more tiles to draw +.afterDrawingTiles + ld a,[W_FBMODE] + cp a,2 + jr z,.advanceFrameBlockDestAddr; skip delay and don't clean OAM buffer + ld a,[W_SUBANIMFRAMEDELAY] + ld c,a + call DelayFrames + ld a,[W_FBMODE] + 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,[wAnimationID] + cp a,GROWL + jr z,.resetFrameBlockDestAddr + call AnimationCleanOAM +.resetFrameBlockDestAddr + ld hl,wOAMBuffer ; OAM buffer + ld a,l + ld [W_FBDESTADDR + 1],a + ld a,h + ld [W_FBDESTADDR],a ; set destination address to beginning of OAM buffer + ret +.advanceFrameBlockDestAddr + ld a,e + ld [W_FBDESTADDR + 1],a + ld a,d + ld [W_FBDESTADDR],a +.done + ret + +PlayAnimation: ; 78124 (1e:4124) + xor a + ld [$FF8B],a ; it looks like nothing reads this + ld [W_SUBANIMTRANSFORM],a + ld a,[wAnimationID] ; get animation number + dec a + ld l,a + ld h,0 + add hl,hl + ld de,AttackAnimationPointers ; animation command stream pointers + add hl,de + ld a,[hli] + ld h,[hl] + ld l,a +.animationLoop + ld a,[hli] + cp a,$FF + jr z,.AnimationOver + cp a,$C0 ; is this subanimation or a special effect? + jr c,.playSubanimation +.doSpecialEffect + ld c,a + ld de,SpecialEffectPointers +.searchSpecialEffectTableLoop + ld a,[de] + cp c + jr z,.foundMatch + inc de + inc de + inc de + jr .searchSpecialEffectTableLoop +.foundMatch + ld a,[hli] + cp a,$FF ; is there a sound to play? + jr z,.skipPlayingSound + ld [wAnimSoundID],a ; store sound + push hl + push de + call GetMoveSound + call PlaySound + pop de + pop hl +.skipPlayingSound + push hl + inc de + ld a,[de] + ld l,a + inc de + ld a,[de] + ld h,a + ld de,.nextAnimationCommand + push de + jp [hl] ; jump to special effect function +.playSubanimation + ld c,a + and a,%00111111 + ld [W_SUBANIMFRAMEDELAY],a + xor a + sla c + rla + sla c + rla + ld [wWhichBattleAnimTileset],a + ld a,[hli] ; sound + ld [wAnimSoundID],a ; store sound + ld a,[hli] ; subanimation ID + ld c,l + ld b,h + ld l,a + ld h,0 + add hl,hl + ld de,SubanimationPointers + add hl,de + ld a,l + ld [W_SUBANIMADDRPTR],a + ld a,h + ld [W_SUBANIMADDRPTR + 1],a + ld l,c + ld h,b + push hl + ld a,[rOBP0] + push af + ld a,[wAnimPalette] + ld [rOBP0],a + call UpdateGBCPal_OBP0 + call LoadAnimationTileset + call LoadSubanimation + call PlaySubanimation + pop af + ld [rOBP0],a + call UpdateGBCPal_OBP0 +.nextAnimationCommand + pop hl + jr .animationLoop +.AnimationOver ; 417B + ret + +LoadSubanimation: ; 781b5 (1e:41b5) + ld a,[W_SUBANIMADDRPTR + 1] + ld h,a + ld a,[W_SUBANIMADDRPTR] + ld l,a + ld a,[hli] + ld e,a + ld a,[hl] + ld d,a ; de = address of subanimation + ld a,[de] + ld b,a + and a,31 + ld [W_SUBANIMCOUNTER],a ; number of frame blocks + ld a,b + and a,%11100000 + cp a,5 << 5 ; is subanimation type 5? + jr nz,.isNotType5 +.isType5 + call GetSubanimationTransform2 + jr .saveTransformation +.isNotType5 + call GetSubanimationTransform1 +.saveTransformation +; place the upper 3 bits of a into bits 0-2 of a before storing + srl a + swap a + ld [W_SUBANIMTRANSFORM],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] + dec a + ld bc,3 +.loop + add hl,bc + dec a + jr nz,.loop +.storeSubentryAddr + inc de + add hl,de + ld a,l + ld [W_SUBANIMSUBENTRYADDR],a + ld a,h + ld [W_SUBANIMSUBENTRYADDR + 1],a + ret + +; called if the subanimation type is not 5 +; sets the transform to 0 (i.e. no transform) if it's the player's turn +; sets the transform to the subanimation type if it's the enemy's turn +GetSubanimationTransform1: ; 781fb (1e:41fb) + ld b,a + ld a,[H_WHOSETURN] + and a + ld a,b + ret nz + xor a + ret + +; called if the subanimation type is 5 +; sets the transform to 2 (i.e. horizontal and vertical flip) if it's the player's turn +; sets the transform to 0 (i.e. no transform) if it's the enemy's turn +GetSubanimationTransform2: ; 78203 (1e:4203) + ld a,[H_WHOSETURN] + and a + ld a,2 << 5 + ret z + xor a + ret + +; loads tile patterns for battle animations +LoadAnimationTileset: ; 7820b (1e:420b) + ld a,[wWhichBattleAnimTileset] + add a + add a + ld hl,AnimationTilesetPointers + ld e,a + ld d,0 + add hl,de + ld a,[hli] + ld [wTempTilesetNumTiles],a ; number of tiles + ld a,[hli] + ld e,a + ld a,[hl] + ld d,a ; de = address of tileset + ld hl,vSprites + $310 + ld b, BANK(AnimationTileset1) ; ROM bank + ld a,[wTempTilesetNumTiles] + ld c,a ; number of tiles + jp CopyVideoData ; load tileset + +AnimationTilesetPointers: ; 7822b (1e:422b) + db 79 ; number of tiles + dw AnimationTileset1 + db $FF + + db 79 ; number of tiles + dw AnimationTileset2 + db $FF + + db 64 ; number of tiles + dw AnimationTileset1 + db $FF + +AnimationTileset1: ; 78237 (1e:4237) + INCBIN "gfx/attack_anim_1.2bpp" + +AnimationTileset2: ; 78757 (1e:4757) + INCBIN "gfx/attack_anim_2.2bpp" + +SlotMachineTiles2: ; 78bde (1e:4c17) + INCBIN "gfx/slotmachine2.2bpp" + + dr $78d97,$78e98 +Func_78e98: ; 78e98 (1e:4e98) + dr $78e98,$79349 +AnimationSlideMonOff: ; 79349 (1e:5349) + dr $79349,$79353 +AnimationSlideEnemyMonOff: ; 79353 (1e:5353) + dr $79353,$7966e +AnimationMinimizeMon: ; 7966e (1e:566e) + dr $7966e,$797af +AnimationSubstitute: ; 797af (1e:57af) + dr $797af,$79816 +HideSubstituteShowMonAnim: ; 79816 (1e:5816) + dr $79816,$798b2 +ReshowSubstituteAnim: ; 798b2 (1e:58b2) + dr $798b2,$798c8 +AnimationTransformMon: ; 798c8 (1e:58c8) + dr $798c8,$798d4 +ChangeMonPic: ; 798d4 (1e:58d4) + dr $798d4,$79929 +Func_79929: ; 79929 (1e:5929) + dr $79929,$7a037
\ No newline at end of file diff --git a/engine/menu/naming_screen.asm b/engine/menu/naming_screen.asm index fd9a55af..de0c696c 100755 --- a/engine/menu/naming_screen.asm +++ b/engine/menu/naming_screen.asm @@ -164,7 +164,7 @@ DisplayNamingScreen: ; 6307 (1:6307) call RunDefaultPaletteCommand call GBPalNormal xor a - ld [W_SUBANIMTRANSFORM], a + ld [wSubAnimTransform], a ld hl, wd730 res 6, [hl] ld a, [wIsInBattle] @@ -1778,17 +1778,17 @@ wBaseCoordY:: ; d082 ; high bit = enable, others = timer to cycle frequencies wLowHealthAlarm:: ds 1 ; d083 -W_FBTILECOUNTER:: ; d084 +wFBTileCounter:: ; d084 ; counts how many tiles of the current frame block have been drawn ds 1 wMovingBGTilesCounter2:: ; d085 ds 1 -W_SUBANIMFRAMEDELAY:: ; d086 +wSubAnimFrameDelay:: ; d086 ; duration of each frame of the current subanimation in terms of screen refreshes ds 1 -W_SUBANIMCOUNTER:: ; d087 +wSubAnimCounter:: ; d087 ; counts the number of subentries left in the current subanimation ds 1 @@ -1797,7 +1797,7 @@ wSaveFileStatus:: ; d088 ; 2 = save file exists and no corruption has been detected ds 1 -W_NUMFBTILES:: ; d089 +wNumFBTiles:: ; d089 ; number of tiles in current battle animation frame block ds 1 @@ -1833,7 +1833,7 @@ wSlideMonDelay:: ; d08b wAnimCounter:: ; d08b ; generic counter variable for various animations -W_SUBANIMTRANSFORM:: ; d08b +wSubAnimTransform:: ; d08b ; controls what transformations are applied to the subanimation ; 01: flip horizontally and vertically ; 02: flip horizontally and translate downwards 40 pixels @@ -1854,7 +1854,7 @@ wEndBattleTextRomBank:: ; d092 ds 1 -W_SUBANIMADDRPTR:: ; d094 +wSubAnimAddrPtr:: ; d094 ; the address _of the address_ of the current subanimation entry ds 2 @@ -1864,7 +1864,7 @@ wSlotMachineAllowMatchesCounter:: ; d096 ; the only way it can increase. Winning certain payout amounts will decrement it ; or zero it. -W_SUBANIMSUBENTRYADDR:: ; d096 +wSubAnimSubEntryAddr:: ; d096 ; the address of the current subentry of the current subanimation ds 2 @@ -1882,17 +1882,17 @@ wTownMapSpriteBlinkingEnabled:: ; d09b wUnusedD09B:: ; d09b ds 1 -W_FBDESTADDR:: ; d09c +wFBDestAddr:: ; d09c ; current destination address in OAM for frame blocks (big endian) ds 2 -W_FBMODE:: ; d09e +wFBMode:: ; d09e ; controls how the frame blocks are put together to form frames ; specifically, after finishing drawing the frame block, the frame block's mode determines what happens ; 00: clean OAM buffer and delay ; 02: move onto the next frame block with no delay and no cleaning OAM buffer ; 03: delay, but don't clean OAM buffer -; 04: delay, without cleaning OAM buffer, and do not advance [W_FBDESTADDR], so that the next frame block will overwrite this one +; 04: delay, without cleaning OAM buffer, and do not advance [wFBDestAddr], so that the next frame block will overwrite this one ds 1 wLinkCableAnimBulgeToggle:: ; d09f diff --git a/yellow/main.asm b/yellow/main.asm index e3602d65..d39c431b 100755 --- a/yellow/main.asm +++ b/yellow/main.asm @@ -809,31 +809,8 @@ PKMNLeaguePC: ; 75dfe (1d:5dfe) SECTION "bank1E",ROMX,BANK[$1E] - dr $78000,$78757 -AnimationTileset2: ; 78757 (1e:4757) - dr $78757,$78c17 -SlotMachineTiles2: ; 78c17 (1e:4c17) - dr $78c17,$78e98 -Func_78e98: ; 78e98 (1e:4e98) - dr $78e98,$79349 -AnimationSlideMonOff: ; 79349 (1e:5349) - dr $79349,$79353 -AnimationSlideEnemyMonOff: ; 79353 (1e:5353) - dr $79353,$7966e -AnimationMinimizeMon: ; 7966e (1e:566e) - dr $7966e,$797af -AnimationSubstitute: ; 797af (1e:57af) - dr $797af,$79816 -HideSubstituteShowMonAnim: ; 79816 (1e:5816) - dr $79816,$798b2 -ReshowSubstituteAnim: ; 798b2 (1e:58b2) - dr $798b2,$798c8 -AnimationTransformMon: ; 798c8 (1e:58c8) - dr $798c8,$798d4 -ChangeMonPic: ; 798d4 (1e:58d4) - dr $798d4,$79929 -Func_79929: ; 79929 (1e:5929) - dr $79929,$7a037 +INCLUDE "engine/battle/animations_.asm" + AnimCut: ; 7a037 (1e:6037) dr $7a037,$7a0fb AnimateBoulderDust: ; 7a0fb (1e:60fb) |