diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2015-12-05 15:38:25 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2015-12-05 15:38:25 -0500 |
commit | 6eac26732a7d19e08374e7e8e6f122da38b4a395 (patch) | |
tree | 191f9348414cbb8e9eab1633501d82bd6c4f7e9e /event | |
parent | e83a5bae87d565eae14716470397df211a1fee94 (diff) |
Celebi Event
Diffstat (limited to 'event')
-rwxr-xr-x | event/celebi.asm | 206 | ||||
-rwxr-xr-x | event/field_moves.asm | 10 |
2 files changed, 121 insertions, 95 deletions
diff --git a/event/celebi.asm b/event/celebi.asm index df31e0776..8388caa20 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,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 diff --git a/event/field_moves.asm b/event/field_moves.asm index 398636451..d1635078e 100755 --- a/event/field_moves.asm +++ b/event/field_moves.asm @@ -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 |