You've already forked pokecrystal-board
mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-12-11 05:02:16 -08:00
Celebi Event
This commit is contained in:
206
event/celebi.asm
206
event/celebi.asm
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user