Merge pull request #578 from mid-kid/master

Fixes in the animation subsystem.
This commit is contained in:
Rangi
2018-12-09 17:44:09 -05:00
committed by GitHub
21 changed files with 524 additions and 502 deletions

View File

@@ -4854,7 +4854,7 @@ CalcPlayerStats:
ld bc, wBattleMonAttack
ld a, 5
call CalcStats
call CalcBattleStats
ld hl, BadgeStatBoosts
call CallBattleCore
@@ -4875,7 +4875,7 @@ CalcEnemyStats:
ld bc, wEnemyMonAttack
ld a, 5
call CalcStats
call CalcBattleStats
call BattleCommand_SwitchTurn
@@ -4887,7 +4887,7 @@ CalcEnemyStats:
jp BattleCommand_SwitchTurn
CalcStats:
CalcBattleStats:
.loop
push af
ld a, [hli]
@@ -6221,21 +6221,6 @@ BattleCommand_Heal:
INCLUDE "engine/battle/move_effects/transform.asm"
BattleSideCopy:
; Copy bc bytes from hl to de if it's the player's turn.
; Copy bc bytes from de to hl if it's the enemy's turn.
ldh a, [hBattleTurn]
and a
jr z, .copy
; Swap hl and de
push hl
ld h, d
ld l, e
pop de
.copy
jp CopyBytes
BattleEffect_ButItFailed:
call AnimateFailedMove
jp PrintButItFailed

View File

@@ -1,4 +1,3 @@
BattleCommand_Transform:
; transform
@@ -137,3 +136,18 @@ BattleCommand_Transform:
call nz, LoadAnim
ld hl, TransformedText
jp StdBattleTextBox
BattleSideCopy:
; Copy bc bytes from hl to de if it's the player's turn.
; Copy bc bytes from de to hl if it's the enemy's turn.
ldh a, [hBattleTurn]
and a
jr z, .copy
; Swap hl and de
push hl
ld h, d
ld l, e
pop de
.copy
jp CopyBytes

View File

@@ -334,8 +334,8 @@ BattleAnimCommands::
dw BattleAnimCmd_IncObj
dw BattleAnimCmd_SetObj
dw BattleAnimCmd_IncBGEffect
dw BattleAnimCmd_EnemyFeetObj
dw BattleAnimCmd_PlayerHeadObj
dw BattleAnimCmd_BattlerGFX_1Row
dw BattleAnimCmd_BattlerGFX_2Row
dw BattleAnimCmd_CheckPokeball
dw BattleAnimCmd_Transform
dw BattleAnimCmd_RaiseSub
@@ -595,13 +595,13 @@ BattleAnimCmd_IfParamAnd:
BattleAnimCmd_Obj:
; index, x, y, param
call GetBattleAnimByte
ld [wBattleAnimTemp0], a
ld [wBattleObjectTempID], a
call GetBattleAnimByte
ld [wBattleAnimTemp1], a
ld [wBattleObjectTempXCoord], a
call GetBattleAnimByte
ld [wBattleAnimTemp2], a
ld [wBattleObjectTempYCoord], a
call GetBattleAnimByte
ld [wBattleAnimTemp3], a
ld [wBattleObjectTemp0b], a
call QueueBattleAnimation
ret
@@ -665,7 +665,7 @@ BattleAnimCmd_5GFX:
ld [wBattleAnimTemp0], a
.loop
ld a, [wBattleAnimTemp0]
cp (vTiles1 - vTiles0) / $10 - $31
cp (vTiles1 - vTiles0) / LEN_2BPP_TILE - BATTLEANIM_BASE_TILE
ret nc
call GetBattleAnimByte
ld [hli], a
@@ -678,10 +678,10 @@ BattleAnimCmd_5GFX:
rept 4
add hl, hl
endr
ld de, vTiles0 tile $31
ld de, vTiles0 tile BATTLEANIM_BASE_TILE
add hl, de
ld a, [wBattleAnimByte]
call LoadBattleAnimObj
call LoadBattleAnimGFX
ld a, [wBattleAnimTemp0]
add c
ld [wBattleAnimTemp0], a
@@ -767,7 +767,7 @@ BattleAnimCmd_SetObj:
ld [hl], a
ret
BattleAnimCmd_EnemyFeetObj:
BattleAnimCmd_BattlerGFX_1Row:
ld hl, wBattleAnimTileDict
.loop
ld a, [hl]
@@ -778,33 +778,33 @@ BattleAnimCmd_EnemyFeetObj:
jr .loop
.okay
ld a, $28
ld a, ANIM_GFX_PLAYERHEAD
ld [hli], a
ld a, $42
ld a, ($80 - 6 - 7) - BATTLEANIM_BASE_TILE
ld [hli], a
ld a, $29
ld a, ANIM_GFX_ENEMYFEET
ld [hli], a
ld a, $49
ld a, ($80 - 6) - BATTLEANIM_BASE_TILE
ld [hl], a
ld hl, vTiles0 tile $73
ld de, vTiles2 tile $06
ld a, $70
ld hl, vTiles0 tile ($80 - 6 - 7)
ld de, vTiles2 tile $06 ; Enemy feet start tile
ld a, 7 tiles ; Enemy pic height
ld [wBattleAnimTemp0], a
ld a, $7
call .LoadFootprint
ld de, vTiles2 tile $31
ld a, $60
ld a, 7 ; Copy 7x1 tiles
call .LoadFeet
ld de, vTiles2 tile $31 ; Player head start tile
ld a, 6 tiles ; Player pic height
ld [wBattleAnimTemp0], a
ld a, $6
call .LoadFootprint
ld a, 6 ; Copy 6x1 tiles
call .LoadFeet
ret
.LoadFootprint:
.LoadFeet:
push af
push hl
push de
lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 1
lb bc, BANK(@), 1
call Request2bpp
pop de
ld a, [wBattleAnimTemp0]
@@ -818,10 +818,10 @@ BattleAnimCmd_EnemyFeetObj:
add hl, bc
pop af
dec a
jr nz, .LoadFootprint
jr nz, .LoadFeet
ret
BattleAnimCmd_PlayerHeadObj:
BattleAnimCmd_BattlerGFX_2Row:
ld hl, wBattleAnimTileDict
.loop
ld a, [hl]
@@ -832,25 +832,25 @@ BattleAnimCmd_PlayerHeadObj:
jr .loop
.okay
ld a, $28
ld a, ANIM_GFX_PLAYERHEAD
ld [hli], a
ld a, $35
ld a, ($80 - 6 * 2 - 7 * 2) - BATTLEANIM_BASE_TILE
ld [hli], a
ld a, $29
ld a, ANIM_GFX_ENEMYFEET
ld [hli], a
ld a, $43
ld a, ($80 - 6 * 2) - BATTLEANIM_BASE_TILE
ld [hl], a
ld hl, vTiles0 tile $66
ld de, vTiles2 tile $05
ld a, $70
ld hl, vTiles0 tile ($80 - 6 * 2 - 7 * 2)
ld de, vTiles2 tile $05 ; Enemy feet start tile
ld a, 7 tiles ; Enemy pic height
ld [wBattleAnimTemp0], a
ld a, $7
ld a, 7 ; Copy 7x2 tiles
call .LoadHead
ld de, vTiles2 tile $31
ld a, $60
ld de, vTiles2 tile $31 ; Player head start tile
ld a, 6 tiles ; Player pic height
ld [wBattleAnimTemp0], a
ld a, $6
ld a, 6 ; Copy 6x2 tiles
call .LoadHead
ret
@@ -858,7 +858,7 @@ BattleAnimCmd_PlayerHeadObj:
push af
push hl
push de
lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 2
lb bc, BANK(@), 2
call Request2bpp
pop de
ld a, [wBattleAnimTemp0]
@@ -927,14 +927,14 @@ BattleAnimCmd_UpdateActorPic:
ld hl, vTiles2 tile $00
ld b, 0
ld c, $31
ld c, 7 * 7
call Request2bpp
ret
.player
ld hl, vTiles2 tile $31
ld b, 0
ld c, $24
ld c, 6 * 6
call Request2bpp
ret
@@ -1028,7 +1028,7 @@ BattleAnimCmd_MinimizeOpp:
GetMinimizePic:
ld hl, sScratch
ld bc, $31 tiles
ld bc, (7 * 7) tiles
.loop
xor a
ld [hli], a

View File

@@ -96,8 +96,8 @@ BattleBGEffects:
dw BattleBGEffect_Whirlpool
dw BattleBGEffect_Teleport
dw BattleBGEffect_NightShade
dw BattleBGEffect_FeetFollow
dw BattleBGEffect_HeadFollow
dw BattleBGEffect_BattlerObj_1Row
dw BattleBGEffect_BattlerObj_2Row
dw BattleBGEffect_DoubleTeam
dw BattleBGEffect_AcidArmor
dw BattleBGEffect_RapidFlash
@@ -403,7 +403,7 @@ BattleBGEffect_ShowMon:
db 3, $00, 3
db -1
BattleBGEffect_FeetFollow:
BattleBGEffect_BattlerObj_1Row:
call BattleBGEffects_AnonJumptable
.anon_dw
dw .zero
@@ -425,22 +425,22 @@ BattleBGEffect_FeetFollow:
call BattleBGEffects_IncrementJumptable
push bc
call BGEffect_CheckBattleTurn
jr nz, .player_turn
ld a, ANIM_OBJ_PLAYERFEETFOLLOW
ld [wBattleAnimTemp0], a
ld a, 16 * 8 + 4
jr nz, .player_side
ld a, ANIM_OBJ_ENEMYFEET_1ROW
ld [wBattleObjectTempID], a
ld a, 16 * TILE_WIDTH + 4
jr .okay
.player_turn
ld a, ANIM_OBJ_ENEMYFEETFOLLOW
ld [wBattleAnimTemp0], a
ld a, 6 * 8
.player_side
ld a, ANIM_OBJ_PLAYERHEAD_1ROW
ld [wBattleObjectTempID], a
ld a, 6 * TILE_WIDTH
.okay
ld [wBattleAnimTemp1], a
ld a, 8 * 8
ld [wBattleAnimTemp2], a
ld [wBattleObjectTempXCoord], a
ld a, 8 * TILE_WIDTH
ld [wBattleObjectTempYCoord], a
xor a
ld [wBattleAnimTemp3], a
ld [wBattleObjectTemp0b], a
call _QueueBattleAnimation
pop bc
ret
@@ -449,12 +449,12 @@ BattleBGEffect_FeetFollow:
call BattleBGEffects_IncrementJumptable
push bc
call BGEffect_CheckBattleTurn
jr nz, .player_turn_2
jr nz, .player_side_2
hlcoord 12, 6
lb bc, 1, 7
jr .okay2
.player_turn_2
.player_side_2
hlcoord 2, 6
lb bc, 1, 6
.okay2
@@ -470,7 +470,7 @@ BattleBGEffect_FeetFollow:
call EndBattleBGEffect
ret
BattleBGEffect_HeadFollow:
BattleBGEffect_BattlerObj_2Row:
call BattleBGEffects_AnonJumptable
.anon_dw
dw .zero
@@ -492,22 +492,22 @@ BattleBGEffect_HeadFollow:
call BattleBGEffects_IncrementJumptable
push bc
call BGEffect_CheckBattleTurn
jr nz, .player_turn
ld a, ANIM_OBJ_PLAYERHEADFOLLOW
ld [wBattleAnimTemp0], a
ld a, 16 * 8 + 4
jr nz, .player_side
ld a, ANIM_OBJ_ENEMYFEET_2ROW
ld [wBattleObjectTempID], a
ld a, 16 * TILE_WIDTH + 4
jr .okay
.player_turn
ld a, ANIM_OBJ_ENEMYHEADFOLLOW
ld [wBattleAnimTemp0], a
ld a, 6 * 8
.player_side
ld a, ANIM_OBJ_PLAYERHEAD_2ROW
ld [wBattleObjectTempID], a
ld a, 6 * TILE_WIDTH
.okay
ld [wBattleAnimTemp1], a
ld a, 8 * 8
ld [wBattleAnimTemp2], a
ld [wBattleObjectTempXCoord], a
ld a, 8 * TILE_WIDTH
ld [wBattleObjectTempYCoord], a
xor a
ld [wBattleAnimTemp3], a
ld [wBattleObjectTemp0b], a
call _QueueBattleAnimation
pop bc
ret
@@ -516,12 +516,12 @@ BattleBGEffect_HeadFollow:
call BattleBGEffects_IncrementJumptable
push bc
call BGEffect_CheckBattleTurn
jr nz, .player_turn_2
jr nz, .player_side_2
hlcoord 12, 5
lb bc, 2, 7
jr .okay2
.player_turn_2
.player_side_2
hlcoord 2, 6
lb bc, 2, 6
.okay2

View File

@@ -27,7 +27,7 @@ DeinitBattleAnimation:
ret
InitBattleAnimation:
ld a, [wBattleAnimTemp0]
ld a, [wBattleObjectTempID]
ld e, a
ld d, 0
ld hl, BattleAnimObjects
@@ -58,14 +58,14 @@ endr
ld a, [de]
call GetBattleAnimTileOffset
ld [hli], a ; Tile ID
ld a, [wBattleAnimTemp1]
ld a, [wBattleObjectTempXCoord]
ld [hli], a ; X Coord
ld a, [wBattleAnimTemp2]
ld a, [wBattleObjectTempYCoord]
ld [hli], a ; Y Coord
xor a
ld [hli], a ; X Offset
ld [hli], a ; Y Offset
ld a, [wBattleAnimTemp3]
ld a, [wBattleObjectTemp0b]
ld [hli], a ; 0b
xor a
ld [hli], a ; 0c
@@ -147,7 +147,7 @@ BattleAnimOAMUpdate:
inc hl
inc de
ld a, [wBattleAnimTempTileID]
add $31
add BATTLEANIM_BASE_TILE
add [hl]
ld [de], a
inc hl

View File

@@ -100,7 +100,7 @@ GetBattleAnimOAMPointer:
add hl, de
ret
LoadBattleAnimObj:
LoadBattleAnimGFX:
push hl
ld l, a
ld h, 0