summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/constants/sprite_constants.asm6
-rw-r--r--src/engine/bank01.asm4
-rw-r--r--src/engine/bank04.asm6
-rw-r--r--src/engine/bank06.asm22
-rw-r--r--src/engine/bank07.asm484
-rw-r--r--src/engine/home.asm1
-rw-r--r--src/wram.asm10
7 files changed, 280 insertions, 253 deletions
diff --git a/src/constants/sprite_constants.asm b/src/constants/sprite_constants.asm
index d61dbe9..dbc2e40 100644
--- a/src/constants/sprite_constants.asm
+++ b/src/constants/sprite_constants.asm
@@ -158,3 +158,9 @@ SPRITE_FRAME_OFFSET_SIZE EQU 4
const ANIM_SPRITE_ANIM_FLAGS
const ANIM_SOUND_FX_ID
const ANIM_HANDLER_FUNCTION
+
+; Animation duel screen constants (see wDuelAnimationScreen)
+ const_def
+ const DUEL_ANIM_SCREEN_MAIN_SCENE
+ const DUEL_ANIM_SCREEN_PLAYER_PLAY_AREA
+ const DUEL_ANIM_SCREEN_OPP_PLAY_AREA
diff --git a/src/engine/bank01.asm b/src/engine/bank01.asm
index 9f54bb1..6cdca34 100644
--- a/src/engine/bank01.asm
+++ b/src/engine/bank01.asm
@@ -6894,8 +6894,8 @@ Func_6cab: ; 6cab (1:6cab)
.asm_6ccb
xor a
ld [wd4b0], a
- ld a, $00
- ld [wd4ae], a
+ ld a, DUEL_ANIM_SCREEN_MAIN_SCENE
+ ld [wDuelAnimationScreen], a
pop af
call Func_3b6a
.asm_6cd8
diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm
index 439ab52..c3f423d 100644
--- a/src/engine/bank04.asm
+++ b/src/engine/bank04.asm
@@ -494,7 +494,7 @@ LoadOverworldMapSelection: ; 10f61 (4:4f61)
INCLUDE "data/overworld_indexes.asm"
Func_10fbc: ; 10fbc (4:4fbc)
- ld a, $25
+ ld a, SPRITE_OW_MAP_OAM
farcall CreateSpriteAndAnimBufferEntry
ld c, SPRITE_ANIM_COORD_X
call GetSpriteAnimBufferProperty
@@ -517,7 +517,7 @@ Func_10fde: ; 10fde (4:4fde)
ld [wd33d], a
xor a
ld [wd33e], a
- ld a, $25
+ ld a, SPRITE_OW_MAP_OAM
call CreateSpriteAndAnimBufferEntry
ld a, [wWhichSprite]
ld [wd33b], a
@@ -859,7 +859,7 @@ LoadNPCSpriteData: ; 11857 (4:5857)
ld a, [hli]
ld [wTempNPC], a
ld a, [hli]
- ld [wd3b3], a
+ ld [wNPCSpriteID], a
ld a, [hli]
ld [wd3b1], a
ld a, [hli]
diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm
index 2260d7e..addf336 100644
--- a/src/engine/bank06.asm
+++ b/src/engine/bank06.asm
@@ -1073,8 +1073,8 @@ Func_18f9c: ; 18f9c (6:4f9c)
call Func_3b21
pop de
push de
- ld a, $00
- ld [wd4ae], a
+ ld a, DUEL_ANIM_SCREEN_MAIN_SCENE
+ ld [wDuelAnimationScreen], a
ld a, $01
ld [$d4b3], a
xor a
@@ -1212,8 +1212,8 @@ Func_1909d: ; 1909d (6:509d)
jr z, .asm_50ad
cp $01
ret nz
- ld a, $00
- ld [wd4ae], a
+ ld a, DUEL_ANIM_SCREEN_MAIN_SCENE
+ ld [wDuelAnimationScreen], a
ret
.asm_50ad
ld a, [wd4b0]
@@ -1239,24 +1239,24 @@ Func_1909d: ; 1909d (6:509d)
.asm_50d2
ld l, $04
ld h, $c2
- ld a, $01
+ ld a, DUEL_ANIM_SCREEN_PLAYER_PLAY_AREA
jr .asm_50f0
.asm_50da
ld l, $04
ld h, $c3
- ld a, $01
+ ld a, DUEL_ANIM_SCREEN_PLAYER_PLAY_AREA
jr .asm_50f0
.asm_50e2
ld l, $05
ld h, $c3
- ld a, $02
+ ld a, DUEL_ANIM_SCREEN_OPP_PLAY_AREA
jr .asm_50f0
.asm_50ea
ld l, $05
ld h, $c2
- ld a, $02
+ ld a, DUEL_ANIM_SCREEN_OPP_PLAY_AREA
.asm_50f0:
- ld [wd4ae], a
+ ld [wDuelAnimationScreen], a
ret
; this part is not perfectly analyzed.
@@ -1267,8 +1267,8 @@ Func_1909d: ; 1909d (6:509d)
Func_190fb: ; 190fb (6:50fb)
cp $01
jr nz, .asm_510e
- ld a, $00
- ld [wd4ae], a
+ ld a, DUEL_ANIM_SCREEN_MAIN_SCENE
+ ld [wDuelAnimationScreen], a
ld a, [wDuelDisplayedScreen]
cp $01
jr z, .asm_510e
diff --git a/src/engine/bank07.asm b/src/engine/bank07.asm
index 8b63166..e3b366b 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]
@@ -690,7 +690,7 @@ Func_1c8ef: ; 1c8ef (7:48ef)
push af
ld a, [hli] ; ANIM_SPRITE_ANIM_FLAGS
ld [wAnimFlags], a
- call Func_1c980
+ call LoadAnimCoordsAndFlags
pop af
farcall StartNewSpriteAnimation
@@ -702,13 +702,15 @@ Func_1c8ef: ; 1c8ef (7:48ef)
.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 (1 << SPRITE_ANIM_FLAG_6) | (1 << SPRITE_ANIM_FLAG_5)
@@ -721,7 +723,7 @@ Func_1c980: ; 1c980 (7:4980)
ld bc, SPRITE_ANIM_FLAGS - SPRITE_ANIM_COORD_Y
add hl, bc
- ld c, a
+ ld c, a ; useless
and (1 << SPRITE_ANIM_FLAG_Y_SUBTRACT) | (1 << SPRITE_ANIM_FLAG_X_SUBTRACT)
or [hl]
ld [hl], a
@@ -729,38 +731,42 @@ Func_1c980: ; 1c980 (7:4980)
pop hl
ret
+; 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
-Func_1c9a2: ; 1c9a2 (7:49a2)
+GetAnimCoordsAndFlags: ; 1c9a2 (7:49a2)
push hl
ld c, 0
ld a, [wAnimFlags]
and (1 << SPRITE_ANIM_FLAG_SPEED)
jr nz, .calc_addr
- ld a, [wd4ae]
- add a ; 2 * [wd4ae]
+ ld a, [wDuelAnimationScreen]
+ add a ; 2 * [wDuelAnimationScreen]
ld c, a
- add a ; 4 * [wd4ae]
- add c ; 6 * [wd4ae]
- add a ; 12 * [wd4ae]
+ 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
-
+ 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]
@@ -770,50 +776,59 @@ Func_1c9a2: ; 1c9a2 (7:49a2)
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, [wAnimFlags]
- and [hl]
+ and [hl] ; flags
pop hl
ret
-Data_1c9e0:
+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
-macro_1ca04: MACRO
+anim_coords: MACRO
db \1
db \2
db \3
ENDM
-Data_1ca04:
+AnimationCoordinates:
; x coord, y coord, animation flags
- macro_1ca04 $58, $58, (1 << SPRITE_ANIM_FLAG_3)
- macro_1ca04 $28, $50, $00
- macro_1ca04 $88, $30, (1 << SPRITE_ANIM_FLAG_6) | (1 << SPRITE_ANIM_FLAG_5) | (1 << SPRITE_ANIM_FLAG_Y_SUBTRACT) | (1 << SPRITE_ANIM_FLAG_X_SUBTRACT)
- macro_1ca04 $58, $48, $00
- macro_1ca04 $18, $60, $00
- macro_1ca04 $38, $60, $00
- macro_1ca04 $58, $60, $00
- macro_1ca04 $78, $60, $00
- macro_1ca04 $98, $60, $00
- macro_1ca04 $58, $50, $00
- macro_1ca04 $98, $28, $00
- macro_1ca04 $78, $28, $00
- macro_1ca04 $58, $28, $00
- macro_1ca04 $38, $28, $00
- macro_1ca04 $18, $28, $00
+ 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
@@ -834,7 +849,7 @@ Func_1ca31: ; 1ca31 (7:4a31)
add hl, bc
ld a, [wTempAnimation]
ld [hli], a
- ld a, [wd4ae]
+ ld a, [wDuelAnimationScreen]
ld [hli], a
ld a, [wd4af]
ld [hli], a
@@ -875,7 +890,7 @@ Func_1ca6e: ; 1ca6e (7:4a6e)
ld a, [hli]
ld [wTempAnimation], a
ld a, [hli]
- ld [wd4ae], a
+ ld [wDuelAnimationScreen], a
ld a, [hli]
ld [wd4af], a
ld a, [hli]
@@ -1084,7 +1099,7 @@ Func_1cba6: ; 1cba6 (7:4ba6)
Func_1cbcc: ; 1cbcc (7:4bcc)
push af
- ld a, $2e
+ ld a, SPRITE_DUEL_4
farcall CreateSpriteAndAnimBufferEntry
ld a, [wWhichSprite]
ld [de], a
@@ -1092,7 +1107,7 @@ Func_1cbcc: ; 1cbcc (7:4bcc)
ld [wAnimFlags], a
ld c, SPRITE_ANIM_COORD_X
call GetSpriteAnimBufferProperty
- call Func_1c9a2
+ call GetAnimCoordsAndFlags
ld a, [wd4b7]
add $fd
@@ -1442,780 +1457,779 @@ Func_1ce03: ; 1ce03 (7:4e03)
Animations: ; 1ce32 (7:4e32)
; $00
db $00 ; sprite ID
- db $00 ; paletteID
+ db $00 ; palette ID
db $00 ; anim ID
db $00 ; anim flags
db $00 ; sound FX ID
db $00 ; handler function
; $01
- db $28 ; sprite ID
- db $1f ; paletteID
+ 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
; $02
- db $29 ; sprite ID
- db $20 ; paletteID
+ 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
; $03
- db $2a ; sprite ID
- db $21 ; paletteID
+ 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
; $04
- db $2b ; sprite ID
- db $22 ; paletteID
+ 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
; $05
- db $2c ; sprite ID
- db $23 ; paletteID
+ 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
; $06
- db $2d ; sprite ID
- db $24 ; paletteID
+ 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
; $07
- db $2d ; sprite ID
- db $24 ; paletteID
+ 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
; $08
- db $2d ; sprite ID
- db $24 ; paletteID
+ 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
; $09
- db $2e ; sprite ID
- db $25 ; paletteID
+ 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
; $0a
- db $2f ; sprite ID
- db $26 ; paletteID
+ 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
; $0b
- db $30 ; sprite ID
- db $27 ; paletteID
+ 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
; $0c
- db $31 ; sprite ID
- db $28 ; paletteID
+ 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
; $0d
- db $32 ; sprite ID
- db $29 ; paletteID
+ 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
; $0e
- db $33 ; sprite ID
- db $2a ; paletteID
+ 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
; $0f
- db $33 ; sprite ID
- db $2a ; paletteID
+ 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
; $10
- db $34 ; sprite ID
- db $2b ; paletteID
+ 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
; $11
- db $35 ; sprite ID
- db $2c ; paletteID
+ 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
; $12
- db $36 ; sprite ID
- db $2d ; paletteID
+ 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
; $13
- db $37 ; sprite ID
- db $2e ; paletteID
+ 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
; $14
- db $38 ; sprite ID
- db $2f ; paletteID
+ 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
; $15
- db $39 ; sprite ID
- db $30 ; paletteID
+ 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
; $16
- db $3a ; sprite ID
- db $31 ; paletteID
+ 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
; $17
- db $3b ; sprite ID
- db $32 ; paletteID
+ 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
; $18
- db $3c ; sprite ID
- db $33 ; paletteID
+ 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
; $19
- db $3d ; sprite ID
- db $34 ; paletteID
+ 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
; $1a
- db $3e ; sprite ID
- db $35 ; paletteID
+ 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
; $1b
- db $3f ; sprite ID
- db $36 ; paletteID
+ 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
; $1c
- db $3f ; sprite ID
- db $36 ; paletteID
+ 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
; $1d
- db $40 ; sprite ID
- db $37 ; paletteID
+ 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
; $1e
- db $40 ; sprite ID
- db $37 ; paletteID
+ 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
; $1f
- db $40 ; sprite ID
- db $37 ; paletteID
+ 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
; $20
- db $41 ; sprite ID
- db $38 ; paletteID
+ 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
; $21
- db $42 ; sprite ID
- db $39 ; paletteID
+ 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
; $22
- db $43 ; sprite ID
- db $3a ; paletteID
+ 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
; $23
- db $44 ; sprite ID
- db $3b ; paletteID
+ 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
; $24
- db $42 ; sprite ID
- db $39 ; paletteID
+ 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
; $25
- db $45 ; sprite ID
- db $3c ; paletteID
+ 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
; $26
- db $46 ; sprite ID
- db $3d ; paletteID
+ 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
; $27
- db $47 ; sprite ID
- db $3e ; paletteID
+ 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
; $28
- db $48 ; sprite ID
- db $3f ; paletteID
+ 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
; $29
- db $49 ; sprite ID
- db $40 ; paletteID
+ 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
; $2a
- db $4a ; sprite ID
- db $41 ; paletteID
+ 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
; $2b
- db $4b ; sprite ID
- db $42 ; paletteID
+ 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
; $2c
- db $4c ; sprite ID
- db $43 ; paletteID
+ 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
; $2d
- db $4d ; sprite ID
- db $44 ; paletteID
+ 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
; $2e
- db $4e ; sprite ID
- db $45 ; paletteID
+ 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
; $2f
- db $4f ; sprite ID
- db $46 ; paletteID
+ 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
; $30
- db $50 ; sprite ID
- db $47 ; paletteID
+ 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
; $31
- db $51 ; sprite ID
- db $48 ; paletteID
+ 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
; $32
- db $52 ; sprite ID
- db $49 ; paletteID
+ 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
; $33
- db $53 ; sprite ID
- db $4a ; paletteID
+ 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
; $34
- db $54 ; sprite ID
- db $4b ; paletteID
+ 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
; $35
- db $55 ; sprite ID
- db $4c ; paletteID
+ 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
; $36
- db $56 ; sprite ID
- db $4d ; paletteID
+ 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
; $37
- db $57 ; sprite ID
- db $4e ; paletteID
+ 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
; $38
- db $58 ; sprite ID
- db $4f ; paletteID
+ 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
; $39
- db $59 ; sprite ID
- db $50 ; paletteID
+ 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
; $3a
- db $5a ; sprite ID
- db $51 ; paletteID
+ 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
; $3b
- db $5b ; sprite ID
- db $52 ; paletteID
+ 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
; $3c
- db $5c ; sprite ID
- db $53 ; paletteID
+ 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
; $3d
- db $5c ; sprite ID
- db $53 ; paletteID
+ 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
; $3e
- db $5d ; sprite ID
- db $54 ; paletteID
+ 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
; $3f
- db $5e ; sprite ID
- db $55 ; paletteID
+ 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
; $40
- db $4a ; sprite ID
- db $56 ; paletteID
+ 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
; $41
- db $5c ; sprite ID
- db $53 ; paletteID
+ 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
; $42
- db $2d ; sprite ID
- db $24 ; paletteID
+ 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
; $43
- db $2d ; sprite ID
- db $24 ; paletteID
+ 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
; $44
- db $2f ; sprite ID
- db $26 ; paletteID
+ 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
; $45
- db $3a ; sprite ID
- db $31 ; paletteID
+ 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
; $46
- db $5f ; sprite ID
- db $57 ; paletteID
+ 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
; $47
- db $35 ; sprite ID
- db $2c ; paletteID
+ 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
; $48
- db $35 ; sprite ID
- db $2c ; paletteID
+ 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
; $49
- db $5d ; sprite ID
- db $54 ; paletteID
+ 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
; $4a
- db $59 ; sprite ID
- db $50 ; paletteID
+ 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
; $4b
- db $60 ; sprite ID
- db $58 ; paletteID
+ 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
; $4c
- db $61 ; sprite ID
- db $59 ; paletteID
+ 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
; $4d
- db $62 ; sprite ID
- db $5a ; paletteID
+ 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
; $4e
- db $35 ; sprite ID
- db $2c ; paletteID
+ 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
; $4f
- db $35 ; sprite ID
- db $2c ; paletteID
+ 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
; $50
- db $63 ; sprite ID
- db $5b ; paletteID
+ 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
; $51
- db $63 ; sprite ID
- db $5b ; paletteID
+ 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
; $52
- db $63 ; sprite ID
- db $5b ; paletteID
+ 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
; $53
- db $63 ; sprite ID
- db $5b ; paletteID
+ 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
; $54
- db $63 ; sprite ID
- db $5b ; paletteID
+ 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
; $55
- db $63 ; sprite ID
- db $5b ; paletteID
+ 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
; $56
- db $63 ; sprite ID
- db $5b ; paletteID
+ 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
; $57
- db $63 ; sprite ID
- db $5b ; paletteID
+ 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
; $58
- db $64 ; sprite ID
- db $5c ; paletteID
+ 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
; $59
- db $64 ; sprite ID
- db $5c ; paletteID
+ 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
; $5a
- db $64 ; sprite ID
- db $5c ; paletteID
+ 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
; $5b
- db $64 ; sprite ID
- db $5c ; paletteID
+ 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
; $5c
- db $64 ; sprite ID
- db $5c ; paletteID
+ 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
; $5d
- db $65 ; sprite ID
- db $5d ; paletteID
+ db SPRITE_DUEL_51 ; 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
; $5e
- db $65 ; sprite ID
- db $5d ; paletteID
+ db SPRITE_DUEL_51 ; 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
; $5f
- db $65 ; sprite ID
- db $5d ; paletteID
+ db SPRITE_DUEL_51 ; 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
; $60
- db $63 ; sprite ID
- db $5b ; paletteID
+ 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)
diff --git a/src/engine/home.asm b/src/engine/home.asm
index a7c9f6d..a0cc5cb 100644
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -11355,6 +11355,7 @@ WaitForSongToFinish: ; 3c96 (0:3c96)
Func_3ca0: ; 3ca0 (0:3ca0)
xor a
ld [wd5d7], a
+ ; fallthrough
Func_3ca4: ; 3ca4 (0:3ca4)
ldh a, [hBankROM]
diff --git a/src/wram.asm b/src/wram.asm
index 794ff56..8912533 100644
--- a/src/wram.asm
+++ b/src/wram.asm
@@ -2279,7 +2279,8 @@ wd3b1:: ; d3b1
wd3b2:: ; d3b2
ds $1
-wd3b3:: ; d3b3
+; sprite ID of the NPC to load
+wNPCSpriteID:: ; d3b3
ds $1
ds $2
@@ -2373,7 +2374,12 @@ wd4ac:: ; d4ac
wd4ad:: ; d4ad
ds $1
-wd4ae:: ; d4ae
+; used to know what coordinate offsets to use to place animations
+; for use in GetAnimCoordsAndFlags
+; DUEL_ANIM_SCREEN_MAIN_SCENE = main scene
+; DUEL_ANIM_SCREEN_PLAYER_PLAY_AREA = Player's Play Area screen
+; DUEL_ANIM_SCREEN_OPP_PLAY_AREA = Opponent's Play Area screen
+wDuelAnimationScreen:: ; d4ae
ds $1
wd4af:: ; d4af