Start porting scrcmd from emerald

This commit is contained in:
PikalaxALT
2019-01-05 23:13:12 -05:00
parent 103789770b
commit 0eba7e0870
7 changed files with 266 additions and 562 deletions
+30 -516
View File
@@ -5,492 +5,6 @@
.text
thumb_func_start sub_8069ED0
sub_8069ED0: @ 8069ED0
movs r0, 0
bx lr
thumb_func_end sub_8069ED0
thumb_func_start sub_8069ED4
sub_8069ED4: @ 8069ED4
movs r0, 0
bx lr
thumb_func_end sub_8069ED4
thumb_func_start ScrCmd_end
ScrCmd_end: @ 8069ED8
push {lr}
bl StopScript
movs r0, 0
pop {r1}
bx r1
thumb_func_end ScrCmd_end
thumb_func_start ScrCmd_gotonative
ScrCmd_gotonative: @ 8069EE4
push {r4,lr}
adds r4, r0, 0
bl ScriptReadWord
adds r1, r0, 0
adds r0, r4, 0
bl SetupNativeScript
movs r0, 0x1
pop {r4}
pop {r1}
bx r1
thumb_func_end ScrCmd_gotonative
thumb_func_start sub_8069EFC
sub_8069EFC: @ 8069EFC
push {lr}
bl ScriptReadHalfword
lsls r0, 16
lsrs r0, 14
ldr r1, _08069F18 @ =gSpecials
adds r1, r0, r1
ldr r0, _08069F1C @ =gStdScripts
cmp r1, r0
bcs _08069F20
ldr r0, [r1]
bl _call_via_r0
b _08069F2C
.align 2, 0
_08069F18: .4byte gSpecials
_08069F1C: .4byte gStdScripts
_08069F20:
ldr r0, _08069F34 @ =gUnknown_83A725C "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c"
ldr r2, _08069F38 @ =gUnknown_83A7290 "0"
movs r1, 0xF1
movs r3, 0x1
bl AGBAssert
_08069F2C:
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_08069F34: .4byte gUnknown_83A725C
_08069F38: .4byte gUnknown_83A7290
thumb_func_end sub_8069EFC
thumb_func_start sub_8069F3C
sub_8069F3C: @ 8069F3C
push {r4,r5,lr}
adds r4, r0, 0
bl ScriptReadHalfword
lsls r0, 16
lsrs r0, 16
bl GetVarPointer
adds r5, r0, 0
adds r0, r4, 0
bl ScriptReadHalfword
lsls r0, 16
lsrs r0, 14
ldr r1, _08069F6C @ =gSpecials
adds r1, r0, r1
ldr r0, _08069F70 @ =gStdScripts
cmp r1, r0
bcs _08069F74
ldr r0, [r1]
bl _call_via_r0
strh r0, [r5]
b _08069F80
.align 2, 0
_08069F6C: .4byte gSpecials
_08069F70: .4byte gStdScripts
_08069F74:
ldr r0, _08069F88 @ =gUnknown_83A725C "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c"
ldr r1, _08069F8C @ =0x00000107
ldr r2, _08069F90 @ =gUnknown_83A7290 "0"
movs r3, 0x1
bl AGBAssert
_08069F80:
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08069F88: .4byte gUnknown_83A725C
_08069F8C: .4byte 0x00000107
_08069F90: .4byte gUnknown_83A7290
thumb_func_end sub_8069F3C
thumb_func_start ScrCmd_callnative
ScrCmd_callnative: @ 8069F94
push {lr}
bl ScriptReadWord
bl _call_via_r0
movs r0, 0
pop {r1}
bx r1
thumb_func_end ScrCmd_callnative
thumb_func_start sub_8069FA4
sub_8069FA4: @ 8069FA4
push {lr}
bl ScriptContext1_Stop
movs r0, 0x1
pop {r1}
bx r1
thumb_func_end sub_8069FA4
thumb_func_start ScrCmd_goto
ScrCmd_goto: @ 8069FB0
push {r4,lr}
adds r4, r0, 0
bl ScriptReadWord
adds r1, r0, 0
adds r0, r4, 0
bl ScriptJump
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end ScrCmd_goto
thumb_func_start ScrCmd_return
ScrCmd_return: @ 8069FC8
push {lr}
bl ScriptReturn
movs r0, 0
pop {r1}
bx r1
thumb_func_end ScrCmd_return
thumb_func_start ScrCmd_call
ScrCmd_call: @ 8069FD4
push {r4,lr}
adds r4, r0, 0
bl ScriptReadWord
adds r1, r0, 0
adds r0, r4, 0
bl ScriptCall
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end ScrCmd_call
thumb_func_start ScrCmd_goto_if
ScrCmd_goto_if: @ 8069FEC
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, [r5, 0x8]
ldrb r4, [r0]
adds r0, 0x1
str r0, [r5, 0x8]
adds r0, r5, 0
bl ScriptReadWord
adds r2, r0, 0
ldr r1, _0806A024 @ =gUnknown_83A7248
lsls r0, r4, 1
adds r0, r4
ldrb r3, [r5, 0x2]
adds r0, r3
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x1
bne _0806A01A
adds r0, r5, 0
adds r1, r2, 0
bl ScriptJump
_0806A01A:
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0806A024: .4byte gUnknown_83A7248
thumb_func_end ScrCmd_goto_if
thumb_func_start ScrCmd_call_if
ScrCmd_call_if: @ 806A028
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, [r5, 0x8]
ldrb r4, [r0]
adds r0, 0x1
str r0, [r5, 0x8]
adds r0, r5, 0
bl ScriptReadWord
adds r2, r0, 0
ldr r1, _0806A060 @ =gUnknown_83A7248
lsls r0, r4, 1
adds r0, r4
ldrb r3, [r5, 0x2]
adds r0, r3
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x1
bne _0806A056
adds r0, r5, 0
adds r1, r2, 0
bl ScriptCall
_0806A056:
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0806A060: .4byte gUnknown_83A7248
thumb_func_end ScrCmd_call_if
thumb_func_start ScrCmd_setvaddress
ScrCmd_setvaddress: @ 806A064
push {r4,lr}
ldr r4, [r0, 0x8]
subs r4, 0x1
bl ScriptReadWord
ldr r1, _0806A07C @ =gUnknown_20370A8
subs r0, r4
str r0, [r1]
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0806A07C: .4byte gUnknown_20370A8
thumb_func_end ScrCmd_setvaddress
thumb_func_start ScrCmd_vgoto
ScrCmd_vgoto: @ 806A080
push {r4,lr}
adds r4, r0, 0
bl ScriptReadWord
adds r1, r0, 0
ldr r0, _0806A0A0 @ =gUnknown_20370A8
ldr r0, [r0]
subs r1, r0
adds r0, r4, 0
bl ScriptJump
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0806A0A0: .4byte gUnknown_20370A8
thumb_func_end ScrCmd_vgoto
thumb_func_start ScrCmd_vcall
ScrCmd_vcall: @ 806A0A4
push {r4,lr}
adds r4, r0, 0
bl ScriptReadWord
adds r1, r0, 0
ldr r0, _0806A0C4 @ =gUnknown_20370A8
ldr r0, [r0]
subs r1, r0
adds r0, r4, 0
bl ScriptCall
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0806A0C4: .4byte gUnknown_20370A8
thumb_func_end ScrCmd_vcall
thumb_func_start ScrCmd_vgoto_if
ScrCmd_vgoto_if: @ 806A0C8
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, [r5, 0x8]
ldrb r4, [r0]
adds r0, 0x1
str r0, [r5, 0x8]
adds r0, r5, 0
bl ScriptReadWord
ldr r1, _0806A104 @ =gUnknown_20370A8
ldr r1, [r1]
subs r2, r0, r1
ldr r1, _0806A108 @ =gUnknown_83A7248
lsls r0, r4, 1
adds r0, r4
ldrb r3, [r5, 0x2]
adds r0, r3
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x1
bne _0806A0FA
adds r0, r5, 0
adds r1, r2, 0
bl ScriptJump
_0806A0FA:
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0806A104: .4byte gUnknown_20370A8
_0806A108: .4byte gUnknown_83A7248
thumb_func_end ScrCmd_vgoto_if
thumb_func_start ScrCmd_vcall_if
ScrCmd_vcall_if: @ 806A10C
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, [r5, 0x8]
ldrb r4, [r0]
adds r0, 0x1
str r0, [r5, 0x8]
adds r0, r5, 0
bl ScriptReadWord
ldr r1, _0806A148 @ =gUnknown_20370A8
ldr r1, [r1]
subs r2, r0, r1
ldr r1, _0806A14C @ =gUnknown_83A7248
lsls r0, r4, 1
adds r0, r4
ldrb r3, [r5, 0x2]
adds r0, r3
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x1
bne _0806A13E
adds r0, r5, 0
adds r1, r2, 0
bl ScriptCall
_0806A13E:
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0806A148: .4byte gUnknown_20370A8
_0806A14C: .4byte gUnknown_83A7248
thumb_func_end ScrCmd_vcall_if
thumb_func_start ScrCmd_gotostd
ScrCmd_gotostd: @ 806A150
push {lr}
adds r2, r0, 0
ldr r0, [r2, 0x8]
ldrb r1, [r0]
adds r0, 0x1
str r0, [r2, 0x8]
lsls r1, 2
ldr r0, _0806A178 @ =gStdScripts
adds r1, r0
ldr r0, _0806A17C @ =gUnknown_8160478
cmp r1, r0
bcs _0806A170
ldr r1, [r1]
adds r0, r2, 0
bl ScriptJump
_0806A170:
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_0806A178: .4byte gStdScripts
_0806A17C: .4byte gUnknown_8160478
thumb_func_end ScrCmd_gotostd
thumb_func_start ScrCmd_callstd
ScrCmd_callstd: @ 806A180
push {lr}
adds r2, r0, 0
ldr r0, [r2, 0x8]
ldrb r1, [r0]
adds r0, 0x1
str r0, [r2, 0x8]
lsls r1, 2
ldr r0, _0806A1A8 @ =gStdScripts
adds r1, r0
ldr r0, _0806A1AC @ =gUnknown_8160478
cmp r1, r0
bcs _0806A1A0
ldr r1, [r1]
adds r0, r2, 0
bl ScriptCall
_0806A1A0:
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_0806A1A8: .4byte gStdScripts
_0806A1AC: .4byte gUnknown_8160478
thumb_func_end ScrCmd_callstd
thumb_func_start ScrCmd_gotostd_if
ScrCmd_gotostd_if: @ 806A1B0
push {r4,lr}
adds r3, r0, 0
ldr r0, [r3, 0x8]
ldrb r2, [r0]
adds r0, 0x1
str r0, [r3, 0x8]
ldrb r4, [r0]
adds r0, 0x1
str r0, [r3, 0x8]
ldr r1, _0806A1F0 @ =gUnknown_83A7248
lsls r0, r2, 1
adds r0, r2
ldrb r2, [r3, 0x2]
adds r0, r2
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x1
bne _0806A1E8
lsls r0, r4, 2
ldr r1, _0806A1F4 @ =gStdScripts
adds r1, r0, r1
ldr r0, _0806A1F8 @ =gUnknown_8160478
cmp r1, r0
bcs _0806A1E8
ldr r1, [r1]
adds r0, r3, 0
bl ScriptJump
_0806A1E8:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0806A1F0: .4byte gUnknown_83A7248
_0806A1F4: .4byte gStdScripts
_0806A1F8: .4byte gUnknown_8160478
thumb_func_end ScrCmd_gotostd_if
thumb_func_start ScrCmd_callstd_if
ScrCmd_callstd_if: @ 806A1FC
push {r4,lr}
adds r3, r0, 0
ldr r0, [r3, 0x8]
ldrb r2, [r0]
adds r0, 0x1
str r0, [r3, 0x8]
ldrb r4, [r0]
adds r0, 0x1
str r0, [r3, 0x8]
ldr r1, _0806A23C @ =gUnknown_83A7248
lsls r0, r2, 1
adds r0, r2
ldrb r2, [r3, 0x2]
adds r0, r2
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x1
bne _0806A234
lsls r0, r4, 2
ldr r1, _0806A240 @ =gStdScripts
adds r1, r0, r1
ldr r0, _0806A244 @ =gUnknown_8160478
cmp r1, r0
bcs _0806A234
ldr r1, [r1]
adds r0, r3, 0
bl ScriptCall
_0806A234:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0806A23C: .4byte gUnknown_83A7248
_0806A240: .4byte gStdScripts
_0806A244: .4byte gUnknown_8160478
thumb_func_end ScrCmd_callstd_if
thumb_func_start ScrCmd_gotoram
ScrCmd_gotoram: @ 806A248
push {lr}
@@ -3992,7 +3506,7 @@ _0806BC68: .4byte gSpecialVar_0x8004
ScrCmd_vmessage: @ 806BC6C
push {lr}
bl ScriptReadWord
ldr r1, _0806BC84 @ =gUnknown_20370A8
ldr r1, _0806BC84 @ =gVScriptOffset
ldr r1, [r1]
subs r0, r1
bl ShowFieldMessage
@@ -4000,7 +3514,7 @@ ScrCmd_vmessage: @ 806BC6C
pop {r1}
bx r1
.align 2, 0
_0806BC84: .4byte gUnknown_20370A8
_0806BC84: .4byte gVScriptOffset
thumb_func_end ScrCmd_vmessage
thumb_func_start ScrCmd_bufferspeciesname
@@ -4016,7 +3530,7 @@ ScrCmd_bufferspeciesname: @ 806BC88
bl VarGet
lsls r0, 16
lsrs r0, 16
ldr r1, _0806BCC0 @ =gUnknown_83A7294
ldr r1, _0806BCC0 @ =sScriptStringVars
lsls r4, 2
adds r4, r1
ldr r2, [r4]
@@ -4031,7 +3545,7 @@ ScrCmd_bufferspeciesname: @ 806BC88
pop {r1}
bx r1
.align 2, 0
_0806BCC0: .4byte gUnknown_83A7294
_0806BCC0: .4byte sScriptStringVars
_0806BCC4: .4byte gSpeciesNames
thumb_func_end ScrCmd_bufferspeciesname
@@ -4042,7 +3556,7 @@ ScrCmd_bufferleadmonspeciesname: @ 806BCC8
ldrb r2, [r1]
adds r1, 0x1
str r1, [r0, 0x8]
ldr r0, _0806BD08 @ =gUnknown_83A7294
ldr r0, _0806BD08 @ =sScriptStringVars
lsls r2, 2
adds r2, r0
ldr r4, [r2]
@@ -4067,7 +3581,7 @@ ScrCmd_bufferleadmonspeciesname: @ 806BCC8
pop {r1}
bx r1
.align 2, 0
_0806BD08: .4byte gUnknown_83A7294
_0806BD08: .4byte sScriptStringVars
_0806BD0C: .4byte gPlayerParty
_0806BD10: .4byte gSpeciesNames
thumb_func_end ScrCmd_bufferleadmonspeciesname
@@ -4089,7 +3603,7 @@ ScrCmd_bufferpartymonnick: @ 806BD14
muls r0, r1
ldr r1, _0806BD54 @ =gPlayerParty
adds r0, r1
ldr r1, _0806BD58 @ =gUnknown_83A7294
ldr r1, _0806BD58 @ =sScriptStringVars
lsls r4, 2
adds r4, r1
ldr r4, [r4]
@@ -4104,7 +3618,7 @@ ScrCmd_bufferpartymonnick: @ 806BD14
bx r1
.align 2, 0
_0806BD54: .4byte gPlayerParty
_0806BD58: .4byte gUnknown_83A7294
_0806BD58: .4byte sScriptStringVars
thumb_func_end ScrCmd_bufferpartymonnick
thumb_func_start ScrCmd_bufferitemname
@@ -4120,7 +3634,7 @@ ScrCmd_bufferitemname: @ 806BD5C
bl VarGet
lsls r0, 16
lsrs r0, 16
ldr r1, _0806BD8C @ =gUnknown_83A7294
ldr r1, _0806BD8C @ =sScriptStringVars
lsls r4, 2
adds r4, r1
ldr r1, [r4]
@@ -4130,7 +3644,7 @@ ScrCmd_bufferitemname: @ 806BD5C
pop {r1}
bx r1
.align 2, 0
_0806BD8C: .4byte gUnknown_83A7294
_0806BD8C: .4byte sScriptStringVars
thumb_func_end ScrCmd_bufferitemname
thumb_func_start sub_806BD90
@@ -4155,7 +3669,7 @@ sub_806BD90: @ 806BD90
bl VarGet
lsls r0, 16
lsrs r6, r0, 16
ldr r1, _0806BDE4 @ =gUnknown_83A7294
ldr r1, _0806BDE4 @ =sScriptStringVars
lsls r0, r7, 2
adds r0, r1
ldr r4, [r0]
@@ -4171,7 +3685,7 @@ sub_806BD90: @ 806BD90
bl StringAppend
b _0806BE22
.align 2, 0
_0806BDE4: .4byte gUnknown_83A7294
_0806BDE4: .4byte sScriptStringVars
_0806BDE8: .4byte gUnknown_83A72A0
_0806BDEC:
adds r0, r5, 0
@@ -4182,7 +3696,7 @@ _0806BDEC:
bhi _0806BE22
cmp r6, 0x1
bls _0806BE22
ldr r0, _0806BE2C @ =gUnknown_83A7294
ldr r0, _0806BE2C @ =sScriptStringVars
lsls r1, r7, 2
adds r1, r0
ldr r4, [r1]
@@ -4205,7 +3719,7 @@ _0806BE22:
pop {r1}
bx r1
.align 2, 0
_0806BE2C: .4byte gUnknown_83A7294
_0806BE2C: .4byte sScriptStringVars
_0806BE30: .4byte gUnknown_83A72A2
thumb_func_end sub_806BD90
@@ -4237,7 +3751,7 @@ ScrCmd_buffermovename: @ 806BE50
bl VarGet
lsls r0, 16
lsrs r0, 16
ldr r1, _0806BE88 @ =gUnknown_83A7294
ldr r1, _0806BE88 @ =sScriptStringVars
lsls r4, 2
adds r4, r1
ldr r2, [r4]
@@ -4252,7 +3766,7 @@ ScrCmd_buffermovename: @ 806BE50
pop {r1}
bx r1
.align 2, 0
_0806BE88: .4byte gUnknown_83A7294
_0806BE88: .4byte sScriptStringVars
_0806BE8C: .4byte gMoveNames
thumb_func_end ScrCmd_buffermovename
@@ -4275,7 +3789,7 @@ ScrCmd_buffernumberstring: @ 806BE90
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
ldr r0, _0806BED0 @ =gUnknown_83A7294
ldr r0, _0806BED0 @ =sScriptStringVars
lsls r5, 2
adds r5, r0
ldr r0, [r5]
@@ -4287,7 +3801,7 @@ ScrCmd_buffernumberstring: @ 806BE90
pop {r1}
bx r1
.align 2, 0
_0806BED0: .4byte gUnknown_83A7294
_0806BED0: .4byte sScriptStringVars
thumb_func_end ScrCmd_buffernumberstring
thumb_func_start ScrCmd_bufferstdstring
@@ -4302,7 +3816,7 @@ ScrCmd_bufferstdstring: @ 806BED4
lsrs r0, 16
bl VarGet
lsls r0, 16
ldr r1, _0806BF0C @ =gUnknown_83A7294
ldr r1, _0806BF0C @ =sScriptStringVars
lsls r4, 2
adds r4, r1
ldr r2, [r4]
@@ -4317,7 +3831,7 @@ ScrCmd_bufferstdstring: @ 806BED4
pop {r1}
bx r1
.align 2, 0
_0806BF0C: .4byte gUnknown_83A7294
_0806BF0C: .4byte sScriptStringVars
_0806BF10: .4byte gUnknown_83E06B8
thumb_func_end ScrCmd_bufferstdstring
@@ -4330,7 +3844,7 @@ ScrCmd_bufferstring: @ 806BF14
str r1, [r0, 0x8]
bl ScriptReadWord
adds r1, r0, 0
ldr r0, _0806BF38 @ =gUnknown_83A7294
ldr r0, _0806BF38 @ =sScriptStringVars
lsls r4, 2
adds r4, r0
ldr r0, [r4]
@@ -4340,7 +3854,7 @@ ScrCmd_bufferstring: @ 806BF14
pop {r1}
bx r1
.align 2, 0
_0806BF38: .4byte gUnknown_83A7294
_0806BF38: .4byte sScriptStringVars
thumb_func_end ScrCmd_bufferstring
thumb_func_start ScrCmd_vloadword
@@ -4348,7 +3862,7 @@ ScrCmd_vloadword: @ 806BF3C
push {lr}
bl ScriptReadWord
adds r1, r0, 0
ldr r0, _0806BF58 @ =gUnknown_20370A8
ldr r0, _0806BF58 @ =gVScriptOffset
ldr r0, [r0]
subs r1, r0
ldr r0, _0806BF5C @ =gStringVar4
@@ -4357,7 +3871,7 @@ ScrCmd_vloadword: @ 806BF3C
pop {r1}
bx r1
.align 2, 0
_0806BF58: .4byte gUnknown_20370A8
_0806BF58: .4byte gVScriptOffset
_0806BF5C: .4byte gStringVar4
thumb_func_end ScrCmd_vloadword
@@ -4370,10 +3884,10 @@ ScrCmd_vbufferstring: @ 806BF60
str r1, [r0, 0x8]
bl ScriptReadWord
adds r1, r0, 0
ldr r0, _0806BF8C @ =gUnknown_20370A8
ldr r0, _0806BF8C @ =gVScriptOffset
ldr r0, [r0]
subs r1, r0
ldr r0, _0806BF90 @ =gUnknown_83A7294
ldr r0, _0806BF90 @ =sScriptStringVars
lsls r4, 2
adds r4, r0
ldr r0, [r4]
@@ -4383,8 +3897,8 @@ ScrCmd_vbufferstring: @ 806BF60
pop {r1}
bx r1
.align 2, 0
_0806BF8C: .4byte gUnknown_20370A8
_0806BF90: .4byte gUnknown_83A7294
_0806BF8C: .4byte gVScriptOffset
_0806BF90: .4byte sScriptStringVars
thumb_func_end ScrCmd_vbufferstring
thumb_func_start ScrCmd_bufferboxname
@@ -4398,7 +3912,7 @@ ScrCmd_bufferboxname: @ 806BF94
lsls r0, 16
lsrs r0, 16
bl VarGet
ldr r1, _0806BFCC @ =gUnknown_83A7294
ldr r1, _0806BFCC @ =sScriptStringVars
lsls r4, 2
adds r4, r1
ldr r4, [r4]
@@ -4413,7 +3927,7 @@ ScrCmd_bufferboxname: @ 806BF94
pop {r1}
bx r1
.align 2, 0
_0806BFCC: .4byte gUnknown_83A7294
_0806BFCC: .4byte sScriptStringVars
thumb_func_end ScrCmd_bufferboxname
thumb_func_start ScrCmd_givemon
+1 -17
View File
@@ -657,23 +657,7 @@ gUnknown_83A720C:: @ 83A720C
gUnknown_83A7240:: @ 83A7240
.asciz "0"
.align 2
gNullScriptPtr:: @ 83A7244
.incbin "baserom.gba", 0x3A7244, 0x4
gUnknown_83A7248:: @ 83A7248
.incbin "baserom.gba", 0x3A7248, 0x14
gUnknown_83A725C:: @ 83A725C
.asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c"
.align 2
gUnknown_83A7290:: @ 83A7290
.asciz "0"
.align 2
gUnknown_83A7294:: @ 83A7294
.incbin "baserom.gba", 0x3A7294, 0xC
.section .rodata.83A72A0
gUnknown_83A72A0:: @ 83A72A0
.incbin "baserom.gba", 0x3A72A0, 0x2
+1 -1
View File
@@ -40,7 +40,7 @@ gStdScripts:: @ 8160450
.4byte gStdScript_81A676C
.4byte gStdScript_81A8E58
.4byte gStdScript_81A4E66
gStdScripts_End::
gStdScriptsEnd::
gUnknown_8160478:: @ 8160478
.incbin "baserom.gba", 0x160478, 0x886C
+6 -6
View File
@@ -1,8 +1,8 @@
.align 2
gScriptCmdTable:: @ 815F9B4
.4byte sub_8069ED0
.4byte sub_8069ED4
.4byte ScrCmd_nop
.4byte ScrCmd_nop1
.4byte ScrCmd_end
.4byte ScrCmd_return
.4byte ScrCmd_call
@@ -38,9 +38,9 @@ gScriptCmdTable:: @ 815F9B4
.4byte ScrCmd_compare_var_to_var
.4byte ScrCmd_callnative
.4byte ScrCmd_gotonative
.4byte sub_8069EFC
.4byte sub_8069F3C
.4byte sub_8069FA4
.4byte ScrCmd_special
.4byte ScrCmd_specialvar
.4byte ScrCmd_waitstate
.4byte ScrCmd_delay
.4byte ScrCmd_setflag
.4byte ScrCmd_clearflag
@@ -216,4 +216,4 @@ gScriptCmdTable:: @ 815F9B4
.4byte sub_806BD90
gScriptCmdTableEnd:: @ 815FD08
.4byte sub_8069ED0
.4byte ScrCmd_nop
+3
View File
@@ -103,6 +103,7 @@ SECTIONS {
asm/map_obj_lock.o(.text);
asm/text_window_graphics.o(.text);
src/script.o(.text);
src/scrcmd.o(.text);
asm/scrcmd.o(.text);
asm/field_control_avatar.o(.text);
asm/event_data.o(.text);
@@ -370,6 +371,8 @@ SECTIONS {
src/metatile_behavior.o(.rodata);
data/metatile_behavior.o(.rodata);
data/data_835B488.o(.rodata);
src/scrcmd.o(.rodata);
data/data_835B488.o(.rodata.83A72A0);
src/battle_ai_script_commands.o(.rodata);
data/data_83F5738.o(.rodata);
src/save.o(.rodata);
+223
View File
@@ -0,0 +1,223 @@
#include "global.h"
#include "gba/isagbprint.h"
#include "script.h"
#include "event_data.h"
extern u16 (*const gSpecials[])(void);
extern u16 (*const gSpecialsEnd[])(void);
extern const u8 *const gStdScripts[];
extern const u8 *const gStdScriptsEnd[];
EWRAM_DATA ptrdiff_t gVScriptOffset = 0;
EWRAM_DATA u8 gUnknown_20370AC = 0;
EWRAM_DATA u16 gUnknown_20370AE = 0;
EWRAM_DATA u16 gUnknown_20370B0 = 0;
EWRAM_DATA u16 gUnknown_20370B2 = 0;
EWRAM_DATA u16 gUnknown_20370B4 = 0;
EWRAM_DATA u16 gUnknown_20370B6 = 0;
// This is defined in here so the optimizer can't see its value when compiling
// script.c.
void * const gNullScriptPtr = NULL;
const u8 sScriptConditionTable[6][3] =
{
// < = >
1, 0, 0, // <
0, 1, 0, // =
0, 0, 1, // >
1, 1, 0, // <=
0, 1, 1, // >=
1, 0, 1, // !=
};
#define SCRCMD_DEF(name) bool8 name(struct ScriptContext *ctx)
SCRCMD_DEF(ScrCmd_nop)
{
return FALSE;
}
SCRCMD_DEF(ScrCmd_nop1)
{
return FALSE;
}
SCRCMD_DEF(ScrCmd_end)
{
StopScript(ctx);
return FALSE;
}
SCRCMD_DEF(ScrCmd_gotonative)
{
bool8 (*func)(void) = (bool8 (*)(void))ScriptReadWord(ctx);
SetupNativeScript(ctx, func);
return TRUE;
}
SCRCMD_DEF(ScrCmd_special)
{
u16 (*const *specialPtr)(void) = gSpecials + ScriptReadHalfword(ctx);
if (specialPtr < gSpecialsEnd)
(*specialPtr)();
else
AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c", 241);
return FALSE;
}
SCRCMD_DEF(ScrCmd_specialvar)
{
u16 * varPtr = GetVarPointer(ScriptReadHalfword(ctx));
u16 (*const *specialPtr)(void) = gSpecials + ScriptReadHalfword(ctx);
if (specialPtr < gSpecialsEnd)
*varPtr = (*specialPtr)();
else
AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c", 263);
return FALSE;
}
SCRCMD_DEF(ScrCmd_callnative)
{
void (*func )(void) = ((void (*)(void))ScriptReadWord(ctx));
func();
return FALSE;
}
SCRCMD_DEF(ScrCmd_waitstate)
{
ScriptContext1_Stop();
return TRUE;
}
SCRCMD_DEF(ScrCmd_goto)
{
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx);
ScriptJump(ctx, scrptr);
return FALSE;
}
SCRCMD_DEF(ScrCmd_return)
{
ScriptReturn(ctx);
return FALSE;
}
SCRCMD_DEF(ScrCmd_call)
{
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx);
ScriptCall(ctx, scrptr);
return FALSE;
}
SCRCMD_DEF(ScrCmd_goto_if)
{
u8 condition = ScriptReadByte(ctx);
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx);
if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
ScriptJump(ctx, scrptr);
return FALSE;
}
SCRCMD_DEF(ScrCmd_call_if)
{
u8 condition = ScriptReadByte(ctx);
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx);
if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
ScriptCall(ctx, scrptr);
return FALSE;
}
SCRCMD_DEF(ScrCmd_setvaddress)
{
u32 addr1 = (u32)ctx->scriptPtr - 1;
u32 addr2 = ScriptReadWord(ctx);
gVScriptOffset = addr2 - addr1;
return FALSE;
}
SCRCMD_DEF(ScrCmd_vgoto)
{
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx);
ScriptJump(ctx, scrptr - gVScriptOffset);
return FALSE;
}
SCRCMD_DEF(ScrCmd_vcall)
{
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx);
ScriptCall(ctx, scrptr - gVScriptOffset);
return FALSE;
}
SCRCMD_DEF(ScrCmd_vgoto_if)
{
u8 condition = ScriptReadByte(ctx);
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx) - gVScriptOffset;
if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
ScriptJump(ctx, scrptr);
return FALSE;
}
SCRCMD_DEF(ScrCmd_vcall_if)
{
u8 condition = ScriptReadByte(ctx);
const u8 * scrptr = (const u8 *)ScriptReadWord(ctx) - gVScriptOffset;
if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
ScriptCall(ctx, scrptr);
return FALSE;
}
SCRCMD_DEF(ScrCmd_gotostd)
{
u8 stdIdx = ScriptReadByte(ctx);
const u8 *const * script = gStdScripts + stdIdx;
if (script < gStdScriptsEnd)
ScriptJump(ctx, *script);
return FALSE;
}
SCRCMD_DEF(ScrCmd_callstd)
{
u8 stdIdx = ScriptReadByte(ctx);
const u8 *const * script = gStdScripts + stdIdx;
if (script < gStdScriptsEnd)
ScriptCall(ctx, *script);
return FALSE;
}
SCRCMD_DEF(ScrCmd_gotostd_if)
{
u8 condition = ScriptReadByte(ctx);
u8 stdIdx = ScriptReadByte(ctx);
if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
{
const u8 *const * script = gStdScripts + stdIdx;
if (script < gStdScriptsEnd)
ScriptJump(ctx, *script);
}
return FALSE;
}
SCRCMD_DEF(ScrCmd_callstd_if)
{
u8 condition = ScriptReadByte(ctx);
u8 stdIdx = ScriptReadByte(ctx);
if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
{
const u8 *const * script = gStdScripts + stdIdx;
if (script < gStdScriptsEnd)
ScriptCall(ctx, *script);
}
return FALSE;
}
u8 * const sScriptStringVars[] =
{
gStringVar1,
gStringVar2,
gStringVar3,
};
+2 -22
View File
@@ -633,29 +633,9 @@ gUnknown_203709C: @ 203709C
.space 0x4
.include "src/script.o"
.include "src/scrcmd.o"
.align 2
gUnknown_20370A8: @ 20370A8
.space 0x4
gUnknown_20370AC: @ 20370AC
.space 0x2
gUnknown_20370AE: @ 20370AE
.space 0x2
gUnknown_20370B0: @ 20370B0
.space 0x2
gUnknown_20370B2: @ 20370B2
.space 0x2
gUnknown_20370B4: @ 20370B4
.space 0x2
gUnknown_20370B6: @ 20370B6
.space 0x2
.align 2
gSpecialVar_0x8000: @ 20370B8
.space 0x2