diff options
author | dannye <33dannye@gmail.com> | 2021-01-06 22:01:30 -0600 |
---|---|---|
committer | dannye <33dannye@gmail.com> | 2021-01-06 22:01:30 -0600 |
commit | 0dc8af64aab2658a882f73d34bd7a5cc6563f7a1 (patch) | |
tree | e9b1a552f849a7c4bef055725b018937b3f5c56c /src/engine/bank07.asm | |
parent | fec3f3580a54dbaa3dfb138398c92b37d6c58dee (diff) | |
parent | a99feeb46f165fd7c4419811be4b3f591d8f1dad (diff) |
Merge branch 'anims' of https://github.com/ElectroDeoxys/poketcg
Diffstat (limited to 'src/engine/bank07.asm')
-rw-r--r-- | src/engine/bank07.asm | 1529 |
1 files changed, 1409 insertions, 120 deletions
diff --git a/src/engine/bank07.asm b/src/engine/bank07.asm index 375a161..71d0131 100644 --- a/src/engine/bank07.asm +++ b/src/engine/bank07.asm @@ -153,7 +153,7 @@ Func_1c485: ; 1c485 (7:4485) .foundEmptyIndex ld a, b ld [wLoadedNPCTempIndex], a - ld a, [wd3b3] + ld a, [wNPCSpriteID] farcall CreateSpriteAndAnimBufferEntry jr c, .exit ld a, [wLoadedNPCTempIndex] @@ -598,41 +598,48 @@ Func_1c8ef: ; 1c8ef (7:48ef) ld a, [wTempAnimation] ld [wd4bf], a cp $61 - jp nc, $4b5e ; asm_007_4b5e + jp nc, Func_1cb5e + push hl push bc push de call Func_1cab3 ; hl: pointer - ld a, [wd421] + + ld a, [wAnimationsDisabled] or a jr z, .check_to_play_sfx - + ; animations are disabled push hl - ld bc, $0003 + ld bc, ANIM_SPRITE_ANIM_FLAGS add hl, bc ld a, [hl] - and %10000000 + ; if flag is set, play animation anyway + and (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) pop hl - jr z, .return + .check_to_play_sfx push hl - ld bc, $0004 + ld bc, ANIM_SOUND_FX_ID add hl, bc ld a, [hl] pop hl - or a jr z, .calc_addr call PlaySFX + .calc_addr +; this data field is always $00, +; so this calculation is unnecessary +; seems like there was supposed to be +; more than 1 function to handle animation push hl - ld bc, $0005 + ld bc, ANIM_HANDLER_FUNCTION add hl, bc ld a, [hl] rlca - add $48 + add LOW(.address) ; $48 ld l, a ; LO ld a, HIGH(.address) ; $49 adc 0 @@ -651,12 +658,14 @@ Func_1c8ef: ; 1c8ef (7:48ef) ret .address - dw Func_1c94a + dw .handler_func -Func_1c94a: ; 1c94a (7:494a) +.handler_func ; 1c94a (7:494a) +; if any of ANIM_SPRITE_ID, ANIM_PALETTE_ID and ANIM_SPRITE_ANIM_ID +; are 0, then return ld e, l ld d, h - ld c, 3 + ld c, ANIM_SPRITE_ANIM_ID + 1 .loop ld a, [de] or a @@ -664,167 +673,164 @@ Func_1c94a: ; 1c94a (7:494a) inc de dec c jr nz, .loop - ld a, [hli] + + ld a, [hli] ; ANIM_SPRITE_ID farcall CreateSpriteAndAnimBufferEntry ld a, [wWhichSprite] ld [wAnimationQueue], a ; push an animation to the queue + xor a - ld [wd4ca], a + ld [wVRAMTileOffset], a ld [wd4cb], a - ld a, [hli] - farcall $20, $4418 - ld a, [hli] + + ld a, [hli] ; ANIM_PALETTE_ID + farcall Func_80418 + ld a, [hli] ; ANIM_SPRITE_ANIM_ID push af - ld a, [hli] - ld [wd42b], a - call Func_1c980 + ld a, [hli] ; ANIM_SPRITE_ANIM_FLAGS + ld [wAnimFlags], a + call LoadAnimCoordsAndFlags pop af farcall StartNewSpriteAnimation or a - jr .return + jr .done .return_with_carry scf -.return +.done ret -Func_1c980: ; 1c980 (7:4980) +; loads the correct coordinates/flags for +; sprite animation in wAnimationQueue +LoadAnimCoordsAndFlags: ; 1c980 (7:4980) push hl push bc ld a, [wAnimationQueue] ld c, SPRITE_ANIM_ATTRIBUTES call GetSpriteAnimBufferProperty_SpriteInA - call Func_1c9a2 + call GetAnimCoordsAndFlags push af - and %01100000 + and (1 << SPRITE_ANIM_FLAG_6) | (1 << SPRITE_ANIM_FLAG_5) or [hl] ld [hli], a ld a, b - ld [hli], a - ld [hl], c + ld [hli], a ; SPRITE_ANIM_COORD_X + ld [hl], c ; SPRITE_ANIM_COORD_Y pop af - ld bc, $000c + ld bc, SPRITE_ANIM_FLAGS - SPRITE_ANIM_COORD_Y add hl, bc - ld c, a - and %00000011 + ld c, a ; useless + and (1 << SPRITE_ANIM_FLAG_Y_SUBTRACT) | (1 << SPRITE_ANIM_FLAG_X_SUBTRACT) or [hl] ld [hl], a pop bc pop hl ret -Func_1c9a2: ; 1c9a2 (7:49a2) +; outputs x and y coordinates for the sprite animation +; taking into account who the turn duelist is. +; also returns in a the allowed animation flags of +; the configuration that is selected. +; output: +; a = anim flags +; b = x coordinate +; c = y coordinate +GetAnimCoordsAndFlags: ; 1c9a2 (7:49a2) push hl ld c, 0 - ld a, [wd42b] - and %00000100 + ld a, [wAnimFlags] + and (1 << SPRITE_ANIM_FLAG_SPEED) jr nz, .calc_addr - ld a, [wd4ae] - add a + ld a, [wDuelAnimationScreen] + add a ; 2 * [wDuelAnimationScreen] ld c, a - add a - add c - add a + add a ; 4 * [wDuelAnimationScreen] + add c ; 6 * [wDuelAnimationScreen] + add a ; 12 * [wDuelAnimationScreen] ld c, a + ld a, [wd4af] cp PLAYER_TURN - jr z, .player_turn - - ld a, $06 + jr z, .player_side +; opponent side + ld a, 6 add c ld c, a -.player_turn +.player_side ld a, [wd4b0] add c ; a = [wd4b0] + c ld c, a ld b, 0 - ld hl, Data_1c9e0 + ld hl, AnimationCoordinatesIndex add hl, bc ld c, [hl] + .calc_addr ld a, c add a ; a = c * 2 add c ; a = c * 3 ld c, a ld b, 0 - ld hl, Data_1ca04 + ld hl, AnimationCoordinates add hl, bc - ld b, [hl] + ld b, [hl] ; x coord inc hl - ld c, [hl] + ld c, [hl] ; y coord inc hl - ld a, [wd42b] - and [hl] + ld a, [wAnimFlags] + and [hl] ; flags pop hl ret -Data_1c9e0: - db $01 - db $01 - db $01 - db $01 - db $01 - db $01 - db $02 - db $02 - db $02 - db $02 - db $02 - db $02 - db $03 - db $04 - db $05 - db $06 - db $07 - db $08 - db $03 - db $04 - db $05 - db $06 - db $07 - db $08 - db $09 - db $0a - db $0b - db $0c - db $0d - db $0e - db $09 - db $0a - db $0b - db $0c - db $0d - db $0e - -macro_1ca04: MACRO - dw \1 +AnimationCoordinatesIndex: +; animations in the Duel Main Scene + db $01, $01, $01, $01, $01, $01 ; player + db $02, $02, $02, $02, $02, $02 ; opponent + +; animations in the Player's Play Area, for each Play Area Pokemon + db $03, $04, $05, $06, $07, $08 ; player + db $03, $04, $05, $06, $07, $08 ; opponent + +; animations in the Opponent's Play Area, for each Play Area Pokemon + db $09, $0a, $0b, $0c, $0d, $0e ; player + db $09, $0a, $0b, $0c, $0d, $0e ; opponent + +anim_coords: MACRO + db \1 db \2 + db \3 ENDM -Data_1ca04: -; value(2), flag(1) - macro_1ca04 $5858, $08 - macro_1ca04 $5028, $00 - macro_1ca04 $3088, $63 - macro_1ca04 $4858, $00 - macro_1ca04 $6018, $00 - macro_1ca04 $6038, $00 - macro_1ca04 $6058, $00 - macro_1ca04 $6078, $00 - macro_1ca04 $6098, $00 - macro_1ca04 $5058, $00 - macro_1ca04 $2898, $00 - macro_1ca04 $2878, $00 - macro_1ca04 $2858, $00 - macro_1ca04 $2838, $00 - macro_1ca04 $2818, $00 - -Func_1ca31: ; 1ca31 (7:4a6b) +AnimationCoordinates: +; x coord, y coord, animation flags + anim_coords 88, 88, (1 << SPRITE_ANIM_FLAG_3) + +; animations in the Duel Main Scene + anim_coords 40, 80, $00 + anim_coords 136, 48, (1 << SPRITE_ANIM_FLAG_6) | (1 << SPRITE_ANIM_FLAG_5) | (1 << SPRITE_ANIM_FLAG_Y_SUBTRACT) | (1 << SPRITE_ANIM_FLAG_X_SUBTRACT) + +; animations in the Player's Play Area, for each Play Area Pokemon + anim_coords 88, 72, $00 + anim_coords 24, 96, $00 + anim_coords 56, 96, $00 + anim_coords 88, 96, $00 + anim_coords 120, 96, $00 + anim_coords 152, 96, $00 + +; animations in the Opponent's Play Area, for each Play Area Pokemon + anim_coords 88, 80, $00 + anim_coords 152, 40, $00 + anim_coords 120, 40, $00 + anim_coords 88, 40, $00 + anim_coords 56, 40, $00 + anim_coords 24, 40, $00 + +Func_1ca31: ; 1ca31 (7:4a31) push hl push bc ld a, [wd4ac] @@ -837,32 +843,78 @@ Func_1ca31: ; 1ca31 (7:4a6b) cp b jp z, .asm_007_4a6b ld [hl], a - ld b, 0 - ld hl, $d42c + + ld b, $00 + ld hl, wd42c add hl, bc ld a, [wTempAnimation] ld [hli], a - ld a, [wd4ae] + ld a, [wDuelAnimationScreen] ld [hli], a ld a, [wd4af] ld [hli], a ld a, [wd4b0] ld [hli], a - ld a, [$d4b1] + ld a, [wd4b1] ld [hli], a - ld a, [$d4b2] + ld a, [wd4b2] ld [hli], a - ld a, [$d4b3] + ld a, [wd4b3] ld [hli], a ld a, [wd4be] ld [hl], a + .asm_007_4a6b pop bc pop hl ret - INCROM $1ca6e, $1cab3 +Func_1ca6e: ; 1ca6e (7:4a6e) + push hl + push bc +.asm_1ca70 + ld a, [wd4ad] + ld b, a + ld a, [wd4ac] + cp b + jr z, .asm_1cab0 + + ld c, a + add $08 + and $7f + ld [wd4ac], a + + ld b, $00 + ld hl, wd42c + add hl, bc + ld a, [hli] + ld [wTempAnimation], a + ld a, [hli] + ld [wDuelAnimationScreen], a + ld a, [hli] + ld [wd4af], a + ld a, [hli] + ld [wd4b0], a + ld a, [hli] + ld [wd4b1], a + ld a, [hli] + ld [wd4b2], a + ld a, [hli] + ld [wd4b3], a + ld a, [hl] + ld [wd4be], a + + call Func_1c8ef + call CheckAnyAnimationPlaying + jr nc, .asm_1ca70 +.asm_1cab0 + pop bc + pop hl + ret +; 0x1cab3 + +; gets data from Animations for anim ID in a Func_1cab3: ; 1cab3 (7:4ab3) push bc ld a, [wTempAnimation] @@ -873,12 +925,64 @@ Func_1cab3: ; 1cab3 (7:4ab3) ld c, l add hl, hl ; hl = anim * 4 add hl, bc ; hl = anim * 6 - ld bc, $4e32 + ld bc, Animations add hl, bc pop bc ret - INCROM $1cac5, $1cb18 +Func_1cac5: ; 1cac5 (7:4ac5) + ld a, [wd42a] + cp $ff + jr nz, .asm_1cb03 + + ld a, [wd4c0] + or a + jr z, .asm_1cafb + cp $80 + jr z, .asm_1cb11 + ld hl, wAnimationQueue + ld c, $07 +.asm_1cadb + push af + push bc + ld a, [hl] + cp $ff + jr z, .asm_1caf4 + ld [wWhichSprite], a + farcall Func_12a13 + cp $ff + jr nz, .asm_1caf4 + farcall Func_129fa + ld a, $ff + ld [hl], a +.asm_1caf4 + pop bc + pop af + and [hl] + inc hl + dec c + jr nz, .asm_1cadb +.asm_1cafb + cp $ff + jr nz, .asm_1cb02 + call Func_1ca6e +.asm_1cb02 + ret + +.asm_1cb03 + ld hl, wd4b9 + ld a, [hli] + ld h, [hl] + ld l, a + call CallHL2 + ld a, [wd42a] + jr .asm_1cafb + +.asm_1cb11 + ld a, $ff + ld [wd4c0], a + jr .asm_1cafb +; 0x1cb18 Func_1cb18: ; 1cb18 (7:4b18) push hl @@ -924,7 +1028,236 @@ Func_1cb18: ; 1cb18 (7:4b18) jr .asm_1cb57 ; 0x1cb5e - INCROM $1cb5e, $1ccbc +Func_1cb5e: ; 1cb5e (7:4b5e) + cp $96 + jp nc, Func_1ce03 + cp $8c + jp nz, Func_1cc76 + jr .asm_1cb6a ; redundant +.asm_1cb6a + ld a, [wd4b2] + cp $03 + jr nz, .asm_1cb76 + ld a, [wd4b1] + cp $e8 +.asm_1cb76 + ret nc + + xor a + ld [wd4b8], a + ld [wVRAMTileOffset], a + ld [wd4cb], a + + ld a, $25 + farcall Func_80418 + call Func_1cba6 + + ld hl, wd4b3 + bit 0, [hl] + call nz, Func_1cc3e + + ld a, $12 + ld [wd4b8], a + bit 1, [hl] + call nz, Func_1cc4e + + bit 2, [hl] + call nz, Func_1cc66 + + xor a + ld [wd4b3], a + ret +; 0x1cba6 + +Func_1cba6: ; 1cba6 (7:4ba6) + call Func_1cc03 + xor a + ld [wd4b7], a + + ld hl, wd4b4 + ld de, wAnimationQueue + 1 +.asm_1cbb3 + push hl + push de + ld a, [hl] + or a + jr z, .asm_1cbbc + call Func_1cbcc + +.asm_1cbbc + pop de + pop hl + inc hl + inc de + ld a, [wd4b7] + inc a + ld [wd4b7], a + cp $03 + jr c, .asm_1cbb3 + ret +; 0x1cbcc + +Func_1cbcc: ; 1cbcc (7:4bcc) + push af + ld a, SPRITE_DUEL_4 + farcall CreateSpriteAndAnimBufferEntry + ld a, [wWhichSprite] + ld [de], a + ld a, (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) + ld [wAnimFlags], a + ld c, SPRITE_ANIM_COORD_X + call GetSpriteAnimBufferProperty + call GetAnimCoordsAndFlags + + ld a, [wd4b7] + add $fd + ld e, a + ld a, $4b + adc 0 + ld d, a + ld a, [de] + add b + + ld [hli], a ; SPRITE_ANIM_COORD_X + ld [hl], c ; SPRITE_ANIM_COORD_Y + + ld a, [wd4b8] + ld c, a + pop af + farcall Func_12ac9 + ret +; 0x1cbfd + + INCROM $1cbfd, $1cc03 + +Func_1cc03: ; 1cc03 (7:4c03) + ld a, [wd4b1] + ld l, a + ld a, [wd4b2] + ld h, a + + ld de, wd4b4 + ld bc, -100 + call .Func_1cc2f + ld bc, -10 + call .Func_1cc2f + + ld a, l + add $4f + ld [de], a + ld hl, wd4b4 + ld c, 2 +.asm_1cc23 + ld a, [hl] + cp $4f + jr nz, .asm_1cc2e + ld [hl], $00 + inc hl + dec c + jr nz, .asm_1cc23 +.asm_1cc2e + ret +; 0x1cc2f + +.Func_1cc2f + ld a, $4e +.loop + inc a + add hl, bc + jr c, .loop + + ld [de], a + inc de + ld a, l + sub c + ld l, a + ld a, h + sbc b + ld h, a + ret +; 0x1cc3e + +Func_1cc3e: ; 1cc3e (7:4c3e) + push hl + ld a, $03 + ld [wd4b7], a + ld de, wAnimationQueue + 4 + ld a, $5b + call Func_1cbcc + pop hl + ret +; 0x1cc4e + +Func_1cc4e: ; 1cc4e (7:4c4e) + push hl + ld a, $04 + ld [wd4b7], a + ld de, wAnimationQueue + 5 + ld a, $5a + call Func_1cbcc + ld a, [wd4b8] + add $12 + ld [wd4b8], a + pop hl + ret +; 0x1cc66 + +Func_1cc66: ; 1cc66 (7:4c66) + push hl + ld a, $05 + ld [wd4b7], a + ld de, wAnimationQueue + 6 + ld a, $59 + call Func_1cbcc + pop hl + ret +; 0x1cc76 + +Func_1cc76: ; 1cc76 (7:4c76) + ld a, [wAnimationsDisabled] + or a + jr nz, .asm_1cc9e + ld a, [wTempAnimation] + ld [wd42a], a + sub $61 + add a + add a + ld c, a + ld b, $00 + ld hl, Data_1cc9f + add hl, bc + ld a, [hli] + ld [wd4b9], a + ld c, a + ld a, [hli] + ld [wd4b9 + 1], a + ld b, a + ld a, [hl] + ld [wd4bb], a + call CallBC +.asm_1cc9e + ret +; 0x1cc9f + +macro_1cc9f: MACRO + dw \1 + db \2 + db \3 +ENDM + +Data_1cc9f: ; 1cc9f (7:4c9f) + macro_1cc9f Func_1cce4, $18, $00 + macro_1cc9f Func_1cce9, $20, $00 + macro_1cc9f Func_1cd10, $18, $00 + macro_1cc9f Func_1cd15, $20, $00 + macro_1cc9f Func_1cd76, $08, $00 + macro_1cc9f Func_1cdc3, $3f, $00 + +Func_1ccb7: ; 1ccb7 (7:4cb7) + ld a, [wd4bb] + or a + ret nz + ; fallthrough Func_1ccbc: ; 1ccbc (7:4cbc) ld a, $ff @@ -941,7 +1274,963 @@ Func_1ccbc: ; 1ccbc (7:4cbc) ret ; 0x1ccd4 - INCROM $1ccd4, $1d078 + INCROM $1ccd4, $1cce4 + +Func_1cce4: ; 1cce4 (7:4ce4) + ld hl, Data_1cd55 + jr Func_1ccee + +Func_1cce9: ; 1cce9 (7:4ce9) + ld hl, Data_1cd61 + jr Func_1ccee + +Func_1ccee: ; 1ccee (7:4cee) + ld a, l + ld [wd4bc], a + ld a, h + ld [wd4bc + 1], a + + ld hl, wd4b9 + ld [hl], LOW(.asm_1ccff) + inc hl + ld [hl], HIGH(.asm_1ccff) + ret + +.asm_1ccff + call Func_1cd71 + call Func_1cd3c + jp nc, Func_1ccb7 + ldh a, [hSCX] + add [hl] + ldh [hSCX], a + jp Func_1ccb7 +; 0x1cd10 + +Func_1cd10: ; 1cd10 (7:4d10) + ld hl, Data_1cd55 + jr Func_1cd1a + +Func_1cd15: ; 1cd15 (7:4d15) + ld hl, Data_1cd61 + jr Func_1cd1a + +Func_1cd1a: ; 1cd1a (7:4d1a) + ld a, l + ld [wd4bc], a + ld a, h + ld [wd4bc + 1], a + ld hl, wd4b9 + ld [hl], LOW(.asm_1cd2b) + inc hl + ld [hl], HIGH(.asm_1cd2b) + ret + +.asm_1cd2b + call Func_1cd71 + call Func_1cd3c + jp nc, Func_1ccb7 + ldh a, [hSCY] + add [hl] + ldh [hSCY], a + jp Func_1ccb7 +; 0x1cd3c + +Func_1cd3c: ; 1cd3c (7:4d3c) + ld hl, wd4bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wd4bb] + cp [hl] + ret nc + inc hl + push hl + inc hl + ld a, l + ld [wd4bc], a + ld a, h + ld [wd4bc + 1], a + pop hl + scf + ret +; 0x1cd55 + +Data_1cd55: ; 1cd55 (7:4d55) + db $15, $02, $11, $fe, $0d, $02, $09, $fe, $05, $01, $01, $ff + +Data_1cd61: ; 1cd61 (7:4d61) + db $1d, $04, $19, $fc, $15, $04, $11, $fc, $0d, $03, $09, $fd, $05, $02, $01, $fe + +Func_1cd71: ; 1cd71 (7:4d71) + ld hl, wd4bb + dec [hl] + ret +; 0x1cd76 + +Func_1cd76: ; 1cd76 (7:4d76) + ld hl, wd4b9 + ld [hl], $a3 + inc hl + ld [hl], $4d + ld a, [wBGP] + ld [wd4bc], a + ld hl, wBackgroundPalettesCGB + ld de, wd297 + ld bc, 8 palettes + call CopyDataHLtoDE_SaveRegisters + ld de, $7fff + ld hl, wBackgroundPalettesCGB + ld bc, $20 + call FillMemoryWithDE + xor a + call SetBGP + call FlushAllPalettes + call Func_1cd71 + ld a, [wd4bb] + or a + ret nz + ld hl, wd297 + ld de, wBackgroundPalettesCGB + ld bc, 8 palettes + call CopyDataHLtoDE_SaveRegisters + ld a, [wd4bc] + call SetBGP + call FlushAllPalettes + jp Func_1ccbc +; 0x1cdc3 + +Func_1cdc3: ; 1cdc3 (7:4dc3) + ld hl, wd4b9 + ld [hl], $df + inc hl + ld [hl], $4d + xor a + ld [wApplyBGScroll], a + ld hl, $cace + ld [hl], $a6 + inc hl + ld [hl], $3e + ld a, $01 + ld [wBGScrollMod], a + call EnableInt_LYCoincidence + ld a, [$d4bb] + srl a + srl a + srl a + and $07 + ld c, a + ld b, $00 + ld hl, $4dfb + add hl, bc + ld a, [hl] + ld [wBGScrollMod], a + call Func_1cd71 + jp Func_1ccb7 +; 0x1cdfb + + INCROM $1cdfb, $1ce03 + +Func_1ce03: ; 1ce03 (7:4e03) + cp $9e + jr z, .asm_1ce17 + sub $96 + add a + ld c, a + ld b, $00 + ld hl, $4e22 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + jp Func_3bb5 +.asm_1ce17 + ld a, [wd4b1] + ld l, a + ld a, [wd4b2] + ld h, a + jp Func_3bb5 +; 0x1ce22 + + INCROM $1ce22, $1ce32 + +; data for each animation ID (see src/constants/sprite_constants.asm) +Animations: ; 1ce32 (7:4e32) + ; DUEL_ANIM_NONE + db $00 ; sprite ID + db $00 ; palette ID + db $00 ; anim ID + db $00 ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_GLOW + db SPRITE_DUEL_GLOW ; sprite ID + db $1f ; palette ID + db $47 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags + db $11 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_2 + db SPRITE_DUEL_1 ; sprite ID + db $20 ; palette ID + db $48 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags + db $12 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_SLEEP + db SPRITE_DUEL_2 ; sprite ID + db $21 ; palette ID + db $49 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags + db $13 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_4 + db SPRITE_DUEL_55 ; sprite ID + db $22 ; palette ID + db $4a ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags + db $14 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_POISON + db SPRITE_DUEL_58 ; sprite ID + db $23 ; palette ID + db $4b ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags + db $15 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_6 + db SPRITE_DUEL_3 ; sprite ID + db $24 ; palette ID + db $4c ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags + db $16 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_HIT + db SPRITE_DUEL_3 ; sprite ID + db $24 ; palette ID + db $4d ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags + db $16 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_8 + db SPRITE_DUEL_3 ; sprite ID + db $24 ; palette ID + db $4e ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags + db $17 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_SHOW_DAMAGE + db SPRITE_DUEL_4 ; sprite ID + db $25 ; palette ID + db $00 ; anim ID + db $00 ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_THUNDER_SHOCK + db SPRITE_DUEL_5 ; sprite ID + db $26 ; palette ID + db $5c ; anim ID + db $00 ; anim flags + db $18 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_11 + db SPRITE_DUEL_6 ; sprite ID + db $27 ; palette ID + db $5e ; anim ID + db $00 ; anim flags + db $19 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_12 + db SPRITE_DUEL_59 ; sprite ID + db $28 ; palette ID + db $5f ; anim ID + db $00 ; anim flags + db $1a ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_13 + db SPRITE_DUEL_7 ; sprite ID + db $29 ; palette ID + db $60 ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $1b ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_14 + db SPRITE_DUEL_8 ; sprite ID + db $2a ; palette ID + db $61 ; anim ID + db $00 ; anim flags + db $1c ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_15 + db SPRITE_DUEL_8 ; sprite ID + db $2a ; palette ID + db $62 ; anim ID + db $00 ; anim flags + db $1d ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_16 + db SPRITE_DUEL_9 ; sprite ID + db $2b ; palette ID + db $63 ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $1e ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_17 + db SPRITE_DUEL_10 ; sprite ID + db $2c ; palette ID + db $64 ; anim ID + db $00 ; anim flags + db $1f ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_18 + db SPRITE_DUEL_61 ; sprite ID + db $2d ; palette ID + db $69 ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $20 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_19 + db SPRITE_DUEL_11 ; sprite ID + db $2e ; palette ID + db $6a ; anim ID + db $00 ; anim flags + db $21 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_20 + db SPRITE_DUEL_12 ; sprite ID + db $2f ; palette ID + db $6b ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $22 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_21 + db SPRITE_DUEL_13 ; sprite ID + db $30 ; palette ID + db $6c ; anim ID + db $00 ; anim flags + db $23 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_22 + db SPRITE_DUEL_62 ; sprite ID + db $31 ; palette ID + db $6d ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $24 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_23 + db SPRITE_DUEL_14 ; sprite ID + db $32 ; palette ID + db $6e ; anim ID + db $00 ; anim flags + db $25 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_24 + db SPRITE_DUEL_15 ; sprite ID + db $33 ; palette ID + db $6f ; anim ID + db $00 ; anim flags + db $26 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_25 + db SPRITE_DUEL_16 ; sprite ID + db $34 ; palette ID + db $70 ; anim ID + db (1 << SPRITE_ANIM_FLAG_6) | (1 << SPRITE_ANIM_FLAG_Y_SUBTRACT) ; anim flags + db $27 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_26 + db SPRITE_DUEL_17 ; sprite ID + db $35 ; palette ID + db $71 ; anim ID + db (1 << SPRITE_ANIM_FLAG_6) | (1 << SPRITE_ANIM_FLAG_Y_SUBTRACT) ; anim flags + db $28 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_27 + db SPRITE_DUEL_18 ; sprite ID + db $36 ; palette ID + db $72 ; anim ID + db $00 ; anim flags + db $29 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_28 + db SPRITE_DUEL_18 ; sprite ID + db $36 ; palette ID + db $73 ; anim ID + db $00 ; anim flags + db $2a ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_29 + db SPRITE_DUEL_19 ; sprite ID + db $37 ; palette ID + db $74 ; anim ID + db $00 ; anim flags + db $2b ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_30 + db SPRITE_DUEL_19 ; sprite ID + db $37 ; palette ID + db $75 ; anim ID + db $00 ; anim flags + db $52 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_31 + db SPRITE_DUEL_19 ; sprite ID + db $37 ; palette ID + db $76 ; anim ID + db $00 ; anim flags + db $53 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_32 + db SPRITE_DUEL_20 ; sprite ID + db $38 ; palette ID + db $77 ; anim ID + db (1 << SPRITE_ANIM_FLAG_5) | (1 << SPRITE_ANIM_FLAG_X_SUBTRACT) ; anim flags + db $2c ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_33 + db SPRITE_DUEL_21 ; sprite ID + db $39 ; palette ID + db $78 ; anim ID + db $00 ; anim flags + db $2d ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_34 + db SPRITE_DUEL_22 ; sprite ID + db $3a ; palette ID + db $7a ; anim ID + db $00 ; anim flags + db $2d ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_35 + db SPRITE_DUEL_23 ; sprite ID + db $3b ; palette ID + db $7b ; anim ID + db $00 ; anim flags + db $2e ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_FURY_SWIPES + db SPRITE_DUEL_21 ; sprite ID + db $39 ; palette ID + db $79 ; anim ID + db $00 ; anim flags + db $2f ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_37 + db SPRITE_DUEL_24 ; sprite ID + db $3c ; palette ID + db $7c ; anim ID + db (1 << SPRITE_ANIM_FLAG_5) | (1 << SPRITE_ANIM_FLAG_X_SUBTRACT) ; anim flags + db $30 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_38 + db SPRITE_DUEL_25 ; sprite ID + db $3d ; palette ID + db $7d ; anim ID + db $00 ; anim flags + db $31 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_39 + db SPRITE_DUEL_26 ; sprite ID + db $3e ; palette ID + db $7e ; anim ID + db $00 ; anim flags + db $32 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_40 + db SPRITE_DUEL_27 ; sprite ID + db $3f ; palette ID + db $7f ; anim ID + db $00 ; anim flags + db $33 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_41 + db SPRITE_DUEL_28 ; sprite ID + db $40 ; palette ID + db $80 ; anim ID + db $00 ; anim flags + db $34 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_42 + db SPRITE_DUEL_29 ; sprite ID + db $41 ; palette ID + db $81 ; anim ID + db $00 ; anim flags + db $35 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_43 + db SPRITE_DUEL_56 ; sprite ID + db $42 ; palette ID + db $82 ; anim ID + db $00 ; anim flags + db $36 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_44 + db SPRITE_DUEL_30 ; sprite ID + db $43 ; palette ID + db $83 ; anim ID + db $00 ; anim flags + db $37 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_45 + db SPRITE_DUEL_31 ; sprite ID + db $44 ; palette ID + db $84 ; anim ID + db $00 ; anim flags + db $38 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_46 + db SPRITE_DUEL_32 ; sprite ID + db $45 ; palette ID + db $85 ; anim ID + db $00 ; anim flags + db $39 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_47 + db SPRITE_DUEL_33 ; sprite ID + db $46 ; palette ID + db $86 ; anim ID + db $00 ; anim flags + db $3a ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_48 + db SPRITE_DUEL_34 ; sprite ID + db $47 ; palette ID + db $87 ; anim ID + db (1 << SPRITE_ANIM_FLAG_5) | (1 << SPRITE_ANIM_FLAG_X_SUBTRACT) ; anim flags + db $3b ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_49 + db SPRITE_DUEL_35 ; sprite ID + db $48 ; palette ID + db $88 ; anim ID + db $00 ; anim flags + db $3c ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_50 + db SPRITE_DUEL_66 ; sprite ID + db $49 ; palette ID + db $89 ; anim ID + db $00 ; anim flags + db $3d ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_51 + db SPRITE_DUEL_36 ; sprite ID + db $4a ; palette ID + db $8a ; anim ID + db $00 ; anim flags + db $3e ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_52 + db SPRITE_DUEL_37 ; sprite ID + db $4b ; palette ID + db $8b ; anim ID + db $00 ; anim flags + db $3f ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_53 + db SPRITE_DUEL_57 ; sprite ID + db $4c ; palette ID + db $8c ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $40 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_54 + db SPRITE_DUEL_38 ; sprite ID + db $4d ; palette ID + db $8d ; anim ID + db $00 ; anim flags + db $41 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_55 + db SPRITE_DUEL_39 ; sprite ID + db $4e ; palette ID + db $8e ; anim ID + db $00 ; anim flags + db $42 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_56 + db SPRITE_DUEL_40 ; sprite ID + db $4f ; palette ID + db $8f ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $43 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_57 + db SPRITE_DUEL_41 ; sprite ID + db $50 ; palette ID + db $90 ; anim ID + db $00 ; anim flags + db $44 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_58 + db SPRITE_DUEL_42 ; sprite ID + db $51 ; palette ID + db $92 ; anim ID + db $00 ; anim flags + db $45 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_59 + db SPRITE_DUEL_43 ; sprite ID + db $52 ; palette ID + db $93 ; anim ID + db $00 ; anim flags + db $46 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_60 + db SPRITE_DUEL_44 ; sprite ID + db $53 ; palette ID + db $94 ; anim ID + db $00 ; anim flags + db $47 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_61 + db SPRITE_DUEL_44 ; sprite ID + db $53 ; palette ID + db $95 ; anim ID + db $00 ; anim flags + db $48 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_HEAL + db SPRITE_DUEL_60 ; sprite ID + db $54 ; palette ID + db $97 ; anim ID + db $00 ; anim flags + db $49 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_63 + db SPRITE_DUEL_64 ; sprite ID + db $55 ; palette ID + db $99 ; anim ID + db $00 ; anim flags + db $4a ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_64 + db SPRITE_DUEL_29 ; sprite ID + db $56 ; palette ID + db $81 ; anim ID + db $00 ; anim flags + db $4b ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_65 + db SPRITE_DUEL_44 ; sprite ID + db $53 ; palette ID + db $96 ; anim ID + db $00 ; anim flags + db $47 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_66 + db SPRITE_DUEL_3 ; sprite ID + db $24 ; palette ID + db $4d ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags + db $16 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_67 + db SPRITE_DUEL_3 ; sprite ID + db $24 ; palette ID + db $4e ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags + db $17 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_68 + db SPRITE_DUEL_5 ; sprite ID + db $26 ; palette ID + db $5c ; anim ID + db $00 ; anim flags + db $18 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_69 + db SPRITE_DUEL_62 ; sprite ID + db $31 ; palette ID + db $6d ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $24 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_70 + db SPRITE_DUEL_45 ; sprite ID + db $57 ; palette ID + db $9a ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) ; anim flags + db $11 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_71 + db SPRITE_DUEL_10 ; sprite ID + db $2c ; palette ID + db $65 ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $5c ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_72 + db SPRITE_DUEL_10 ; sprite ID + db $2c ; palette ID + db $66 ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_73 + db SPRITE_DUEL_60 ; sprite ID + db $54 ; palette ID + db $98 ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $4c ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_74 + db SPRITE_DUEL_41 ; sprite ID + db $50 ; palette ID + db $91 ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $4d ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_75 + db SPRITE_DUEL_46 ; sprite ID + db $58 ; palette ID + db $9b ; anim ID + db $00 ; anim flags + db $4e ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_76 + db SPRITE_DUEL_47 ; sprite ID + db $59 ; palette ID + db $9c ; anim ID + db $00 ; anim flags + db $4f ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_77 + db SPRITE_DUEL_48 ; sprite ID + db $5a ; palette ID + db $9d ; anim ID + db $00 ; anim flags + db $50 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_78 + db SPRITE_DUEL_10 ; sprite ID + db $2c ; palette ID + db $67 ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $51 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_79 + db SPRITE_DUEL_10 ; sprite ID + db $2c ; palette ID + db $68 ; anim ID + db (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $51 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_80 + db SPRITE_DUEL_49 ; sprite ID + db $5b ; palette ID + db $9e ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_PLAYER_SHUFFLE + db SPRITE_DUEL_49 ; sprite ID + db $5b ; palette ID + db $9f ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $07 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_OPP_SHUFFLE + db SPRITE_DUEL_49 ; sprite ID + db $5b ; palette ID + db $a0 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $07 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_BOTH_SHUFFLE + db SPRITE_DUEL_49 ; sprite ID + db $5b ; palette ID + db $a1 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $07 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_84 + db SPRITE_DUEL_49 ; sprite ID + db $5b ; palette ID + db $a2 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_BOTH_DRAW + db SPRITE_DUEL_49 ; sprite ID + db $5b ; palette ID + db $a3 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_PLAYER_DRAW + db SPRITE_DUEL_49 ; sprite ID + db $5b ; palette ID + db $a4 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_OPP_DRAW + db SPRITE_DUEL_49 ; sprite ID + db $5b ; palette ID + db $a5 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_COIN_SPIN + db SPRITE_DUEL_50 ; sprite ID + db $5c ; palette ID + db $a7 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_COIN_TOSS1 + db SPRITE_DUEL_50 ; sprite ID + db $5c ; palette ID + db $a8 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $0b ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_COIN_TOSS2 + db SPRITE_DUEL_50 ; sprite ID + db $5c ; palette ID + db $a9 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_3) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $0b ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_COIN_TAILS + db SPRITE_DUEL_50 ; sprite ID + db $5c ; palette ID + db $aa ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_COIN_HEADS + db SPRITE_DUEL_50 ; sprite ID + db $5c ; palette ID + db $ab ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_DUEL_WIN + db SPRITE_DUEL_WON_LOST_DRAW ; sprite ID + db $5d ; palette ID + db $ac ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_DUEL_LOSS + db SPRITE_DUEL_WON_LOST_DRAW ; sprite ID + db $5d ; palette ID + db $ad ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_DUEL_DRAW + db SPRITE_DUEL_WON_LOST_DRAW ; sprite ID + db $5d ; palette ID + db $ae ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function + + ; DUEL_ANIM_96 + db SPRITE_DUEL_49 ; sprite ID + db $5b ; palette ID + db $a6 ; anim ID + db (1 << SPRITE_ANIM_FLAG_UNSKIPPABLE) | (1 << SPRITE_ANIM_FLAG_SPEED) ; anim flags + db $00 ; sound FX ID + db $00 ; handler function +; 0x1d078 Func_1d078: ; 1d078 (7:5078) ld a, [wd627] |