diff options
Diffstat (limited to 'event/celebi.asm')
-rwxr-xr-x | event/celebi.asm | 240 |
1 files changed, 133 insertions, 107 deletions
diff --git a/event/celebi.asm b/event/celebi.asm index 46c78ed91..d9c188f1a 100755 --- a/event/celebi.asm +++ b/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,76 +26,83 @@ Special_CelebiShrineEvent: ; 4989a bit 7, a jr nz, .done push bc - call Function49bae + call GetCelebiSpriteTile inc d push de ld a, $90 - ld [wc3b5], a - callba Function8cf7a - call Function49935 + ld [wCurrSpriteOAMAddr], a + callba DoNextFrameForAllSprites + 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 - callba Function8cf53 + callba ClearSpriteAnims ld de, SpecialCelebiLeafGFX ld hl, VTiles1 lb bc, BANK(SpecialCelebiLeafGFX), 4 call Request2bpp ld de, SpecialCelebiGFX - ld hl, VTiles1 tile $04 + ld hl, VTiles0 tile $84 lb bc, BANK(SpecialCelebiGFX), $10 call Request2bpp 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] @@ -107,12 +114,13 @@ Function49944: ; 49944 add $40 ld d, a ld e, $0 - ld a, SPRITE_ANIM_INDEX_18 ; fly land + ld a, SPRITE_ANIM_INDEX_FLY_LEAF ; fly land call _InitSpriteAnimStruct - ld hl, $3 + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], $80 ret + ; 49962 SpecialCelebiLeafGFX: ; 49962 @@ -124,126 +132,133 @@ 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 Function49b3b - ld hl, $6 + call CelebiEvent_Cosine + 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 -Function49b3b: ; 49b3b (12:5b3b) + +CelebiEvent_Cosine: ; 49b3b (12:5b3b) add $10 and $3f cp $20 - jr nc, .asm_49b48 - call Function49b52 + jr nc, .negative + call .SineFunction ld a, h ret -.asm_49b48 + +.negative and $1f - call Function49b52 + call .SineFunction ld a, h xor $ff inc a ret -Function49b52: ; 49b52 (12:5b52) + +.SineFunction: ; 49b52 (12:5b52) ld e, a ld a, d ld d, $0 - ld hl, Unknown_49b6e + ld hl, .sinewave rept 2 add hl, de endr @@ -251,23 +266,24 @@ endr inc hl ld d, [hl] ld hl, 0 -.asm_49b61 +.multiply srl a - jr nc, .asm_49b66 + jr nc, .even add hl, de -.asm_49b66 +.even sla e rl d and a - jr nz, .asm_49b61 + jr nz, .multiply ret + ; 49b6e (12:5b6e) -Unknown_49b6e: ; 49b6e +.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 |