shithub: pokecrystal

Download patch

ref: bd392da29e86c48535ac11a22ed8a30473d2d2fb
parent: bcd833e7582e14f17b52225314b6b790c1109fcc
author: yenatch <[email protected]>
date: Fri Nov 22 00:04:32 EST 2013

split event handling into engine/events.asm

--- /dev/null
+++ b/engine/events.asm
@@ -1,0 +1,1108 @@
+Function966b0: ; 966b0
+	xor a
+	ld [$d432], a
+.asm_966b4
+	ld a, [$d432]
+	ld hl, .pointers
+	rst JumpTable
+	ld a, [$d432]
+	cp 3 ; done
+	jr nz, .asm_966b4
+.done
+	ret
+
+.pointers
+	dw Function96724
+	dw Function9673e
+	dw Function96773
+	dw .done
+; 966cb
+
+
+Function966cb: ; 966cb
+	xor a
+	ld [ScriptFlags3], a
+	ret
+; 966d0
+
+Function966d0: ; 966d0
+	ld a, $ff
+	ld [ScriptFlags3], a
+	ret
+; 966d6
+
+Function966d6: ; 966d6
+	ld hl, ScriptFlags3
+	bit 5, [hl]
+	ret
+; 966dc
+
+Function966dc: ; 966dc
+	ld hl, ScriptFlags3
+	res 2, [hl]
+	ret
+; 966e2
+
+Function966e2: ; 966e2
+	ld hl, ScriptFlags3
+	res 1, [hl]
+	ret
+; 966e8
+
+Function966e8: ; 966e8
+	ld hl, ScriptFlags3
+	res 0, [hl]
+	ret
+; 966ee
+
+Function966ee: ; 966ee
+	ld hl, ScriptFlags3
+	res 4, [hl]
+	ret
+; 966f4
+
+Function966f4: ; 966f4
+	ld hl, ScriptFlags3
+	set 2, [hl]
+	ret
+; 966fa
+
+Function966fa: ; 966fa
+	ld hl, ScriptFlags3
+	set 1, [hl]
+	ret
+; 96700
+
+Function96700: ; 96700
+	ld hl, ScriptFlags3
+	set 0, [hl]
+	ret
+; 96706
+
+Function96706: ; 96706
+	ld hl, ScriptFlags3
+	set 4, [hl]
+	ret
+; 9670c
+
+Function9670c: ; 9670c
+	ld hl, ScriptFlags3
+	bit 2, [hl]
+	ret
+; 96712
+
+Function96712: ; 96712
+	ld hl, ScriptFlags3
+	bit 1, [hl]
+	ret
+; 96718
+
+Function96718: ; 96718
+	ld hl, ScriptFlags3
+	bit 0, [hl]
+	ret
+; 9671e
+
+Function9671e: ; 9671e
+	ld hl, ScriptFlags3
+	bit 4, [hl]
+	ret
+; 96724
+
+
+Function96724: ; 96724
+	xor a
+	ld [ScriptVar], a
+	xor a
+	ld [ScriptRunning], a
+	ld hl, $d432
+	ld bc, $3e
+	call ByteFill
+	callba Function113e5
+	call ClearJoypadPublic
+	; fallthrough
+; 9673e
+
+
+Function9673e: ; 9673e
+	xor a
+	ld [$d453], a
+	ld [$d454], a
+	call Function968d1
+	callba Function15363
+	call Function966cb
+	ld a, [$ff9f]
+	cp $f7
+	jr nz, .asm_9675a
+	call Function966d0
+.asm_9675a
+	ld a, [$ff9f]
+	cp $f3
+	jr nz, .asm_96764
+	xor a
+	ld [PoisonStepCount], a
+.asm_96764
+	xor a
+	ld [$ff9f], a
+	ld a, $2
+	ld [$d432], a
+	ret
+; 9676d
+
+
+Function9676d: ; 9676d
+	ld c, 30
+	call DelayFrames
+	ret
+; 96773
+
+
+Function96773: ; 96773
+	call ResetOverworldDelay
+	call Function967c1
+	callba Function97e08
+	call DoEvents
+	ld a, [$d432]
+	cp 2
+	ret nz
+	call Function967d1
+	call NextOverworldFrame
+	call Function967e1
+	call Function967f4
+	ret
+; 96795
+
+
+DoEvents: ; 96795
+	ld a, [$d433]
+	ld hl, .pointers
+	rst JumpTable
+	ret
+
+.pointers
+	dw Function967a1
+	dw Function967ae
+; 967a1
+
+Function967a1: ; 967a1
+	call PlayerEvents
+	call Function966cb
+	callba ScriptEvents
+	ret
+; 967ae
+
+Function967ae: ; 967ae
+	ret
+; 967af
+
+
+MaxOverworldDelay: ; 967af
+	db 2
+; 967b0
+
+ResetOverworldDelay: ; 967b0
+	ld a, [MaxOverworldDelay]
+	ld [OverworldDelay], a
+	ret
+; 967b7
+
+NextOverworldFrame: ; 967b7
+	ld a, [OverworldDelay]
+	and a
+	ret z
+	ld c, a
+	call DelayFrames
+	ret
+; 967c1
+
+
+Function967c1: ; 967c1
+	ld a, [$d433]
+	cp 1
+	ret z
+	call UpdateTime
+	call GetJoypadPublic
+	call TimeOfDayPals
+	ret
+; 967d1
+
+Function967d1: ; 967d1
+	callba Function576a
+	callba Functiond497
+	call Function96812
+	ret
+; 967e1
+
+Function967e1: ; 967e1
+	callba Function5920
+	callba Functiond4d2
+	callba Functionb8098
+	ret
+; 967f4
+
+Function967f4: ; 967f4
+	ld a, [$d150]
+	bit 5, a
+	jr z, .asm_96806
+	bit 6, a
+	jr z, .asm_9680c
+	bit 4, a
+	jr nz, .asm_9680c
+	call Function966d0
+
+.asm_96806
+	ld a, $0
+	ld [$d433], a
+	ret
+
+.asm_9680c
+	ld a, $1
+	ld [$d433], a
+	ret
+; 96812
+
+Function96812: ; 96812
+	ld hl, $d150
+	bit 6, [hl]
+	ret z
+	callba Function81ca
+
+	ret
+; 9681f
+
+
+PlayerEvents: ; 9681f
+
+	xor a
+
+	ld a, [ScriptRunning]
+	and a
+	ret nz
+
+	call Function968e4
+
+	call CheckTrainerBattle3
+	jr c, .asm_96848
+
+	call CheckTileEvent
+	jr c, .asm_96848
+
+	call Function97c30
+	jr c, .asm_96848
+
+	call Function968ec
+	jr c, .asm_96848
+
+	call Function9693a
+	jr c, .asm_96848
+
+	call OWPlayerInput
+	jr c, .asm_96848
+
+	xor a
+	ret
+
+
+.asm_96848
+	push af
+	callba Function96c56
+	pop af
+
+	ld [ScriptRunning], a
+	call Function96beb
+	ld a, [ScriptRunning]
+	cp 4
+	jr z, .asm_96865
+	cp 9
+	jr z, .asm_96865
+
+	xor a
+	ld [$c2da], a
+
+.asm_96865
+	scf
+	ret
+; 96867
+
+
+CheckTrainerBattle3: ; 96867
+	nop
+	nop
+	call CheckTrainerBattle2
+	jr nc, .asm_96872
+	ld a, 1
+	scf
+	ret
+
+.asm_96872
+	xor a
+	ret
+; 96874
+
+
+CheckTileEvent: ; 96874
+; Check for warps, tile triggers or wild battles.
+
+	call Function9670c
+	jr z, .asm_96886
+
+	callba Function104820
+	jr c, .asm_968a6
+
+	call Function2238
+	jr c, .asm_968aa
+
+.asm_96886
+	call Function96712
+	jr z, .asm_96890
+
+	call Function2ad4
+	jr c, .asm_968ba
+
+.asm_96890
+	call Function96718
+	jr z, .asm_96899
+
+	call CountStep
+	ret c
+
+.asm_96899
+	call Function9671e
+	jr z, .asm_968a4
+
+	call Function97cc0
+	ret c
+	jr .asm_968a4
+
+.asm_968a4
+	xor a
+	ret
+
+.asm_968a6
+	ld a, 4
+	scf
+	ret
+
+.asm_968aa
+	ld a, [StandingTile]
+	call CheckPitTile
+	jr nz, .asm_968b6
+	ld a, 6
+	scf
+	ret
+
+.asm_968b6
+	ld a, 5
+	scf
+	ret
+
+.asm_968ba
+	ld hl, MovementAnimation
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call GetMapScriptHeaderBank
+	call CallScript
+	ret
+; 968c7
+
+
+Function968c7: ; 968c7
+	ld hl, $d452
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ret z
+	scf
+	ret
+; 968d1
+
+Function968d1: ; 968d1
+	ld a, 5
+	ld [$d452], a
+	ret
+; 968d7
+
+Function968d7: ; 968d7
+	ret
+; 968d8
+
+Function968d8: ; 968d8
+	ld a, [$d452]
+	cp 2
+	ret nc
+	ld a, 2
+	ld [$d452], a
+	ret
+; 968e4
+
+Function968e4: ; 968e4
+	call Function966d6
+	ret z
+	call Function2f3e
+	ret
+; 968ec
+
+Function968ec: ; 968ec
+	ld a, [$dc07]
+	and a
+	jr z, .asm_96938
+
+	ld c, a
+	call Function211b
+	cp c
+	jr nc, .asm_96938
+
+	ld e, a
+	ld d, 0
+	ld hl, $dc08
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+
+	call GetMapScriptHeaderBank
+	call GetFarHalfword
+	call GetMapScriptHeaderBank
+	call CallScript
+
+	ld hl, ScriptFlags
+	res 3, [hl]
+
+	callba Function96c56
+	callba ScriptEvents
+
+	ld hl, ScriptFlags
+	bit 3, [hl]
+	jr z, .asm_96938
+
+	ld hl, $d44f
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$d44e]
+	call CallScript
+	scf
+	ret
+
+.asm_96938
+	xor a
+	ret
+; 9693a
+
+Function9693a: ; 9693a
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .asm_96964
+	ld hl, StatusFlags2
+	bit 2, [hl]
+	jr z, .asm_96951
+	callba Function114a4
+	jr c, .asm_96966
+	xor a
+	ret
+
+.asm_96951
+	callba Function11452
+	callba Function114e7
+	callba Function90074
+	ret c
+
+.asm_96964
+	xor a
+	ret
+
+.asm_96966
+	ld a, $4
+	ld hl, $75f8
+	call CallScript
+	scf
+	ret
+; 96970
+
+Function96970: ; 96970
+	ld a, 8
+	scf
+	ret
+; 96974
+
+
+OWPlayerInput: ; 96974
+
+	call PlayerMovement
+	ret c
+	and a
+	jr nz, .NoAction
+
+; Can't perform button actions while sliding on ice.
+	callba Function80404
+	jr c, .NoAction
+
+	call CheckAPressOW
+	jr c, .Action
+
+	call CheckMenuOW
+	jr c, .Action
+
+.NoAction
+	xor a
+	ret
+
+.Action
+	push af
+	callba Function80422
+	pop af
+	scf
+	ret
+; 96999
+
+
+CheckAPressOW: ; 96999
+	ld a, [hJoyPressed]
+	and A_BUTTON
+	ret z
+	call TryObjectEvent
+	ret c
+	call TryReadSign
+	ret c
+	call Function97c5f
+	ret c
+	xor a
+	ret
+; 969ac
+
+
+PlayTalkObject: ; 969ac
+	push de
+	ld de, SFX_READ_TEXT_2
+	call PlaySFX
+	pop de
+	ret
+; 969b5
+
+
+TryObjectEvent: ; 969b5
+	callba CheckFacingObject
+	jr c, .IsObject
+	xor a
+	ret
+
+.IsObject
+	call PlayTalkObject
+	ld a, [hConnectedMapWidth]
+	call Function1ae5
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	ld [$ffe0], a
+
+	ld a, [$ffe0]
+	call GetMapObject
+	ld hl, $0008
+	add hl, bc
+	ld a, [hl]
+	and $f
+
+; Bug: If IsInArray returns nc, data at bc will be executed as code.
+	push bc
+	ld de, 3
+	ld hl, .data_969ee
+	call IsInArray
+	jr nc, .asm_969ec
+	pop bc
+
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+.asm_969ec
+	xor a
+	ret
+
+.data_969ee
+	dbw 0, .zero
+	dbw 1, .one
+	dbw 2, .two
+	dbw 3, .three
+	dbw 4, .four
+	dbw 5, .five
+	dbw 6, .six
+	db $ff
+; 96a04
+
+.zero ; 96a04
+	ld hl, $000a
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call GetMapScriptHeaderBank
+	call CallScript
+;	ld a, -1
+	ret
+; 96a12
+
+.one ; 96a12
+	ld hl, $000a
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call GetMapScriptHeaderBank
+	ld de, EngineBuffer1
+	ld bc, 2
+	call FarCopyBytes
+	ld a, 3
+	scf
+	ret
+; 96a29
+
+.two ; 96a29
+	call Function3674
+	ld a, 2
+	scf
+	ret
+; 96a30
+
+.three ; 96a30
+	xor a
+	ret
+; 96a32
+
+.four ; 96a32
+	xor a
+	ret
+; 96a34
+
+.five ; 96a34
+	xor a
+	ret
+; 96a36
+
+.six ; 96a36
+	xor a
+	ret
+; 96a38
+
+
+TryReadSign: ; 96a38
+	call CheckFacingSign
+	jr c, .IsSign
+	xor a
+	ret
+
+.IsSign
+	ld a, [MartPointer]
+	ld hl, .signs
+	rst JumpTable
+	ret
+
+.signs
+	dw .read
+	dw .up
+	dw .down
+	dw .right
+	dw .left
+	dw .ifset
+	dw .ifnotset
+	dw .itemifset
+	dw .asm_96aa2
+; 96a59
+
+.up
+	ld b, UP << 2
+	jr .checkdir
+.down
+	ld b, DOWN << 2
+	jr .checkdir
+.right
+	ld b, RIGHT << 2
+	jr .checkdir
+.left
+	ld b, LEFT << 2
+	jr .checkdir
+
+.checkdir
+	ld a, [PlayerDirection]
+	and %1100
+	cp b
+	jp nz, .dontread
+
+.read
+	call PlayTalkObject
+	ld hl, $d041
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call GetMapScriptHeaderBank
+	call CallScript
+	scf
+	ret
+
+.itemifset
+	call CheckSignFlag
+	jp nz, .dontread
+	call PlayTalkObject
+	call GetMapScriptHeaderBank
+	ld de, EngineBuffer1
+	ld bc, 3
+	call FarCopyBytes
+	ld a, $4
+	ld hl, $7625
+	call CallScript
+	scf
+	ret
+
+.asm_96aa2
+	call CheckSignFlag
+	jr nz, .dontread
+	call GetMapScriptHeaderBank
+	ld de, EngineBuffer1
+	ld bc, 3
+	call FarCopyBytes
+	jr .dontread
+
+.ifset
+	call CheckSignFlag
+	jr z, .dontread
+	jr .asm_96ac1
+
+.ifnotset
+	call CheckSignFlag
+	jr nz, .dontread
+
+.asm_96ac1
+	push hl
+	call PlayTalkObject
+	pop hl
+	inc hl
+	inc hl
+	call GetMapScriptHeaderBank
+	call GetFarHalfword
+	call GetMapScriptHeaderBank
+	call CallScript
+	scf
+	ret
+
+.dontread
+	xor a
+	ret
+; 96ad8
+
+
+CheckSignFlag: ; 96ad8
+	ld hl, $d041
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	push hl
+	call GetMapScriptHeaderBank
+	call GetFarHalfword
+	ld e, l
+	ld d, h
+	ld b, $2
+	call EventFlagAction
+	ld a, c
+	and a
+	pop hl
+	ret
+; 96af0
+
+
+PlayerMovement: ; 96af0
+	callba DoPlayerMovement
+	ld a, c
+	ld hl, .pointers
+	rst JumpTable
+	ld a, c
+	ret
+; 96afd
+
+.pointers
+	dw .zero
+	dw .one
+	dw .two
+	dw .three
+	dw .four
+	dw .five
+	dw .six
+	dw .seven
+
+.zero
+.four ; 96b0d
+	xor a
+	ld c, a
+	ret
+; 96b10
+
+.seven ; 96b10
+	call Function968d7 ; empty
+	xor a
+	ld c, a
+	ret
+; 96b16
+
+.one ; 96b16
+	ld a, 5
+	ld c, a
+	scf
+	ret
+; 96b1b
+
+.two ; 96b1b
+	ld a, 9
+	ld c, a
+	scf
+	ret
+; 96b20
+
+.three ; 96b20
+; force the player to move in some direction
+	ld a, $4
+	ld hl, $653d
+	call CallScript
+;	ld a, -1
+	ld c, a
+	scf
+	ret
+; 96b2b
+
+.five
+.six ; 96b2b
+	ld a, -1
+	ld c, a
+	and a
+	ret
+; 96b30
+
+
+CheckMenuOW: ; 96b30
+	xor a
+	ld [$ffa0], a
+	ld [$ffa1], a
+	ld a, [hJoyPressed]
+
+	bit 2, a ; SELECT
+	jr nz, .Select
+
+	bit 3, a ; START
+	jr z, .NoMenu
+
+	ld a, BANK(StartMenuScript)
+	ld hl, StartMenuScript
+	call CallScript
+	scf
+	ret
+
+.NoMenu
+	xor a
+	ret
+
+.Select
+	call PlayTalkObject
+	ld a, BANK(SelectMenuScript)
+	ld hl, SelectMenuScript
+	call CallScript
+	scf
+	ret
+; 96b58
+
+
+StartMenuScript: ; 96b58
+	3callasm BANK(StartMenu), StartMenu
+	2jump StartMenuCallback
+; 96b5f
+
+SelectMenuScript: ; 96b5f
+	3callasm BANK(SelectMenu), SelectMenu
+	2jump SelectMenuCallback
+; 96b66
+
+StartMenuCallback:
+SelectMenuCallback: ; 96b66
+	copybytetovar $ffa0
+	if_equal $80, .Script
+	if_equal $ff, .Asm
+	end
+; 96b72
+
+.Script ; 96b72
+	2ptjump $d0e8
+; 96b75
+
+.Asm ; 96b75
+	2ptcallasm $d0e8
+	end
+; 96b79
+
+
+CountStep: ; 96b79
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .asm_96bc9
+
+	callba Function90136
+	jr c, .asm_96bcb
+
+	call Function96bd7
+	jr c, .asm_96bcb
+
+	ld hl, PoisonStepCount
+	inc [hl]
+	ld hl, StepCount
+	inc [hl]
+	jr nz, .asm_96b9c
+
+	callba StepHappiness
+
+.asm_96b9c
+	ld a, [StepCount]
+	cp $80
+	jr nz, .asm_96bab
+
+	callba Function16f3e
+	jr nz, .asm_96bcf
+
+.asm_96bab
+	callba DaycareStep
+
+	ld hl, PoisonStepCount
+	ld a, [hl]
+	cp 4
+	jr c, .asm_96bc3
+	ld [hl], 0
+
+	callba Function505da
+	jr c, .asm_96bcb
+
+.asm_96bc3
+	callba Function97db3
+
+.asm_96bc9
+	xor a
+	ret
+
+.asm_96bcb
+	ld a, -1
+	scf
+	ret
+
+.asm_96bcf
+	ld a, 8
+	scf
+	ret
+; 96bd3
+
+
+Function96bd3: ; 96bd3
+	ld a, $7
+	scf
+	ret
+; 96bd7
+
+Function96bd7: ; 96bd7
+	ld a, [$dca1]
+	and a
+	ret z
+	dec a
+	ld [$dca1], a
+	ret nz
+	ld a, $4
+	ld hl, $7619
+	call CallScript
+	scf
+	ret
+; 96beb
+
+Function96beb: ; 96beb
+	ld a, [ScriptRunning]
+	and a
+	ret z
+	cp $ff
+	ret z
+	cp $a
+	ret nc
+
+	ld c, a
+	ld b, 0
+	ld hl, ScriptPointers96c0c
+	add hl, bc
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld [ScriptBank], a
+	ld a, [hli]
+	ld [ScriptPos], a
+	ld a, [hl]
+	ld [ScriptPos + 1], a
+	ret
+; 96c0c
+
+ScriptPointers96c0c: ; 96c0c
+	dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d
+	dbw BANK(UnknownScript_0xbe675), UnknownScript_0xbe675
+	dbw BANK(UnknownScript_0xbe66a), UnknownScript_0xbe66a
+	dbw BANK(UnknownScript_0x122ce), UnknownScript_0x122ce
+	dbw BANK(UnknownScript_0x96c4d), UnknownScript_0x96c4d
+	dbw BANK(UnknownScript_0x96c34), UnknownScript_0x96c34
+	dbw BANK(FallIntoMapScript), FallIntoMapScript
+	dbw BANK(UnknownScript_0x124c8), UnknownScript_0x124c8
+	dbw BANK(UnknownScript_0x96c2f), UnknownScript_0x96c2f
+	dbw BANK(UnknownScript_0x96c4f), UnknownScript_0x96c4f
+	dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d
+; 96c2d
+
+UnknownScript_0x96c2d: ; 96c2d
+	end
+; 96c2e
+
+UnknownScript_0x96c2e: ; 96c2e
+	end
+; 96c2f
+
+UnknownScript_0x96c2f: ; 96c2f
+	3callasm $05, $6f5e
+	end
+; 96c34
+
+UnknownScript_0x96c34: ; 96c34
+	warpsound
+	newloadmap $f5
+	end
+; 96c38
+
+FallIntoMapScript: ; 96c38
+	newloadmap $f6
+	playsound SFX_KINESIS
+	applymovement $0, MovementData_0x96c48
+	playsound SFX_STRENGTH
+	2call UnknownScript_0x96c4a
+	end
+; 96c48
+
+MovementData_0x96c48: ; 96c48
+	skyfall
+	step_end
+; 96c4a
+
+UnknownScript_0x96c4a: ; 96c4a
+	earthquake 16
+	end
+; 96c4d
+
+UnknownScript_0x96c4d: ; 96c4d
+	reloadandreturn $f7
+; 96c4f
+
+UnknownScript_0x96c4f: ; 96c4f
+	deactivatefacing $3
+	3callasm BANK(Function96706), Function96706
+	end
+; 96c56
+
--- a/main.asm
+++ b/main.asm
@@ -85577,1114 +85577,7 @@
 INCLUDE "maps/second_map_headers.asm"
 
 
-Function966b0: ; 966b0
-	xor a
-	ld [$d432], a
-.asm_966b4
-	ld a, [$d432]
-	ld hl, .pointers
-	rst JumpTable
-	ld a, [$d432]
-	cp 3 ; done
-	jr nz, .asm_966b4
-.done
-	ret
-
-.pointers
-	dw Function96724
-	dw Function9673e
-	dw Function96773
-	dw .done
-; 966cb
-
-
-Function966cb: ; 966cb
-	xor a
-	ld [ScriptFlags3], a
-	ret
-; 966d0
-
-Function966d0: ; 966d0
-	ld a, $ff
-	ld [ScriptFlags3], a
-	ret
-; 966d6
-
-Function966d6: ; 966d6
-	ld hl, ScriptFlags3
-	bit 5, [hl]
-	ret
-; 966dc
-
-Function966dc: ; 966dc
-	ld hl, ScriptFlags3
-	res 2, [hl]
-	ret
-; 966e2
-
-Function966e2: ; 966e2
-	ld hl, ScriptFlags3
-	res 1, [hl]
-	ret
-; 966e8
-
-Function966e8: ; 966e8
-	ld hl, ScriptFlags3
-	res 0, [hl]
-	ret
-; 966ee
-
-Function966ee: ; 966ee
-	ld hl, ScriptFlags3
-	res 4, [hl]
-	ret
-; 966f4
-
-Function966f4: ; 966f4
-	ld hl, ScriptFlags3
-	set 2, [hl]
-	ret
-; 966fa
-
-Function966fa: ; 966fa
-	ld hl, ScriptFlags3
-	set 1, [hl]
-	ret
-; 96700
-
-Function96700: ; 96700
-	ld hl, ScriptFlags3
-	set 0, [hl]
-	ret
-; 96706
-
-Function96706: ; 96706
-	ld hl, ScriptFlags3
-	set 4, [hl]
-	ret
-; 9670c
-
-Function9670c: ; 9670c
-	ld hl, ScriptFlags3
-	bit 2, [hl]
-	ret
-; 96712
-
-Function96712: ; 96712
-	ld hl, ScriptFlags3
-	bit 1, [hl]
-	ret
-; 96718
-
-Function96718: ; 96718
-	ld hl, ScriptFlags3
-	bit 0, [hl]
-	ret
-; 9671e
-
-Function9671e: ; 9671e
-	ld hl, ScriptFlags3
-	bit 4, [hl]
-	ret
-; 96724
-
-
-Function96724: ; 96724
-	xor a
-	ld [ScriptVar], a
-	xor a
-	ld [ScriptRunning], a
-	ld hl, $d432
-	ld bc, $3e
-	call ByteFill
-	callba Function113e5
-	call ClearJoypadPublic
-	; fallthrough
-; 9673e
-
-
-Function9673e: ; 9673e
-	xor a
-	ld [$d453], a
-	ld [$d454], a
-	call Function968d1
-	callba Function15363
-	call Function966cb
-	ld a, [$ff9f]
-	cp $f7
-	jr nz, .asm_9675a
-	call Function966d0
-.asm_9675a
-	ld a, [$ff9f]
-	cp $f3
-	jr nz, .asm_96764
-	xor a
-	ld [PoisonStepCount], a
-.asm_96764
-	xor a
-	ld [$ff9f], a
-	ld a, $2
-	ld [$d432], a
-	ret
-; 9676d
-
-
-Function9676d: ; 9676d
-	ld c, 30
-	call DelayFrames
-	ret
-; 96773
-
-
-Function96773: ; 96773
-	call ResetOverworldDelay
-	call Function967c1
-	callba Function97e08
-	call DoEvents
-	ld a, [$d432]
-	cp 2
-	ret nz
-	call Function967d1
-	call NextOverworldFrame
-	call Function967e1
-	call Function967f4
-	ret
-; 96795
-
-
-DoEvents: ; 96795
-	ld a, [$d433]
-	ld hl, .pointers
-	rst JumpTable
-	ret
-
-.pointers
-	dw Function967a1
-	dw Function967ae
-; 967a1
-
-Function967a1: ; 967a1
-	call PlayerEvents
-	call Function966cb
-	callba ScriptEvents
-	ret
-; 967ae
-
-Function967ae: ; 967ae
-	ret
-; 967af
-
-
-MaxOverworldDelay: ; 967af
-	db 2
-; 967b0
-
-ResetOverworldDelay: ; 967b0
-	ld a, [MaxOverworldDelay]
-	ld [OverworldDelay], a
-	ret
-; 967b7
-
-NextOverworldFrame: ; 967b7
-	ld a, [OverworldDelay]
-	and a
-	ret z
-	ld c, a
-	call DelayFrames
-	ret
-; 967c1
-
-
-Function967c1: ; 967c1
-	ld a, [$d433]
-	cp 1
-	ret z
-	call UpdateTime
-	call GetJoypadPublic
-	call TimeOfDayPals
-	ret
-; 967d1
-
-Function967d1: ; 967d1
-	callba Function576a
-	callba Functiond497
-	call Function96812
-	ret
-; 967e1
-
-Function967e1: ; 967e1
-	callba Function5920
-	callba Functiond4d2
-	callba Functionb8098
-	ret
-; 967f4
-
-Function967f4: ; 967f4
-	ld a, [$d150]
-	bit 5, a
-	jr z, .asm_96806
-	bit 6, a
-	jr z, .asm_9680c
-	bit 4, a
-	jr nz, .asm_9680c
-	call Function966d0
-
-.asm_96806
-	ld a, $0
-	ld [$d433], a
-	ret
-
-.asm_9680c
-	ld a, $1
-	ld [$d433], a
-	ret
-; 96812
-
-Function96812: ; 96812
-	ld hl, $d150
-	bit 6, [hl]
-	ret z
-	callba Function81ca
-
-	ret
-; 9681f
-
-
-PlayerEvents: ; 9681f
-
-	xor a
-
-	ld a, [ScriptRunning]
-	and a
-	ret nz
-
-	call Function968e4
-
-	call CheckTrainerBattle3
-	jr c, .asm_96848
-
-	call CheckTileEvent
-	jr c, .asm_96848
-
-	call Function97c30
-	jr c, .asm_96848
-
-	call Function968ec
-	jr c, .asm_96848
-
-	call Function9693a
-	jr c, .asm_96848
-
-	call OWPlayerInput
-	jr c, .asm_96848
-
-	xor a
-	ret
-
-
-.asm_96848
-	push af
-	callba Function96c56
-	pop af
-
-	ld [ScriptRunning], a
-	call Function96beb
-	ld a, [ScriptRunning]
-	cp 4
-	jr z, .asm_96865
-	cp 9
-	jr z, .asm_96865
-
-	xor a
-	ld [$c2da], a
-
-.asm_96865
-	scf
-	ret
-; 96867
-
-
-CheckTrainerBattle3: ; 96867
-	nop
-	nop
-	call CheckTrainerBattle2
-	jr nc, .asm_96872
-	ld a, 1
-	scf
-	ret
-
-.asm_96872
-	xor a
-	ret
-; 96874
-
-
-CheckTileEvent: ; 96874
-; Check for warps, tile triggers or wild battles.
-
-	call Function9670c
-	jr z, .asm_96886
-
-	callba Function104820
-	jr c, .asm_968a6
-
-	call Function2238
-	jr c, .asm_968aa
-
-.asm_96886
-	call Function96712
-	jr z, .asm_96890
-
-	call Function2ad4
-	jr c, .asm_968ba
-
-.asm_96890
-	call Function96718
-	jr z, .asm_96899
-
-	call CountStep
-	ret c
-
-.asm_96899
-	call Function9671e
-	jr z, .asm_968a4
-
-	call Function97cc0
-	ret c
-	jr .asm_968a4
-
-.asm_968a4
-	xor a
-	ret
-
-.asm_968a6
-	ld a, 4
-	scf
-	ret
-
-.asm_968aa
-	ld a, [StandingTile]
-	call CheckPitTile
-	jr nz, .asm_968b6
-	ld a, 6
-	scf
-	ret
-
-.asm_968b6
-	ld a, 5
-	scf
-	ret
-
-.asm_968ba
-	ld hl, MovementAnimation
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call GetMapScriptHeaderBank
-	call CallScript
-	ret
-; 968c7
-
-
-Function968c7: ; 968c7
-	ld hl, $d452
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	ret z
-	scf
-	ret
-; 968d1
-
-Function968d1: ; 968d1
-	ld a, 5
-	ld [$d452], a
-	ret
-; 968d7
-
-Function968d7: ; 968d7
-	ret
-; 968d8
-
-Function968d8: ; 968d8
-	ld a, [$d452]
-	cp 2
-	ret nc
-	ld a, 2
-	ld [$d452], a
-	ret
-; 968e4
-
-Function968e4: ; 968e4
-	call Function966d6
-	ret z
-	call Function2f3e
-	ret
-; 968ec
-
-Function968ec: ; 968ec
-	ld a, [$dc07]
-	and a
-	jr z, .asm_96938
-
-	ld c, a
-	call Function211b
-	cp c
-	jr nc, .asm_96938
-
-	ld e, a
-	ld d, 0
-	ld hl, $dc08
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	add hl, de
-	add hl, de
-	add hl, de
-	add hl, de
-
-	call GetMapScriptHeaderBank
-	call GetFarHalfword
-	call GetMapScriptHeaderBank
-	call CallScript
-
-	ld hl, ScriptFlags
-	res 3, [hl]
-
-	callba Function96c56
-	callba ScriptEvents
-
-	ld hl, ScriptFlags
-	bit 3, [hl]
-	jr z, .asm_96938
-
-	ld hl, $d44f
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [$d44e]
-	call CallScript
-	scf
-	ret
-
-.asm_96938
-	xor a
-	ret
-; 9693a
-
-Function9693a: ; 9693a
-	ld a, [InLinkBattle]
-	and a
-	jr nz, .asm_96964
-	ld hl, StatusFlags2
-	bit 2, [hl]
-	jr z, .asm_96951
-	callba Function114a4
-	jr c, .asm_96966
-	xor a
-	ret
-
-.asm_96951
-	callba Function11452
-	callba Function114e7
-	callba Function90074
-	ret c
-
-.asm_96964
-	xor a
-	ret
-
-.asm_96966
-	ld a, $4
-	ld hl, $75f8
-	call CallScript
-	scf
-	ret
-; 96970
-
-Function96970: ; 96970
-	ld a, 8
-	scf
-	ret
-; 96974
-
-
-OWPlayerInput: ; 96974
-
-	call PlayerMovement
-	ret c
-	and a
-	jr nz, .NoAction
-
-; Can't perform button actions while sliding on ice.
-	callba Function80404
-	jr c, .NoAction
-
-	call CheckAPressOW
-	jr c, .Action
-
-	call CheckMenuOW
-	jr c, .Action
-
-.NoAction
-	xor a
-	ret
-
-.Action
-	push af
-	callba Function80422
-	pop af
-	scf
-	ret
-; 96999
-
-
-CheckAPressOW: ; 96999
-	ld a, [hJoyPressed]
-	and A_BUTTON
-	ret z
-	call TryObjectEvent
-	ret c
-	call TryReadSign
-	ret c
-	call Function97c5f
-	ret c
-	xor a
-	ret
-; 969ac
-
-
-PlayTalkObject: ; 969ac
-	push de
-	ld de, SFX_READ_TEXT_2
-	call PlaySFX
-	pop de
-	ret
-; 969b5
-
-
-TryObjectEvent: ; 969b5
-	callba CheckFacingObject
-	jr c, .IsObject
-	xor a
-	ret
-
-.IsObject
-	call PlayTalkObject
-	ld a, [hConnectedMapWidth]
-	call Function1ae5
-	ld hl, $0001
-	add hl, bc
-	ld a, [hl]
-	ld [$ffe0], a
-
-	ld a, [$ffe0]
-	call GetMapObject
-	ld hl, $0008
-	add hl, bc
-	ld a, [hl]
-	and $f
-
-; Bug: If IsInArray returns nc, data at bc will be executed as code.
-	push bc
-	ld de, 3
-	ld hl, .data_969ee
-	call IsInArray
-	jr nc, .asm_969ec
-	pop bc
-
-	inc hl
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-.asm_969ec
-	xor a
-	ret
-
-.data_969ee
-	dbw 0, .zero
-	dbw 1, .one
-	dbw 2, .two
-	dbw 3, .three
-	dbw 4, .four
-	dbw 5, .five
-	dbw 6, .six
-	db $ff
-; 96a04
-
-.zero ; 96a04
-	ld hl, $000a
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call GetMapScriptHeaderBank
-	call CallScript
-;	ld a, -1
-	ret
-; 96a12
-
-.one ; 96a12
-	ld hl, $000a
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call GetMapScriptHeaderBank
-	ld de, EngineBuffer1
-	ld bc, 2
-	call FarCopyBytes
-	ld a, 3
-	scf
-	ret
-; 96a29
-
-.two ; 96a29
-	call Function3674
-	ld a, 2
-	scf
-	ret
-; 96a30
-
-.three ; 96a30
-	xor a
-	ret
-; 96a32
-
-.four ; 96a32
-	xor a
-	ret
-; 96a34
-
-.five ; 96a34
-	xor a
-	ret
-; 96a36
-
-.six ; 96a36
-	xor a
-	ret
-; 96a38
-
-
-TryReadSign: ; 96a38
-	call CheckFacingSign
-	jr c, .IsSign
-	xor a
-	ret
-
-.IsSign
-	ld a, [MartPointer]
-	ld hl, .signs
-	rst JumpTable
-	ret
-
-.signs
-	dw .read
-	dw .up
-	dw .down
-	dw .right
-	dw .left
-	dw .ifset
-	dw .ifnotset
-	dw .itemifset
-	dw .asm_96aa2
-; 96a59
-
-.up
-	ld b, UP << 2
-	jr .checkdir
-.down
-	ld b, DOWN << 2
-	jr .checkdir
-.right
-	ld b, RIGHT << 2
-	jr .checkdir
-.left
-	ld b, LEFT << 2
-	jr .checkdir
-
-.checkdir
-	ld a, [PlayerDirection]
-	and %1100
-	cp b
-	jp nz, .dontread
-
-.read
-	call PlayTalkObject
-	ld hl, $d041
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call GetMapScriptHeaderBank
-	call CallScript
-	scf
-	ret
-
-.itemifset
-	call CheckSignFlag
-	jp nz, .dontread
-	call PlayTalkObject
-	call GetMapScriptHeaderBank
-	ld de, EngineBuffer1
-	ld bc, 3
-	call FarCopyBytes
-	ld a, $4
-	ld hl, $7625
-	call CallScript
-	scf
-	ret
-
-.asm_96aa2
-	call CheckSignFlag
-	jr nz, .dontread
-	call GetMapScriptHeaderBank
-	ld de, EngineBuffer1
-	ld bc, 3
-	call FarCopyBytes
-	jr .dontread
-
-.ifset
-	call CheckSignFlag
-	jr z, .dontread
-	jr .asm_96ac1
-
-.ifnotset
-	call CheckSignFlag
-	jr nz, .dontread
-
-.asm_96ac1
-	push hl
-	call PlayTalkObject
-	pop hl
-	inc hl
-	inc hl
-	call GetMapScriptHeaderBank
-	call GetFarHalfword
-	call GetMapScriptHeaderBank
-	call CallScript
-	scf
-	ret
-
-.dontread
-	xor a
-	ret
-; 96ad8
-
-
-CheckSignFlag: ; 96ad8
-	ld hl, $d041
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	push hl
-	call GetMapScriptHeaderBank
-	call GetFarHalfword
-	ld e, l
-	ld d, h
-	ld b, $2
-	call EventFlagAction
-	ld a, c
-	and a
-	pop hl
-	ret
-; 96af0
-
-
-PlayerMovement: ; 96af0
-	callba DoPlayerMovement
-	ld a, c
-	ld hl, .pointers
-	rst JumpTable
-	ld a, c
-	ret
-; 96afd
-
-.pointers
-	dw .zero
-	dw .one
-	dw .two
-	dw .three
-	dw .four
-	dw .five
-	dw .six
-	dw .seven
-
-.zero
-.four ; 96b0d
-	xor a
-	ld c, a
-	ret
-; 96b10
-
-.seven ; 96b10
-	call Function968d7 ; empty
-	xor a
-	ld c, a
-	ret
-; 96b16
-
-.one ; 96b16
-	ld a, 5
-	ld c, a
-	scf
-	ret
-; 96b1b
-
-.two ; 96b1b
-	ld a, 9
-	ld c, a
-	scf
-	ret
-; 96b20
-
-.three ; 96b20
-; force the player to move in some direction
-	ld a, $4
-	ld hl, $653d
-	call CallScript
-;	ld a, -1
-	ld c, a
-	scf
-	ret
-; 96b2b
-
-.five
-.six ; 96b2b
-	ld a, -1
-	ld c, a
-	and a
-	ret
-; 96b30
-
-
-CheckMenuOW: ; 96b30
-	xor a
-	ld [$ffa0], a
-	ld [$ffa1], a
-	ld a, [hJoyPressed]
-
-	bit 2, a ; SELECT
-	jr nz, .Select
-
-	bit 3, a ; START
-	jr z, .NoMenu
-
-	ld a, BANK(StartMenuScript)
-	ld hl, StartMenuScript
-	call CallScript
-	scf
-	ret
-
-.NoMenu
-	xor a
-	ret
-
-.Select
-	call PlayTalkObject
-	ld a, BANK(SelectMenuScript)
-	ld hl, SelectMenuScript
-	call CallScript
-	scf
-	ret
-; 96b58
-
-
-StartMenuScript: ; 96b58
-	3callasm BANK(StartMenu), StartMenu
-	2jump StartMenuCallback
-; 96b5f
-
-SelectMenuScript: ; 96b5f
-	3callasm BANK(SelectMenu), SelectMenu
-	2jump SelectMenuCallback
-; 96b66
-
-StartMenuCallback:
-SelectMenuCallback: ; 96b66
-	copybytetovar $ffa0
-	if_equal $80, .Script
-	if_equal $ff, .Asm
-	end
-; 96b72
-
-.Script ; 96b72
-	2ptjump $d0e8
-; 96b75
-
-.Asm ; 96b75
-	2ptcallasm $d0e8
-	end
-; 96b79
-
-
-CountStep: ; 96b79
-	ld a, [InLinkBattle]
-	and a
-	jr nz, .asm_96bc9
-
-	callba Function90136
-	jr c, .asm_96bcb
-
-	call Function96bd7
-	jr c, .asm_96bcb
-
-	ld hl, PoisonStepCount
-	inc [hl]
-	ld hl, StepCount
-	inc [hl]
-	jr nz, .asm_96b9c
-
-	callba StepHappiness
-
-.asm_96b9c
-	ld a, [StepCount]
-	cp $80
-	jr nz, .asm_96bab
-
-	callba Function16f3e
-	jr nz, .asm_96bcf
-
-.asm_96bab
-	callba DaycareStep
-
-	ld hl, PoisonStepCount
-	ld a, [hl]
-	cp 4
-	jr c, .asm_96bc3
-	ld [hl], 0
-
-	callba Function505da
-	jr c, .asm_96bcb
-
-.asm_96bc3
-	callba Function97db3
-
-.asm_96bc9
-	xor a
-	ret
-
-.asm_96bcb
-	ld a, -1
-	scf
-	ret
-
-.asm_96bcf
-	ld a, 8
-	scf
-	ret
-; 96bd3
-
-
-Function96bd3: ; 96bd3
-	ld a, $7
-	scf
-	ret
-; 96bd7
-
-Function96bd7: ; 96bd7
-	ld a, [$dca1]
-	and a
-	ret z
-	dec a
-	ld [$dca1], a
-	ret nz
-	ld a, $4
-	ld hl, $7619
-	call CallScript
-	scf
-	ret
-; 96beb
-
-Function96beb: ; 96beb
-	ld a, [ScriptRunning]
-	and a
-	ret z
-	cp $ff
-	ret z
-	cp $a
-	ret nc
-
-	ld c, a
-	ld b, 0
-	ld hl, ScriptPointers96c0c
-	add hl, bc
-	add hl, bc
-	add hl, bc
-	ld a, [hli]
-	ld [ScriptBank], a
-	ld a, [hli]
-	ld [ScriptPos], a
-	ld a, [hl]
-	ld [ScriptPos + 1], a
-	ret
-; 96c0c
-
-ScriptPointers96c0c: ; 96c0c
-	dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d
-	dbw BANK(UnknownScript_0xbe675), UnknownScript_0xbe675
-	dbw BANK(UnknownScript_0xbe66a), UnknownScript_0xbe66a
-	dbw BANK(UnknownScript_0x122ce), UnknownScript_0x122ce
-	dbw BANK(UnknownScript_0x96c4d), UnknownScript_0x96c4d
-	dbw BANK(UnknownScript_0x96c34), UnknownScript_0x96c34
-	dbw BANK(FallIntoMapScript), FallIntoMapScript
-	dbw BANK(UnknownScript_0x124c8), UnknownScript_0x124c8
-	dbw BANK(UnknownScript_0x96c2f), UnknownScript_0x96c2f
-	dbw BANK(UnknownScript_0x96c4f), UnknownScript_0x96c4f
-	dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d
-; 96c2d
-
-UnknownScript_0x96c2d: ; 96c2d
-	end
-; 96c2e
-
-UnknownScript_0x96c2e: ; 96c2e
-	end
-; 96c2f
-
-UnknownScript_0x96c2f: ; 96c2f
-	3callasm $05, $6f5e
-	end
-; 96c34
-
-UnknownScript_0x96c34: ; 96c34
-	warpsound
-	newloadmap $f5
-	end
-; 96c38
-
-FallIntoMapScript: ; 96c38
-	newloadmap $f6
-	playsound SFX_KINESIS
-	applymovement $0, MovementData_0x96c48
-	playsound SFX_STRENGTH
-	2call UnknownScript_0x96c4a
-	end
-; 96c48
-
-MovementData_0x96c48: ; 96c48
-	skyfall
-	step_end
-; 96c4a
-
-UnknownScript_0x96c4a: ; 96c4a
-	earthquake 16
-	end
-; 96c4d
-
-UnknownScript_0x96c4d: ; 96c4d
-	reloadandreturn $f7
-; 96c4f
-
-UnknownScript_0x96c4f: ; 96c4f
-	deactivatefacing $3
-	3callasm BANK(Function96706), Function96706
-	end
-; 96c56
-
+INCLUDE "engine/events.asm"
 
 INCLUDE "engine/scripting.asm"