more ground script work

This commit is contained in:
Seth Barberee 2024-08-14 13:35:27 -07:00
parent 4b1e714c2e
commit 3438e615f3
6 changed files with 126 additions and 134 deletions

View File

@ -5,23 +5,6 @@
.text
thumb_func_start sub_80A1440
sub_80A1440:
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
adds r3, r2, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0
adds r1, r4, 0
adds r2, r5, 0
bl sub_80A14E8
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_80A1440
thumb_func_start GroundScript_ExecuteTrigger
GroundScript_ExecuteTrigger:
push {r4,r5,lr}
@ -1875,118 +1858,4 @@ _080A2424: .4byte gUnknown_8116848
_080A2428: .4byte gUnknown_2039AC0
thumb_func_end GroundScript_Unlock
thumb_func_start sub_80A242C
sub_80A242C:
push {r4-r7,lr}
sub sp, 0x10
adds r4, r1, 0
ldr r0, [r0, 0x2C]
adds r2, r0, 0
adds r2, 0x10
mov r3, sp
_080A243A:
mov r1, sp
adds r0, r2, 0
ldm r0!, {r5-r7}
stm r1!, {r5-r7}
ldr r0, [r0]
str r0, [r1]
adds r2, 0x10
ldrb r0, [r3]
cmp r0, 0xF4
bne _080A243A
movs r1, 0x2
ldrsh r0, [r3, r1]
cmp r4, r0
bne _080A243A
adds r0, r2, 0
add sp, 0x10
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A242C
thumb_func_start sub_80A2460
sub_80A2460:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x10
adds r5, r0, 0
mov r8, r1
ldr r6, [r5, 0x28]
mov r4, sp
_080A2470:
mov r0, sp
adds r1, r6, 0
ldm r1!, {r2,r3,r7}
stm r0!, {r2,r3,r7}
ldr r1, [r1]
str r1, [r0]
ldrb r0, [r4]
cmp r0, 0xCC
bne _080A249E
ldr r1, [sp, 0x4]
mov r0, r8
movs r2, 0x2
bl FlagJudge
lsls r0, 24
cmp r0, 0
beq _080A24F0
movs r0, 0x2
ldrsh r1, [r4, r0]
adds r0, r5, 0
bl sub_80A242C
b _080A24F4
_080A249E:
cmp r0, 0xCD
bne _080A24BE
ldr r1, [sp, 0x4]
ldrb r2, [r4, 0x1]
mov r0, r8
bl FlagJudge
lsls r0, 24
cmp r0, 0
beq _080A24F0
movs r2, 0x2
ldrsh r1, [r4, r2]
adds r0, r5, 0
bl sub_80A242C
b _080A24F4
_080A24BE:
cmp r0, 0xCE
bne _080A24EC
ldr r1, [sp, 0x4]
lsls r1, 16
asrs r1, 16
adds r0, r5, 0
adds r0, 0x74
bl sub_8001658
adds r1, r0, 0
ldrb r2, [r4, 0x1]
mov r0, r8
bl FlagJudge
lsls r0, 24
cmp r0, 0
beq _080A24F0
movs r3, 0x2
ldrsh r1, [r4, r3]
adds r0, r5, 0
bl sub_80A242C
b _080A24F4
_080A24EC:
adds r0, r6, 0
b _080A24F4
_080A24F0:
adds r6, 0x10
b _080A2470
_080A24F4:
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A2460
.align 2,0

View File

@ -139,5 +139,7 @@ extern FunctionScript gFunctionScriptTable[];
#include "debug.h"
bool8 GroundScript_ExecutePP(Action *, s32 *, ScriptInfoSmall *, const DebugLocation *unused);
ScriptCommand *sub_80A242C(Action *action, s32 r1);
ScriptCommand *sub_80A2460(Action *action, s32 r1);
#endif // GUARD_GROUND_SCRIPT_H

View File

@ -352,6 +352,7 @@ SECTIONS {
asm/handleaction.o(.text);
src/ground_script_1.o(.text);
asm/ground_script.o(.text);
src/ground_script_2.o(.text);
src/code_80A26CC.o(.text);
asm/code_80A26CC_1.o(.text);
src/ground_map.o(.text);

View File

@ -22,7 +22,6 @@ extern u8 sub_80AC378(void);
extern u8 sub_80AD290(void);
extern u8 sub_80A8B74(void);
extern u8 sub_809A750(void);
extern ScriptCommand *sub_80A2460(Action *param_1, u32);
void FatalError(u32 *, const char *, ...) __attribute__((noreturn));
void SetPredefinedScript(Action *param_1, s16 index, ScriptCommand *param_3)

View File

@ -160,8 +160,6 @@ u8 sub_809D8EC(Action*, s16);
bool8 sub_809D940(void);
void sub_809D9B8(s16);
bool8 sub_809DA08(Action*, s16, u8);
ScriptCommand *sub_80A242C(Action*, s32);
ScriptCommand *sub_80A2460(Action*, s32);
s16 sub_80A4D7C(s32);
s16 sub_80A7AE8(s16);
void sub_80A87AC(s32, s32);
@ -1872,3 +1870,10 @@ s32 ExecuteScriptCommand(Action *action) {
}
}
}
u32 sub_80A14E8(u32, u8, u32, u32);
UNUSED u32 sub_80A1440(u32 r0, u32 r1, u32 r2)
{
return sub_80A14E8(0, r0, r1, r2);
}

116
src/ground_script_2.c Normal file
View File

@ -0,0 +1,116 @@
#include "debug.h"
#include "global.h"
#include "ground_map_1.h"
#include "ground_script.h"
s32 sub_8001658(ScriptUnion832*, s32);
u8 FlagJudge(s32 r0, s32 r1, u32 operation);
extern u8 gUnknown_2039A36;
extern u8 gUnknown_2039A38[];
extern u32 gUnknown_2039B48[];
extern u8 gUnknown_2039AC0[];
extern u8 gUnknown_8116848[];
s32 sub_80A8B1C(s16);
s32 sub_80AC320(s16);
s32 sub_80AD238(s16);
// TODO: this is still WIP
// void GroundScript_Unlock(void)
// {
// s32 index;
// u8 temp;
// s16 temp_s16;
//
// if(gUnknown_2039A36 != 0)
// {
// gUnknown_2039A36 = 0;
// for(index = 0; index < 0x81; index++)
// {
// if(gUnknown_2039A38[index] != 0)
// {
// Log(1, gUnknown_8116848, index);
// temp = sub_80A4D2C(index);
// temp |= sub_80A8B1C(index);
// temp |= sub_80AC320(index);
// temp |= sub_80AD238(index);
//
// if(gUnknown_2039AC0[index] != 0)
// {
// if (temp != 0)
// {
// temp_s16 = index;
// temp_s16 |= 0x80;
// sub_80A4D2C(temp_s16);
// sub_80A8B1C(temp_s16);
// sub_80AC320(temp_s16);
// sub_80AD238(temp_s16);
// gUnknown_2039AC0[index] = 0;
// }
// }
// else {
// gUnknown_2039A38[index] = 0;
// }
// }
// }
// }
// }
ScriptCommand *sub_80A242C(Action *action, s32 r1)
{
ScriptCommand script;
ScriptCommand *scriptPtr2;
ScriptCommand *scriptPtr;
scriptPtr2 = action->scriptData.script.ptr2;
scriptPtr = scriptPtr2 + 1;
while(1) {
script = *scriptPtr;
scriptPtr++;
if(script.op == 0xF4)
{
if(r1 == script.argShort)
return scriptPtr;
}
}
}
ScriptCommand *sub_80A2460(Action *action, s32 r1)
{
ScriptCommand script;
ScriptCommand *scriptPtr;
s32 temp;
scriptPtr = action->scriptData.script.ptr;
while(1) {
script = *scriptPtr;
if (script.op == 0xCC)
{
if(FlagJudge(r1, script.arg1, 0x2))
return sub_80A242C(action, script.argShort);
}
else if (script.op == 0xCD)
{
if(FlagJudge(r1, script.arg1, script.argByte))
return sub_80A242C(action, script.argShort);
}
else if (script.op == 0xCE)
{
temp = sub_8001658(action->scriptData.unk50, (s16)script.arg1);
if(FlagJudge(r1, temp, script.argByte))
return sub_80A242C(action, script.argShort);
}
else
{
return scriptPtr;
}
scriptPtr++;
}
}