pokecrystal/event/celebi.asm

355 lines
4.3 KiB
NASM
Executable File

Special_CelebiShrineEvent: ; 4989a
call DelayFrame
ld a, [VramState]
push af
xor a
ld [VramState], a
call LoadCelebiGFX
depixel 0, 10, 7, 0
ld a, SPRITE_ANIM_INDEX_2C
call _InitSpriteAnimStruct
ld hl, $3
add hl, bc
ld [hl], $84
ld hl, $2
add hl, bc
ld [hl], $1f
ld hl, $f
add hl, bc
ld a, $80
ld [hl], a
ld a, $a0
ld [wcf64], a
ld d, $0
.loop
ld a, [wJumptableIndex]
bit 7, a
jr nz, .done
push bc
call Function49bae
inc d
push de
ld a, $90
ld [wc3b5], a
callba Function8cf7a
call Function49935
ld c, 2
call DelayFrames
pop de
pop bc
jr .loop
.done
pop af
ld [VramState], a
call Function498f9
call Function49bf3
ret
; 498f9
Function498f9: ; 498f9
ld hl, Sprites + 2
xor a
ld c, $4
.loop
ld [hli], a
rept 3
inc hl
endr
inc a
dec c
jr nz, .loop
ld hl, Sprites + $10
ld bc, $90
xor a
call ByteFill
ret
; 49912
LoadCelebiGFX: ; 49912
callba Function8cf53
ld de, SpecialCelebiLeafGFX
ld hl, VTiles1
lb bc, BANK(SpecialCelebiLeafGFX), 4
call Request2bpp
ld de, SpecialCelebiGFX
ld hl, VTiles1 tile $04
lb bc, BANK(SpecialCelebiGFX), $10
call Request2bpp
xor a
ld [wJumptableIndex], a
ret
; 49935
Function49935: ; 49935
ld hl, wcf64
ld a, [hl]
and a
jr z, .asm_4993e
dec [hl]
ret
.asm_4993e
ld hl, wJumptableIndex
set 7, [hl]
ret
; 49944
Function49944: ; 49944
ld hl, wcf65
ld a, [hl]
inc [hl]
and $7
ret nz
ld a, [hl]
and $18
sla a
add $40
ld d, a
ld e, $0
ld a, SPRITE_ANIM_INDEX_18 ; fly land
call _InitSpriteAnimStruct
ld hl, $3
add hl, bc
ld [hl], $80
ret
; 49962
SpecialCelebiLeafGFX: ; 49962
INCBIN "gfx/special/celebi/leaf.2bpp"
SpecialCelebiGFX: ; 499a2
INCBIN "gfx/special/celebi/1.2bpp"
INCBIN "gfx/special/celebi/2.2bpp"
INCBIN "gfx/special/celebi/3.2bpp"
INCBIN "gfx/special/celebi/4.2bpp"
Function49aa2: ; 49aa2 (12:5aa2)
ld hl, $6
add hl, bc
ld a, [hl]
push af
ld hl, $5
add hl, bc
ld a, [hl]
cp $52
jp nc, Function49b30
ld hl, $5
add hl, bc
inc [hl]
ld hl, $f
add hl, bc
ld a, [hl]
ld d, a
cp $3a
jr c, .asm_49ac6
jr z, .asm_49ac6
sub $3
ld [hl], a
.asm_49ac6
ld hl, $e
add hl, bc
ld a, [hl]
inc [hl]
call Function49b3b
ld hl, $6
add hl, bc
ld [hl], a
ld d, a
ld hl, $4
add hl, bc
add [hl]
cp $5c
jr nc, .asm_49ae2
cp $44
jr nc, .asm_49b0d
.asm_49ae2
pop af
push af
cp d
jr nc, .asm_49af2
ld hl, $4
add hl, bc
add [hl]
cp $50
jr c, .asm_49b05
jr .asm_49afb
.asm_49af2
ld hl, $4
add hl, bc
add [hl]
cp $50
jr nc, .asm_49b05
.asm_49afb
ld hl, $5
add hl, bc
ld a, [hl]
sub $2
ld [hl], a
jr .asm_49b0d
.asm_49b05
ld hl, $5
add hl, bc
ld a, [hl]
add $1
ld [hl], a
.asm_49b0d
pop af
ld hl, $4
add hl, bc
add [hl]
cp $50
jr c, .asm_49b26
cp $e6
jr nc, .asm_49b26
ld hl, $1
add hl, bc
ld a, $41
call Function3b3c
jr .asm_49b2f
.asm_49b26
ld hl, $1
add hl, bc
ld a, $40
call Function3b3c
.asm_49b2f
ret
Function49b30: ; 49b30 (12:5b30)
pop af
ld hl, $1
add hl, bc
ld a, $40
call Function3b3c
ret
Function49b3b: ; 49b3b (12:5b3b)
add $10
and $3f
cp $20
jr nc, .asm_49b48
call Function49b52
ld a, h
ret
.asm_49b48
and $1f
call Function49b52
ld a, h
xor $ff
inc a
ret
Function49b52: ; 49b52 (12:5b52)
ld e, a
ld a, d
ld d, $0
ld hl, Unknown_49b6e
rept 2
add hl, de
endr
ld e, [hl]
inc hl
ld d, [hl]
ld hl, 0
.asm_49b61
srl a
jr nc, .asm_49b66
add hl, de
.asm_49b66
sla e
rl d
and a
jr nz, .asm_49b61
ret
; 49b6e (12:5b6e)
Unknown_49b6e: ; 49b6e
sine_wave $100
; 49bae
Function49bae: ; 49bae
push hl
push bc
push de
ld a, d
ld d, $3
ld e, d
cp $0
jr z, .asm_49bd0
cp d
jr z, .asm_49bd4
call Function49bed
cp d
jr z, .asm_49bd8
call Function49bed
cp d
jr z, .asm_49bdc
call Function49bed
cp d
jr c, .asm_49be9
jr .asm_49be5
.asm_49bd0
ld a, $84
jr .asm_49bde
.asm_49bd4
ld a, $88
jr .asm_49bde
.asm_49bd8
ld a, $8c
jr .asm_49bde
.asm_49bdc
ld a, $90
.asm_49bde
ld hl, $3
add hl, bc
ld [hl], a
jr .asm_49be9
.asm_49be5
pop de
ld d, $ff
push de
.asm_49be9
pop de
pop bc
pop hl
ret
; 49bed
Function49bed: ; 49bed
push af
ld a, d
add e
ld d, a
pop af
ret
; 49bf3
Function49bf3: ; 49bf3
ld a, BATTLETYPE_CELEBI
ld [BattleType], a
ret
; 49bf9
CheckCaughtCelebi: ; 49bf9
ld a, [wBattleResult]
bit 6, a
jr z, .false
ld a, $1
ld [ScriptVar], a
jr .done
.false
xor a
ld [ScriptVar], a
.done
ret
; 49c0c