mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
Merge pull request #601 from mid-kid/master
Exciting adventures down battle animation street!
This commit is contained in:
commit
771d2efd65
@ -25,6 +25,7 @@
|
||||
const BATTLEANIMSTRUCT_16
|
||||
const BATTLEANIMSTRUCT_17
|
||||
BATTLEANIMSTRUCT_LENGTH EQU const_value
|
||||
NUM_ANIM_OBJECTS EQU 10 ; see wActiveAnimObjects
|
||||
|
||||
; Start tile for battle animation graphics
|
||||
BATTLEANIM_BASE_TILE EQU 7 * 7 ; Maximum size of a pokemon picture
|
||||
@ -816,6 +817,8 @@ BATTLEANIM_BASE_TILE EQU 7 * 7 ; Maximum size of a pokemon picture
|
||||
const BG_EFFECT_STRUCT_JT_INDEX
|
||||
const BG_EFFECT_STRUCT_BATTLE_TURN
|
||||
const BG_EFFECT_STRUCT_03
|
||||
BG_EFFECT_STRUCT_LENGTH EQU const_value
|
||||
NUM_BG_EFFECTS EQU 5 ; see wActiveBGEffects
|
||||
|
||||
; battle palettes
|
||||
const_def
|
||||
|
@ -123,6 +123,13 @@ DARKNESS EQU 1 << DARKNESS_F
|
||||
|
||||
ANYTIME EQU MORN | DAY | NITE
|
||||
|
||||
; wBattleAnimFlags:: ; d40f
|
||||
const_def
|
||||
const BATTLEANIM_STOP_F ; 0
|
||||
const BATTLEANIM_IN_SUBROUTINE_F ; 1
|
||||
const BATTLEANIM_IN_LOOP_F ; 2
|
||||
const BATTLEANIM_KEEPSPRITES_F ; 3
|
||||
|
||||
; wPlayerSpriteSetupFlags:: ; d45b
|
||||
PLAYERSPRITESETUP_FACING_MASK EQU %11
|
||||
PLAYERSPRITESETUP_FEMALE_TO_MALE_F EQU 2
|
||||
|
@ -230,11 +230,11 @@ BattleAnimFrameData:
|
||||
frame BATTLEANIMOAMSET_4C, 2
|
||||
frame BATTLEANIMOAMSET_4D, 4
|
||||
frame BATTLEANIMOAMSET_4E, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_4E, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_4E, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_4E, 2
|
||||
delanim
|
||||
|
||||
@ -243,11 +243,11 @@ BattleAnimFrameData:
|
||||
frame BATTLEANIMOAMSET_4C, 2, OAM_X_FLIP
|
||||
frame BATTLEANIMOAMSET_4D, 4, OAM_X_FLIP
|
||||
frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP
|
||||
delanim
|
||||
|
||||
@ -256,11 +256,11 @@ BattleAnimFrameData:
|
||||
frame BATTLEANIMOAMSET_4C, 2, OAM_X_FLIP, OAM_Y_FLIP
|
||||
frame BATTLEANIMOAMSET_4D, 4, OAM_X_FLIP, OAM_Y_FLIP
|
||||
frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP, OAM_Y_FLIP
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP, OAM_Y_FLIP
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP, OAM_Y_FLIP
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP, OAM_Y_FLIP
|
||||
delanim
|
||||
|
||||
@ -272,11 +272,11 @@ BattleAnimFrameData:
|
||||
frame BATTLEANIMOAMSET_50, 1
|
||||
frame BATTLEANIMOAMSET_51, 1
|
||||
frame BATTLEANIMOAMSET_52, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_52, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_52, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_52, 2
|
||||
delanim
|
||||
|
||||
@ -288,11 +288,11 @@ BattleAnimFrameData:
|
||||
frame BATTLEANIMOAMSET_50, 1, OAM_X_FLIP
|
||||
frame BATTLEANIMOAMSET_51, 1, OAM_X_FLIP
|
||||
frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP
|
||||
delanim
|
||||
|
||||
@ -368,13 +368,13 @@ BattleAnimFrameData:
|
||||
frame BATTLEANIMOAMSET_10, 3
|
||||
frame BATTLEANIMOAMSET_0F, 3
|
||||
frame BATTLEANIMOAMSET_12, 1
|
||||
dorepeat 1
|
||||
dowait 1
|
||||
frame BATTLEANIMOAMSET_12, 1
|
||||
dorepeat 1
|
||||
dowait 1
|
||||
frame BATTLEANIMOAMSET_12, 1
|
||||
dorepeat 1
|
||||
dowait 1
|
||||
frame BATTLEANIMOAMSET_12, 1
|
||||
dorepeat 1
|
||||
dowait 1
|
||||
frame BATTLEANIMOAMSET_12, 3
|
||||
delanim
|
||||
|
||||
@ -535,13 +535,13 @@ BattleAnimFrameData:
|
||||
frame BATTLEANIMOAMSET_34, 32
|
||||
frame BATTLEANIMOAMSET_35, 32 ; fallthrough
|
||||
.Frameset_2f:
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_35, 4
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_35, 4
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_35, 4
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_35, 4
|
||||
delanim
|
||||
|
||||
@ -579,13 +579,13 @@ BattleAnimFrameData:
|
||||
|
||||
.Frameset_35:
|
||||
frame BATTLEANIMOAMSET_40, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_40, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_41, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_41, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
dorestart
|
||||
|
||||
.Frameset_36:
|
||||
@ -597,7 +597,7 @@ BattleAnimFrameData:
|
||||
|
||||
.Frameset_37:
|
||||
frame BATTLEANIMOAMSET_19, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
dorestart
|
||||
|
||||
.Frameset_38:
|
||||
@ -607,7 +607,7 @@ BattleAnimFrameData:
|
||||
|
||||
.Frameset_39:
|
||||
frame BATTLEANIMOAMSET_18, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
dorestart
|
||||
|
||||
.Frameset_3a:
|
||||
@ -639,15 +639,15 @@ BattleAnimFrameData:
|
||||
endanim
|
||||
|
||||
.Frameset_44:
|
||||
dorepeat 20
|
||||
dowait 20
|
||||
frame BATTLEANIMOAMSET_55, 40
|
||||
frame BATTLEANIMOAMSET_54, 40
|
||||
frame BATTLEANIMOAMSET_53, 20
|
||||
dorepeat 4
|
||||
dowait 4
|
||||
frame BATTLEANIMOAMSET_53, 4
|
||||
dorepeat 4
|
||||
dowait 4
|
||||
frame BATTLEANIMOAMSET_53, 4
|
||||
dorepeat 4
|
||||
dowait 4
|
||||
frame BATTLEANIMOAMSET_53, 4
|
||||
delanim
|
||||
|
||||
@ -658,11 +658,11 @@ BattleAnimFrameData:
|
||||
delanim
|
||||
|
||||
.Frameset_45:
|
||||
dorepeat 0
|
||||
dowait 0
|
||||
frame BATTLEANIMOAMSET_14, 0
|
||||
frame BATTLEANIMOAMSET_15, 0
|
||||
frame BATTLEANIMOAMSET_14, 0, OAM_X_FLIP
|
||||
dorepeat 0
|
||||
dowait 0
|
||||
frame BATTLEANIMOAMSET_16, 0, OAM_X_FLIP
|
||||
frame BATTLEANIMOAMSET_15, 0
|
||||
frame BATTLEANIMOAMSET_16, 0
|
||||
@ -867,7 +867,7 @@ BattleAnimFrameData:
|
||||
delanim
|
||||
|
||||
.Frameset_68:
|
||||
dorepeat 15
|
||||
dowait 15
|
||||
frame BATTLEANIMOAMSET_84, 15
|
||||
frame BATTLEANIMOAMSET_85, 15
|
||||
frame BATTLEANIMOAMSET_29, 15
|
||||
@ -970,11 +970,11 @@ BattleAnimFrameData:
|
||||
frame BATTLEANIMOAMSET_9C, 2
|
||||
frame BATTLEANIMOAMSET_9D, 2
|
||||
frame BATTLEANIMOAMSET_9E, 8
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_9E, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_9E, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_9E, 2
|
||||
delanim
|
||||
|
||||
@ -1160,11 +1160,11 @@ BattleAnimFrameData:
|
||||
frame BATTLEANIMOAMSET_50, 1
|
||||
frame BATTLEANIMOAMSET_51, 1
|
||||
frame BATTLEANIMOAMSET_52, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_52, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_52, 2
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_52, 2
|
||||
delanim
|
||||
|
||||
@ -1178,11 +1178,11 @@ BattleAnimFrameData:
|
||||
frame BATTLEANIMOAMSET_50, 1, OAM_X_FLIP, OAM_Y_FLIP
|
||||
frame BATTLEANIMOAMSET_51, 1, OAM_X_FLIP, OAM_Y_FLIP
|
||||
frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP, OAM_Y_FLIP
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP, OAM_Y_FLIP
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP, OAM_Y_FLIP
|
||||
dorepeat 2
|
||||
dowait 2
|
||||
frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP, OAM_Y_FLIP
|
||||
delanim
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
BattleAnimOAMData:
|
||||
; entries correspond to BATTLEANIMOAMSET_* constants
|
||||
; vtile offset, length, pointer
|
||||
; vtile offset, data length, data pointer
|
||||
dbbw $00, 16, .OAMData_00 ; BATTLEANIMOAMSET_00
|
||||
dbbw $04, 9, .OAMData_01 ; BATTLEANIMOAMSET_01
|
||||
dbbw $08, 4, .OAMData_02 ; BATTLEANIMOAMSET_02
|
||||
|
@ -398,7 +398,7 @@ BattleAnim_ThrowPokeBall:
|
||||
anim_jump .Loop
|
||||
|
||||
.Click:
|
||||
anim_clearsprites
|
||||
anim_keepsprites
|
||||
anim_ret
|
||||
|
||||
.BreakFree:
|
||||
|
@ -129,12 +129,12 @@ SpriteAnimFrameData:
|
||||
|
||||
.Frameset_TextEntryCursor:
|
||||
frame SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR, 1
|
||||
dorepeat 1
|
||||
dowait 1
|
||||
dorestart
|
||||
|
||||
.Frameset_TextEntryCursorBig:
|
||||
frame SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR_BIG, 1
|
||||
dorepeat 1
|
||||
dowait 1
|
||||
dorestart
|
||||
|
||||
.Frameset_GameFreakLogo:
|
||||
@ -285,11 +285,11 @@ SpriteAnimFrameData:
|
||||
|
||||
; unused
|
||||
frame SPRITE_ANIM_OAMSET_UNUSED_4E, 3
|
||||
dorepeat 3
|
||||
dowait 3
|
||||
dorestart
|
||||
|
||||
.Frameset_Unused1C:
|
||||
dorepeat 32
|
||||
dowait 32
|
||||
endanim
|
||||
|
||||
.Frameset_Leaf:
|
||||
@ -299,9 +299,9 @@ SpriteAnimFrameData:
|
||||
.Frameset_CutTree:
|
||||
frame SPRITE_ANIM_OAMSET_TREE_1, 2
|
||||
frame SPRITE_ANIM_OAMSET_CUT_TREE_2, 16
|
||||
dorepeat 1
|
||||
dowait 1
|
||||
frame SPRITE_ANIM_OAMSET_CUT_TREE_3, 1
|
||||
dorepeat 1
|
||||
dowait 1
|
||||
frame SPRITE_ANIM_OAMSET_CUT_TREE_4, 1
|
||||
delanim
|
||||
|
||||
@ -483,7 +483,7 @@ SpriteAnimFrameData:
|
||||
endanim
|
||||
|
||||
.Frameset_IntroUnownF:
|
||||
dorepeat 0
|
||||
dowait 0
|
||||
endanim
|
||||
|
||||
.Frameset_CelebiLeft:
|
||||
|
@ -1,6 +1,6 @@
|
||||
SpriteAnimOAMData:
|
||||
; entries correspond to SPRITE_ANIM_OAMSET_* constants
|
||||
; vtile offset, pointer
|
||||
; vtile offset, data pointer
|
||||
dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_RED_WALK_1
|
||||
dbw $04, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_RED_WALK_2
|
||||
dbw $4c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_BUBBLE_1
|
||||
|
@ -91,6 +91,7 @@ Caveats:
|
||||
- Doesn't work with `anim_4gfx` and `anim_5gfx`.
|
||||
- This overwrites previously loaded animation graphics if you've loaded more than 53 tiles (2row) or 66 tiles (1row).
|
||||
|
||||
|
||||
## `$DB`: `anim_checkpokeball`
|
||||
|
||||
Sets `BattleAnimVar` to the result of [GetPokeBallWobble](/engine/battle_anims/pokeball_wobble.asm).
|
||||
@ -196,7 +197,11 @@ Sets `rOBP0` to *colors*.
|
||||
Sets `rOBP1` to *colors*.
|
||||
|
||||
|
||||
## `$F4`: `anim_clearsprites`
|
||||
## `$F4`: `anim_keepsprites`
|
||||
|
||||
Causes only the palettes to be cleared from the OAM memory when the animation ends, instead of clearing all of the OAM memory. This causes all objects to start using palette 0 (monochrome) when the animation script ends, and whatever objects were on the screen before the last `anim_ret` will stay on the screen.
|
||||
|
||||
This is only used for the Poke Ball animation.
|
||||
|
||||
|
||||
## `$F5`: `anim_0xf5`
|
||||
|
@ -112,10 +112,10 @@ RunBattleAnimScript:
|
||||
cp ROLLOUT
|
||||
jr nz, .not_rollout
|
||||
|
||||
ld a, $2e
|
||||
ld b, 5
|
||||
ld de, 4
|
||||
ld hl, wActiveBGEffects
|
||||
ld a, ANIM_BG_2E
|
||||
ld b, NUM_BG_EFFECTS
|
||||
ld de, BG_EFFECT_STRUCT_LENGTH
|
||||
ld hl, wBGEffect1Function
|
||||
.find
|
||||
cp [hl]
|
||||
jr z, .done
|
||||
@ -128,10 +128,10 @@ RunBattleAnimScript:
|
||||
|
||||
.done
|
||||
ld a, [wBattleAnimFlags]
|
||||
bit 0, a
|
||||
bit BATTLEANIM_STOP_F, a
|
||||
jr z, .playframe
|
||||
|
||||
call BattleAnim_ClearCGB_OAMFlags
|
||||
call BattleAnim_ClearOAM
|
||||
ret
|
||||
|
||||
BattleAnimClearHud:
|
||||
@ -232,16 +232,17 @@ Unreferenced_Functioncc220:
|
||||
call BattleAnimDelayFrame
|
||||
ret
|
||||
|
||||
BattleAnim_ClearCGB_OAMFlags:
|
||||
BattleAnim_ClearOAM:
|
||||
ld a, [wBattleAnimFlags]
|
||||
bit 3, a
|
||||
bit BATTLEANIM_KEEPSPRITES_F, a
|
||||
jr z, .delete
|
||||
|
||||
; Instead of deleting the sprites, make them all use palette 0 (monochrome)
|
||||
ld hl, wVirtualOAMSprite00Attributes
|
||||
ld c, NUM_SPRITE_OAM_STRUCTS
|
||||
.loop
|
||||
ld a, [hl]
|
||||
and $f0
|
||||
and ~PALETTE_MASK & ~VRAM_BANK_1
|
||||
ld [hli], a
|
||||
rept SPRITEOAMSTRUCT_LENGTH + -1
|
||||
inc hl
|
||||
@ -267,12 +268,12 @@ RunBattleAnimCommand:
|
||||
ret
|
||||
|
||||
.CheckTimer:
|
||||
ld a, [wBattleAnimDuration]
|
||||
ld a, [wBattleAnimDelay]
|
||||
and a
|
||||
jr z, .done
|
||||
|
||||
dec a
|
||||
ld [wBattleAnimDuration], a
|
||||
ld [wBattleAnimDelay], a
|
||||
and a
|
||||
ret
|
||||
|
||||
@ -289,17 +290,17 @@ RunBattleAnimCommand:
|
||||
|
||||
; Return from a subroutine.
|
||||
ld hl, wBattleAnimFlags
|
||||
bit 1, [hl]
|
||||
bit BATTLEANIM_IN_SUBROUTINE_F, [hl]
|
||||
jr nz, .do_anim
|
||||
|
||||
set 0, [hl]
|
||||
set BATTLEANIM_STOP_F, [hl]
|
||||
ret
|
||||
|
||||
.not_done_with_anim
|
||||
cp $d0
|
||||
cp anim_obj_command
|
||||
jr nc, .do_anim
|
||||
|
||||
ld [wBattleAnimDuration], a
|
||||
ld [wBattleAnimDelay], a
|
||||
ret
|
||||
|
||||
.do_anim
|
||||
@ -310,7 +311,7 @@ RunBattleAnimCommand:
|
||||
.DoCommand:
|
||||
; Execute battle animation command in [wBattleAnimByte].
|
||||
ld a, [wBattleAnimByte]
|
||||
sub $d0
|
||||
sub anim_obj_command
|
||||
|
||||
ld e, a
|
||||
ld d, 0
|
||||
@ -361,7 +362,7 @@ BattleAnimCommands::
|
||||
dw BattleAnimCmd_BGP
|
||||
dw BattleAnimCmd_OBP0
|
||||
dw BattleAnimCmd_OBP1
|
||||
dw BattleAnimCmd_ClearSprites
|
||||
dw BattleAnimCmd_KeepSprites
|
||||
dw BattleAnimCmd_F5
|
||||
dw BattleAnimCmd_F6
|
||||
dw BattleAnimCmd_F7
|
||||
@ -382,7 +383,7 @@ BattleAnimCmd_ED:
|
||||
|
||||
BattleAnimCmd_Ret:
|
||||
ld hl, wBattleAnimFlags
|
||||
res 1, [hl]
|
||||
res BATTLEANIM_IN_SUBROUTINE_F, [hl]
|
||||
ld hl, wBattleAnimParent
|
||||
ld e, [hl]
|
||||
inc hl
|
||||
@ -413,7 +414,7 @@ BattleAnimCmd_Call:
|
||||
inc hl
|
||||
ld [hl], d
|
||||
ld hl, wBattleAnimFlags
|
||||
set 1, [hl]
|
||||
set BATTLEANIM_IN_SUBROUTINE_F, [hl]
|
||||
ret
|
||||
|
||||
BattleAnimCmd_Jump:
|
||||
@ -430,12 +431,12 @@ BattleAnimCmd_Jump:
|
||||
BattleAnimCmd_Loop:
|
||||
call GetBattleAnimByte
|
||||
ld hl, wBattleAnimFlags
|
||||
bit 2, [hl]
|
||||
bit BATTLEANIM_IN_LOOP_F, [hl]
|
||||
jr nz, .continue_loop
|
||||
and a
|
||||
jr z, .perpetual
|
||||
dec a
|
||||
set 2, [hl]
|
||||
set BATTLEANIM_IN_LOOP_F, [hl]
|
||||
ld [wBattleAnimLoops], a
|
||||
.continue_loop
|
||||
ld hl, wBattleAnimLoops
|
||||
@ -456,7 +457,7 @@ BattleAnimCmd_Loop:
|
||||
|
||||
.return_from_loop
|
||||
ld hl, wBattleAnimFlags
|
||||
res 2, [hl]
|
||||
res BATTLEANIM_IN_LOOP_F, [hl]
|
||||
ld hl, wBattleAnimAddress
|
||||
ld e, [hl]
|
||||
inc hl
|
||||
@ -643,10 +644,13 @@ BattleAnimCmd_ResetObp0:
|
||||
ret
|
||||
|
||||
BattleAnimCmd_ClearObjs:
|
||||
; BUG: This function only clears the first 6+(2/3) objects
|
||||
|
||||
ld hl, wActiveAnimObjects
|
||||
ld a, $a0
|
||||
; ld a, wActiveAnimObjectsEnd - wActiveAnimObjects
|
||||
.loop
|
||||
ld [hl], $0
|
||||
ld [hl], 0
|
||||
inc hl
|
||||
dec a
|
||||
jr nz, .loop
|
||||
@ -693,7 +697,7 @@ endr
|
||||
|
||||
BattleAnimCmd_IncObj:
|
||||
call GetBattleAnimByte
|
||||
ld e, 10
|
||||
ld e, NUM_ANIM_OBJECTS
|
||||
ld bc, wActiveAnimObjects
|
||||
.loop
|
||||
ld hl, BATTLEANIMSTRUCT_INDEX
|
||||
@ -718,8 +722,8 @@ BattleAnimCmd_IncObj:
|
||||
|
||||
BattleAnimCmd_IncBGEffect:
|
||||
call GetBattleAnimByte
|
||||
ld e, 5
|
||||
ld bc, wActiveBGEffects
|
||||
ld e, NUM_BG_EFFECTS
|
||||
ld bc, wBGEffect1Function
|
||||
.loop
|
||||
ld hl, $0
|
||||
add hl, bc
|
||||
@ -743,7 +747,7 @@ BattleAnimCmd_IncBGEffect:
|
||||
|
||||
BattleAnimCmd_SetObj:
|
||||
call GetBattleAnimByte
|
||||
ld e, 10
|
||||
ld e, NUM_ANIM_OBJECTS
|
||||
ld bc, wActiveAnimObjects
|
||||
.loop
|
||||
ld hl, BATTLEANIMSTRUCT_INDEX
|
||||
@ -1152,9 +1156,9 @@ BattleAnimCmd_OAMOff:
|
||||
ldh [hOAMUpdate], a
|
||||
ret
|
||||
|
||||
BattleAnimCmd_ClearSprites:
|
||||
BattleAnimCmd_KeepSprites:
|
||||
ld hl, wBattleAnimFlags
|
||||
set 3, [hl]
|
||||
set BATTLEANIM_KEEPSPRITES_F, [hl]
|
||||
ret
|
||||
|
||||
BattleAnimCmd_F5:
|
||||
@ -1430,10 +1434,10 @@ BattleAnim_SetOBPals:
|
||||
ret
|
||||
|
||||
BattleAnim_UpdateOAM_All:
|
||||
ld a, $0
|
||||
ld a, 0
|
||||
ld [wBattleAnimOAMPointerLo], a
|
||||
ld hl, wActiveAnimObjects
|
||||
ld e, 10
|
||||
ld e, NUM_ANIM_OBJECTS
|
||||
.loop
|
||||
ld a, [hl]
|
||||
and a
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
ExecuteBGEffects:
|
||||
ld hl, wActiveBGEffects
|
||||
ld e, 5
|
||||
ld e, NUM_BG_EFFECTS
|
||||
.loop
|
||||
ld a, [hl]
|
||||
and a
|
||||
@ -23,7 +23,7 @@ ExecuteBGEffects:
|
||||
pop de
|
||||
pop hl
|
||||
.next
|
||||
ld bc, 4
|
||||
ld bc, BG_EFFECT_STRUCT_LENGTH
|
||||
add hl, bc
|
||||
dec e
|
||||
jr nz, .loop
|
||||
@ -31,12 +31,12 @@ ExecuteBGEffects:
|
||||
|
||||
QueueBGEffect:
|
||||
ld hl, wActiveBGEffects
|
||||
ld e, 5
|
||||
ld e, NUM_BG_EFFECTS
|
||||
.loop
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .load
|
||||
ld bc, 4
|
||||
ld bc, BG_EFFECT_STRUCT_LENGTH
|
||||
add hl, bc
|
||||
dec e
|
||||
jr nz, .loop
|
||||
@ -416,7 +416,7 @@ BattleBGEffect_BattlerObj_1Row:
|
||||
.zero
|
||||
call BGEffect_CheckFlyDigStatus
|
||||
jr z, .not_flying_digging
|
||||
ld hl, wNumActiveBattleAnims
|
||||
ld hl, wLastAnimObjectIndex
|
||||
inc [hl]
|
||||
call EndBattleBGEffect
|
||||
ret
|
||||
@ -483,7 +483,7 @@ BattleBGEffect_BattlerObj_2Row:
|
||||
.zero
|
||||
call BGEffect_CheckFlyDigStatus
|
||||
jr z, .not_flying_digging
|
||||
ld hl, wNumActiveBattleAnims
|
||||
ld hl, wLastAnimObjectIndex
|
||||
inc [hl]
|
||||
call EndBattleBGEffect
|
||||
ret
|
||||
|
@ -1,6 +1,6 @@
|
||||
QueueBattleAnimation:
|
||||
ld hl, wActiveAnimObjects
|
||||
ld e, 10
|
||||
ld e, NUM_ANIM_OBJECTS
|
||||
.loop
|
||||
ld a, [hl]
|
||||
and a
|
||||
@ -15,7 +15,7 @@ QueueBattleAnimation:
|
||||
.done
|
||||
ld c, l
|
||||
ld b, h
|
||||
ld hl, wNumActiveBattleAnims
|
||||
ld hl, wLastAnimObjectIndex
|
||||
inc [hl]
|
||||
call InitBattleAnimation
|
||||
ret
|
||||
@ -38,7 +38,7 @@ endr
|
||||
ld d, h
|
||||
ld hl, BATTLEANIMSTRUCT_INDEX
|
||||
add hl, bc
|
||||
ld a, [wNumActiveBattleAnims]
|
||||
ld a, [wLastAnimObjectIndex]
|
||||
ld [hli], a ; Index
|
||||
ld a, [de]
|
||||
inc de
|
||||
@ -80,32 +80,36 @@ endr
|
||||
BattleAnimOAMUpdate:
|
||||
call InitBattleAnimBuffer
|
||||
call GetBattleAnimFrame
|
||||
cp -3
|
||||
cp dowait_command
|
||||
jp z, .done
|
||||
cp -4
|
||||
cp delanim_command
|
||||
jp z, .delete
|
||||
|
||||
push af
|
||||
ld hl, wBattleAnimTempOAMFlags
|
||||
ld a, [wBattleAnimTempAddSubFlags]
|
||||
ld a, [wBattleAnimTempFrameOAMFlags]
|
||||
xor [hl]
|
||||
and $e0
|
||||
and PRIORITY | Y_FLIP | X_FLIP
|
||||
ld [hl], a
|
||||
pop af
|
||||
|
||||
push bc
|
||||
call GetBattleAnimOAMPointer
|
||||
ld a, [wBattleAnimTempTileID]
|
||||
add [hl]
|
||||
add [hl] ; tile offset
|
||||
ld [wBattleAnimTempTileID], a
|
||||
inc hl
|
||||
ld a, [hli]
|
||||
ld a, [hli] ; oam data length
|
||||
ld c, a
|
||||
ld a, [hli]
|
||||
ld a, [hli] ; oam data pointer
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld a, [wBattleAnimOAMPointerLo]
|
||||
ld e, a
|
||||
ld d, HIGH(wVirtualOAM)
|
||||
|
||||
.loop
|
||||
; Y Coord
|
||||
ld a, [wBattleAnimTempYCoord]
|
||||
ld b, a
|
||||
ld a, [wBattleAnimTempYOffset]
|
||||
@ -114,16 +118,17 @@ BattleAnimOAMUpdate:
|
||||
push hl
|
||||
ld a, [hl]
|
||||
ld hl, wBattleAnimTempOAMFlags
|
||||
bit 6, [hl]
|
||||
bit OAM_Y_FLIP, [hl]
|
||||
jr z, .no_yflip
|
||||
add $8
|
||||
xor $ff
|
||||
inc a
|
||||
|
||||
.no_yflip
|
||||
pop hl
|
||||
add b
|
||||
ld [de], a
|
||||
|
||||
; X Coord
|
||||
inc hl
|
||||
inc de
|
||||
ld a, [wBattleAnimTempXCoord]
|
||||
@ -134,43 +139,47 @@ BattleAnimOAMUpdate:
|
||||
push hl
|
||||
ld a, [hl]
|
||||
ld hl, wBattleAnimTempOAMFlags
|
||||
bit 5, [hl]
|
||||
bit OAM_X_FLIP, [hl]
|
||||
jr z, .no_xflip
|
||||
add $8
|
||||
xor $ff
|
||||
inc a
|
||||
|
||||
.no_xflip
|
||||
pop hl
|
||||
add b
|
||||
ld [de], a
|
||||
|
||||
; Tile ID
|
||||
inc hl
|
||||
inc de
|
||||
ld a, [wBattleAnimTempTileID]
|
||||
add BATTLEANIM_BASE_TILE
|
||||
add [hl]
|
||||
ld [de], a
|
||||
|
||||
; Attributes
|
||||
inc hl
|
||||
inc de
|
||||
ld a, [wBattleAnimTempOAMFlags]
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
xor b
|
||||
and $e0
|
||||
and PRIORITY | Y_FLIP | X_FLIP
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
and $10
|
||||
and OBP_NUM
|
||||
or b
|
||||
ld b, a
|
||||
ld a, [wBattleAnimTempPalette]
|
||||
and $f
|
||||
and (PRIORITY | Y_FLIP | X_FLIP | OBP_NUM) ^ $ff
|
||||
or b
|
||||
ld [de], a
|
||||
|
||||
inc hl
|
||||
inc de
|
||||
ld a, e
|
||||
ld [wBattleAnimOAMPointerLo], a
|
||||
cp $a0
|
||||
cp LOW(wVirtualOAMEnd)
|
||||
jr nc, .exit_set_carry
|
||||
dec c
|
||||
jr nz, .loop
|
||||
@ -193,10 +202,11 @@ InitBattleAnimBuffer:
|
||||
ld hl, BATTLEANIMSTRUCT_01
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and %10000000
|
||||
|
||||
and PRIORITY
|
||||
ld [wBattleAnimTempOAMFlags], a
|
||||
xor a
|
||||
ld [wBattleAnimTempAddSubFlags], a
|
||||
ld [wBattleAnimTempFrameOAMFlags], a
|
||||
ld hl, BATTLEANIMSTRUCT_PALETTE
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
@ -217,15 +227,18 @@ InitBattleAnimBuffer:
|
||||
ld [wBattleAnimTempXOffset], a
|
||||
ld a, [hli]
|
||||
ld [wBattleAnimTempYOffset], a
|
||||
|
||||
ldh a, [hBattleTurn]
|
||||
and a
|
||||
ret z
|
||||
|
||||
ld hl, BATTLEANIMSTRUCT_01
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
ld [wBattleAnimTempOAMFlags], a
|
||||
bit 0, [hl]
|
||||
ret z
|
||||
|
||||
ld hl, BATTLEANIMSTRUCT_XCOORD
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
|
@ -37,16 +37,16 @@ GetBattleAnimFrame:
|
||||
push af
|
||||
ld a, [hl]
|
||||
push hl
|
||||
and $3f
|
||||
and (Y_FLIP << 1 | X_FLIP << 1) ^ $ff
|
||||
ld hl, BATTLEANIMSTRUCT_DURATION
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
pop hl
|
||||
.okay
|
||||
ld a, [hl]
|
||||
and $c0
|
||||
and Y_FLIP << 1 | X_FLIP << 1 ; The << 1 is compensated in the "frame" macro
|
||||
srl a
|
||||
ld [wBattleAnimTempAddSubFlags], a
|
||||
ld [wBattleAnimTempFrameOAMFlags], a
|
||||
pop af
|
||||
ret
|
||||
|
||||
@ -55,6 +55,7 @@ GetBattleAnimFrame:
|
||||
ld hl, BATTLEANIMSTRUCT_DURATION
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
|
||||
ld hl, BATTLEANIMSTRUCT_FRAME
|
||||
add hl, bc
|
||||
dec [hl]
|
||||
|
@ -315,8 +315,8 @@ UpdateAnimFrame:
|
||||
AddOrSubtractY:
|
||||
push hl
|
||||
ld a, [hl]
|
||||
ld hl, wCurSpriteAddSubFlags
|
||||
bit 6, [hl]
|
||||
ld hl, wCurSpriteOAMFlags
|
||||
bit OAM_Y_FLIP, [hl]
|
||||
jr z, .ok
|
||||
; 8 - a
|
||||
add $8
|
||||
@ -330,8 +330,8 @@ AddOrSubtractY:
|
||||
AddOrSubtractX:
|
||||
push hl
|
||||
ld a, [hl]
|
||||
ld hl, wCurSpriteAddSubFlags
|
||||
bit 5, [hl] ; x flip
|
||||
ld hl, wCurSpriteOAMFlags
|
||||
bit OAM_X_FLIP, [hl]
|
||||
jr z, .ok
|
||||
; 8 - a
|
||||
add $8
|
||||
@ -343,20 +343,20 @@ AddOrSubtractX:
|
||||
ret
|
||||
|
||||
GetSpriteOAMAttr:
|
||||
ld a, [wCurSpriteAddSubFlags]
|
||||
ld a, [wCurSpriteOAMFlags]
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
xor b
|
||||
and $e0
|
||||
and PRIORITY | Y_FLIP | X_FLIP
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
and $1f
|
||||
and (PRIORITY | Y_FLIP | X_FLIP) ^ $ff
|
||||
or b
|
||||
ret
|
||||
|
||||
InitSpriteAnimBuffer:
|
||||
xor a
|
||||
ld [wCurSpriteAddSubFlags], a
|
||||
ld [wCurSpriteOAMFlags], a
|
||||
ld hl, SPRITEANIMSTRUCT_TILE_ID
|
||||
add hl, bc
|
||||
ld a, [hli]
|
||||
@ -436,7 +436,7 @@ GetSpriteAnimFrame:
|
||||
push af
|
||||
ld a, [hl]
|
||||
push hl
|
||||
and $3f
|
||||
and (Y_FLIP << 1 | X_FLIP << 1) ^ $ff
|
||||
ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET
|
||||
add hl, bc
|
||||
add [hl]
|
||||
@ -446,9 +446,9 @@ GetSpriteAnimFrame:
|
||||
pop hl
|
||||
.okay
|
||||
ld a, [hl]
|
||||
and $c0
|
||||
and Y_FLIP << 1 | X_FLIP << 1 ; The << 1 is compensated in the "frame" macro
|
||||
srl a
|
||||
ld [wCurSpriteAddSubFlags], a
|
||||
ld [wCurSpriteOAMFlags], a
|
||||
pop af
|
||||
ret
|
||||
|
||||
|
@ -174,3 +174,6 @@ limited_interpret_data EQUS "text_dots"
|
||||
link_wait_button EQUS "text_linkwaitbutton"
|
||||
current_day EQUS "text_today"
|
||||
text_jump EQUS "text_far"
|
||||
|
||||
; macros/scripts/battle_anims.asm
|
||||
anim_clearsprites EQUS "anim_keepsprites"
|
||||
|
@ -233,7 +233,7 @@ anim_obp1: MACRO
|
||||
ENDM
|
||||
|
||||
enum anim_clearsprites_command ; $f4
|
||||
anim_clearsprites: MACRO
|
||||
anim_keepsprites: MACRO
|
||||
db anim_clearsprites_command
|
||||
ENDM
|
||||
|
||||
|
@ -15,20 +15,20 @@ ENDM
|
||||
enum_start $fc
|
||||
|
||||
enum delanim_command ; $fc
|
||||
delanim: MACRO ; used for oam
|
||||
delanim: MACRO
|
||||
; Removes the object from the screen, as opposed to `endanim` which just stops all motion
|
||||
db delanim_command
|
||||
ENDM
|
||||
|
||||
enum dorepeat_command ; $fd
|
||||
dorepeat: MACRO
|
||||
db dorepeat_command
|
||||
db \1 ; #
|
||||
enum dowait_command ; $fd
|
||||
dowait: MACRO
|
||||
db dowait_command
|
||||
db \1 ; frames
|
||||
ENDM
|
||||
|
||||
enum setrepeat_command ; $fe
|
||||
setrepeat: MACRO
|
||||
db setrepeat_command
|
||||
db \1 ; #
|
||||
enum dorestart_command ; $fe
|
||||
dorestart: MACRO
|
||||
db dorestart_command
|
||||
ENDM
|
||||
|
||||
enum endanim_command ; $ff
|
||||
@ -36,9 +36,18 @@ endanim: MACRO
|
||||
db endanim_command
|
||||
ENDM
|
||||
|
||||
__enum__ = $fe
|
||||
|
||||
enum dorestart_command ; $fe
|
||||
dorestart: MACRO ; used for oam
|
||||
db dorestart_command
|
||||
; Used for pic animations
|
||||
__enum__ = $fd
|
||||
|
||||
enum dorepeat_command ; $fd
|
||||
dorepeat: MACRO
|
||||
db dorepeat_command
|
||||
db \1 ; command offset to jump to
|
||||
ENDM
|
||||
|
||||
enum setrepeat_command ; $fe
|
||||
setrepeat: MACRO
|
||||
db setrepeat_command
|
||||
db \1 ; amount of times to repeat
|
||||
ENDM
|
||||
|
8
wram.asm
8
wram.asm
@ -263,7 +263,7 @@ wCurIcon:: db ; c3b6
|
||||
wCurIconTile:: db
|
||||
wSpriteAnimAddrBackup::
|
||||
wSpriteAnimIDBuffer::
|
||||
wCurSpriteAddSubFlags::
|
||||
wCurSpriteOAMFlags::
|
||||
dw
|
||||
wCurAnimVTile:: db
|
||||
wCurAnimXCoord:: db
|
||||
@ -3045,11 +3045,11 @@ wBGEffect4:: battle_bg_effect wBGEffect4
|
||||
wBGEffect5:: battle_bg_effect wBGEffect5
|
||||
wActiveBGEffectsEnd::
|
||||
|
||||
wNumActiveBattleAnims:: db ; d40e
|
||||
wLastAnimObjectIndex:: db ; d40e
|
||||
|
||||
wBattleAnimFlags:: db ; d40f
|
||||
wBattleAnimAddress:: dw ; d410
|
||||
wBattleAnimDuration:: db ; d412
|
||||
wBattleAnimDelay:: db ; d412
|
||||
wBattleAnimParent:: dw ; d413
|
||||
wBattleAnimLoops:: db ; d415
|
||||
wBattleAnimVar:: db ; d416
|
||||
@ -3077,7 +3077,7 @@ wBattleAnimTempXCoord:: db
|
||||
wBattleAnimTempYCoord:: db
|
||||
wBattleAnimTempXOffset:: db
|
||||
wBattleAnimTempYOffset:: db
|
||||
wBattleAnimTempAddSubFlags:: db
|
||||
wBattleAnimTempFrameOAMFlags:: db
|
||||
wBattleAnimTempPalette:: db
|
||||
ENDU ; d422
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user