Celebi Event

This commit is contained in:
PikalaxALT 2015-12-05 15:38:25 -05:00
parent e83a5bae87
commit 6eac26732a
16 changed files with 286 additions and 258 deletions

View File

@ -350,7 +350,7 @@ MAX_OUTDOOR_SPRITES EQU 23
const_def
const SPRITEANIMSTRUCT_INDEX
const SPRITEANIMSTRUCT_01
const SPRITEANIMSTRUCT_FRAMESET_ID
const SPRITEANIMSTRUCT_ANIM_SEQ_ID
const SPRITEANIMSTRUCT_TILE_ID
const SPRITEANIMSTRUCT_XCOORD

View File

@ -1,4 +1,4 @@
Unknown_8d6e6: ; 8d6e6
SpriteAnimFrameData: ; 8d6e6
dw Unknown_8d76a ; 00
dw Unknown_8d76d ; 01
dw Unknown_8d772 ; 02
@ -63,54 +63,54 @@ Unknown_8d6e6: ; 8d6e6
dw Unknown_8d932 ; 3d
dw Unknown_8d93d ; 3e
dw Unknown_8d940 ; 3f
dw Unknown_8d943 ; 40
dw Unknown_8d948 ; 41
dw Unknown_8d943 ; 40 celebi on the left
dw Unknown_8d948 ; 41 celebi on the right
; 8d76a
Unknown_8d76a: db $00, $20 ; lowest 6 bits of second byte are duration, upper two bits are flags
db -1
; OAM idx (see SpriteAnimOAMData), flip flags/duration
Unknown_8d76a: db $00, $20
db -1
Unknown_8d76d: db $00, $08
db $01, $08
db -2
db -2
Unknown_8d772: db $3d, $08
db $3e, $08
db -2
db -2
Unknown_8d777: db $3f, $08
db $40, $08
db -2
db -2
Unknown_8d77c: db $00, $04
db $01, $04
db -2
db -2
Unknown_8d781: db $3d, $04
db $3e, $04
db -2
db -2
Unknown_8d786: db $3f, $04
db $40, $04
db -2
db -2
Unknown_8d78b: db $00, $08
db $01, $08
db $00, $08
db $01, $48
db -2
db -2
Unknown_8d794: db $63, $08
db $64, $08
db $63, $08
db $64, $48
db -2
db -2
Unknown_8d79d: db $65, $08
db $66, $08
db $65, $08
db $66, $48
db -2
db -2
Unknown_8d7a6: db $1e, $01
db $1f, $01
db -2
db -2
Unknown_8d7ab: db $20, $01
db $fd, $01
db -2
db -3, $01
db -2
Unknown_8d7b0: db $21, $01
db $fd, $01
db -2
db -3, $01
db -2
Unknown_8d7b5: db $81, $0c
db $82, $01
db $83, $01
@ -126,137 +126,137 @@ Unknown_8d7b5: db $81, $0c
db $89, $04
db $8a, $0a
db $8b, $07
db -1
db -1
Unknown_8d7d4: db $23, $03
db $23, $83
db -2
db -2
Unknown_8d7d9: db $24, $02
db $25, $02
db $26, $02
db $25, $02
db -2
db -2
Unknown_8d7e2: db $27, $07
db $28, $07
db $27, $87
db $28, $47
db -2
db -2
Unknown_8d7eb: db $29, $07
db $2a, $07
db $29, $07
db $2b, $07
db -2
db -2
Unknown_8d7f4: db $29, $07
db $2c, $07
db $2d, $07
db $2c, $07
db $29, $07
db -1
db -1
Unknown_8d7ff: db $2e, $14
db -1
db -1
Unknown_8d802: db $2f, $20
db -1
db -1
Unknown_8d805: db $30, $20
db -1
db -1
Unknown_8d808: db $30, $03
db $31, $03
db $30, $03
db $31, $43
db -2
db -2
Unknown_8d811: db $32, $04
db $33, $04
db $34, $04
db -4
db -4
Unknown_8d818: db $35, $03
db $36, $03
db -2
db -2
Unknown_8d81d: db $37, $07
db $38, $07
db -2
db -2
Unknown_8d822: db $39, $20
db -1
db -1
Unknown_8d825: db $3b, $02
db $3a, $02
db $3b, $02
db -1
db -1
Unknown_8d82c: db $3c, $20
db -1
db -1
Unknown_8d82f: db $41, $08
db $42, $08
db $41, $08
db $42, $48
db -2
db -2
db $43, $08
db $44, $08
db -2
db -2
db $45, $08
db $46, $08
db -2
db -2
db $47, $08
db $48, $08
db -2
db -2
db $49, $01
db $49, $41
db $49, $c1
db $49, $81
db -2
db -2
db $4a, $20
db -1
db -1
db $4b, $20
db -1
db -1
db $4c, $20
db -1
db -1
db $4d, $20
db -1
db -1
db $4e, $03
db $fd, $03
db -2
Unknown_8d861: db $fd, $20
db -1
db -3, $03
db -2
Unknown_8d861: db -3, $20
db -1
Unknown_8d864: db $4f, $20
db -1
db -1
Unknown_8d867: db $50, $02
db $51, $10
db $fd, $01
db -3, $01
db $52, $01
db $fd, $01
db -3, $01
db $53, $01
db -4
db -4
Unknown_8d874: db $54, $20
db -1
db -1
Unknown_8d877: db $55, $20
db -1
db -1
Unknown_8d87a: db $55, $60
db -1
db -1
Unknown_8d87d: db $55, $a0
db -1
db -1
Unknown_8d880: db $55, $e0
db -1
db -1
Unknown_8d883: db $56, $0a
db $57, $09
db $58, $0a
db $59, $0a
db $58, $09
db $5a, $0a
db -2
db -2
Unknown_8d890: db $50, $02
db $5b, $02
db $50, $02
db $5b, $42
db -2
db -2
Unknown_8d899: db $5c, $02
db -1
db -1
Unknown_8d89c: db $5d, $02
db -1
db -1
Unknown_8d89f: db $5e, $02
db -1
db -1
Unknown_8d8a2: db $5f, $02
db -1
db -1
Unknown_8d8a5: db $60, $02
db -1
db -1
Unknown_8d8a8: db $61, $02
db -1
db -1
Unknown_8d8ab: db $62, $02
db -1
db -1
Unknown_8d8ae: db $32, $03
db $33, $03
db $34, $03
@ -272,7 +272,7 @@ Unknown_8d8ae: db $32, $03
db $31, $03
db $30, $03
db $31, $43
db -1
db -1
Unknown_8d8cd: db $30, $03
db $31, $03
db $30, $03
@ -288,67 +288,67 @@ Unknown_8d8cd: db $30, $03
db $32, $03
db $33, $03
db $34, $03
db -4
db -4
Unknown_8d8ec: db $67, $03
db $68, $03
db -2
db -2
Unknown_8d8f1: db $6c, $03
db -1
db -1
Unknown_8d8f4: db $6d, $03
db -1
db -1
Unknown_8d8f7: db $69, $02
db $6a, $02
db $6b, $02
db -4
db -4
Unknown_8d8fe: db $6e, $03
db $6f, $03
db $70, $03
db $71, $03
db -2
db -2
Unknown_8d907: db $71, $03
db $6e, $07
db -1
db -1
Unknown_8d90c: db $72, $20
db $73, $07
db $74, $07
db -1
db -1
Unknown_8d913: db $75, $03
db -1
db -1
Unknown_8d916: db $76, $03
db $77, $03
db $78, $07
db -4
db -4
Unknown_8d91d: db $76, $43
db $77, $43
db $78, $47
db -4
db -4
Unknown_8d924: db $76, $83
db $77, $83
db $78, $87
db -4
db -4
Unknown_8d92b: db $76, $c3
db $77, $c3
db $78, $c7
db -4
db -4
Unknown_8d932: db $79, $03
db $7a, $03
db $7b, $03
db $7c, $07
db $7d, $07
db -1
db -1
Unknown_8d93d: db $7e, $03
db -1
Unknown_8d940: db $fd, $00
db -1
db -1
Unknown_8d940: db -3, $00
db -1
Unknown_8d943: db $7f, $08
db $80, $08
db -1
db -1
Unknown_8d948: db $7f, $48
db $80, $48
db -1
db -1
; 8d94d
Unknown_8d94d: ; 8d94d
SpriteAnimOAMData: ; 8d94d
; vtile offset, pointer
dbw $00, Unknown_8dd8a ; 00
dbw $04, Unknown_8dd8a ; 01

View File

@ -829,7 +829,7 @@ Function173b3: ; 173b3 (5:73b3)
ld [hl], $0
pop de
ld a, e
ld hl, SPRITEANIMSTRUCT_01
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
add [hl]
ld [hl], a

View File

@ -182,7 +182,7 @@ endr
ld [wc6d5], a
ld a, b
ld [wc6d6], a
ld hl, SPRITEANIMSTRUCT_01
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld a, [hl]
ld hl, SPRITEANIMSTRUCT_0E
@ -298,7 +298,7 @@ Function120c1: ; 120c1 (4:60c1)
ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
add [hl]
ld hl, SPRITEANIMSTRUCT_01
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], a
ld hl, SPRITEANIMSTRUCT_0C

View File

@ -1627,7 +1627,7 @@ CrystalIntro_InitUnownAnim: ; e51dc (39:51dc)
add hl, bc
ld [hl], $8
ld a, $3c
call Function3b3c
call ReinitSpriteAnimFrame
pop de
push de
@ -1637,7 +1637,7 @@ CrystalIntro_InitUnownAnim: ; e51dc (39:51dc)
add hl, bc
ld [hl], $18
ld a, $3b
call Function3b3c
call ReinitSpriteAnimFrame
pop de
push de
@ -1647,7 +1647,7 @@ CrystalIntro_InitUnownAnim: ; e51dc (39:51dc)
add hl, bc
ld [hl], $28
ld a, $39
call Function3b3c
call ReinitSpriteAnimFrame
pop de
ld a, SPRITE_ANIM_INDEX_29
@ -1656,7 +1656,7 @@ CrystalIntro_InitUnownAnim: ; e51dc (39:51dc)
add hl, bc
ld [hl], $38
ld a, $3a
call Function3b3c
call ReinitSpriteAnimFrame
ret
CrystalIntro_UnownFade: ; e5223 (39:5223)

View File

@ -79,7 +79,7 @@ Function8e86c: ; 8e86c (23:686c)
.asm_8e890
ld a, $4
.asm_8e892
ld hl, SPRITEANIMSTRUCT_01
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], a
ret
@ -150,7 +150,7 @@ Function8e8d5: ; 8e8d5 (23:68d5)
.mail
ld a, $2
.okay
ld hl, SPRITEANIMSTRUCT_01
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], a
ret

View File

@ -176,7 +176,7 @@ Function117f5: ; 117f5 (4:57f5)
depixel 4, 4, 4, 0
ld a, SPRITE_ANIM_INDEX_0A
call _InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_01
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], $0
hlcoord 5, 2
@ -411,7 +411,7 @@ Function1197b: ; 1197b (4:597b)
ld [wc6d5], a
ld a, b
ld [wc6d6], a
ld hl, SPRITEANIMSTRUCT_01
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld a, [hl]
ld hl, SPRITEANIMSTRUCT_0E
@ -553,7 +553,7 @@ Function11a3b: ; 11a3b (4:5a3b)
ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
add [hl]
ld hl, SPRITEANIMSTRUCT_01
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], a
ld hl, SPRITEANIMSTRUCT_0C

View File

@ -100,7 +100,7 @@ Function927af: ; 927af (24:67af)
call Function92844
call Function92b0f
xor a
ld [wOAMRetentionSize], a
ld [wCurrSpriteOAMAddr], a
callab DoNextFrameForFirst16Sprites
call Function927f8
call Function927d3

View File

@ -36,7 +36,7 @@ endr
dw .eighteen
dw .nineteen ; finish egg hatching animation
dw .twenty ; radio tuning knob
dw .twentyone
dw .twentyone ; cut grass leaves
dw .twentytwo ; flying sprite
dw .twentythree ; flying leaves
dw .twentyfour
@ -370,7 +370,7 @@ endr
ret nz
ld [hl], $3
ld a, $f
call Function8d120
call _ReinitSpriteAnimFrame
ret
.eleven: ; 8d43e (23:543e)
@ -434,7 +434,7 @@ endr
.sixteen_zero: ; 8d493
ld a, $14
call Function8d120
call _ReinitSpriteAnimFrame
ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
@ -786,7 +786,7 @@ endr
add hl, bc
ld [hl], a
ld a, $36
call Function8d120
call _ReinitSpriteAnimFrame
ret
.thirty: ; 8d666 (23:5666)
@ -840,7 +840,7 @@ endr
cp $40
ret nz
ld a, $3d
call Function8d120
call _ReinitSpriteAnimFrame
ret
.thirtyfour: ; 8d6ae (23:56ae)
@ -856,7 +856,7 @@ endr
ret
.thirtyone: ; 8d6be (23:56be)
callba Function49aa2
callba UpdateCelebiPosition
ret
.anonymous_jumptable: ; 8d6c5 (23:56c5)

View File

@ -24,7 +24,7 @@ PlaySpriteAnimations: ; 8cf69
push af
ld a, 0 * 4
ld [wOAMRetentionSize], a
ld [wCurrSpriteOAMAddr], a
call DoNextFrameForAllSprites
pop af
@ -47,7 +47,7 @@ DoNextFrameForAllSprites: ; 8cf7a
push hl
push de
call DoAnimFrame ; Uses a massive jumptable
call Function8d04c
call UpdateAnimFrame
pop de
pop hl
jr c, .done
@ -58,11 +58,11 @@ DoNextFrameForAllSprites: ; 8cf7a
dec e
jr nz, .loop
ld a, [wOAMRetentionSize]
ld a, [wCurrSpriteOAMAddr]
ld l, a
ld h, Sprites / $0100
.loop2 ; Clear (Sprites + [wOAMRetentionSize] --> SpritesEnd)
.loop2 ; Clear (Sprites + [wCurrSpriteOAMAddr] --> SpritesEnd)
ld a, l
cp SpritesEnd % $100
jr nc, .done
@ -87,7 +87,7 @@ DoNextFrameForFirst16Sprites: ; 8cfa8 (23:4fa8)
push hl
push de
call DoAnimFrame ; Uses a massive jumptable
call Function8d04c
call UpdateAnimFrame
pop de
pop hl
jr c, .done
@ -98,11 +98,11 @@ DoNextFrameForFirst16Sprites: ; 8cfa8 (23:4fa8)
dec e
jr nz, .loop
ld a, [wOAMRetentionSize]
ld a, [wCurrSpriteOAMAddr]
ld l, a
ld h, (Sprites + $40) / $100
.loop2 ; Clear (Sprites + [wOAMRetentionSize] --> Sprites + $40)
.loop2 ; Clear (Sprites + [wCurrSpriteOAMAddr] --> Sprites + $40)
ld a, l
cp (Sprites + 16 * 4) % $100
jr nc, .done
@ -149,11 +149,11 @@ InitSpriteAnimStruct:: ; 8cfd6
inc [hl]
.initialized
; Get row a of Unknown_8d1c4, copy the pointer into de
; Get row a of SpriteAnimSeqData, copy the pointer into de
pop af
ld e, a
ld d, 0
ld hl, Unknown_8d1c4
ld hl, SpriteAnimSeqData
rept 3
add hl, de
endr
@ -235,14 +235,14 @@ DeinitializeAllSprites: ; 8d03d (23:503d)
ret
Function8d04c: ; 8d04c
UpdateAnimFrame: ; 8d04c
call InitSpriteAnimBuffer ; init WRAM
call Function8d132 ; read from a memory array
call GetSpriteAnimFrame ; read from a memory array
cp -3
jr z, .done
cp -4
jr z, .delete
call Function8d1a2 ; OAM?
call GetFrameOAMPointer
; add byte to [wCurrAnimVTile]
ld a, [wCurrAnimVTile]
add [hl]
@ -253,7 +253,7 @@ Function8d04c: ; 8d04c
ld h, [hl]
ld l, a
push bc
ld a, [wOAMRetentionSize]
ld a, [wCurrSpriteOAMAddr]
ld e, a
ld d, Sprites / $100
ld a, [hli]
@ -297,13 +297,13 @@ Function8d04c: ; 8d04c
inc hl
inc de
; fourth byte: attributes
; [de] = Function8d0de([hl])
call Function8d0de
; [de] = GetSpriteOAMAttr([hl])
call GetSpriteOAMAttr
ld [de], a
inc hl
inc de
ld a, e
ld [wOAMRetentionSize], a
ld [wCurrSpriteOAMAddr], a
cp SpritesEnd % $100
jr nc, .reached_the_end
dec c
@ -356,7 +356,7 @@ AddOrSubtractX: ; 8d0ce
ret
; 8d0de
Function8d0de: ; 8d0de
GetSpriteOAMAttr: ; 8d0de
ld a, [wCurrSpriteAddSubFlags]
ld b, a
ld a, [hl]
@ -414,8 +414,8 @@ GetSpriteAnimVTile: ; 8d109
ret
; 8d120
Function8d120:: ; 8d120
ld hl, SPRITEANIMSTRUCT_01
_ReinitSpriteAnimFrame:: ; 8d120
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], a
ld hl, SPRITEANIMSTRUCT_DURATION
@ -428,7 +428,7 @@ Function8d120:: ; 8d120
; 8d132
Function8d132: ; 8d132
GetSpriteAnimFrame: ; 8d132
.loop
ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
@ -436,7 +436,7 @@ Function8d132: ; 8d132
and a
jr z, .next_frame ; finished the current sequence
dec [hl]
call Function8d189 ; load pointer from Unknown_8d6e6
call GetSpriteFrameDataPointer ; load pointer from SpriteAnimFrameData
ld a, [hli]
push af
jr .okay
@ -445,12 +445,12 @@ Function8d132: ; 8d132
ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
inc [hl]
call Function8d189 ; load pointer from Unknown_8d6e6
call GetSpriteFrameDataPointer ; load pointer from SpriteAnimFrameData
ld a, [hli]
cp -2
jr z, .minus_2
jr z, .restart
cp -1
jr z, .minus_1
jr z, .repeat_last
push af
ld a, [hl]
@ -471,7 +471,7 @@ Function8d132: ; 8d132
pop af
ret
.minus_1
.repeat_last
xor a
ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
@ -484,7 +484,7 @@ rept 2
endr
jr .loop
.minus_2
.restart
xor a
ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
@ -497,15 +497,15 @@ endr
jr .loop
; 8d189
Function8d189: ; 8d189
GetSpriteFrameDataPointer: ; 8d189
; Get the data for the current frame for the current animation sequence
; Unknown_8d6e6[SpriteAnim[SPRITEANIMSTRUCT_01]][SpriteAnim[SPRITEANIMSTRUCT_FRAME]]
ld hl, SPRITEANIMSTRUCT_01
; SpriteAnimFrameData[SpriteAnim[SPRITEANIMSTRUCT_FRAMESET_ID]][SpriteAnim[SPRITEANIMSTRUCT_FRAME]]
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld e, [hl]
ld d, 0
ld hl, Unknown_8d6e6
ld hl, SpriteAnimFrameData
rept 2
add hl, de
endr
@ -521,11 +521,11 @@ endr
ret
; 8d1a2
Function8d1a2: ; 8d1a2
GetFrameOAMPointer: ; 8d1a2
; Load OAM data pointer
ld e, a
ld d, 0
ld hl, Unknown_8d94d
ld hl, SpriteAnimOAMData
rept 3
add hl, de
endr
@ -555,7 +555,7 @@ endr
ret
; 8d1c4
Unknown_8d1c4: ; 8d1c4
SpriteAnimSeqData: ; 8d1c4
; ??, sequence, tile
db $01, SPRITE_ANIM_SEQ_01, $00 ; 00
db $07, SPRITE_ANIM_SEQ_04, $00 ; 01
@ -579,7 +579,7 @@ Unknown_8d1c4: ; 8d1c4
db $19, SPRITE_ANIM_SEQ_13, $00 ; 13
db $1a, SPRITE_ANIM_SEQ_14, $00 ; 14 radio tuning knob
db $1b, SPRITE_ANIM_SEQ_00, $00 ; 15
db $1d, SPRITE_ANIM_SEQ_15, $00 ; 16
db $1d, SPRITE_ANIM_SEQ_15, $00 ; 16 leaves when cutting down a tree
db $1e, SPRITE_ANIM_SEQ_00, $00 ; 17
db $1d, SPRITE_ANIM_SEQ_17, $00 ; 18 flying leaves
db $1f, SPRITE_ANIM_SEQ_00, $00 ; 19
@ -607,12 +607,13 @@ Unknown_8d1c4: ; 8d1c4
INCLUDE "engine/sprite_anims.asm" ; DoAnimFrame
INCLUDE "data/sprite_engine.asm"
; Unknown_8d6e6
; Unknown_8d94d
; SpriteAnimFrameData
; SpriteAnimOAMData
Sprites_Cosine: ; 8e72a
add $10
Sprites_Sine: ; 8e72c
; floor(d * sin(a * pi/32))
and $3f
cp $20
jr nc, .negative
@ -669,8 +670,8 @@ AnimateEndOfExpBar: ; 8e79d
ld hl, VTiles0 tile $00
lb bc, BANK(EndOfExpBarGFX), 1
call Request2bpp
ld c, $8
ld d, $0
ld c, 8
ld d, 0
.loop
push bc
call .AnimateFrame
@ -694,6 +695,7 @@ endr
ret z
dec c
ld a, c
; multiply by 8
sla a
sla a
sla a

View File

@ -8,17 +8,17 @@ Special_CelebiShrineEvent: ; 4989a
depixel 0, 10, 7, 0
ld a, SPRITE_ANIM_INDEX_2C
call _InitSpriteAnimStruct
ld hl, $3
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $84
ld hl, $2
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
ld [hl], $1f
ld hl, $f
ld [hl], SPRITE_ANIM_SEQ_1F
ld hl, SPRITEANIMSTRUCT_0F
add hl, bc
ld a, $80
ld [hl], a
ld a, $a0
ld a, 160 ; frame count
ld [wcf64], a
ld d, $0
.loop
@ -26,44 +26,47 @@ Special_CelebiShrineEvent: ; 4989a
bit 7, a
jr nz, .done
push bc
call Function49bae
call GetCelebiSpriteTile
inc d
push de
ld a, $90
ld [wOAMRetentionSize], a
ld [wCurrSpriteOAMAddr], a
callba DoNextFrameForAllSprites
call Function49935
call CelebiEvent_CountDown
ld c, 2
call DelayFrames
pop de
pop bc
jr .loop
.done
pop af
ld [VramState], a
call Function498f9
call Function49bf3
call .RefreshPlayerSprite_ClearAllOthers
call CelebiEvent_SetBattleType
ret
; 498f9
Function498f9: ; 498f9
.RefreshPlayerSprite_ClearAllOthers: ; 498f9
ld hl, Sprites + 2
xor a
ld c, $4
.loop
.OAMloop
ld [hli], a
rept 3
inc hl
endr
inc a
dec c
jr nz, .loop
jr nz, .OAMloop
ld hl, Sprites + $10
ld bc, $90
xor a
call ByteFill
ret
; 49912
LoadCelebiGFX: ; 49912
@ -79,23 +82,27 @@ LoadCelebiGFX: ; 49912
xor a
ld [wJumptableIndex], a
ret
; 49935
Function49935: ; 49935
CelebiEvent_CountDown: ; 49935
ld hl, wcf64
ld a, [hl]
and a
jr z, .asm_4993e
jr z, .done
dec [hl]
ret
.asm_4993e
.done
ld hl, wJumptableIndex
set 7, [hl]
ret
; 49944
Function49944: ; 49944
CelebiEvent_SpawnLeaf: ; 49944
; unused
ld hl, wcf65
ld a, [hl]
inc [hl]
@ -109,10 +116,11 @@ Function49944: ; 49944
ld e, $0
ld a, SPRITE_ANIM_INDEX_18 ; fly land
call _InitSpriteAnimStruct
ld hl, $3
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $80
ret
; 49962
SpecialCelebiLeafGFX: ; 49962
@ -124,105 +132,110 @@ INCBIN "gfx/special/celebi/3.2bpp"
INCBIN "gfx/special/celebi/4.2bpp"
Function49aa2: ; 49aa2 (12:5aa2)
ld hl, $6
UpdateCelebiPosition: ; 49aa2 (12:5aa2)
ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld a, [hl]
push af
ld hl, $5
ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld a, [hl]
cp $52
jp nc, Function49b30
ld hl, $5
cp 8 * 10 + 2
jp nc, .FreezeCelebiPosition
ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
inc [hl]
ld hl, $f
ld hl, SPRITEANIMSTRUCT_0F
add hl, bc
ld a, [hl]
ld d, a
cp $3a
jr c, .asm_49ac6
jr z, .asm_49ac6
jr c, .skip
jr z, .skip
sub $3
ld [hl], a
.asm_49ac6
ld hl, $e
.skip
ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
ld a, [hl]
inc [hl]
call CelebiEvent_Cosine
ld hl, $6
ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ld d, a
ld hl, $4
ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
add [hl]
cp $5c
jr nc, .asm_49ae2
cp $44
jr nc, .asm_49b0d
.asm_49ae2
cp 8 * 11 + 4
jr nc, .ShiftY
cp 8 * 8 + 4
jr nc, .ReinitSpriteAnimFrame
.ShiftY
pop af
push af
cp d
jr nc, .asm_49af2
ld hl, $4
jr nc, .moving_left
ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
add [hl]
cp $50
jr c, .asm_49b05
jr .asm_49afb
.asm_49af2
ld hl, $4
cp 8 * 10
jr c, .float_up
jr .float_down
.moving_left
ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
add [hl]
cp $50
jr nc, .asm_49b05
.asm_49afb
ld hl, $5
cp 8 * 10
jr nc, .float_up
.float_down
ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld a, [hl]
sub $2
ld [hl], a
jr .asm_49b0d
.asm_49b05
ld hl, $5
jr .ReinitSpriteAnimFrame
.float_up
ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld a, [hl]
add $1
ld [hl], a
.asm_49b0d
.ReinitSpriteAnimFrame
pop af
ld hl, $4
ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
add [hl]
cp $50
jr c, .asm_49b26
cp $e6
jr nc, .asm_49b26
ld hl, $1
cp 8 * 10
jr c, .left
cp -(8 * 3 + 2)
jr nc, .left
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld a, $41
call Function3b3c
jr .asm_49b2f
.asm_49b26
ld hl, $1
call ReinitSpriteAnimFrame
jr .done
.left
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld a, $40
call Function3b3c
.asm_49b2f
call ReinitSpriteAnimFrame
.done
ret
Function49b30: ; 49b30 (12:5b30)
.FreezeCelebiPosition: ; 49b30 (12:5b30)
pop af
ld hl, $1
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld a, $40
call Function3b3c
call ReinitSpriteAnimFrame
ret
CelebiEvent_Cosine: ; 49b3b (12:5b3b)
add $10
and $3f
@ -231,6 +244,7 @@ CelebiEvent_Cosine: ; 49b3b (12:5b3b)
call .SineFunction
ld a, h
ret
.asm_49b48
and $1f
call .SineFunction
@ -239,6 +253,7 @@ CelebiEvent_Cosine: ; 49b3b (12:5b3b)
inc a
ret
.SineFunction: ; 49b52 (12:5b52)
ld e, a
ld a, d
@ -261,13 +276,14 @@ endr
and a
jr nz, .multiply
ret
; 49b6e (12:5b6e)
.sinewave: ; 49b6e
sine_wave $100
; 49bae
Function49bae: ; 49bae
GetCelebiSpriteTile: ; 49bae
push hl
push bc
push de
@ -275,66 +291,74 @@ Function49bae: ; 49bae
ld d, $3
ld e, d
cp $0
jr z, .asm_49bd0
jr z, .Frame1
cp d
jr z, .asm_49bd4
call Function49bed
jr z, .Frame2
call .AddE
cp d
jr z, .asm_49bd8
call Function49bed
jr z, .Frame3
call .AddE
cp d
jr z, .asm_49bdc
call Function49bed
jr z, .Frame4
call .AddE
cp d
jr c, .asm_49be9
jr .asm_49be5
jr c, .done
jr .restart
.asm_49bd0
.Frame1
ld a, $84
jr .asm_49bde
jr .load_tile
.asm_49bd4
.Frame2
ld a, $88
jr .asm_49bde
jr .load_tile
.asm_49bd8
.Frame3
ld a, $8c
jr .asm_49bde
jr .load_tile
.asm_49bdc
.Frame4
ld a, $90
.asm_49bde
ld hl, $3
.load_tile
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], a
jr .asm_49be9
jr .done
.asm_49be5
.restart
pop de
ld d, $ff
push de
.asm_49be9
.done
pop de
pop bc
pop hl
ret
; 49bed
Function49bed: ; 49bed
.AddE: ; 49bed
push af
ld a, d
add e
ld d, a
pop af
ret
; 49bf3
Function49bf3: ; 49bf3
CelebiEvent_SetBattleType: ; 49bf3
ld a, BATTLETYPE_CELEBI
ld [BattleType], a
ret
; 49bf9
CheckCaughtCelebi: ; 49bf9
@ -345,10 +369,12 @@ CheckCaughtCelebi: ; 49bf9
ld [ScriptVar], a
jr .done
.false
xor a
ld [ScriptVar], a
.done
ret
; 49c0c

View File

@ -36,7 +36,7 @@ ShakeHeadbuttTree: ; 8c80a
add hl, bc
ld [hl], $84
ld a, 36 * 4
ld [wOAMRetentionSize], a
ld [wCurrSpriteOAMAddr], a
callba DoNextFrameForAllSprites
call GetHeadbuttTreeRelativeLocation
ld a, $20
@ -51,7 +51,7 @@ ShakeHeadbuttTree: ; 8c80a
jr z, .done
dec [hl]
ld a, 36 * 4
ld [wOAMRetentionSize], a
ld [wCurrSpriteOAMAddr], a
callba DoNextFrameForAllSprites
call DelayFrame
jr .loop
@ -125,7 +125,7 @@ OWCutAnimation: ; 8c940
bit 7, a
jr nz, .finish
ld a, 36 * 4
ld [wOAMRetentionSize], a
ld [wCurrSpriteOAMAddr], a
callab DoNextFrameForAllSprites
call OWCutJumptable
call DelayFrame
@ -342,7 +342,7 @@ FlyFromAnim: ; 8caed
bit 7, a
jr nz, .exit
ld a, 0 * 4
ld [wOAMRetentionSize], a
ld [wCurrSpriteOAMAddr], a
callab DoNextFrameForAllSprites
call Function8cbc8
call DelayFrame
@ -380,7 +380,7 @@ FlyToAnim: ; 8cb33
bit 7, a
jr nz, .exit
ld a, 0 * 4
ld [wOAMRetentionSize], a
ld [wCurrSpriteOAMAddr], a
callab DoNextFrameForAllSprites
call Function8cbc8
call DelayFrame

View File

@ -2036,17 +2036,17 @@ _InitSpriteAnimStruct:: ; 3b2a
; 3b3c
Function3b3c:: ; 3b3c
ReinitSpriteAnimFrame:: ; 3b3c
ld [wSpriteAnimIDBuffer], a
ld a, [hROMBank]
push af
ld a, BANK(Function8d120)
ld a, BANK(_ReinitSpriteAnimFrame)
rst Bankswitch
ld a, [wSpriteAnimIDBuffer]
call Function8d120
call _ReinitSpriteAnimFrame
pop af
rst Bankswitch

View File

@ -2478,7 +2478,7 @@ Function11d0f5: ; 11d0f5 (47:50f5)
ld d, $0
add hl, de
ld a, [hl]
call Function3b3c
call ReinitSpriteAnimFrame
ld a, [CreditsTimer]
sla a
ld hl, Unknown_11d23e
@ -2487,7 +2487,7 @@ Function11d0f5: ; 11d0f5 (47:50f5)
Function11d10f: ; 11d10f (47:510f)
ld a, $27
call Function3b3c
call ReinitSpriteAnimFrame
ld a, [wcd25]
sla a
ld hl, Unknown_11d29e
@ -2514,7 +2514,7 @@ asm_11d11e: ; 11d11e (47:511e)
Function11d134: ; 11d134 (47:5134)
ld a, $27
call Function3b3c
call ReinitSpriteAnimFrame
ld a, [wcd2a]
sla a
ld hl, Unknown_11d2b6
@ -2523,7 +2523,7 @@ Function11d134: ; 11d134 (47:5134)
Function11d145: ; 11d145 (47:5145)
ld a, $27
call Function3b3c
call ReinitSpriteAnimFrame
ld a, [wcd2c]
sla a
ld hl, Unknown_11d2ba
@ -2532,7 +2532,7 @@ Function11d145: ; 11d145 (47:5145)
Function11d156: ; 11d156 (47:5156)
ld a, $2a
call Function3b3c
call ReinitSpriteAnimFrame
ld a, [wcd4a]
sla a
sla a
@ -2557,7 +2557,7 @@ Function11d175: ; 11d175 (47:5175)
.asm_11d180
ld a, $26
.asm_11d182
call Function3b3c
call ReinitSpriteAnimFrame
ld a, [wcd4d]
cp $4
jr z, .asm_11d1b1
@ -2611,7 +2611,7 @@ Function11d1d7: ; 11d1d7 (47:51d7)
asm_11d1db: ; 11d1db (47:51db)
push de
call Function3b3c
call ReinitSpriteAnimFrame
ld a, [wcd4a]
sla a
sla a
@ -2632,7 +2632,7 @@ asm_11d1db: ; 11d1db (47:51db)
Function11d1fc: ; 11d1fc (47:51fc)
ld a, $26
call Function3b3c
call ReinitSpriteAnimFrame
ld a, $8
ld e, a
call Function11d2ee

View File

@ -5885,7 +5885,7 @@ Function11ac51: ; 11ac51
call Function11acb7
call Function11ad6e
ld a, 30 * 4
ld [wOAMRetentionSize], a
ld [wCurrSpriteOAMAddr], a
callba DoNextFrameForAllSprites
callba ReloadMapPart
jr .asm_11ac82

View File

@ -395,7 +395,7 @@ TilePermissions:: ; c2fe
SECTION "wSpriteAnims", WRAM0 [$c300]
; wc300 - wc313 is a 10x2 dictionary.
; keys: taken from third column of Unknown_8d1c4
; keys: taken from third column of SpriteAnimSeqData
; values: VTiles
wSpriteAnimDict:: ds 10 * 2
ds wSpriteAnimDict - @
@ -429,8 +429,8 @@ sprite_anim_struct: MACRO
\1YCoord:: ds 1 ; 5
\1XOffset:: ds 1 ; 6
\1YOffset:: ds 1 ; 7
\1FrameTimer:: ds 1 ; 8
\1Sprite09:: ds 1 ; 9
\1Duration:: ds 1 ; 8
\1DurationOffset:: ds 1 ; 9
\1FrameIndex:: ds 1 ; a
\1Sprite0b:: ds 1
\1Sprite0c:: ds 1
@ -440,7 +440,7 @@ sprite_anim_struct: MACRO
ENDM
; Field 0: Index
; Fields 1-3: Loaded from Unknown_8d1c4
; Fields 1-3: Loaded from SpriteAnimSeqData
wc314::
SpriteAnim1:: sprite_anim_struct SpriteAnim1
wc324::
@ -466,7 +466,7 @@ wSpriteAnimationStructsEnd::
wc3ac:: ds 8 ; c3ac
wSpriteAnimCount::
wc3b4:: ds 1
wOAMRetentionSize:: ds 1
wCurrSpriteOAMAddr:: ds 1
CurIcon:: ; c3b6
ds 1