Bond697 icon

Core Scripting

Bond697 | PRO | 06/01/13 07:44:24 PM UTC | 0 ⭐ | 11002 👁️ | Never ⏰ | []
ARM |

32.34 KB

|

None

|

0 👍

/

0 👎

RAM_ARM9:0201587C             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:0201587C
RAM_ARM9:0201587C
RAM_ARM9:0201587C             ; void __fastcall initScriptEnvironment(ScriptEnvironment *vm)
RAM_ARM9:0201587C             initScriptEnvironment                   ; CODE XREF: initEnvironment+6p
RAM_ARM9:0201587C                                                     ; intializeScriptEnvironment+6p
RAM_ARM9:0201587C 38 B5                       PUSH    {R3-R5,LR}
RAM_ARM9:0201587E 05 1C                       MOVS    R5, R0
RAM_ARM9:02015880 2A 88                       LDRH    R2, [R5]
RAM_ARM9:02015882 00 24                       MOVS    R4, #0
RAM_ARM9:02015884 68 6A                       LDR     R0, [R5,#ScriptEnvironment.script_stack_ptr] ; dest
RAM_ARM9:02015886 00 21                       MOVS    R1, #0          ; data
RAM_ARM9:02015888 92 00                       LSLS    R2, R2, #2
RAM_ARM9:0201588A 2C 62                       STR     R4, [R5,#ScriptEnvironment.script_pos_ptr]
RAM_ARM9:0201588C AC 76                       STRB    R4, [R5,#ScriptEnvironment.scriptCmpResult]
RAM_ARM9:0201588E 6C 76                       STRB    R4, [R5,#ScriptEnvironment.executionState]
RAM_ARM9:02015890 EC 61                       STR     R4, [R5,#ScriptEnvironment.funcptr]
RAM_ARM9:02015892 2C 76                       STRB    R4, [R5,#ScriptEnvironment.stackPointer]
RAM_ARM9:02015894 62 F0 9E EF                 BLX     MI_CpuFill8     ; this zeroes out the entire script stack
RAM_ARM9:02015898 6A 88                       LDRH    R2, [R5,#2]
RAM_ARM9:0201589A A8 6A                       LDR     R0, [R5,#ScriptEnvironment.vars] ; dest
RAM_ARM9:0201589C 00 21                       MOVS    R1, #0          ; data
RAM_ARM9:0201589E 92 00                       LSLS    R2, R2, #2
RAM_ARM9:020158A0 62 F0 98 EF                 BLX     MI_CpuFill8     ; this zeroes out the environment var area
RAM_ARM9:020158A4 2C 63                       STR     R4, [R5,#ScriptEnvironment.script_callback_verifier]
RAM_ARM9:020158A6 6C 63                       STR     R4, [R5,#ScriptEnvironment.sys_info]
RAM_ARM9:020158A8 38 BD                       POP     {R3-R5,PC}
RAM_ARM9:020158A8             ; End of function initScriptEnvironment
RAM_ARM9:020158A8
RAM_ARM9:020158A8             ; ---------------------------------------------------------------------------
RAM_ARM9:020158AA 00 00                       DCW 0
RAM_ARM9:020158AC
RAM_ARM9:020158AC             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:020158AC
RAM_ARM9:020158AC
RAM_ARM9:020158AC             ; void *__fastcall startScriptingVirtualMachine(s16 blkGroupID, ScriptEnvironment *vm)
RAM_ARM9:020158AC             startScriptingVirtualMachine            ; CODE XREF: setupScriptingEnvironment+68p
RAM_ARM9:020158AC
RAM_ARM9:020158AC             marker          = -0x18
RAM_ARM9:020158AC
RAM_ARM9:020158AC F8 B5                       PUSH    {R3-R7,LR}      ; marker
RAM_ARM9:020158AE 0D 1C                       MOVS    R5, R1          ; the &vm being passed in here is a local copy on the stack meant for copying to 1 of 4 globally accesible virtual machines
RAM_ARM9:020158B0 69 88                       LDRH    R1, [R5,#2]     ; virtual machine- script interpreter
RAM_ARM9:020158B2 10 4B                       LDR     R3, =aVm_c      ; "vm.c"
RAM_ARM9:020158B4 00 22                       MOVS    R2, #0          ; clearBlock
RAM_ARM9:020158B6 8C 00                       LSLS    R4, R1, #2
RAM_ARM9:020158B8 29 88                       LDRH    R1, [R5]
RAM_ARM9:020158BA 3C 34                       ADDS    R4, #0x3C ; '<'
RAM_ARM9:020158BC 8E 00                       LSLS    R6, R1, #2
RAM_ARM9:020158BE 60 21                       MOVS    R1, #0x60 ; '`'
RAM_ARM9:020158C0 00 91                       STR     R1, [SP,#0x18+marker] ; marker
RAM_ARM9:020158C2 A1 19                       ADDS    R1, R4, R6      ; blockLength
RAM_ARM9:020158C4 24 F0 B0 FC                 BL      allocateBlockFromExpHeap
RAM_ARM9:020158C8 07 1C                       MOVS    R7, R0
RAM_ARM9:020158CA 00 21                       MOVS    R1, #0          ; data
RAM_ARM9:020158CC A2 19                       ADDS    R2, R4, R6      ; size
RAM_ARM9:020158CE 62 F0 82 EF                 BLX     MI_CpuFill8
RAM_ARM9:020158D2 2B 1C                       MOVS    R3, R5
RAM_ARM9:020158D4 3A 1C                       MOVS    R2, R7
RAM_ARM9:020158D6 03 CB                       LDMIA   R3!, {R0,R1}    ; block copy of prepared script environment
RAM_ARM9:020158D8 03 C2                       STMIA   R2!, {R0,R1}
RAM_ARM9:020158DA 03 CB                       LDMIA   R3!, {R0,R1}
RAM_ARM9:020158DC 03 C2                       STMIA   R2!, {R0,R1}
RAM_ARM9:020158DE 03 CB                       LDMIA   R3!, {R0,R1}
RAM_ARM9:020158E0 03 C2                       STMIA   R2!, {R0,R1}
RAM_ARM9:020158E2 68 88                       LDRH    R0, [R5,#2]     ; global var max
RAM_ARM9:020158E4 39 1C                       MOVS    R1, R7
RAM_ARM9:020158E6 3C 31                       ADDS    R1, #0x3C ; '<'
RAM_ARM9:020158E8 80 00                       LSLS    R0, R0, #2      ; stack max * 4 for alignment(number * size)(stack is 32-bit)
RAM_ARM9:020158EA B9 62                       STR     R1, [R7,#0x28]  ; store ptr to global var store
RAM_ARM9:020158EC 08 18                       ADDS    R0, R1, R0
RAM_ARM9:020158EE 78 62                       STR     R0, [R7,#0x24]  ; stack ptr
RAM_ARM9:020158F0 38 1C                       MOVS    R0, R7
RAM_ARM9:020158F2 F8 BD                       POP     {R3-R7,PC}
RAM_ARM9:020158F2             ; End of function startScriptingVirtualMachine
RAM_ARM9:020158F2
RAM_ARM9:020158F2             ; ---------------------------------------------------------------------------
RAM_ARM9:020158F4             ; void *off_20158F4
RAM_ARM9:020158F4 38 A3 09 02 off_20158F4     DCD aVm_c               ; DATA XREF: startScriptingVirtualMachine+6r
RAM_ARM9:020158F4                                                     ; "vm.c"
RAM_ARM9:020158F8
RAM_ARM9:020158F8             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:020158F8
RAM_ARM9:020158F8
RAM_ARM9:020158F8             ; void __fastcall freeScriptingEnvironment(ScriptEnvironment *vm)
RAM_ARM9:020158F8             freeScriptingEnvironment                ; CODE XREF: freeScriptingAllocations+14p
RAM_ARM9:020158F8 00 4B                       LDR     R3, =(freeBlock+1)
RAM_ARM9:020158FA 18 47                       BX      R3 ; freeBlock
RAM_ARM9:020158FA             ; End of function freeScriptingEnvironment
RAM_ARM9:020158FA
RAM_ARM9:020158FA             ; ---------------------------------------------------------------------------
RAM_ARM9:020158FC 79 A2 03 02 off_20158FC     DCD freeBlock+1         ; DATA XREF: freeScriptingEnvironmentr
RAM_ARM9:02015900
RAM_ARM9:02015900             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:02015900
RAM_ARM9:02015900
RAM_ARM9:02015900             ; void __fastcall initEnvironment(ScriptEnvironment *vm, ScrcmdEnvironment *work)
RAM_ARM9:02015900             initEnvironment                         ; CODE XREF: setupScriptingEnvironment+70p
RAM_ARM9:02015900 38 B5                       PUSH    {R3-R5,LR}
RAM_ARM9:02015902 05 1C                       MOVS    R5, R0
RAM_ARM9:02015904 0C 1C                       MOVS    R4, R1
RAM_ARM9:02015906 FF F7 B9 FF                 BL      initScriptEnvironment
RAM_ARM9:0201590A EC 62                       STR     R4, [R5,#ScriptEnvironment.scrcmd_ptr]
RAM_ARM9:0201590C 38 BD                       POP     {R3-R5,PC}
RAM_ARM9:0201590C             ; End of function initEnvironment
RAM_ARM9:0201590C
RAM_ARM9:0201590C             ; ---------------------------------------------------------------------------
RAM_ARM9:0201590E 00                          DCB    0
RAM_ARM9:0201590F 00                          DCB    0
RAM_ARM9:02015910
RAM_ARM9:02015910             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:02015910
RAM_ARM9:02015910
RAM_ARM9:02015910             ; void __fastcall intializeScriptEnvironment(ScriptEnvironment *vm, u8 *initial_script_ptr_pos)
RAM_ARM9:02015910             intializeScriptEnvironment              ; CODE XREF: setupScriptingEnvironment+AAp
RAM_ARM9:02015910 38 B5                       PUSH    {R3-R5,LR}
RAM_ARM9:02015912 04 1C                       MOVS    R4, R0
RAM_ARM9:02015914 0D 1C                       MOVS    R5, R1
RAM_ARM9:02015916 FF F7 B1 FF                 BL      initScriptEnvironment
RAM_ARM9:0201591A 01 20                       MOVS    R0, #1
RAM_ARM9:0201591C 25 62                       STR     R5, [R4,#ScriptEnvironment.script_pos_ptr]
RAM_ARM9:0201591E 60 76                       STRB    R0, [R4,#ScriptEnvironment.executionState]
RAM_ARM9:02015920 38 BD                       POP     {R3-R5,PC}
RAM_ARM9:02015920             ; End of function intializeScriptEnvironment
RAM_ARM9:02015920
RAM_ARM9:02015920             ; ---------------------------------------------------------------------------
RAM_ARM9:02015922 00                          DCB    0
RAM_ARM9:02015923 00                          DCB    0
RAM_ARM9:02015924
RAM_ARM9:02015924             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:02015924
RAM_ARM9:02015924
RAM_ARM9:02015924             ; void __fastcall setScriptState_End(ScriptEnvironment *vm)
RAM_ARM9:02015924             setScriptState_End                      ; CODE XREF: s0002_endScript+2p
RAM_ARM9:02015924                                                     ; s001D_endScriptExecution+Cp ...
RAM_ARM9:02015924 00 21                       MOVS    R1, #0
RAM_ARM9:02015926 41 76                       STRB    R1, [R0,#ScriptEnvironment.executionState]
RAM_ARM9:02015928 01 62                       STR     R1, [R0,#ScriptEnvironment.script_pos_ptr]
RAM_ARM9:0201592A 70 47                       BX      LR
RAM_ARM9:0201592A             ; End of function setScriptState_End
RAM_ARM9:0201592A
RAM_ARM9:0201592C
RAM_ARM9:0201592C             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:0201592C
RAM_ARM9:0201592C
RAM_ARM9:0201592C             ; bool __fastcall scriptHandler_main(ScriptEnvironment *vm)
RAM_ARM9:0201592C             scriptHandler_main                      ; CODE XREF: runAllVirtualMachines+12p
RAM_ARM9:0201592C                                                     ; execute_script+3Ep
RAM_ARM9:0201592C 70 B5                       PUSH    {R4-R6,LR}
RAM_ARM9:0201592E 05 1C                       MOVS    R5, R0
RAM_ARM9:02015930 69 7E                       LDRB    R1, [R5,#ScriptEnvironment.executionState]
RAM_ARM9:02015932 00 29                       CMP     R1, #0
RAM_ARM9:02015934 04 D0                       BEQ     script_over
RAM_ARM9:02015936 01 29                       CMP     R1, #1
RAM_ARM9:02015938 13 D0                       BEQ     script_run
RAM_ARM9:0201593A 02 29                       CMP     R1, #2
RAM_ARM9:0201593C 02 D0                       BEQ     run_assembly
RAM_ARM9:0201593E 49 E0                       B       pause_script_interpreter
RAM_ARM9:02015940             ; ---------------------------------------------------------------------------
RAM_ARM9:02015940
RAM_ARM9:02015940             script_over                             ; CODE XREF: scriptHandler_main+8j
RAM_ARM9:02015940 00 20                       MOVS    R0, #0
RAM_ARM9:02015942 70 BD                       POP     {R4-R6,PC}
RAM_ARM9:02015944             ; ---------------------------------------------------------------------------
RAM_ARM9:02015944
RAM_ARM9:02015944             run_assembly                            ; CODE XREF: scriptHandler_main+10j
RAM_ARM9:02015944 EA 69                       LDR     R2, [R5,#ScriptEnvironment.funcptr] ; get assembly routine to run
RAM_ARM9:02015946 00 2A                       CMP     R2, #0          ; is there a routine?
RAM_ARM9:02015948 09 D0                       BEQ     swap_asm_to_script ; if not, there may have been a mistake.  jump back to script execution
RAM_ARM9:0201594A E9 6A                       LDR     R1, [R5,#ScriptEnvironment.scrcmd_ptr] ; load script command info struct ptr
RAM_ARM9:0201594C 90 47                       BLX     R2
RAM_ARM9:0201594E 01 28                       CMP     R0, #1
RAM_ARM9:02015950 03 D1                       BNE     exit_success
RAM_ARM9:02015952 00 20                       MOVS    R0, #0
RAM_ARM9:02015954 E8 61                       STR     R0, [R5,#ScriptEnvironment.funcptr] ; set asm routine ptr to 0 after it runs
RAM_ARM9:02015956 01 20                       MOVS    R0, #1
RAM_ARM9:02015958 68 76                       STRB    R0, [R5,#ScriptEnvironment.executionState] ; set script handler status back to executing scripts instead of asm
RAM_ARM9:0201595A
RAM_ARM9:0201595A             exit_success                            ; CODE XREF: scriptHandler_main+24j
RAM_ARM9:0201595A 01 20                       MOVS    R0, #1          ; always exit after running assembly
RAM_ARM9:0201595C 70 BD                       POP     {R4-R6,PC}
RAM_ARM9:0201595E             ; ---------------------------------------------------------------------------
RAM_ARM9:0201595E
RAM_ARM9:0201595E             swap_asm_to_script                      ; CODE XREF: scriptHandler_main+1Cj
RAM_ARM9:0201595E 01 20                       MOVS    R0, #1          ; change from r5 + 0x19 = 2 to r5 + 0x19 = 1, so switch to script execution, not assembly execution
RAM_ARM9:02015960 68 76                       STRB    R0, [R5,#ScriptEnvironment.executionState]
RAM_ARM9:02015962
RAM_ARM9:02015962             script_run                              ; CODE XREF: scriptHandler_main+Cj
RAM_ARM9:02015962                                                     ; scriptHandler_main+7Aj ...
RAM_ARM9:02015962 28 6A                       LDR     R0, [R5,#ScriptEnvironment.script_pos_ptr] ; load ptr to next script command to be read
RAM_ARM9:02015964 00 28                       CMP     R0, #0
RAM_ARM9:02015966 02 D1                       BNE     script_continue
RAM_ARM9:02015968 00 20                       MOVS    R0, #0
RAM_ARM9:0201596A 68 76                       STRB    R0, [R5,#ScriptEnvironment.executionState] ; if the next command is 0, set the continuance byte to 0 and exit
RAM_ARM9:0201596C 70 BD                       POP     {R4-R6,PC}
RAM_ARM9:0201596E             ; ---------------------------------------------------------------------------
RAM_ARM9:0201596E
RAM_ARM9:0201596E             script_continue                         ; CODE XREF: scriptHandler_main+3Aj
RAM_ARM9:0201596E 28 1C                       MOVS    R0, R5          ; vm
RAM_ARM9:02015970 00 F0 3A F8                 BL      scriptRead16
RAM_ARM9:02015974 04 1C                       MOVS    R4, R0
RAM_ARM9:02015976 A8 68                       LDR     R0, [R5,#ScriptEnvironment.cmdMax] ; get total scrcmd count(0x2F3)
RAM_ARM9:02015978 84 42                       CMP     R4, R0          ; is this command valid?(is it 2F2 or less)
RAM_ARM9:0201597A 15 D3                       BCC     verify_scrcmd
RAM_ARM9:0201597C 6B 69                       LDR     R3, [R5,#0x14]
RAM_ARM9:0201597E 9C 42                       CMP     R4, R3
RAM_ARM9:02015980 06 D3                       BCC     loc_2015990
RAM_ARM9:02015982 28 69                       LDR     R0, [R5,#0x10]
RAM_ARM9:02015984 C0 18                       ADDS    R0, R0, R3
RAM_ARM9:02015986 84 42                       CMP     R4, R0
RAM_ARM9:02015988 02 D2                       BCS     loc_2015990
RAM_ARM9:0201598A EA 68                       LDR     R2, [R5,#0xC]
RAM_ARM9:0201598C 00 2A                       CMP     R2, #0
RAM_ARM9:0201598E 02 D1                       BNE     loc_2015996
RAM_ARM9:02015990
RAM_ARM9:02015990             loc_2015990                             ; CODE XREF: scriptHandler_main+54j
RAM_ARM9:02015990                                                     ; scriptHandler_main+5Cj
RAM_ARM9:02015990 00 20                       MOVS    R0, #0
RAM_ARM9:02015992 68 76                       STRB    R0, [R5,#0x19]
RAM_ARM9:02015994 70 BD                       POP     {R4-R6,PC}
RAM_ARM9:02015996             ; ---------------------------------------------------------------------------
RAM_ARM9:02015996
RAM_ARM9:02015996             loc_2015996                             ; CODE XREF: scriptHandler_main+62j
RAM_ARM9:02015996 E3 1A                       SUBS    R3, R4, R3
RAM_ARM9:02015998 9B 00                       LSLS    R3, R3, #2
RAM_ARM9:0201599A E9 6A                       LDR     R1, [R5,#ScriptEnvironment.scrcmd_ptr]
RAM_ARM9:0201599C D2 58                       LDR     R2, [R2,R3]
RAM_ARM9:0201599E 28 1C                       MOVS    R0, R5
RAM_ARM9:020159A0 90 47                       BLX     R2
RAM_ARM9:020159A2 01 28                       CMP     R0, #1
RAM_ARM9:020159A4 18 D0                       BEQ     script_done_success
RAM_ARM9:020159A6 DC E7                       B       script_run
RAM_ARM9:020159A8             ; ---------------------------------------------------------------------------
RAM_ARM9:020159A8
RAM_ARM9:020159A8             verify_scrcmd                           ; CODE XREF: scriptHandler_main+4Ej
RAM_ARM9:020159A8 2E 6B                       LDR     R6, [R5,#ScriptEnvironment.script_callback_verifier]
RAM_ARM9:020159AA 00 2E                       CMP     R6, #0
RAM_ARM9:020159AC 09 D0                       BEQ     execute_scr_cmd
RAM_ARM9:020159AE E9 6A                       LDR     R1, [R5,#ScriptEnvironment.scrcmd_ptr]
RAM_ARM9:020159B0 6A 6B                       LDR     R2, [R5,#ScriptEnvironment.sys_info]
RAM_ARM9:020159B2 28 1C                       MOVS    R0, R5
RAM_ARM9:020159B4 23 1C                       MOVS    R3, R4
RAM_ARM9:020159B6 B0 47                       BLX     R6
RAM_ARM9:020159B8 00 28                       CMP     R0, #0
RAM_ARM9:020159BA 02 D1                       BNE     execute_scr_cmd
RAM_ARM9:020159BC 00 20                       MOVS    R0, #0
RAM_ARM9:020159BE 68 76                       STRB    R0, [R5,#ScriptEnvironment.executionState]
RAM_ARM9:020159C0 70 BD                       POP     {R4-R6,PC}
RAM_ARM9:020159C2             ; ---------------------------------------------------------------------------
RAM_ARM9:020159C2
RAM_ARM9:020159C2             execute_scr_cmd                         ; CODE XREF: scriptHandler_main+80j
RAM_ARM9:020159C2                                                     ; scriptHandler_main+8Ej
RAM_ARM9:020159C2 6B 68                       LDR     R3, [R5,#ScriptEnvironment.cmdArray] ; load address of script command function array
RAM_ARM9:020159C4 A2 00                       LSLS    R2, R4, #2      ; 4-byte alignment
RAM_ARM9:020159C6 E9 6A                       LDR     R1, [R5,#ScriptEnvironment.scrcmd_ptr] ; load script command info pointer
RAM_ARM9:020159C8 9A 58                       LDR     R2, [R3,R2]
RAM_ARM9:020159CA 28 1C                       MOVS    R0, R5
RAM_ARM9:020159CC 90 47                       BLX     R2
RAM_ARM9:020159CE 01 28                       CMP     R0, #1          ; did we hit the end of the script? (1 = yes)
RAM_ARM9:020159D0 02 D0                       BEQ     script_done_success
RAM_ARM9:020159D2 C6 E7                       B       script_run
RAM_ARM9:020159D4             ; ---------------------------------------------------------------------------
RAM_ARM9:020159D4
RAM_ARM9:020159D4             pause_script_interpreter                ; CODE XREF: scriptHandler_main+12j
RAM_ARM9:020159D4 00 20                       MOVS    R0, #0
RAM_ARM9:020159D6 68 76                       STRB    R0, [R5,#ScriptEnvironment.executionState]
RAM_ARM9:020159D8
RAM_ARM9:020159D8             script_done_success                     ; CODE XREF: scriptHandler_main+78j
RAM_ARM9:020159D8                                                     ; scriptHandler_main+A4j
RAM_ARM9:020159D8 01 20                       MOVS    R0, #1
RAM_ARM9:020159DA 70 BD                       POP     {R4-R6,PC}
RAM_ARM9:020159DA             ; End of function scriptHandler_main
RAM_ARM9:020159DA
RAM_ARM9:020159DC
RAM_ARM9:020159DC             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:020159DC
RAM_ARM9:020159DC
RAM_ARM9:020159DC             ; ScrcmdEnvironment *__fastcall getScrcmdEnvironment(ScriptEnvironment *vm)
RAM_ARM9:020159DC             getScrcmdEnvironment                    ; CODE XREF: freeScriptingAllocations+4p
RAM_ARM9:020159DC                                                     ; setScriptCallbackVerifier+4p
RAM_ARM9:020159DC C0 6A                       LDR     R0, [R0,#ScriptEnvironment.scrcmd_ptr]
RAM_ARM9:020159DE 70 47                       BX      LR
RAM_ARM9:020159DE             ; End of function getScrcmdEnvironment
RAM_ARM9:020159DE
RAM_ARM9:020159E0
RAM_ARM9:020159E0             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:020159E0
RAM_ARM9:020159E0
RAM_ARM9:020159E0             saveScriptCallbackSysinfo               ; CODE XREF: setScriptCallbackVerifier+12p
RAM_ARM9:020159E0 01 63                       STR     R1, [R0,#ScriptEnvironment.script_callback_verifier]
RAM_ARM9:020159E2 42 63                       STR     R2, [R0,#ScriptEnvironment.sys_info]
RAM_ARM9:020159E4 70 47                       BX      LR
RAM_ARM9:020159E4             ; End of function saveScriptCallbackSysinfo
RAM_ARM9:020159E4
RAM_ARM9:020159E4             ; ---------------------------------------------------------------------------
RAM_ARM9:020159E6 00                          DCB    0
RAM_ARM9:020159E7 00                          DCB    0
RAM_ARM9:020159E8
RAM_ARM9:020159E8             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:020159E8
RAM_ARM9:020159E8
RAM_ARM9:020159E8             ; u16 __fastcall scriptRead16(ScriptEnvironment *vm)
RAM_ARM9:020159E8             scriptRead16                            ; CODE XREF: scriptHandler_main+44p
RAM_ARM9:020159E8                                                     ; s0003_pauseScriptSysForXTurns+6p ...
RAM_ARM9:020159E8 02 6A                       LDR     R2, [R0,#ScriptEnvironment.script_pos_ptr] ; load offset of next script command
RAM_ARM9:020159EA 13 78                       LDRB    R3, [R2]        ; load next byte of script
RAM_ARM9:020159EC 51 1C                       ADDS    R1, R2, #1      ; add 1 to current script command offset ptr
RAM_ARM9:020159EE 01 62                       STR     R1, [R0,#ScriptEnvironment.script_pos_ptr] ; store that pointer back to script info base
RAM_ARM9:020159F0 52 78                       LDRB    R2, [R2,#1]     ; load next byte of current script command
RAM_ARM9:020159F2 49 1C                       ADDS    R1, R1, #1      ; add 1 to current script command offset ptr
RAM_ARM9:020159F4 01 62                       STR     R1, [R0,#ScriptEnvironment.script_pos_ptr] ; store that pointer back to script info base
RAM_ARM9:020159F6 10 06                       LSLS    R0, R2, #0x18
RAM_ARM9:020159F8 00 0C                       LSRS    R0, R0, #0x10
RAM_ARM9:020159FA 18 18                       ADDS    R0, R3, R0
RAM_ARM9:020159FC 00 04                       LSLS    R0, R0, #0x10
RAM_ARM9:020159FE 00 0C                       LSRS    R0, R0, #0x10
RAM_ARM9:02015A00 70 47                       BX      LR
RAM_ARM9:02015A00             ; End of function scriptRead16
RAM_ARM9:02015A00
RAM_ARM9:02015A00             ; ---------------------------------------------------------------------------
RAM_ARM9:02015A02 00                          DCB    0
RAM_ARM9:02015A03 00                          DCB    0
RAM_ARM9:02015A04
RAM_ARM9:02015A04             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:02015A04
RAM_ARM9:02015A04
RAM_ARM9:02015A04             ; u32 __fastcall scriptRead32(ScriptEnvironment *vm)
RAM_ARM9:02015A04             scriptRead32                            ; CODE XREF: setupScriptingEnvironment+BAp
RAM_ARM9:02015A04                                                     ; s0004_pushPCAndJumpToLeafScript+4p ...
RAM_ARM9:02015A04 30 B4                       PUSH    {R4,R5}
RAM_ARM9:02015A06 02 6A                       LDR     R2, [R0,#ScriptEnvironment.script_pos_ptr]
RAM_ARM9:02015A08 13 78                       LDRB    R3, [R2]
RAM_ARM9:02015A0A 51 1C                       ADDS    R1, R2, #1
RAM_ARM9:02015A0C 4D 1C                       ADDS    R5, R1, #1
RAM_ARM9:02015A0E 01 62                       STR     R1, [R0,#ScriptEnvironment.script_pos_ptr]
RAM_ARM9:02015A10 52 78                       LDRB    R2, [R2,#1]
RAM_ARM9:02015A12 6C 1C                       ADDS    R4, R5, #1
RAM_ARM9:02015A14 05 62                       STR     R5, [R0,#ScriptEnvironment.script_pos_ptr]
RAM_ARM9:02015A16 49 78                       LDRB    R1, [R1,#1]
RAM_ARM9:02015A18 04 62                       STR     R4, [R0,#ScriptEnvironment.script_pos_ptr]
RAM_ARM9:02015A1A 6D 78                       LDRB    R5, [R5,#1]
RAM_ARM9:02015A1C 64 1C                       ADDS    R4, R4, #1
RAM_ARM9:02015A1E 04 62                       STR     R4, [R0,#ScriptEnvironment.script_pos_ptr]
RAM_ARM9:02015A20 00 20                       MOVS    R0, #0
RAM_ARM9:02015A22 40 19                       ADDS    R0, R0, R5
RAM_ARM9:02015A24 00 02                       LSLS    R0, R0, #8
RAM_ARM9:02015A26 40 18                       ADDS    R0, R0, R1
RAM_ARM9:02015A28 00 02                       LSLS    R0, R0, #8
RAM_ARM9:02015A2A 80 18                       ADDS    R0, R0, R2
RAM_ARM9:02015A2C 00 02                       LSLS    R0, R0, #8
RAM_ARM9:02015A2E C0 18                       ADDS    R0, R0, R3
RAM_ARM9:02015A30 30 BC                       POP     {R4,R5}
RAM_ARM9:02015A32 70 47                       BX      LR
RAM_ARM9:02015A32             ; End of function scriptRead32
RAM_ARM9:02015A32
RAM_ARM9:02015A34
RAM_ARM9:02015A34             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:02015A34
RAM_ARM9:02015A34
RAM_ARM9:02015A34             ; void __fastcall pushScriptStack(ScriptEnvironment *vm, u32 val)
RAM_ARM9:02015A34             pushScriptStack                         ; CODE XREF: pushProgramCounterAndSetNew+8p
RAM_ARM9:02015A34                                                     ; s0008_pushParamVarToScriptStack+Cp ...
RAM_ARM9:02015A34 18 B4                       PUSH    {R3,R4}
RAM_ARM9:02015A36 04 7E                       LDRB    R4, [R0,#0x18]
RAM_ARM9:02015A38 02 88                       LDRH    R2, [R0]
RAM_ARM9:02015A3A 63 1C                       ADDS    R3, R4, #1
RAM_ARM9:02015A3C 93 42                       CMP     R3, R2
RAM_ARM9:02015A3E 05 DA                       BGE     loc_2015A4C
RAM_ARM9:02015A40 43 6A                       LDR     R3, [R0,#0x24]
RAM_ARM9:02015A42 A2 00                       LSLS    R2, R4, #2
RAM_ARM9:02015A44 99 50                       STR     R1, [R3,R2]
RAM_ARM9:02015A46 01 7E                       LDRB    R1, [R0,#0x18]
RAM_ARM9:02015A48 49 1C                       ADDS    R1, R1, #1
RAM_ARM9:02015A4A 01 76                       STRB    R1, [R0,#0x18]
RAM_ARM9:02015A4C
RAM_ARM9:02015A4C             loc_2015A4C                             ; CODE XREF: pushScriptStack+Aj
RAM_ARM9:02015A4C 18 BC                       POP     {R3,R4}
RAM_ARM9:02015A4E 70 47                       BX      LR
RAM_ARM9:02015A4E             ; End of function pushScriptStack
RAM_ARM9:02015A4E
RAM_ARM9:02015A50
RAM_ARM9:02015A50             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:02015A50
RAM_ARM9:02015A50
RAM_ARM9:02015A50             ; u32 __fastcall popScriptStack(ScriptEnvironment *vm)
RAM_ARM9:02015A50             popScriptStack                          ; CODE XREF: popStackProgramCounter+4p
RAM_ARM9:02015A50                                                     ; s0007_popScriptStackDerefParamVar+6p ...
RAM_ARM9:02015A50 01 7E                       LDRB    R1, [R0,#0x18]
RAM_ARM9:02015A52 00 29                       CMP     R1, #0
RAM_ARM9:02015A54 01 D1                       BNE     loc_2015A5A
RAM_ARM9:02015A56 00 20                       MOVS    R0, #0
RAM_ARM9:02015A58 70 47                       BX      LR
RAM_ARM9:02015A5A             ; ---------------------------------------------------------------------------
RAM_ARM9:02015A5A
RAM_ARM9:02015A5A             loc_2015A5A                             ; CODE XREF: popScriptStack+4j
RAM_ARM9:02015A5A 49 1E                       SUBS    R1, R1, #1
RAM_ARM9:02015A5C 01 76                       STRB    R1, [R0,#0x18]
RAM_ARM9:02015A5E 41 6A                       LDR     R1, [R0,#0x24]
RAM_ARM9:02015A60 00 7E                       LDRB    R0, [R0,#0x18]
RAM_ARM9:02015A62 80 00                       LSLS    R0, R0, #2
RAM_ARM9:02015A64 08 58                       LDR     R0, [R1,R0]
RAM_ARM9:02015A66 70 47                       BX      LR
RAM_ARM9:02015A66             ; End of function popScriptStack
RAM_ARM9:02015A66
RAM_ARM9:02015A68
RAM_ARM9:02015A68             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:02015A68
RAM_ARM9:02015A68
RAM_ARM9:02015A68             ; void __fastcall jumpScrPos(ScriptEnvironment *vm, u32 address)
RAM_ARM9:02015A68             jumpScrPos                              ; CODE XREF: s001E_unconditionalJump+10p
RAM_ARM9:02015A68                                                     ; s001F_conditionalJump+38p
RAM_ARM9:02015A68 01 62                       STR     R1, [R0,#0x20]
RAM_ARM9:02015A6A 70 47                       BX      LR
RAM_ARM9:02015A6A             ; End of function jumpScrPos
RAM_ARM9:02015A6A
RAM_ARM9:02015A6C
RAM_ARM9:02015A6C             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:02015A6C
RAM_ARM9:02015A6C
RAM_ARM9:02015A6C             ; void __fastcall pushProgramCounterAndSetNew(ScriptEnvironment *vm, void *pJumpScript)
RAM_ARM9:02015A6C             pushProgramCounterAndSetNew             ; CODE XREF: s0004_pushPCAndJumpToLeafScript+10p
RAM_ARM9:02015A6C                                                     ; s0020_conditionalCall+28p
RAM_ARM9:02015A6C 38 B5                       PUSH    {R3-R5,LR}
RAM_ARM9:02015A6E 05 1C                       MOVS    R5, R0
RAM_ARM9:02015A70 0C 1C                       MOVS    R4, R1
RAM_ARM9:02015A72 29 6A                       LDR     R1, [R5,#0x20]  ; val
RAM_ARM9:02015A74 FF F7 DE FF                 BL      pushScriptStack
RAM_ARM9:02015A78 2C 62                       STR     R4, [R5,#0x20]
RAM_ARM9:02015A7A 38 BD                       POP     {R3-R5,PC}
RAM_ARM9:02015A7A             ; End of function pushProgramCounterAndSetNew
RAM_ARM9:02015A7A
RAM_ARM9:02015A7C
RAM_ARM9:02015A7C             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:02015A7C
RAM_ARM9:02015A7C
RAM_ARM9:02015A7C             ; void __fastcall popStackProgramCounter(ScriptEnvironment *vm)
RAM_ARM9:02015A7C             popStackProgramCounter                  ; CODE XREF: s0005_setStackToProgramCounter+2p
RAM_ARM9:02015A7C 10 B5                       PUSH    {R4,LR}
RAM_ARM9:02015A7E 04 1C                       MOVS    R4, R0
RAM_ARM9:02015A80 FF F7 E6 FF                 BL      popScriptStack
RAM_ARM9:02015A84 20 62                       STR     R0, [R4,#0x20]
RAM_ARM9:02015A86 10 BD                       POP     {R4,PC}
RAM_ARM9:02015A86             ; End of function popStackProgramCounter
RAM_ARM9:02015A86
RAM_ARM9:02015A88
RAM_ARM9:02015A88             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:02015A88
RAM_ARM9:02015A88
RAM_ARM9:02015A88             ; void __fastcall setScriptState_Asm(ScriptEnvironment *vm, AsmCall *func_ptr)
RAM_ARM9:02015A88             setScriptState_Asm                      ; CODE XREF: s0003_pauseScriptSysForXTurns+16p
RAM_ARM9:02015A88                                                     ; s001C_callScriptLib+4Ap ...
RAM_ARM9:02015A88 02 22                       MOVS    R2, #2
RAM_ARM9:02015A8A 42 76                       STRB    R2, [R0,#0x19]
RAM_ARM9:02015A8C C1 61                       STR     R1, [R0,#0x1C]
RAM_ARM9:02015A8E 70 47                       BX      LR
RAM_ARM9:02015A8E             ; End of function setScriptState_Asm

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎