mirror of
https://github.com/thornAvery/jep-hack.git
synced 2026-02-07 16:45:24 +13:00
First Commit
Upload literally everything from the pokecrystal16 expand-move-ID branch
This commit is contained in:
commit
2f8a41f833
4618 changed files with 480386 additions and 0 deletions
445
engine/events/field_moves.asm
Normal file
445
engine/events/field_moves.asm
Normal file
|
|
@ -0,0 +1,445 @@
|
|||
DEF FIELDMOVE_GRASS EQU $80
|
||||
DEF FIELDMOVE_TREE EQU $84
|
||||
DEF FIELDMOVE_FLY EQU $84
|
||||
|
||||
PlayWhirlpoolSound:
|
||||
call WaitSFX
|
||||
ld de, SFX_SURF
|
||||
call PlaySFX
|
||||
call WaitSFX
|
||||
ret
|
||||
|
||||
BlindingFlash:
|
||||
farcall FadeOutPalettes
|
||||
ld hl, wStatusFlags
|
||||
set STATUSFLAGS_FLASH_F, [hl]
|
||||
farcall ReplaceTimeOfDayPals
|
||||
farcall UpdateTimeOfDayPal
|
||||
ld b, SCGB_MAPPALS
|
||||
call GetSGBLayout
|
||||
farcall LoadOW_BGPal7
|
||||
farcall FadeInPalettes
|
||||
ret
|
||||
|
||||
ShakeHeadbuttTree:
|
||||
farcall ClearSpriteAnims
|
||||
ld de, CutGrassGFX
|
||||
ld hl, vTiles0 tile FIELDMOVE_GRASS
|
||||
lb bc, BANK(CutGrassGFX), 4
|
||||
call Request2bpp
|
||||
ld de, HeadbuttTreeGFX
|
||||
ld hl, vTiles0 tile FIELDMOVE_TREE
|
||||
lb bc, BANK(HeadbuttTreeGFX), 8
|
||||
call Request2bpp
|
||||
call Cut_Headbutt_GetPixelFacing
|
||||
ld a, SPRITE_ANIM_INDEX_HEADBUTT
|
||||
call InitSpriteAnimStruct
|
||||
ld hl, SPRITEANIMSTRUCT_TILE_ID
|
||||
add hl, bc
|
||||
ld [hl], FIELDMOVE_TREE
|
||||
ld a, 36 * SPRITEOAMSTRUCT_LENGTH
|
||||
ld [wCurSpriteOAMAddr], a
|
||||
farcall DoNextFrameForAllSprites
|
||||
call HideHeadbuttTree
|
||||
ld a, 32
|
||||
ld [wFrameCounter], a
|
||||
call WaitSFX
|
||||
ld de, SFX_SANDSTORM
|
||||
call PlaySFX
|
||||
.loop
|
||||
ld hl, wFrameCounter
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .done
|
||||
dec [hl]
|
||||
ld a, 36 * SPRITEOAMSTRUCT_LENGTH
|
||||
ld [wCurSpriteOAMAddr], a
|
||||
farcall DoNextFrameForAllSprites
|
||||
call DelayFrame
|
||||
jr .loop
|
||||
|
||||
.done
|
||||
call OverworldTextModeSwitch
|
||||
call WaitBGMap
|
||||
xor a
|
||||
ldh [hBGMapMode], a
|
||||
farcall ClearSpriteAnims
|
||||
ld hl, wShadowOAMSprite36
|
||||
ld bc, wShadowOAMEnd - wShadowOAMSprite36
|
||||
xor a
|
||||
call ByteFill
|
||||
ld de, Font
|
||||
ld hl, vTiles1
|
||||
lb bc, BANK(Font), 12
|
||||
call Get1bpp
|
||||
call UpdatePlayerSprite
|
||||
ret
|
||||
|
||||
HeadbuttTreeGFX:
|
||||
INCBIN "gfx/overworld/headbutt_tree.2bpp"
|
||||
|
||||
HideHeadbuttTree:
|
||||
xor a
|
||||
ldh [hBGMapMode], a
|
||||
ld a, [wPlayerDirection]
|
||||
and %00001100
|
||||
srl a
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, TreeRelativeLocationTable
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
|
||||
ld a, $05 ; grass block
|
||||
ld [hli], a
|
||||
ld [hld], a
|
||||
ld bc, SCREEN_WIDTH
|
||||
add hl, bc
|
||||
ld [hli], a
|
||||
ld [hld], a
|
||||
call WaitBGMap
|
||||
xor a
|
||||
ldh [hBGMapMode], a
|
||||
ret
|
||||
|
||||
TreeRelativeLocationTable:
|
||||
dwcoord 8, 8 + 2 ; RIGHT
|
||||
dwcoord 8, 8 - 2 ; LEFT
|
||||
dwcoord 8 - 2, 8 ; DOWN
|
||||
dwcoord 8 + 2, 8 ; UP
|
||||
|
||||
OWCutAnimation:
|
||||
; Animation index in e
|
||||
; 0: Split tree in half
|
||||
; 1: Mow the lawn
|
||||
ld a, e
|
||||
and 1
|
||||
ld [wJumptableIndex], a
|
||||
call .LoadCutGFX
|
||||
call WaitSFX
|
||||
ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
|
||||
call PlaySFX
|
||||
.loop
|
||||
ld a, [wJumptableIndex]
|
||||
bit 7, a
|
||||
jr nz, .finish
|
||||
ld a, 36 * SPRITEOAMSTRUCT_LENGTH
|
||||
ld [wCurSpriteOAMAddr], a
|
||||
callfar DoNextFrameForAllSprites
|
||||
call OWCutJumptable
|
||||
call DelayFrame
|
||||
jr .loop
|
||||
|
||||
.finish
|
||||
ret
|
||||
|
||||
.LoadCutGFX:
|
||||
callfar ClearSpriteAnims ; pointless to farcall
|
||||
ld de, CutGrassGFX
|
||||
ld hl, vTiles0 tile FIELDMOVE_GRASS
|
||||
lb bc, BANK(CutGrassGFX), 4
|
||||
call Request2bpp
|
||||
ld de, CutTreeGFX
|
||||
ld hl, vTiles0 tile FIELDMOVE_TREE
|
||||
lb bc, BANK(CutTreeGFX), 4
|
||||
call Request2bpp
|
||||
ret
|
||||
|
||||
CutTreeGFX:
|
||||
INCBIN "gfx/overworld/cut_tree.2bpp"
|
||||
|
||||
CutGrassGFX:
|
||||
INCBIN "gfx/overworld/cut_grass.2bpp"
|
||||
|
||||
OWCutJumptable:
|
||||
jumptable .dw, wJumptableIndex
|
||||
|
||||
.dw
|
||||
dw Cut_SpawnAnimateTree
|
||||
dw Cut_SpawnAnimateLeaves
|
||||
dw Cut_StartWaiting
|
||||
dw Cut_WaitAnimSFX
|
||||
|
||||
Cut_SpawnAnimateTree:
|
||||
call Cut_Headbutt_GetPixelFacing
|
||||
ld a, SPRITE_ANIM_INDEX_CUT_TREE ; cut tree
|
||||
call InitSpriteAnimStruct
|
||||
ld hl, SPRITEANIMSTRUCT_TILE_ID
|
||||
add hl, bc
|
||||
ld [hl], FIELDMOVE_TREE
|
||||
ld a, 32
|
||||
ld [wFrameCounter], a
|
||||
; Cut_StartWaiting
|
||||
ld hl, wJumptableIndex
|
||||
inc [hl]
|
||||
inc [hl]
|
||||
ret
|
||||
|
||||
Cut_SpawnAnimateLeaves:
|
||||
call Cut_GetLeafSpawnCoords
|
||||
xor a
|
||||
call Cut_SpawnLeaf
|
||||
ld a, $10
|
||||
call Cut_SpawnLeaf
|
||||
ld a, $20
|
||||
call Cut_SpawnLeaf
|
||||
ld a, $30
|
||||
call Cut_SpawnLeaf
|
||||
ld a, 32 ; frames
|
||||
ld [wFrameCounter], a
|
||||
; Cut_StartWaiting
|
||||
ld hl, wJumptableIndex
|
||||
inc [hl]
|
||||
ret
|
||||
|
||||
Cut_StartWaiting:
|
||||
ld a, 1
|
||||
ldh [hBGMapMode], a
|
||||
; Cut_WaitAnimSFX
|
||||
ld hl, wJumptableIndex
|
||||
inc [hl]
|
||||
|
||||
Cut_WaitAnimSFX:
|
||||
ld hl, wFrameCounter
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .finished
|
||||
dec [hl]
|
||||
ret
|
||||
|
||||
.finished
|
||||
ld hl, wJumptableIndex
|
||||
set 7, [hl]
|
||||
ret
|
||||
|
||||
Cut_SpawnLeaf:
|
||||
push de
|
||||
push af
|
||||
ld a, SPRITE_ANIM_INDEX_LEAF ; leaf
|
||||
call InitSpriteAnimStruct
|
||||
ld hl, SPRITEANIMSTRUCT_TILE_ID
|
||||
add hl, bc
|
||||
ld [hl], FIELDMOVE_GRASS
|
||||
ld hl, SPRITEANIMSTRUCT_VAR3
|
||||
add hl, bc
|
||||
ld [hl], $4
|
||||
pop af
|
||||
ld hl, SPRITEANIMSTRUCT_VAR1
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
pop de
|
||||
ret
|
||||
|
||||
Cut_GetLeafSpawnCoords:
|
||||
ld de, 0
|
||||
ld a, [wPlayerMetatileX]
|
||||
bit 0, a
|
||||
jr z, .left_side
|
||||
set 0, e
|
||||
.left_side
|
||||
ld a, [wPlayerMetatileY]
|
||||
bit 0, a
|
||||
jr z, .top_side
|
||||
set 1, e
|
||||
.top_side
|
||||
ld a, [wPlayerDirection]
|
||||
and %00001100
|
||||
add e
|
||||
ld e, a
|
||||
ld hl, .Coords
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld e, [hl]
|
||||
inc hl
|
||||
ld d, [hl]
|
||||
ret
|
||||
|
||||
.Coords:
|
||||
dbpixel 11, 12 ; facing down, top left
|
||||
dbpixel 9, 12 ; facing down, top right
|
||||
dbpixel 11, 14 ; facing down, bottom left
|
||||
dbpixel 9, 14 ; facing down, bottom right
|
||||
|
||||
dbpixel 11, 8 ; facing up, top left
|
||||
dbpixel 9, 8 ; facing up, top right
|
||||
dbpixel 11, 10 ; facing up, bottom left
|
||||
dbpixel 9, 10 ; facing up, bottom right
|
||||
|
||||
dbpixel 7, 12 ; facing left, top left
|
||||
dbpixel 9, 12 ; facing left, top right
|
||||
dbpixel 7, 10 ; facing left, bottom left
|
||||
dbpixel 9, 10 ; facing left, bottom right
|
||||
|
||||
dbpixel 11, 12 ; facing right, top left
|
||||
dbpixel 13, 12 ; facing right, top right
|
||||
dbpixel 11, 10 ; facing right, bottom left
|
||||
dbpixel 13, 10 ; facing right, bottom right
|
||||
|
||||
Cut_Headbutt_GetPixelFacing:
|
||||
ld a, [wPlayerDirection]
|
||||
and %00001100
|
||||
srl a
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, .Coords
|
||||
add hl, de
|
||||
ld e, [hl]
|
||||
inc hl
|
||||
ld d, [hl]
|
||||
ret
|
||||
|
||||
.Coords:
|
||||
dbpixel 10, 13
|
||||
dbpixel 10, 9
|
||||
dbpixel 8, 11
|
||||
dbpixel 12, 11
|
||||
|
||||
FlyFromAnim:
|
||||
call DelayFrame
|
||||
ld a, [wVramState]
|
||||
push af
|
||||
xor a
|
||||
ld [wVramState], a
|
||||
call FlyFunction_InitGFX
|
||||
depixel 10, 10, 4, 0
|
||||
ld a, SPRITE_ANIM_INDEX_RED_WALK
|
||||
call InitSpriteAnimStruct
|
||||
ld hl, SPRITEANIMSTRUCT_TILE_ID
|
||||
add hl, bc
|
||||
ld [hl], FIELDMOVE_FLY
|
||||
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
|
||||
add hl, bc
|
||||
ld [hl], SPRITE_ANIM_SEQ_FLY_FROM
|
||||
ld a, 128
|
||||
ld [wFrameCounter], a
|
||||
.loop
|
||||
ld a, [wJumptableIndex]
|
||||
bit 7, a
|
||||
jr nz, .exit
|
||||
ld a, 0 * SPRITEOAMSTRUCT_LENGTH
|
||||
ld [wCurSpriteOAMAddr], a
|
||||
callfar DoNextFrameForAllSprites
|
||||
call FlyFunction_FrameTimer
|
||||
call DelayFrame
|
||||
jr .loop
|
||||
|
||||
.exit
|
||||
pop af
|
||||
ld [wVramState], a
|
||||
ret
|
||||
|
||||
FlyToAnim:
|
||||
call DelayFrame
|
||||
ld a, [wVramState]
|
||||
push af
|
||||
xor a
|
||||
ld [wVramState], a
|
||||
call FlyFunction_InitGFX
|
||||
depixel 31, 10, 4, 0
|
||||
ld a, SPRITE_ANIM_INDEX_RED_WALK
|
||||
call InitSpriteAnimStruct
|
||||
ld hl, SPRITEANIMSTRUCT_TILE_ID
|
||||
add hl, bc
|
||||
ld [hl], FIELDMOVE_FLY
|
||||
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
|
||||
add hl, bc
|
||||
ld [hl], SPRITE_ANIM_SEQ_FLY_TO
|
||||
ld hl, SPRITEANIMSTRUCT_VAR4
|
||||
add hl, bc
|
||||
ld [hl], 11 * 8
|
||||
ld a, 64
|
||||
ld [wFrameCounter], a
|
||||
.loop
|
||||
ld a, [wJumptableIndex]
|
||||
bit 7, a
|
||||
jr nz, .exit
|
||||
ld a, 0 * SPRITEOAMSTRUCT_LENGTH
|
||||
ld [wCurSpriteOAMAddr], a
|
||||
callfar DoNextFrameForAllSprites
|
||||
call FlyFunction_FrameTimer
|
||||
call DelayFrame
|
||||
jr .loop
|
||||
|
||||
.exit
|
||||
pop af
|
||||
ld [wVramState], a
|
||||
call .RestorePlayerSprite_DespawnLeaves
|
||||
ret
|
||||
|
||||
.RestorePlayerSprite_DespawnLeaves:
|
||||
ld hl, wShadowOAMSprite00TileID
|
||||
xor a
|
||||
ld c, 4
|
||||
.OAMloop
|
||||
ld [hli], a ; tile id
|
||||
rept SPRITEOAMSTRUCT_LENGTH - 1
|
||||
inc hl
|
||||
endr
|
||||
inc a
|
||||
dec c
|
||||
jr nz, .OAMloop
|
||||
ld hl, wShadowOAMSprite04
|
||||
ld bc, wShadowOAMEnd - wShadowOAMSprite04
|
||||
xor a
|
||||
call ByteFill
|
||||
ret
|
||||
|
||||
FlyFunction_InitGFX:
|
||||
callfar ClearSpriteAnims
|
||||
ld de, CutGrassGFX
|
||||
ld hl, vTiles0 tile FIELDMOVE_GRASS
|
||||
lb bc, BANK(CutGrassGFX), 4
|
||||
call Request2bpp
|
||||
ld a, [wCurPartyMon]
|
||||
ld hl, wPartySpecies
|
||||
ld e, a
|
||||
ld d, 0
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
ld [wTempIconSpecies], a
|
||||
ld e, FIELDMOVE_FLY
|
||||
farcall FlyFunction_GetMonIcon
|
||||
xor a
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
FlyFunction_FrameTimer:
|
||||
call .SpawnLeaf
|
||||
ld hl, wFrameCounter
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .exit
|
||||
dec [hl]
|
||||
cp $40
|
||||
ret c
|
||||
and $7
|
||||
ret nz
|
||||
ld de, SFX_FLY
|
||||
call PlaySFX
|
||||
ret
|
||||
|
||||
.exit
|
||||
ld hl, wJumptableIndex
|
||||
set 7, [hl]
|
||||
ret
|
||||
|
||||
.SpawnLeaf:
|
||||
ld hl, wFrameCounter2
|
||||
ld a, [hl]
|
||||
inc [hl]
|
||||
and $7
|
||||
ret nz
|
||||
ld a, [hl]
|
||||
and (6 * 8) >> 1
|
||||
sla a
|
||||
add 8 * 8 ; gives a number in [$40, $50, $60, $70]
|
||||
ld d, a
|
||||
ld e, 0
|
||||
ld a, SPRITE_ANIM_INDEX_FLY_LEAF
|
||||
call InitSpriteAnimStruct
|
||||
ld hl, SPRITEANIMSTRUCT_TILE_ID
|
||||
add hl, bc
|
||||
ld [hl], FIELDMOVE_GRASS
|
||||
ret
|
||||
Loading…
Add table
Add a link
Reference in a new issue