summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2013-11-23 02:33:53 -0500
committeryenatch <yenatch@gmail.com>2013-11-23 02:33:53 -0500
commit29afa24f0bf3368a1cba6869de4f8290d2a6f0dd (patch)
treea658b85bc567f34a1a09379d646b544c320dfe1d /engine
parent8bb8546497e8365740a83e40edda12e9328e5bc7 (diff)
split more event handling out of main
Diffstat (limited to 'engine')
-rw-r--r--engine/events_2.asm643
1 files changed, 643 insertions, 0 deletions
diff --git a/engine/events_2.asm b/engine/events_2.asm
new file mode 100644
index 000000000..accfdd451
--- /dev/null
+++ b/engine/events_2.asm
@@ -0,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
+