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

@@ -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