Skip to content

Commit 2066bc1

Browse files
Merge pull request #201 from slaw-22/Scripting
Decomp script var funcs
2 parents 8b5b6f8 + 3e51dd9 commit 2066bc1

File tree

7 files changed

+45
-76
lines changed

7 files changed

+45
-76
lines changed

asm/include/main_02014D18.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@
439439
.public sub_0200D310
440440
.public sub_02025480
441441
.public sub_020257FC
442-
.public sub_0204BBB0
442+
.public LoadScriptVariableValueString
443443
.public sub_0204E530
444444
.public sub_0204F6F8
445445
.public sub_0204F77C
File renamed without changes.

asm/main_02014D18.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19157,7 +19157,7 @@ _02023E18:
1915719157
add r1, sp, #2
1915819158
mov r0, #0x3f
1915919159
mov r2, #0xa
19160-
bl sub_0204BBB0
19160+
bl LoadScriptVariableValueString
1916119161
add r0, sp, #0x42
1916219162
add r1, sp, #2
1916319163
mov r2, #0xa
@@ -19169,7 +19169,7 @@ _02023E44:
1916919169
add r1, sp, #2
1917019170
mov r0, #0x41
1917119171
mov r2, #0xa
19172-
bl sub_0204BBB0
19172+
bl LoadScriptVariableValueString
1917319173
add r0, sp, #0x42
1917419174
add r1, sp, #2
1917519175
mov r2, #0xa

asm/main_0204BB00.s renamed to asm/main_0204BBCC.s

Lines changed: 1 addition & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,8 @@
11
.include "asm/macros.inc"
2-
.include "main_0204BB00.inc"
2+
.include "main_0204BBCC.inc"
33

44
.text
55

6-
arm_func_start LoadScriptVariableValueSum
7-
LoadScriptVariableValueSum: ; 0x0204BB00
8-
stmdb sp!, {r3, r4, r5, r6, r7, lr}
9-
sub sp, sp, #8
10-
mov r6, r1
11-
mov r4, #0
12-
mov r7, r0
13-
add r0, sp, #0
14-
mov r1, r4
15-
mov r2, r6
16-
bl LoadScriptVariableRaw
17-
mov r5, r4
18-
b _0204BB48
19-
_0204BB2C:
20-
mov r2, r5, lsl #0x10
21-
mov r0, r7
22-
mov r1, r6
23-
mov r2, r2, lsr #0x10
24-
bl LoadScriptVariableValueAtIndex
25-
add r4, r4, r0
26-
add r5, r5, #1
27-
_0204BB48:
28-
ldr r0, [sp]
29-
ldrsh r0, [r0, #8]
30-
cmp r5, r0
31-
blt _0204BB2C
32-
mov r0, r4
33-
add sp, sp, #8
34-
ldmia sp!, {r3, r4, r5, r6, r7, pc}
35-
arm_func_end LoadScriptVariableValueSum
36-
37-
arm_func_start LoadScriptVariableValueBytes
38-
LoadScriptVariableValueBytes: ; 0x0204BB64
39-
stmdb sp!, {r3, r4, r5, lr}
40-
sub sp, sp, #8
41-
mov r3, r0
42-
mov r5, r1
43-
mov r4, r2
44-
add r0, sp, #0
45-
mov r2, r3
46-
mov r1, #0
47-
bl LoadScriptVariableRaw
48-
ldr r2, [sp, #4]
49-
mov r1, #0
50-
b _0204BBA0
51-
_0204BB94:
52-
ldrb r0, [r2], #1
53-
add r1, r1, #1
54-
strb r0, [r5], #1
55-
_0204BBA0:
56-
cmp r1, r4
57-
blt _0204BB94
58-
add sp, sp, #8
59-
ldmia sp!, {r3, r4, r5, pc}
60-
arm_func_end LoadScriptVariableValueBytes
61-
62-
arm_func_start sub_0204BBB0
63-
sub_0204BBB0: ; 0x0204BBB0
64-
stmdb sp!, {r3, r4, r5, lr}
65-
mov r5, r1
66-
mov r4, r2
67-
bl LoadScriptVariableValueBytes
68-
mov r0, #0
69-
strb r0, [r5, r4]
70-
ldmia sp!, {r3, r4, r5, pc}
71-
arm_func_end sub_0204BBB0
72-
736
arm_func_start SaveScriptVariableValueBytes
747
SaveScriptVariableValueBytes: ; 0x0204BBCC
758
stmdb sp!, {r3, r4, r5, lr}

include/scripting.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ struct script_var_raw {
3131

3232
extern const short LOCAL_SCRIPT_VAR_OFFSET;
3333

34-
void LoadScriptVariableRaw(struct script_var_raw* sv_raw,
35-
union script_var_value sv_val_local[],
36-
const enum script_var_id sv_id);
37-
34+
void LoadScriptVariableRaw(struct script_var_raw* sv_raw, union script_var_value sv_val_local[], const enum script_var_id sv_id);
3835
s32 LoadScriptVariableValue(union script_var_value sv_local[], enum script_var_id sv_id);
3936
s32 LoadScriptVariableValueAtIndex(union script_var_value sv_local[], enum script_var_id id, int idx);
4037
void SaveScriptVariableValue(union script_var_value sv_locals[], const enum script_var_id script_var_id, u32 new_val);
4138
void SaveScriptVariableValueAtIndex(union script_var_value sv_locals[], const enum script_var_id script_var_id, int idx, s32 new_val);
39+
s32 LoadScriptVariableValueSum(union script_var_value sv_local[], const enum script_var_id sv_id);
40+
void LoadScriptVariableValueBytes(const enum script_var_id sv_id, u8* result, s32 num_bytes);
41+
void LoadScriptVariableValueString(const enum script_var_id sv_id, u8* result, u8 num_bytes);
4242

4343
#endif //PMDSKY_SCRIPTING_H

main.lsf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ Static main
8181
Object src/main_0204AFF8.o
8282
Object asm/main_0204B018.o
8383
Object src/scripting.o
84-
Object asm/main_0204BB00.o
84+
Object asm/main_0204BBCC.o
8585
Object src/main_0204C938.o
8686
Object asm/main_0204C94C.o
8787
Object src/dungeon_recruitment_3.o

src/scripting.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,3 +287,39 @@ void SaveScriptVariableValueAtIndex(union script_var_value sv_locals[], const en
287287

288288
return;
289289
}
290+
291+
s32 LoadScriptVariableValueSum(union script_var_value sv_local[], const enum script_var_id sv_id)
292+
{
293+
struct script_var_raw script_var_raw;
294+
s32 total = 0;
295+
296+
LoadScriptVariableRaw(&script_var_raw, 0, sv_id);
297+
298+
for(s32 idx = 0; idx < (s16) script_var_raw.def->n_values; idx++) {
299+
total += LoadScriptVariableValueAtIndex(sv_local, sv_id, (u16) idx);
300+
}
301+
302+
return total;
303+
}
304+
305+
void LoadScriptVariableValueBytes(const enum script_var_id sv_id, u8* result, s32 num_bytes)
306+
{
307+
struct script_var_raw sv_raw;
308+
LoadScriptVariableRaw(&sv_raw, 0, sv_id);
309+
310+
s32 i = 0;
311+
u8* val_ptr = (u8*) sv_raw.value;
312+
313+
for(i = 0; i < num_bytes; i++) {
314+
u8 val = *val_ptr;
315+
*result = val;
316+
val_ptr += 1;
317+
result += 1;
318+
}
319+
}
320+
321+
void LoadScriptVariableValueString(const enum script_var_id sv_id, u8* result, u8 num_bytes)
322+
{
323+
LoadScriptVariableValueBytes(sv_id, result, num_bytes);
324+
result[num_bytes] = 0;
325+
}

0 commit comments

Comments
 (0)