summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/scripting.asm104
-rw-r--r--wram.asm18
2 files changed, 67 insertions, 55 deletions
diff --git a/engine/scripting.asm b/engine/scripting.asm
index b4f5916f4..f9ede0041 100644
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -171,21 +171,21 @@ ScriptCommandTable: ; 0x96cb1
dw Script_unknown0xa9
; 0x96e05
-Unknown_0x96e05: ; 0x96e05
- ld hl, $d434
- set 2, [hl]
+StartScript: ; 0x96e05
+ ld hl, ScriptFlags
+ set SCRIPT_RUNNING, [hl]
ret
; 0x96e0b
-Unknown_0x96e0b: ; 0x96e0b
- ld hl, $d434
- bit 2, [hl]
+CheckScript: ; 0x96e0b
+ ld hl, ScriptFlags
+ bit SCRIPT_RUNNING, [hl]
ret
; 0x96e11
-Unknown_0x96e11: ; 0x96e11
- ld hl, $d434
- res 2, [hl]
+StopScript: ; 0x96e11
+ ld hl, ScriptFlags
+ res SCRIPT_RUNNING, [hl]
ret
; 0x96e17
@@ -877,7 +877,7 @@ Script_talkaftercancel: ; 0x97163
ld a, [$d04d]
and a
ret z
- jp $7b74
+ jp Script_end
; 0x9716b
Script_talkaftercheck: ; 0x9716b
@@ -1038,9 +1038,9 @@ Script_applymovement: ; 0x971f3
ld b, a
call $26c7
ret c
- ld a, $2
- ld [$d437], a
- call Unknown_0x96e11
+ ld a, SCRIPT_WAIT_MOVEMENT
+ ld [ScriptMode], a
+ call StopScript
ret
; 0x97221
@@ -1375,7 +1375,7 @@ Script_showemote: ; 0x97396
ld [$ffe0], a
.asm_973a8
call GetScriptByte
- ld [$d44d], a
+ ld [ScriptDelay], a
ld b, BANK(ShowEmoteScript)
ld de, ShowEmoteScript
jp ScriptCall
@@ -1559,7 +1559,7 @@ Script_reloadmap: ; 0x97491
ld [$ff9f], a
ld a, $1
call $261b
- call Unknown_0x96e11
+ call StopScript
ret
; 0x974a2
@@ -1826,7 +1826,7 @@ Script_priorityjump: ; 0x975aa
ld [$d44f], a
call GetScriptByte
ld [$d450], a
- ld hl, $d434
+ ld hl, ScriptFlags
set 3, [hl]
ret
; 0x975c2
@@ -2833,7 +2833,7 @@ Script_warp: ; 0x97a1d
ld [$ff9f], a
ld a, $1
call $261b
- call Unknown_0x96e11
+ call StopScript
ret
.asm_97a4a
call GetScriptByte
@@ -2845,7 +2845,7 @@ Script_warp: ; 0x97a1d
ld [$ff9f], a
ld a, $1
call $261b
- call Unknown_0x96e11
+ call StopScript
ret
; 0x97a65
@@ -2998,7 +2998,7 @@ Script_newloadmap: ; 0x97b08
ld [$ff9f], a
ld a, $1
call $261b
- call Unknown_0x96e11
+ call StopScript
ret
; 0x97b16
@@ -3006,7 +3006,7 @@ Script_reloadandreturn: ; 0x97b16
; script command 0x92
call $7b08
- jp $7b74
+ jp Script_end
; 0x97b1c
Script_loadfont: ; 0x97b1c
@@ -3074,11 +3074,11 @@ Script_pause: ; 0x97b47
call GetScriptByte
and a
jr z, .asm_97b50 ; 0x97b4b $3
- ld [$d44d], a
+ ld [ScriptDelay], a
.asm_97b50
- ld c, $2
+ ld c, 2
call DelayFrames
- ld hl, $d44d
+ ld hl, ScriptDelay
dec [hl]
jr nz, .asm_97b50 ; 0x97b59 $f5
ret
@@ -3092,11 +3092,11 @@ Script_deactivatefacing: ; 0x97b5c
call GetScriptByte
and a
jr z, .asm_97b65 ; 0x97b60 $3
- ld [$d44d], a
+ ld [ScriptDelay], a
.asm_97b65
- ld a, $3
- ld [$d437], a
- call Unknown_0x96e11
+ ld a, SCRIPT_WAIT
+ ld [ScriptMode], a
+ call StopScript
ret
; 0x97b6e
@@ -3105,40 +3105,42 @@ Script_ptpriorityjump: ; 0x97b6e
; parameters:
; pointer (ScriptPointerLabelParam)
- call Unknown_0x96e11
+ call StopScript
jp Script_2jump
; 0x97b74
Script_end: ; 0x97b74
; script command 0x91
- call $7b9a
- jr c, .asm_97b7a ; 0x97b77 $1
+ call ExitScriptSubroutine
+ jr c, .asm_97b7a
ret
.asm_97b7a
xor a
ld [ScriptRunning], a
- ld a, $0
- ld [$d437], a
- ld hl, $d434
+ ld a, SCRIPT_OFF
+ ld [ScriptMode], a
+ ld hl, ScriptFlags
res 0, [hl]
- call Unknown_0x96e11
+ call StopScript
ret
; 0x97b8c
Script_return: ; 0x97b8c
; script command 0x90
- call $7b9a
- jr c, .asm_97b91 ; 0x97b8f $0
+ call ExitScriptSubroutine
+ jr c, .asm_97b91
.asm_97b91
- ld hl, $d434
+ ld hl, ScriptFlags
res 0, [hl]
- call Unknown_0x96e11
+ call StopScript
ret
; 0x97b9a
-Unknown_0x97b9a: ; 0x97b9a
+ExitScriptSubroutine: ; 0x97b9a
+; Return carry if there's no parent to return to.
+
ld hl, $d43c
ld a, [hl]
and a
@@ -3173,11 +3175,11 @@ Script_resetfuncs: ; 0x97bc0
xor a
ld [$d43c], a
ld [ScriptRunning], a
- ld a, $0
- ld [$d437], a
- ld hl, $d434
+ ld a, SCRIPT_OFF
+ ld [ScriptMode], a
+ ld hl, ScriptFlags
res 0, [hl]
- call Unknown_0x96e11
+ call StopScript
ret
; 0x97bd5
@@ -3186,15 +3188,9 @@ Script_halloffame: ; 0x97bd5
ld hl, $cfbc
res 0, [hl]
- ld a, BANK(HallOfFame1)
- ld hl, HallOfFame1
- rst $8
- ld a, BANK(HallOfFame2)
- ld hl, HallOfFame2
- rst $8
- ld a, BANK(HallOfFame3)
- ld hl, HallOfFame3
- rst $8
+ callba HallOfFame1
+ callba HallOfFame2
+ callba HallOfFame3
ld hl, $cfbc
set 0, [hl]
jr DisplayCredits
@@ -3211,7 +3207,7 @@ DisplayCredits:
call $7bc0
ld a, $3
call $261b
- call Unknown_0x96e11
+ call StopScript
ret
; 0x97c05
@@ -3224,7 +3220,7 @@ Script_unknown0xa8: ; 0x97c05
call GetScriptByte
.asm_97c09
push af
- ld c, $6
+ ld c, 6
call DelayFrames
pop af
dec a
diff --git a/wram.asm b/wram.asm
index 8d6c88bc1..2d4028da4 100644
--- a/wram.asm
+++ b/wram.asm
@@ -1526,8 +1526,19 @@ OTPartyMon5Nickname: ; d416
OTPartyMon6Nickname: ; d421
ds 11
-SECTION "Scripting",BSS[$d438]
+SECTION "Scripting",BSS[$d434]
+ScriptFlags: ; d434
+SCRIPT_RUNNING EQU 2
+ ds 1
+
+ ds 2
+ScriptMode: ; d437
+SCRIPT_OFF EQU 0
+SCRIPT_READ EQU 1
+SCRIPT_WAIT_MOVEMENT EQU 2
+SCRIPT_WAIT EQU 3
+ ds 1
ScriptRunning: ; d438
ds 1
ScriptBank: ; d439
@@ -1535,6 +1546,11 @@ ScriptBank: ; d439
ScriptPos: ; d43a
ds 2
+ ds 17
+
+ScriptDelay: ; d44d
+ ds 1
+
SECTION "Player",BSS[$d472]
PlayerGender: ; d472
; bit 0: