ref: 29afa24f0bf3368a1cba6869de4f8290d2a6f0dd
parent: 8bb8546497e8365740a83e40edda12e9328e5bc7
author: yenatch <[email protected]>
date: Fri Nov 22 21:33:53 EST 2013
split more event handling out of main
--- /dev/null
+++ b/engine/events_2.asm
@@ -1,0 +1,643 @@
+; More overworld event handling.
+
+Function97c28: ; 97c28
+ ld hl, StatusFlags2
+ res 1, [hl]
+ res 2, [hl]
+ ret
+; 97c30
+
+Function97c30: ; 97c30
+ ld a, [$d45c]
+ and a
+ ret z
+ ld hl, $d45e
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$d45d]
+ call CallScript
+ scf
+ push af
+ xor a
+ ld hl, $d45c
+ ld bc, 8
+ call ByteFill
+ pop af
+ ret
+; 97c4f
+
+Function97c4f: ; 97c4f
+ ld hl, $d45c
+ ld a, [hl]
+ and a
+ ret nz
+ ld [hl], 1
+ inc hl
+ ld [hl], b
+ inc hl
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ scf
+ ret
+; 97c5f
+
+Function97c5f: ; 97c5f
+ call GetFacingTileCoord
+ ld [EngineBuffer1], a
+ ld c, a
+ callba Function1365b
+ jr c, .asm_97cb9
+
+ call CheckCutTreeTile
+ jr nz, .whirlpool
+ callba TryCutOW
+ jr .asm_97cb9
+
+.whirlpool
+ ld a, [EngineBuffer1]
+ call CheckWhirlpoolTile
+ jr nz, .waterfall
+ callba TryWhirlpoolOW
+ jr .asm_97cb9
+
+.waterfall
+ ld a, [EngineBuffer1]
+ call CheckWaterfallTile
+ jr nz, .headbutt
+ callba TryWaterfallOW
+ jr .asm_97cb9
+
+.headbutt
+ ld a, [EngineBuffer1]
+ call CheckHeadbuttTreeTile
+ jr nz, .surf
+ callba TryHeadbuttOW
+ jr c, .asm_97cb9
+ jr .asm_97cb7
+
+.surf
+ callba TrySurfOW
+ jr nc, .asm_97cb7
+ jr .asm_97cb9
+
+.asm_97cb7
+ xor a
+ ret
+
+.asm_97cb9
+ call PlayClickSFX
+ ld a, $ff
+ scf
+ ret
+; 97cc0
+
+
+Function97cc0: ; 97cc0
+; Rock Smash encounter
+
+ call Function968c7
+ jr c, .asm_97ce2
+ call Function97cfd
+ jr nc, .asm_97ce2
+ ld hl, StatusFlags2
+ bit 2, [hl]
+ jr nz, .asm_97cdb
+ callba Function2a0e7
+ jr nz, .asm_97ce2
+ jr .asm_97ce6
+
+.asm_97cdb
+ call Function97d23
+ jr nc, .asm_97ce2
+ jr .asm_97ced
+
+.asm_97ce2
+ ld a, 1
+ and a
+ ret
+
+.asm_97ce6
+ ld a, BANK(RockSmashBattleScript)
+ ld hl, RockSmashBattleScript
+ jr .asm_97cf4
+
+.asm_97ced
+ ld a, BANK(UnknownScript_0x135eb)
+ ld hl, UnknownScript_0x135eb
+ jr .asm_97cf4
+
+.asm_97cf4
+ call CallScript
+ scf
+ ret
+; 97cf9
+
+RockSmashBattleScript: ; 97cf9
+ battlecheck
+ startbattle
+ returnafterbattle
+ end
+; 97cfd
+
+Function97cfd: ; 97cfd
+ ld hl, StatusFlags
+ bit 5, [hl]
+ jr nz, .asm_97d21
+ ld a, [$d19a]
+ cp $4
+ jr z, .asm_97d17
+ cp $7
+ jr z, .asm_97d17
+ callba Function149dd
+ jr nc, .asm_97d21
+
+.asm_97d17
+ ld a, [StandingTile]
+ call CheckIceTile
+ jr z, .asm_97d21
+ scf
+ ret
+
+.asm_97d21
+ and a
+ ret
+; 97d23
+
+Function97d23: ; 97d23
+ call Function97d64
+ ret nc
+ call Function97d31
+ callba Function2a1df
+ ret
+; 97d31
+
+Function97d31: ; 97d31
+; Pick a random mon out of ContestMons.
+
+.asm_97d31
+ call Random
+ cp 100 << 1
+ jr nc, .asm_97d31
+ srl a
+
+ ld hl, ContestMons
+ ld de, 4
+.CheckMon
+ sub [hl]
+ jr c, .GotMon
+ add hl, de
+ jr .CheckMon
+
+.GotMon
+ inc hl
+
+; Species
+ ld a, [hli]
+ ld [$d22e], a
+
+; Min level
+ ld a, [hli]
+ ld d, a
+
+; Max level
+ ld a, [hl]
+
+ sub d
+ jr nz, .RandomLevel
+
+; If min and max are the same.
+ ld a, d
+ jr .GotLevel
+
+.RandomLevel
+; Get a random level between the min and max.
+ ld c, a
+ inc c
+ call Random
+ ld a, [hRandomAdd]
+ call SimpleDivide
+ add d
+
+.GotLevel
+ ld [CurPartyLevel], a
+
+ xor a
+ ret
+; 97d64
+
+Function97d64: ; 97d64
+ ld a, [StandingTile]
+ call Function188e
+ ld b, $66
+ jr z, .asm_97d70
+ ld b, $33
+
+.asm_97d70
+ callba Function2a124
+ callba Function2a138
+ call Random
+ ld a, [hRandomAdd]
+ cp b
+ ret c
+ ld a, 1
+ and a
+ ret
+; 97d87
+
+ContestMons: ; 97d87
+ ; %, species, min, max
+ db 20, CATERPIE, 7, 18
+ db 20, WEEDLE, 7, 18
+ db 10, METAPOD, 9, 18
+ db 10, KAKUNA, 9, 18
+ db 5, BUTTERFREE, 12, 15
+ db 5, BEEDRILL, 12, 15
+ db 10, VENONAT, 10, 16
+ db 10, PARAS, 10, 17
+ db 5, SCYTHER, 13, 14
+ db 5, PINSIR, 13, 14
+ db -1, VENOMOTH, 30, 40
+; 97db3
+
+Function97db3: ; 97db3
+ nop
+ nop
+ ; fallthrough
+; 97db5
+
+Function97db5: ; 97db5
+ ld hl, StatusFlags2
+ bit 4, [hl]
+ jr z, .asm_97df7
+ ld a, [PlayerState]
+ cp $1
+ jr nz, .asm_97df7
+ call Function2d05
+ and a
+ jr nz, .asm_97df7
+ ld hl, $dca2
+ ld a, [hli]
+ ld d, a
+ ld e, [hl]
+ cp $ff
+ jr nz, .asm_97dd8
+ ld a, e
+ cp $ff
+ jr z, .asm_97ddc
+
+.asm_97dd8
+ inc de
+ ld [hl], e
+ dec hl
+ ld [hl], d
+
+.asm_97ddc
+ ld a, d
+ cp $4
+ jr c, .asm_97df7
+ ld a, [$dc31]
+ and a
+ jr nz, .asm_97df7
+ ld a, $6
+ ld [$dc31], a
+ xor a
+ ld [$dc32], a
+ ld hl, StatusFlags2
+ res 4, [hl]
+ scf
+ ret
+
+.asm_97df7
+ xor a
+ ret
+; 97df9
+
+Function97df9: ; 97df9
+ ld hl, $d6de
+ ld de, $0006
+ ld c, $4
+ xor a
+.asm_97e02
+ ld [hl], a
+ add hl, de
+ dec c
+ jr nz, .asm_97e02
+ ret
+; 97e08
+
+Function97e08: ; 97e08
+ ld hl, $d6de
+ xor a
+.asm_97e0c
+ ld [hConnectionStripLength], a
+ ld a, [hl]
+ and a
+ jr z, .asm_97e19
+ push hl
+ ld b, h
+ ld c, l
+ call Function97e79
+ pop hl
+
+.asm_97e19
+ ld de, $0006
+ add hl, de
+ ld a, [hConnectionStripLength]
+ inc a
+ cp $4
+ jr nz, .asm_97e0c
+ ret
+; 97e25
+
+Function97e25: ; 97e25
+ ld hl, $d6de
+ ld bc, 6
+ call AddNTimes
+ ld b, h
+ ld c, l
+ ret
+; 97e31
+
+Function97e31: ; 97e31
+ push bc
+ push de
+ call Function97e45
+ ld d, h
+ ld e, l
+ pop hl
+ pop bc
+ ret c
+ ld a, b
+ ld bc, $0005
+ call FarCopyBytes
+ xor a
+ ld [hl], a
+ ret
+; 97e45
+
+Function97e45: ; 97e45
+ ld hl, $d6de
+ ld de, $0006
+ ld c, $4
+.asm_97e4d
+ ld a, [hl]
+ and a
+ jr z, .asm_97e57
+ add hl, de
+ dec c
+ jr nz, .asm_97e4d
+ scf
+ ret
+
+.asm_97e57
+ ld a, $4
+ sub c
+ and a
+ ret
+; 97e5c
+
+Function97e5c: ; 97e5c
+ ld hl, $d6de
+ ld de, $0006
+ ld c, $4
+.asm_97e64
+ ld a, [hl]
+ cp b
+ jr z, .asm_97e6e
+ add hl, de
+ dec c
+ jr nz, .asm_97e64
+ and a
+ ret
+
+.asm_97e6e
+ xor a
+ ld [hl], a
+ scf
+ ret
+; 97e72
+
+Function97e72: ; 97e72
+ ld hl, $0000
+ add hl, bc
+ ld [hl], 0
+ ret
+; 97e79
+
+Function97e79: ; 97e79
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ cp 5
+ jr c, .asm_97e83
+ xor a
+
+.asm_97e83
+ ld e, a
+ ld d, 0
+ ld hl, Table97e94
+ add hl, de
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ push af
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ rst FarCall
+ ret
+; 97e94
+
+Table97e94: ; 97e94
+ dbw BANK(Function97eb7), Function97eb7
+ dbw BANK(Function97eb8), Function97eb8
+ dbw BANK(Function97f42), Function97f42
+ dbw BANK(Function97ef9), Function97ef9
+ dbw BANK(Function97ebc), Function97ebc
+; 97ea3
+
+Function97ea3: ; 97ea3
+ ld hl, $0005
+ add hl, bc
+ ld a, [hl]
+ pop hl
+ rst JumpTable
+ ret
+; 97eab
+
+Function97eab: ; 97eab
+ ld hl, $0005
+ add hl, bc
+ inc [hl]
+ ret
+; 97eb1
+
+Function97eb1: ; 97eb1
+ ld hl, $0005
+ add hl, bc
+ dec [hl]
+ ret
+; 97eb7
+
+Function97eb7: ; 97eb7
+ ret
+; 97eb8
+
+Function97eb8: ; 97eb8
+ call Function2f3e
+ ret
+; 97ebc
+
+Function97ebc: ; 97ebc
+ call Function97ea3
+ dw Function97ec3
+ dw Function97ecd
+; 97ec3
+
+Function97ec3: ; 97ec3
+ ld a, [hSCY]
+ ld hl, $0004
+ add hl, bc
+ ld [hl], a
+ call Function97eab
+; 97ecd
+
+Function97ecd: ; 97ecd
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ dec a
+ ld [hl], a
+ jr z, .asm_97eee
+ and $1
+ jr z, .asm_97ee4
+ ld hl, $0002
+ add hl, bc
+ ld a, [hSCY]
+ sub [hl]
+ ld [hSCY], a
+ ret
+
+.asm_97ee4
+ ld hl, $0002
+ add hl, bc
+ ld a, [hSCY]
+ add [hl]
+ ld [hSCY], a
+ ret
+
+.asm_97eee
+ ld hl, $0004
+ add hl, bc
+ ld a, [hl]
+ ld [hSCY], a
+ call Function97e72
+ ret
+; 97ef9
+
+Function97ef9: ; 97ef9
+ call Function97ea3
+ dw Function97f02
+ dw Function97f0a
+ dw Function97f1b
+; 97f02
+
+Function97f02: ; 97f02
+ call Function97f38
+ jr z, Function97f2c
+ call Function97eab
+; 97f0a
+
+Function97f0a: ; 97f0a
+ call Function97f38
+ jr z, Function97f2c
+ call Function97eab
+
+ ld hl, $0002
+ add hl, bc
+ ld a, [hl]
+ ld [$d173], a
+ ret
+; 97f1b
+
+Function97f1b: ; 97f1b
+ call Function97f38
+ jr z, Function97f2c
+ call Function97eb1
+
+ ld hl, $0003
+ add hl, bc
+ ld a, [hl]
+ ld [$d173], a
+ ret
+; 97f2c
+
+Function97f2c: ; 97f2c
+ ld a, $7f
+ ld [$d173], a
+ ld hl, $0005
+ add hl, bc
+ ld [hl], 0
+ ret
+; 97f38
+
+Function97f38: ; 97f38
+ push bc
+ ld bc, $d4d6
+ call GetSpriteDirection
+ and a
+ pop bc
+ ret
+; 97f42
+
+Function97f42: ; 97f42
+ ld de, $d4d6
+ ld a, $d
+.asm_97f47
+ push af
+
+ ld hl, $0000
+ add hl, de
+ ld a, [hl]
+ and a
+ jr z, .asm_97f71
+
+ ld hl, $0003
+ add hl, de
+ ld a, [hl]
+ cp $19
+ jr nz, .asm_97f71
+
+ ld hl, $000e
+ add hl, de
+ ld a, [hl]
+ call CheckPitTile
+ jr nz, .asm_97f71
+
+ ld hl, $0007
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ jr nz, .asm_97f71
+ call Function3567
+ jr c, .asm_97f7c
+
+.asm_97f71
+ ld hl, $0028
+ add hl, de
+ ld d, h
+ ld e, l
+
+ pop af
+ dec a
+ jr nz, .asm_97f47
+ ret
+
+.asm_97f7c
+ pop af
+ ret
+; 97f7e
+
--- a/main.asm
+++ b/main.asm
@@ -85542,657 +85542,12 @@
SECTION "bank25",ROMX,BANK[$25]
-
INCLUDE "maps/map_headers.asm"
-
INCLUDE "maps/second_map_headers.asm"
-
INCLUDE "engine/events.asm"
-
INCLUDE "engine/scripting.asm"
-
-
-Function97c28: ; 97c28
- ld hl, StatusFlags2
- res 1, [hl]
- res 2, [hl]
- ret
-; 97c30
-
-Function97c30: ; 97c30
- ld a, [$d45c]
- and a
- ret z
- ld hl, $d45e
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [$d45d]
- call CallScript
- scf
- push af
- xor a
- ld hl, $d45c
- ld bc, 8
- call ByteFill
- pop af
- ret
-; 97c4f
-
-Function97c4f: ; 97c4f
- ld hl, $d45c
- ld a, [hl]
- and a
- ret nz
- ld [hl], 1
- inc hl
- ld [hl], b
- inc hl
- ld [hl], e
- inc hl
- ld [hl], d
- scf
- ret
-; 97c5f
-
-Function97c5f: ; 97c5f
- call GetFacingTileCoord
- ld [EngineBuffer1], a
- ld c, a
- callba Function1365b
- jr c, .asm_97cb9
-
- call CheckCutTreeTile
- jr nz, .whirlpool
- callba TryCutOW
- jr .asm_97cb9
-
-.whirlpool
- ld a, [EngineBuffer1]
- call CheckWhirlpoolTile
- jr nz, .waterfall
- callba TryWhirlpoolOW
- jr .asm_97cb9
-
-.waterfall
- ld a, [EngineBuffer1]
- call CheckWaterfallTile
- jr nz, .headbutt
- callba TryWaterfallOW
- jr .asm_97cb9
-
-.headbutt
- ld a, [EngineBuffer1]
- call CheckHeadbuttTreeTile
- jr nz, .surf
- callba TryHeadbuttOW
- jr c, .asm_97cb9
- jr .asm_97cb7
-
-.surf
- callba TrySurfOW
- jr nc, .asm_97cb7
- jr .asm_97cb9
-
-.asm_97cb7
- xor a
- ret
-
-.asm_97cb9
- call PlayClickSFX
- ld a, $ff
- scf
- ret
-; 97cc0
-
-
-Function97cc0: ; 97cc0
-; Rock Smash encounter
-
- call Function968c7
- jr c, .asm_97ce2
- call Function97cfd
- jr nc, .asm_97ce2
- ld hl, StatusFlags2
- bit 2, [hl]
- jr nz, .asm_97cdb
- callba Function2a0e7
- jr nz, .asm_97ce2
- jr .asm_97ce6
-
-.asm_97cdb
- call Function97d23
- jr nc, .asm_97ce2
- jr .asm_97ced
-
-.asm_97ce2
- ld a, 1
- and a
- ret
-
-.asm_97ce6
- ld a, BANK(RockSmashBattleScript)
- ld hl, RockSmashBattleScript
- jr .asm_97cf4
-
-.asm_97ced
- ld a, BANK(UnknownScript_0x135eb)
- ld hl, UnknownScript_0x135eb
- jr .asm_97cf4
-
-.asm_97cf4
- call CallScript
- scf
- ret
-; 97cf9
-
-RockSmashBattleScript: ; 97cf9
- battlecheck
- startbattle
- returnafterbattle
- end
-; 97cfd
-
-Function97cfd: ; 97cfd
- ld hl, StatusFlags
- bit 5, [hl]
- jr nz, .asm_97d21
- ld a, [$d19a]
- cp $4
- jr z, .asm_97d17
- cp $7
- jr z, .asm_97d17
- callba Function149dd
- jr nc, .asm_97d21
-
-.asm_97d17
- ld a, [StandingTile]
- call CheckIceTile
- jr z, .asm_97d21
- scf
- ret
-
-.asm_97d21
- and a
- ret
-; 97d23
-
-Function97d23: ; 97d23
- call Function97d64
- ret nc
- call Function97d31
- callba Function2a1df
- ret
-; 97d31
-
-Function97d31: ; 97d31
-; Pick a random mon out of ContestMons.
-
-.asm_97d31
- call Random
- cp 100 << 1
- jr nc, .asm_97d31
- srl a
-
- ld hl, ContestMons
- ld de, 4
-.CheckMon
- sub [hl]
- jr c, .GotMon
- add hl, de
- jr .CheckMon
-
-.GotMon
- inc hl
-
-; Species
- ld a, [hli]
- ld [$d22e], a
-
-; Min level
- ld a, [hli]
- ld d, a
-
-; Max level
- ld a, [hl]
-
- sub d
- jr nz, .RandomLevel
-
-; If min and max are the same.
- ld a, d
- jr .GotLevel
-
-.RandomLevel
-; Get a random level between the min and max.
- ld c, a
- inc c
- call Random
- ld a, [hRandomAdd]
- call SimpleDivide
- add d
-
-.GotLevel
- ld [CurPartyLevel], a
-
- xor a
- ret
-; 97d64
-
-Function97d64: ; 97d64
- ld a, [StandingTile]
- call Function188e
- ld b, $66
- jr z, .asm_97d70
- ld b, $33
-
-.asm_97d70
- callba Function2a124
- callba Function2a138
- call Random
- ld a, [hRandomAdd]
- cp b
- ret c
- ld a, 1
- and a
- ret
-; 97d87
-
-ContestMons: ; 97d87
- ; %, species, min, max
- db 20, CATERPIE, 7, 18
- db 20, WEEDLE, 7, 18
- db 10, METAPOD, 9, 18
- db 10, KAKUNA, 9, 18
- db 5, BUTTERFREE, 12, 15
- db 5, BEEDRILL, 12, 15
- db 10, VENONAT, 10, 16
- db 10, PARAS, 10, 17
- db 5, SCYTHER, 13, 14
- db 5, PINSIR, 13, 14
- db -1, VENOMOTH, 30, 40
-; 97db3
-
-Function97db3: ; 97db3
- nop
- nop
- ; fallthrough
-; 97db5
-
-Function97db5: ; 97db5
- ld hl, StatusFlags2
- bit 4, [hl]
- jr z, .asm_97df7
- ld a, [PlayerState]
- cp $1
- jr nz, .asm_97df7
- call Function2d05
- and a
- jr nz, .asm_97df7
- ld hl, $dca2
- ld a, [hli]
- ld d, a
- ld e, [hl]
- cp $ff
- jr nz, .asm_97dd8
- ld a, e
- cp $ff
- jr z, .asm_97ddc
-
-.asm_97dd8
- inc de
- ld [hl], e
- dec hl
- ld [hl], d
-
-.asm_97ddc
- ld a, d
- cp $4
- jr c, .asm_97df7
- ld a, [$dc31]
- and a
- jr nz, .asm_97df7
- ld a, $6
- ld [$dc31], a
- xor a
- ld [$dc32], a
- ld hl, StatusFlags2
- res 4, [hl]
- scf
- ret
-
-.asm_97df7
- xor a
- ret
-; 97df9
-
-Function97df9: ; 97df9
- ld hl, $d6de
- ld de, $0006
- ld c, $4
- xor a
-.asm_97e02
- ld [hl], a
- add hl, de
- dec c
- jr nz, .asm_97e02
- ret
-; 97e08
-
-Function97e08: ; 97e08
- ld hl, $d6de
- xor a
-.asm_97e0c
- ld [hConnectionStripLength], a
- ld a, [hl]
- and a
- jr z, .asm_97e19
- push hl
- ld b, h
- ld c, l
- call Function97e79
- pop hl
-
-.asm_97e19
- ld de, $0006
- add hl, de
- ld a, [hConnectionStripLength]
- inc a
- cp $4
- jr nz, .asm_97e0c
- ret
-; 97e25
-
-Function97e25: ; 97e25
- ld hl, $d6de
- ld bc, 6
- call AddNTimes
- ld b, h
- ld c, l
- ret
-; 97e31
-
-Function97e31: ; 97e31
- push bc
- push de
- call Function97e45
- ld d, h
- ld e, l
- pop hl
- pop bc
- ret c
- ld a, b
- ld bc, $0005
- call FarCopyBytes
- xor a
- ld [hl], a
- ret
-; 97e45
-
-Function97e45: ; 97e45
- ld hl, $d6de
- ld de, $0006
- ld c, $4
-.asm_97e4d
- ld a, [hl]
- and a
- jr z, .asm_97e57
- add hl, de
- dec c
- jr nz, .asm_97e4d
- scf
- ret
-
-.asm_97e57
- ld a, $4
- sub c
- and a
- ret
-; 97e5c
-
-Function97e5c: ; 97e5c
- ld hl, $d6de
- ld de, $0006
- ld c, $4
-.asm_97e64
- ld a, [hl]
- cp b
- jr z, .asm_97e6e
- add hl, de
- dec c
- jr nz, .asm_97e64
- and a
- ret
-
-.asm_97e6e
- xor a
- ld [hl], a
- scf
- ret
-; 97e72
-
-Function97e72: ; 97e72
- ld hl, $0000
- add hl, bc
- ld [hl], 0
- ret
-; 97e79
-
-Function97e79: ; 97e79
- ld hl, $0000
- add hl, bc
- ld a, [hl]
- cp 5
- jr c, .asm_97e83
- xor a
-
-.asm_97e83
- ld e, a
- ld d, 0
- ld hl, Table97e94
- add hl, de
- add hl, de
- add hl, de
- ld a, [hli]
- push af
- ld a, [hli]
- ld h, [hl]
- ld l, a
- pop af
- rst FarCall
- ret
-; 97e94
-
-Table97e94: ; 97e94
- dbw BANK(Function97eb7), Function97eb7
- dbw BANK(Function97eb8), Function97eb8
- dbw BANK(Function97f42), Function97f42
- dbw BANK(Function97ef9), Function97ef9
- dbw BANK(Function97ebc), Function97ebc
-; 97ea3
-
-Function97ea3: ; 97ea3
- ld hl, $0005
- add hl, bc
- ld a, [hl]
- pop hl
- rst JumpTable
- ret
-; 97eab
-
-Function97eab: ; 97eab
- ld hl, $0005
- add hl, bc
- inc [hl]
- ret
-; 97eb1
-
-Function97eb1: ; 97eb1
- ld hl, $0005
- add hl, bc
- dec [hl]
- ret
-; 97eb7
-
-Function97eb7: ; 97eb7
- ret
-; 97eb8
-
-Function97eb8: ; 97eb8
- call Function2f3e
- ret
-; 97ebc
-
-Function97ebc: ; 97ebc
- call Function97ea3
- dw Function97ec3
- dw Function97ecd
-; 97ec3
-
-Function97ec3: ; 97ec3
- ld a, [hSCY]
- ld hl, $0004
- add hl, bc
- ld [hl], a
- call Function97eab
-; 97ecd
-
-Function97ecd: ; 97ecd
- ld hl, $0001
- add hl, bc
- ld a, [hl]
- dec a
- ld [hl], a
- jr z, .asm_97eee
- and $1
- jr z, .asm_97ee4
- ld hl, $0002
- add hl, bc
- ld a, [hSCY]
- sub [hl]
- ld [hSCY], a
- ret
-
-.asm_97ee4
- ld hl, $0002
- add hl, bc
- ld a, [hSCY]
- add [hl]
- ld [hSCY], a
- ret
-
-.asm_97eee
- ld hl, $0004
- add hl, bc
- ld a, [hl]
- ld [hSCY], a
- call Function97e72
- ret
-; 97ef9
-
-Function97ef9: ; 97ef9
- call Function97ea3
- dw Function97f02
- dw Function97f0a
- dw Function97f1b
-; 97f02
-
-Function97f02: ; 97f02
- call Function97f38
- jr z, Function97f2c
- call Function97eab
-; 97f0a
-
-Function97f0a: ; 97f0a
- call Function97f38
- jr z, Function97f2c
- call Function97eab
-
- ld hl, $0002
- add hl, bc
- ld a, [hl]
- ld [$d173], a
- ret
-; 97f1b
-
-Function97f1b: ; 97f1b
- call Function97f38
- jr z, Function97f2c
- call Function97eb1
-
- ld hl, $0003
- add hl, bc
- ld a, [hl]
- ld [$d173], a
- ret
-; 97f2c
-
-Function97f2c: ; 97f2c
- ld a, $7f
- ld [$d173], a
- ld hl, $0005
- add hl, bc
- ld [hl], 0
- ret
-; 97f38
-
-Function97f38: ; 97f38
- push bc
- ld bc, $d4d6
- call GetSpriteDirection
- and a
- pop bc
- ret
-; 97f42
-
-Function97f42: ; 97f42
- ld de, $d4d6
- ld a, $d
-.asm_97f47
- push af
-
- ld hl, $0000
- add hl, de
- ld a, [hl]
- and a
- jr z, .asm_97f71
-
- ld hl, $0003
- add hl, de
- ld a, [hl]
- cp $19
- jr nz, .asm_97f71
-
- ld hl, $000e
- add hl, de
- ld a, [hl]
- call CheckPitTile
- jr nz, .asm_97f71
-
- ld hl, $0007
- add hl, de
- ld a, [hl]
- cp $ff
- jr nz, .asm_97f71
- call Function3567
- jr c, .asm_97f7c
-
-.asm_97f71
- ld hl, $0028
- add hl, de
- ld d, h
- ld e, l
-
- pop af
- dec a
- jr nz, .asm_97f47
- ret
-
-.asm_97f7c
- pop af
- ret
-; 97f7e
+INCLUDE "engine/events_2.asm"