summaryrefslogtreecommitdiff
path: root/event/field_moves.asm
diff options
context:
space:
mode:
Diffstat (limited to 'event/field_moves.asm')
-rwxr-xr-xevent/field_moves.asm326
1 files changed, 243 insertions, 83 deletions
diff --git a/event/field_moves.asm b/event/field_moves.asm
index d6fa4a0bb..38a6a1c29 100755
--- a/event/field_moves.asm
+++ b/event/field_moves.asm
@@ -9,18 +9,18 @@ PlayWhirlpoolSound: ; 8c7d4
BlindingFlash: ; 8c7e1
callba FadeOutPalettes
ld hl, StatusFlags
- set 2, [hl]
- callba Function8c0e5
- callba Function8c001
- ld b, SCGB_09
+ set 2, [hl] ; Flash
+ callba ReplaceTimeOfDayPals
+ callba UpdateTimeOfDayPal
+ ld b, SCGB_MAPPALS
call GetSGBLayout
- callba Function49409
+ callba LoadOW_BGPal7
callba FadeInPalettes
ret
; 8c80a
ShakeHeadbuttTree: ; 8c80a
- callba Function8cf53
+ callba ClearSpriteAnims
ld de, CutGrassGFX
ld hl, VTiles1
lb bc, BANK(CutGrassGFX), 4
@@ -29,16 +29,16 @@ ShakeHeadbuttTree: ; 8c80a
ld hl, VTiles1 tile $04
lb bc, BANK(HeadbuttTreeGFX), 8
call Request2bpp
- call Function8cad3
+ call Cut_Headbutt_GetPixelFacing
ld a, SPRITE_ANIM_INDEX_1B
call _InitSpriteAnimStruct
- ld hl, $3
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $84
- ld a, $90
- ld [wc3b5], a
- callba Function8cf7a
- call GetHeadbuttTreeRelativeLocation
+ ld a, 36 * 4
+ ld [wCurrSpriteOAMAddr], a
+ callba DoNextFrameForAllSprites
+ call HideHeadbuttTree
ld a, $20
ld [wcf64], a
call WaitSFX
@@ -50,9 +50,9 @@ ShakeHeadbuttTree: ; 8c80a
and a
jr z, .done
dec [hl]
- ld a, $90
- ld [wc3b5], a
- callba Function8cf7a
+ ld a, 36 * 4
+ ld [wCurrSpriteOAMAddr], a
+ callba DoNextFrameForAllSprites
call DelayFrame
jr .loop
@@ -61,14 +61,14 @@ ShakeHeadbuttTree: ; 8c80a
call WaitBGMap
xor a
ld [hBGMapMode], a
- callba Function8cf53
- ld hl, Sprites + $90
- ld bc, $10
+ callba ClearSpriteAnims
+ ld hl, Sprites + 36 * 4
+ ld bc, SpritesEnd - (Sprites + 36 * 4)
xor a
call ByteFill
ld de, Font
ld hl, VTiles1
- lb bc, BANK(Font), $c
+ lb bc, BANK(Font), 12
call Get1bpp
call ReplaceKrisSprite
ret
@@ -78,7 +78,7 @@ HeadbuttTreeGFX: ; 8c893
INCBIN "gfx/unknown/08c893.2bpp"
; 8c913
-GetHeadbuttTreeRelativeLocation: ; 8c913
+HideHeadbuttTree: ; 8c913
xor a
ld [hBGMapMode], a
ld a, [PlayerDirection]
@@ -113,6 +113,9 @@ TreeRelativeLocationTable: ; 8c938
; 8c940
OWCutAnimation: ; 8c940
+ ; Animation index in e
+ ; 0: Split tree in half
+ ; 1: Mow the lawn
ld a, e
and $1
ld [wJumptableIndex], a
@@ -124,9 +127,9 @@ OWCutAnimation: ; 8c940
ld a, [wJumptableIndex]
bit 7, a
jr nz, .finish
- ld a, $90
- ld [wc3b5], a
- callab Function8cf7a
+ ld a, 36 * 4
+ ld [wCurrSpriteOAMAddr], a
+ callab DoNextFrameForAllSprites
call OWCutJumptable
call DelayFrame
jr .loop
@@ -136,7 +139,7 @@ OWCutAnimation: ; 8c940
; 8c96d
.LoadCutGFX: ; 8c96d
- callab Function8cf53 ; pointless to farcall
+ callab ClearSpriteAnims ; pointless to farcall
ld de, CutGrassGFX
ld hl, VTiles1
lb bc, BANK(CutGrassGFX), 4
@@ -172,96 +175,100 @@ endr
.jumptable: ; 8ca1b (23:4a1b)
- dw Function8ca23
- dw Function8ca3c
- dw Function8ca5c
- dw Function8ca64
+ dw Cut_SpawnAnimateTree
+ dw Cut_SpawnAnimateLeaves
+ dw Cut_StartWaiting
+ dw Cut_WaitAnimSFX
-Function8ca23: ; 8ca23 (23:4a23)
- call Function8cad3
- ld a, SPRITE_ANIM_INDEX_17 ; leaf
+Cut_SpawnAnimateTree: ; 8ca23 (23:4a23)
+ call Cut_Headbutt_GetPixelFacing
+ ld a, SPRITE_ANIM_INDEX_CUT_TREE ; cut tree
call _InitSpriteAnimStruct
- ld hl, $3
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $84
- ld a, $20
+ ld a, 32
ld [wcf64], a
+; Cut_StartWaiting
ld hl, wJumptableIndex
rept 2
inc [hl]
endr
ret
-Function8ca3c: ; 8ca3c (23:4a3c)
- call Function8ca8e
+Cut_SpawnAnimateLeaves: ; 8ca3c (23:4a3c)
+ call Cut_GetLeafSpawnCoords
xor a
- call Function8ca73
+ call Cut_SpawnLeaf
ld a, $10
- call Function8ca73
+ call Cut_SpawnLeaf
ld a, $20
- call Function8ca73
+ call Cut_SpawnLeaf
ld a, $30
- call Function8ca73
- ld a, $20
+ call Cut_SpawnLeaf
+ ld a, 32 ; frames
ld [wcf64], a
+; Cut_StartWaiting
ld hl, wJumptableIndex
inc [hl]
ret
-Function8ca5c: ; 8ca5c (23:4a5c)
+Cut_StartWaiting: ; 8ca5c (23:4a5c)
ld a, $1
ld [hBGMapMode], a
+; Cut_WaitAnimSFX
ld hl, wJumptableIndex
inc [hl]
-Function8ca64: ; 8ca64 (23:4a64)
+Cut_WaitAnimSFX: ; 8ca64 (23:4a64)
ld hl, wcf64
ld a, [hl]
and a
- jr z, .asm_8ca6d
+ jr z, .finished
dec [hl]
ret
-.asm_8ca6d
+
+.finished
ld hl, wJumptableIndex
set 7, [hl]
ret
-Function8ca73: ; 8ca73 (23:4a73)
+Cut_SpawnLeaf: ; 8ca73 (23:4a73)
push de
push af
- ld a, SPRITE_ANIM_INDEX_16 ; fly takeoff
+ ld a, SPRITE_ANIM_INDEX_LEAF ; leaf
call _InitSpriteAnimStruct
- ld hl, $3
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $80
- ld hl, $e
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
ld [hl], $4
pop af
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], a
pop de
ret
-Function8ca8e: ; 8ca8e (23:4a8e)
+Cut_GetLeafSpawnCoords: ; 8ca8e (23:4a8e)
ld de, 0
- ld a, [wd197]
+ ld a, [wMetatileStandingX]
bit 0, a
- jr z, .asm_8ca9a
+ jr z, .left_side
set 0, e
-.asm_8ca9a
- ld a, [wd196]
+.left_side
+ ld a, [wMetatileStandingY]
bit 0, a
- jr z, .asm_8caa3
+ jr z, .top_side
set 1, e
-.asm_8caa3
+.top_side
ld a, [PlayerDirection]
- and $c
+ and %00001100
add e
ld e, a
- ld hl, Unknown_8cab3
+ ld hl, .Coords
rept 2
add hl, de
endr
@@ -271,32 +278,35 @@ endr
ret
; 8cab3 (23:4ab3)
-Unknown_8cab3: ; 8cab3
- db $58, $60
- db $48, $60
- db $58, $70
- db $48, $70
- db $58, $40
- db $48, $40
- db $58, $50
- db $48, $50
- db $38, $60
- db $48, $60
- db $38, $50
- db $48, $50
- db $58, $60
- db $68, $60
- db $58, $50
- db $68, $50
+.Coords: ; 8cab3
+ 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
; 8cad3
-Function8cad3: ; 8cad3 (23:4ad3)
+Cut_Headbutt_GetPixelFacing: ; 8cad3 (23:4ad3)
ld a, [PlayerDirection]
- and $c
+ and %00001100
srl a
ld e, a
ld d, 0
- ld hl, Unknown_8cae5
+ ld hl, .Coords
add hl, de
ld e, [hl]
inc hl
@@ -304,9 +314,159 @@ Function8cad3: ; 8cad3 (23:4ad3)
ret
; 8cae5 (23:4ae5)
-Unknown_8cae5: ; 8cae5
- db $50, $68
- db $50, $48
- db $40, $58
- db $60, $58
+.Coords: ; 8cae5
+ dbpixel 10, 13
+ dbpixel 10, 9
+ dbpixel 8, 11
+ dbpixel 12, 11
; 8caed
+
+
+FlyFromAnim: ; 8caed
+ call DelayFrame
+ ld a, [VramState]
+ push af
+ xor a
+ ld [VramState], a
+ call FlyFunction_InitGFX
+ depixel 10, 10, 4, 0
+ ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
+ add hl, bc
+ ld [hl], $84
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], SPRITE_ANIM_SEQ_FLY_FROM
+ ld a, 128
+ ld [wcf64], a
+.loop
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .exit
+ ld a, 0 * 4
+ ld [wCurrSpriteOAMAddr], a
+ callab DoNextFrameForAllSprites
+ call FlyFunction_FrameTimer
+ call DelayFrame
+ jr .loop
+
+.exit
+ pop af
+ ld [VramState], a
+ ret
+; 8cb33
+
+FlyToAnim: ; 8cb33
+ call DelayFrame
+ ld a, [VramState]
+ push af
+ xor a
+ ld [VramState], a
+ call FlyFunction_InitGFX
+ depixel 31, 10, 4, 0
+ ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
+ add hl, bc
+ ld [hl], $84
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], SPRITE_ANIM_SEQ_FLY_TO
+ ld hl, SPRITEANIMSTRUCT_0F
+ add hl, bc
+ ld [hl], 11 * 8
+ ld a, 64
+ ld [wcf64], a
+.loop
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .exit
+ ld a, 0 * 4
+ ld [wCurrSpriteOAMAddr], a
+ callab DoNextFrameForAllSprites
+ call FlyFunction_FrameTimer
+ call DelayFrame
+ jr .loop
+
+.exit
+ pop af
+ ld [VramState], a
+ call .RestorePlayerSprite_DespawnLeaves
+ ret
+
+.RestorePlayerSprite_DespawnLeaves: ; 8cb82 (23:4b82)
+ ld hl, Sprites + 2 ; Tile ID
+ xor a
+ ld c, $4
+.loop2
+ ld [hli], a
+rept 3
+ inc hl
+endr
+ inc a
+ dec c
+ jr nz, .loop2
+ ld hl, Sprites + 4 * 4
+ ld bc, SpritesEnd - (Sprites + 4 * 4)
+ xor a
+ call ByteFill
+ ret
+
+FlyFunction_InitGFX: ; 8cb9b (23:4b9b)
+ callab ClearSpriteAnims
+ ld de, CutGrassGFX
+ ld hl, VTiles1 tile $00
+ lb bc, BANK(CutGrassGFX), 4
+ call Request2bpp
+ ld a, [CurPartyMon]
+ ld hl, PartySpecies
+ ld e, a
+ ld d, 0
+ add hl, de
+ ld a, [hl]
+ ld [wd265], a
+ ld e, $84
+ callba FlyFunction_GetMonIcon
+ xor a
+ ld [wJumptableIndex], a
+ ret
+
+FlyFunction_FrameTimer: ; 8cbc8 (23:4bc8)
+ call .SpawnLeaf
+ ld hl, wcf64
+ 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: ; 8cbe6 (23:4be6)
+ ld hl, wcf65
+ 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 ; fly land
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
+ add hl, bc
+ ld [hl], $80
+ ret