From 4be340d5a4a58f32d980438b0beddde60208333a Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sun, 21 Jul 2024 15:19:33 -0400 Subject: [PATCH 01/10] Fixed types in sub_8087144 --- include/code_8086A3C.h | 11 +++++++++++ include/dungeon_util_1.h | 1 + src/code_8057824_1.c | 2 -- src/code_8086A3C.c | 20 ++++++++++---------- 4 files changed, 22 insertions(+), 12 deletions(-) create mode 100644 include/code_8086A3C.h diff --git a/include/code_8086A3C.h b/include/code_8086A3C.h new file mode 100644 index 000000000..81946f736 --- /dev/null +++ b/include/code_8086A3C.h @@ -0,0 +1,11 @@ +#ifndef GUARD_CODE_8086A3C_H +#define GUARD_CODE_8086A3C_H + +#include "dungeon_util_1.h" + +typedef struct struct_8087144 { + struct_8085B80 unk0; + u8 fill16[32]; +} struct_8087144; + +#endif // GUARD_CODE_8086A3C_H \ No newline at end of file diff --git a/include/dungeon_util_1.h b/include/dungeon_util_1.h index 73fd7edaa..a5b690c89 100644 --- a/include/dungeon_util_1.h +++ b/include/dungeon_util_1.h @@ -28,5 +28,6 @@ void sub_8085930(s32 direction); void sub_80859F0(s32 direction); bool8 IsMovingClient(Entity *entity); void sub_8085B0C(Entity *pokemon); +void sub_8085B4C(struct_8085B80 *a0, s16 **a1, Entity **a2, s32 a3); #endif diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c index acd9aeeca..c1fc97b52 100644 --- a/src/code_8057824_1.c +++ b/src/code_8057824_1.c @@ -416,8 +416,6 @@ extern u8 sub_8086AE4(s16); extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(); -extern void sub_8086A54(Entity *); - extern void sub_803F878(u32,s32); void SceneGroudonMovement(Entity * param_1); diff --git a/src/code_8086A3C.c b/src/code_8086A3C.c index 2f60f0116..c6e7fba0f 100644 --- a/src/code_8086A3C.c +++ b/src/code_8086A3C.c @@ -1,4 +1,6 @@ #include "global.h" +#include "code_8086A3C.h" + #include "code_803E46C.h" #include "code_803E668.h" #include "code_806CD90.h" @@ -26,9 +28,7 @@ extern void SkarmoryEntry(Entity *); extern void sub_8086A54(Entity *); extern void sub_8087144(); extern void sub_8072008(Entity *pokemon, Entity *r1, u32 r2, u8 r3, u32); -extern bool8 sub_8085B80(u8 *); -// TODO The parameters don't match the function definition in dungeon_util_1.h (struct_8085B80*, s16**, Entity**, s32). -extern void sub_8085B4C(u8 *, void *, Entity **, u32); +extern bool8 sub_8085B80(struct_8087144 *); extern const u8 gUnknown_810739C[]; extern const u8 gUnknown_81073D4[]; @@ -394,12 +394,12 @@ void sub_8087144(void) Entity *iVar2; Entity *iVar3; Entity *iVar4; - u8 auStack_10c [56]; - u8 puStack_60[56]; - u8 puStack_5c[56]; - u8 *puStack_64[3]; + s16 auStack_10c[28]; + s16 puStack_60[28]; + s16 puStack_5c[28]; + s16 *puStack_64[3]; Entity *pEStack_58[3]; - u8 auStack_4c [48]; + struct_8087144 auStack_4c; iVar2 = GetEntityFromClientType(5); iVar3 = GetEntityFromClientType(6); @@ -417,12 +417,12 @@ void sub_8087144(void) sub_8086A54(iVar2); sub_8086A54(iVar3); sub_8086A54(iVar4); - sub_8085B4C(auStack_4c,puStack_64,pEStack_58,3); + sub_8085B4C(&auStack_4c.unk0,puStack_64,pEStack_58,3); iVar2->info->unk15F = 1; iVar3->info->unk15F = 1; iVar4->info->unk15F = 1; while( TRUE ) { - if (!sub_8085B80(auStack_4c)) break; + if (!sub_8085B80(&auStack_4c)) break; sub_803E46C(0x46); } iVar2->info->unk15F = 0; From 1cb9938d8354b60562ac42492000efde350acaa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Na=C5=9Bciszewski?= Date: Mon, 22 Jul 2024 16:04:36 +0200 Subject: [PATCH 02/10] Refactor ground_script, part 1 --- include/ground_script.h | 182 +++++++++++++++++++++++++--------------- src/code_809D148.c | 38 ++++----- src/ground_map.c | 10 +-- src/ground_map_1.c | 36 ++++---- src/ground_script.c | 144 +++++++++++++++---------------- 5 files changed, 229 insertions(+), 181 deletions(-) diff --git a/include/ground_script.h b/include/ground_script.h index 3624dc61b..18f2aa1b0 100644 --- a/include/ground_script.h +++ b/include/ground_script.h @@ -1,86 +1,134 @@ #ifndef GUARD_GROUND_SCRIPT_H #define GUARD_GROUND_SCRIPT_H -typedef struct GroundScript_ExecutePP_3 -{ - // size: 0xC - u8 *scriptPointer; - s16 scriptType; - s16 unk6; - u8 unk8; -} GroundScript_ExecutePP_3; +#include "structs/str_position.h" -typedef struct __attribute__((packed)) GroundScript_ExecutePP_1_sub +typedef struct ScriptCommand { + // size: 0x10 + /* 0x0 */ u8 op; + /* 0x1 */ u8 argByte; + /* 0x2 */ s16 argShort; + /* 0x4 */ s32 arg1; + /* 0x8 */ s32 arg2; + /* 0xC */ u8* argPtr; +} ScriptCommand; + +typedef struct ScriptInfoSmall +{ + // size: 0xC (3 padding) + /* 0x0 */ ScriptCommand *ptr; + /* 0x4 */ s16 state; + /* 0x6 */ s16 group; + /* 0x8 */ u8 sector; +} ScriptInfoSmall; + +typedef struct ScriptInfo +{ + // size: 0xC (1 padding) + /* 0x0 */ ScriptCommand *ptr; + /* 0x4 */ ScriptCommand *ptr2; + /* 0x8 */ s16 group; + /* 0xA */ u8 sector; +} ScriptInfo; + +typedef union ScriptUnion832 { + u32 raw; + u8 arr[4]; +} ScriptUnion832; + +typedef union ScriptUnion1632 { + u32 raw; + u16 arr[2]; +} ScriptUnion1632; + +typedef struct ScriptData { // size: 0x60 - /* 0x0 */ s16 scriptType; - /* 0x2 */ s16 unk2; - /* 0x4 */ u8 *scriptPointer1; - /* 0x8 */ u8 *scriptPointer2; - /* 0xC */ u16 unkC; - /* 0xE */ u8 unkE; - /* 0xF */ u8 fillF; - /* 0x10 */ u32 unk10; - /* 0x14 */ u8 *unk14; - /* 0x18 */ u8 fill18[0x22 - 0x18]; + /* 0x00 */ s16 state; + /* 0x02 */ s16 savedState; + /* 0x04 */ ScriptInfo script; + // padding + /* 0x10 */ ScriptInfo savedScript; + // padding + /* 0x1C */ ScriptCommand *curPtr; + /* 0x20 */ u8 curScriptOp; + // padding /* 0x22 */ u16 unk22; /* 0x24 */ u16 unk24; - /* 0x26 */ u32 unk26; - u8 fill50[0x60 - 0x2A]; -} GroundScript_ExecutePP_1_sub; + /* 0x26 */ s8 unk26; + // padding + /* 0x28 */ s16 branchDiscriminant; + /* 0x2A */ s16 unk2A; + /* 0x2C */ s16 unk2C; + // padding + /* 0x30 */ s32 unk30; + /* 0x34 */ Position32 pos1; + /* 0x3C */ Position32 pos2; + /* 0x44 */ u8 unk44[4]; + /* 0x48 */ s32 unk48; + /* 0x4C */ u8 unk4C; + /* 0x4D */ u8 unk4D; + // padding + // ultimately accessed as ldrb, doesn't work as array of u32-sized structs, needs union + /* 0x50 */ ScriptUnion832 unk50[4]; +} ScriptData; -// Needed for sub_809D568, possibly could be merged with GroundScript_ExecutePP_1_sub? -typedef struct GroundScript_ExecutePP_1_sub_not_packed +typedef struct CallbackData { - // size: 0x60 - /* 0x0 */ s16 scriptType; - /* 0x2 */ s16 unk2; - /* 0x4 */ u8 *scriptPointer1; - /* 0x8 */ u8 *scriptPointer2; - /* 0xC */ u16 unkC; - /* 0xE */ u8 unkE; - /* 0xF */ u8 fillF; - /* 0x10 */ u32 unk10; - /* 0x14 */ u8 *unk14; - /* 0x18 */ u8 fill18[2]; - /* 0x1C */ u32 unk1C; - /* 0x20 */ u8 unk20; - /* 0x22 */ u16 unk22; - /* 0x24 */ u16 unk24; - /* 0x26 */ u8 unk26; - /* 0x28 */ u16 unk28; - /* 0x2A */ u16 unk2A; - /* 0x2C */ u16 unk2C; - /* 0x2E */ u16 unk2E; - /* 0x30 */ u32 unk30; - u8 fill34[0x1C]; - u32 unk5C[4]; -} GroundScript_ExecutePP_1_sub_not_packed; + // size: 0x54 + /* 0x00 */ u16 maybeId; + // padding + // (almost?) all callbacks take the parentObject as first parameter + /* 0x04 */ s16 (*func04)(void*); // id related + /* 0x08 */ u32 (*func08)(); + /* 0x0C */ u32 (*func0C)(); + /* 0x10 */ u32 (*func10)(); + /* 0x14 */ u32 (*func14)(); + /* 0x18 */ u32 (*func18)(); + /* 0x1C */ u32 (*func1C)(); + /* 0x20 */ u32 (*func20)(); + /* 0x24 */ u32 (*func24)(); + /* 0x28 */ u32 (*func28)(); + /* 0x2C */ u32 (*func2C)(); + /* 0x30 */ u32 (*func30)(); + /* 0x34 */ u32 (*func34)(); + /* 0x38 */ u32 (*func38)(); + /* 0x3C */ u32 (*func3C)(); + /* 0x40 */ u32 (*func40)(); + /* 0x44 */ u32 (*func44)(); + /* 0x48 */ u32 (*func48)(); + /* 0x4C */ u32 (*func4C)(); + /* 0x50 */ u32 (*func50)(); +} CallbackData; -typedef void (*Callback)(u32, void *); -typedef struct GroundScript_ExecutePP_1_sub2 +typedef struct Action { - Callback callbacks[10]; // IDK the size.. -} GroundScript_ExecutePP_1_sub2; + // size: 0xE4 + /* 0x00 */ struct CallbackData *callbacks; + /* 0x04 */ void *parentObject; // struct GroundObject * + /* 0x08 */ s16 unk8[2]; // id? + /* 0x0C */ ScriptUnion1632 unkC; + /* 0x10 */ u16 group; + /* 0x12 */ u8 sector; + // padding + /* 0x14 */ ScriptCommand *predefinedScripts[4]; + /* 0x24 */ ScriptData scriptData; + /* 0x84 */ ScriptData scriptData2; +} Action; -// size: 0x110 -typedef struct GroundScript_ExecutePP_1 +// Only used when accessing gGroundMapAction (3001B6C), basically everything else just uses Action +// probably worth moving to ground_map.h together with the main GroundMap struct +// oh well, TODO later I guess +typedef struct GroundMapAction { - GroundScript_ExecutePP_1_sub2 *unk0; - u32 unk4; - u16 unk8; - u32 unkC; - u16 unk10; - u8 unk12; - u8 *unk14[4]; - GroundScript_ExecutePP_1_sub unk24; - GroundScript_ExecutePP_1_sub unk84; - u16 unkE4; - u8 fillE8[0x110 - 0xE8]; -} GroundScript_ExecutePP_1; + // size: 0x110 + /* 0x00 */ Action action; + /* 0xE4 */ u16 groundMapId; + /* .... */ u8 fillE8[0x110 - 0xE6]; +} GroundMapAction; #include "debug.h" -bool8 GroundScript_ExecutePP(GroundScript_ExecutePP_1 *, s32 *, GroundScript_ExecutePP_3 *, const DebugLocation *unused); +bool8 GroundScript_ExecutePP(Action *, s32 *, ScriptInfoSmall *, const DebugLocation *unused); #endif // GUARD_GROUND_SCRIPT_H diff --git a/src/code_809D148.c b/src/code_809D148.c index b9572086b..5a4921799 100644 --- a/src/code_809D148.c +++ b/src/code_809D148.c @@ -442,44 +442,44 @@ s32 sub_809D52C(void *a0) return 0; } -void sub_809D568(GroundScript_ExecutePP_1_sub_not_packed *a0) +void sub_809D568(ScriptData *a0) { s32 i; - a0->scriptType = -1; - a0->unk2 = 0; - a0->scriptPointer2 = 0; - a0->scriptPointer1 = 0; - a0->unk14 = 0; - a0->unk10 = 0; - a0->unk20 = 0; - a0->unk1C = 0; + a0->state = -1; + a0->savedState = 0; + a0->script.ptr2 = 0; + a0->script.ptr = 0; + a0->savedScript.ptr2 = 0; + a0->savedScript.ptr = 0; + a0->curScriptOp = 0; + a0->curPtr = 0; a0->unk22 = -1; a0->unk24 = 0; a0->unk26 = 0xFF; - a0->unk28 = 0; + a0->branchDiscriminant = 0; a0->unk2A = 0; a0->unk2C = 0; a0->unk30 = 0; for (i = 0; i < 4; i++) { - a0->unk5C[i] = 0; + a0->unk50[i].raw = 0; } } -void sub_809D5B8(GroundScript_ExecutePP_1 *a0) +void sub_809D5B8(Action *a0) { s32 i; - a0->unk0 = 0; - a0->unk4 = 0; - a0->unk10 = -1; - a0->unk12 = 0xFF; + a0->callbacks = NULL; + a0->parentObject = NULL; + a0->group = -1; + a0->sector = 0xFF; sub_809D520(&a0->unkC); for (i = 0; i < 4; i++) { - a0->unk14[i] = 0; + a0->predefinedScripts[i] = NULL; } - sub_809D568((void *) &a0->unk24); // Casting to void* because packed/not packed - sub_809D568((void *) &a0->unk84); // Casting to void* because packed/not packed + sub_809D568(&a0->scriptData); + sub_809D568(&a0->scriptData2); } diff --git a/src/ground_map.c b/src/ground_map.c index 2c029a7c8..265416fb5 100644 --- a/src/ground_map.c +++ b/src/ground_map.c @@ -6,7 +6,7 @@ #include "ground_script.h" #include "memory.h" -IWRAM_DATA GroundScript_ExecutePP_1 *gUnknown_3001B6C = {0}; +IWRAM_DATA GroundMapAction *gUnknown_3001B6C = {0}; IWRAM_DATA unkStruct_3001B70 *gUnknown_3001B70 = {0}; extern const u8 gUnknown_811736C[]; @@ -15,14 +15,14 @@ extern const DebugLocation gUnknown_8117538[]; extern void sub_809D600(void *, const u8 *, u32, u32, u32); extern void sub_809D648(void *); extern void sub_80A2D00(unkStruct_3001B70 *); -extern void sub_809D754(GroundScript_ExecutePP_1 *, const DebugLocation *); +extern void sub_809D754(GroundMapAction *, const DebugLocation *); extern void sub_80A2D68(unkStruct_3001B70 *); extern void sub_80A2D88(unkStruct_3001B70 *); void sub_80A4A7C(void) { - gUnknown_3001B6C = MemoryAlloc(sizeof(GroundScript_ExecutePP_1), 6); - gUnknown_3001B6C->unkE4 = -1; + gUnknown_3001B6C = MemoryAlloc(sizeof(GroundMapAction), 6); + gUnknown_3001B6C->groundMapId = -1; sub_809D600(gUnknown_3001B6C, gUnknown_811736C, 0, -1, -1); sub_80A5E8C(0); GroundMap_Reset(); @@ -66,4 +66,4 @@ void sub_80A4B54(void) sub_80A2D88(gUnknown_3001B70); nullsub_122(); -} \ No newline at end of file +} diff --git a/src/ground_map_1.c b/src/ground_map_1.c index 80de304b3..2901de140 100644 --- a/src/ground_map_1.c +++ b/src/ground_map_1.c @@ -4,7 +4,7 @@ #include "ground_map_1.h" #include "ground_script.h" -extern GroundScript_ExecutePP_1 *gUnknown_3001B6C; +extern GroundMapAction *gUnknown_3001B6C; extern const u8 gUnknown_8117594[]; extern const u8 gUnknown_81175EC[]; @@ -14,20 +14,20 @@ extern const u8 gUnknown_8117650[]; extern const DebugLocation gUnknown_8117698; extern const unkStruct_811BAF4 gUnknown_811BAF4[10]; -extern void GroundMap_GetStationScript(GroundScript_ExecutePP_3 *, s16, u32, u32); +extern void GroundMap_GetStationScript(ScriptInfoSmall *, s16, u32, u32); extern u8 sub_809D678(void *); -extern void sub_809D710(u8 *, GroundScript_ExecutePP_3 *, s32); +extern void sub_809D710(u8 *, ScriptInfoSmall *, s32); extern bool8 sub_809D968(void *, s32); -static void sub_80A4BE8(GroundScript_ExecutePP_3 *script, s16 r1) +static void sub_80A4BE8(ScriptInfoSmall *script, s16 r1) { GroundMap_GetStationScript(script, r1, 0, 0); } void GroundMap_ExecuteEvent(s16 scriptIndex, u32 param_2) { - GroundScript_ExecutePP_3 script; + ScriptInfoSmall script; s32 index_s32; u8 iVar2; @@ -37,14 +37,14 @@ void GroundMap_ExecuteEvent(s16 scriptIndex, u32 param_2) Log(0,gUnknown_8117594, index_s32, iVar2); // "GroundMap ExecuteEvent %3d %d sub_809D710(NULL, &script, index_s32); if (iVar2 != 0) - script.scriptType = 5; + script.state = 5; - GroundScript_ExecutePP(gUnknown_3001B6C, 0, &script, &gUnknown_81175E0); + GroundScript_ExecutePP(&gUnknown_3001B6C->action, 0, &script, &gUnknown_81175E0); } void GroundMap_ExecuteStation(s16 param_1, s16 param_2, s8 param_3, u32 param_4) { - GroundScript_ExecutePP_3 script; + ScriptInfoSmall script; s32 iVar1; s32 iVar2; s32 iVar3; @@ -58,35 +58,35 @@ void GroundMap_ExecuteStation(s16 param_1, s16 param_2, s8 param_3, u32 param_4) Log(0, gUnknown_81175EC, iVar1, iVar2, iVar3, iVar4); // GroundMap ExecuteStation %3d %3d %3d %d GroundMap_GetStationScript(&script, iVar1, iVar2, iVar3); if (iVar4 != 0) - script.scriptType = 5; + script.state = 5; - GroundScript_ExecutePP(gUnknown_3001B6C, 0, &script, &gUnknown_8117644); + GroundScript_ExecutePP(&gUnknown_3001B6C->action, 0, &script, &gUnknown_8117644); } void GroundMap_ExecuteEnter(s16 param_1) { - GroundScript_ExecutePP_3 script; + ScriptInfoSmall script; s32 iVar1; iVar1 = param_1; Log(0, gUnknown_8117650, iVar1); // GroundMap ExecuteEnter %3d sub_80A4BE8(&script, iVar1); - script.scriptType = 2; - script.unk6 = 0; - script.unk8 = 0; - GroundScript_ExecutePP(gUnknown_3001B6C, 0, &script, &gUnknown_8117698); + script.state = 2; + script.group = 0; + script.sector = 0; + GroundScript_ExecutePP(&gUnknown_3001B6C->action, 0, &script, &gUnknown_8117698); } UNUSED static u8 sub_80A4D14(void) { - return sub_809D678(gUnknown_3001B6C); + return sub_809D678(&gUnknown_3001B6C->action); } bool8 sub_80A4D2C(s16 param_1) { s32 iVar1 = param_1; - return sub_809D968(gUnknown_3001B6C, iVar1); + return sub_809D968(&gUnknown_3001B6C->action, iVar1); } bool8 sub_80A4D48(s16 index) @@ -95,4 +95,4 @@ bool8 sub_80A4D48(s16 index) if (gUnknown_811BAF4[index].unk0 == 5) return FALSE; if (gUnknown_811BAF4[index].unk0 != 8) return TRUE; return FALSE; -} \ No newline at end of file +} diff --git a/src/ground_script.c b/src/ground_script.c index b4b71328d..420b3ed70 100644 --- a/src/ground_script.c +++ b/src/ground_script.c @@ -22,155 +22,155 @@ extern u8 sub_80AC378(void); extern u8 sub_80AD290(void); extern u8 sub_80A8B74(void); extern u8 sub_809A750(void); -extern u8 *sub_80A2460(GroundScript_ExecutePP_1 *param_1, u32); +extern ScriptCommand *sub_80A2460(Action *param_1, u32); void FatalError(u32 *, const char *, ...) __attribute__((noreturn)); typedef struct FunctionScript { u32 unk0; u8 *funcName; - u8 *script; + ScriptCommand *script; } FunctionScript; extern FunctionScript gFunctionScriptTable[]; -void sub_809D6D8(GroundScript_ExecutePP_1 *param_1, s16 index, u8 *param_3) +void sub_809D6D8(Action *param_1, s16 index, ScriptCommand *param_3) { - param_1->unk14[index] = param_3; + param_1->predefinedScripts[index] = param_3; } -bool8 sub_809D6E4(GroundScript_ExecutePP_1 *param_1, GroundScript_ExecutePP_3 *script, s16 _index) +bool8 sub_809D6E4(Action *param_1, ScriptInfoSmall *script, s16 _index) { - u8 *scriptPtr; + ScriptCommand *scriptPtr; s32 index = _index; - scriptPtr = param_1->unk14[index]; - script->scriptPointer = scriptPtr; - script->scriptType = index; - script->unk6 = param_1->unk10; - script->unk8 = param_1->unk12; + scriptPtr = param_1->predefinedScripts[index]; + script->ptr = scriptPtr; + script->state = index; + script->group = param_1->group; + script->sector = param_1->sector; return scriptPtr != NULL; } -void sub_809D710(GroundScript_ExecutePP_1 *param_1, GroundScript_ExecutePP_3 *script, s16 index) +void sub_809D710(Action *param_1, ScriptInfoSmall *script, s16 index) { s32 index_s32 = index; - script->scriptPointer = gFunctionScriptTable[index_s32].script; - script->scriptType = 2; + script->ptr = gFunctionScriptTable[index_s32].script; + script->state = 2; if (param_1 != NULL) { - script->unk6 = param_1->unk10; - script->unk8 = param_1->unk12; + script->group = param_1->group; + script->sector = param_1->sector; } else { - script->unk6 = -1; - script->unk8 = -1; + script->group = -1; + script->sector = -1; } } -bool8 sub_809D754(GroundScript_ExecutePP_1 *param_1, DebugLocation *unused) +bool8 sub_809D754(Action *param_1, DebugLocation *unused) { - sub_809D568(¶m_1->unk24); - sub_809D568(¶m_1->unk84); + sub_809D568(¶m_1->scriptData); + sub_809D568(¶m_1->scriptData2); return TRUE; } -bool8 sub_809D770(GroundScript_ExecutePP_1 *param_1, DebugLocation *unused) +bool8 sub_809D770(Action *param_1, DebugLocation *unused) { - sub_809D568(¶m_1->unk24); - sub_809D568(¶m_1->unk84); - param_1->unk24.unk2 = 4; + sub_809D568(¶m_1->scriptData); + sub_809D568(¶m_1->scriptData2); + param_1->scriptData.savedState = 4; return TRUE; } -bool8 GroundScript_ExecutePP(GroundScript_ExecutePP_1 *param_1, s32 *param_2, GroundScript_ExecutePP_3 *param_3, const DebugLocation *unused) +bool8 GroundScript_ExecutePP(Action *action, s32 *param_2, ScriptInfoSmall *param_3, const DebugLocation *unused) { - if ((param_3 == NULL) || (param_3->scriptPointer == NULL)) { + if ((param_3 == NULL) || (param_3->ptr == NULL)) { return FALSE; } - switch(param_3->scriptType) { + switch(param_3->state) { case 2: case 3: - if (param_1->unk24.scriptType == 1) { - param_1->unk84 = param_1->unk24; + if (action->scriptData.state == 1) { + action->scriptData2 = action->scriptData; break; } - if (param_1->unk24.scriptType == 5) { - sub_809D568(¶m_1->unk84); + if (action->scriptData.state == 5) { + sub_809D568(&action->scriptData2); } break; case 5: - if (param_1->unk24.scriptType != 2) { - // "execute script type error B" + if (action->scriptData.state != 2) { + // "execute script type error B" at ../ground/ground_script.c:688 FatalError(&gUnknown_8116538, gUnknown_8116544); } - if (param_1->unk84.scriptType != -1) { - // "execute script type error C" + if (action->scriptData2.state != -1) { + // "execute script type error C" at ../ground/ground_script.c:689 FatalError(&gUnknown_8116560, gUnknown_811656C); } - param_1->unk84 = param_1->unk24; + action->scriptData2 = action->scriptData; break; case 0: - if (param_1->unk24.scriptType != 1) goto _0809D84A; - param_1->unk84 = param_1->unk24; + if (action->scriptData.state != 1) goto _0809D84A; + action->scriptData2 = action->scriptData; break; case 1: _0809D84A: - sub_809D568(¶m_1->unk84); + sub_809D568(&action->scriptData2); break; default: - // "execute script type error %d" - FatalError(&gUnknown_8116588, gUnknown_8116594, param_3->scriptType); + // "execute script type error %d" at ../ground/ground_script.c:708 + FatalError(&gUnknown_8116588, gUnknown_8116594, param_3->state); } - sub_809D568(¶m_1->unk24); + sub_809D568(&action->scriptData); if (param_2 != NULL) { - param_1->unkC = param_2[0]; + action->unkC.raw = param_2[0]; } else { - sub_809D520(¶m_1->unkC); + sub_809D520(&action->unkC); } - param_1->unk24.scriptType = param_3->scriptType; - param_1->unk24.unk2 = 3; - param_1->unk24.unkC = param_3->unk6; - param_1->unk24.unkE = param_3->unk8; - param_1->unk24.scriptPointer1 = param_3->scriptPointer; - param_1->unk24.scriptPointer2 = param_3->scriptPointer; - param_1->unk24.unk10 = 0; - param_1->unk24.unk14 = NULL; + action->scriptData.state = param_3->state; + action->scriptData.savedState = 3; + action->scriptData.script.group = param_3->group; + action->scriptData.script.sector = param_3->sector; + action->scriptData.script.ptr = param_3->ptr; + action->scriptData.script.ptr2 = param_3->ptr; + action->scriptData.savedScript.ptr = 0; + action->scriptData.savedScript.ptr2 = NULL; - if (param_1->unk0->callbacks[5] != 0) { - param_1->unk0->callbacks[5](param_1->unk4, ¶m_1->unk24.unk26); + if (action->callbacks->func14 != 0) { + action->callbacks->func14(action->parentObject, &action->scriptData.unk26); } return TRUE; } -bool8 sub_809D8C0(GroundScript_ExecutePP_1 *param_1, s32 *param_2, s16 index, DebugLocation *debug) +bool8 sub_809D8C0(Action *param_1, s32 *param_2, s16 index, DebugLocation *debug) { - GroundScript_ExecutePP_3 auStack28; + ScriptInfoSmall auStack28; sub_809D6E4(param_1,&auStack28,index); return GroundScript_ExecutePP(param_1, param_2, &auStack28, debug); } -u8 sub_809D8EC(GroundScript_ExecutePP_1 *param_1, s16 param_2) +u8 sub_809D8EC(Action *param_1, s16 param_2) { s32 param_2_s32; param_2_s32 = param_2; if ((param_2 == 0) && (sub_809A750() == 0)) { - param_1->unk24.scriptPointer1 = sub_80A2460(param_1, 0); + param_1->scriptData.script.ptr = sub_80A2460(param_1, 0); return 0; } else { - param_1->unk24.unk22 = param_2_s32; - param_1->unk24.unk2 = 2; + param_1->scriptData.unk22 = param_2_s32; + param_1->scriptData.savedState = 2; gUnknown_2039A36 = 1; return 1; } } -bool8 GroundScript_Cancel(GroundScript_ExecutePP_1 *r0) +bool8 GroundScript_Cancel(Action *r0) { // NOTE: Will always return TRUE return sub_809D770(r0, &gUnknown_81165C8); @@ -186,7 +186,7 @@ u8 sub_809D940(void) return ret; } -bool8 sub_809D968(GroundScript_ExecutePP_1 *param_1, s16 param_2) +bool8 sub_809D968(Action *param_1, s16 param_2) { s16 sVar1; s16 sVar2; @@ -195,14 +195,14 @@ bool8 sub_809D968(GroundScript_ExecutePP_1 *param_1, s16 param_2) s32 param_2_s16 = param_2; ret = FALSE; - sVar1 = param_1->unk24.unk22; + sVar1 = param_1->scriptData.unk22; if ((sVar1 != -1) && (sVar1 == param_2_s16)) { - param_1->unk24.unk22 = -1; + param_1->scriptData.unk22 = -1; ret = TRUE; } - sVar2 = param_1->unk84.unk22; + sVar2 = param_1->scriptData2.unk22; if ((sVar2 != -1) && (sVar2 == param_2_s16)) { - param_1->unk84.unk22 = -1; + param_1->scriptData2.unk22 = -1; ret = TRUE; } return ret; @@ -224,7 +224,7 @@ void sub_809D9E0(s16 index, s32 r1) gUnknown_2039A36 = 1; } -bool8 sub_809DA08(GroundScript_ExecutePP_1 *param_1, s16 index, u32 param_3) +bool8 sub_809DA08(Action *param_1, s16 index, u32 param_3) { s32 index_s32; @@ -234,14 +234,14 @@ bool8 sub_809DA08(GroundScript_ExecutePP_1 *param_1, s16 index, u32 param_3) if (sub_809A750() == 0) { return FALSE; } - param_1->unk24.unk22 = index_s32; + param_1->scriptData.unk22 = index_s32; } else { - param_1->unk24.unk22 = index_s32 | 0x80; + param_1->scriptData.unk22 = index_s32 | 0x80; gUnknown_2039A38[index_s32] = 1; gUnknown_2039AC0[index_s32] = 1; } - param_1->unk24.unk2 = 2; + param_1->scriptData.savedState = 2; gUnknown_2039A36 = 1; return TRUE; -} \ No newline at end of file +} From 5775f36bd5e3db67a938db5fbcec58b9c1bac82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Na=C5=9Bciszewski?= Date: Mon, 22 Jul 2024 16:54:39 +0200 Subject: [PATCH 03/10] More names --- asm/code_8098468.s | 4 ++-- asm/code_8098BDC.s | 4 ++-- asm/code_809D148.s | 10 +++++----- asm/ground_effect.s | 4 ++-- asm/ground_lives.s | 12 ++++++------ asm/ground_map_1.s | 20 ++++++++++---------- asm/ground_object.s | 10 +++++----- asm/ground_script.s | 10 +++++----- include/ground_map.h | 4 ++-- src/code_809D148.c | 8 ++++---- src/ground_map.c | 26 +++++++++++++------------- src/ground_map_1.c | 12 ++++++------ src/ground_script.c | 20 ++++++++++---------- 13 files changed, 72 insertions(+), 72 deletions(-) diff --git a/asm/code_8098468.s b/asm/code_8098468.s index 2f23b1b5b..21f0abff7 100644 --- a/asm/code_8098468.s +++ b/asm/code_8098468.s @@ -111,7 +111,7 @@ _08098522: bl sub_809C5C4 bl sub_809A560 bl sub_809CB50 - bl sub_80A4A7C + bl AllocGroundMapAction bl nullsub_117 bl sub_80AD990 bl sub_80A77F8 @@ -539,7 +539,7 @@ _08098988: bhi _08098990 b _080985DC _08098990: - bl sub_80A4AC4 + bl FreeGroundMapAction bl nullsub_118 bl sub_80A78F0 bl sub_80ABBD4 diff --git a/asm/code_8098BDC.s b/asm/code_8098BDC.s index e6fa232a0..39a196645 100644 --- a/asm/code_8098BDC.s +++ b/asm/code_8098BDC.s @@ -450,7 +450,7 @@ sub_80993F0: movs r0, 0 movs r1, 0 bl sub_8005838 - bl sub_80A4A7C + bl AllocGroundMapAction mov r7, sp add r0, sp, 0x8 mov r8, r0 @@ -662,7 +662,7 @@ _08099620: .4byte gGameOptionsRef _08099624: movs r0, 0x10 bl FadeOutAllMusic - bl sub_80A4AC4 + bl FreeGroundMapAction bl sub_8099768 bl nullsub_103 add sp, 0x28 diff --git a/asm/code_809D148.s b/asm/code_809D148.s index d3b488498..fe3112245 100644 --- a/asm/code_809D148.s +++ b/asm/code_809D148.s @@ -8,8 +8,8 @@ - thumb_func_start sub_809D600 -sub_809D600: + thumb_func_start InitActionWithParams +InitActionWithParams: push {r4-r7,lr} mov r7, r8 push {r7} @@ -22,7 +22,7 @@ sub_809D600: asrs r4, 16 lsls r5, 24 asrs r5, 24 - bl sub_809D5B8 + bl InitAction str r6, [r7] mov r0, r8 str r0, [r7, 0x4] @@ -45,12 +45,12 @@ _0809D63C: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_809D600 + thumb_func_end InitActionWithParams thumb_func_start sub_809D648 sub_809D648: push {lr} - bl sub_809D5B8 + bl InitAction pop {r0} bx r0 thumb_func_end sub_809D648 diff --git a/asm/ground_effect.s b/asm/ground_effect.s index ff56b8e2d..c4fe28480 100644 --- a/asm/ground_effect.s +++ b/asm/ground_effect.s @@ -621,7 +621,7 @@ _080AD01A: adds r0, r4, 0 adds r2, r5, 0 mov r3, r10 - bl sub_809D600 + bl InitActionWithParams ldr r2, [r7, 0x8] cmp r2, 0 bne _080AD04C @@ -641,7 +641,7 @@ _080AD048: _080AD04C: adds r0, r4, 0 movs r1, 0 - bl sub_809D6D8 + bl SetPredefinedScript ldr r3, _080AD07C adds r0, r4, 0 movs r1, 0 diff --git a/asm/ground_lives.s b/asm/ground_lives.s index a15f4f4c7..283bb41f4 100644 --- a/asm/ground_lives.s +++ b/asm/ground_lives.s @@ -1722,7 +1722,7 @@ _080A8508: adds r0, r4, 0 adds r2, r5, 0 ldr r3, [sp, 0x14] - bl sub_809D600 + bl InitActionWithParams ldr r0, _080A8548 ldr r2, [r0] movs r1, 0xCB @@ -1754,7 +1754,7 @@ _080A855C: adds r0, r4, 0 adds r2, r5, 0 ldr r3, [sp, 0x14] - bl sub_809D600 + bl InitActionWithParams _080A8566: ldr r3, [sp, 0x10] ldr r2, [r3, 0xC] @@ -1766,7 +1766,7 @@ _080A8566: _080A8574: adds r0, r4, 0 movs r1, 0x1 - bl sub_809D6D8 + bl SetPredefinedScript ldr r0, [sp, 0x10] ldr r2, [r0, 0x10] cmp r2, 0 @@ -1776,7 +1776,7 @@ _080A8574: _080A8588: adds r0, r4, 0 movs r1, 0x2 - bl sub_809D6D8 + bl SetPredefinedScript ldr r1, [sp, 0x10] ldr r2, [r1, 0x14] cmp r2, 0 @@ -1786,14 +1786,14 @@ _080A8588: _080A859C: adds r0, r4, 0 movs r1, 0x3 - bl sub_809D6D8 + bl SetPredefinedScript ldr r3, [sp, 0x10] ldr r2, [r3, 0x8] cmp r2, 0 beq _080A8630 adds r0, r4, 0 movs r1, 0 - bl sub_809D6D8 + bl SetPredefinedScript ldr r0, [sp, 0x20] cmp r0, 0 bne _080A860C diff --git a/asm/ground_map_1.s b/asm/ground_map_1.s index 89de79db2..1492e5171 100644 --- a/asm/ground_map_1.s +++ b/asm/ground_map_1.s @@ -101,7 +101,7 @@ _080A4E08: _080A4E38: .4byte gUnknown_81176A4 _080A4E3C: .4byte gUnknown_3001B70 _080A4E40: .4byte 0x0000055c -_080A4E44: .4byte gUnknown_3001B6C +_080A4E44: .4byte gGroundMapAction _080A4E48: .4byte gUnknown_8117324 _080A4E4C: lsls r0, r5, 1 @@ -258,7 +258,7 @@ _080A4F30: .align 2, 0 _080A4FA0: .4byte gUnknown_3001B70 _080A4FA4: .4byte gUnknown_8117324 -_080A4FA8: .4byte gUnknown_3001B6C +_080A4FA8: .4byte gGroundMapAction _080A4FAC: cmp r0, 0xAA beq _080A500C @@ -467,7 +467,7 @@ _080A5138: _080A514C: .4byte gUnknown_8117700 _080A5150: .4byte gUnknown_3001B70 _080A5154: .4byte 0x0000055c -_080A5158: .4byte gUnknown_3001B6C +_080A5158: .4byte gGroundMapAction _080A515C: .4byte gUnknown_8117324 _080A5160: lsls r0, r5, 1 @@ -1272,7 +1272,7 @@ sub_80A56F0: str r1, [r2, 0x4] bx lr .align 2, 0 -_080A5700: .4byte gUnknown_3001B6C +_080A5700: .4byte gGroundMapAction thumb_func_end sub_80A56F0 thumb_func_start sub_80A5704 @@ -1293,7 +1293,7 @@ sub_80A5704: str r1, [r0] bx lr .align 2, 0 -_080A5724: .4byte gUnknown_3001B6C +_080A5724: .4byte gGroundMapAction thumb_func_end sub_80A5704 thumb_func_start sub_80A5728 @@ -1305,7 +1305,7 @@ sub_80A5728: ldrsh r0, [r0, r1] bx lr .align 2, 0 -_080A5734: .4byte gUnknown_3001B6C +_080A5734: .4byte gGroundMapAction thumb_func_end sub_80A5728 thumb_func_start sub_80A5738 @@ -1322,7 +1322,7 @@ sub_80A5738: adds r0, r1 bx lr .align 2, 0 -_080A5750: .4byte gUnknown_3001B6C +_080A5750: .4byte gGroundMapAction _080A5754: .4byte gUnknown_811BAF4 thumb_func_end sub_80A5738 @@ -1451,7 +1451,7 @@ _080A5832: b _080A5856 .align 2, 0 _080A5838: .4byte gUnknown_3001B70 -_080A583C: .4byte gUnknown_3001B6C +_080A583C: .4byte gGroundMapAction _080A5840: .4byte gUnknown_811BAF4 _080A5844: .4byte 0xffff8800 _080A5848: .4byte 0xffffb000 @@ -1678,7 +1678,7 @@ GroundMap_Action: pop {r0} bx r0 .align 2, 0 -_080A59D4: .4byte gUnknown_3001B6C +_080A59D4: .4byte gGroundMapAction _080A59D8: .4byte gUnknown_8117770 thumb_func_end GroundMap_Action @@ -1734,7 +1734,7 @@ _080A5A32: b _080A5E46 .align 2, 0 _080A5A34: .4byte gUnknown_3001B70 -_080A5A38: .4byte gUnknown_3001B6C +_080A5A38: .4byte gGroundMapAction _080A5A3C: cmp r0, 0xA8 beq _080A5AF4 diff --git a/asm/ground_object.s b/asm/ground_object.s index 78652c170..df3283665 100644 --- a/asm/ground_object.s +++ b/asm/ground_object.s @@ -733,7 +733,7 @@ _080AC0C0: adds r0, r4, 0 adds r2, r5, 0 mov r3, r10 - bl sub_809D600 + bl InitActionWithParams adds r6, r4, 0 mov r1, r8 ldr r2, [r1, 0xC] @@ -751,7 +751,7 @@ _080AC0C0: _080AC0F2: adds r0, r6, 0 movs r1, 0x1 - bl sub_809D6D8 + bl SetPredefinedScript adds r1, r4, 0 mov r3, r8 ldr r2, [r3, 0x10] @@ -762,7 +762,7 @@ _080AC0F2: _080AC108: adds r0, r1, 0 movs r1, 0x2 - bl sub_809D6D8 + bl SetPredefinedScript mov r0, r8 ldr r2, [r0, 0x14] cmp r2, 0 @@ -772,14 +772,14 @@ _080AC108: _080AC11C: adds r0, r4, 0 movs r1, 0x3 - bl sub_809D6D8 + bl SetPredefinedScript mov r1, r8 ldr r2, [r1, 0x8] cmp r2, 0 beq _080AC140 adds r0, r4, 0 movs r1, 0 - bl sub_809D6D8 + bl SetPredefinedScript ldr r3, _080AC164 adds r0, r4, 0 movs r1, 0 diff --git a/asm/ground_script.s b/asm/ground_script.s index c43e41ce7..42588da72 100644 --- a/asm/ground_script.s +++ b/asm/ground_script.s @@ -1704,12 +1704,12 @@ _0809E98E: bl _call_via_r2 _0809E9A2: adds r0, r4, 0 - bl sub_809D568 + bl InitScriptData b _0809E9D6 _0809E9AA: adds r0, r7, 0 adds r0, 0x24 - bl sub_809D568 + bl InitScriptData b _0809E9D6 _0809E9B4: movs r0, 0x4 @@ -3930,7 +3930,7 @@ _0809FE04: cmp r0, 0x1 bne _0809FE16 adds r0, r1, 0 - bl sub_809D568 + bl InitScriptData _0809FE16: mov r0, r9 ldr r1, [r0] @@ -4028,7 +4028,7 @@ _0809FED0: cmp r0, 0x1 bne _0809FEEE adds r0, r1, 0 - bl sub_809D568 + bl InitScriptData _0809FEEE: mov r3, r9 ldr r2, [r3] @@ -6697,7 +6697,7 @@ GroundScript_ExecuteTrigger: adds r0, r5, 0 movs r2, 0 movs r3, 0 - bl sub_809D600 + bl InitActionWithParams movs r0, 0 add r1, sp, 0x4 adds r2, r4, 0 diff --git a/include/ground_map.h b/include/ground_map.h index 2ac30fd40..d8045059d 100644 --- a/include/ground_map.h +++ b/include/ground_map.h @@ -11,8 +11,8 @@ extern unkStruct_3001B70 *gUnknown_3001B70; void GroundMap_Reset(void); -void sub_80A4A7C(void); -void sub_80A4AC4(void); +void AllocGroundMapAction(void); +void FreeGroundMapAction(void); void sub_80A4B38(void); void sub_80A4B54(void); diff --git a/src/code_809D148.c b/src/code_809D148.c index 5a4921799..8a7e4ee70 100644 --- a/src/code_809D148.c +++ b/src/code_809D148.c @@ -442,7 +442,7 @@ s32 sub_809D52C(void *a0) return 0; } -void sub_809D568(ScriptData *a0) +void InitScriptData(ScriptData *a0) { s32 i; @@ -466,7 +466,7 @@ void sub_809D568(ScriptData *a0) } } -void sub_809D5B8(Action *a0) +void InitAction(Action *a0) { s32 i; @@ -480,6 +480,6 @@ void sub_809D5B8(Action *a0) a0->predefinedScripts[i] = NULL; } - sub_809D568(&a0->scriptData); - sub_809D568(&a0->scriptData2); + InitScriptData(&a0->scriptData); + InitScriptData(&a0->scriptData2); } diff --git a/src/ground_map.c b/src/ground_map.c index 265416fb5..b07deb84c 100644 --- a/src/ground_map.c +++ b/src/ground_map.c @@ -6,42 +6,42 @@ #include "ground_script.h" #include "memory.h" -IWRAM_DATA GroundMapAction *gUnknown_3001B6C = {0}; +IWRAM_DATA GroundMapAction *gGroundMapAction = {0}; IWRAM_DATA unkStruct_3001B70 *gUnknown_3001B70 = {0}; -extern const u8 gUnknown_811736C[]; +extern const CallbackData gUnknown_811736C; extern const DebugLocation gUnknown_8117538[]; -extern void sub_809D600(void *, const u8 *, u32, u32, u32); +extern void InitActionWithParams(Action *action, const CallbackData *callbacks, void *parent, s16 group, s8 sector); extern void sub_809D648(void *); extern void sub_80A2D00(unkStruct_3001B70 *); -extern void sub_809D754(GroundMapAction *, const DebugLocation *); +extern void InitActionScriptData(GroundMapAction *, const DebugLocation *); extern void sub_80A2D68(unkStruct_3001B70 *); extern void sub_80A2D88(unkStruct_3001B70 *); -void sub_80A4A7C(void) +void AllocGroundMapAction(void) { - gUnknown_3001B6C = MemoryAlloc(sizeof(GroundMapAction), 6); - gUnknown_3001B6C->groundMapId = -1; - sub_809D600(gUnknown_3001B6C, gUnknown_811736C, 0, -1, -1); + gGroundMapAction = MemoryAlloc(sizeof(GroundMapAction), 6); + gGroundMapAction->groundMapId = -1; + InitActionWithParams(&gGroundMapAction->action, &gUnknown_811736C, 0, -1, -1); sub_80A5E8C(0); GroundMap_Reset(); } -void sub_80A4AC4(void) +void FreeGroundMapAction(void) { GroundMap_Reset(); sub_80A5EBC(); - sub_809D648(gUnknown_3001B6C); - MemoryFree(gUnknown_3001B6C); - gUnknown_3001B6C = NULL; + sub_809D648(gGroundMapAction); + MemoryFree(gGroundMapAction); + gGroundMapAction = NULL; } void GroundMap_Reset(void) { sub_80015C0(0, 0x37); sub_80015C0(0, 0x38); - sub_809D754(gUnknown_3001B6C, gUnknown_8117538); + InitActionScriptData(gGroundMapAction, gUnknown_8117538); if (gUnknown_3001B70 != NULL) { sub_80A2D00(gUnknown_3001B70); diff --git a/src/ground_map_1.c b/src/ground_map_1.c index 2901de140..d857a379b 100644 --- a/src/ground_map_1.c +++ b/src/ground_map_1.c @@ -4,7 +4,7 @@ #include "ground_map_1.h" #include "ground_script.h" -extern GroundMapAction *gUnknown_3001B6C; +extern GroundMapAction *gGroundMapAction; extern const u8 gUnknown_8117594[]; extern const u8 gUnknown_81175EC[]; @@ -39,7 +39,7 @@ void GroundMap_ExecuteEvent(s16 scriptIndex, u32 param_2) if (iVar2 != 0) script.state = 5; - GroundScript_ExecutePP(&gUnknown_3001B6C->action, 0, &script, &gUnknown_81175E0); + GroundScript_ExecutePP(&gGroundMapAction->action, 0, &script, &gUnknown_81175E0); } void GroundMap_ExecuteStation(s16 param_1, s16 param_2, s8 param_3, u32 param_4) @@ -60,7 +60,7 @@ void GroundMap_ExecuteStation(s16 param_1, s16 param_2, s8 param_3, u32 param_4) if (iVar4 != 0) script.state = 5; - GroundScript_ExecutePP(&gUnknown_3001B6C->action, 0, &script, &gUnknown_8117644); + GroundScript_ExecutePP(&gGroundMapAction->action, 0, &script, &gUnknown_8117644); } void GroundMap_ExecuteEnter(s16 param_1) @@ -75,18 +75,18 @@ void GroundMap_ExecuteEnter(s16 param_1) script.state = 2; script.group = 0; script.sector = 0; - GroundScript_ExecutePP(&gUnknown_3001B6C->action, 0, &script, &gUnknown_8117698); + GroundScript_ExecutePP(&gGroundMapAction->action, 0, &script, &gUnknown_8117698); } UNUSED static u8 sub_80A4D14(void) { - return sub_809D678(&gUnknown_3001B6C->action); + return sub_809D678(&gGroundMapAction->action); } bool8 sub_80A4D2C(s16 param_1) { s32 iVar1 = param_1; - return sub_809D968(&gUnknown_3001B6C->action, iVar1); + return sub_809D968(&gGroundMapAction->action, iVar1); } bool8 sub_80A4D48(s16 index) diff --git a/src/ground_script.c b/src/ground_script.c index 420b3ed70..59cb00bcd 100644 --- a/src/ground_script.c +++ b/src/ground_script.c @@ -17,7 +17,7 @@ extern u8 gUnknown_811656C[]; extern DebugLocation gUnknown_81165C8; extern void sub_809D520(void *); -extern void sub_809D568(void *); +extern void InitScriptData(void *); extern u8 sub_80AC378(void); extern u8 sub_80AD290(void); extern u8 sub_80A8B74(void); @@ -34,7 +34,7 @@ typedef struct FunctionScript extern FunctionScript gFunctionScriptTable[]; -void sub_809D6D8(Action *param_1, s16 index, ScriptCommand *param_3) +void SetPredefinedScript(Action *param_1, s16 index, ScriptCommand *param_3) { param_1->predefinedScripts[index] = param_3; } @@ -67,17 +67,17 @@ void sub_809D710(Action *param_1, ScriptInfoSmall *script, s16 index) } } -bool8 sub_809D754(Action *param_1, DebugLocation *unused) +bool8 InitActionScriptData(Action *param_1, DebugLocation *unused) { - sub_809D568(¶m_1->scriptData); - sub_809D568(¶m_1->scriptData2); + InitScriptData(¶m_1->scriptData); + InitScriptData(¶m_1->scriptData2); return TRUE; } bool8 sub_809D770(Action *param_1, DebugLocation *unused) { - sub_809D568(¶m_1->scriptData); - sub_809D568(¶m_1->scriptData2); + InitScriptData(¶m_1->scriptData); + InitScriptData(¶m_1->scriptData2); param_1->scriptData.savedState = 4; return TRUE; } @@ -95,7 +95,7 @@ bool8 GroundScript_ExecutePP(Action *action, s32 *param_2, ScriptInfoSmall *para break; } if (action->scriptData.state == 5) { - sub_809D568(&action->scriptData2); + InitScriptData(&action->scriptData2); } break; case 5: @@ -115,13 +115,13 @@ bool8 GroundScript_ExecutePP(Action *action, s32 *param_2, ScriptInfoSmall *para break; case 1: _0809D84A: - sub_809D568(&action->scriptData2); + InitScriptData(&action->scriptData2); break; default: // "execute script type error %d" at ../ground/ground_script.c:708 FatalError(&gUnknown_8116588, gUnknown_8116594, param_3->state); } - sub_809D568(&action->scriptData); + InitScriptData(&action->scriptData); if (param_2 != NULL) { action->unkC.raw = param_2[0]; } From 484343340a037e145d735383a510a6ff1c367f7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Na=C5=9Bciszewski?= Date: Mon, 22 Jul 2024 17:04:52 +0200 Subject: [PATCH 04/10] Split ground_script in preparation for ExecuteScriptCommand --- asm/ground_script.s | 1849 ---------------------------------------- asm/handleaction.s | 1856 +++++++++++++++++++++++++++++++++++++++++ ld_script.txt | 2 + src/ground_script_1.c | 4 + 4 files changed, 1862 insertions(+), 1849 deletions(-) create mode 100644 asm/handleaction.s create mode 100644 src/ground_script_1.c diff --git a/asm/ground_script.s b/asm/ground_script.s index 42588da72..f20026e10 100644 --- a/asm/ground_script.s +++ b/asm/ground_script.s @@ -5,1855 +5,6 @@ .text - thumb_func_start HandleAction -HandleAction: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x148 - adds r7, r0, 0 - movs r1, 0x26 - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _0809DA8A - bl _0809EAB8 -_0809DA8A: - movs r2, 0x26 - ldrsh r0, [r7, r2] - cmp r0, 0x4 - bls _0809DA96 - bl _0809E9CC -_0809DA96: - lsls r0, 2 - ldr r1, _0809DAA0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809DAA0: .4byte _0809DAA4 - .align 2, 0 -_0809DAA4: - .4byte _0809E9C6 - .4byte _0809E9C6 - .4byte _0809DAB8 - .4byte _0809E900 - .4byte _0809E9C6 -_0809DAB8: - adds r1, r7, 0 - adds r1, 0x44 - ldrb r0, [r1] - subs r0, 0x3 - adds r6, r1, 0 - cmp r0, 0xED - bls _0809DACA - bl _0809E9D6 -_0809DACA: - lsls r0, 2 - ldr r1, _0809DAD4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809DAD4: .4byte _0809DAD8 - .align 2, 0 -_0809DAD8: - .4byte _0809E382 - .4byte _0809E3C4 - .4byte _0809E524 - .4byte _0809E464 - .4byte _0809E4B4 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809DED6 - .4byte _0809DED6 - .4byte _0809DED6 - .4byte _0809DED6 - .4byte _0809DED6 - .4byte _0809DED6 - .4byte _0809DED6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E308 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E308 - .4byte _0809E308 - .4byte _0809E308 - .4byte _0809E308 - .4byte _0809E308 - .4byte _0809E308 - .4byte _0809E308 - .4byte _0809E308 - .4byte _0809E308 - .4byte _0809E31C - .4byte _0809E75C - .4byte _0809E33C - .4byte _0809E368 - .4byte _0809E658 - .4byte _0809E6B4 - .4byte _0809E6E8 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809DE90 - .4byte _0809DE90 - .4byte _0809DE90 - .4byte _0809DE90 - .4byte _0809E9D6 - .4byte _0809DE90 - .4byte _0809DE90 - .4byte _0809E9D6 - .4byte _0809DE90 - .4byte _0809DF60 - .4byte _0809DF60 - .4byte _0809DF60 - .4byte _0809DF60 - .4byte _0809DF60 - .4byte _0809DF60 - .4byte _0809DF60 - .4byte _0809E0A2 - .4byte _0809DFDC - .4byte _0809DFDC - .4byte _0809DFDC - .4byte _0809DFDC - .4byte _0809DFDC - .4byte _0809DFDC - .4byte _0809DFDC - .4byte _0809E0A2 - .4byte _0809E078 - .4byte _0809E078 - .4byte _0809E078 - .4byte _0809E078 - .4byte _0809E078 - .4byte _0809E078 - .4byte _0809E08C - .4byte _0809E08C - .4byte _0809E08C - .4byte _0809E08C - .4byte _0809E08C - .4byte _0809E08C - .4byte _0809E078 - .4byte _0809E078 - .4byte _0809E078 - .4byte _0809E078 - .4byte _0809E078 - .4byte _0809E078 - .4byte _0809E08C - .4byte _0809E08C - .4byte _0809E08C - .4byte _0809E08C - .4byte _0809E08C - .4byte _0809E08C - .4byte _0809E0E8 - .4byte _0809E0E8 - .4byte _0809DE90 - .4byte _0809DE90 - .4byte _0809DE90 - .4byte _0809DE90 - .4byte _0809DE90 - .4byte _0809DE90 - .4byte _0809E146 - .4byte _0809E146 - .4byte _0809E146 - .4byte _0809E146 - .4byte _0809E146 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809DE90 - .4byte _0809DE90 - .4byte _0809E9D6 - .4byte _0809E2D0 - .4byte _0809E2D0 - .4byte _0809E2D0 - .4byte _0809E2D0 - .4byte _0809E2D0 - .4byte _0809E2D0 - .4byte _0809E2D0 - .4byte _0809E2D0 - .4byte _0809E2D0 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E798 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E864 - .4byte _0809E864 - .4byte _0809E864 - .4byte _0809E864 - .4byte _0809E864 - .4byte _0809E864 - .4byte _0809E864 - .4byte _0809E9D6 - .4byte _0809E8D8 - .4byte _0809DE90 - .4byte _0809DE90 - .4byte _0809DEA6 - .4byte _0809DEBE - .4byte _0809DED6 - .4byte _0809DEE8 - .4byte _0809DF24 - .4byte _0809DF24 - .4byte _0809E2DE - .4byte _0809E9D6 - .4byte _0809E2DE - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 - .4byte _0809E9D6 -_0809DE90: - adds r1, r7, 0 - adds r1, 0x4E - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _0809DEA2 - bl _0809EAB2 -_0809DEA2: - bl _0809E8F4 -_0809DEA6: - ldr r1, [r7] - ldr r0, [r7, 0x4] - ldr r1, [r1, 0x4C] - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - beq _0809DEBA - bl _0809E9D6 -_0809DEBA: - bl _0809E8F4 -_0809DEBE: - ldr r1, [r7] - ldr r0, [r7, 0x4] - ldr r1, [r1, 0x50] - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - beq _0809DED2 - bl _0809E9D6 -_0809DED2: - bl _0809E8F4 -_0809DED6: - bl sub_8099B94 - lsls r0, 24 - cmp r0, 0 - beq _0809DEE4 - bl _0809E9D6 -_0809DEE4: - bl _0809E8F4 -_0809DEE8: - add r1, sp, 0x4 - ldr r0, [r7, 0x40] - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldr r0, [r0] - str r0, [r1] - add r0, sp, 0x4 - ldrh r0, [r0, 0x2] - bl IsEqualtoBGTrack - lsls r0, 24 - cmp r0, 0 - bne _0809DF06 - bl _0809E8F4 -_0809DF06: - adds r2, r7, 0 - adds r2, 0x50 - ldrh r1, [r2] - adds r0, r1, 0x1 - strh r0, [r2] - lsls r1, 16 - ldr r0, _0809DF20 - cmp r1, r0 - bgt _0809DF1C - bl _0809E9D6 -_0809DF1C: - bl _0809E8F4 - .align 2, 0 -_0809DF20: .4byte 0x2a2f0000 -_0809DF24: - add r1, sp, 0x4 - ldr r0, [r7, 0x40] - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [r0] - str r0, [r1] - add r0, sp, 0x4 - ldrh r0, [r0, 0x2] - bl IsFanfareSEPlaying_1 - lsls r0, 24 - cmp r0, 0 - bne _0809DF42 - bl _0809E8F4 -_0809DF42: - adds r2, r7, 0 - adds r2, 0x50 - ldrh r1, [r2] - adds r0, r1, 0x1 - strh r0, [r2] - lsls r1, 16 - ldr r0, _0809DF5C - cmp r1, r0 - bgt _0809DF58 - bl _0809E9D6 -_0809DF58: - bl _0809E8F4 - .align 2, 0 -_0809DF5C: .4byte 0x0e0f0000 -_0809DF60: - ldr r1, [r7] - ldr r0, [r7, 0x4] - add r5, sp, 0xA4 - ldr r2, [r1, 0xC] - adds r1, r5, 0 - bl _call_via_r2 - ldr r1, [r7, 0x60] - ldr r0, [r5] - subs r1, r0 - add r4, sp, 0xAC - str r1, [r4] - ldr r0, [r7, 0x64] - ldr r1, [r5, 0x4] - subs r0, r1 - str r0, [r4, 0x4] - ldr r1, [r7, 0x54] - adds r0, r4, 0 - bl sub_800290C - ldr r0, [r4] - cmp r0, 0 - bne _0809DF98 - ldr r0, [r4, 0x4] - cmp r0, 0 - bne _0809DF98 - bl _0809E8F4 -_0809DF98: - ldr r1, [r7] - ldr r0, [r7, 0x4] - ldr r2, [r1, 0x48] - adds r1, r4, 0 - bl _call_via_r2 - movs r1, 0x9 - ands r1, r0 - cmp r1, 0 - beq _0809DFB0 - bl _0809E8F4 -_0809DFB0: - ldr r2, [r7] - ldr r0, [r7, 0x4] - movs r1, 0x80 - lsls r1, 5 - ldr r2, [r2, 0x30] - bl _call_via_r2 - adds r2, r7, 0 - adds r2, 0x4E - ldrh r0, [r2] - movs r5, 0 - ldrsh r1, [r2, r5] - cmp r1, 0 - bge _0809DFD0 - bl _0809E9D6 -_0809DFD0: - cmp r1, 0 - ble _0809DFD8 - bl _0809EAAC -_0809DFD8: - bl _0809E8F4 -_0809DFDC: - ldr r1, [r7] - ldr r0, [r7, 0x4] - add r5, sp, 0xB4 - ldr r2, [r1, 0xC] - adds r1, r5, 0 - bl _call_via_r2 - ldr r1, [r7, 0x60] - ldr r0, [r5] - subs r1, r0 - add r4, sp, 0xBC - str r1, [r4] - ldr r0, [r7, 0x64] - ldr r1, [r5, 0x4] - subs r0, r1 - str r0, [r4, 0x4] - ldr r1, [r7, 0x54] - adds r0, r4, 0 - bl sub_800290C - ldr r0, [r4] - adds r5, r4, 0 - cmp r0, 0 - bne _0809E016 - ldr r0, [r5, 0x4] - cmp r0, 0 - bne _0809E016 - bl _0809E8F4 -_0809E016: - ldr r1, [r7] - ldr r0, [r7, 0x4] - ldr r2, [r1, 0x48] - adds r1, r5, 0 - bl _call_via_r2 - adds r4, r0, 0 - adds r0, r5, 0 - bl sub_8002C60 - lsls r0, 24 - adds r2, r7, 0 - adds r2, 0x4A - asrs r1, r0, 24 - lsrs r0, 24 - strb r0, [r2] - ldr r2, [r7] - ldr r0, [r7, 0x4] - ldr r2, [r2, 0x2C] - bl _call_via_r2 - movs r0, 0x9 - ands r0, r4 - cmp r0, 0 - beq _0809E04C - bl _0809E8F4 -_0809E04C: - ldr r2, [r7] - ldr r0, [r7, 0x4] - movs r1, 0x80 - lsls r1, 5 - ldr r2, [r2, 0x30] - bl _call_via_r2 - adds r2, r7, 0 - adds r2, 0x4E - ldrh r0, [r2] - movs r6, 0 - ldrsh r1, [r2, r6] - cmp r1, 0 - bge _0809E06C - bl _0809E9D6 -_0809E06C: - cmp r1, 0 - ble _0809E074 - bl _0809EAAC -_0809E074: - bl _0809E8F4 -_0809E078: - adds r6, r7, 0 - adds r6, 0x4E - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - ble _0809E088 - bl _0809EA62 -_0809E088: - bl _0809E8F4 -_0809E08C: - movs r2, 0x4E - adds r2, r7 - mov r8, r2 - movs r3, 0 - ldrsh r0, [r2, r3] - cmp r0, 0 - ble _0809E09E - bl _0809E9DA -_0809E09E: - bl _0809E8F4 -_0809E0A2: - ldr r1, [r7] - ldr r0, [r7, 0x4] - add r4, sp, 0xE4 - add r2, sp, 0xE8 - ldr r3, [r1, 0x10] - adds r1, r4, 0 - bl _call_via_r3 - ldr r0, [r7, 0x6C] - ldr r1, [r4] - subs r0, r1 - adds r2, r4, 0 - cmp r0, 0 - bne _0809E0C2 - bl _0809E8F4 -_0809E0C2: - ldr r4, [r7, 0x54] - cmn r0, r4 - bge _0809E0CC - subs r0, r1, r4 - b _0809E0D4 -_0809E0CC: - cmp r0, r4 - ble _0809E0D2 - adds r0, r4, 0 -_0809E0D2: - adds r0, r1, r0 -_0809E0D4: - str r0, [r2] - ldr r2, [r7] - ldr r0, [r7, 0x4] - add r1, sp, 0xE4 - ldr r1, [r1] - ldr r2, [r2, 0x28] - bl _call_via_r2 - bl _0809E9D6 -_0809E0E8: - ldr r1, [r7] - ldr r0, [r7, 0x4] - add r4, sp, 0x14 - ldr r2, [r1, 0x14] - adds r1, r4, 0 - bl _call_via_r2 - movs r1, 0 - ldrsb r1, [r4, r1] - ldr r2, [r7, 0x54] - add r4, sp, 0xEC - adds r0, r4, 0 - bl sub_8002BB8 - ldr r2, [r4] - ldr r3, [r4, 0x4] - add r1, sp, 0xF4 - str r2, [r1] - str r3, [r1, 0x4] - ldr r2, [r7] - ldr r0, [r7, 0x4] - ldr r2, [r2, 0x48] - bl _call_via_r2 - movs r1, 0x9 - ands r1, r0 - cmp r1, 0 - beq _0809E124 - bl _0809E8F4 -_0809E124: - ldr r2, [r7] - ldr r0, [r7, 0x4] - movs r1, 0x80 - lsls r1, 5 - ldr r2, [r2, 0x30] - bl _call_via_r2 - adds r1, r7, 0 - adds r1, 0x4E - ldrh r2, [r1] - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0 - ble _0809E144 - bl _0809EAB2 -_0809E144: - b _0809E8F4 -_0809E146: - adds r1, r7, 0 - adds r1, 0x4E - ldrh r2, [r1] - movs r5, 0 - ldrsh r0, [r1, r5] - mov r10, r1 - cmp r0, 0 - ble _0809E15A - bl _0809EAB2 -_0809E15A: - add r1, sp, 0x4 - ldr r0, [r7, 0x40] - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldr r0, [r0] - str r0, [r1] - movs r4, 0x1 - negs r4, r4 - mov r8, r4 - movs r5, 0 - ldr r1, [r7] - ldr r0, [r7, 0x4] - mov r4, sp - adds r4, 0x15 - ldr r2, [r1, 0x14] - adds r1, r4, 0 - bl _call_via_r2 - add r0, sp, 0x4 - ldrb r0, [r0] - subs r0, 0x91 - mov r9, r4 - cmp r0, 0x4 - bhi _0809E234 - lsls r0, 2 - ldr r1, _0809E194 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809E194: .4byte _0809E198 - .align 2, 0 -_0809E198: - .4byte _0809E1AC - .4byte _0809E1AC - .4byte _0809E1BA - .4byte _0809E1E0 - .4byte _0809E20C -_0809E1AC: - adds r0, r7, 0 - adds r0, 0x71 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - mov r8, r0 - b _0809E234 -_0809E1BA: - ldr r0, [sp, 0x8] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - asrs r4, r0, 16 - cmp r4, 0 - blt _0809E234 - movs r5, 0x1 - add r1, sp, 0xFC - adds r0, r4, 0 - bl sub_80A8FD8 - add r1, sp, 0x104 - adds r0, r4, 0 - bl sub_80A8F9C - b _0809E234 -_0809E1E0: - ldr r0, [sp, 0x8] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - blt _0809E234 - movs r5, 0x1 - add r1, sp, 0xFC - bl sub_80A8FD8 - ldr r0, _0809E208 - ldr r1, [r0, 0x4] - ldr r0, [r0] - add r2, sp, 0x104 - str r0, [r2] - str r1, [r2, 0x4] - b _0809E234 - .align 2, 0 -_0809E208: .4byte gUnknown_81164DC -_0809E20C: - movs r5, 0x1 - ldr r1, [r7] - ldr r0, [r7, 0x4] - add r4, sp, 0xFC - ldr r2, [r1, 0xC] - adds r1, r4, 0 - bl _call_via_r2 - ldr r2, [r7] - ldr r0, [r7, 0x4] - add r1, sp, 0x104 - ldr r2, [r2, 0x8] - bl _call_via_r2 - ldr r0, [sp, 0x8] - lsls r0, 16 - asrs r0, 16 - adds r1, r4, 0 - bl sub_80AD8B4 -_0809E234: - cmp r5, 0 - beq _0809E282 - ldr r1, [r7] - ldr r0, [r7, 0x4] - add r5, sp, 0x10C - ldr r2, [r1, 0xC] - adds r1, r5, 0 - bl _call_via_r2 - ldr r1, [r7] - ldr r0, [r7, 0x4] - add r4, sp, 0x114 - ldr r2, [r1, 0x8] - adds r1, r4, 0 - bl _call_via_r2 - add r6, sp, 0xFC - add r3, sp, 0x104 - adds r0, r5, 0 - adds r1, r4, 0 - adds r2, r6, 0 - bl sub_8002DF0 - lsls r0, 24 - asrs r0, 24 - mov r8, r0 - movs r0, 0x1 - negs r0, r0 - cmp r8, r0 - bne _0809E28C - ldr r3, _0809E2CC - adds r0, r5, 0 - adds r1, r3, 0 - adds r2, r6, 0 - bl sub_8002D54 - lsls r0, 24 - asrs r0, 24 - mov r8, r0 -_0809E282: - movs r0, 0x1 - negs r0, r0 - cmp r8, r0 - bne _0809E28C - b _0809E8F4 -_0809E28C: - mov r5, r9 - movs r0, 0 - ldrsb r0, [r5, r0] - cmp r8, r0 - bne _0809E298 - b _0809E8F4 -_0809E298: - mov r6, r9 - movs r0, 0 - ldrsb r0, [r6, r0] - add r1, sp, 0x4 - ldrh r2, [r1, 0x2] - lsls r2, 24 - lsrs r2, 24 - mov r1, r8 - bl sub_8002A70 - adds r1, r7, 0 - adds r1, 0x4A - strb r0, [r1] - ldr r2, [r7] - ldr r0, [r7, 0x4] - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - ldr r2, [r2, 0x2C] - bl _call_via_r2 - add r0, sp, 0x4 - ldrb r0, [r0, 0x1] - mov r1, r10 - strh r0, [r1] - b _0809E9CC - .align 2, 0 -_0809E2CC: .4byte gUnknown_81164DC -_0809E2D0: - bl sub_809D234 - lsls r0, 24 - cmp r0, 0 - beq _0809E2DC - b _0809E9D6 -_0809E2DC: - b _0809E8F4 -_0809E2DE: - adds r0, r7, 0 - adds r0, 0x46 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809E2F0 - b _0809E9D6 -_0809E2F0: - ldr r1, _0809E304 - adds r0, r7, 0 - adds r0, 0x4C - movs r3, 0 - ldrsh r0, [r0, r3] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _0809E8EC - .align 2, 0 -_0809E304: .4byte gUnknown_2039B48 -_0809E308: - adds r0, r7, 0 - adds r0, 0x46 - movs r4, 0 - ldrsh r1, [r0, r4] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809E31A - b _0809E9D6 -_0809E31A: - b _0809E8CA -_0809E31C: - adds r0, r7, 0 - adds r0, 0x46 - movs r5, 0 - ldrsh r1, [r0, r5] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809E32E - b _0809E9D6 -_0809E32E: - bl sub_8099B94 - lsls r0, 24 - cmp r0, 0 - beq _0809E33A - b _0809E9D6 -_0809E33A: - b _0809E8CA -_0809E33C: - add r1, sp, 0x4 - ldr r0, [r7, 0x40] - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldr r0, [r0] - str r0, [r1] - add r0, sp, 0x4 - ldrb r1, [r0, 0x1] - movs r4, 0x2 - ldrsh r2, [r0, r4] - ldr r3, [sp, 0x8] - adds r0, r7, 0 - bl sub_80A14E8 - adds r1, r0, 0 - cmp r1, 0 - bge _0809E360 - b _0809E9D6 -_0809E360: - movs r0, 0x3 - strh r0, [r7, 0x26] - adds r0, r7, 0 - b _0809E60C -_0809E368: - add r0, sp, 0x11C - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - bne _0809E376 - b _0809E9D6 -_0809E376: - add r0, sp, 0x11C - ldr r1, [r0] - adds r0, r7, 0 - bl sub_80A2460 - b _0809E8C8 -_0809E382: - add r0, sp, 0x120 - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - bne _0809E390 - b _0809E9D6 -_0809E390: - add r4, sp, 0x120 - ldr r0, [r4] - cmp r0, 0 - blt _0809E3BA - add r1, sp, 0x4 - ldr r0, [r7, 0x40] - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldr r0, [r0] - str r0, [r1] - ldrb r0, [r4] - bl sub_8002694 - lsls r0, 16 - asrs r0, 16 - add r1, sp, 0x4 - movs r3, 0x2 - ldrsh r2, [r1, r3] - movs r1, 0 - bl GroundMainGroundRequest -_0809E3BA: - ldr r1, [r4] - adds r0, r7, 0 - bl sub_80A2460 - b _0809E8C8 -_0809E3C4: - adds r4, r7, 0 - adds r4, 0x4C - movs r5, 0 - ldrsh r0, [r4, r5] - cmp r0, 0 - bne _0809E40C - add r0, sp, 0x124 - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - bne _0809E3DE - b _0809E9D6 -_0809E3DE: - add r0, sp, 0x124 - ldr r0, [r0] - cmp r0, 0 - blt _0809E400 - lsls r0, 16 - asrs r0, 16 - bl sub_80A26B8 - adds r2, r0, 0 - lsls r2, 16 - asrs r2, 16 - movs r0, 0 - movs r1, 0x12 - bl sub_80018D8 - movs r0, 0x1 - b _0809E402 -_0809E400: - ldr r0, _0809E408 -_0809E402: - strh r0, [r4] - b _0809E8CE - .align 2, 0 -_0809E408: .4byte 0x0000ffff -_0809E40C: - cmp r0, 0x1 - bne _0809E464 - add r1, sp, 0x4 - ldr r0, [r7, 0x40] - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [r0] - str r0, [r1] - movs r0, 0 - movs r1, 0x12 - bl sub_8001658 - adds r2, r0, 0 - lsls r2, 16 - asrs r4, r2, 16 - lsrs r2, 16 - movs r0, 0 - movs r1, 0x30 - bl sub_8001784 - cmp r4, 0x13 - bne _0809E43C - cmp r0, 0 - beq _0809E45A -_0809E43C: - add r0, sp, 0x4 - movs r5, 0x2 - ldrsh r0, [r0, r5] - bl sub_8098DCC - adds r0, r7, 0 - movs r1, 0 - bl sub_80A2460 - str r0, [r7, 0x28] - movs r0, 0 - movs r1, 0 - bl sub_80A87AC - b _0809E8F4 -_0809E45A: - movs r0, 0 - movs r1, 0x13 - movs r2, 0x13 - bl sub_80018D8 -_0809E464: - adds r0, r7, 0 - adds r0, 0x4C - movs r2, 0 - ldrsh r1, [r0, r2] - adds r5, r0, 0 - cmp r1, 0 - bne _0809E4B4 - add r0, sp, 0x128 - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - bne _0809E480 - b _0809E9D6 -_0809E480: - add r0, sp, 0x128 - ldr r1, [r0] - cmp r1, 0 - blt _0809E4AA - ldrb r0, [r6] - cmp r0, 0x4 - bne _0809E49A - lsls r0, r1, 16 - asrs r0, 16 - bl sub_80A26B8 - lsls r0, 16 - b _0809E49C -_0809E49A: - lsls r0, r1, 16 -_0809E49C: - asrs r2, r0, 16 - movs r0, 0 - movs r1, 0x13 - bl sub_80018D8 - movs r0, 0x1 - b _0809E4AC -_0809E4AA: - ldr r0, _0809E4B0 -_0809E4AC: - strh r0, [r5] - b _0809E8CE - .align 2, 0 -_0809E4B0: .4byte 0x0000ffff -_0809E4B4: - adds r0, r7, 0 - adds r0, 0x4C - movs r3, 0 - ldrsh r1, [r0, r3] - adds r5, r0, 0 - cmp r1, 0x1 - beq _0809E4C4 - b _0809E5B8 -_0809E4C4: - movs r0, 0 - movs r1, 0x13 - bl sub_8001658 - lsls r0, 16 - asrs r6, r0, 16 - add r4, sp, 0x18 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_80990EC - lsls r0, 24 - cmp r0, 0 - beq _0809E580 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8099220 - movs r0, 0x6 - bl sub_80023E4 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - ldrb r0, [r4] - ldr r4, _0809E51C - ldr r2, [r4] - movs r1, 0 - str r1, [sp] - bl sub_809034C - adds r1, r0, 0 - ldr r0, _0809E520 - str r1, [r0] - cmp r1, 0x1 - beq _0809E586 - cmp r1, 0x1 - bcc _0809E580 - cmp r1, 0x2 - bne _0809E5AE - strh r1, [r5] - ldr r2, [r4] - movs r0, 0x9 - b _0809E58E - .align 2, 0 -_0809E51C: .4byte gUnknown_203B4B0 -_0809E520: .4byte gUnknown_2039DA4 -_0809E524: - adds r0, r7, 0 - adds r0, 0x4C - movs r4, 0 - ldrsh r6, [r0, r4] - adds r5, r0, 0 - cmp r6, 0x1 - bne _0809E5B8 - movs r0, 0 - movs r1, 0x14 - bl sub_8001658 - lsls r0, 24 - lsrs r0, 24 - bl GetMailatIndex - adds r4, r0, 0 - movs r0, 0x6 - bl sub_80023E4 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - ldrb r0, [r4, 0x4] - ldr r4, _0809E578 - ldr r2, [r4] - str r6, [sp] - movs r1, 0 - bl sub_809034C - adds r1, r0, 0 - ldr r0, _0809E57C - str r1, [r0] - cmp r1, 0x1 - beq _0809E586 - cmp r1, 0x1 - bcc _0809E580 - cmp r1, 0x2 - bne _0809E5AE - strh r1, [r5] - ldr r2, [r4] - movs r0, 0x9 - b _0809E58E - .align 2, 0 -_0809E578: .4byte gUnknown_203B4B0 -_0809E57C: .4byte gUnknown_2039DA4 -_0809E580: - movs r0, 0x3 - strh r0, [r5] - b _0809E9CC -_0809E586: - movs r0, 0x4 - strh r0, [r5] - ldr r2, [r4] - movs r0, 0xA -_0809E58E: - movs r1, 0x1 - bl sub_809B1C0 - adds r0, r7, 0 - movs r1, 0x1 - bl sub_809D8EC - lsls r0, 24 - cmp r0, 0 - bne _0809E5A4 - b _0809E9CC -_0809E5A4: - movs r0, 0 - movs r1, 0xB - bl sub_80A87AC - b _0809E9CC -_0809E5AE: - ldr r0, _0809E5B4 - strh r0, [r5] - b _0809E9CC - .align 2, 0 -_0809E5B4: .4byte 0x0000ffff -_0809E5B8: - movs r6, 0 - ldrsh r2, [r5, r6] - cmp r2, 0x2 - bne _0809E5DA - add r0, sp, 0x12C - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - bne _0809E5CE - b _0809E9D6 -_0809E5CE: - add r0, sp, 0x12C - ldr r0, [r0] - cmp r0, 0 - beq _0809E626 - movs r0, 0x3 - b _0809E628 -_0809E5DA: - cmp r2, 0x3 - bne _0809E614 - add r1, sp, 0x4 - ldr r0, [r7, 0x40] - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldr r0, [r0] - str r0, [r1] - strh r2, [r7, 0x26] - add r0, sp, 0x4 - movs r6, 0x2 - ldrsh r0, [r0, r6] - bl sub_80999FC - movs r0, 0x70 - movs r1, 0 - bl GroundMap_ExecuteEvent - movs r1, 0x8 - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _0809E608 - b _0809E9CC -_0809E608: - adds r0, r7, 0 - movs r1, 0x1 -_0809E60C: - bl sub_80A2460 - str r0, [r7, 0x28] - b _0809E9CC -_0809E614: - cmp r2, 0x4 - bne _0809E63C - add r0, sp, 0x130 - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - bne _0809E626 - b _0809E9D6 -_0809E626: - ldr r0, _0809E638 -_0809E628: - strh r0, [r5] - movs r0, 0 - movs r1, 0 - bl sub_80A87AC - bl sub_809A76C - b _0809E9CC - .align 2, 0 -_0809E638: .4byte 0x0000ffff -_0809E63C: - movs r0, 0 - movs r1, 0 - bl sub_8099220 - movs r4, 0x1 - negs r4, r4 - movs r0, 0 - movs r1, 0x13 - adds r2, r4, 0 - bl sub_80018D8 - adds r0, r7, 0 - adds r1, r4, 0 - b _0809E8EE -_0809E658: - add r1, sp, 0x4 - ldr r0, [r7, 0x40] - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [r0] - str r0, [r1] - add r0, sp, 0x134 - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - bne _0809E672 - b _0809E9D6 -_0809E672: - add r0, sp, 0x134 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809E6A4 - ldr r0, [sp, 0x8] - lsls r0, 16 - asrs r1, r0, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809E6A4 - adds r0, r1, 0 - bl sub_80A8D54 - movs r2, 0 - adds r3, r0, 0 - adds r3, 0x4C - ldr r4, _0809E6B0 -_0809E696: - adds r0, r3, r2 - adds r1, r2, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x9 - ble _0809E696 -_0809E6A4: - add r0, sp, 0x134 - ldr r1, [r0] - adds r0, r7, 0 - bl sub_80A2460 - b _0809E8C8 - .align 2, 0 -_0809E6B0: .4byte gUnknown_2039D98 -_0809E6B4: - add r0, sp, 0x138 - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - bne _0809E6C2 - b _0809E9D6 -_0809E6C2: - add r4, sp, 0x138 - ldr r0, [r4] - cmp r0, 0x1 - bne _0809E6D0 - ldr r0, _0809E6DC - bl SetRescueTeamName -_0809E6D0: - ldr r1, [r4] - adds r0, r7, 0 - bl sub_80A2460 - b _0809E8C8 - .align 2, 0 -_0809E6DC: .4byte gUnknown_2039D98 -_0809E6E0: - movs r1, 0x2 - add r0, sp, 0x13C - str r1, [r0] - b _0809E74A -_0809E6E8: - add r1, sp, 0x4 - ldr r0, [r7, 0x40] - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldr r0, [r0] - str r0, [r1] - ldr r5, [sp, 0x10] - add r0, sp, 0x13C - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - bne _0809E704 - b _0809E9D6 -_0809E704: - add r0, sp, 0x13C - ldr r0, [r0] - cmp r0, 0x1 - bne _0809E74A - add r4, sp, 0x18 - ldr r0, _0809E758 - adds r3, r4, 0 - movs r2, 0 - mov r1, sp - adds r1, 0x27 -_0809E718: - strb r2, [r1] - subs r1, 0x1 - cmp r1, r3 - bge _0809E718 - adds r1, r4, 0 - bl CopyStringtoBuffer - movs r2, 0 - ldrb r0, [r4] - ldrb r3, [r5] - cmp r0, r3 - bne _0809E6E0 - cmp r0, 0 - beq _0809E74A -_0809E734: - adds r2, 0x1 - cmp r2, 0xF - bgt _0809E74A - adds r0, r4, r2 - adds r1, r5, r2 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bne _0809E6E0 - cmp r0, 0 - bne _0809E734 -_0809E74A: - add r0, sp, 0x13C - ldr r1, [r0] - adds r0, r7, 0 - bl sub_80A2460 - b _0809E8C8 - .align 2, 0 -_0809E758: .4byte gUnknown_2039D98 -_0809E75C: - adds r2, r7, 0 - adds r2, 0x50 - ldrh r3, [r2] - movs r4, 0 - ldrsh r0, [r2, r4] - cmp r0, 0 - bne _0809E76C - b _0809E872 -_0809E76C: - add r4, sp, 0xA0 - adds r0, r4, 0 - bl sub_809AFFC - lsls r0, 24 - cmp r0, 0 - bne _0809E77C - b _0809E9D6 -_0809E77C: - ldrb r0, [r4] - cmp r0, 0 - bne _0809E784 - b _0809E8CA -_0809E784: - add r1, sp, 0x4 - ldr r0, [r7, 0x40] - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldr r0, [r0] - str r0, [r1] - add r0, sp, 0x4 - movs r4, 0x2 - ldrsh r1, [r0, r4] - b _0809E8C2 -_0809E798: - add r1, sp, 0x4 - ldr r0, [r7, 0x40] - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldr r0, [r0] - str r0, [r1] - adds r2, r7, 0 - adds r2, 0x50 - movs r3, 0 - ldrsh r0, [r2, r3] - adds r4, r2, 0 - cmp r0, 0 - bne _0809E84C - movs r3, 0 - adds r0, r7, 0 - adds r0, 0x4C - movs r5, 0 - ldrsh r2, [r0, r5] - adds r5, r0, 0 - cmp r2, 0 - bge _0809E7CC - ldr r0, [r7, 0x28] - ldrb r0, [r0] - cmp r0, 0xD1 - beq _0809E812 - b _0809E8F4 -_0809E7CC: - ldr r1, [r7, 0x28] - ldrb r0, [r1] - cmp r0, 0xD0 - bne _0809E7F8 - movs r6, 0x2 - ldrsh r0, [r1, r6] - cmp r0, r2 - beq _0809E812 -_0809E7DC: - ldr r0, [r7, 0x28] - adds r1, r0, 0 - adds r1, 0x10 - str r1, [r7, 0x28] - ldrb r0, [r0, 0x10] - cmp r0, 0xD0 - bne _0809E7F8 - movs r0, 0x2 - ldrsh r1, [r1, r0] - movs r2, 0 - ldrsh r0, [r5, r2] - cmp r1, r0 - bne _0809E7DC - movs r3, 0x1 -_0809E7F8: - cmp r3, 0 - bne _0809E812 - ldr r1, [r7, 0x28] - ldrb r0, [r1] - cmp r0, 0xD1 - bne _0809E8F4 -_0809E804: - adds r0, r1, 0 - adds r1, 0x10 - str r1, [r7, 0x28] - ldrb r0, [r0, 0x10] - cmp r0, 0xD1 - beq _0809E804 - b _0809E8F4 -_0809E812: - add r0, sp, 0x4 - ldrb r0, [r0, 0x1] - ldr r1, [sp, 0x8] - lsls r1, 16 - asrs r1, 16 - ldr r2, [r7, 0x28] - ldr r2, [r2, 0xC] - bl sub_809AE90 - lsls r0, 24 - cmp r0, 0 - beq _0809E844 - movs r0, 0 - movs r1, 0xA - bl sub_80A87AC - adds r0, r7, 0 - movs r1, 0 - bl sub_809D8EC - lsls r0, 24 - cmp r0, 0 - beq _0809E844 - movs r0, 0x1 - strh r0, [r4] -_0809E844: - ldr r0, [r7, 0x28] - adds r0, 0x10 - str r0, [r7, 0x28] - b _0809E9CC -_0809E84C: - adds r0, r7, 0 - adds r0, 0x46 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809E85E - b _0809E9D6 -_0809E85E: - movs r0, 0 - strh r0, [r2] - b _0809E8D0 -_0809E864: - adds r2, r7, 0 - adds r2, 0x50 - ldrh r3, [r2] - movs r4, 0 - ldrsh r0, [r2, r4] - cmp r0, 0 - bne _0809E88A -_0809E872: - adds r0, r7, 0 - adds r0, 0x46 - movs r5, 0 - ldrsh r1, [r0, r5] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809E884 - b _0809E9D6 -_0809E884: - adds r0, r3, 0x1 - strh r0, [r2] - b _0809E9CC -_0809E88A: - add r0, sp, 0x140 - bl sub_809B18C - lsls r0, 24 - cmp r0, 0 - bne _0809E898 - b _0809E9D6 -_0809E898: - add r0, sp, 0x140 - ldr r3, [r0] - cmp r3, 0 - ble _0809E8CA - adds r0, r7, 0 - adds r0, 0x4C - movs r6, 0 - ldrsh r2, [r0, r6] - ldr r1, [r7, 0x40] - lsls r0, r3, 4 - lsls r2, 4 - adds r2, r1 - add r1, sp, 0x4 - adds r0, r2 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [r0] - str r0, [r1] - add r0, sp, 0x4 - movs r5, 0x2 - ldrsh r1, [r0, r5] -_0809E8C2: - adds r0, r7, 0 - bl sub_80A242C -_0809E8C8: - str r0, [r7, 0x28] -_0809E8CA: - movs r0, 0x3 - strh r0, [r7, 0x26] -_0809E8CE: - movs r0, 0 -_0809E8D0: - movs r1, 0 - bl sub_80A87AC - b _0809E9CC -_0809E8D8: - adds r0, r7, 0 - adds r0, 0x46 - movs r6, 0 - ldrsh r1, [r0, r6] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0809E9D6 - ldr r0, _0809E8FC - ldr r1, [r0, 0x4] -_0809E8EC: - adds r0, r7, 0 -_0809E8EE: - bl sub_80A2460 - str r0, [r7, 0x28] -_0809E8F4: - movs r0, 0x3 - strh r0, [r7, 0x26] - b _0809E9CC - .align 2, 0 -_0809E8FC: .4byte gUnknown_2039B48 -_0809E900: - adds r0, r7, 0 - bl ExecuteScriptCommand - strh r0, [r7, 0x26] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bhi _0809E9BC - lsls r0, 2 - ldr r1, _0809E91C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809E91C: .4byte _0809E920 - .align 2, 0 -_0809E920: - .4byte _0809E934 - .4byte _0809E9B8 - .4byte _0809E9BC - .4byte _0809E9D6 - .4byte _0809E9B4 -_0809E934: - adds r0, r7, 0 - adds r0, 0x86 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _0809E9AA - adds r4, r7, 0 - adds r4, 0x84 - adds r0, r7, 0 - adds r0, 0x24 - adds r1, r4, 0 - movs r2, 0x60 - bl memcpy - ldr r2, [r7] - ldr r0, [r2, 0x2C] - cmp r0, 0 - beq _0809E98E - adds r5, r7, 0 - adds r5, 0x4A - movs r1, 0 - ldrsb r1, [r5, r1] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809E98E - ldr r0, [r7, 0x4] - add r1, sp, 0x144 - ldr r2, [r2, 0x18] - bl _call_via_r2 - add r0, sp, 0x144 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _0809E98E - ldr r2, [r7] - ldr r0, [r7, 0x4] - movs r1, 0 - ldrsb r1, [r5, r1] - ldr r2, [r2, 0x2C] - bl _call_via_r2 -_0809E98E: - ldr r0, [r7] - ldr r2, [r0, 0x30] - cmp r2, 0 - beq _0809E9A2 - ldr r0, [r7, 0x4] - adds r1, r7, 0 - adds r1, 0x48 - ldrh r1, [r1] - bl _call_via_r2 -_0809E9A2: - adds r0, r4, 0 - bl InitScriptData - b _0809E9D6 -_0809E9AA: - adds r0, r7, 0 - adds r0, 0x24 - bl InitScriptData - b _0809E9D6 -_0809E9B4: - movs r0, 0x4 - b _0809EABA -_0809E9B8: - movs r0, 0x1 - b _0809EABA -_0809E9BC: - adds r1, r7, 0 - adds r1, 0x50 - movs r0, 0 - strh r0, [r1] - b _0809E9CC -_0809E9C6: - movs r2, 0x26 - ldrsh r0, [r7, r2] - b _0809EABA -_0809E9CC: - movs r3, 0x1 - cmp r3, 0 - beq _0809E9D6 - bl _0809DA8A -_0809E9D6: - movs r0, 0x3 - b _0809EABA -_0809E9DA: - ldr r1, [r7] - ldr r0, [r7, 0x4] - add r4, sp, 0xCC - ldr r2, [r1, 0xC] - adds r1, r4, 0 - bl _call_via_r2 - add r5, sp, 0xD4 - adds r1, r7, 0 - adds r1, 0x58 - adds r2, r7, 0 - adds r2, 0x60 - mov r6, r8 - movs r0, 0 - ldrsh r6, [r6, r0] - mov r9, r6 - adds r6, r7, 0 - adds r6, 0x50 - movs r3, 0 - ldrsh r0, [r6, r3] - str r0, [sp] - adds r0, r5, 0 - mov r3, r9 - bl sub_8002934 - ldr r1, [r5] - ldr r0, [r4] - subs r1, r0 - add r0, sp, 0xDC - str r1, [r0] - ldr r1, [r5, 0x4] - ldr r2, [r4, 0x4] - subs r1, r2 - str r1, [r0, 0x4] - bl sub_8002C60 - lsls r0, 24 - adds r2, r7, 0 - adds r2, 0x4A - asrs r1, r0, 24 - lsrs r0, 24 - strb r0, [r2] - ldr r2, [r7] - ldr r0, [r7, 0x4] - ldr r2, [r2, 0x2C] - bl _call_via_r2 - ldr r1, [r7] - ldr r0, [r7, 0x4] - ldr r2, [r1, 0x24] - adds r1, r5, 0 - bl _call_via_r2 - ldr r2, [r7] - ldr r0, [r7, 0x4] - movs r1, 0x80 - lsls r1, 5 - ldr r2, [r2, 0x30] - bl _call_via_r2 - mov r4, r8 - ldrh r0, [r4] - subs r0, 0x1 - strh r0, [r4] - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - b _0809E9D6 -_0809EA62: - add r5, sp, 0xC4 - adds r1, r7, 0 - adds r1, 0x58 - adds r2, r7, 0 - adds r2, 0x60 - movs r3, 0 - ldrsh r0, [r6, r3] - mov r8, r0 - adds r4, r7, 0 - adds r4, 0x50 - movs r3, 0 - ldrsh r0, [r4, r3] - str r0, [sp] - adds r0, r5, 0 - mov r3, r8 - bl sub_8002934 - ldr r1, [r7] - ldr r0, [r7, 0x4] - ldr r2, [r1, 0x24] - adds r1, r5, 0 - bl _call_via_r2 - ldr r2, [r7] - ldr r0, [r7, 0x4] - movs r1, 0x80 - lsls r1, 5 - ldr r2, [r2, 0x30] - bl _call_via_r2 - ldrh r0, [r6] - subs r0, 0x1 - strh r0, [r6] - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _0809E9D6 -_0809EAAC: - subs r0, 0x1 - strh r0, [r2] - b _0809E9D6 -_0809EAB2: - subs r0, r2, 0x1 - strh r0, [r1] - b _0809E9D6 -_0809EAB8: - movs r0, 0 -_0809EABA: - add sp, 0x148 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end HandleAction - thumb_func_start ExecuteScriptCommand ExecuteScriptCommand: push {r4-r7,lr} diff --git a/asm/handleaction.s b/asm/handleaction.s new file mode 100644 index 000000000..515d0e7bf --- /dev/null +++ b/asm/handleaction.s @@ -0,0 +1,1856 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start HandleAction +HandleAction: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x148 + adds r7, r0, 0 + movs r1, 0x26 + ldrsh r0, [r7, r1] + cmp r0, 0 + bne _0809DA8A + bl _0809EAB8 +_0809DA8A: + movs r2, 0x26 + ldrsh r0, [r7, r2] + cmp r0, 0x4 + bls _0809DA96 + bl _0809E9CC +_0809DA96: + lsls r0, 2 + ldr r1, _0809DAA0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809DAA0: .4byte _0809DAA4 + .align 2, 0 +_0809DAA4: + .4byte _0809E9C6 + .4byte _0809E9C6 + .4byte _0809DAB8 + .4byte _0809E900 + .4byte _0809E9C6 +_0809DAB8: + adds r1, r7, 0 + adds r1, 0x44 + ldrb r0, [r1] + subs r0, 0x3 + adds r6, r1, 0 + cmp r0, 0xED + bls _0809DACA + bl _0809E9D6 +_0809DACA: + lsls r0, 2 + ldr r1, _0809DAD4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809DAD4: .4byte _0809DAD8 + .align 2, 0 +_0809DAD8: + .4byte _0809E382 + .4byte _0809E3C4 + .4byte _0809E524 + .4byte _0809E464 + .4byte _0809E4B4 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809DED6 + .4byte _0809DED6 + .4byte _0809DED6 + .4byte _0809DED6 + .4byte _0809DED6 + .4byte _0809DED6 + .4byte _0809DED6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E308 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E308 + .4byte _0809E308 + .4byte _0809E308 + .4byte _0809E308 + .4byte _0809E308 + .4byte _0809E308 + .4byte _0809E308 + .4byte _0809E308 + .4byte _0809E308 + .4byte _0809E31C + .4byte _0809E75C + .4byte _0809E33C + .4byte _0809E368 + .4byte _0809E658 + .4byte _0809E6B4 + .4byte _0809E6E8 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809DE90 + .4byte _0809DE90 + .4byte _0809DE90 + .4byte _0809DE90 + .4byte _0809E9D6 + .4byte _0809DE90 + .4byte _0809DE90 + .4byte _0809E9D6 + .4byte _0809DE90 + .4byte _0809DF60 + .4byte _0809DF60 + .4byte _0809DF60 + .4byte _0809DF60 + .4byte _0809DF60 + .4byte _0809DF60 + .4byte _0809DF60 + .4byte _0809E0A2 + .4byte _0809DFDC + .4byte _0809DFDC + .4byte _0809DFDC + .4byte _0809DFDC + .4byte _0809DFDC + .4byte _0809DFDC + .4byte _0809DFDC + .4byte _0809E0A2 + .4byte _0809E078 + .4byte _0809E078 + .4byte _0809E078 + .4byte _0809E078 + .4byte _0809E078 + .4byte _0809E078 + .4byte _0809E08C + .4byte _0809E08C + .4byte _0809E08C + .4byte _0809E08C + .4byte _0809E08C + .4byte _0809E08C + .4byte _0809E078 + .4byte _0809E078 + .4byte _0809E078 + .4byte _0809E078 + .4byte _0809E078 + .4byte _0809E078 + .4byte _0809E08C + .4byte _0809E08C + .4byte _0809E08C + .4byte _0809E08C + .4byte _0809E08C + .4byte _0809E08C + .4byte _0809E0E8 + .4byte _0809E0E8 + .4byte _0809DE90 + .4byte _0809DE90 + .4byte _0809DE90 + .4byte _0809DE90 + .4byte _0809DE90 + .4byte _0809DE90 + .4byte _0809E146 + .4byte _0809E146 + .4byte _0809E146 + .4byte _0809E146 + .4byte _0809E146 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809DE90 + .4byte _0809DE90 + .4byte _0809E9D6 + .4byte _0809E2D0 + .4byte _0809E2D0 + .4byte _0809E2D0 + .4byte _0809E2D0 + .4byte _0809E2D0 + .4byte _0809E2D0 + .4byte _0809E2D0 + .4byte _0809E2D0 + .4byte _0809E2D0 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E798 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E864 + .4byte _0809E864 + .4byte _0809E864 + .4byte _0809E864 + .4byte _0809E864 + .4byte _0809E864 + .4byte _0809E864 + .4byte _0809E9D6 + .4byte _0809E8D8 + .4byte _0809DE90 + .4byte _0809DE90 + .4byte _0809DEA6 + .4byte _0809DEBE + .4byte _0809DED6 + .4byte _0809DEE8 + .4byte _0809DF24 + .4byte _0809DF24 + .4byte _0809E2DE + .4byte _0809E9D6 + .4byte _0809E2DE + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 + .4byte _0809E9D6 +_0809DE90: + adds r1, r7, 0 + adds r1, 0x4E + ldrh r2, [r1] + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + ble _0809DEA2 + bl _0809EAB2 +_0809DEA2: + bl _0809E8F4 +_0809DEA6: + ldr r1, [r7] + ldr r0, [r7, 0x4] + ldr r1, [r1, 0x4C] + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + beq _0809DEBA + bl _0809E9D6 +_0809DEBA: + bl _0809E8F4 +_0809DEBE: + ldr r1, [r7] + ldr r0, [r7, 0x4] + ldr r1, [r1, 0x50] + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + beq _0809DED2 + bl _0809E9D6 +_0809DED2: + bl _0809E8F4 +_0809DED6: + bl sub_8099B94 + lsls r0, 24 + cmp r0, 0 + beq _0809DEE4 + bl _0809E9D6 +_0809DEE4: + bl _0809E8F4 +_0809DEE8: + add r1, sp, 0x4 + ldr r0, [r7, 0x40] + ldm r0!, {r4-r6} + stm r1!, {r4-r6} + ldr r0, [r0] + str r0, [r1] + add r0, sp, 0x4 + ldrh r0, [r0, 0x2] + bl IsEqualtoBGTrack + lsls r0, 24 + cmp r0, 0 + bne _0809DF06 + bl _0809E8F4 +_0809DF06: + adds r2, r7, 0 + adds r2, 0x50 + ldrh r1, [r2] + adds r0, r1, 0x1 + strh r0, [r2] + lsls r1, 16 + ldr r0, _0809DF20 + cmp r1, r0 + bgt _0809DF1C + bl _0809E9D6 +_0809DF1C: + bl _0809E8F4 + .align 2, 0 +_0809DF20: .4byte 0x2a2f0000 +_0809DF24: + add r1, sp, 0x4 + ldr r0, [r7, 0x40] + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r0] + str r0, [r1] + add r0, sp, 0x4 + ldrh r0, [r0, 0x2] + bl IsFanfareSEPlaying_1 + lsls r0, 24 + cmp r0, 0 + bne _0809DF42 + bl _0809E8F4 +_0809DF42: + adds r2, r7, 0 + adds r2, 0x50 + ldrh r1, [r2] + adds r0, r1, 0x1 + strh r0, [r2] + lsls r1, 16 + ldr r0, _0809DF5C + cmp r1, r0 + bgt _0809DF58 + bl _0809E9D6 +_0809DF58: + bl _0809E8F4 + .align 2, 0 +_0809DF5C: .4byte 0x0e0f0000 +_0809DF60: + ldr r1, [r7] + ldr r0, [r7, 0x4] + add r5, sp, 0xA4 + ldr r2, [r1, 0xC] + adds r1, r5, 0 + bl _call_via_r2 + ldr r1, [r7, 0x60] + ldr r0, [r5] + subs r1, r0 + add r4, sp, 0xAC + str r1, [r4] + ldr r0, [r7, 0x64] + ldr r1, [r5, 0x4] + subs r0, r1 + str r0, [r4, 0x4] + ldr r1, [r7, 0x54] + adds r0, r4, 0 + bl sub_800290C + ldr r0, [r4] + cmp r0, 0 + bne _0809DF98 + ldr r0, [r4, 0x4] + cmp r0, 0 + bne _0809DF98 + bl _0809E8F4 +_0809DF98: + ldr r1, [r7] + ldr r0, [r7, 0x4] + ldr r2, [r1, 0x48] + adds r1, r4, 0 + bl _call_via_r2 + movs r1, 0x9 + ands r1, r0 + cmp r1, 0 + beq _0809DFB0 + bl _0809E8F4 +_0809DFB0: + ldr r2, [r7] + ldr r0, [r7, 0x4] + movs r1, 0x80 + lsls r1, 5 + ldr r2, [r2, 0x30] + bl _call_via_r2 + adds r2, r7, 0 + adds r2, 0x4E + ldrh r0, [r2] + movs r5, 0 + ldrsh r1, [r2, r5] + cmp r1, 0 + bge _0809DFD0 + bl _0809E9D6 +_0809DFD0: + cmp r1, 0 + ble _0809DFD8 + bl _0809EAAC +_0809DFD8: + bl _0809E8F4 +_0809DFDC: + ldr r1, [r7] + ldr r0, [r7, 0x4] + add r5, sp, 0xB4 + ldr r2, [r1, 0xC] + adds r1, r5, 0 + bl _call_via_r2 + ldr r1, [r7, 0x60] + ldr r0, [r5] + subs r1, r0 + add r4, sp, 0xBC + str r1, [r4] + ldr r0, [r7, 0x64] + ldr r1, [r5, 0x4] + subs r0, r1 + str r0, [r4, 0x4] + ldr r1, [r7, 0x54] + adds r0, r4, 0 + bl sub_800290C + ldr r0, [r4] + adds r5, r4, 0 + cmp r0, 0 + bne _0809E016 + ldr r0, [r5, 0x4] + cmp r0, 0 + bne _0809E016 + bl _0809E8F4 +_0809E016: + ldr r1, [r7] + ldr r0, [r7, 0x4] + ldr r2, [r1, 0x48] + adds r1, r5, 0 + bl _call_via_r2 + adds r4, r0, 0 + adds r0, r5, 0 + bl sub_8002C60 + lsls r0, 24 + adds r2, r7, 0 + adds r2, 0x4A + asrs r1, r0, 24 + lsrs r0, 24 + strb r0, [r2] + ldr r2, [r7] + ldr r0, [r7, 0x4] + ldr r2, [r2, 0x2C] + bl _call_via_r2 + movs r0, 0x9 + ands r0, r4 + cmp r0, 0 + beq _0809E04C + bl _0809E8F4 +_0809E04C: + ldr r2, [r7] + ldr r0, [r7, 0x4] + movs r1, 0x80 + lsls r1, 5 + ldr r2, [r2, 0x30] + bl _call_via_r2 + adds r2, r7, 0 + adds r2, 0x4E + ldrh r0, [r2] + movs r6, 0 + ldrsh r1, [r2, r6] + cmp r1, 0 + bge _0809E06C + bl _0809E9D6 +_0809E06C: + cmp r1, 0 + ble _0809E074 + bl _0809EAAC +_0809E074: + bl _0809E8F4 +_0809E078: + adds r6, r7, 0 + adds r6, 0x4E + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + ble _0809E088 + bl _0809EA62 +_0809E088: + bl _0809E8F4 +_0809E08C: + movs r2, 0x4E + adds r2, r7 + mov r8, r2 + movs r3, 0 + ldrsh r0, [r2, r3] + cmp r0, 0 + ble _0809E09E + bl _0809E9DA +_0809E09E: + bl _0809E8F4 +_0809E0A2: + ldr r1, [r7] + ldr r0, [r7, 0x4] + add r4, sp, 0xE4 + add r2, sp, 0xE8 + ldr r3, [r1, 0x10] + adds r1, r4, 0 + bl _call_via_r3 + ldr r0, [r7, 0x6C] + ldr r1, [r4] + subs r0, r1 + adds r2, r4, 0 + cmp r0, 0 + bne _0809E0C2 + bl _0809E8F4 +_0809E0C2: + ldr r4, [r7, 0x54] + cmn r0, r4 + bge _0809E0CC + subs r0, r1, r4 + b _0809E0D4 +_0809E0CC: + cmp r0, r4 + ble _0809E0D2 + adds r0, r4, 0 +_0809E0D2: + adds r0, r1, r0 +_0809E0D4: + str r0, [r2] + ldr r2, [r7] + ldr r0, [r7, 0x4] + add r1, sp, 0xE4 + ldr r1, [r1] + ldr r2, [r2, 0x28] + bl _call_via_r2 + bl _0809E9D6 +_0809E0E8: + ldr r1, [r7] + ldr r0, [r7, 0x4] + add r4, sp, 0x14 + ldr r2, [r1, 0x14] + adds r1, r4, 0 + bl _call_via_r2 + movs r1, 0 + ldrsb r1, [r4, r1] + ldr r2, [r7, 0x54] + add r4, sp, 0xEC + adds r0, r4, 0 + bl sub_8002BB8 + ldr r2, [r4] + ldr r3, [r4, 0x4] + add r1, sp, 0xF4 + str r2, [r1] + str r3, [r1, 0x4] + ldr r2, [r7] + ldr r0, [r7, 0x4] + ldr r2, [r2, 0x48] + bl _call_via_r2 + movs r1, 0x9 + ands r1, r0 + cmp r1, 0 + beq _0809E124 + bl _0809E8F4 +_0809E124: + ldr r2, [r7] + ldr r0, [r7, 0x4] + movs r1, 0x80 + lsls r1, 5 + ldr r2, [r2, 0x30] + bl _call_via_r2 + adds r1, r7, 0 + adds r1, 0x4E + ldrh r2, [r1] + movs r4, 0 + ldrsh r0, [r1, r4] + cmp r0, 0 + ble _0809E144 + bl _0809EAB2 +_0809E144: + b _0809E8F4 +_0809E146: + adds r1, r7, 0 + adds r1, 0x4E + ldrh r2, [r1] + movs r5, 0 + ldrsh r0, [r1, r5] + mov r10, r1 + cmp r0, 0 + ble _0809E15A + bl _0809EAB2 +_0809E15A: + add r1, sp, 0x4 + ldr r0, [r7, 0x40] + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldr r0, [r0] + str r0, [r1] + movs r4, 0x1 + negs r4, r4 + mov r8, r4 + movs r5, 0 + ldr r1, [r7] + ldr r0, [r7, 0x4] + mov r4, sp + adds r4, 0x15 + ldr r2, [r1, 0x14] + adds r1, r4, 0 + bl _call_via_r2 + add r0, sp, 0x4 + ldrb r0, [r0] + subs r0, 0x91 + mov r9, r4 + cmp r0, 0x4 + bhi _0809E234 + lsls r0, 2 + ldr r1, _0809E194 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809E194: .4byte _0809E198 + .align 2, 0 +_0809E198: + .4byte _0809E1AC + .4byte _0809E1AC + .4byte _0809E1BA + .4byte _0809E1E0 + .4byte _0809E20C +_0809E1AC: + adds r0, r7, 0 + adds r0, 0x71 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + mov r8, r0 + b _0809E234 +_0809E1BA: + ldr r0, [sp, 0x8] + lsls r0, 16 + asrs r0, 16 + bl sub_80A7AE8 + lsls r0, 16 + asrs r4, r0, 16 + cmp r4, 0 + blt _0809E234 + movs r5, 0x1 + add r1, sp, 0xFC + adds r0, r4, 0 + bl sub_80A8FD8 + add r1, sp, 0x104 + adds r0, r4, 0 + bl sub_80A8F9C + b _0809E234 +_0809E1E0: + ldr r0, [sp, 0x8] + lsls r0, 16 + asrs r0, 16 + bl sub_80A7AE8 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + blt _0809E234 + movs r5, 0x1 + add r1, sp, 0xFC + bl sub_80A8FD8 + ldr r0, _0809E208 + ldr r1, [r0, 0x4] + ldr r0, [r0] + add r2, sp, 0x104 + str r0, [r2] + str r1, [r2, 0x4] + b _0809E234 + .align 2, 0 +_0809E208: .4byte gUnknown_81164DC +_0809E20C: + movs r5, 0x1 + ldr r1, [r7] + ldr r0, [r7, 0x4] + add r4, sp, 0xFC + ldr r2, [r1, 0xC] + adds r1, r4, 0 + bl _call_via_r2 + ldr r2, [r7] + ldr r0, [r7, 0x4] + add r1, sp, 0x104 + ldr r2, [r2, 0x8] + bl _call_via_r2 + ldr r0, [sp, 0x8] + lsls r0, 16 + asrs r0, 16 + adds r1, r4, 0 + bl sub_80AD8B4 +_0809E234: + cmp r5, 0 + beq _0809E282 + ldr r1, [r7] + ldr r0, [r7, 0x4] + add r5, sp, 0x10C + ldr r2, [r1, 0xC] + adds r1, r5, 0 + bl _call_via_r2 + ldr r1, [r7] + ldr r0, [r7, 0x4] + add r4, sp, 0x114 + ldr r2, [r1, 0x8] + adds r1, r4, 0 + bl _call_via_r2 + add r6, sp, 0xFC + add r3, sp, 0x104 + adds r0, r5, 0 + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_8002DF0 + lsls r0, 24 + asrs r0, 24 + mov r8, r0 + movs r0, 0x1 + negs r0, r0 + cmp r8, r0 + bne _0809E28C + ldr r3, _0809E2CC + adds r0, r5, 0 + adds r1, r3, 0 + adds r2, r6, 0 + bl sub_8002D54 + lsls r0, 24 + asrs r0, 24 + mov r8, r0 +_0809E282: + movs r0, 0x1 + negs r0, r0 + cmp r8, r0 + bne _0809E28C + b _0809E8F4 +_0809E28C: + mov r5, r9 + movs r0, 0 + ldrsb r0, [r5, r0] + cmp r8, r0 + bne _0809E298 + b _0809E8F4 +_0809E298: + mov r6, r9 + movs r0, 0 + ldrsb r0, [r6, r0] + add r1, sp, 0x4 + ldrh r2, [r1, 0x2] + lsls r2, 24 + lsrs r2, 24 + mov r1, r8 + bl sub_8002A70 + adds r1, r7, 0 + adds r1, 0x4A + strb r0, [r1] + ldr r2, [r7] + ldr r0, [r7, 0x4] + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + ldr r2, [r2, 0x2C] + bl _call_via_r2 + add r0, sp, 0x4 + ldrb r0, [r0, 0x1] + mov r1, r10 + strh r0, [r1] + b _0809E9CC + .align 2, 0 +_0809E2CC: .4byte gUnknown_81164DC +_0809E2D0: + bl sub_809D234 + lsls r0, 24 + cmp r0, 0 + beq _0809E2DC + b _0809E9D6 +_0809E2DC: + b _0809E8F4 +_0809E2DE: + adds r0, r7, 0 + adds r0, 0x46 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809E2F0 + b _0809E9D6 +_0809E2F0: + ldr r1, _0809E304 + adds r0, r7, 0 + adds r0, 0x4C + movs r3, 0 + ldrsh r0, [r0, r3] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + b _0809E8EC + .align 2, 0 +_0809E304: .4byte gUnknown_2039B48 +_0809E308: + adds r0, r7, 0 + adds r0, 0x46 + movs r4, 0 + ldrsh r1, [r0, r4] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809E31A + b _0809E9D6 +_0809E31A: + b _0809E8CA +_0809E31C: + adds r0, r7, 0 + adds r0, 0x46 + movs r5, 0 + ldrsh r1, [r0, r5] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809E32E + b _0809E9D6 +_0809E32E: + bl sub_8099B94 + lsls r0, 24 + cmp r0, 0 + beq _0809E33A + b _0809E9D6 +_0809E33A: + b _0809E8CA +_0809E33C: + add r1, sp, 0x4 + ldr r0, [r7, 0x40] + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldr r0, [r0] + str r0, [r1] + add r0, sp, 0x4 + ldrb r1, [r0, 0x1] + movs r4, 0x2 + ldrsh r2, [r0, r4] + ldr r3, [sp, 0x8] + adds r0, r7, 0 + bl sub_80A14E8 + adds r1, r0, 0 + cmp r1, 0 + bge _0809E360 + b _0809E9D6 +_0809E360: + movs r0, 0x3 + strh r0, [r7, 0x26] + adds r0, r7, 0 + b _0809E60C +_0809E368: + add r0, sp, 0x11C + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + bne _0809E376 + b _0809E9D6 +_0809E376: + add r0, sp, 0x11C + ldr r1, [r0] + adds r0, r7, 0 + bl sub_80A2460 + b _0809E8C8 +_0809E382: + add r0, sp, 0x120 + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + bne _0809E390 + b _0809E9D6 +_0809E390: + add r4, sp, 0x120 + ldr r0, [r4] + cmp r0, 0 + blt _0809E3BA + add r1, sp, 0x4 + ldr r0, [r7, 0x40] + ldm r0!, {r2,r5,r6} + stm r1!, {r2,r5,r6} + ldr r0, [r0] + str r0, [r1] + ldrb r0, [r4] + bl sub_8002694 + lsls r0, 16 + asrs r0, 16 + add r1, sp, 0x4 + movs r3, 0x2 + ldrsh r2, [r1, r3] + movs r1, 0 + bl GroundMainGroundRequest +_0809E3BA: + ldr r1, [r4] + adds r0, r7, 0 + bl sub_80A2460 + b _0809E8C8 +_0809E3C4: + adds r4, r7, 0 + adds r4, 0x4C + movs r5, 0 + ldrsh r0, [r4, r5] + cmp r0, 0 + bne _0809E40C + add r0, sp, 0x124 + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + bne _0809E3DE + b _0809E9D6 +_0809E3DE: + add r0, sp, 0x124 + ldr r0, [r0] + cmp r0, 0 + blt _0809E400 + lsls r0, 16 + asrs r0, 16 + bl sub_80A26B8 + adds r2, r0, 0 + lsls r2, 16 + asrs r2, 16 + movs r0, 0 + movs r1, 0x12 + bl sub_80018D8 + movs r0, 0x1 + b _0809E402 +_0809E400: + ldr r0, _0809E408 +_0809E402: + strh r0, [r4] + b _0809E8CE + .align 2, 0 +_0809E408: .4byte 0x0000ffff +_0809E40C: + cmp r0, 0x1 + bne _0809E464 + add r1, sp, 0x4 + ldr r0, [r7, 0x40] + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r0] + str r0, [r1] + movs r0, 0 + movs r1, 0x12 + bl sub_8001658 + adds r2, r0, 0 + lsls r2, 16 + asrs r4, r2, 16 + lsrs r2, 16 + movs r0, 0 + movs r1, 0x30 + bl sub_8001784 + cmp r4, 0x13 + bne _0809E43C + cmp r0, 0 + beq _0809E45A +_0809E43C: + add r0, sp, 0x4 + movs r5, 0x2 + ldrsh r0, [r0, r5] + bl sub_8098DCC + adds r0, r7, 0 + movs r1, 0 + bl sub_80A2460 + str r0, [r7, 0x28] + movs r0, 0 + movs r1, 0 + bl sub_80A87AC + b _0809E8F4 +_0809E45A: + movs r0, 0 + movs r1, 0x13 + movs r2, 0x13 + bl sub_80018D8 +_0809E464: + adds r0, r7, 0 + adds r0, 0x4C + movs r2, 0 + ldrsh r1, [r0, r2] + adds r5, r0, 0 + cmp r1, 0 + bne _0809E4B4 + add r0, sp, 0x128 + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + bne _0809E480 + b _0809E9D6 +_0809E480: + add r0, sp, 0x128 + ldr r1, [r0] + cmp r1, 0 + blt _0809E4AA + ldrb r0, [r6] + cmp r0, 0x4 + bne _0809E49A + lsls r0, r1, 16 + asrs r0, 16 + bl sub_80A26B8 + lsls r0, 16 + b _0809E49C +_0809E49A: + lsls r0, r1, 16 +_0809E49C: + asrs r2, r0, 16 + movs r0, 0 + movs r1, 0x13 + bl sub_80018D8 + movs r0, 0x1 + b _0809E4AC +_0809E4AA: + ldr r0, _0809E4B0 +_0809E4AC: + strh r0, [r5] + b _0809E8CE + .align 2, 0 +_0809E4B0: .4byte 0x0000ffff +_0809E4B4: + adds r0, r7, 0 + adds r0, 0x4C + movs r3, 0 + ldrsh r1, [r0, r3] + adds r5, r0, 0 + cmp r1, 0x1 + beq _0809E4C4 + b _0809E5B8 +_0809E4C4: + movs r0, 0 + movs r1, 0x13 + bl sub_8001658 + lsls r0, 16 + asrs r6, r0, 16 + add r4, sp, 0x18 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_80990EC + lsls r0, 24 + cmp r0, 0 + beq _0809E580 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8099220 + movs r0, 0x6 + bl sub_80023E4 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + ldrb r0, [r4] + ldr r4, _0809E51C + ldr r2, [r4] + movs r1, 0 + str r1, [sp] + bl sub_809034C + adds r1, r0, 0 + ldr r0, _0809E520 + str r1, [r0] + cmp r1, 0x1 + beq _0809E586 + cmp r1, 0x1 + bcc _0809E580 + cmp r1, 0x2 + bne _0809E5AE + strh r1, [r5] + ldr r2, [r4] + movs r0, 0x9 + b _0809E58E + .align 2, 0 +_0809E51C: .4byte gUnknown_203B4B0 +_0809E520: .4byte gUnknown_2039DA4 +_0809E524: + adds r0, r7, 0 + adds r0, 0x4C + movs r4, 0 + ldrsh r6, [r0, r4] + adds r5, r0, 0 + cmp r6, 0x1 + bne _0809E5B8 + movs r0, 0 + movs r1, 0x14 + bl sub_8001658 + lsls r0, 24 + lsrs r0, 24 + bl GetMailatIndex + adds r4, r0, 0 + movs r0, 0x6 + bl sub_80023E4 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + ldrb r0, [r4, 0x4] + ldr r4, _0809E578 + ldr r2, [r4] + str r6, [sp] + movs r1, 0 + bl sub_809034C + adds r1, r0, 0 + ldr r0, _0809E57C + str r1, [r0] + cmp r1, 0x1 + beq _0809E586 + cmp r1, 0x1 + bcc _0809E580 + cmp r1, 0x2 + bne _0809E5AE + strh r1, [r5] + ldr r2, [r4] + movs r0, 0x9 + b _0809E58E + .align 2, 0 +_0809E578: .4byte gUnknown_203B4B0 +_0809E57C: .4byte gUnknown_2039DA4 +_0809E580: + movs r0, 0x3 + strh r0, [r5] + b _0809E9CC +_0809E586: + movs r0, 0x4 + strh r0, [r5] + ldr r2, [r4] + movs r0, 0xA +_0809E58E: + movs r1, 0x1 + bl sub_809B1C0 + adds r0, r7, 0 + movs r1, 0x1 + bl sub_809D8EC + lsls r0, 24 + cmp r0, 0 + bne _0809E5A4 + b _0809E9CC +_0809E5A4: + movs r0, 0 + movs r1, 0xB + bl sub_80A87AC + b _0809E9CC +_0809E5AE: + ldr r0, _0809E5B4 + strh r0, [r5] + b _0809E9CC + .align 2, 0 +_0809E5B4: .4byte 0x0000ffff +_0809E5B8: + movs r6, 0 + ldrsh r2, [r5, r6] + cmp r2, 0x2 + bne _0809E5DA + add r0, sp, 0x12C + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + bne _0809E5CE + b _0809E9D6 +_0809E5CE: + add r0, sp, 0x12C + ldr r0, [r0] + cmp r0, 0 + beq _0809E626 + movs r0, 0x3 + b _0809E628 +_0809E5DA: + cmp r2, 0x3 + bne _0809E614 + add r1, sp, 0x4 + ldr r0, [r7, 0x40] + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldr r0, [r0] + str r0, [r1] + strh r2, [r7, 0x26] + add r0, sp, 0x4 + movs r6, 0x2 + ldrsh r0, [r0, r6] + bl sub_80999FC + movs r0, 0x70 + movs r1, 0 + bl GroundMap_ExecuteEvent + movs r1, 0x8 + ldrsh r0, [r7, r1] + cmp r0, 0 + bne _0809E608 + b _0809E9CC +_0809E608: + adds r0, r7, 0 + movs r1, 0x1 +_0809E60C: + bl sub_80A2460 + str r0, [r7, 0x28] + b _0809E9CC +_0809E614: + cmp r2, 0x4 + bne _0809E63C + add r0, sp, 0x130 + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + bne _0809E626 + b _0809E9D6 +_0809E626: + ldr r0, _0809E638 +_0809E628: + strh r0, [r5] + movs r0, 0 + movs r1, 0 + bl sub_80A87AC + bl sub_809A76C + b _0809E9CC + .align 2, 0 +_0809E638: .4byte 0x0000ffff +_0809E63C: + movs r0, 0 + movs r1, 0 + bl sub_8099220 + movs r4, 0x1 + negs r4, r4 + movs r0, 0 + movs r1, 0x13 + adds r2, r4, 0 + bl sub_80018D8 + adds r0, r7, 0 + adds r1, r4, 0 + b _0809E8EE +_0809E658: + add r1, sp, 0x4 + ldr r0, [r7, 0x40] + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r0] + str r0, [r1] + add r0, sp, 0x134 + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + bne _0809E672 + b _0809E9D6 +_0809E672: + add r0, sp, 0x134 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809E6A4 + ldr r0, [sp, 0x8] + lsls r0, 16 + asrs r1, r0, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809E6A4 + adds r0, r1, 0 + bl sub_80A8D54 + movs r2, 0 + adds r3, r0, 0 + adds r3, 0x4C + ldr r4, _0809E6B0 +_0809E696: + adds r0, r3, r2 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x9 + ble _0809E696 +_0809E6A4: + add r0, sp, 0x134 + ldr r1, [r0] + adds r0, r7, 0 + bl sub_80A2460 + b _0809E8C8 + .align 2, 0 +_0809E6B0: .4byte gUnknown_2039D98 +_0809E6B4: + add r0, sp, 0x138 + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + bne _0809E6C2 + b _0809E9D6 +_0809E6C2: + add r4, sp, 0x138 + ldr r0, [r4] + cmp r0, 0x1 + bne _0809E6D0 + ldr r0, _0809E6DC + bl SetRescueTeamName +_0809E6D0: + ldr r1, [r4] + adds r0, r7, 0 + bl sub_80A2460 + b _0809E8C8 + .align 2, 0 +_0809E6DC: .4byte gUnknown_2039D98 +_0809E6E0: + movs r1, 0x2 + add r0, sp, 0x13C + str r1, [r0] + b _0809E74A +_0809E6E8: + add r1, sp, 0x4 + ldr r0, [r7, 0x40] + ldm r0!, {r2,r5,r6} + stm r1!, {r2,r5,r6} + ldr r0, [r0] + str r0, [r1] + ldr r5, [sp, 0x10] + add r0, sp, 0x13C + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + bne _0809E704 + b _0809E9D6 +_0809E704: + add r0, sp, 0x13C + ldr r0, [r0] + cmp r0, 0x1 + bne _0809E74A + add r4, sp, 0x18 + ldr r0, _0809E758 + adds r3, r4, 0 + movs r2, 0 + mov r1, sp + adds r1, 0x27 +_0809E718: + strb r2, [r1] + subs r1, 0x1 + cmp r1, r3 + bge _0809E718 + adds r1, r4, 0 + bl CopyStringtoBuffer + movs r2, 0 + ldrb r0, [r4] + ldrb r3, [r5] + cmp r0, r3 + bne _0809E6E0 + cmp r0, 0 + beq _0809E74A +_0809E734: + adds r2, 0x1 + cmp r2, 0xF + bgt _0809E74A + adds r0, r4, r2 + adds r1, r5, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _0809E6E0 + cmp r0, 0 + bne _0809E734 +_0809E74A: + add r0, sp, 0x13C + ldr r1, [r0] + adds r0, r7, 0 + bl sub_80A2460 + b _0809E8C8 + .align 2, 0 +_0809E758: .4byte gUnknown_2039D98 +_0809E75C: + adds r2, r7, 0 + adds r2, 0x50 + ldrh r3, [r2] + movs r4, 0 + ldrsh r0, [r2, r4] + cmp r0, 0 + bne _0809E76C + b _0809E872 +_0809E76C: + add r4, sp, 0xA0 + adds r0, r4, 0 + bl sub_809AFFC + lsls r0, 24 + cmp r0, 0 + bne _0809E77C + b _0809E9D6 +_0809E77C: + ldrb r0, [r4] + cmp r0, 0 + bne _0809E784 + b _0809E8CA +_0809E784: + add r1, sp, 0x4 + ldr r0, [r7, 0x40] + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldr r0, [r0] + str r0, [r1] + add r0, sp, 0x4 + movs r4, 0x2 + ldrsh r1, [r0, r4] + b _0809E8C2 +_0809E798: + add r1, sp, 0x4 + ldr r0, [r7, 0x40] + ldm r0!, {r2,r5,r6} + stm r1!, {r2,r5,r6} + ldr r0, [r0] + str r0, [r1] + adds r2, r7, 0 + adds r2, 0x50 + movs r3, 0 + ldrsh r0, [r2, r3] + adds r4, r2, 0 + cmp r0, 0 + bne _0809E84C + movs r3, 0 + adds r0, r7, 0 + adds r0, 0x4C + movs r5, 0 + ldrsh r2, [r0, r5] + adds r5, r0, 0 + cmp r2, 0 + bge _0809E7CC + ldr r0, [r7, 0x28] + ldrb r0, [r0] + cmp r0, 0xD1 + beq _0809E812 + b _0809E8F4 +_0809E7CC: + ldr r1, [r7, 0x28] + ldrb r0, [r1] + cmp r0, 0xD0 + bne _0809E7F8 + movs r6, 0x2 + ldrsh r0, [r1, r6] + cmp r0, r2 + beq _0809E812 +_0809E7DC: + ldr r0, [r7, 0x28] + adds r1, r0, 0 + adds r1, 0x10 + str r1, [r7, 0x28] + ldrb r0, [r0, 0x10] + cmp r0, 0xD0 + bne _0809E7F8 + movs r0, 0x2 + ldrsh r1, [r1, r0] + movs r2, 0 + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _0809E7DC + movs r3, 0x1 +_0809E7F8: + cmp r3, 0 + bne _0809E812 + ldr r1, [r7, 0x28] + ldrb r0, [r1] + cmp r0, 0xD1 + bne _0809E8F4 +_0809E804: + adds r0, r1, 0 + adds r1, 0x10 + str r1, [r7, 0x28] + ldrb r0, [r0, 0x10] + cmp r0, 0xD1 + beq _0809E804 + b _0809E8F4 +_0809E812: + add r0, sp, 0x4 + ldrb r0, [r0, 0x1] + ldr r1, [sp, 0x8] + lsls r1, 16 + asrs r1, 16 + ldr r2, [r7, 0x28] + ldr r2, [r2, 0xC] + bl sub_809AE90 + lsls r0, 24 + cmp r0, 0 + beq _0809E844 + movs r0, 0 + movs r1, 0xA + bl sub_80A87AC + adds r0, r7, 0 + movs r1, 0 + bl sub_809D8EC + lsls r0, 24 + cmp r0, 0 + beq _0809E844 + movs r0, 0x1 + strh r0, [r4] +_0809E844: + ldr r0, [r7, 0x28] + adds r0, 0x10 + str r0, [r7, 0x28] + b _0809E9CC +_0809E84C: + adds r0, r7, 0 + adds r0, 0x46 + movs r3, 0 + ldrsh r1, [r0, r3] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809E85E + b _0809E9D6 +_0809E85E: + movs r0, 0 + strh r0, [r2] + b _0809E8D0 +_0809E864: + adds r2, r7, 0 + adds r2, 0x50 + ldrh r3, [r2] + movs r4, 0 + ldrsh r0, [r2, r4] + cmp r0, 0 + bne _0809E88A +_0809E872: + adds r0, r7, 0 + adds r0, 0x46 + movs r5, 0 + ldrsh r1, [r0, r5] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809E884 + b _0809E9D6 +_0809E884: + adds r0, r3, 0x1 + strh r0, [r2] + b _0809E9CC +_0809E88A: + add r0, sp, 0x140 + bl sub_809B18C + lsls r0, 24 + cmp r0, 0 + bne _0809E898 + b _0809E9D6 +_0809E898: + add r0, sp, 0x140 + ldr r3, [r0] + cmp r3, 0 + ble _0809E8CA + adds r0, r7, 0 + adds r0, 0x4C + movs r6, 0 + ldrsh r2, [r0, r6] + ldr r1, [r7, 0x40] + lsls r0, r3, 4 + lsls r2, 4 + adds r2, r1 + add r1, sp, 0x4 + adds r0, r2 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r0] + str r0, [r1] + add r0, sp, 0x4 + movs r5, 0x2 + ldrsh r1, [r0, r5] +_0809E8C2: + adds r0, r7, 0 + bl sub_80A242C +_0809E8C8: + str r0, [r7, 0x28] +_0809E8CA: + movs r0, 0x3 + strh r0, [r7, 0x26] +_0809E8CE: + movs r0, 0 +_0809E8D0: + movs r1, 0 + bl sub_80A87AC + b _0809E9CC +_0809E8D8: + adds r0, r7, 0 + adds r0, 0x46 + movs r6, 0 + ldrsh r1, [r0, r6] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _0809E9D6 + ldr r0, _0809E8FC + ldr r1, [r0, 0x4] +_0809E8EC: + adds r0, r7, 0 +_0809E8EE: + bl sub_80A2460 + str r0, [r7, 0x28] +_0809E8F4: + movs r0, 0x3 + strh r0, [r7, 0x26] + b _0809E9CC + .align 2, 0 +_0809E8FC: .4byte gUnknown_2039B48 +_0809E900: + adds r0, r7, 0 + bl ExecuteScriptCommand + strh r0, [r7, 0x26] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + bhi _0809E9BC + lsls r0, 2 + ldr r1, _0809E91C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809E91C: .4byte _0809E920 + .align 2, 0 +_0809E920: + .4byte _0809E934 + .4byte _0809E9B8 + .4byte _0809E9BC + .4byte _0809E9D6 + .4byte _0809E9B4 +_0809E934: + adds r0, r7, 0 + adds r0, 0x86 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _0809E9AA + adds r4, r7, 0 + adds r4, 0x84 + adds r0, r7, 0 + adds r0, 0x24 + adds r1, r4, 0 + movs r2, 0x60 + bl memcpy + ldr r2, [r7] + ldr r0, [r2, 0x2C] + cmp r0, 0 + beq _0809E98E + adds r5, r7, 0 + adds r5, 0x4A + movs r1, 0 + ldrsb r1, [r5, r1] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809E98E + ldr r0, [r7, 0x4] + add r1, sp, 0x144 + ldr r2, [r2, 0x18] + bl _call_via_r2 + add r0, sp, 0x144 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 3 + ands r0, r1 + cmp r0, 0 + beq _0809E98E + ldr r2, [r7] + ldr r0, [r7, 0x4] + movs r1, 0 + ldrsb r1, [r5, r1] + ldr r2, [r2, 0x2C] + bl _call_via_r2 +_0809E98E: + ldr r0, [r7] + ldr r2, [r0, 0x30] + cmp r2, 0 + beq _0809E9A2 + ldr r0, [r7, 0x4] + adds r1, r7, 0 + adds r1, 0x48 + ldrh r1, [r1] + bl _call_via_r2 +_0809E9A2: + adds r0, r4, 0 + bl InitScriptData + b _0809E9D6 +_0809E9AA: + adds r0, r7, 0 + adds r0, 0x24 + bl InitScriptData + b _0809E9D6 +_0809E9B4: + movs r0, 0x4 + b _0809EABA +_0809E9B8: + movs r0, 0x1 + b _0809EABA +_0809E9BC: + adds r1, r7, 0 + adds r1, 0x50 + movs r0, 0 + strh r0, [r1] + b _0809E9CC +_0809E9C6: + movs r2, 0x26 + ldrsh r0, [r7, r2] + b _0809EABA +_0809E9CC: + movs r3, 0x1 + cmp r3, 0 + beq _0809E9D6 + bl _0809DA8A +_0809E9D6: + movs r0, 0x3 + b _0809EABA +_0809E9DA: + ldr r1, [r7] + ldr r0, [r7, 0x4] + add r4, sp, 0xCC + ldr r2, [r1, 0xC] + adds r1, r4, 0 + bl _call_via_r2 + add r5, sp, 0xD4 + adds r1, r7, 0 + adds r1, 0x58 + adds r2, r7, 0 + adds r2, 0x60 + mov r6, r8 + movs r0, 0 + ldrsh r6, [r6, r0] + mov r9, r6 + adds r6, r7, 0 + adds r6, 0x50 + movs r3, 0 + ldrsh r0, [r6, r3] + str r0, [sp] + adds r0, r5, 0 + mov r3, r9 + bl sub_8002934 + ldr r1, [r5] + ldr r0, [r4] + subs r1, r0 + add r0, sp, 0xDC + str r1, [r0] + ldr r1, [r5, 0x4] + ldr r2, [r4, 0x4] + subs r1, r2 + str r1, [r0, 0x4] + bl sub_8002C60 + lsls r0, 24 + adds r2, r7, 0 + adds r2, 0x4A + asrs r1, r0, 24 + lsrs r0, 24 + strb r0, [r2] + ldr r2, [r7] + ldr r0, [r7, 0x4] + ldr r2, [r2, 0x2C] + bl _call_via_r2 + ldr r1, [r7] + ldr r0, [r7, 0x4] + ldr r2, [r1, 0x24] + adds r1, r5, 0 + bl _call_via_r2 + ldr r2, [r7] + ldr r0, [r7, 0x4] + movs r1, 0x80 + lsls r1, 5 + ldr r2, [r2, 0x30] + bl _call_via_r2 + mov r4, r8 + ldrh r0, [r4] + subs r0, 0x1 + strh r0, [r4] + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] + b _0809E9D6 +_0809EA62: + add r5, sp, 0xC4 + adds r1, r7, 0 + adds r1, 0x58 + adds r2, r7, 0 + adds r2, 0x60 + movs r3, 0 + ldrsh r0, [r6, r3] + mov r8, r0 + adds r4, r7, 0 + adds r4, 0x50 + movs r3, 0 + ldrsh r0, [r4, r3] + str r0, [sp] + adds r0, r5, 0 + mov r3, r8 + bl sub_8002934 + ldr r1, [r7] + ldr r0, [r7, 0x4] + ldr r2, [r1, 0x24] + adds r1, r5, 0 + bl _call_via_r2 + ldr r2, [r7] + ldr r0, [r7, 0x4] + movs r1, 0x80 + lsls r1, 5 + ldr r2, [r2, 0x30] + bl _call_via_r2 + ldrh r0, [r6] + subs r0, 0x1 + strh r0, [r6] + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0809E9D6 +_0809EAAC: + subs r0, 0x1 + strh r0, [r2] + b _0809E9D6 +_0809EAB2: + subs r0, r2, 0x1 + strh r0, [r1] + b _0809E9D6 +_0809EAB8: + movs r0, 0 +_0809EABA: + add sp, 0x148 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end HandleAction + .align 2, 0 diff --git a/ld_script.txt b/ld_script.txt index 6a62971de..701949b1a 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -342,6 +342,8 @@ SECTIONS { src/code_809D148.o(.text); asm/code_809D148.o(.text); src/ground_script.o(.text); + asm/handleaction.o(.text); + src/ground_script_1.o(.text); asm/ground_script.o(.text); src/code_80A26CC.o(.text); asm/code_80A26CC_1.o(.text); diff --git a/src/ground_script_1.c b/src/ground_script_1.c new file mode 100644 index 000000000..40f0f04f3 --- /dev/null +++ b/src/ground_script_1.c @@ -0,0 +1,4 @@ +#include "global.h" +#include "debug.h" +#include "ground_script.h" + From fd2c4c42a854f468477139cc1e73398eb13c1bc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Na=C5=9Bciszewski?= Date: Mon, 22 Jul 2024 19:23:43 +0200 Subject: [PATCH 05/10] Even more names --- asm/code_8010F28.s | 2 +- asm/code_80140DC.s | 6 ++-- asm/code_8040094.s | 2 +- asm/code_8042B34.s | 4 +-- asm/code_805D8C8.s | 4 +-- asm/code_8066D04.s | 4 +-- asm/code_806CD90.s | 2 +- asm/code_80718D8.s | 14 ++++----- asm/code_807E5AC.s | 4 +-- asm/code_8098468.s | 10 +++--- asm/code_809A560.s | 16 +++++----- asm/code_809C5C4.s | 4 +-- asm/dungeon_2.s | 2 +- asm/ground_effect.s | 10 +++--- asm/ground_event.s | 12 ++++---- asm/ground_lives.s | 22 ++++++------- asm/ground_map_1.s | 8 ++--- asm/ground_object.s | 10 +++--- asm/ground_script.s | 68 ++++++++++++++++++++--------------------- asm/handleaction.s | 4 +-- asm/pokemon_3.s | 8 ++--- data/data_8115F5C.s | 4 +-- include/code_80A26CC.h | 8 ++--- include/debug.h | 4 +-- include/ground_main.h | 9 ++++-- include/ground_script.h | 9 ++++++ src/adventure_log.c | 14 ++++----- src/code_801D9E4.c | 5 ++- src/code_809447C.c | 26 ++++++++-------- src/code_809A560.c | 4 +-- src/code_809D148.c | 4 +-- src/code_80A26CC.c | 32 +++++++++---------- src/debug.c | 2 +- src/felicity_bank.c | 12 ++++---- src/ground_main.c | 6 ++-- src/ground_map_1.c | 5 ++- src/ground_script.c | 9 ------ src/items.c | 4 +-- src/kecleon_bros1.c | 8 ++--- src/mission_reward.c | 6 ++-- src/moves.c | 4 +-- src/status.c | 8 ++--- src/trade_items_menu.c | 10 +++--- src/wigglytuff_shop3.c | 4 +-- sym_ewram.txt | 8 ++--- 45 files changed, 211 insertions(+), 210 deletions(-) diff --git a/asm/code_8010F28.s b/asm/code_8010F28.s index 45d109ed9..1574de710 100644 --- a/asm/code_8010F28.s +++ b/asm/code_8010F28.s @@ -887,7 +887,7 @@ _08011624: .4byte 0x00004df8 _08011628: .4byte 0x00004ddc _0801162C: .4byte 0x00004de0 _08011630: .4byte gUnknown_80D4104 -_08011634: .4byte gUnknown_202DE30 +_08011634: .4byte gFormatData_202DE30 _08011638: .4byte gUnknown_202DE58 _0801163C: .4byte gUnknown_80D4120 _08011640: diff --git a/asm/code_80140DC.s b/asm/code_80140DC.s index 3838443eb..01e2f1035 100644 --- a/asm/code_80140DC.s +++ b/asm/code_80140DC.s @@ -1460,7 +1460,7 @@ _08014E78: b _08014F0E .align 2, 0 _08014E7C: .4byte gUnknown_80D4900 -_08014E80: .4byte gUnknown_202DE30 +_08014E80: .4byte gFormatData_202DE30 _08014E84: adds r5, 0x1 ldr r1, _08014EBC @@ -1492,7 +1492,7 @@ _08014EB2: bne _08014EAC b _08014E78 .align 2, 0 -_08014EBC: .4byte gUnknown_202DE30 +_08014EBC: .4byte gFormatData_202DE30 _08014EC0: .4byte gUnknown_80D4904 _08014EC4: adds r5, 0x1 @@ -1525,7 +1525,7 @@ _08014EF2: bne _08014EEC b _08014E78 .align 2, 0 -_08014EFC: .4byte gUnknown_202DE30 +_08014EFC: .4byte gFormatData_202DE30 _08014F00: .4byte gUnknown_80D4908 _08014F04: ldr r4, _08014F08 diff --git a/asm/code_8040094.s b/asm/code_8040094.s index ce9271263..24124f794 100644 --- a/asm/code_8040094.s +++ b/asm/code_8040094.s @@ -1739,7 +1739,7 @@ _08040EB8: .4byte gUnknown_202F224 _08040EBC: .4byte gDungeon _08040EC0: .4byte 0x00018204 _08040EC4: .4byte gUnknown_8106A8C -_08040EC8: .4byte gUnknown_202DE30 +_08040EC8: .4byte gFormatData_202DE30 _08040ECC: .4byte gPtrMagnitudeMessage _08040ED0: cmp r1, 0x76 diff --git a/asm/code_8042B34.s b/asm/code_8042B34.s index 4ec03d1f6..0201b1ce6 100644 --- a/asm/code_8042B34.s +++ b/asm/code_8042B34.s @@ -874,7 +874,7 @@ _08043208: .4byte 0x0000067c _0804320C: .4byte 0x00ffffff _08043210: .4byte gDungeon _08043214: .4byte 0x00000644 -_08043218: .4byte gUnknown_202DE30 +_08043218: .4byte gFormatData_202DE30 _0804321C: .4byte 0x0000067b _08043220: .4byte gUnknown_80FEC48 _08043224: @@ -948,7 +948,7 @@ _0804326A: _080432B4: .4byte gUnknown_80FEC7C _080432B8: .4byte gDungeon _080432BC: .4byte 0x00000644 -_080432C0: .4byte gUnknown_202DE30 +_080432C0: .4byte gFormatData_202DE30 _080432C4: .4byte gUnknown_81002B8 _080432C8: ldr r4, _080432CC diff --git a/asm/code_805D8C8.s b/asm/code_805D8C8.s index 37ff41eaf..bd34caf9f 100644 --- a/asm/code_805D8C8.s +++ b/asm/code_805D8C8.s @@ -4317,7 +4317,7 @@ _0805FBB0: .4byte gFieldMenuTeamPtr _0805FBB4: .4byte gFieldMenuOthersPtr _0805FBB8: .4byte gFieldMenuGroundPtr _0805FBBC: .4byte gPlayTimeRef -_0805FBC0: .4byte gUnknown_202DE30 +_0805FBC0: .4byte gFormatData_202DE30 _0805FBC4: .4byte gUnknown_80F9174 _0805FBC8: .4byte gTeamInventoryRef _0805FBCC: .4byte gUnknown_80F9190 @@ -7317,7 +7317,7 @@ _080613EE: b _08061438 .align 2, 0 _0806141C: .4byte gUnknown_8106BD0 -_08061420: .4byte gUnknown_202DE30 +_08061420: .4byte gFormatData_202DE30 _08061424: .4byte gUnknown_202EE10 _08061428: .4byte gUnknown_8106BD4 _0806142C: diff --git a/asm/code_8066D04.s b/asm/code_8066D04.s index 644f62e88..6f945e142 100644 --- a/asm/code_8066D04.s +++ b/asm/code_8066D04.s @@ -2163,7 +2163,7 @@ _08067F4C: b _08067FA4 .align 2, 0 _08067F8C: .4byte gAvailablePokemonNames -_08067F90: .4byte gUnknown_202DE30 +_08067F90: .4byte gFormatData_202DE30 _08067F94: .4byte gUnknown_202DE58 _08067F98: .4byte gUnknown_8106E2C _08067F9C: @@ -2262,7 +2262,7 @@ _0806804C: pop {r0} bx r0 .align 2, 0 -_08068064: .4byte gUnknown_202DE30 +_08068064: .4byte gFormatData_202DE30 _08068068: .4byte gUnknown_8106E6C thumb_func_end sub_8067F00 diff --git a/asm/code_806CD90.s b/asm/code_806CD90.s index 391106232..cfe204abd 100644 --- a/asm/code_806CD90.s +++ b/asm/code_806CD90.s @@ -1010,7 +1010,7 @@ _0806D808: bl sub_80522F4 b _0806D84A .align 2, 0 -_0806D824: .4byte gUnknown_202DE30 +_0806D824: .4byte gFormatData_202DE30 _0806D828: .4byte gUnknown_80F9764 _0806D82C: .4byte 0x000003e7 _0806D830: diff --git a/asm/code_80718D8.s b/asm/code_80718D8.s index b1cc5cb8e..688796c49 100644 --- a/asm/code_80718D8.s +++ b/asm/code_80718D8.s @@ -170,7 +170,7 @@ _08071EB6: movs r1, 0 b _08071F02 .align 2, 0 -_08071EE8: .4byte gUnknown_202DE30 +_08071EE8: .4byte gFormatData_202DE30 _08071EEC: .4byte gAvailablePokemonNames _08071EF0: .4byte gUnknown_80F9E64 _08071EF4: .4byte 0x00000149 @@ -303,7 +303,7 @@ _08071FE2: pop {r0} bx r0 .align 2, 0 -_08071FF4: .4byte gUnknown_202DE30 +_08071FF4: .4byte gFormatData_202DE30 _08071FF8: .4byte gAvailablePokemonNames _08071FFC: .4byte gUnknown_202DE58 _08072000: .4byte gUnknown_80FF730 @@ -494,7 +494,7 @@ _08072162: pop {r0} bx r0 .align 2, 0 -_08072174: .4byte gUnknown_202DE30 +_08072174: .4byte gFormatData_202DE30 _08072178: .4byte gAvailablePokemonNames _0807217C: .4byte gUnknown_202DE58 _08072180: .4byte gUnknown_80FF730 @@ -690,7 +690,7 @@ _080722F4: bx r0 .align 2, 0 _08072308: .4byte gUnknown_80FCF18 -_0807230C: .4byte gUnknown_202DE30 +_0807230C: .4byte gFormatData_202DE30 _08072310: .4byte gUnknown_80F9ACC _08072314: .4byte gUnknown_8107010 _08072318: .4byte gUnknown_8107018 @@ -870,7 +870,7 @@ _08072456: bl sub_80528F4 b _080724A4 .align 2, 0 -_08072474: .4byte gUnknown_202DE30 +_08072474: .4byte gFormatData_202DE30 _08072478: .4byte gAvailablePokemonNames _0807247C: .4byte gUnknown_80F9E80 _08072480: @@ -1010,7 +1010,7 @@ _08072576: pop {r1} bx r1 .align 2, 0 -_08072588: .4byte gUnknown_202DE30 +_08072588: .4byte gFormatData_202DE30 _0807258C: .4byte gAvailablePokemonNames _08072590: .4byte gUnknown_80F9E80 _08072594: .4byte 0x03e60000 @@ -1261,7 +1261,7 @@ _08072760: pop {r1} bx r1 .align 2, 0 -_08072770: .4byte gUnknown_202DE30 +_08072770: .4byte gFormatData_202DE30 _08072774: .4byte gUnknown_80F9EC8 thumb_func_end sub_80725A4 diff --git a/asm/code_807E5AC.s b/asm/code_807E5AC.s index 3d8446fbd..36865c17a 100644 --- a/asm/code_807E5AC.s +++ b/asm/code_807E5AC.s @@ -1392,7 +1392,7 @@ _0807F158: _0807F168: .4byte gDungeon _0807F16C: .4byte 0xffff0000 _0807F170: .4byte 0xff00ffff -_0807F174: .4byte gUnknown_202DE30 +_0807F174: .4byte gFormatData_202DE30 _0807F178: .4byte gUnknown_80FE5C0 _0807F17C: .4byte 0x0000068c _0807F180: .4byte 0x0000e240 @@ -1451,7 +1451,7 @@ _0807F1EC: .4byte 0xffff0000 _0807F1F0: .4byte 0xff00ffff _0807F1F4: .4byte gDungeon _0807F1F8: .4byte 0x00000694 -_0807F1FC: .4byte gUnknown_202DE30 +_0807F1FC: .4byte gFormatData_202DE30 _0807F200: .4byte gUnknown_80FE568 _0807F204: ldr r0, _0807F224 diff --git a/asm/code_8098468.s b/asm/code_8098468.s index 21f0abff7..c5976d74d 100644 --- a/asm/code_8098468.s +++ b/asm/code_8098468.s @@ -164,7 +164,7 @@ _080985DC: movs r0, 0x1 negs r0, r0 bl sub_809A71C - bl sub_809A76C + bl ScriptPrintNullTextbox bl sub_809977C ldr r0, _08098600 ldr r0, [r0] @@ -394,10 +394,10 @@ _080987C0: bl sub_809A62C bl GroundMap_Reset bl sub_809D0BC - bl sub_80AD9D0 - bl sub_80A786C - bl sub_80ABB98 - bl sub_80ACBD4 + bl DeleteBlankGroundEvents + bl DeleteBlankGroundLives + bl DeleteBlankGroundObjects + bl DeleteBlankGroundEffects bl sub_809C658 bl nullsub_16 bl sub_8097944 diff --git a/asm/code_809A560.s b/asm/code_809A560.s index 858fbec0a..7fe328120 100644 --- a/asm/code_809A560.s +++ b/asm/code_809A560.s @@ -747,8 +747,8 @@ _0809AE8A: bx r1 thumb_func_end sub_809AE3C - thumb_func_start sub_809AE90 -sub_809AE90: + thumb_func_start ScriptPrintText +ScriptPrintText: push {r4-r6,lr} adds r5, r0, 0 adds r4, r2, 0 @@ -756,7 +756,7 @@ sub_809AE90: asrs r6, r1, 16 cmp r4, 0 bne _0809AEA4 - bl sub_809A76C + bl ScriptPrintNullTextbox b _0809AEE0 _0809AEA4: ldrb r0, [r4] @@ -784,14 +784,14 @@ _0809AED0: .4byte gUnknown_8116134 _0809AED4: .4byte gUnknown_3001B64 _0809AED8: .4byte gUnknown_8116148 _0809AEDC: - bl sub_809A7B4 + bl ScriptPrintEmptyTextbox _0809AEE0: lsls r0, 24 lsrs r0, 24 pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_809AE90 + thumb_func_end ScriptPrintText thumb_func_start sub_809AEEC sub_809AEEC: @@ -817,7 +817,7 @@ sub_809AEEC: .align 2, 0 _0809AF18: .4byte gUnknown_3001B64 _0809AF1C: - bl sub_809A76C + bl ScriptPrintNullTextbox _0809AF20: lsls r0, 24 lsrs r0, 24 @@ -850,7 +850,7 @@ sub_809AF2C: .align 2, 0 _0809AF58: .4byte gUnknown_3001B64 _0809AF5C: - bl sub_809A76C + bl ScriptPrintNullTextbox _0809AF60: lsls r0, 24 lsrs r0, 24 @@ -883,7 +883,7 @@ sub_809AF6C: .align 2, 0 _0809AF98: .4byte gUnknown_3001B64 _0809AF9C: - bl sub_809A76C + bl ScriptPrintNullTextbox _0809AFA0: lsls r0, 24 lsrs r0, 24 diff --git a/asm/code_809C5C4.s b/asm/code_809C5C4.s index b0631ff6c..a02b190ec 100644 --- a/asm/code_809C5C4.s +++ b/asm/code_809C5C4.s @@ -75,7 +75,7 @@ _0809CC20: movs r0, 0 adds r2, r5, 0 _0809CC4A: - bl sub_809AE90 + bl ScriptPrintText _0809CC4E: movs r0, 0 b _0809CC82 @@ -94,7 +94,7 @@ _0809CC5E: negs r1, r1 movs r0, 0 adds r2, r7, 0 - bl sub_809AE90 + bl ScriptPrintText movs r1, 0x80 lsls r1, 1 movs r0, 0xCB diff --git a/asm/dungeon_2.s b/asm/dungeon_2.s index e69b537df..d1dabc363 100644 --- a/asm/dungeon_2.s +++ b/asm/dungeon_2.s @@ -147,7 +147,7 @@ _0809043C: ldr r0, _08090470 b _08090476 .align 2, 0 -_08090464: .4byte gUnknown_202DE30 +_08090464: .4byte gFormatData_202DE30 _08090468: .4byte gUnknown_81159DC _0809046C: .4byte gDungeons _08090470: .4byte gUnknown_8115A80 diff --git a/asm/ground_effect.s b/asm/ground_effect.s index c4fe28480..ca0ad8c53 100644 --- a/asm/ground_effect.s +++ b/asm/ground_effect.s @@ -32,7 +32,7 @@ _080ACBB0: adds r1, r4 cmp r0, 0xF ble _080ACBB0 - bl sub_80ACBD4 + bl DeleteBlankGroundEffects pop {r4,r5} pop {r0} bx r0 @@ -41,8 +41,8 @@ _080ACBCC: .4byte gUnknown_3001B8C _080ACBD0: .4byte 0x0000ffff thumb_func_end sub_80ACB90 - thumb_func_start sub_80ACBD4 -sub_80ACBD4: + thumb_func_start DeleteBlankGroundEffects +DeleteBlankGroundEffects: push {r4-r6,lr} ldr r0, _080ACC0C ldr r4, [r0] @@ -74,12 +74,12 @@ _080ACBF2: bx r0 .align 2, 0 _080ACC0C: .4byte gUnknown_3001B8C - thumb_func_end sub_80ACBD4 + thumb_func_end DeleteBlankGroundEffects thumb_func_start sub_80ACC10 sub_80ACC10: push {r4,lr} - bl sub_80ACBD4 + bl DeleteBlankGroundEffects ldr r4, _080ACC28 ldr r0, [r4] bl MemoryFree diff --git a/asm/ground_event.s b/asm/ground_event.s index 6e5b5cada..98c15bcf7 100644 --- a/asm/ground_event.s +++ b/asm/ground_event.s @@ -30,7 +30,7 @@ _080AD9AC: adds r1, 0x20 cmp r0, 0x1F ble _080AD9AC - bl sub_80AD9D0 + bl DeleteBlankGroundEvents pop {r4} pop {r0} bx r0 @@ -39,8 +39,8 @@ _080AD9C8: .4byte gUnknown_3001B90 _080AD9CC: .4byte 0x0000ffff thumb_func_end sub_80AD990 - thumb_func_start sub_80AD9D0 -sub_80AD9D0: + thumb_func_start DeleteBlankGroundEvents +DeleteBlankGroundEvents: push {r4-r6,lr} ldr r0, _080ADA04 ldr r4, [r0] @@ -70,12 +70,12 @@ _080AD9EE: bx r0 .align 2, 0 _080ADA04: .4byte gUnknown_3001B90 - thumb_func_end sub_80AD9D0 + thumb_func_end DeleteBlankGroundEvents thumb_func_start sub_80ADA08 sub_80ADA08: push {r4,lr} - bl sub_80AD9D0 + bl DeleteBlankGroundEvents ldr r4, _080ADA20 ldr r0, [r4] bl MemoryFree @@ -352,7 +352,7 @@ _080ADC02: ldr r0, [r1, 0x8] ldr r0, [r0, 0x8] str r0, [r4, 0x1C] - bl sub_80A7A78 + bl GroundLives_CancelBlank_2 adds r0, r7, 0 _080ADC24: add sp, 0x14 diff --git a/asm/ground_lives.s b/asm/ground_lives.s index 283bb41f4..98d92b81e 100644 --- a/asm/ground_lives.s +++ b/asm/ground_lives.s @@ -52,7 +52,7 @@ _080A7826: adds r0, r1 movs r1, 0x1 strh r1, [r0] - bl sub_80A786C + bl DeleteBlankGroundLives pop {r4,r5} pop {r0} bx r0 @@ -62,8 +62,8 @@ _080A7864: .4byte gUnknown_3001B84 _080A7868: .4byte 0x0000ffff thumb_func_end sub_80A77F8 - thumb_func_start sub_80A786C -sub_80A786C: + thumb_func_start DeleteBlankGroundLives +DeleteBlankGroundLives: push {r4-r6,lr} ldr r0, _080A78E8 ldr r4, [r0] @@ -131,12 +131,12 @@ _080A78CE: .align 2, 0 _080A78E8: .4byte gUnknown_3001B84 _080A78EC: .4byte gUnknown_3001B80 - thumb_func_end sub_80A786C + thumb_func_end DeleteBlankGroundLives thumb_func_start sub_80A78F0 sub_80A78F0: push {r4,r5,lr} - bl sub_80A786C + bl DeleteBlankGroundLives ldr r4, _080A7914 ldr r0, [r4] bl MemoryFree @@ -270,8 +270,8 @@ _080A79F4: .4byte gUnknown_81180BC _080A79F8: .4byte gUnknown_3001B84 thumb_func_end GroundLives_Cancel - thumb_func_start sub_80A79FC -sub_80A79FC: + thumb_func_start GroundLives_CancelBlank_1 +GroundLives_CancelBlank_1: push {r4-r7,lr} mov r7, r8 push {r7} @@ -331,10 +331,10 @@ _080A7A50: .align 2, 0 _080A7A70: .4byte gUnknown_81180D8 _080A7A74: .4byte gUnknown_3001B84 - thumb_func_end sub_80A79FC + thumb_func_end GroundLives_CancelBlank_1 - thumb_func_start sub_80A7A78 -sub_80A7A78: + thumb_func_start GroundLives_CancelBlank_2 +GroundLives_CancelBlank_2: push {r4-r7,lr} ldr r1, _080A7AC0 movs r0, 0 @@ -391,7 +391,7 @@ _080A7ACC: bx r0 .align 2, 0 _080A7AE4: .4byte 0x0000ffff - thumb_func_end sub_80A7A78 + thumb_func_end GroundLives_CancelBlank_2 thumb_func_start sub_80A7AE8 sub_80A7AE8: diff --git a/asm/ground_map_1.s b/asm/ground_map_1.s index 1492e5171..fdbf1dc20 100644 --- a/asm/ground_map_1.s +++ b/asm/ground_map_1.s @@ -121,7 +121,7 @@ _080A4E4C: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080A4E6C: .4byte gUnknown_811BAF4 +_080A4E6C: .4byte gGroundConversion_811BAF4 _080A4E70: .4byte _080A4E74 .align 2, 0 _080A4E74: @@ -486,7 +486,7 @@ _080A5160: adds r2, r5, 0 bl FatalError .align 2, 0 -_080A5180: .4byte gUnknown_811BAF4 +_080A5180: .4byte gGroundConversion_811BAF4 _080A5184: .4byte gUnknown_8117734 _080A5188: .4byte gUnknown_8117740 _080A518C: @@ -1323,7 +1323,7 @@ sub_80A5738: bx lr .align 2, 0 _080A5750: .4byte gGroundMapAction -_080A5754: .4byte gUnknown_811BAF4 +_080A5754: .4byte gGroundConversion_811BAF4 thumb_func_end sub_80A5738 thumb_func_start sub_80A5758 @@ -1452,7 +1452,7 @@ _080A5832: .align 2, 0 _080A5838: .4byte gUnknown_3001B70 _080A583C: .4byte gGroundMapAction -_080A5840: .4byte gUnknown_811BAF4 +_080A5840: .4byte gGroundConversion_811BAF4 _080A5844: .4byte 0xffff8800 _080A5848: .4byte 0xffffb000 _080A584C: .4byte 0xffff7000 diff --git a/asm/ground_object.s b/asm/ground_object.s index df3283665..ef85cece8 100644 --- a/asm/ground_object.s +++ b/asm/ground_object.s @@ -32,7 +32,7 @@ _080ABB74: adds r1, r4 cmp r0, 0xF ble _080ABB74 - bl sub_80ABB98 + bl DeleteBlankGroundObjects pop {r4,r5} pop {r0} bx r0 @@ -41,8 +41,8 @@ _080ABB90: .4byte gUnknown_3001B88 _080ABB94: .4byte 0x0000ffff thumb_func_end sub_80ABB54 - thumb_func_start sub_80ABB98 -sub_80ABB98: + thumb_func_start DeleteBlankGroundObjects +DeleteBlankGroundObjects: push {r4-r6,lr} ldr r0, _080ABBD0 ldr r4, [r0] @@ -74,12 +74,12 @@ _080ABBB6: bx r0 .align 2, 0 _080ABBD0: .4byte gUnknown_3001B88 - thumb_func_end sub_80ABB98 + thumb_func_end DeleteBlankGroundObjects thumb_func_start sub_80ABBD4 sub_80ABBD4: push {r4,lr} - bl sub_80ABB98 + bl DeleteBlankGroundObjects ldr r4, _080ABBEC ldr r0, [r4] bl MemoryFree diff --git a/asm/ground_script.s b/asm/ground_script.s index f20026e10..74e682181 100644 --- a/asm/ground_script.s +++ b/asm/ground_script.s @@ -304,7 +304,7 @@ _0809EEF4: add r0, sp, 0x8 ldrb r5, [r0, 0x1] movs r0, 0x1 - bl sub_8011BA4 + bl ScriptLoggingEnabled lsls r0, 24 cmp r0, 0 beq _0809EF26 @@ -330,7 +330,7 @@ _0809EF26: b _0809EAE0 .align 2, 0 _0809EF38: .4byte gUnknown_81165D4 -_0809EF3C: .4byte gUnknown_811BAF4 +_0809EF3C: .4byte gGroundConversion_811BAF4 _0809EF40: ldr r0, [sp, 0xC] lsls r0, 16 @@ -346,7 +346,7 @@ _0809EF40: asrs r4, r0, 16 _0809EF5A: movs r0, 0x1 - bl sub_8011BA4 + bl ScriptLoggingEnabled lsls r0, 24 cmp r0, 0 beq _0809EF70 @@ -494,7 +494,7 @@ _0809F088: bl sub_80018D8 _0809F092: movs r0, 0x1 - bl sub_8011BA4 + bl ScriptLoggingEnabled lsls r0, 24 cmp r0, 0 beq _0809F0A8 @@ -540,7 +540,7 @@ _0809F0D0: ldr r1, _0809F124 strh r0, [r1] movs r0, 0x1 - bl sub_8011BA4 + bl ScriptLoggingEnabled lsls r0, 24 cmp r0, 0 beq _0809F16A @@ -561,11 +561,11 @@ _0809F0D0: bl Log b _0809F16A .align 2, 0 -_0809F11C: .4byte gUnknown_2039A30 +_0809F11C: .4byte gCurrentMap _0809F120: .4byte gUnknown_2039A32 _0809F124: .4byte gUnknown_2039A34 _0809F128: .4byte gUnknown_8116628 -_0809F12C: .4byte gUnknown_811BAF4 +_0809F12C: .4byte gGroundConversion_811BAF4 _0809F130: ldr r5, _0809F1E8 ldr r4, _0809F1EC @@ -575,7 +575,7 @@ _0809F130: ldr r0, _0809F1F0 strh r1, [r0] movs r0, 0x1 - bl sub_8011BA4 + bl ScriptLoggingEnabled lsls r0, 24 cmp r0, 0 beq _0809F16A @@ -618,10 +618,10 @@ _0809F16A: ldrsh r0, [r4, r1] bl GroundSprite_Reset bl sub_809D0BC - bl sub_80AD9D0 - bl sub_80A786C - bl sub_80ABB98 - bl sub_80ACBD4 + bl DeleteBlankGroundEvents + bl DeleteBlankGroundLives + bl DeleteBlankGroundObjects + bl DeleteBlankGroundEffects movs r2, 0 ldrsh r0, [r5, r2] lsls r1, r0, 1 @@ -647,10 +647,10 @@ _0809F16A: b _0809F2A0 .align 2, 0 _0809F1E8: .4byte gUnknown_2039A32 -_0809F1EC: .4byte gUnknown_2039A30 +_0809F1EC: .4byte gCurrentMap _0809F1F0: .4byte gUnknown_2039A34 _0809F1F4: .4byte gUnknown_8116644 -_0809F1F8: .4byte gUnknown_811BAF4 +_0809F1F8: .4byte gGroundConversion_811BAF4 _0809F1FC: ldr r0, [sp, 0xC] lsls r0, 16 @@ -665,7 +665,7 @@ _0809F1FC: strh r0, [r5] strh r0, [r1] movs r0, 0x1 - bl sub_8011BA4 + bl ScriptLoggingEnabled lsls r0, 24 cmp r0, 0 beq _0809F242 @@ -689,10 +689,10 @@ _0809F242: ldrsh r0, [r5, r1] bl GroundSprite_Reset bl sub_809D0BC - bl sub_80AD9D0 - bl sub_80A786C - bl sub_80ABB98 - bl sub_80ACBD4 + bl DeleteBlankGroundEvents + bl DeleteBlankGroundLives + bl DeleteBlankGroundObjects + bl DeleteBlankGroundEffects ldrb r2, [r6, 0xC] ldr r1, _0809F2C0 ldr r0, [sp, 0x58] @@ -731,9 +731,9 @@ _0809F2A0: .align 2, 0 _0809F2AC: .4byte gUnknown_2039A34 _0809F2B0: .4byte gUnknown_2039A32 -_0809F2B4: .4byte gUnknown_2039A30 +_0809F2B4: .4byte gCurrentMap _0809F2B8: .4byte gUnknown_8116664 -_0809F2BC: .4byte gUnknown_811BAF4 +_0809F2BC: .4byte gGroundConversion_811BAF4 _0809F2C0: .4byte 0xffffff00 _0809F2C4: .4byte 0xffff00ff _0809F2C8: @@ -894,7 +894,7 @@ _0809F41E: bl GroundEvent_Cancel bl _0809EAE0 _0809F42A: - bl sub_80A79FC + bl GroundLives_CancelBlank_1 bl _0809EAE0 _0809F432: bl GroundObject_CancelBlank @@ -1117,7 +1117,7 @@ _0809F5DC: ldrsh r1, [r0, r5] b _0809F5FA .align 2, 0 -_0809F5F0: .4byte gUnknown_2039A30 +_0809F5F0: .4byte gCurrentMap _0809F5F4: mov r0, r10 movs r2, 0xC @@ -1212,7 +1212,7 @@ _0809F68E: cmp r5, r0 bne _0809F6D8 movs r0, 0x1 - bl sub_8011BA4 + bl ScriptLoggingEnabled lsls r0, 24 cmp r0, 0 beq _0809F6C6 @@ -1502,10 +1502,10 @@ _0809F91A: bl sub_809D8EC bl _080A130A _0809F92E: - bl sub_809A76C + bl ScriptPrintNullTextbox bl _0809EAE0 _0809F936: - bl sub_809A7B4 + bl ScriptPrintEmptyTextbox bl _0809EAE0 _0809F93E: add r0, sp, 0x8 @@ -1704,7 +1704,7 @@ _0809FAD8: str r0, [r1] bl _0809EAE0 .align 2, 0 -_0809FAF4: .4byte gUnknown_202DE30 +_0809FAF4: .4byte gFormatData_202DE30 _0809FAF8: add r0, sp, 0x8 movs r4, 0x2 @@ -1755,7 +1755,7 @@ _0809FB5C: ldrsh r1, [r0, r2] ldr r2, [sp, 0x14] movs r0, 0 - bl sub_809AE90 + bl ScriptPrintText b _0809FBBA _0809FB6C: add r0, sp, 0x8 @@ -1763,7 +1763,7 @@ _0809FB6C: ldrsh r1, [r0, r3] ldr r2, [sp, 0x14] movs r0, 0x1 - bl sub_809AE90 + bl ScriptPrintText b _0809FBBA _0809FB7C: add r0, sp, 0x8 @@ -1771,7 +1771,7 @@ _0809FB7C: ldrsh r1, [r0, r4] ldr r2, [sp, 0x14] movs r0, 0x2 - bl sub_809AE90 + bl ScriptPrintText b _0809FBBA _0809FB8C: add r0, sp, 0x8 @@ -1779,7 +1779,7 @@ _0809FB8C: ldrsh r1, [r0, r5] ldr r2, [sp, 0x14] movs r0, 0x3 - bl sub_809AE90 + bl ScriptPrintText b _0809FBBA _0809FB9C: add r0, sp, 0x8 @@ -1787,7 +1787,7 @@ _0809FB9C: ldrsh r1, [r0, r2] ldr r2, [sp, 0x14] movs r0, 0x4 - bl sub_809AE90 + bl ScriptPrintText b _0809FBBA _0809FBAC: ldr r0, [sp, 0x14] @@ -5088,7 +5088,7 @@ _080A16FC: movs r0, 0 movs r1, 0x1 add r2, sp, 0x4 - bl sub_809AE90 + bl ScriptPrintText _080A171E: lsls r0, 24 _080A1720: @@ -6050,7 +6050,7 @@ _080A1EE8: negs r1, r1 ldr r2, _080A1F34 movs r0, 0 - bl sub_809AE90 + bl ScriptPrintText lsls r0, 24 cmp r0, 0 bne _080A1EBE diff --git a/asm/handleaction.s b/asm/handleaction.s index 515d0e7bf..c0d4c8ba7 100644 --- a/asm/handleaction.s +++ b/asm/handleaction.s @@ -1250,7 +1250,7 @@ _0809E628: movs r0, 0 movs r1, 0 bl sub_80A87AC - bl sub_809A76C + bl ScriptPrintNullTextbox b _0809E9CC .align 2, 0 _0809E638: .4byte 0x0000ffff @@ -1506,7 +1506,7 @@ _0809E812: asrs r1, 16 ldr r2, [r7, 0x28] ldr r2, [r2, 0xC] - bl sub_809AE90 + bl ScriptPrintText lsls r0, 24 cmp r0, 0 beq _0809E844 diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s index 55354d1ca..671af37a3 100644 --- a/asm/pokemon_3.s +++ b/asm/pokemon_3.s @@ -258,7 +258,7 @@ _0808F964: b _0808F9D8 .align 2, 0 _0808F998: .4byte gUnknown_8107754 -_0808F99C: .4byte gUnknown_202DE30 +_0808F99C: .4byte gFormatData_202DE30 _0808F9A0: .4byte gLevel810DD6C_Ptr _0808F9A4: .4byte gExpPts810DD9C_Ptr _0808F9A8: .4byte gUnknown_810DDB8 @@ -335,7 +335,7 @@ _0808FA0E: _0808FA44: .4byte gUnknown_810DE38 _0808FA48: .4byte gUnknown_810DDFC _0808FA4C: .4byte gUnknown_810DE24 -_0808FA50: .4byte gUnknown_202DE30 +_0808FA50: .4byte gFormatData_202DE30 _0808FA54: .4byte gUnknown_810DE28 _0808FA58: .4byte gUnknown_810DE54 _0808FA5C: @@ -438,7 +438,7 @@ _0808FB10: _0808FB24: .4byte gUnknown_202DE58 _0808FB28: .4byte gUnknown_810DE58 _0808FB2C: .4byte gUnknown_810DE6C -_0808FB30: .4byte gUnknown_202DE30 +_0808FB30: .4byte gFormatData_202DE30 _0808FB34: .4byte gUnknown_8115718 _0808FB38: .4byte gAvailablePokemonNames _0808FB3C: .4byte gUnknown_810DE80 @@ -884,7 +884,7 @@ _0808FED6: .align 2, 0 _0808FEEC: .4byte gUnknown_8107798 _0808FEF0: .4byte gAvailablePokemonNames -_0808FEF4: .4byte gUnknown_202DE30 +_0808FEF4: .4byte gFormatData_202DE30 _0808FEF8: .4byte gUnknown_810DEB4 _0808FEFC: .4byte gUnknown_202DE58 _0808FF00: .4byte gUnknown_810DEC8 diff --git a/data/data_8115F5C.s b/data/data_8115F5C.s index ed156cc00..11a3f8f14 100644 --- a/data/data_8115F5C.s +++ b/data/data_8115F5C.s @@ -6971,8 +6971,8 @@ gUnknown_811BAE4: @ 811BAE4 .byte 0x54, 0x30, 0x30, 0x50, 0x30, 0x31, 0x00, 0x00, 0x70, 0x6b, 0x73, 0x64 .byte 0x69, 0x72, 0x30, 0x00 -.global gUnknown_811BAF4 -gUnknown_811BAF4: @ 811BAF4 +.global gGroundConversion_811BAF4 +gGroundConversion_811BAF4: @ 811BAF4 @ replacing .incbin "baserom.gba", 0x0011baf4, 0x2764 .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00 .4byte gUnknown_811E230 diff --git a/include/code_80A26CC.h b/include/code_80A26CC.h index 6ece6742b..91655d190 100644 --- a/include/code_80A26CC.h +++ b/include/code_80A26CC.h @@ -2,7 +2,7 @@ #define GUARD_CODE_80A26CC_H // size: 0x14 -typedef struct unkStruct_80A2608 +typedef struct DungeonInfo { /* 0x0 */ s16 unk0; /* 0x2 */ s16 unk2; @@ -15,7 +15,7 @@ typedef struct unkStruct_80A2608 /* 0xE */ s16 unkE; /* 0x10 */ u8 unk10; /* 0x11 */ u8 unk11; -} unkStruct_80A2608; +} DungeonInfo; void sub_80A2500(s32, s16 *); void sub_80A252C(s32, s16 *); @@ -23,8 +23,8 @@ void sub_80A2558(s32, s16 *); void sub_80A2584(s16, s16); void sub_80A2598(s16, s16); u32 sub_80A25AC(u16); -const unkStruct_80A2608 *sub_80A2608(s16 index); -const unkStruct_80A2608 *sub_80A2620(s16 index); +const DungeonInfo *sub_80A2608(s16 index); +const DungeonInfo *sub_80A2620(s16 index); s16 sub_80A2654(s16 index); s16 sub_80A2668(u32); s16 sub_80A2688(u8); diff --git a/include/debug.h b/include/debug.h index 3e71b7fa7..1c1b5fcbf 100644 --- a/include/debug.h +++ b/include/debug.h @@ -27,7 +27,7 @@ void PrintFuncFileLine(u8 *buf, DebugLocation *loc, const u8 *prefix); void PrintMessageWithFuncFileLine(u8 *buffer, DebugLocation *debug, const u8 *text, ...); void sub_8011B08(void); void sub_8011B88(const u8 *text, ...); -u32 sub_8011BA4(void); +u32 ScriptLoggingEnabled(bool8); u32 sub_8011BA8(void); const u8 *sub_8011BAC(void); void sub_8011B14(void); @@ -36,4 +36,4 @@ u8 sub_8011B3C(void); void sub_8011BC8(u32, u32, u32, ...); void UnusedHang(void); -#endif // GUARD_DEBUG_H \ No newline at end of file +#endif // GUARD_DEBUG_H diff --git a/include/ground_main.h b/include/ground_main.h index 3ab8ea8d6..c9ff64a27 100644 --- a/include/ground_main.h +++ b/include/ground_main.h @@ -2,17 +2,22 @@ #define GUARD_GROUND_MAIN_H // size: 0xC -typedef struct unkStruct_811BAF4 +typedef struct GroundConversionStruct { s16 unk0; s16 unk2; s16 unk4; s16 unk6; /* 0x8 */ u8 *text; -} unkStruct_811BAF4; +} GroundConversionStruct; bool8 sub_8098F88(void); const char *sub_8098FB4(void); bool8 GroundMainGroundRequest(s16 r0, u32 r1, s32 r2); +bool8 GroundMainRescueRequest(s16 r0, u32 r1); +bool32 GroundMainGameEndRequest(u32 r0); +bool32 GroundMainGameCancelRequest(u32 r0); + +extern GroundConversionStruct gGroundConversion_811BAF4[10]; #endif // GUARD_GROUND_MAIN_H diff --git a/include/ground_script.h b/include/ground_script.h index 18f2aa1b0..52eee2aa1 100644 --- a/include/ground_script.h +++ b/include/ground_script.h @@ -127,6 +127,15 @@ typedef struct GroundMapAction /* .... */ u8 fillE8[0x110 - 0xE6]; } GroundMapAction; +typedef struct FunctionScript +{ + u32 unk0; + u8 *funcName; + ScriptCommand *script; +} FunctionScript; + +extern FunctionScript gFunctionScriptTable[]; + #include "debug.h" bool8 GroundScript_ExecutePP(Action *, s32 *, ScriptInfoSmall *, const DebugLocation *unused); diff --git a/src/adventure_log.c b/src/adventure_log.c index f2f67b91f..471cb766a 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -12,7 +12,7 @@ #include "text2.h" #include "structs/struct_sub80095e4.h" -extern u32 gUnknown_202DE30; +extern u32 gFormatData_202DE30; static EWRAM_DATA_2 struct_Sub80095E4_2 *sAdventureLog = {0}; @@ -110,32 +110,32 @@ static void DisplayAdventureLog(void) switch (temp) { case 12: v1 = sub_80978B8(); - gUnknown_202DE30 = (s16)v1; + gFormatData_202DE30 = (s16)v1; xxx_format_and_draw(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(temp), sAdventureLog->s0.unk34, 0); break; case 7: v2 = sub_8097880(); - gUnknown_202DE30 = (s16)v2; + gFormatData_202DE30 = (s16)v2; xxx_format_and_draw(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(temp), sAdventureLog->s0.unk34, 0); break; case 11: v3 = sub_8097838(); - gUnknown_202DE30 = (s16)v3; + gFormatData_202DE30 = (s16)v3; xxx_format_and_draw(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(temp), sAdventureLog->s0.unk34, 0); break; case 8: v4 = sub_80977B8(); - gUnknown_202DE30 = v4; + gFormatData_202DE30 = v4; xxx_format_and_draw(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(temp), sAdventureLog->s0.unk34, 0); break; case 9: v5 = sub_80977F8(); - gUnknown_202DE30 = v5; + gFormatData_202DE30 = v5; xxx_format_and_draw(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(temp), sAdventureLog->s0.unk34, 0); break; case 10: v6 = sub_8097870(); - gUnknown_202DE30 = (s16)v6; + gFormatData_202DE30 = (s16)v6; // fallthrough default: xxx_format_and_draw(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(temp), sAdventureLog->s0.unk34, 0); diff --git a/src/code_801D9E4.c b/src/code_801D9E4.c index 9d152a65f..c40f8a2bd 100644 --- a/src/code_801D9E4.c +++ b/src/code_801D9E4.c @@ -14,7 +14,6 @@ static EWRAM_DATA_2 struct struct_Sub80095E4_2 *sUnknown_203B258 = {0}; extern struct unkStruct_81188F0 gUnknown_81188F0[10]; -extern unkStruct_811BAF4 gUnknown_811BAF4[10]; #include "data/code_801D9E4.h" @@ -105,7 +104,7 @@ static void sub_801DB54(void) static void sub_801DBD4(void) { - unkStruct_811BAF4 *temp; + GroundConversionStruct *temp; struct unkStruct_81188F0 *temp2; s32 x, y, n; s16 index; @@ -124,7 +123,7 @@ static void sub_801DBD4(void) for (counter = 0; counter < sUnknown_203B258->s0.input.unk1A; counter++) { index = (sUnknown_203B258->s0.input.unk1E * sUnknown_203B258->s0.input.unk1C) + counter; - temp = &gUnknown_811BAF4[index]; + temp = &gGroundConversion_811BAF4[index]; temp2 = &gUnknown_81188F0[temp->unk4]; y = sub_8013800(&sUnknown_203B258->s0.input, counter); diff --git a/src/code_809447C.c b/src/code_809447C.c index 1183e8c30..8650e52a1 100644 --- a/src/code_809447C.c +++ b/src/code_809447C.c @@ -17,7 +17,7 @@ struct unkStruct_8113080 extern u8 gUnknown_202DE58[]; extern u8 gAvailablePokemonNames[]; -extern s32 gUnknown_202DE30[2]; +extern s32 gFormatData_202DE30[2]; extern const u8 *gUnknown_811383C[]; extern const u8 *gUnknown_8113850[]; @@ -112,46 +112,46 @@ void sub_8094558(u32 param_1,u8 *param_2,unkDungeonGlobal_unk1CE98_sub *param_3) xxx_format_and_draw(x,y,buffer,param_1,0); y += 0x10; - gUnknown_202DE30[0] = param_3->exp; - gUnknown_202DE30[1] = param_3->level; - if (gUnknown_202DE30[1] >= 100) { + gFormatData_202DE30[0] = param_3->exp; + gFormatData_202DE30[1] = param_3->level; + if (gFormatData_202DE30[1] >= 100) { xxx_format_and_draw(4,y,*gUnknown_81138C0,param_1,0); } else { xxx_format_and_draw(4,y,*gUnknown_8113898,param_1,0); } y += 0xA; - gUnknown_202DE30[0] = param_3->maxHPStat; + gFormatData_202DE30[0] = param_3->maxHPStat; xxx_format_and_draw(4,y,*gUnknown_81138D0,param_1,0); y += 0xA; - gUnknown_202DE30[0] = param_3->atk; - gUnknown_202DE30[1] = param_3->def; + gFormatData_202DE30[0] = param_3->atk; + gFormatData_202DE30[1] = param_3->def; if (param_3->attBoost) { - gUnknown_202DE30[0] = gUnknown_202DE30[0] + param_3->attBoost; + gFormatData_202DE30[0] = gFormatData_202DE30[0] + param_3->attBoost; xxx_format_and_draw(4,y,*gUnknown_8113950,param_1,0); } else { xxx_format_and_draw(4,y,*gUnknown_81138E4,param_1,0); } if (param_3->defBoost) { - gUnknown_202DE30[1] = gUnknown_202DE30[1] + param_3->defBoost; + gFormatData_202DE30[1] = gFormatData_202DE30[1] + param_3->defBoost; xxx_format_and_draw(4,y,*gUnknown_8113974,param_1,0); } else { xxx_format_and_draw(4,y,*gUnknown_8113900,param_1,0); } y += 0xA; - gUnknown_202DE30[0] = param_3->spAtk; - gUnknown_202DE30[1] = param_3->spDef; + gFormatData_202DE30[0] = param_3->spAtk; + gFormatData_202DE30[1] = param_3->spDef; if (param_3->spAttBoost) { - gUnknown_202DE30[0] = gUnknown_202DE30[0] + param_3->spAttBoost; + gFormatData_202DE30[0] = gFormatData_202DE30[0] + param_3->spAttBoost; xxx_format_and_draw(4,y,*gUnknown_8113990,param_1,0); } else { xxx_format_and_draw(4,y,*gUnknown_8113918,param_1,0); } if (param_3->spDefBoost) { - gUnknown_202DE30[1] = gUnknown_202DE30[1] + param_3->spDefBoost; + gFormatData_202DE30[1] = gFormatData_202DE30[1] + param_3->spDefBoost; xxx_format_and_draw(4,y,*gUnknown_81139B4,param_1,0); } else { diff --git a/src/code_809A560.c b/src/code_809A560.c index a3c257fcb..2f888f47a 100644 --- a/src/code_809A560.c +++ b/src/code_809A560.c @@ -143,7 +143,7 @@ u32 sub_809A768(void) return 0; } -u8 sub_809A76C(void) +u8 ScriptPrintNullTextbox(void) { switch(gUnknown_3001B64->unk0) { @@ -158,7 +158,7 @@ u8 sub_809A76C(void) } } -u8 sub_809A7B4(void) +u8 ScriptPrintEmptyTextbox(void) { switch(gUnknown_3001B64->unk0) { diff --git a/src/code_809D148.c b/src/code_809D148.c index 8a7e4ee70..fe31cdd79 100644 --- a/src/code_809D148.c +++ b/src/code_809D148.c @@ -387,7 +387,7 @@ void sub_809D490(void) sub_809D4B0(); } -extern s16 gUnknown_2039A30; +extern s16 gCurrentMap; extern s16 gUnknown_2039A32; extern s16 gUnknown_2039A34; extern u8 gUnknown_2039A36; @@ -399,7 +399,7 @@ void sub_809D4B0(void) { s32 i; - gUnknown_2039A30 = -1; + gCurrentMap = -1; gUnknown_2039A32 = -1; gUnknown_2039A34 = -1; gUnknown_2039A36 = 0; diff --git a/src/code_80A26CC.c b/src/code_80A26CC.c index 4106a75c1..e5c6abbd0 100644 --- a/src/code_80A26CC.c +++ b/src/code_80A26CC.c @@ -5,7 +5,7 @@ #include "ground_main.h" // data_8115F5C.s -extern const unkStruct_80A2608 gUnknown_81168A8[]; +extern const DungeonInfo gUnknown_81168A8[]; extern const s16 gUnknown_8116F24[]; extern const s16 gUnknown_8116F9A[]; extern const u8 *gUnknown_8117000[]; @@ -78,12 +78,12 @@ u32 sub_80A25AC(u16 param_1) return 1; } -const unkStruct_80A2608 *sub_80A2608(s16 index) +const DungeonInfo *sub_80A2608(s16 index) { return &gUnknown_81168A8[index]; } -const unkStruct_80A2608 *sub_80A2620(s16 index) +const DungeonInfo *sub_80A2620(s16 index) { u32 temp; temp = sub_80A26B8(index); @@ -97,7 +97,7 @@ UNUSED static s16 sub_80A2644(u32 index) s16 sub_80A2654(s16 index) { - const unkStruct_80A2608 *temp; + const DungeonInfo *temp; temp = sub_80A2608(index); return temp->unkE; @@ -149,7 +149,7 @@ UNUSED static s16 sub_80A26D8(u8 index) { s32 i; s16 counter2; - const unkStruct_80A2608 *temp; + const DungeonInfo *temp; for (i = 0; i < 83; i++) { counter2 = i; @@ -165,7 +165,7 @@ UNUSED static s16 sub_80A26D8(u8 index) u8 sub_80A270C(s16 index) { - const unkStruct_80A2608 *temp; + const DungeonInfo *temp; s32 index_s32; index_s32 = index; // forcing a shift before addressing @@ -175,7 +175,7 @@ u8 sub_80A270C(s16 index) u8 sub_80A2728(s16 index) { - const unkStruct_80A2608 *temp; + const DungeonInfo *temp; s16 temp_number = 55 + index; temp = sub_80A2608(temp_number); @@ -184,7 +184,7 @@ u8 sub_80A2728(s16 index) u8 sub_80A2740(s32 index) { - const unkStruct_80A2608 *temp; + const DungeonInfo *temp; temp = sub_80A2608(index); return temp->dungeonIndex; @@ -192,7 +192,7 @@ u8 sub_80A2740(s32 index) s16 sub_80A2750(s16 r0) { - const unkStruct_80A2608 *temp; + const DungeonInfo *temp; s32 temp_32; s32 temp_2; @@ -227,7 +227,7 @@ bool8 sub_80A27CC(s16 r0) { s32 temp; s32 temp2; - const unkStruct_80A2608 *t; + const DungeonInfo *t; // Same dumbness as above to get a match temp2 = r0; @@ -250,7 +250,7 @@ bool8 sub_80A27CC(s16 r0) bool8 sub_80A2824(u8 index) { s32 i; - const unkStruct_80A2608 *temp; + const DungeonInfo *temp; if (sub_80023E4(5)) return FALSE; @@ -285,7 +285,7 @@ bool8 sub_80A2824(u8 index) UNUSED static bool8 sub_80A28B4(s16 r0) { - const unkStruct_80A2608 *temp; + const DungeonInfo *temp; temp = sub_80A2620(r0); @@ -302,7 +302,7 @@ UNUSED static bool8 sub_80A28B4(s16 r0) bool8 sub_80A28F0(u8 index) { s32 counter; - const unkStruct_80A2608 *temp; + const DungeonInfo *temp; for (counter = 0; counter < 0x2E; counter++) { temp = sub_80A2620(counter); @@ -323,7 +323,7 @@ bool8 sub_80A28F0(u8 index) UNUSED static s32 sub_80A293C(u8 *param_1) { u8 *pcVar2; - const unkStruct_80A2608 *iVar3; + const DungeonInfo *iVar3; s32 index; s32 counter; u8 local_68[64]; @@ -358,7 +358,7 @@ UNUSED static s32 sub_80A293C(u8 *param_1) s32 sub_80A29B0(u8 *param_1) { u8 *pcVar2; - const unkStruct_80A2608 *iVar3; + const DungeonInfo *iVar3; s32 index; s32 counter; u8 *local1; @@ -409,7 +409,7 @@ s32 sub_80A29B0(u8 *param_1) UNUSED static s32 sub_80A2A5C(u8 *param_1) { u8 *pcVar2; - const unkStruct_80A2608 *iVar3; + const DungeonInfo *iVar3; s32 index; s32 counter; u8 local_58[0x40]; diff --git a/src/debug.c b/src/debug.c index 62660fc58..a27ba3ad6 100644 --- a/src/debug.c +++ b/src/debug.c @@ -170,7 +170,7 @@ void nullsub_28(void) { } -u32 sub_8011BA4(void) +u32 ScriptLoggingEnabled(bool8 unused) { return 0; } diff --git a/src/felicity_bank.c b/src/felicity_bank.c index 761190daf..fad613e63 100644 --- a/src/felicity_bank.c +++ b/src/felicity_bank.c @@ -13,7 +13,7 @@ static EWRAM_DATA_2 FelicityBankWork *sFelicityBankWork = {0}; -extern u32 gUnknown_202DE30; +extern u32 gFormatData_202DE30; extern u8 gUnknown_202E1C8[]; extern u8 gUnknown_202E5D8[]; @@ -167,7 +167,7 @@ static void UpdateFelicityBankDialogue(void) sub_8014248(gCommonFelicity[sFelicityBankWork->mode][FEL_DLG_HOW_MAY_I_SERVE__NO_MONEY], 0, sFelicityBankWork->menuAction, sFelicityBankWork->unk14, sFelicityBankWork->unk54, 4, 0, sFelicityBankWork->unkA4, 0xC); else { - gUnknown_202DE30 = gTeamInventoryRef->teamSavings; + gFormatData_202DE30 = gTeamInventoryRef->teamSavings; sub_8014248(gCommonFelicity[sFelicityBankWork->mode][FEL_DLG_HOW_MAY_I_SERVE__HAS_MONEY], 0, sFelicityBankWork->menuAction, sFelicityBankWork->unk14, sFelicityBankWork->unk54, 4, 0, sFelicityBankWork->unkA4, 0xC); } @@ -181,7 +181,7 @@ static void UpdateFelicityBankDialogue(void) if (gTeamInventoryRef->teamSavings == 0) sub_80141B4(gCommonFelicity[sFelicityBankWork->mode][FEL_DLG_BYE__NO_MONEY], 0, sFelicityBankWork->unkA4, 0x10D); else { - gUnknown_202DE30 = gTeamInventoryRef->teamSavings; + gFormatData_202DE30 = gTeamInventoryRef->teamSavings; sub_80141B4(gCommonFelicity[sFelicityBankWork->mode][FEL_DLG_BYE__HAS_MONEY], 0, sFelicityBankWork->unkA4, 0x10D); } break; @@ -220,7 +220,7 @@ static void UpdateFelicityBankDialogue(void) break; case 9: sFelicityBankWork->fallbackState = 1; - gUnknown_202DE30 = sFelicityBankWork->chosenAmount; + gFormatData_202DE30 = sFelicityBankWork->chosenAmount; sub_80141B4(gCommonFelicity[sFelicityBankWork->mode][FEL_DLG_DEPOSIT__RECEIPT], 0, sFelicityBankWork->unkA4, 0x10D); break; case 10: @@ -234,7 +234,7 @@ static void UpdateFelicityBankDialogue(void) } else { sFelicityBankWork->fallbackState = 11; - gUnknown_202DE30 = gTeamInventoryRef->teamSavings; + gFormatData_202DE30 = gTeamInventoryRef->teamSavings; sub_80141B4(gCommonFelicity[sFelicityBankWork->mode][FEL_DLG_WITHDRAW__HOW_MUCH], 0, sFelicityBankWork->unkA4, 0x10D); } break; @@ -258,7 +258,7 @@ static void UpdateFelicityBankDialogue(void) break; case 12: sFelicityBankWork->fallbackState = 1; - gUnknown_202DE30 = sFelicityBankWork->chosenAmount; + gFormatData_202DE30 = sFelicityBankWork->chosenAmount; sub_80141B4(gCommonFelicity[sFelicityBankWork->mode][FEL_DLG_WITHDRAW__RECEIPT], 0, sFelicityBankWork->unkA4, 0x10D); break; } diff --git a/src/ground_main.c b/src/ground_main.c index 51ab2c738..a0c534c55 100644 --- a/src/ground_main.c +++ b/src/ground_main.c @@ -27,8 +27,6 @@ EWRAM_DATA_2 u8 gUnknown_203B49D = {0}; #include "data/ground_main.h" -extern unkStruct_811BAF4 gUnknown_811BAF4[10]; - extern void sub_809B57C(); extern void GroundScript_Unlock(); extern void sub_809D25C(); @@ -293,7 +291,7 @@ s16 sub_8098FCC(u32 unused) s32 iVar4; s32 iVar5; s32 iVar6; - const unkStruct_80A2608 *iVar3; + const DungeonInfo *iVar3; iVar5 = (s16)sub_8001658(0,0x13); iVar6 = iVar5; @@ -330,7 +328,7 @@ const char *sub_80990B8(void) index = sub_8098FCC(0xB); if(index != -1) { - return sub_80A2B18(gUnknown_811BAF4[index].unk2); + return sub_80A2B18(gGroundConversion_811BAF4[index].unk2); } else { diff --git a/src/ground_map_1.c b/src/ground_map_1.c index d857a379b..ca1e42dd3 100644 --- a/src/ground_map_1.c +++ b/src/ground_map_1.c @@ -12,7 +12,6 @@ extern const DebugLocation gUnknown_81175E0; extern const DebugLocation gUnknown_8117644; extern const u8 gUnknown_8117650[]; extern const DebugLocation gUnknown_8117698; -extern const unkStruct_811BAF4 gUnknown_811BAF4[10]; extern void GroundMap_GetStationScript(ScriptInfoSmall *, s16, u32, u32); @@ -92,7 +91,7 @@ bool8 sub_80A4D2C(s16 param_1) bool8 sub_80A4D48(s16 index) { if (index == -1) return TRUE; - if (gUnknown_811BAF4[index].unk0 == 5) return FALSE; - if (gUnknown_811BAF4[index].unk0 != 8) return TRUE; + if (gGroundConversion_811BAF4[index].unk0 == 5) return FALSE; + if (gGroundConversion_811BAF4[index].unk0 != 8) return TRUE; return FALSE; } diff --git a/src/ground_script.c b/src/ground_script.c index 59cb00bcd..105355c2e 100644 --- a/src/ground_script.c +++ b/src/ground_script.c @@ -25,15 +25,6 @@ extern u8 sub_809A750(void); extern ScriptCommand *sub_80A2460(Action *param_1, u32); void FatalError(u32 *, const char *, ...) __attribute__((noreturn)); -typedef struct FunctionScript -{ - u32 unk0; - u8 *funcName; - ScriptCommand *script; -} FunctionScript; - -extern FunctionScript gFunctionScriptTable[]; - void SetPredefinedScript(Action *param_1, s16 index, ScriptCommand *param_3) { param_1->predefinedScripts[index] = param_3; diff --git a/src/items.c b/src/items.c index 271f43ad1..8596a1ff7 100644 --- a/src/items.c +++ b/src/items.c @@ -21,7 +21,7 @@ extern s32 gUnknown_81097B0[]; extern u8 gUnknown_81097C4[]; extern u16 gGummiStatBoostLUT[]; extern u8 gUnknown_202DE58[]; -extern u32 gUnknown_202DE30; +extern u32 gFormatData_202DE30; extern u8* gPtrTypeText; // ptr to "Type\0" extern u8* gPtrPPD0Text; // ptr to "PP {ARG_VALUE_0} \0" extern u32 gUnknown_81097E8[4]; // some sort of lookup table (16, 18, 20, 22) @@ -690,7 +690,7 @@ u32 sub_80913E0(Item* slot, u32 a2, struct subStruct_203B240 ** a3) typestring = GetUnformattedTypeString(moves_data); xxx_format_and_draw(64, 84, typestring, a2, 0); result = GetMoveBasePP(buffer8); - gUnknown_202DE30 = result; + gFormatData_202DE30 = result; xxx_format_and_draw(128, 84, gPtrPPD0Text, a2, 0); } diff --git a/src/kecleon_bros1.c b/src/kecleon_bros1.c index b082a9236..748d29d04 100644 --- a/src/kecleon_bros1.c +++ b/src/kecleon_bros1.c @@ -18,7 +18,7 @@ #include "text1.h" #include "text2.h" -extern u32 gUnknown_202DE30; +extern u32 gFormatData_202DE30; extern u8 gUnknown_202DE58[]; extern u8 gUnknown_202E1C8[]; extern u8 gUnknown_202E5D8[]; @@ -341,7 +341,7 @@ static void UpdateKecleonStoreDialogue(void) case 22: sub_8019700(); sub_8090E14(gUnknown_202DE58, &sKecleonBrosWork1->soldItem, 0); - gUnknown_202DE30 = sKecleonBrosWork1->itemSellPrice; + gFormatData_202DE30 = sKecleonBrosWork1->itemSellPrice; sub_8019E04(FALSE); sub_8014248(gCommonKecleonBros[sKecleonBrosWork1->mode][KECLEON_DLG_05], 0, 5,sKecleonBrosWork1->menuItems, NULL, 4, 0, sKecleonBrosWork1->unkE4, 12); break; @@ -394,7 +394,7 @@ static void UpdateKecleonStoreDialogue(void) case 30: sub_8019700(); sub_8090E14(gUnknown_202DE58, &sKecleonBrosWork1->soldItem, NULL); - gUnknown_202DE30 = sKecleonBrosWork1->itemSellPrice; + gFormatData_202DE30 = sKecleonBrosWork1->itemSellPrice; sub_8019E04(FALSE); sub_8014248(gCommonKecleonBros[sKecleonBrosWork1->mode][KECLEON_DLG_09], 0, 5, sKecleonBrosWork1->menuItems, NULL, 4, 0, sKecleonBrosWork1->unkE4, 12); break; @@ -415,7 +415,7 @@ static void UpdateKecleonStoreDialogue(void) break; case 31: sub_8019700(); - gUnknown_202DE30 = sKecleonBrosWork1->inventoryItemSellPrice; + gFormatData_202DE30 = sKecleonBrosWork1->inventoryItemSellPrice; sub_8019E04(FALSE); sub_8014248(gCommonKecleonBros[sKecleonBrosWork1->mode][KECLEON_DLG_10], 0, 5, sKecleonBrosWork1->menuItems, NULL, 4, 0, sKecleonBrosWork1->unkE4, 12); break; diff --git a/src/mission_reward.c b/src/mission_reward.c index 0694d0e59..4aea3b543 100644 --- a/src/mission_reward.c +++ b/src/mission_reward.c @@ -40,7 +40,7 @@ extern u8 gUnknown_202E628[]; extern u8 gUnknown_202DEA8[]; extern u8 gUnknown_202E5D8[]; extern u8 gAvailablePokemonNames[]; -extern u32 gUnknown_202DE30; +extern u32 gFormatData_202DE30; enum FriendRewardStates { @@ -222,7 +222,7 @@ void HandleMissionReward(void) SetRewardSceneState(PREP_FRIEND_AREA_REWARD); } else { - gUnknown_202DE30 = moneyReward; + gFormatData_202DE30 = moneyReward; if (gUnknown_203B310->displayClientDialogueSprite) { sub_80141B4(gUnknown_80E0434,0,&gUnknown_203B310->faceFile,0x10d); gUnknown_203B310->nextState = MONEY_REWARD; @@ -348,7 +348,7 @@ void HandleMissionReward(void) else { gUnknown_203B310->nextState = REWARD_EXIT; } - gUnknown_202DE30 = gUnknown_203B310->unk10->teamRankPtsReward; + gFormatData_202DE30 = gUnknown_203B310->unk10->teamRankPtsReward; sub_80141B4(gUnknown_80E0670,0,0,0x101); } break; diff --git a/src/moves.c b/src/moves.c index 1fe8ff857..fd1b7c8e6 100644 --- a/src/moves.c +++ b/src/moves.c @@ -15,7 +15,7 @@ static EWRAM_DATA MoveDataEntry *sMovesData = {0}; static EWRAM_DATA MoveLearnset *sMoveLearnsets = {0}; // 420 entries, aka (MONSTER_DEOXYS_SPEED + 1), aka (MONSTER_MUNCHLAX) // ??? -extern u32 gUnknown_202DE30; +extern u32 gFormatData_202DE30; extern u8 gAvailablePokemonNames[]; // 202DF98 // data_8107010.s @@ -1449,7 +1449,7 @@ static void unk_MovePrintData(Move *move, s32 y) text = GetUnformattedTypeString(type); xxx_format_and_draw(64, 86, text, y, 0); power = GetMoveBasePower(move); - gUnknown_202DE30 = power; + gFormatData_202DE30 = power; } static void CopyAndResetMove(Move *dest, Move *src) diff --git a/src/status.c b/src/status.c index c2e7b4a65..c6b904228 100644 --- a/src/status.c +++ b/src/status.c @@ -122,7 +122,7 @@ extern u8 *gUnknown_80FBBB8[]; extern u8 *gUnknown_80FBB94[]; extern s16 gUnknown_80F4EF4[]; -extern s32 gUnknown_202DE30[10]; +extern s32 gFormatData_202DE30[10]; extern void sub_8041D84(Entity *); extern void sub_804178C(u32); @@ -670,8 +670,8 @@ void HealTargetHP(Entity *pokemon, Entity *target, s32 param_3, s32 param_4, boo maxHPStat = entityInfo->maxHPStat - maxHPStat; HP = entityInfo->HP - HP; EntityUpdateStatusSprites(target); - gUnknown_202DE30[0] = HP; - gUnknown_202DE30[1] = maxHPStat; + gFormatData_202DE30[0] = HP; + gFormatData_202DE30[1] = maxHPStat; SetMessageArgument(gAvailablePokemonNames,target,0); if ((HP == 0) && (maxHPStat == 0)) { if (displayMessage_u8) @@ -1139,7 +1139,7 @@ void HandleStockpile(Entity * pokemon, Entity * target) entityInfo->stockpileStage++; sub_804178C(1); sub_8041D5C(target); - gUnknown_202DE30[0] = entityInfo->stockpileStage; + gFormatData_202DE30[0] = entityInfo->stockpileStage; sub_80522F4(pokemon,target,*gUnknown_80FBA38); } else { diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index 0313994ed..3dc7a654f 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -17,7 +17,7 @@ #include "text2.h" #include "trade_items_menu.h" -extern u32 gUnknown_202DE30; +extern u32 gFormatData_202DE30; extern u8 gUnknown_202DE58[]; static EWRAM_DATA_2 struct TradeItemsMenu *sTradeItemsMenu = {0}; @@ -529,7 +529,7 @@ void sub_8036B28(void) sub_8036F74(); break; case TRADE_ITEMS_SEND_ITEM_CONFIRM: - gUnknown_202DE30 = sTradeItemsMenu->unk14.unk0; + gFormatData_202DE30 = sTradeItemsMenu->unk14.unk0; BufferItemName(gUnknown_202DE58,sTradeItemsMenu->itemToSend.id,NULL); sub_8014248(sFmtWillBeSentPrompt,0,5, sUnknown_80E6154,0,4,0,0,0x101); break; @@ -588,17 +588,17 @@ void sub_8036B28(void) break; case 0xe: if (sTradeItemsMenu->unk24C.quantity == 0) { - gUnknown_202DE30 = sTradeItemsMenu->unk244.quantity; + gFormatData_202DE30 = sTradeItemsMenu->unk244.quantity; BufferItemName(gUnknown_202DE58,sTradeItemsMenu->unk244.itemIdx.id,NULL); } else { - gUnknown_202DE30 = sTradeItemsMenu->unk24C.quantity; + gFormatData_202DE30 = sTradeItemsMenu->unk24C.quantity; BufferItemName(gUnknown_202DE58,sTradeItemsMenu->unk24C.itemIdx.id,NULL); } sub_80141B4(sFmtYouReceived,0,0,0x101); break; case 0xd: - gUnknown_202DE30 = sTradeItemsMenu->unk14.unk0; + gFormatData_202DE30 = sTradeItemsMenu->unk14.unk0; BufferItemName(gUnknown_202DE58,sTradeItemsMenu->itemToSend.id,NULL); sub_80141B4(sFmtYouSent,0,0,0x101); break; diff --git a/src/wigglytuff_shop3.c b/src/wigglytuff_shop3.c index df947526a..b7bb150c0 100644 --- a/src/wigglytuff_shop3.c +++ b/src/wigglytuff_shop3.c @@ -18,7 +18,7 @@ #include "wigglytuff_shop2.h" #include "wigglytuff_shop3.h" -extern u32 gUnknown_202DE30[2]; +extern u32 gFormatData_202DE30[2]; extern u8 gAvailablePokemonNames[]; // 202DF98 extern u8 gUnknown_202E1C8[]; extern u8 gUnknown_202E5D8[]; @@ -234,7 +234,7 @@ static void UpdateWigglytuffDialogue(void) case BUY_FRIEND_AREA: CreateWigglytuffConfirmFriendAreaMenu(); sub_8092578(gUnknown_202E628, sWigglytuffShop3Work->chosenFriendArea, FALSE); - gUnknown_202DE30[0] = sWigglytuffShop3Work->friendAreaPrice; + gFormatData_202DE30[0] = sWigglytuffShop3Work->friendAreaPrice; sub_8014248(gCommonWigglytuff[sWigglytuffShop3Work->mode][WIGGLY_DLG_05], 0, 5, sWigglytuffShop3Work->unk1C, 0, 4, 0, sWigglytuffShop3Work->unkCC, 12); break; case FRIEND_AREA_INFO: diff --git a/sym_ewram.txt b/sym_ewram.txt index 28b50df8b..80a22002c 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -183,10 +183,10 @@ gUnknown_202DE19: /* 202DE19 (sub_800F990 - sub_8010014) */ .include "src/save.o" .align 4 -/* gUnknown_202DE30[0] seems to be the s32 value to insert in place of "$d0" (ARG_VALUE_0) in strings */ -/* gUnknown_202DE30[1] through gUnknown_202DE30[4] are for "$d1" (ARG_VALUE_1) through "$d4" (ARG_VALUE_4) */ +/* gFormatData_202DE30[0] seems to be the s32 value to insert in place of "$d0" (ARG_VALUE_0) in strings */ +/* gFormatData_202DE30[1] through gFormatData_202DE30[4] are for "$d1" (ARG_VALUE_1) through "$d4" (ARG_VALUE_4) */ /* No known occurences after those (in pmd red) */ -gUnknown_202DE30: /* 202DE30 [used everywhere tbh] */ +gFormatData_202DE30: /* 202DE30 [used everywhere tbh] */ .space 0x28 /* Seems to be a general u8 buffer for text, mostly used with item names */ gUnknown_202DE58: /* 202DE58 [used everywhere tbh] */ @@ -579,7 +579,7 @@ gUnknown_20399E8: /* 20399E8 (sub_809D0BC - sub_809D25C) */ .space 0x14 gUnknown_20399FC: /* 20399FC (sub_809D25C) */ .space 0x34 -gUnknown_2039A30: /* 2039A30 (sub_809D4B0 - ExecuteScriptCommand) */ +gCurrentMap: /* 2039A30 (sub_809D4B0 - ExecuteScriptCommand) */ .space 0x2 gUnknown_2039A32: /* 2039A32 (sub_809D4B0 - ExecuteScriptCommand) */ .space 0x2 From 6a420ad62d29812e5c4ef5eecb9abcfb943a2881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Na=C5=9Bciszewski?= Date: Mon, 22 Jul 2024 21:11:52 +0200 Subject: [PATCH 06/10] Holy shit! It's done! ExecuteScriptCommand matched --- asm/ground_script.s | 4804 --------------------------------------- include/code_80A26CC.h | 8 +- include/debug.h | 2 +- include/ground_script.h | 12 +- src/code_80A26CC.c | 2 +- src/debug.c | 2 +- src/ground_script_1.c | 1871 +++++++++++++++ 7 files changed, 1884 insertions(+), 4817 deletions(-) diff --git a/asm/ground_script.s b/asm/ground_script.s index 74e682181..8339688e4 100644 --- a/asm/ground_script.s +++ b/asm/ground_script.s @@ -5,4810 +5,6 @@ .text - thumb_func_start ExecuteScriptCommand -ExecuteScriptCommand: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1BC - mov r9, r0 - movs r0, 0x24 - add r0, r9 - mov r10, r0 -_0809EAE0: - mov r1, r10 - ldr r2, [r1, 0x4] - str r2, [r1, 0x1C] - add r1, sp, 0x8 - adds r0, r2, 0 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldr r0, [r0] - str r0, [r1] - adds r2, 0x10 - mov r0, r10 - str r2, [r0, 0x4] - add r0, sp, 0x8 - ldrb r0, [r0] - mov r1, r10 - adds r1, 0x20 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - adds r2, r1, 0 - cmp r0, 0xF5 - bhi _0809EAE0 - lsls r0, 2 - ldr r1, _0809EB18 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809EB18: .4byte _0809EB1C - .align 2, 0 -_0809EB1C: - .4byte _0809EEF4 - .4byte _0809EF40 - .4byte _0809EFA2 - .4byte _0809EFD6 - .4byte _0809F064 - .4byte _0809F02A - .4byte _0809F06C - .4byte _0809F0D0 - .4byte _0809F0D0 - .4byte _0809F1FC - .4byte _0809F2C8 - .4byte _0809F2D6 - .4byte _0809F2D6 - .4byte _0809F2D6 - .4byte _0809F2D6 - .4byte _0809F2D6 - .4byte _0809F2D6 - .4byte _0809F2D6 - .4byte _0809F2D6 - .4byte _0809F2D6 - .4byte _0809F2D6 - .4byte _0809F42A - .4byte _0809F432 - .4byte _0809F43A - .4byte _0809F442 - .4byte _0809F4FE - .4byte _0809F5BE - .4byte _0809F5AE - .4byte _0809F5C6 - .4byte _0809F5C6 - .4byte _0809F660 - .4byte _0809F6EA - .4byte _0809F786 - .4byte _0809F830 - .4byte _0809F842 - .4byte _0809F854 - .4byte _0809F872 - .4byte _0809F884 - .4byte _0809F896 - .4byte _0809F896 - .4byte _0809F8E8 - .4byte _0809F8F4 - .4byte _0809F900 - .4byte _0809F90C - .4byte _0809F93E - .4byte _0809FAF8 - .4byte _0809FB10 - .4byte _0809F92E - .4byte _0809F936 - .4byte _0809FB28 - .4byte _0809FB28 - .4byte _0809FB28 - .4byte _0809FB28 - .4byte _0809FB28 - .4byte _0809FB28 - .4byte _0809FB28 - .4byte _0809FBDA - .4byte _0809FC12 - .4byte _0809FC40 - .4byte _0809FC2E - .4byte _0809FC46 - .4byte _0809FCA4 - .4byte _0809FCC4 - .4byte _0809EAE0 - .4byte _080A0E3A - .4byte _0809FCE8 - .4byte _0809FCF0 - .4byte _0809FD0A - .4byte _0809FD38 - .4byte _0809FD6C - .4byte _0809FDA0 - .4byte _0809FDA8 - .4byte _0809FDC2 - .4byte _0809FDD4 - .4byte _0809FDE2 - .4byte _0809FDC2 - .4byte _0809FDD4 - .4byte _0809FDE2 - .4byte _0809FE04 - .4byte _0809FE28 - .4byte _0809FE86 - .4byte _0809FEBE - .4byte _0809FED0 - .4byte _0809FF00 - .4byte _0809FF32 - .4byte _0809FF46 - .4byte _0809FF62 - .4byte _0809FF78 - .4byte _0809FF9A - .4byte _0809FFBA - .4byte _0809FFE4 - .4byte _080A0010 - .4byte _080A0064 - .4byte _080A0096 - .4byte _080A010E - .4byte _080A0186 - .4byte _080A0198 - .4byte _080A01B8 - .4byte _080A01F0 - .4byte _080A0220 - .4byte _080A0250 - .4byte _080A0282 - .4byte _080A0282 - .4byte _080A0560 - .4byte _080A0198 - .4byte _080A01B8 - .4byte _080A01F0 - .4byte _080A0220 - .4byte _080A0250 - .4byte _080A0282 - .4byte _080A0282 - .4byte _080A0560 - .4byte _080A02B2 - .4byte _080A0310 - .4byte _080A0370 - .4byte _080A03F8 - .4byte _080A0462 - .4byte _080A04F2 - .4byte _080A02B2 - .4byte _080A0310 - .4byte _080A0370 - .4byte _080A03F8 - .4byte _080A0462 - .4byte _080A04F2 - .4byte _080A02B2 - .4byte _080A0310 - .4byte _080A0370 - .4byte _080A03F8 - .4byte _080A0462 - .4byte _080A04F2 - .4byte _080A02B2 - .4byte _080A0310 - .4byte _080A0370 - .4byte _080A03F8 - .4byte _080A0462 - .4byte _080A04F2 - .4byte _080A057C - .4byte _080A05A4 - .4byte _080A05F0 - .4byte _080A060E - .4byte _080A065C - .4byte _080A068A - .4byte _080A068A - .4byte _080A068A - .4byte _080A07CA - .4byte _080A07DC - .4byte _080A07C4 - .4byte _080A07C4 - .4byte _080A07C4 - .4byte _0809EAE0 - .4byte _080A080C - .4byte _080A081E - .4byte _080A086A - .4byte _080A08BE - .4byte _080A08CA - .4byte _080A091E - .4byte _080A0986 - .4byte _080A0998 - .4byte _080A09EA - .4byte _080A0A52 - .4byte _080A0A64 - .4byte _080A0AB6 - .4byte _080A0B1E - .4byte _080A0B30 - .4byte _080A0B42 - .4byte _080A0B54 - .4byte _080A0B6C - .4byte _080A0B88 - .4byte _080A0BA2 - .4byte _080A0BB4 - .4byte _080A0BDA - .4byte _080A0BF6 - .4byte _080A0C08 - .4byte _080A0C20 - .4byte _080A0C38 - .4byte _080A0C50 - .4byte _080A0C68 - .4byte _080A0C80 - .4byte _080A0C90 - .4byte _080A0CA2 - .4byte _080A0CC8 - .4byte _080A0CF2 - .4byte _080A0D16 - .4byte _080A0D40 - .4byte _080A0D6A - .4byte _080A0D7A - .4byte _080A0D94 - .4byte _080A0DAE - .4byte _080A0DD6 - .4byte _080A0E08 - .4byte _080A0DE2 - .4byte _080A0E56 - .4byte _080A0E56 - .4byte _080A0E56 - .4byte _080A0E56 - .4byte _080A0E56 - .4byte _080A0E56 - .4byte _080A0E56 - .4byte _080A0E56 - .4byte _080A0E56 - .4byte _080A0E56 - .4byte _080A0E56 - .4byte _080A0E56 - .4byte _0809EAE0 - .4byte _0809EAE0 - .4byte _0809EAE0 - .4byte _080A10A0 - .4byte _0809EAE0 - .4byte _0809EAE0 - .4byte _080A10F8 - .4byte _080A10F8 - .4byte _080A10F8 - .4byte _080A10F8 - .4byte _080A10F8 - .4byte _080A10F8 - .4byte _080A10F8 - .4byte _0809EAE0 - .4byte _080A129E - .4byte _080A12A8 - .4byte _080A12B4 - .4byte _0809F0C4 - .4byte _0809F0C4 - .4byte _0809F0C4 - .4byte _0809F0C4 - .4byte _0809F0C4 - .4byte _0809F0C4 - .4byte _080A12D0 - .4byte _080A12E6 - .4byte _080A12F4 - .4byte _080A1318 - .4byte _080A1324 - .4byte _080A1338 - .4byte _080A1344 - .4byte _080A1368 - .4byte _080A1374 - .4byte _080A13CA - .4byte _080A13F8 - .4byte _080A1404 - .4byte _080A140C - .4byte _080A1428 - .4byte _080A142C - .4byte _0809EAE0 - .4byte _0809EAE0 - .4byte _0809EAE0 - .4byte _0809EAE0 - .4byte _0809EAE0 -_0809EEF4: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r4, r0, 16 - adds r6, r4, 0 - add r0, sp, 0x8 - ldrb r5, [r0, 0x1] - movs r0, 0x1 - bl ScriptLoggingEnabled - lsls r0, 24 - cmp r0, 0 - beq _0809EF26 - ldr r1, _0809EF38 - ldr r2, _0809EF3C - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r2, 0x8 - adds r0, r2 - ldr r3, [r0] - str r5, [sp] - movs r0, 0x1 - adds r2, r4, 0 - bl Log -_0809EF26: - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r2, [r0, r1] - adds r0, r6, 0 - adds r1, r5, 0 - bl GroundMainGroundRequest - b _0809EAE0 - .align 2, 0 -_0809EF38: .4byte gUnknown_81165D4 -_0809EF3C: .4byte gGroundConversion_811BAF4 -_0809EF40: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r4, r0, 16 - movs r5, 0x1 - negs r5, r5 - cmp r4, r5 - bne _0809EF5A - movs r0, 0 - movs r1, 0x13 - bl sub_8001658 - lsls r0, 16 - asrs r4, r0, 16 -_0809EF5A: - movs r0, 0x1 - bl ScriptLoggingEnabled - lsls r0, 24 - cmp r0, 0 - beq _0809EF70 - ldr r1, _0809EF90 - movs r0, 0x1 - adds r2, r4, 0 - bl Log -_0809EF70: - cmp r4, r5 - beq _0809EF94 - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r0, r2] - adds r0, r4, 0 - bl GroundMainRescueRequest - mov r0, r9 - movs r1, 0x1 - bl sub_80A2460 - mov r3, r9 - str r0, [r3, 0x28] - b _0809EAE0 - .align 2, 0 -_0809EF90: .4byte gUnknown_81165F4 -_0809EF94: - mov r0, r9 - movs r1, 0 - bl sub_80A2460 - mov r4, r9 - str r0, [r4, 0x28] - b _0809EAE0 -_0809EFA2: - ldr r0, [sp, 0xC] - bl sub_8021700 - lsls r0, 24 - cmp r0, 0 - beq _0809EFBE - movs r1, 0x1 - negs r1, r1 - mov r0, r9 - bl sub_80A2460 - mov r5, r9 - str r0, [r5, 0x28] - b _0809EAE0 -_0809EFBE: - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - bl sub_8098D80 - mov r0, r9 - movs r1, 0 - bl sub_80A2460 - mov r2, r9 - str r0, [r2, 0x28] - b _0809EAE0 -_0809EFD6: - ldr r1, [sp, 0xC] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0809F00C - bl sub_802FCF0 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0809F0BC - movs r0, 0xC - movs r1, 0 - movs r2, 0 - bl sub_809B1C0 - lsls r0, 24 - cmp r0, 0 - beq _0809F0BC - movs r0, 0 - movs r1, 0xB - bl sub_80A87AC - mov r0, r9 - adds r0, 0x4C - strh r4, [r0] - b _0809F0C4 -_0809F00C: - lsls r0, r1, 16 - asrs r0, 16 - bl sub_80A26B8 - adds r2, r0, 0 - lsls r2, 16 - asrs r2, 16 - movs r0, 0 - movs r1, 0x12 - bl sub_80018D8 - mov r1, r9 - adds r1, 0x4C - movs r0, 0x1 - b _0809F0C2 -_0809F02A: - ldr r2, [sp, 0xC] - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - bne _0809F054 - movs r0, 0x24 - movs r1, 0 - movs r2, 0 - bl sub_809B1C0 - lsls r0, 24 - cmp r0, 0 - beq _0809F0BC - movs r0, 0 - movs r1, 0xB - bl sub_80A87AC - mov r1, r9 - adds r1, 0x4C - movs r0, 0 - b _0809F0C2 -_0809F054: - movs r0, 0 - movs r1, 0x13 - bl sub_80018D8 - mov r1, r9 - adds r1, 0x4C - movs r0, 0x1 - b _0809F0C2 -_0809F064: - mov r1, r9 - adds r1, 0x4C - movs r0, 0x1 - b _0809F0C2 -_0809F06C: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r4, r0, 16 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _0809F088 - movs r0, 0 - movs r1, 0x13 - bl sub_8001658 - lsls r0, 16 - asrs r4, r0, 16 - b _0809F092 -_0809F088: - movs r0, 0 - movs r1, 0x13 - adds r2, r4, 0 - bl sub_80018D8 -_0809F092: - movs r0, 0x1 - bl ScriptLoggingEnabled - lsls r0, 24 - cmp r0, 0 - beq _0809F0A8 - ldr r1, _0809F0B8 - movs r0, 0x1 - adds r2, r4, 0 - bl Log -_0809F0A8: - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _0809F0BC - mov r1, r9 - adds r1, 0x4C - movs r0, 0x1 - b _0809F0C2 - .align 2, 0 -_0809F0B8: .4byte gUnknown_811660C -_0809F0BC: - mov r1, r9 - adds r1, 0x4C - ldr r0, _0809F0CC -_0809F0C2: - strh r0, [r1] -_0809F0C4: - movs r0, 0x2 - bl _080A142E - .align 2, 0 -_0809F0CC: .4byte 0x0000ffff -_0809F0D0: - add r0, sp, 0x8 - ldrb r0, [r0] - cmp r0, 0x8 - bne _0809F130 - ldr r5, _0809F11C - ldr r0, [sp, 0xC] - strh r0, [r5] - lsls r0, 16 - asrs r0, 16 - bl sub_80A4D7C - ldr r4, _0809F120 - strh r0, [r4] - ldr r1, _0809F124 - strh r0, [r1] - movs r0, 0x1 - bl ScriptLoggingEnabled - lsls r0, 24 - cmp r0, 0 - beq _0809F16A - ldr r1, _0809F128 - movs r3, 0 - ldrsh r2, [r5, r3] - movs r5, 0 - ldrsh r3, [r4, r5] - ldr r4, _0809F12C - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r4, 0x8 - adds r0, r4 - ldr r0, [r0] - str r0, [sp] - movs r0, 0x1 - bl Log - b _0809F16A - .align 2, 0 -_0809F11C: .4byte gCurrentMap -_0809F120: .4byte gUnknown_2039A32 -_0809F124: .4byte gUnknown_2039A34 -_0809F128: .4byte gUnknown_8116628 -_0809F12C: .4byte gGroundConversion_811BAF4 -_0809F130: - ldr r5, _0809F1E8 - ldr r4, _0809F1EC - ldr r1, [sp, 0xC] - strh r1, [r4] - strh r1, [r5] - ldr r0, _0809F1F0 - strh r1, [r0] - movs r0, 0x1 - bl ScriptLoggingEnabled - lsls r0, 24 - cmp r0, 0 - beq _0809F16A - ldr r1, _0809F1F4 - movs r0, 0 - ldrsh r2, [r4, r0] - movs r4, 0 - ldrsh r3, [r5, r4] - ldr r4, _0809F1F8 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r4, 0x8 - adds r0, r4 - ldr r0, [r0] - str r0, [sp] - movs r0, 0x1 - bl Log -_0809F16A: - ldr r5, _0809F1EC - movs r0, 0 - ldrsh r2, [r5, r0] - movs r0, 0 - movs r1, 0x10 - bl sub_80018D8 - ldr r6, _0809F1F8 - movs r2, 0 - ldrsh r1, [r5, r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r3, 0x2 - ldrsh r2, [r0, r3] - movs r0, 0 - movs r1, 0x11 - bl sub_80018D8 - ldr r4, _0809F1E8 - movs r1, 0 - ldrsh r0, [r4, r1] - bl GroundSprite_Reset - bl sub_809D0BC - bl DeleteBlankGroundEvents - bl DeleteBlankGroundLives - bl DeleteBlankGroundObjects - bl DeleteBlankGroundEffects - movs r2, 0 - ldrsh r0, [r5, r2] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - movs r3, 0x2 - ldrsh r1, [r1, r3] - bl sub_809C770 - movs r5, 0 - ldrsh r0, [r4, r5] - bl GroundMap_Select - movs r1, 0 - ldrsh r0, [r4, r1] - bl GroundLink_Select - movs r2, 0 - ldrsh r0, [r4, r2] - movs r1, 0 - movs r2, 0 - bl GroundLives_Select - movs r3, 0 - ldrsh r0, [r4, r3] - b _0809F2A0 - .align 2, 0 -_0809F1E8: .4byte gUnknown_2039A32 -_0809F1EC: .4byte gCurrentMap -_0809F1F0: .4byte gUnknown_2039A34 -_0809F1F4: .4byte gUnknown_8116644 -_0809F1F8: .4byte gGroundConversion_811BAF4 -_0809F1FC: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A2608 - adds r6, r0, 0 - ldr r1, _0809F2AC - ldr r5, _0809F2B0 - ldr r4, _0809F2B4 - ldr r0, [sp, 0x10] - strh r0, [r4] - strh r0, [r5] - strh r0, [r1] - movs r0, 0x1 - bl ScriptLoggingEnabled - lsls r0, 24 - cmp r0, 0 - beq _0809F242 - ldr r1, _0809F2B8 - movs r0, 0 - ldrsh r2, [r4, r0] - movs r4, 0 - ldrsh r3, [r5, r4] - ldr r4, _0809F2BC - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r4, 0x8 - adds r0, r4 - ldr r0, [r0] - str r0, [sp] - movs r0, 0x1 - bl Log -_0809F242: - movs r1, 0 - ldrsh r0, [r5, r1] - bl GroundSprite_Reset - bl sub_809D0BC - bl DeleteBlankGroundEvents - bl DeleteBlankGroundLives - bl DeleteBlankGroundObjects - bl DeleteBlankGroundEffects - ldrb r2, [r6, 0xC] - ldr r1, _0809F2C0 - ldr r0, [sp, 0x58] - ands r0, r1 - orrs r0, r2 - str r0, [sp, 0x58] - add r1, sp, 0x8 - ldrh r2, [r1, 0x2] - lsls r2, 24 - lsrs r2, 16 - ldr r1, _0809F2C4 - ands r0, r1 - orrs r0, r2 - str r0, [sp, 0x58] - movs r2, 0 - ldrsh r0, [r5, r2] - add r1, sp, 0x58 - add r2, sp, 0x8 - ldrb r2, [r2, 0x1] - bl GroundMap_SelectDungeon - movs r3, 0 - ldrsh r0, [r5, r3] - bl GroundLink_Select - movs r4, 0 - ldrsh r0, [r5, r4] - movs r1, 0 - movs r2, 0 - bl GroundLives_Select - movs r1, 0 - ldrsh r0, [r5, r1] -_0809F2A0: - movs r1, 0 - movs r2, 0 - bl GroundObject_Select - b _0809EAE0 - .align 2, 0 -_0809F2AC: .4byte gUnknown_2039A34 -_0809F2B0: .4byte gUnknown_2039A32 -_0809F2B4: .4byte gCurrentMap -_0809F2B8: .4byte gUnknown_8116664 -_0809F2BC: .4byte gGroundConversion_811BAF4 -_0809F2C0: .4byte 0xffffff00 -_0809F2C4: .4byte 0xffff00ff -_0809F2C8: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl GroundWeather_Select - bl _0809EAE0 -_0809F2D6: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - blt _0809F2E8 - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r0, [r0, r2] - b _0809F2EE -_0809F2E8: - mov r3, r10 - movs r4, 0xC - ldrsh r0, [r3, r4] -_0809F2EE: - adds r6, r0, 0 - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - lsls r0, 24 - cmp r0, 0 - blt _0809F302 - add r0, sp, 0x8 - movs r1, 0x1 - ldrsb r1, [r0, r1] - b _0809F308 -_0809F302: - mov r5, r10 - movs r1, 0xE - ldrsb r1, [r5, r1] -_0809F308: - adds r5, r1, 0 - add r0, sp, 0x8 - ldrb r0, [r0] - subs r0, 0xC - cmp r0, 0x9 - bls _0809F318 - bl _0809EAE0 -_0809F318: - lsls r0, 2 - ldr r1, _0809F324 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809F324: .4byte _0809F328 - .align 2, 0 -_0809F328: - .4byte _0809F350 - .4byte _0809F380 - .4byte _0809F398 - .4byte _0809F3B0 - .4byte _0809F3C8 - .4byte _0809F3E0 - .4byte _0809F3FA - .4byte _0809F406 - .4byte _0809F412 - .4byte _0809F41E -_0809F350: - ldr r4, _0809F37C - movs r1, 0 - ldrsh r0, [r4, r1] - adds r1, r6, 0 - adds r2, r5, 0 - bl GroundLives_Select - movs r2, 0 - ldrsh r0, [r4, r2] - adds r1, r6, 0 - adds r2, r5, 0 - bl GroundObject_Select - movs r3, 0 - ldrsh r0, [r4, r3] - adds r1, r6, 0 - adds r2, r5, 0 - bl GroundEffect_Select - movs r1, 0 - ldrsh r0, [r4, r1] - b _0809F3CE - .align 2, 0 -_0809F37C: .4byte gUnknown_2039A32 -_0809F380: - ldr r0, _0809F394 - movs r2, 0 - ldrsh r0, [r0, r2] - adds r1, r6, 0 - adds r2, r5, 0 - bl GroundLives_Select - bl _0809EAE0 - .align 2, 0 -_0809F394: .4byte gUnknown_2039A32 -_0809F398: - ldr r0, _0809F3AC - movs r3, 0 - ldrsh r0, [r0, r3] - adds r1, r6, 0 - adds r2, r5, 0 - bl GroundObject_Select - bl _0809EAE0 - .align 2, 0 -_0809F3AC: .4byte gUnknown_2039A32 -_0809F3B0: - ldr r0, _0809F3C4 - movs r4, 0 - ldrsh r0, [r0, r4] - adds r1, r6, 0 - adds r2, r5, 0 - bl GroundEffect_Select - bl _0809EAE0 - .align 2, 0 -_0809F3C4: .4byte gUnknown_2039A32 -_0809F3C8: - ldr r0, _0809F3DC - movs r1, 0 - ldrsh r0, [r0, r1] -_0809F3CE: - adds r1, r6, 0 - adds r2, r5, 0 - bl GroundEvent_Select - bl _0809EAE0 - .align 2, 0 -_0809F3DC: .4byte gUnknown_2039A32 -_0809F3E0: - adds r0, r6, 0 - adds r1, r5, 0 - bl GroundLives_Cancel - adds r0, r6, 0 - adds r1, r5, 0 - bl GroundObject_Cancel - adds r0, r6, 0 - adds r1, r5, 0 - bl GroundEffect_Cancel - b _0809F41E -_0809F3FA: - adds r0, r6, 0 - adds r1, r5, 0 - bl GroundLives_Cancel - bl _0809EAE0 -_0809F406: - adds r0, r6, 0 - adds r1, r5, 0 - bl GroundObject_Cancel - bl _0809EAE0 -_0809F412: - adds r0, r6, 0 - adds r1, r5, 0 - bl GroundEffect_Cancel - bl _0809EAE0 -_0809F41E: - adds r0, r6, 0 - adds r1, r5, 0 - bl GroundEvent_Cancel - bl _0809EAE0 -_0809F42A: - bl GroundLives_CancelBlank_1 - bl _0809EAE0 -_0809F432: - bl GroundObject_CancelBlank - bl _0809EAE0 -_0809F43A: - bl GroundEffect_CancelBlank - bl _0809EAE0 -_0809F442: - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - add r4, sp, 0x18 - ldr r2, [r1, 0x14] - adds r1, r4, 0 - bl _call_via_r2 - add r6, sp, 0x1C - ldr r0, [sp, 0x10] - add r5, sp, 0x34 - movs r2, 0 - strb r0, [r5] - ldrb r1, [r4] - mov r0, sp - adds r0, 0x35 - strb r1, [r0] - adds r0, 0x1 - movs r1, 0x1 - strb r1, [r0] - adds r0, 0x1 - strb r1, [r0] - str r2, [sp, 0x38] - add r4, sp, 0x3C - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - bl memset - ldr r2, _0809F4AC - ldr r1, [sp, 0xC] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, 0x8 - adds r0, r2 - ldr r0, [r0] - str r0, [r4, 0xC] - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x18 - bl memcpy - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 16 - adds r1, r6, 0 - cmp r0, 0 - blt _0809F4B0 - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r2, [r0, r3] - b _0809F4B6 - .align 2, 0 -_0809F4AC: .4byte gFunctionScriptTable -_0809F4B0: - mov r4, r10 - movs r5, 0xC - ldrsh r2, [r4, r5] -_0809F4B6: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - lsls r0, 24 - cmp r0, 0 - blt _0809F4C8 - add r0, sp, 0x8 - movs r3, 0x1 - ldrsb r3, [r0, r3] - b _0809F4CE -_0809F4C8: - mov r0, r10 - movs r3, 0xE - ldrsb r3, [r0, r3] -_0809F4CE: - movs r0, 0x1 - negs r0, r0 - bl GroundObject_Add - lsls r0, 16 - asrs r5, r0, 16 - cmp r5, 0 - bge _0809F4E2 - bl _0809EAE0 -_0809F4E2: - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - add r4, sp, 0x5C - ldr r2, [r1, 0xC] - adds r1, r4, 0 - bl _call_via_r2 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80AC49C - bl _0809EAE0 -_0809F4FE: - mov r3, r9 - ldr r1, [r3] - ldr r0, [r3, 0x4] - add r4, sp, 0x4C - ldr r2, [r1, 0x14] - adds r1, r4, 0 - bl _call_via_r2 - add r5, sp, 0x1C - ldr r0, [sp, 0x10] - add r1, sp, 0x28 - movs r3, 0 - strb r0, [r1] - ldrb r2, [r4] - mov r0, sp - adds r0, 0x29 - strb r2, [r0] - adds r0, 0x1 - movs r2, 0x1 - strb r2, [r0] - adds r0, 0x1 - strb r2, [r0] - str r3, [sp, 0x2C] - ldr r3, _0809F55C - ldr r2, [sp, 0xC] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r3, 0x8 - adds r0, r3 - ldr r0, [r0] - str r0, [sp, 0x30] - adds r0, r5, 0 - movs r2, 0xC - bl memcpy - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 16 - adds r1, r5, 0 - cmp r0, 0 - blt _0809F560 - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r2, [r0, r4] - b _0809F566 - .align 2, 0 -_0809F55C: .4byte gFunctionScriptTable -_0809F560: - mov r5, r10 - movs r0, 0xC - ldrsh r2, [r5, r0] -_0809F566: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - lsls r0, 24 - cmp r0, 0 - blt _0809F578 - add r0, sp, 0x8 - movs r3, 0x1 - ldrsb r3, [r0, r3] - b _0809F57E -_0809F578: - mov r4, r10 - movs r3, 0xE - ldrsb r3, [r4, r3] -_0809F57E: - movs r0, 0x1 - negs r0, r0 - bl GroundEffect_Add - lsls r0, 16 - asrs r5, r0, 16 - cmp r5, 0 - bge _0809F592 - bl _0809EAE0 -_0809F592: - mov r0, r9 - ldr r1, [r0] - ldr r0, [r0, 0x4] - add r4, sp, 0x64 - ldr r2, [r1, 0xC] - adds r1, r4, 0 - bl _call_via_r2 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80AD3B4 - bl _0809EAE0 -_0809F5AE: - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - movs r1, 0x1 - bl GroundMap_ExecuteEvent - bl _0809EAE0 -_0809F5BE: - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r0, [r0, r2] - b _0809F712 -_0809F5C6: - ldr r1, [sp, 0xC] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809F5D6 - lsls r0, r1, 16 - asrs r0, 16 - b _0809F5DC -_0809F5D6: - ldr r0, _0809F5F0 - movs r3, 0 - ldrsh r0, [r0, r3] -_0809F5DC: - adds r4, r0, 0 - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - blt _0809F5F4 - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r1, [r0, r5] - b _0809F5FA - .align 2, 0 -_0809F5F0: .4byte gCurrentMap -_0809F5F4: - mov r0, r10 - movs r2, 0xC - ldrsh r1, [r0, r2] -_0809F5FA: - adds r6, r1, 0 - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - lsls r0, 24 - cmp r0, 0 - blt _0809F60E - add r0, sp, 0x8 - movs r5, 0x1 - ldrsb r5, [r0, r5] - b _0809F614 -_0809F60E: - mov r3, r10 - movs r5, 0xE - ldrsb r5, [r3, r5] -_0809F614: - adds r0, r4, 0 - bl sub_80A4D7C - lsls r0, 16 - asrs r4, r0, 16 - movs r3, 0 - add r0, sp, 0x8 - ldrb r0, [r0] - cmp r0, 0x1E - bne _0809F62A - movs r3, 0x1 -_0809F62A: - adds r0, r4, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl GroundMap_ExecuteStation - ldr r1, _0809F65C - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, r4 - bne _0809F642 - bl _0809EAE0 -_0809F642: - strh r4, [r1] - bl sub_809D940 - mov r1, r9 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0809F656 - bl _0809EAE0 -_0809F656: - bl _080A142C - .align 2, 0 -_0809F65C: .4byte gUnknown_2039A34 -_0809F660: - movs r0, 0 - movs r1, 0x13 - bl sub_8001658 - lsls r0, 16 - asrs r4, r0, 16 - adds r0, r4, 0 - bl sub_80A2608 - adds r5, r0, 0 - lsls r2, r4, 16 - lsrs r2, 16 - movs r0, 0 - movs r1, 0x30 - bl sub_8001784 - cmp r0, 0 - bne _0809F68A - movs r3, 0x6 - ldrsh r5, [r5, r3] - b _0809F68E -_0809F68A: - movs r0, 0x8 - ldrsh r5, [r5, r0] -_0809F68E: - adds r0, r4, 0 - subs r0, 0x37 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x10 - bls _0809F6DC - adds r0, r4, 0 - bl sub_80A2750 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _0809F6DC - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - bne _0809F6D8 - movs r0, 0x1 - bl ScriptLoggingEnabled - lsls r0, 24 - cmp r0, 0 - beq _0809F6C6 - ldr r1, _0809F6D4 - movs r0, 0x1 - adds r2, r4, 0 - bl Log -_0809F6C6: - adds r0, r4, 0 - adds r1, r5, 0 - bl GroundMainRescueRequest - bl _0809EAE0 - .align 2, 0 -_0809F6D4: .4byte gUnknown_8116684 -_0809F6D8: - adds r0, r5, 0 - b _0809F712 -_0809F6DC: - movs r1, 0x1 - negs r1, r1 - adds r0, r4, 0 - bl GroundMainRescueRequest - bl _0809EAE0 -_0809F6EA: - mov r1, r9 - movs r2, 0xC - ldrsh r0, [r1, r2] - cmp r0, 0x1 - beq _0809F71C - cmp r0, 0x1 - bgt _0809F700 - cmp r0, 0 - beq _0809F70C - bl _0809EAE0 -_0809F700: - cmp r0, 0x2 - beq _0809F73E - cmp r0, 0x3 - beq _0809F762 - bl _0809EAE0 -_0809F70C: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] -_0809F712: - movs r1, 0 - bl GroundMap_ExecuteEvent - bl _0809EAE0 -_0809F71C: - add r4, sp, 0x1C - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r2, [r0, r5] - mov r0, r9 - adds r1, r4, 0 - bl sub_809D710 - mov r1, r9 - movs r2, 0xE - ldrsh r0, [r1, r2] - adds r1, 0x8 - adds r2, r4, 0 - bl GroundLives_ExecuteScript - bl _0809EAE0 -_0809F73E: - add r4, sp, 0x28 - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r2, [r0, r3] - mov r0, r9 - adds r1, r4, 0 - bl sub_809D710 - mov r5, r9 - movs r1, 0xE - ldrsh r0, [r5, r1] - mov r1, r9 - adds r1, 0x8 - adds r2, r4, 0 - bl GroundObject_ExecuteScript - bl _0809EAE0 -_0809F762: - add r4, sp, 0x34 - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r2, [r0, r3] - mov r0, r9 - adds r1, r4, 0 - bl sub_809D710 - mov r5, r9 - movs r1, 0xE - ldrsh r0, [r5, r1] - mov r1, r9 - adds r1, 0x8 - adds r2, r4, 0 - bl GroundEffect_ExecuteScript - bl _0809EAE0 -_0809F786: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - asrs r0, 16 - mov r8, r0 - cmp r0, 0 - bge _0809F79E - bl _0809EAE0 -_0809F79E: - add r1, sp, 0x6C - bl sub_80A8BD8 - ldr r0, [sp, 0x6C] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _0809F818 - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - add r7, sp, 0x70 - ldr r2, [r1, 0xC] - adds r1, r7, 0 - bl _call_via_r2 - mov r3, r9 - ldr r1, [r3] - ldr r0, [r3, 0x4] - add r5, sp, 0x78 - ldr r2, [r1, 0x8] - adds r1, r5, 0 - bl _call_via_r2 - add r6, sp, 0x80 - mov r0, r8 - adds r1, r6, 0 - bl sub_80A8FD8 - add r4, sp, 0x88 - mov r0, r8 - adds r1, r4, 0 - bl sub_80A8F9C - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r7, 0 - adds r3, r5, 0 - bl sub_8002DF0 - lsls r0, 24 - asrs r1, r0, 24 - adds r4, r1, 0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0809F812 - ldr r3, _0809F82C - adds r0, r7, 0 - adds r1, r3, 0 - adds r2, r6, 0 - bl sub_8002D54 - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, r4 - beq _0809F818 -_0809F812: - mov r0, r8 - bl sub_80A9090 -_0809F818: - mov r4, r9 - movs r5, 0xA - ldrsh r0, [r4, r5] - mov r1, r8 - bl GroundLives_ExecutePlayerScriptActionLives - movs r0, 0x3 - bl _080A142E - .align 2, 0 -_0809F82C: .4byte gUnknown_81164DC -_0809F830: - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - bl sub_80999E8 - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - bl _080A130C -_0809F842: - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r0, [r0, r2] - bl sub_80999FC - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - bl _080A130C -_0809F854: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - ldr r1, [sp, 0xC] - lsls r1, 16 - lsrs r1, 16 - ldr r2, [sp, 0x10] - lsls r2, 16 - lsrs r2, 16 - bl sub_8099A10 - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - bl _080A130C -_0809F872: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r0, [r0, r4] - bl sub_8099A34 - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - bl _080A130C -_0809F884: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r0, [r0, r5] - bl sub_8099A48 - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - bl _080A130C -_0809F896: - ldr r0, [sp, 0x10] - asrs r0, 16 - add r1, sp, 0x20 - movs r2, 0 - strb r0, [r1] - ldr r0, [sp, 0x10] - asrs r0, 8 - adds r1, 0x1 - strb r0, [r1] - ldr r1, [sp, 0x10] - mov r0, sp - adds r0, 0x22 - strb r1, [r0] - adds r0, 0x1 - strb r2, [r0] - ldr r2, [sp, 0x20] - str r2, [sp, 0x1C] - add r0, sp, 0x8 - ldrb r0, [r0] - cmp r0, 0x27 - beq _0809F8C6 - cmp r0, 0x28 - beq _0809F8D4 - b _0809F8E0 -_0809F8C6: - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - ldr r1, [sp, 0xC] - bl sub_8099A5C - b _0809F8E0 -_0809F8D4: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - ldr r1, [sp, 0xC] - bl sub_8099AFC -_0809F8E0: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - bl _080A130C -_0809F8E8: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - bl sub_809A6E4 - bl _0809EAE0 -_0809F8F4: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - bl sub_809A6F8 - bl _0809EAE0 -_0809F900: - ldr r0, [sp, 0xC] - ldr r1, [sp, 0x10] - bl sub_809A738 - bl _0809EAE0 -_0809F90C: - bl sub_809A768 - lsls r0, 24 - cmp r0, 0 - bne _0809F91A - bl _0809EAE0 -_0809F91A: - movs r0, 0 - movs r1, 0xA - bl sub_80A87AC - mov r0, r9 - movs r1, 0 - bl sub_809D8EC - bl _080A130A -_0809F92E: - bl ScriptPrintNullTextbox - bl _0809EAE0 -_0809F936: - bl ScriptPrintEmptyTextbox - bl _0809EAE0 -_0809F93E: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - cmp r0, 0xA - bls _0809F94A - bl _0809EAE0 -_0809F94A: - lsls r0, 2 - ldr r1, _0809F954 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809F954: .4byte _0809F958 - .align 2, 0 -_0809F958: - .4byte _0809F984 - .4byte _0809F992 - .4byte _0809F9A4 - .4byte _0809F9B6 - .4byte _0809F9D8 - .4byte _0809F9EA - .4byte _0809F9FC - .4byte _0809FA44 - .4byte _0809FA56 - .4byte _0809FA68 - .4byte _0809FAB0 -_0809F984: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r0, [r0, r4] - bl sub_809A83C - bl _0809EAE0 -_0809F992: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r0, [r0, r5] - mov r1, r9 - adds r1, 0x8 - bl sub_80A2500 - bl _0809EAE0 -_0809F9A4: - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - mov r1, r9 - adds r1, 0xC - bl sub_80A2500 - bl _0809EAE0 -_0809F9B6: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - add r1, sp, 0x90 - lsls r0, 16 - movs r2, 0x1 - orrs r0, r2 - str r0, [r1] - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r0, [r0, r2] - bl sub_80A2500 - bl _0809EAE0 -_0809F9D8: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - mov r1, r9 - adds r1, 0x8 - bl sub_80A252C - bl _0809EAE0 -_0809F9EA: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r0, [r0, r4] - mov r1, r9 - adds r1, 0xC - bl sub_80A252C - bl _0809EAE0 -_0809F9FC: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - add r1, sp, 0x94 - ldrh r2, [r1] - orrs r2, r0 - str r2, [r1] - cmp r2, 0 - blt _0809FA30 - ldr r0, _0809FA2C - ands r2, r0 - movs r0, 0x1 - orrs r2, r0 - str r2, [r1] - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r0, [r0, r5] - bl sub_80A252C - bl _0809EAE0 - .align 2, 0 -_0809FA2C: .4byte 0xffff0000 -_0809FA30: - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - ldr r1, [sp, 0xC] - lsls r1, 16 - asrs r1, 16 - bl sub_80A2584 - bl _0809EAE0 -_0809FA44: - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r0, [r0, r2] - mov r1, r9 - adds r1, 0x8 - bl sub_80A2558 - bl _0809EAE0 -_0809FA56: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - mov r1, r9 - adds r1, 0xC - bl sub_80A2558 - bl _0809EAE0 -_0809FA68: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - add r1, sp, 0x98 - ldrh r2, [r1] - orrs r2, r0 - str r2, [r1] - cmp r2, 0 - blt _0809FA9C - ldr r0, _0809FA98 - ands r2, r0 - movs r0, 0x1 - orrs r2, r0 - str r2, [r1] - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r0, [r0, r4] - bl sub_80A2558 - bl _0809EAE0 - .align 2, 0 -_0809FA98: .4byte 0xffff0000 -_0809FA9C: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r0, [r0, r5] - ldr r1, [sp, 0xC] - lsls r1, 16 - asrs r1, 16 - bl sub_80A2598 - bl _0809EAE0 -_0809FAB0: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A2740 - lsls r0, 24 - lsrs r1, r0, 24 - movs r4, 0 - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - beq _0809FAD0 - cmp r0, 0x2 - beq _0809FAD4 - b _0809FAD8 -_0809FAD0: - movs r4, 0x1 - b _0809FAD8 -_0809FAD4: - movs r4, 0x1 - negs r4, r4 -_0809FAD8: - adds r0, r1, 0 - bl GetDungeonFloorCount - ldr r2, _0809FAF4 - add r1, sp, 0x8 - movs r3, 0x2 - ldrsh r1, [r1, r3] - lsls r1, 2 - adds r1, r2 - adds r0, r4 - str r0, [r1] - bl _0809EAE0 - .align 2, 0 -_0809FAF4: .4byte gFormatData_202DE30 -_0809FAF8: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r0, [r0, r4] - ldr r1, [sp, 0xC] - lsls r1, 24 - asrs r1, 24 - add r2, sp, 0x8 - ldrb r2, [r2, 0x1] - bl sub_809AC7C - bl _0809EAE0 -_0809FB10: - ldr r0, [sp, 0xC] - add r1, sp, 0x9C - str r0, [r1] - ldr r0, [sp, 0x10] - str r0, [r1, 0x4] - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r0, [r0, r5] - bl sub_809ADD8 - bl _0809EAE0 -_0809FB28: - movs r1, 0 - ldrb r0, [r2] - subs r0, 0x32 - cmp r0, 0x6 - bhi _0809FBBE - lsls r0, 2 - ldr r1, _0809FB3C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809FB3C: .4byte _0809FB40 - .align 2, 0 -_0809FB40: - .4byte _0809FB5C - .4byte _0809FB6C - .4byte _0809FB7C - .4byte _0809FB8C - .4byte _0809FB9C - .4byte _0809FBAC - .4byte _0809FBB4 -_0809FB5C: - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r0, r2] - ldr r2, [sp, 0x14] - movs r0, 0 - bl ScriptPrintText - b _0809FBBA -_0809FB6C: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r1, [r0, r3] - ldr r2, [sp, 0x14] - movs r0, 0x1 - bl ScriptPrintText - b _0809FBBA -_0809FB7C: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r1, [r0, r4] - ldr r2, [sp, 0x14] - movs r0, 0x2 - bl ScriptPrintText - b _0809FBBA -_0809FB8C: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r1, [r0, r5] - ldr r2, [sp, 0x14] - movs r0, 0x3 - bl ScriptPrintText - b _0809FBBA -_0809FB9C: - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r0, r2] - ldr r2, [sp, 0x14] - movs r0, 0x4 - bl ScriptPrintText - b _0809FBBA -_0809FBAC: - ldr r0, [sp, 0x14] - bl sub_809AEEC - b _0809FBBA -_0809FBB4: - ldr r0, [sp, 0x14] - bl sub_809AF2C -_0809FBBA: - lsls r0, 24 - lsrs r1, r0, 24 -_0809FBBE: - cmp r1, 0 - bne _0809FBC6 - bl _0809EAE0 -_0809FBC6: - movs r0, 0 - movs r1, 0xA - bl sub_80A87AC - mov r0, r9 - movs r1, 0 - bl sub_809D8EC - bl _080A130A -_0809FBDA: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - ldr r1, [sp, 0x14] - bl sub_809AF6C - lsls r0, 24 - cmp r0, 0 - bne _0809FBF0 - bl _0809EAE0 -_0809FBF0: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - bge _0809FBFE - bl _0809EAE0 -_0809FBFE: - movs r0, 0 - movs r1, 0xA - bl sub_80A87AC - mov r0, r9 - movs r1, 0 - bl sub_809D8EC - bl _080A130A -_0809FC12: - add r0, sp, 0x8 - ldrb r1, [r0, 0x1] - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - ldr r1, [sp, 0xC] - ldr r2, [sp, 0x10] - lsls r2, 16 - asrs r2, 16 - ldr r3, [sp, 0x14] - bl sub_809AFC8 - bl _080A1280 -_0809FC2E: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - ldr r1, [sp, 0xC] - ldr r2, [sp, 0x10] - ldr r3, [sp, 0x14] - bl sub_809B1D4 - bl _080A1292 -_0809FC40: - movs r0, 0 - bl _080A0654 -_0809FC46: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r1, r0, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809FC90 - adds r0, r1, 0 - bl sub_80A8D54 - cmp r0, 0 - bne _0809FC62 - bl _0809EAE0 -_0809FC62: - movs r3, 0 - ldr r2, _0809FC8C - adds r5, r2, 0 - adds r4, r0, 0 - adds r4, 0x4C -_0809FC6C: - adds r0, r3, r5 - adds r1, r4, r3 - ldrb r1, [r1] - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0x9 - ble _0809FC6C - movs r0, 0 - strb r0, [r2, 0xA] - movs r0, 0x4 - movs r1, 0 - bl sub_809B1C0 - bl _080A1292 - .align 2, 0 -_0809FC8C: .4byte gUnknown_2039D98 -_0809FC90: - ldr r2, _0809FCA0 - movs r0, 0x4 - movs r1, 0x1 - bl sub_809B1C0 - bl _080A1292 - .align 2, 0 -_0809FCA0: .4byte gUnknown_2039D98 -_0809FCA4: - ldr r4, _0809FCC0 - adds r0, r4, 0 - bl sub_80920B8 - movs r0, 0 - strb r0, [r4, 0xA] - movs r0, 0x5 - movs r1, 0 - adds r2, r4, 0 - bl sub_809B1C0 - bl _080A1292 - .align 2, 0 -_0809FCC0: .4byte gUnknown_2039D98 -_0809FCC4: - ldr r2, _0809FCE4 - adds r3, r2, 0 - movs r1, 0 - adds r0, r2, 0 - adds r0, 0xB -_0809FCCE: - strb r1, [r0] - subs r0, 0x1 - cmp r0, r3 - bge _0809FCCE - add r0, sp, 0x8 - ldrb r1, [r0, 0x1] - movs r0, 0x6 - bl sub_809B1C0 - bl _080A1292 - .align 2, 0 -_0809FCE4: .4byte gUnknown_2039D98 -_0809FCE8: - bl StopAllMusic_1 - bl _0809EAE0 -_0809FCF0: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - blt _0809FD00 - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - b _0809FD02 -_0809FD00: - movs r0, 0x1E -_0809FD02: - bl FadeOutAllMusic - bl _0809EAE0 -_0809FD0A: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0809FD1E - ldr r0, [sp, 0xC] - lsls r0, 16 - lsrs r0, 16 - bl sub_80A25AC - b _0809FD20 -_0809FD1E: - ldr r0, [sp, 0xC] -_0809FD20: - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _0809FD34 - cmp r1, r0 - beq _0809FDA0 - adds r0, r1, 0 - bl xxx_call_start_new_bgm - bl _0809EAE0 - .align 2, 0 -_0809FD34: .4byte 0x000003e7 -_0809FD38: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0809FD4C - ldr r0, [sp, 0xC] - lsls r0, 16 - lsrs r0, 16 - bl sub_80A25AC - b _0809FD4E -_0809FD4C: - ldr r0, [sp, 0xC] -_0809FD4E: - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _0809FD68 - cmp r2, r0 - beq _0809FDA0 - add r0, sp, 0x8 - ldrh r1, [r0, 0x2] - adds r0, r2, 0 - bl xxx_call_fade_in_new_bgm - bl _0809EAE0 - .align 2, 0 -_0809FD68: .4byte 0x000003e7 -_0809FD6C: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0809FD80 - ldr r0, [sp, 0xC] - lsls r0, 16 - lsrs r0, 16 - bl sub_80A25AC - b _0809FD82 -_0809FD80: - ldr r0, [sp, 0xC] -_0809FD82: - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _0809FD9C - cmp r1, r0 - bne _0809FD90 - bl _0809EAE0 -_0809FD90: - adds r0, r1, 0 - bl xxx_call_queue_bgm - bl _0809EAE0 - .align 2, 0 -_0809FD9C: .4byte 0x000003e7 -_0809FDA0: - bl xxx_call_stop_bgm - bl _0809EAE0 -_0809FDA8: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - blt _0809FDB8 - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - b _0809FDBA -_0809FDB8: - movs r0, 0x1E -_0809FDBA: - bl xxx_call_fade_out_bgm - bl _0809EAE0 -_0809FDC2: - ldr r0, [sp, 0xC] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x80 - lsls r1, 1 - bl xxx_call_play_fanfare_se - bl _0809EAE0 -_0809FDD4: - ldr r0, [sp, 0xC] - lsls r0, 16 - lsrs r0, 16 - bl xxx_call_stop_fanfare_se - bl _0809EAE0 -_0809FDE2: - ldr r0, [sp, 0xC] - lsls r0, 16 - lsrs r2, r0, 16 - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - blt _0809FDF8 - add r0, sp, 0x8 - ldrh r1, [r0, 0x2] - b _0809FDFA -_0809FDF8: - movs r1, 0x1E -_0809FDFA: - adds r0, r2, 0 - bl xxx_call_fade_out_fanfare_se - bl _0809EAE0 -_0809FE04: - mov r1, r9 - adds r1, 0x84 - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, 0x1 - bne _0809FE16 - adds r0, r1, 0 - bl InitScriptData -_0809FE16: - mov r0, r9 - ldr r1, [r0] - ldr r0, [r0, 0x4] - ldr r2, [r1, 0x1C] - movs r1, 0 - bl _call_via_r2 - bl _0809EAE0 -_0809FE28: - mov r0, r9 - adds r0, 0xC - bl sub_809D52C - adds r4, r0, 0 - cmp r4, 0 - bne _0809FE3A - bl _0809EAE0 -_0809FE3A: - ldr r1, [r4] - mov r2, r9 - ldr r0, [r2, 0x4] - add r5, sp, 0xA4 - ldr r2, [r1, 0xC] - adds r1, r5, 0 - bl _call_via_r2 - ldr r1, [r4] - mov r3, r9 - ldr r0, [r3, 0x4] - mov r4, sp - adds r4, 0x4D - ldr r2, [r1, 0x14] - adds r1, r4, 0 - bl _call_via_r2 - mov r0, r9 - ldr r1, [r0] - ldr r0, [r0, 0x4] - ldr r2, [r1, 0x24] - adds r1, r5, 0 - bl _call_via_r2 - ldrb r0, [r4] - mov r1, r9 - adds r1, 0x4A - strb r0, [r1] - mov r1, r9 - ldr r2, [r1] - ldr r0, [r1, 0x4] - movs r1, 0 - ldrsb r1, [r4, r1] - ldr r2, [r2, 0x2C] - bl _call_via_r2 - bl _0809EAE0 -_0809FE86: - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - add r6, sp, 0xAC - ldr r2, [r1, 0xC] - adds r1, r6, 0 - bl _call_via_r2 - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - add r4, sp, 0xB4 - add r5, sp, 0xBC - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_80AD914 - mov r0, r9 - ldr r1, [r0] - ldr r0, [r0, 0x4] - ldr r3, [r1, 0x20] - adds r1, r4, 0 - adds r2, r5, 0 - bl _call_via_r3 - bl _0809EAE0 -_0809FEBE: - mov r1, r9 - ldr r2, [r1] - ldr r0, [r1, 0x4] - ldr r1, [sp, 0xC] - ldr r2, [r2, 0x3C] - bl _call_via_r2 - bl _0809EAE0 -_0809FED0: - ldr r0, [sp, 0xC] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _0809FEEE - mov r1, r9 - adds r1, 0x84 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - bne _0809FEEE - adds r0, r1, 0 - bl InitScriptData -_0809FEEE: - mov r3, r9 - ldr r2, [r3] - ldr r0, [r3, 0x4] - ldr r1, [sp, 0xC] - ldr r2, [r2, 0x40] - bl _call_via_r2 - bl _0809EAE0 -_0809FF00: - mov r4, r9 - ldr r2, [r4] - ldr r0, [r4, 0x4] - mov r1, r9 - adds r1, 0x4A - ldr r2, [r2, 0x14] - bl _call_via_r2 - add r0, sp, 0x8 - ldrh r1, [r0, 0x2] - cmp r1, 0 - beq _0809FF1E - mov r0, r9 - adds r0, 0x48 - strh r1, [r0] -_0809FF1E: - mov r5, r9 - ldr r2, [r5] - ldr r0, [r5, 0x4] - add r1, sp, 0x8 - ldrh r1, [r1, 0x2] - ldr r2, [r2, 0x30] - bl _call_via_r2 - bl _0809EAE0 -_0809FF32: - mov r0, r9 - ldr r2, [r0] - ldr r0, [r0, 0x4] - add r1, sp, 0x8 - ldrh r1, [r1, 0x2] - ldr r2, [r2, 0x34] - bl _call_via_r2 - bl _0809EAE0 -_0809FF46: - mov r1, r9 - ldr r3, [r1] - ldr r0, [r1, 0x4] - ldr r1, [sp, 0xC] - lsls r1, 16 - asrs r1, 16 - add r2, sp, 0x8 - movs r4, 0x2 - ldrsh r2, [r2, r4] - ldr r3, [r3, 0x38] - bl _call_via_r3 - bl _0809EAE0 -_0809FF62: - mov r5, r9 - ldr r2, [r5] - ldr r0, [r5, 0x4] - add r1, sp, 0x8 - movs r3, 0x2 - ldrsh r1, [r1, r3] - ldr r2, [r2, 0x44] - bl _call_via_r2 - bl _0809EAE0 -_0809FF78: - ldr r0, [sp, 0xC] - lsls r0, 8 - add r1, sp, 0xC4 - str r0, [r1] - ldr r0, [sp, 0x10] - lsls r0, 8 - str r0, [r1, 0x4] - mov r4, r9 - ldr r2, [r4] - ldr r0, [r4, 0x4] - ldr r2, [r2, 0x24] - bl _call_via_r2 - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - mov r5, r10 - b _080A05EA -_0809FF9A: - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - lsls r0, 8 - add r1, sp, 0xCC - str r0, [r1] - ldr r0, [sp, 0xC] - lsls r0, 8 - str r0, [r1, 0x4] - mov r3, r9 - ldr r2, [r3] - ldr r0, [r3, 0x4] - ldr r2, [r2, 0x48] - bl _call_via_r2 - b _080A0650 -_0809FFBA: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r0, [r0, r5] - bl OtherRandInt - lsls r0, 8 - add r4, sp, 0xD4 - str r0, [r4] - ldr r0, [sp, 0xC] - bl OtherRandInt - lsls r0, 8 - str r0, [r4, 0x4] - mov r0, r9 - ldr r1, [r0] - ldr r0, [r0, 0x4] - ldr r2, [r1, 0x48] - adds r1, r4, 0 - bl _call_via_r2 - b _080A07B4 -_0809FFE4: - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - add r4, sp, 0xDC - ldr r2, [r1, 0xC] - adds r1, r4, 0 - bl _call_via_r2 - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - adds r1, r4, 0 - bl sub_80AD8B4 - mov r3, r9 - ldr r1, [r3] - ldr r0, [r3, 0x4] - ldr r2, [r1, 0x24] - adds r1, r4, 0 - bl _call_via_r2 - b _080A0650 -_080A0010: - mov r5, r9 - ldr r1, [r5] - ldr r0, [r5, 0x4] - add r6, sp, 0xE4 - ldr r2, [r1, 0xC] - adds r1, r6, 0 - bl _call_via_r2 - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - add r4, sp, 0xEC - add r5, sp, 0xF4 - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_80AD914 - ldr r0, [r5] - ldr r1, [r4] - subs r0, r1 - bl OtherRandInt - ldr r1, [r4] - adds r1, r0 - str r1, [r6] - ldr r0, [r5, 0x4] - ldr r1, [r4, 0x4] - subs r0, r1 - bl OtherRandInt - ldr r1, [r4, 0x4] - adds r1, r0 - str r1, [r6, 0x4] - mov r0, r9 - ldr r1, [r0] - ldr r0, [r0, 0x4] - ldr r2, [r1, 0x24] - adds r1, r6, 0 - bl _call_via_r2 - b _080A07B4 -_080A0064: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080A007A - bl _0809EAE0 -_080A007A: - add r4, sp, 0xFC - adds r1, r4, 0 - bl sub_80A8FD8 - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - ldr r2, [r1, 0x24] - adds r1, r4, 0 - bl _call_via_r2 - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - b _080A03F0 -_080A0096: - ldr r2, [sp, 0xC] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0 - movs r1, 0x32 - bl sub_8001784 - add r5, sp, 0x104 - str r0, [r5] - ldr r2, [sp, 0xC] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0 - movs r1, 0x33 - bl sub_8001784 - str r0, [r5, 0x4] - ldr r2, [sp, 0xC] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0 - movs r1, 0x34 - bl sub_8001784 - adds r6, r0, 0 - ldr r2, [sp, 0xC] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0 - movs r1, 0x35 - bl sub_8001784 - adds r4, r0, 0 - lsls r4, 24 - asrs r4, 24 - mov r0, r9 - ldr r1, [r0] - ldr r0, [r0, 0x4] - ldr r2, [r1, 0x24] - adds r1, r5, 0 - bl _call_via_r2 - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - ldr r2, [r1, 0x28] - adds r1, r6, 0 - bl _call_via_r2 - mov r0, r9 - adds r0, 0x4A - strb r4, [r0] - mov r3, r9 - ldr r1, [r3] - ldr r0, [r3, 0x4] - ldr r2, [r1, 0x2C] - adds r1, r4, 0 - bl _call_via_r2 - b _080A0650 -_080A010E: - mov r5, r9 - ldr r1, [r5] - ldr r0, [r5, 0x4] - add r4, sp, 0x10C - ldr r2, [r1, 0xC] - adds r1, r4, 0 - bl _call_via_r2 - ldr r3, [r5] - ldr r0, [r5, 0x4] - add r1, sp, 0x114 - add r2, sp, 0x118 - ldr r3, [r3, 0x10] - bl _call_via_r3 - ldr r1, [r5] - ldr r0, [r5, 0x4] - mov r5, sp - adds r5, 0x4E - ldr r2, [r1, 0x14] - adds r1, r5, 0 - bl _call_via_r2 - ldr r2, [sp, 0xC] - lsls r2, 16 - lsrs r2, 16 - add r0, sp, 0x10C - ldr r3, [r0] - movs r0, 0 - movs r1, 0x32 - bl sub_800199C - ldr r2, [sp, 0xC] - lsls r2, 16 - lsrs r2, 16 - ldr r3, [r4, 0x4] - movs r0, 0 - movs r1, 0x33 - bl sub_800199C - ldr r2, [sp, 0xC] - lsls r2, 16 - lsrs r2, 16 - add r0, sp, 0x114 - ldr r3, [r0] - movs r0, 0 - movs r1, 0x34 - bl sub_800199C - ldr r2, [sp, 0xC] - lsls r2, 16 - lsrs r2, 16 - movs r3, 0 - ldrsb r3, [r5, r3] - movs r0, 0 - movs r1, 0x35 - bl sub_800199C - bl _0809EAE0 -_080A0186: - mov r0, r9 - ldr r2, [r0] - ldr r0, [r0, 0x4] - ldr r1, [sp, 0xC] - lsls r1, 8 - ldr r2, [r2, 0x28] - bl _call_via_r2 - b _080A07B4 -_080A0198: - ldr r0, [sp, 0xC] - lsls r0, 8 - mov r2, r10 - str r0, [r2, 0x3C] - ldr r0, [sp, 0x10] - lsls r0, 8 - str r0, [r2, 0x40] - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - str r0, [r2, 0x30] - ldr r0, _080A01B4 - bl _080A12AE - .align 2, 0 -_080A01B4: .4byte 0x0000ffff -_080A01B8: - mov r4, r9 - ldr r1, [r4] - ldr r0, [r4, 0x4] - add r4, sp, 0x11C - ldr r2, [r1, 0xC] - adds r1, r4, 0 - bl _call_via_r2 - ldr r1, [sp, 0xC] - lsls r1, 8 - add r0, sp, 0x11C - ldr r0, [r0] - adds r0, r1 - mov r5, r10 - str r0, [r5, 0x3C] - ldr r1, [sp, 0x10] - lsls r1, 8 - ldr r0, [r4, 0x4] - adds r0, r1 - str r0, [r5, 0x40] - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - str r0, [r5, 0x30] - ldr r0, _080A01EC - b _080A05EA - .align 2, 0 -_080A01EC: .4byte 0x0000ffff -_080A01F0: - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - mov r4, r10 - adds r4, 0x3C - ldr r2, [r1, 0xC] - adds r1, r4, 0 - bl _call_via_r2 - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - adds r1, r4, 0 - bl sub_80AD8B4 - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - mov r4, r10 - str r0, [r4, 0x30] - ldr r0, _080A021C - b _080A0656 - .align 2, 0 -_080A021C: .4byte 0x0000ffff -_080A0220: - mov r5, r9 - ldr r1, [r5] - ldr r0, [r5, 0x4] - mov r4, r10 - adds r4, 0x3C - ldr r2, [r1, 0xC] - adds r1, r4, 0 - bl _call_via_r2 - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - adds r1, r4, 0 - bl sub_80AD8B4 - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - mov r2, r10 - str r0, [r2, 0x30] - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - bl _080A12AE -_080A0250: - mov r3, r9 - ldr r1, [r3] - ldr r0, [r3, 0x4] - mov r4, r10 - adds r4, 0x3C - ldr r2, [r1, 0xC] - adds r1, r4, 0 - bl _call_via_r2 - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - adds r1, r4, 0 - bl sub_80AD8B4 - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r0, [r0, r4] - mov r5, r10 - str r0, [r5, 0x30] - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - bl OtherRandInt - b _080A05EA -_080A0282: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080A0298 - bl _0809EAE0 -_080A0298: - mov r1, r10 - adds r1, 0x3C - bl sub_80A8FD8 - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - mov r2, r10 - str r0, [r2, 0x30] - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - bl _080A12AE -_080A02B2: - mov r3, r9 - ldr r2, [r3] - ldr r0, [r3, 0x4] - mov r1, r10 - adds r1, 0x34 - ldr r2, [r2, 0xC] - bl _call_via_r2 - ldr r0, [sp, 0xC] - lsls r1, r0, 8 - mov r4, r10 - str r1, [r4, 0x3C] - ldr r0, [sp, 0x10] - lsls r2, r0, 8 - str r2, [r4, 0x40] - add r0, sp, 0x8 - ldrb r0, [r0] - cmp r0, 0x7D - beq _080A02DC - cmp r0, 0x83 - bne _080A0304 -_080A02DC: - mov r5, r10 - ldr r0, [r5, 0x34] - subs r0, r1, r0 - ldr r1, [r5, 0x38] - subs r1, r2, r1 - bl sub_8009FB8 - add r1, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r1, r2] - bl __divsi3 - strh r0, [r5, 0x2A] - lsls r0, 16 - cmp r0, 0 - ble _080A0300 - bl _0809F0C4 -_080A0300: - movs r0, 0x1 - b _080A05EA -_080A0304: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - mov r3, r10 - strh r0, [r3, 0x2A] - bl _0809F0C4 -_080A0310: - mov r4, r9 - ldr r2, [r4] - ldr r0, [r4, 0x4] - mov r1, r10 - adds r1, 0x34 - ldr r2, [r2, 0xC] - bl _call_via_r2 - ldr r0, [sp, 0xC] - lsls r0, 8 - mov r5, r10 - ldr r4, [r5, 0x34] - adds r3, r4, r0 - str r3, [r5, 0x3C] - ldr r0, [sp, 0x10] - lsls r0, 8 - ldr r2, [r5, 0x38] - adds r1, r2, r0 - str r1, [r5, 0x40] - add r0, sp, 0x8 - ldrb r0, [r0] - cmp r0, 0x7E - beq _080A0342 - cmp r0, 0x84 - bne _080A036A -_080A0342: - subs r0, r3, r4 - subs r1, r2 - bl sub_8009FB8 - add r1, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r1, r2] - bl __divsi3 - mov r3, r10 - strh r0, [r3, 0x2A] - lsls r0, 16 - cmp r0, 0 - ble _080A0362 - bl _0809F0C4 -_080A0362: - movs r0, 0x1 - strh r0, [r3, 0x2A] - bl _0809F0C4 -_080A036A: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - b _080A0654 -_080A0370: - ldr r4, [sp, 0xC] - lsls r4, 1 - subs r4, 0x1 - ldr r5, [sp, 0x10] - lsls r5, 1 - subs r5, 0x1 - mov r0, r9 - ldr r2, [r0] - ldr r0, [r0, 0x4] - mov r1, r10 - adds r1, 0x34 - ldr r2, [r2, 0xC] - bl _call_via_r2 - adds r0, r4, 0 - bl OtherRandInt - add r1, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r1, r2] - subs r0, r1 - lsls r0, 8 - mov r3, r10 - ldr r1, [r3, 0x34] - adds r1, r0 - str r1, [r3, 0x3C] - adds r0, r5, 0 - bl OtherRandInt - ldr r1, [sp, 0xC] - subs r0, r1 - lsls r0, 8 - mov r4, r10 - ldr r3, [r4, 0x38] - adds r2, r3, r0 - str r2, [r4, 0x40] - add r0, sp, 0x8 - ldrb r0, [r0] - cmp r0, 0x7F - beq _080A03C4 - cmp r0, 0x85 - bne _080A03EC -_080A03C4: - mov r5, r10 - ldr r0, [r5, 0x3C] - ldr r1, [r5, 0x34] - subs r0, r1 - subs r1, r2, r3 - bl sub_8009FB8 - add r1, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r1, r2] - bl __divsi3 - strh r0, [r5, 0x2A] - lsls r0, 16 - cmp r0, 0 - ble _080A03E8 - bl _0809F0C4 -_080A03E8: - movs r0, 0x1 - b _080A05EA -_080A03EC: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] -_080A03F0: - mov r3, r10 - strh r0, [r3, 0x2A] - bl _0809F0C4 -_080A03F8: - mov r4, r9 - ldr r2, [r4] - ldr r0, [r4, 0x4] - mov r1, r10 - adds r1, 0x34 - ldr r2, [r2, 0xC] - bl _call_via_r2 - mov r5, r10 - ldr r0, [r5, 0x34] - ldr r1, [r5, 0x38] - mov r2, r10 - str r0, [r2, 0x3C] - str r1, [r2, 0x40] - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - mov r1, r10 - adds r1, 0x3C - bl sub_80AD8B4 - add r0, sp, 0x8 - ldrb r0, [r0] - cmp r0, 0x80 - beq _080A042E - cmp r0, 0x86 - bne _080A045C -_080A042E: - mov r3, r10 - ldr r0, [r3, 0x3C] - ldr r1, [r3, 0x34] - subs r0, r1 - ldr r1, [r3, 0x40] - ldr r2, [r3, 0x38] - subs r1, r2 - bl sub_8009FB8 - add r1, sp, 0x8 - movs r4, 0x2 - ldrsh r1, [r1, r4] - bl __divsi3 - mov r5, r10 - strh r0, [r5, 0x2A] - lsls r0, 16 - cmp r0, 0 - ble _080A0458 - bl _0809F0C4 -_080A0458: - movs r0, 0x1 - b _080A05EA -_080A045C: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - b _080A07B8 -_080A0462: - ldr r4, [sp, 0xC] - lsls r4, 1 - subs r4, 0x1 - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - mov r5, r10 - adds r5, 0x3C - ldr r2, [r1, 0xC] - adds r1, r5, 0 - bl _call_via_r2 - ldr r0, [sp, 0x10] - lsls r0, 16 - asrs r0, 16 - adds r1, r5, 0 - bl sub_80AD8B4 - adds r0, r4, 0 - bl OtherRandInt - add r1, sp, 0x8 - movs r3, 0x2 - ldrsh r1, [r1, r3] - subs r0, r1 - lsls r0, 8 - mov r5, r10 - ldr r1, [r5, 0x3C] - adds r1, r0 - str r1, [r5, 0x3C] - adds r0, r4, 0 - bl OtherRandInt - add r1, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r1, r2] - subs r0, r1 - lsls r0, 8 - ldr r1, [r5, 0x40] - adds r2, r1, r0 - str r2, [r5, 0x40] - add r0, sp, 0x8 - ldrb r0, [r0] - cmp r0, 0x81 - beq _080A04C0 - cmp r0, 0x87 - bne _080A04EC -_080A04C0: - mov r3, r10 - ldr r0, [r3, 0x3C] - ldr r1, [r3, 0x34] - subs r0, r1 - ldr r1, [r3, 0x38] - subs r1, r2, r1 - bl sub_8009FB8 - add r1, sp, 0x8 - movs r4, 0x2 - ldrsh r1, [r1, r4] - bl __divsi3 - mov r5, r10 - strh r0, [r5, 0x2A] - lsls r0, 16 - cmp r0, 0 - ble _080A04E8 - bl _0809F0C4 -_080A04E8: - movs r0, 0x1 - b _080A05EA -_080A04EC: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - b _080A07B8 -_080A04F2: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - asrs r4, r0, 16 - cmp r4, 0 - bge _080A0508 - bl _0809EAE0 -_080A0508: - mov r3, r9 - ldr r2, [r3] - ldr r0, [r3, 0x4] - mov r1, r10 - adds r1, 0x34 - ldr r2, [r2, 0xC] - bl _call_via_r2 - mov r1, r10 - adds r1, 0x3C - adds r0, r4, 0 - bl sub_80A8FD8 - add r0, sp, 0x8 - ldrb r0, [r0] - cmp r0, 0x82 - beq _080A052E - cmp r0, 0x88 - bne _080A055A -_080A052E: - mov r4, r10 - ldr r0, [r4, 0x3C] - ldr r1, [r4, 0x34] - subs r0, r1 - ldr r1, [r4, 0x40] - ldr r2, [r4, 0x38] - subs r1, r2 - bl sub_8009FB8 - add r1, sp, 0x8 - movs r5, 0x2 - ldrsh r1, [r1, r5] - bl __divsi3 - strh r0, [r4, 0x2A] - lsls r0, 16 - cmp r0, 0 - ble _080A0556 - bl _0809F0C4 -_080A0556: - movs r0, 0x1 - b _080A0656 -_080A055A: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - b _080A07B8 -_080A0560: - ldr r0, [sp, 0xC] - lsls r0, 8 - mov r2, r10 - str r0, [r2, 0x48] - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - str r0, [r2, 0x30] - ldr r0, _080A0578 - bl _080A12AE - .align 2, 0 -_080A0578: .4byte 0x0000ffff -_080A057C: - ldr r1, [sp, 0xC] - mov r0, r9 - adds r0, 0x4A - strb r1, [r0] - mov r4, r9 - ldr r2, [r4] - ldr r0, [r4, 0x4] - lsls r1, 24 - asrs r1, 24 - ldr r2, [r2, 0x2C] - bl _call_via_r2 - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r0, [r0, r5] - mov r1, r10 - str r0, [r1, 0x30] - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - b _080A07BA -_080A05A4: - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - mov r4, sp - adds r4, 0x4F - ldr r2, [r1, 0x14] - adds r1, r4, 0 - bl _call_via_r2 - movs r0, 0 - ldrsb r0, [r4, r0] - ldr r1, [sp, 0xC] - lsls r1, 24 - lsrs r1, 24 - bl sub_8002984 - mov r1, r9 - adds r1, 0x4A - strb r0, [r1] - mov r3, r9 - ldr r2, [r3] - ldr r0, [r3, 0x4] - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - ldr r2, [r2, 0x2C] - bl _call_via_r2 - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r0, [r0, r4] - mov r5, r10 - str r0, [r5, 0x30] - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] -_080A05EA: - strh r0, [r5, 0x2A] - bl _0809F0C4 -_080A05F0: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - mov r1, r9 - adds r1, 0x4A - strb r0, [r1] - mov r0, r9 - ldr r2, [r0] - ldr r0, [r0, 0x4] -_080A0600: - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - ldr r2, [r2, 0x2C] - bl _call_via_r2 - b _080A07B4 -_080A060E: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - blt _080A0650 - add r4, sp, 0x50 - adds r1, r4, 0 - bl sub_80A9050 - movs r0, 0 - ldrsb r0, [r4, r0] - add r1, sp, 0x8 - ldrh r1, [r1, 0x2] - lsls r1, 24 - lsrs r1, 24 - bl sub_8002984 - mov r1, r9 - adds r1, 0x4A - strb r0, [r1] - mov r3, r9 - ldr r2, [r3] - ldr r0, [r3, 0x4] - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - ldr r2, [r2, 0x2C] - bl _call_via_r2 -_080A0650: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] -_080A0654: - mov r4, r10 -_080A0656: - strh r0, [r4, 0x2A] - bl _0809F0C4 -_080A065C: - mov r5, r9 - ldr r1, [r5] - ldr r0, [r5, 0x4] - mov r4, sp - adds r4, 0x51 - ldr r2, [r1, 0x14] - adds r1, r4, 0 - bl _call_via_r2 - movs r0, 0 - ldrsb r0, [r4, r0] - add r1, sp, 0x8 - ldrh r1, [r1, 0x2] - lsls r1, 24 - lsrs r1, 24 - bl sub_8002984 - mov r1, r9 - adds r1, 0x4A - strb r0, [r1] - ldr r2, [r5] - ldr r0, [r5, 0x4] - b _080A0600 -_080A068A: - movs r5, 0 - add r0, sp, 0x8 - ldrb r0, [r0] - cmp r0, 0x8F - beq _080A06CA - cmp r0, 0x8F - bgt _080A069E - cmp r0, 0x8E - beq _080A06A4 - b _080A0724 -_080A069E: - cmp r0, 0x90 - beq _080A06F8 - b _080A0724 -_080A06A4: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - asrs r4, r0, 16 - cmp r4, 0 - blt _080A0724 - movs r5, 0x1 - add r1, sp, 0x124 - adds r0, r4, 0 - bl sub_80A8FD8 - add r1, sp, 0x12C - adds r0, r4, 0 - bl sub_80A8F9C - b _080A0724 -_080A06CA: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - blt _080A0724 - movs r5, 0x1 - add r1, sp, 0x124 - bl sub_80A8FD8 - ldr r0, _080A06F4 - ldr r1, [r0, 0x4] - ldr r0, [r0] - add r2, sp, 0x12C - str r0, [r2] - str r1, [r2, 0x4] - b _080A0724 - .align 2, 0 -_080A06F4: .4byte gUnknown_81164DC -_080A06F8: - movs r5, 0x1 - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - add r4, sp, 0x124 - ldr r2, [r1, 0xC] - adds r1, r4, 0 - bl _call_via_r2 - mov r3, r9 - ldr r2, [r3] - ldr r0, [r3, 0x4] - add r1, sp, 0x12C - ldr r2, [r2, 0x8] - bl _call_via_r2 - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - adds r1, r4, 0 - bl sub_80AD8B4 -_080A0724: - cmp r5, 0 - beq _080A07B4 - mov r4, r9 - ldr r1, [r4] - ldr r0, [r4, 0x4] - add r5, sp, 0x134 - ldr r2, [r1, 0xC] - adds r1, r5, 0 - bl _call_via_r2 - ldr r1, [r4] - ldr r0, [r4, 0x4] - add r4, sp, 0x13C - ldr r2, [r1, 0x8] - adds r1, r4, 0 - bl _call_via_r2 - add r7, sp, 0x124 - add r3, sp, 0x12C - adds r0, r5, 0 - adds r1, r4, 0 - adds r2, r7, 0 - bl sub_8002DF0 - mov r1, sp - adds r1, 0x52 - strb r0, [r1] - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - ldrsb r4, [r1, r4] - adds r6, r1, 0 - cmp r4, r0 - bne _080A078C - ldr r3, _080A07C0 - adds r0, r5, 0 - adds r1, r3, 0 - adds r2, r7, 0 - bl sub_8002D54 - strb r0, [r6] - movs r0, 0 - ldrsb r0, [r6, r0] - cmp r0, r4 - bne _080A078C - mov r5, r9 - ldr r1, [r5] - ldr r0, [r5, 0x4] - ldr r2, [r1, 0x14] - adds r1, r6, 0 - bl _call_via_r2 -_080A078C: - movs r0, 0 - ldrsb r0, [r6, r0] - add r1, sp, 0x8 - ldrh r1, [r1, 0x2] - lsls r1, 24 - lsrs r1, 24 - bl sub_8002984 - mov r1, r9 - adds r1, 0x4A - strb r0, [r1] - mov r0, r9 - ldr r2, [r0] - ldr r0, [r0, 0x4] - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - ldr r2, [r2, 0x2C] - bl _call_via_r2 -_080A07B4: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] -_080A07B8: - mov r1, r10 -_080A07BA: - strh r0, [r1, 0x2A] - bl _0809F0C4 - .align 2, 0 -_080A07C0: .4byte gUnknown_81164DC -_080A07C4: - movs r0, 0 - bl _080A12AC -_080A07CA: - ldr r0, [sp, 0xC] - mov r1, r9 - adds r1, 0x71 - movs r2, 0 - strb r0, [r1] - mov r3, r10 - strh r2, [r3, 0x2A] - bl _0809F0C4 -_080A07DC: - mov r4, r9 - ldr r1, [r4] - ldr r0, [r4, 0x4] - mov r4, sp - adds r4, 0x53 - ldr r2, [r1, 0x14] - adds r1, r4, 0 - bl _call_via_r2 - movs r0, 0 - ldrsb r0, [r4, r0] - ldr r1, [sp, 0xC] - lsls r1, 24 - lsrs r1, 24 - bl sub_8002984 - mov r1, r9 - adds r1, 0x71 - movs r2, 0 - strb r0, [r1] - mov r5, r10 - strh r2, [r5, 0x2A] - bl _0809F0C4 -_080A080C: - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - ldr r1, [sp, 0xC] - ldr r2, [sp, 0x10] - bl sub_809D124 - bl _0809EAE0 -_080A081E: - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - ldr r1, [r1, 0x4] - bl _call_via_r1 - lsls r0, 16 - asrs r1, r0, 16 - mov r3, r9 - movs r4, 0x8 - ldrsh r0, [r3, r4] - cmp r0, 0x2 - beq _080A0856 - cmp r0, 0x2 - bgt _080A0844 - cmp r0, 0x1 - beq _080A084C - bl _0809EAE0 -_080A0844: - cmp r0, 0x3 - beq _080A0860 - bl _0809EAE0 -_080A084C: - movs r0, 0x1 - bl sub_809D170 - bl _0809EAE0 -_080A0856: - movs r0, 0x2 - bl sub_809D170 - bl _0809EAE0 -_080A0860: - movs r0, 0x3 - bl sub_809D170 - bl _0809EAE0 -_080A086A: - mov r5, r9 - ldr r1, [r5] - ldr r0, [r5, 0x4] - ldr r1, [r1, 0x4] - bl _call_via_r1 - lsls r0, 16 - asrs r0, 16 - movs r2, 0x8 - ldrsh r1, [r5, r2] - cmp r1, 0x2 - beq _080A08A0 - cmp r1, 0x2 - bgt _080A088E - cmp r1, 0x1 - beq _080A0896 - bl _0809EAE0 -_080A088E: - cmp r1, 0x3 - beq _080A08AA - bl _0809EAE0 -_080A0896: - add r4, sp, 0x144 - adds r1, r4, 0 - bl sub_80A8FD8 - b _080A08B2 -_080A08A0: - add r4, sp, 0x144 - adds r1, r4, 0 - bl sub_80AC448 - b _080A08B2 -_080A08AA: - add r4, sp, 0x144 - adds r1, r4, 0 - bl sub_80AD360 -_080A08B2: - movs r0, 0 - adds r1, r4, 0 - bl sub_809D158 - bl _0809EAE0 -_080A08BE: - movs r0, 0x1 - movs r1, 0 - bl sub_809D170 - bl _0809EAE0 -_080A08CA: - mov r3, r9 - ldr r1, [r3] - ldr r0, [r3, 0x4] - ldr r1, [r1, 0x4] - bl _call_via_r1 - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bge _080A08E2 - bl _0809EAE0 -_080A08E2: - mov r4, r9 - movs r5, 0x8 - ldrsh r0, [r4, r5] - cmp r0, 0x2 - beq _080A090A - cmp r0, 0x2 - bgt _080A08F8 - cmp r0, 0x1 - beq _080A0900 - bl _0809EAE0 -_080A08F8: - cmp r0, 0x3 - beq _080A0914 - bl _0809EAE0 -_080A0900: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r2, [r0, r3] - movs r0, 0x1 - b _080A0990 -_080A090A: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r2, [r0, r4] - movs r0, 0x2 - b _080A0990 -_080A0914: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r2, [r0, r5] - movs r0, 0x3 - b _080A0990 -_080A091E: - mov r0, r9 - ldr r1, [r0] - ldr r0, [r0, 0x4] - ldr r1, [r1, 0x4] - bl _call_via_r1 - lsls r0, 16 - asrs r0, 16 - mov r2, r9 - movs r3, 0x8 - ldrsh r1, [r2, r3] - cmp r1, 0x2 - beq _080A095C - cmp r1, 0x2 - bgt _080A0944 - cmp r1, 0x1 - beq _080A094C - bl _0809EAE0 -_080A0944: - cmp r1, 0x3 - beq _080A096C - bl _0809EAE0 -_080A094C: - add r4, sp, 0x14C - adds r1, r4, 0 - bl sub_80A8FD8 - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r2, [r0, r5] - b _080A097A -_080A095C: - add r4, sp, 0x14C - adds r1, r4, 0 - bl sub_80AC448 - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r2, [r0, r1] - b _080A097A -_080A096C: - add r4, sp, 0x14C - adds r1, r4, 0 - bl sub_80AD360 - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r2, [r0, r3] -_080A097A: - movs r0, 0 - adds r1, r4, 0 - bl sub_809D190 - bl _0809F0C4 -_080A0986: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r2, [r0, r4] - movs r0, 0x1 - movs r1, 0 -_080A0990: - bl sub_809D1A8 - bl _0809F0C4 -_080A0998: - mov r5, r9 - ldr r1, [r5] - ldr r0, [r5, 0x4] - ldr r1, [r1, 0x4] - bl _call_via_r1 - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bge _080A09B0 - bl _0809EAE0 -_080A09B0: - movs r2, 0x8 - ldrsh r0, [r5, r2] - cmp r0, 0x2 - beq _080A09D6 - cmp r0, 0x2 - bgt _080A09C4 - cmp r0, 0x1 - beq _080A09CC - bl _0809EAE0 -_080A09C4: - cmp r0, 0x3 - beq _080A09E0 - bl _0809EAE0 -_080A09CC: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r2, [r0, r3] - movs r0, 0x1 - b _080A0A5C -_080A09D6: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r2, [r0, r4] - movs r0, 0x2 - b _080A0A5C -_080A09E0: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r2, [r0, r5] - movs r0, 0x3 - b _080A0A5C -_080A09EA: - mov r0, r9 - ldr r1, [r0] - ldr r0, [r0, 0x4] - ldr r1, [r1, 0x4] - bl _call_via_r1 - lsls r0, 16 - asrs r0, 16 - mov r2, r9 - movs r3, 0x8 - ldrsh r1, [r2, r3] - cmp r1, 0x2 - beq _080A0A28 - cmp r1, 0x2 - bgt _080A0A10 - cmp r1, 0x1 - beq _080A0A18 - bl _0809EAE0 -_080A0A10: - cmp r1, 0x3 - beq _080A0A38 - bl _0809EAE0 -_080A0A18: - add r4, sp, 0x154 - adds r1, r4, 0 - bl sub_80A8FD8 - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r2, [r0, r5] - b _080A0A46 -_080A0A28: - add r4, sp, 0x154 - adds r1, r4, 0 - bl sub_80AC448 - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r2, [r0, r1] - b _080A0A46 -_080A0A38: - add r4, sp, 0x154 - adds r1, r4, 0 - bl sub_80AD360 - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r2, [r0, r3] -_080A0A46: - movs r0, 0 - adds r1, r4, 0 - bl sub_809D1CC - bl _0809F0C4 -_080A0A52: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r2, [r0, r4] - movs r0, 0x1 - movs r1, 0 -_080A0A5C: - bl sub_809D1E4 - bl _0809F0C4 -_080A0A64: - mov r5, r9 - ldr r1, [r5] - ldr r0, [r5, 0x4] - ldr r1, [r1, 0x4] - bl _call_via_r1 - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bge _080A0A7C - bl _0809EAE0 -_080A0A7C: - movs r2, 0x8 - ldrsh r0, [r5, r2] - cmp r0, 0x2 - beq _080A0AA2 - cmp r0, 0x2 - bgt _080A0A90 - cmp r0, 0x1 - beq _080A0A98 - bl _0809EAE0 -_080A0A90: - cmp r0, 0x3 - beq _080A0AAC - bl _0809EAE0 -_080A0A98: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r2, [r0, r3] - movs r0, 0x1 - b _080A0B28 -_080A0AA2: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r2, [r0, r4] - movs r0, 0x2 - b _080A0B28 -_080A0AAC: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r2, [r0, r5] - movs r0, 0x3 - b _080A0B28 -_080A0AB6: - mov r0, r9 - ldr r1, [r0] - ldr r0, [r0, 0x4] - ldr r1, [r1, 0x4] - bl _call_via_r1 - lsls r0, 16 - asrs r0, 16 - mov r2, r9 - movs r3, 0x8 - ldrsh r1, [r2, r3] - cmp r1, 0x2 - beq _080A0AF4 - cmp r1, 0x2 - bgt _080A0ADC - cmp r1, 0x1 - beq _080A0AE4 - bl _0809EAE0 -_080A0ADC: - cmp r1, 0x3 - beq _080A0B04 - bl _0809EAE0 -_080A0AE4: - add r4, sp, 0x15C - adds r1, r4, 0 - bl sub_80A8FD8 - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r2, [r0, r5] - b _080A0B12 -_080A0AF4: - add r4, sp, 0x15C - adds r1, r4, 0 - bl sub_80AC448 - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r2, [r0, r1] - b _080A0B12 -_080A0B04: - add r4, sp, 0x15C - adds r1, r4, 0 - bl sub_80AD360 - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r2, [r0, r3] -_080A0B12: - movs r0, 0 - adds r1, r4, 0 - bl sub_809D208 - bl _0809F0C4 -_080A0B1E: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r2, [r0, r4] - movs r0, 0x1 - movs r1, 0 -_080A0B28: - bl sub_809D220 - bl _0809F0C4 -_080A0B30: - mov r0, r10 - adds r0, 0x50 - add r1, sp, 0x8 - movs r5, 0x2 - ldrsh r1, [r1, r5] - bl sub_8001570 - bl _0809EAE0 -_080A0B42: - mov r0, r10 - adds r0, 0x50 - add r1, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r1, r2] - bl sub_80015C0 - bl _0809EAE0 -_080A0B54: - mov r0, r10 - adds r0, 0x50 - add r1, sp, 0x8 - movs r3, 0x2 - ldrsh r1, [r1, r3] - ldr r2, [sp, 0xC] - add r3, sp, 0x8 - ldrb r3, [r3, 0x1] - bl sub_800226C - bl _0809EAE0 -_080A0B6C: - mov r0, r10 - adds r0, 0x50 - add r1, sp, 0x8 - movs r4, 0x2 - ldrsh r1, [r1, r4] - ldr r2, [sp, 0xC] - lsls r2, 16 - asrs r2, 16 - add r3, sp, 0x8 - ldrb r3, [r3, 0x1] - bl sub_80022A0 - bl _0809EAE0 -_080A0B88: - mov r0, r10 - adds r0, 0x50 - add r1, sp, 0x8 - movs r5, 0x2 - ldrsh r1, [r1, r5] - ldr r2, [sp, 0xC] - lsls r2, 16 - lsrs r2, 16 - ldr r3, [sp, 0x10] - bl sub_800199C - bl _0809EAE0 -_080A0BA2: - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - ldr r1, [sp, 0xC] - ldr r2, [sp, 0x10] - bl ScenarioCalc - bl _0809EAE0 -_080A0BB4: - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r0, [r0, r2] - add r1, sp, 0x164 - add r2, sp, 0x168 - bl sub_8001B88 - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - add r1, sp, 0x164 - ldr r1, [r1] - add r2, sp, 0x168 - ldr r2, [r2] - adds r2, 0x1 - bl ScenarioCalc - bl _0809EAE0 -_080A0BDA: - ldr r2, [sp, 0xC] - movs r0, 0 - movs r1, 0x13 - bl sub_80018D8 - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r2, [r0, r4] - movs r0, 0 - movs r1, 0x16 - bl sub_80018D8 - bl _0809EAE0 -_080A0BF6: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r2, [r0, r5] - movs r0, 0 - movs r1, 0x1C - bl sub_80018D8 - bl _0809EAE0 -_080A0C08: - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - add r1, sp, 0x8 - ldrb r2, [r1, 0x1] - negs r1, r2 - orrs r1, r2 - lsrs r1, 31 - bl sub_80026E8 - bl _0809EAE0 -_080A0C20: - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r0, [r0, r2] - add r1, sp, 0x8 - ldrb r2, [r1, 0x1] - negs r1, r2 - orrs r1, r2 - lsrs r1, 31 - bl sub_809733C - bl _0809EAE0 -_080A0C38: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - add r1, sp, 0x8 - ldrb r2, [r1, 0x1] - negs r1, r2 - orrs r1, r2 - lsrs r1, 31 - bl sub_80973A8 - bl _0809EAE0 -_080A0C50: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r0, [r0, r4] - add r1, sp, 0x8 - ldrb r2, [r1, 0x1] - negs r1, r2 - orrs r1, r2 - lsrs r1, 31 - bl sub_8097418 - bl _0809EAE0 -_080A0C68: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r0, [r0, r5] - add r1, sp, 0x8 - ldrb r2, [r1, 0x1] - negs r1, r2 - orrs r1, r2 - lsrs r1, 31 - bl sub_80975A8 - bl _0809EAE0 -_080A0C80: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 24 - lsrs r0, 24 - bl sub_80976F8 - bl _0809EAE0 -_080A0C90: - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r0, r2] - ldr r2, [sp, 0xC] - movs r0, 0 - movs r3, 0x2 - bl sub_80022F8 - b _080A0E1E -_080A0CA2: - mov r0, r10 - adds r0, 0x50 - ldr r1, [sp, 0xC] - lsls r1, 16 - asrs r1, 16 - ldr r2, [sp, 0x10] - add r3, sp, 0x8 - ldrb r3, [r3, 0x1] - bl sub_80022F8 - lsls r0, 24 - cmp r0, 0 - bne _080A0CC0 - bl _0809EAE0 -_080A0CC0: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r1, [r0, r4] - b _080A0D5C -_080A0CC8: - mov r0, r10 - adds r0, 0x50 - ldr r1, [sp, 0xC] - lsls r1, 16 - asrs r1, 16 - ldr r2, [sp, 0x10] - lsls r2, 16 - asrs r2, 16 - add r3, sp, 0x8 - ldrb r3, [r3, 0x1] - bl sub_8002318 - lsls r0, 24 - cmp r0, 0 - bne _080A0CEA - bl _0809EAE0 -_080A0CEA: - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r0, r2] - b _080A0E2C -_080A0CF2: - mov r0, r10 - adds r0, 0x50 - ldr r1, [sp, 0xC] - lsls r1, 16 - asrs r1, 16 - ldr r2, [sp, 0x10] - lsls r2, 16 - lsrs r2, 16 - bl sub_8001784 - cmp r0, 0 - bne _080A0D0E - bl _0809EAE0 -_080A0D0E: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r1, [r0, r4] - b _080A0D5C -_080A0D16: - mov r0, r10 - adds r0, 0x50 - ldr r1, [sp, 0xC] - lsls r1, 16 - asrs r1, 16 - bl sub_8001AB0 - ldr r1, [sp, 0x10] - add r2, sp, 0x8 - ldrb r2, [r2, 0x1] - bl FlagJudge - lsls r0, 24 - cmp r0, 0 - bne _080A0D38 - bl _0809EAE0 -_080A0D38: - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r0, r2] - b _080A0E2C -_080A0D40: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r0, [r0, r4] - ldr r1, [sp, 0xC] - ldr r2, [sp, 0x10] - bl sub_8001CC4 - lsls r0, 24 - cmp r0, 0 - bne _080A0D58 - bl _0809EAE0 -_080A0D58: - add r0, sp, 0x8 - ldrb r1, [r0, 0x1] -_080A0D5C: - mov r0, r9 - bl sub_80A242C - mov r5, r10 - str r0, [r5, 0x4] - bl _0809EAE0 -_080A0D6A: - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - ldr r1, [sp, 0xC] - ldr r2, [sp, 0x10] - bl sub_8001D08 - b _080A0DBA -_080A0D7A: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - ldr r1, [sp, 0xC] - ldr r2, [sp, 0x10] - bl sub_8001D44 - lsls r0, 24 - cmp r0, 0 - bne _080A0D92 - bl _0809EAE0 -_080A0D92: - b _080A0DF6 -_080A0D94: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r0, [r0, r5] - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - bne _080A0DA8 - bl _0809EAE0 -_080A0DA8: - add r0, sp, 0x8 - ldrb r1, [r0, 0x1] - b _080A132A -_080A0DAE: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 24 - lsrs r0, 24 - bl sub_8098100 -_080A0DBA: - lsls r0, 24 - cmp r0, 0 - bne _080A0DC4 - bl _0809EAE0 -_080A0DC4: - add r0, sp, 0x8 - ldrb r1, [r0, 0x1] - mov r0, r9 - bl sub_80A242C - mov r2, r10 - str r0, [r2, 0x4] - bl _0809EAE0 -_080A0DD6: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80026CC - b _080A0E1E -_080A0DE2: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 24 - lsrs r0, 24 - bl sub_809CBA4 - cmp r0, 0 - bgt _080A0DF6 - bl _0809EAE0 -_080A0DF6: - add r0, sp, 0x8 - ldrb r1, [r0, 0x1] - mov r0, r9 - bl sub_80A242C - mov r4, r10 - str r0, [r4, 0x4] - bl _0809EAE0 -_080A0E08: - mov r5, r9 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080A0E16 - bl _0809EAE0 -_080A0E16: - movs r2, 0xA - ldrsh r0, [r5, r2] - bl sub_80A8C98 -_080A0E1E: - lsls r0, 24 - cmp r0, 0 - bne _080A0E28 - bl _0809EAE0 -_080A0E28: - add r0, sp, 0x8 - ldrb r1, [r0, 0x1] -_080A0E2C: - mov r0, r9 - bl sub_80A242C - mov r3, r10 - str r0, [r3, 0x4] - bl _0809EAE0 -_080A0E3A: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 24 - lsrs r0, 24 - bl FindItemInInventory - cmp r0, 0 - bge _080A0E4E - bl _0809EAE0 -_080A0E4E: - bl ShiftItemsDownFrom - bl _0809EAE0 -_080A0E56: - add r0, sp, 0x8 - ldrb r2, [r0] - adds r0, r2, 0 - subs r0, 0xC0 - cmp r0, 0xB - bls _080A0E64 - b _080A1088 -_080A0E64: - lsls r0, 2 - ldr r1, _080A0E70 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A0E70: .4byte _080A0E74 - .align 2, 0 -_080A0E74: - .4byte _080A0EA4 - .4byte _080A0EB6 - .4byte _080A0ECC - .4byte _080A0EFA - .4byte _080A0F08 - .4byte _080A0F14 - .4byte _080A0F26 - .4byte _080A0F36 - .4byte _080A0F98 - .4byte _080A1008 - .4byte _080A0F4C - .4byte _080A107A -_080A0EA4: - mov r0, r10 - adds r0, 0x50 - add r1, sp, 0x8 - movs r4, 0x2 - ldrsh r1, [r1, r4] - bl sub_8001658 - adds r1, r0, 0 - b _080A1098 -_080A0EB6: - mov r0, r10 - adds r0, 0x50 - add r1, sp, 0x8 - movs r5, 0x2 - ldrsh r1, [r1, r5] - bl sub_8001658 - ldr r1, [sp, 0xC] - add r2, sp, 0x8 - ldrb r2, [r2, 0x1] - b _080A0EF2 -_080A0ECC: - mov r4, r10 - adds r4, 0x50 - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r0, r2] - adds r0, r4, 0 - bl sub_8001658 - adds r5, r0, 0 - ldr r1, [sp, 0xC] - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_8001658 - adds r1, r0, 0 - add r0, sp, 0x8 - ldrb r2, [r0, 0x1] - adds r0, r5, 0 -_080A0EF2: - bl FlagCalc - adds r1, r0, 0 - b _080A1098 -_080A0EFA: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - bl OtherRandInt - adds r1, r0, 0 - b _080A1098 -_080A0F08: - add r0, sp, 0x8 - movs r4, 0x2 - ldrsh r1, [r0, r4] - movs r0, 0 - movs r2, 0 - b _080A0F1E -_080A0F14: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r1, [r0, r5] - movs r0, 0 - movs r2, 0x1 -_080A0F1E: - bl sub_8001784 - adds r1, r0, 0 - b _080A1098 -_080A0F26: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A8C2C - lsls r0, 16 - asrs r1, r0, 16 - b _080A1098 -_080A0F36: - mov r0, r9 - ldr r1, [r0] - ldr r0, [r0, 0x4] - add r4, sp, 0x54 - ldr r2, [r1, 0x14] - adds r1, r4, 0 - bl _call_via_r2 - movs r1, 0 - ldrsb r1, [r4, r1] - b _080A1098 -_080A0F4C: - mov r2, r9 - ldr r1, [r2] - ldr r0, [r2, 0x4] - movs r3, 0xB6 - lsls r3, 1 - add r3, sp - mov r8, r3 - ldr r2, [r1, 0xC] - mov r1, r8 - bl _call_via_r2 - add r6, sp, 0x16C - ldr r0, [r6] - ldr r1, [r6, 0x4] - add r4, sp, 0x174 - str r0, [r4] - str r1, [r4, 0x4] - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - adds r5, r4, 0 - adds r1, r5, 0 - bl sub_80AD8B4 - ldr r1, [r4] - ldr r0, [r6] - subs r1, r0 - add r0, sp, 0x17C - str r1, [r0] - ldr r1, [r5, 0x4] - mov r4, r8 - ldr r0, [r4, 0x4] - subs r1, r0 - add r0, sp, 0x17C - str r1, [r0, 0x4] - bl sub_8002C60 - b _080A106A -_080A0F98: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - asrs r6, r0, 16 - cmp r6, 0 - blt _080A1074 - mov r5, r9 - ldr r1, [r5] - ldr r0, [r5, 0x4] - movs r2, 0xC2 - lsls r2, 1 - add r2, sp - mov r8, r2 - ldr r2, [r1, 0xC] - mov r1, r8 - bl _call_via_r2 - ldr r1, [r5] - ldr r0, [r5, 0x4] - add r5, sp, 0x18C - ldr r2, [r1, 0x8] - adds r1, r5, 0 - bl _call_via_r2 - add r7, sp, 0x194 - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_80A8FD8 - add r4, sp, 0x19C - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80A8F9C - mov r0, r8 - adds r1, r5, 0 - adds r2, r7, 0 - adds r3, r4, 0 - bl sub_8002DF0 - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080A1098 - ldr r3, _080A1004 - mov r0, r8 - adds r1, r3, 0 - adds r2, r7, 0 - b _080A1066 - .align 2, 0 -_080A1004: .4byte gUnknown_81164DC -_080A1008: - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - asrs r7, r0, 16 - cmp r7, 0 - blt _080A1074 - mov r3, r9 - ldr r1, [r3] - ldr r0, [r3, 0x4] - add r6, sp, 0x1A4 - ldr r2, [r1, 0xC] - adds r1, r6, 0 - bl _call_via_r2 - mov r4, r9 - ldr r1, [r4] - ldr r0, [r4, 0x4] - add r4, sp, 0x1AC - ldr r2, [r1, 0x8] - adds r1, r4, 0 - bl _call_via_r2 - add r5, sp, 0x1B4 - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80A8FD8 - ldr r7, _080A1070 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r7, 0 - bl sub_8002DF0 - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080A1098 - adds r0, r6, 0 - adds r1, r7, 0 - adds r2, r5, 0 - adds r3, r7, 0 -_080A1066: - bl sub_8002D54 -_080A106A: - lsls r0, 24 - asrs r1, r0, 24 - b _080A1098 - .align 2, 0 -_080A1070: .4byte gUnknown_81164DC -_080A1074: - movs r1, 0x1 - negs r1, r1 - b _080A1098 -_080A107A: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r0, [r0, r5] - bl sub_809CC90 - adds r1, r0, 0 - b _080A1098 -_080A1088: - ldr r0, _080A1090 - ldr r1, _080A1094 - bl FatalError - .align 2, 0 -_080A1090: .4byte gUnknown_81166B4 -_080A1094: .4byte gUnknown_81166C0 -_080A1098: - mov r0, r9 - bl sub_80A2460 - b _080A1330 -_080A10A0: - mov r0, r10 - adds r0, 0x50 - add r1, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r1, r2] - bl sub_8001658 - adds r2, r0, 0 - mov r3, r10 - strh r2, [r3, 0x28] - ldr r1, [r3, 0x4] - ldrb r0, [r1] - cmp r0, 0xD0 - bne _080A10DE - lsls r0, r2, 16 - asrs r3, r0, 16 -_080A10C0: - adds r2, r1, 0 - movs r4, 0x2 - ldrsh r0, [r1, r4] - cmp r0, r3 - bne _080A10CE - bl _0809F0C4 -_080A10CE: - adds r0, r1, 0 - adds r0, 0x10 - mov r5, r10 - str r0, [r5, 0x4] - adds r1, r0, 0 - ldrb r0, [r2, 0x10] - cmp r0, 0xD0 - beq _080A10C0 -_080A10DE: - mov r1, r10 - ldr r0, [r1, 0x4] - ldrb r0, [r0] - cmp r0, 0xD1 - beq _080A10EC - bl _0809EAE0 -_080A10EC: - ldr r0, _080A10F4 - strh r0, [r1, 0x28] - bl _0809F0C4 - .align 2, 0 -_080A10F4: .4byte 0x0000ffff -_080A10F8: - ldr r7, [sp, 0x14] - ldr r1, _080A11F0 - movs r0, 0 - str r0, [r1] - mov r2, r10 - strh r0, [r2, 0x28] - add r0, sp, 0x8 - ldrb r0, [r0] - cmp r0, 0xD8 - bgt _080A1176 - cmp r0, 0xD6 - blt _080A1176 - mov r0, r10 - adds r0, 0x50 - ldr r1, [sp, 0x10] - lsls r1, 16 - asrs r1, 16 - bl sub_8001658 - adds r3, r0, 0 - mov r4, r10 - ldr r1, [r4, 0x4] - ldrb r0, [r1] - cmp r0, 0xD0 - bne _080A114E -_080A112A: - adds r2, r1, 0 - movs r5, 0x2 - ldrsh r0, [r2, r5] - cmp r0, r3 - bne _080A1136 - ldr r7, [r2, 0xC] -_080A1136: - adds r0, r1, 0 - adds r0, 0x10 - mov r1, r10 - str r0, [r1, 0x4] - ldrh r1, [r1, 0x28] - adds r1, 0x1 - mov r4, r10 - strh r1, [r4, 0x28] - adds r1, r0, 0 - ldrb r0, [r2, 0x10] - cmp r0, 0xD0 - beq _080A112A -_080A114E: - mov r5, r10 - ldr r1, [r5, 0x4] - ldrb r0, [r1] - cmp r0, 0xD1 - bne _080A1176 -_080A1158: - cmp r7, 0 - bne _080A115E - ldr r7, [r1, 0xC] -_080A115E: - mov r0, r10 - ldr r2, [r0, 0x4] - adds r1, r2, 0 - adds r1, 0x10 - str r1, [r0, 0x4] - ldrh r0, [r0, 0x28] - adds r0, 0x1 - mov r3, r10 - strh r0, [r3, 0x28] - ldrb r0, [r2, 0x10] - cmp r0, 0xD1 - beq _080A1158 -_080A1176: - cmp r7, 0 - bne _080A117C - ldr r7, _080A11F4 -_080A117C: - mov r4, r10 - ldr r5, [r4, 0x4] - ldrb r0, [r5] - cmp r0, 0xD9 - bne _080A11B8 - ldr r0, _080A11F8 - mov r8, r0 - ldr r6, _080A11F0 - movs r1, 0x4 - add r1, r8 - mov r12, r1 -_080A1192: - ldr r1, [r6] - lsls r2, r1, 3 - mov r4, r8 - adds r3, r2, r4 - adds r4, r5, 0 - ldr r0, [r4, 0xC] - str r0, [r3] - add r2, r12 - adds r1, 0x1 - str r1, [r2] - str r1, [r6] - adds r0, r4, 0 - adds r0, 0x10 - mov r5, r10 - str r0, [r5, 0x4] - adds r5, r0, 0 - ldrb r0, [r4, 0x10] - cmp r0, 0xD9 - beq _080A1192 -_080A11B8: - ldr r0, _080A11F0 - ldr r1, [r0] - cmp r1, 0 - bgt _080A11C4 - bl _0809EAE0 -_080A11C4: - ldr r3, _080A11F8 - lsls r2, r1, 3 - adds r1, r2, r3 - movs r0, 0 - str r0, [r1] - adds r0, r3, 0x4 - adds r2, r0 - add r0, sp, 0x8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - str r0, [r2] - add r0, sp, 0x8 - ldrb r0, [r0] - subs r0, 0xD2 - cmp r0, 0x6 - bhi _080A1280 - lsls r0, 2 - ldr r1, _080A11FC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A11F0: .4byte gUnknown_203B4AC -_080A11F4: .4byte gUnknown_81166D8 -_080A11F8: .4byte gUnknown_2039D50 -_080A11FC: .4byte _080A1200 - .align 2, 0 -_080A1200: - .4byte _080A121C - .4byte _080A121C - .4byte _080A123E - .4byte _080A1260 - .4byte _080A121C - .4byte _080A123E - .4byte _080A1260 -_080A121C: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 - movs r2, 0x1 - negs r2, r2 - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - str r0, [sp] - str r7, [sp, 0x4] - adds r0, r3, 0 - movs r3, 0 - bl sub_809B028 - b _080A1280 -_080A123E: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 - movs r2, 0x1 - negs r2, r2 - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - str r0, [sp] - str r7, [sp, 0x4] - adds r0, r3, 0 - movs r3, 0x1 - bl sub_809B028 - b _080A1280 -_080A1260: - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 - movs r2, 0x1 - negs r2, r2 - ldr r0, [sp, 0xC] - lsls r0, 16 - asrs r0, 16 - str r0, [sp] - str r7, [sp, 0x4] - adds r0, r3, 0 - movs r3, 0x2 - bl sub_809B028 -_080A1280: - mov r0, r9 - movs r1, 0x1 - bl sub_809D8EC - lsls r0, 24 - cmp r0, 0 - bne _080A1292 - bl _0809EAE0 -_080A1292: - movs r0, 0 - movs r1, 0xB - bl sub_80A87AC - bl _0809F0C4 -_080A129E: - mov r0, r9 - movs r1, 0x1 - bl sub_809D8EC - b _080A130A -_080A12A8: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] -_080A12AC: - mov r2, r10 -_080A12AE: - strh r0, [r2, 0x2A] - bl _0809F0C4 -_080A12B4: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r1, [r0, r3] - ldr r0, [sp, 0xC] - subs r0, r1 - bl OtherRandInt - add r1, sp, 0x8 - ldrh r1, [r1, 0x2] - adds r1, r0 - mov r4, r10 - strh r1, [r4, 0x2A] - bl _0809F0C4 -_080A12D0: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - mov r5, r10 - strh r0, [r5, 0x28] - add r0, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r0, r2] - mov r0, r9 - bl sub_809D8EC - b _080A130A -_080A12E6: - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - bl sub_809D9B8 - bl _0809EAE0 -_080A12F4: - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - mov r4, r10 - strh r0, [r4, 0x28] - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r1, [r0, r5] - ldrb r2, [r0, 0x1] - mov r0, r9 - bl sub_809DA08 -_080A130A: - lsls r0, 24 -_080A130C: - cmp r0, 0 - bne _080A1314 - bl _0809EAE0 -_080A1314: - bl _0809F0C4 -_080A1318: - mov r1, r10 - adds r1, 0x10 - mov r0, r10 - adds r0, 0x4 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} -_080A1324: - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r1, [r0, r5] -_080A132A: - mov r0, r9 - bl sub_80A242C -_080A1330: - mov r1, r10 - str r0, [r1, 0x4] - bl _0809EAE0 -_080A1338: - mov r1, r10 - adds r1, 0x10 - mov r0, r10 - adds r0, 0x4 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} -_080A1344: - ldr r2, _080A1364 - add r0, sp, 0x8 - movs r5, 0x2 - ldrsh r1, [r0, r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, 0x8 - adds r0, r2 - ldr r0, [r0] - mov r1, r10 - str r0, [r1, 0x4] - str r0, [r1, 0x8] - bl _0809EAE0 - .align 2, 0 -_080A1364: .4byte gFunctionScriptTable -_080A1368: - mov r1, r10 - adds r1, 0x10 - mov r0, r10 - adds r0, 0x4 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} -_080A1374: - ldr r0, _080A138C - movs r5, 0 - ldrsh r1, [r0, r5] - add r0, sp, 0x8 - ldrh r0, [r0, 0x2] - lsls r0, 16 - cmp r0, 0 - blt _080A1390 - add r0, sp, 0x8 - movs r3, 0x2 - ldrsh r2, [r0, r3] - b _080A1396 - .align 2, 0 -_080A138C: .4byte gUnknown_2039A34 -_080A1390: - mov r4, r10 - movs r5, 0xC - ldrsh r2, [r4, r5] -_080A1396: - adds r5, r2, 0 - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - lsls r0, 24 - cmp r0, 0 - blt _080A13AA - add r0, sp, 0x8 - movs r4, 0x1 - ldrsb r4, [r0, r4] - b _080A13B0 -_080A13AA: - mov r0, r10 - movs r4, 0xE - ldrsb r4, [r0, r4] -_080A13B0: - add r0, sp, 0x1C - adds r2, r5, 0 - adds r3, r4, 0 - bl GroundMap_GetStationScript - ldr r0, [sp, 0x1C] - mov r1, r10 - str r0, [r1, 0x4] - str r0, [r1, 0x8] - strh r5, [r1, 0xC] - strb r4, [r1, 0xE] - bl _0809EAE0 -_080A13CA: - mov r0, r10 - adds r0, 0x50 - add r1, sp, 0x8 - movs r2, 0x2 - ldrsh r1, [r1, r2] - bl sub_8001658 - lsls r0, 16 - asrs r0, 16 - bl sub_80A4D7C - ldr r4, _080A13F4 - strh r0, [r4] - bl sub_809D940 - movs r3, 0 - ldrsh r0, [r4, r3] - bl GroundMap_ExecuteEnter - bl _0809EAE0 - .align 2, 0 -_080A13F4: .4byte gUnknown_2039A34 -_080A13F8: - movs r0, 0 - mov r4, r10 - str r0, [r4, 0x10] - str r0, [r4, 0x14] - bl _0809EAE0 -_080A1404: - mov r5, r10 - ldr r0, [r5, 0x10] - cmp r0, 0 - bne _080A1410 -_080A140C: - movs r0, 0 - b _080A142E -_080A1410: - mov r0, r10 - adds r0, 0x4 - mov r1, r10 - adds r1, 0x10 - ldm r1!, {r2-r4} - stm r0!, {r2-r4} - movs r0, 0 - mov r5, r10 - str r0, [r5, 0x10] - str r0, [r5, 0x14] - bl _0809EAE0 -_080A1428: - movs r0, 0x1 - b _080A142E -_080A142C: - movs r0, 0x4 -_080A142E: - add sp, 0x1BC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end ExecuteScriptCommand - thumb_func_start sub_80A1440 sub_80A1440: push {r4,r5,lr} diff --git a/include/code_80A26CC.h b/include/code_80A26CC.h index 91655d190..b01fbeb6d 100644 --- a/include/code_80A26CC.h +++ b/include/code_80A26CC.h @@ -7,9 +7,9 @@ typedef struct DungeonInfo /* 0x0 */ s16 unk0; /* 0x2 */ s16 unk2; /* 0x4 */ s16 unk4; - /* 0x6 */ u16 unk6; - /* 0x8 */ u16 unk8; - /* 0xA */ u16 unkA; + /* 0x6 */ s16 unk6; + /* 0x8 */ s16 unk8; + /* 0xA */ s16 unkA; /* 0xC */ u8 dungeonIndex; /* 0xD */ u8 unkD; /* 0xE */ s16 unkE; @@ -40,4 +40,4 @@ bool8 sub_80A28F0(u8 index); s32 sub_80A29B0(u8 *); const u8 *sub_80A2B18(s16); -#endif // GUARD_CODE_80A26CC_H \ No newline at end of file +#endif // GUARD_CODE_80A26CC_H diff --git a/include/debug.h b/include/debug.h index 1c1b5fcbf..71c86c954 100644 --- a/include/debug.h +++ b/include/debug.h @@ -27,7 +27,7 @@ void PrintFuncFileLine(u8 *buf, DebugLocation *loc, const u8 *prefix); void PrintMessageWithFuncFileLine(u8 *buffer, DebugLocation *debug, const u8 *text, ...); void sub_8011B08(void); void sub_8011B88(const u8 *text, ...); -u32 ScriptLoggingEnabled(bool8); +s8 ScriptLoggingEnabled(bool8); u32 sub_8011BA8(void); const u8 *sub_8011BAC(void); void sub_8011B14(void); diff --git a/include/ground_script.h b/include/ground_script.h index 52eee2aa1..bae6c86bd 100644 --- a/include/ground_script.h +++ b/include/ground_script.h @@ -19,7 +19,7 @@ typedef struct ScriptInfoSmall /* 0x0 */ ScriptCommand *ptr; /* 0x4 */ s16 state; /* 0x6 */ s16 group; - /* 0x8 */ u8 sector; + /* 0x8 */ s8 sector; } ScriptInfoSmall; typedef struct ScriptInfo @@ -28,17 +28,17 @@ typedef struct ScriptInfo /* 0x0 */ ScriptCommand *ptr; /* 0x4 */ ScriptCommand *ptr2; /* 0x8 */ s16 group; - /* 0xA */ u8 sector; + /* 0xA */ s8 sector; } ScriptInfo; typedef union ScriptUnion832 { - u32 raw; - u8 arr[4]; + s32 raw; + s8 arr[4]; } ScriptUnion832; typedef union ScriptUnion1632 { - u32 raw; - u16 arr[2]; + s32 raw; + s16 arr[2]; } ScriptUnion1632; typedef struct ScriptData diff --git a/src/code_80A26CC.c b/src/code_80A26CC.c index e5c6abbd0..845da9f3c 100644 --- a/src/code_80A26CC.c +++ b/src/code_80A26CC.c @@ -461,4 +461,4 @@ const u8 *sub_80A2B18(s16 param_1) UNUSED static const u8 *sub_80A2B28(u16 r0) { return sub_80A2B18(sub_8001658(0, 17)); -} \ No newline at end of file +} diff --git a/src/debug.c b/src/debug.c index a27ba3ad6..bff40650a 100644 --- a/src/debug.c +++ b/src/debug.c @@ -170,7 +170,7 @@ void nullsub_28(void) { } -u32 ScriptLoggingEnabled(bool8 unused) +s8 ScriptLoggingEnabled(bool8 unused) { return 0; } diff --git a/src/ground_script_1.c b/src/ground_script_1.c index 40f0f04f3..67752d0cf 100644 --- a/src/ground_script_1.c +++ b/src/ground_script_1.c @@ -1,4 +1,1875 @@ #include "global.h" #include "debug.h" #include "ground_script.h" +#include "ground_map.h" +#include "dungeon.h" +// Needs incorrect redeclaration +#define GroundMainGroundRequest jaksdlasjdklajksdklajsd +#define GroundMainRescueRequest pudmvjhieasmlzgvouh +#include "ground_main.h" +#undef GroundMainGroundRequest +#undef GroundMainRescueRequest +bool8 GroundMainGroundRequest(s32 r0, u32 r1, s32 r2); +bool8 GroundMainRescueRequest(s32 r0, u32 r1); + +// Needs incorrect redeclaration +#define sub_80A2608 vpoiuj345nmoszuozgvdyhz +#include "code_80A26CC.h" +#undef sub_80A2608 +const DungeonInfo *sub_80A2608(s32 index); + +typedef struct { + u8 xTiles; + u8 xFlags; + u8 yTiles; + u8 yFlags; +} PosInfo; +typedef union { + u32 raw; + PosInfo fields; +} UPos; +typedef struct GroundObjectData { + u8 kind; + u8 unk1; + u8 widthTiles; + u8 heightTiles; + UPos pos; + ScriptCommand *scripts[4]; // 2 - dialogue script +} GroundObjectData; +typedef struct GroundEffectData { + u8 kind; + u8 unk1; + u8 widthTiles; //??? + u8 heightTiles; + UPos pos; + ScriptCommand *script; +} GroundEffectData; + +void GroundSprite_Reset(s16); +void GroundMap_Select(s16); +void GroundMap_SelectDungeon(s16, DungeonLocation*, u8); +void GroundMap_ExecuteEnter(s16); +void GroundMap_ExecuteEvent(s16, bool8); +void GroundMap_GetStationScript(ScriptInfoSmall *out, s16, s32, s32); +void GroundMap_ExecuteStation(s32, s32, s32, bool8); +void GroundLives_ExecuteScript(s32, s16 *, ScriptInfoSmall *); +void GroundObject_ExecuteScript(s32, s16 *, ScriptInfoSmall *); +void GroundEffect_ExecuteScript(s32, s16 *, ScriptInfoSmall *); +void GroundLink_Select(s16); +void GroundLives_Select(s16, s32 group, s32 sector); +void GroundObject_Select(s16, s32 group, s32 sector); +void GroundEffect_Select(s16, s32 group, s32 sector); +void GroundEvent_Select(s16, s32 group, s32 sector); +void GroundLives_Cancel(s32 group, s32 sector); +void GroundObject_Cancel(s32 group, s32 sector); +void GroundEffect_Cancel(s32 group, s32 sector); +void GroundEvent_Cancel(s32 group, s32 sector); +void GroundLives_CancelBlank_1(void); +void GroundObject_CancelBlank(void); +void GroundEffect_CancelBlank(void); +void GroundWeather_Select(s16); +u32 GroundLives_ExecutePlayerScriptActionLives(); +s16 GroundObject_Add(s16 id, GroundObjectData*, s16 group, s8 sector); +s16 GroundEffect_Add(s16 id, GroundEffectData*, s16 group, s8 sector); +u32 FlagCalc(); +u32 FlagJudge(); +s32 OtherRandInt(s32); // IT RETURNS s32!! Not s16! +void FatalError(void* loc, char* fmt, ...) __attribute__((noreturn)); + +s32 sub_8001658(ScriptUnion832*, s32); +void sub_8001570(u8*, s16); +void sub_80015C0(u8*, s16); +u32 sub_8001784(ScriptUnion832*, s16, u16); +void sub_80018D8(s32, s32, s32); +void sub_800199C(u8*, s16, u32, s32); +u32 sub_8001AB0(); +void sub_8001B88(s16, s32*, s32*); +u32 ScenarioCalc(s16, s32, s32); +u32 sub_8001CC4(); +u32 sub_8001D08(); +u32 sub_8001D44(); +void sub_800226C(u8*, s16, s32, u8); +void sub_80022A0(u8*, s16, s32, u8); +u32 sub_80022F8(); +u32 sub_8002318(); +u32 sub_80023E4(); +u32 sub_80026CC(); +void sub_80026E8(s16, bool8); +char sub_8002984(s32, u8); +u32 sub_8002C60(); +u32 sub_8002D54(); +u8 sub_8002DF0(Position32*, Position32*, Position32*, Position32*); +s32 sub_8009FB8(); +u32 StopAllMusic_1(); +u32 FadeOutAllMusic(); +u32 xxx_call_start_new_bgm(); +u32 xxx_call_queue_bgm(); +u32 xxx_call_stop_bgm(); +u32 xxx_call_fade_out_bgm(); +u32 xxx_call_play_fanfare_se(); +u32 xxx_call_stop_fanfare_se(); +u32 xxx_call_fade_out_fanfare_se(); +void xxx_call_fade_in_new_bgm(u16 id, u16 arg); //sub_8011900 +bool8 sub_8021700(s32); +bool8 sub_802FCF0(void); + + +s32 FindItemInInventory(); +u32 ShiftItemsDownFrom(); +u32 sub_80920B8(); +void sub_809733C(s16, bool8); +void sub_80973A8(s16, bool8); +void sub_8097418(s16, bool8); +void sub_80975A8(s16, bool8); +void sub_80976F8(u8); +u32 sub_8098100(); +void sub_8098D1C(s32, u32, s32); +void sub_8098D80(s32); +void sub_8098E18(s32, s32); +u32 sub_80999E8(); +u32 sub_80999FC(); +u32 sub_8099A10(); +u32 sub_8099A34(); +u32 sub_8099A48(); +u32 sub_8099A5C(); +u32 sub_8099AFC(); +u32 sub_809A6E4(); +u32 sub_809A6F8(); +u32 sub_809A738(); +u32 sub_809A768(); +bool8 ScriptPrintNullTextbox(void); +bool8 ScriptPrintEmptyTextbox(void); +u32 sub_809A83C(); +u32 sub_809AC7C(); +u32 sub_809ADD8(); +bool8 ScriptPrintText(s32, s16, char*); +bool8 sub_809AEEC(char*); +bool8 sub_809AF2C(char*); +bool8 sub_809AF6C(s16, char*); +void sub_809AFC8(bool8, s32, s32, char*); +u32 sub_809B028(); +bool8 sub_809B1C0(s32, s32, char[12]); +void sub_809B1D4(u8, s32, s32, char*); +void sub_809C770(s16, s16); +s32 sub_809CBA4(u8); +u32 sub_809CC90(); +void sub_809D0BC(void); +void sub_809D124(s32, s32, s32); +void sub_809D158(s32, Position32*); +void sub_809D170(s32, s32); +void sub_809D190(s32, Position32*, s32); +void sub_809D1A8(s32, s32, s32); +void sub_809D1CC(s32, Position32*, s32); +void sub_809D1E4(s32, s32, s32); +void sub_809D208(s32, Position32*, s32); +void sub_809D220(s32, s32, s32); +u32 sub_809D52C(); +u32 InitScriptData(); +void sub_809D710(Action*, ScriptInfoSmall*, s16); +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); +void sub_80A8BD8(s16, s32*); +u32 sub_80A8C2C(); +u32 sub_80A8C98(); +char *sub_80A8D54(s16); +s16 sub_80A8FD8(s32, Position32*); +s16 sub_80A8F9C(s32, Position32*); +u32 sub_80A9050(); +u32 sub_80A9090(); +s16 sub_80AC448(s16, Position32*); +s32 sub_80AC49C(s16, Position32*); +s16 sub_80AD360(s16, Position32*); +s16 sub_80AD3B4(s16, Position32*); +u32 sub_80AD8B4(); +u32 sub_80AD914(); +void DeleteBlankGroundEvents(void); +void DeleteBlankGroundLives(void); +void DeleteBlankGroundObjects(void); +void DeleteBlankGroundEffects(void); + +extern int gFormatData_202DE30[10]; + +extern s16 gCurrentMap; +extern s16 gUnknown_2039A32; +extern s16 gUnknown_2039A34; + +extern struct { char *unk0; s32 unk4; } gUnknown_2039D50[9]; +extern char gUnknown_2039D98[12]; +extern int gUnknown_203B4AC; + +extern FunctionScript gFunctionScriptTable[]; + +extern Position32 gUnknown_81164DC; +extern char gUnknown_81165D4[]; +extern char gUnknown_81165F4[]; +extern char gUnknown_811660C[]; +extern char gUnknown_8116628[]; +extern char gUnknown_8116644[]; +extern char gUnknown_8116664[]; +extern char gUnknown_8116684[]; +extern char gUnknown_81166C0[]; +extern char gUnknown_81166D8[]; + + +extern DebugLocation gUnknown_81166B4; + +/* No decompiler yet implemented for arm32 */ +s32 ExecuteScriptCommand(Action *action) { + ScriptCommand curCmd; + ScriptData *scriptData = &action->scriptData; + + while (1) { + scriptData->curPtr = scriptData->script.ptr; + curCmd = *scriptData->script.ptr++; + switch (scriptData->curScriptOp = curCmd.op) { + case 0x01: { + u32 arg = (s16)curCmd.arg1; + u32 argCopy = arg; + u32 byte = (u8)curCmd.argByte; + if (ScriptLoggingEnabled(TRUE)) { + // " ground select %3d[%s] %3d" + Log(1, gUnknown_81165D4, arg, gGroundConversion_811BAF4[arg].text, byte); + } + GroundMainGroundRequest(argCopy, byte, curCmd.argShort); + break; + } + case 0x02: { + s32 arg = (s16)curCmd.arg1; + if (arg == -1) arg = (s16)sub_8001658(0, 19); + if (ScriptLoggingEnabled(TRUE)) { + // " dungeon select %3d" + Log(1, gUnknown_81165F4, arg); + } + if (arg != -1) { + GroundMainRescueRequest(arg, curCmd.argShort); + action->scriptData.script.ptr = sub_80A2460(action, 1); + } else { + action->scriptData.script.ptr = sub_80A2460(action, 0); + } + break; + } + case 0x03: { + if ((s8)sub_8021700(curCmd.arg1)) { + action->scriptData.script.ptr = sub_80A2460(action, -1); + } else { + sub_8098D80(curCmd.argShort); + action->scriptData.script.ptr = sub_80A2460(action, 0); + } + break; + } + case 0x04: { + if (curCmd.arg1 == -1) { + if (!(u8)sub_802FCF0() && (u8)sub_809B1C0(12,0,0)) { + sub_80A87AC(0, 11); + action->scriptData.branchDiscriminant = 0; + } else { + action->scriptData.branchDiscriminant = -1; + } + return 2; // do action + } else { + sub_80018D8(0, 18, sub_80A26B8((s16)curCmd.arg1)); + action->scriptData.branchDiscriminant = 1; + return 2; // do action + } + break; + } + case 0x06: { + if (curCmd.arg1 == -1) { + if ((s8)sub_809B1C0(36, 0, 0)) { + sub_80A87AC(0, 11); + action->scriptData.branchDiscriminant = 0; + return 2; + } else { + action->scriptData.branchDiscriminant = -1; + return 2; + } + } else { + sub_80018D8(0, 19, curCmd.arg1); + action->scriptData.branchDiscriminant = 1; + return 2; + } + } + case 0x05: { + action->scriptData.branchDiscriminant = 1; + return 2; + } + case 0x07: { + s32 tmp = (s16)curCmd.arg1; + if (tmp == -1) { + tmp = (s16)sub_8001658(0, 19); + } else { + sub_80018D8(0, 19, tmp); + } + if (ScriptLoggingEnabled(TRUE)) { + Log(1, gUnknown_811660C, tmp); + } + if (tmp != -1) { + action->scriptData.branchDiscriminant = 1; + return 2; + } else { + action->scriptData.branchDiscriminant = -1; + return 2; + } + } + case 0x08: case 0x09: { + if (curCmd.op == 0x08) { + gCurrentMap = curCmd.arg1; + gUnknown_2039A32 = sub_80A4D7C((s16)curCmd.arg1); + gUnknown_2039A34 = gUnknown_2039A32; + if (ScriptLoggingEnabled(TRUE)) { + // " map select %3d %3d[%s]" + Log(1,gUnknown_8116628,gCurrentMap,gUnknown_2039A32, + gGroundConversion_811BAF4[gCurrentMap].text); + } + } else { + gUnknown_2039A32 = gCurrentMap = curCmd.arg1; + gUnknown_2039A34 = curCmd.arg1; + if (ScriptLoggingEnabled(TRUE)) { + // " ground select %3d %3d[%s]" + Log(1,gUnknown_8116644,gCurrentMap,gUnknown_2039A32, + gGroundConversion_811BAF4[gCurrentMap].text); + } + } + sub_80018D8(0,0x10,gCurrentMap); + sub_80018D8(0,0x11,gGroundConversion_811BAF4[gCurrentMap].unk2); + GroundSprite_Reset(gUnknown_2039A32); + sub_809D0BC(); + DeleteBlankGroundEvents(); + DeleteBlankGroundLives(); + DeleteBlankGroundObjects(); + DeleteBlankGroundEffects(); + sub_809C770(gCurrentMap, gGroundConversion_811BAF4[gCurrentMap].unk2); + GroundMap_Select(gUnknown_2039A32); + GroundLink_Select(gUnknown_2039A32); + GroundLives_Select(gUnknown_2039A32,0,0); + GroundObject_Select(gUnknown_2039A32,0,0); + break; + } + case 0x0a: { + const DungeonInfo *tmp; + DungeonLocation loc; + tmp = sub_80A2608((s16)curCmd.arg1); + gUnknown_2039A34 = gUnknown_2039A32 = gCurrentMap = (s16)curCmd.arg2; + if (ScriptLoggingEnabled(TRUE)) { + // " dungeon select %3d %3d[%s]" + Log(1, gUnknown_8116664, gCurrentMap,gUnknown_2039A32, + gGroundConversion_811BAF4[gCurrentMap].text); + } + GroundSprite_Reset(gUnknown_2039A32); + sub_809D0BC(); + DeleteBlankGroundEvents(); + DeleteBlankGroundLives(); + DeleteBlankGroundObjects(); + DeleteBlankGroundEffects(); + loc.id = tmp->dungeonIndex; + loc.floor = curCmd.argShort; + GroundMap_SelectDungeon(gUnknown_2039A32, &loc, curCmd.argByte); + GroundLink_Select(gUnknown_2039A32); + GroundLives_Select(gUnknown_2039A32,0,0); + GroundObject_Select(gUnknown_2039A32,0,0); + break; + } + case 0x0b: { + GroundWeather_Select((s16)curCmd.arg1); + break; + } + case 0x0c ... 0x15: { + s32 group; + s32 sector; + { + s32 tmp = curCmd.argShort < 0 ? scriptData->script.group : curCmd.argShort; + group = tmp; + } + { + s32 tmp = (s8)curCmd.argByte < 0 ? scriptData->script.sector : (s8)curCmd.argByte; + sector = tmp; + } + switch (curCmd.op) { + case 0x0c: { + GroundLives_Select(gUnknown_2039A32, group, sector); + GroundObject_Select(gUnknown_2039A32, group, sector); + GroundEffect_Select(gUnknown_2039A32, group, sector); + GroundEvent_Select(gUnknown_2039A32, group, sector); + break; + } + case 0x0d: { + GroundLives_Select(gUnknown_2039A32, group, sector); + break; + } + case 0x0e: { + GroundObject_Select(gUnknown_2039A32, group, sector); + break; + } + case 0x0f: { + GroundEffect_Select(gUnknown_2039A32, group, sector); + break; + } + case 0x10: { + GroundEvent_Select(gUnknown_2039A32, group, sector); + break; + } + case 0x11: { + GroundLives_Cancel(group, sector); + GroundObject_Cancel(group, sector); + GroundEffect_Cancel(group, sector); + GroundEvent_Cancel(group, sector); + break; + } + case 0x12: { + GroundLives_Cancel(group, sector); + break; + } + case 0x13: { + GroundObject_Cancel(group, sector); + break; + } + case 0x14: { + GroundEffect_Cancel(group, sector); + break; + } + case 0x15: { + GroundEvent_Cancel(group, sector); + break; + } + } + break; + } + case 0x16: { + GroundLives_CancelBlank_1(); + break; + } + case 0x17: { + GroundObject_CancelBlank(); + break; + } + case 0x18: { + GroundEffect_CancelBlank(); + break; + } + case 0x19: { + s8 unk[4]; + GroundObjectData *obj; + Position32 pos; + s16 res; + s32 group; + s32 sector; + action->callbacks->func14(action->parentObject, unk); + obj = ({ GroundObjectData obj = { + .unk1 = *unk, + .widthTiles = 1, + .heightTiles = 1, + .pos = {.raw = 0}, + .kind = curCmd.arg2, + .scripts = { [3] = gFunctionScriptTable[curCmd.arg1].script }, + }; + group = curCmd.argShort < 0 ? scriptData->script.group : curCmd.argShort; + sector = (s8)curCmd.argByte < 0 ? scriptData->script.sector : (s8)curCmd.argByte; + &obj; + }); + res = GroundObject_Add(-1, obj, group, sector); + if (res >= 0) { + action->callbacks->func0C(action->parentObject, &pos); + sub_80AC49C(res, &pos); + } + break; + } + case 0x1a: { + s8 unk; + GroundEffectData *eff; + Position32 pos; + s16 res; + s32 group; + s32 sector; + action->callbacks->func14(action->parentObject, &unk); + eff = ({ GroundEffectData eff = { + .unk1 = unk, + .widthTiles = 1, + .heightTiles = 1, + .pos = {.raw = 0}, + .kind = curCmd.arg2, + .script = gFunctionScriptTable[curCmd.arg1].script, + }; + group = curCmd.argShort < 0 ? scriptData->script.group : curCmd.argShort; + sector = (s8)curCmd.argByte < 0 ? scriptData->script.sector : (s8)curCmd.argByte; + &eff; + }); + res = GroundEffect_Add(-1, eff, group, sector); + if (res >= 0) { + action->callbacks->func0C(action->parentObject, &pos); + sub_80AD3B4(res, &pos); + } + break; + } + case 0x1c: { + GroundMap_ExecuteEvent(curCmd.argShort, 1); + break; + } + case 0x1b: { + GroundMap_ExecuteEvent(curCmd.argShort, 0); + break; + } + case 0x1d: case 0x1e: { + s32 map; + s32 group, sector; + bool8 res; + { + s32 tmp = curCmd.arg1 != -1 ? (s16)curCmd.arg1 : gCurrentMap; + map = tmp; + } + { + s32 tmp = curCmd.argShort < 0 ? scriptData->script.group : curCmd.argShort; + group = tmp; + } + { + s32 tmp = (s8)curCmd.argByte < 0 ? scriptData->script.sector : (s8)curCmd.argByte; + sector = tmp; + } + map = sub_80A4D7C(map); + res = curCmd.op == 0x1e; + GroundMap_ExecuteStation(map, group, sector, res); + if (gUnknown_2039A34 != map) { + gUnknown_2039A34 = map; + sub_809D940(); + if (action->unk8[0] != 0) + return 4; // Fatal? + } + break; + } + case 0x1f: { + s32 a = (s16)sub_8001658(0, 19); + const DungeonInfo *ret1 = sub_80A2608(a); + s32 thing = sub_8001784(0, 48, a) == 0 ? ret1->unk6 : ret1->unk8; + //s32 as = a; + //if (!(a >= 0x37 && a < 0x48) && (s16)sub_80A2750(a) == 1) { + // fakematch lmao + if (!((u16)(a - 0x37) < 0x11) && (s16)sub_80A2750(a) == 1) { + if (thing == -1) { + if (ScriptLoggingEnabled(TRUE)) { + // " dungeon rescue select %3d" + Log(1, gUnknown_8116684, a); + } + GroundMainRescueRequest(a, -1); + } else { + GroundMap_ExecuteEvent(thing, 0); + break; + } + } else { + GroundMainRescueRequest(a, -1); + } + break; + } + case 0x20: { + switch (action->unkC.arr[0]) { + case 0: + GroundMap_ExecuteEvent(curCmd.argShort, 0); + break; + case 1: { + ScriptInfoSmall info1; + sub_809D710(action, &info1, curCmd.argShort); + GroundLives_ExecuteScript(action->unkC.arr[1], action->unk8, &info1); + break; + } + case 2: { + ScriptInfoSmall info2; + sub_809D710(action, &info2, curCmd.argShort); + GroundObject_ExecuteScript(action->unkC.arr[1], action->unk8, &info2); + break; + } + case 3: { + ScriptInfoSmall info3; + sub_809D710(action, &info3, curCmd.argShort); + GroundEffect_ExecuteScript(action->unkC.arr[1], action->unk8, &info3); + break; + } + } + break; + } + case 0x21: { + s32 ret; + s32 unk; + Position32 pos1; + Position32 pos2; + Position32 pos3; + Position32 pos4; + s32 tmp; + ret = (s16)sub_80A7AE8((s16)curCmd.arg1); + if (ret >= 0) { + sub_80A8BD8(ret, &unk); + if (unk & 0x200) { + action->callbacks->func0C(action->parentObject, &pos1); + action->callbacks->func08(action->parentObject, &pos2); + sub_80A8FD8(ret, &pos3); + sub_80A8F9C(ret, &pos4); + if ((tmp = (s8)sub_8002DF0(&pos3, &pos4, &pos1, &pos2)) != -1 || + (tmp = (s8)sub_8002D54(&pos1, &gUnknown_81164DC, &pos3, &gUnknown_81164DC)) != -1) { + sub_80A9090(ret, tmp); + } + } + GroundLives_ExecutePlayerScriptActionLives(action->unk8[1], ret); + return 3; + } + break; + } + case 0x22: { + sub_80999E8(curCmd.argShort); + if (curCmd.argByte) return 2; + break; + } + case 0x23: { + sub_80999FC(curCmd.argShort); + if (curCmd.argByte) return 2; + break; + } + case 0x24: { + sub_8099A10(curCmd.argShort, (u16)curCmd.arg1, (u16)curCmd.arg2); + if (curCmd.argByte) return 2; + break; + } + case 0x25: { + sub_8099A34(curCmd.argShort); + if (curCmd.argByte) return 2; + break; + } + case 0x26: { + sub_8099A48(curCmd.argShort); + if (curCmd.argByte) return 2; + break; + } + case 0x27: case 0x28: { + //s8 color[4]; + // THANK YOU pidgey, only an array *inside* a struct works + s32 color = ({ + struct color { u8 arr[4]; } color = {{ + curCmd.arg2 >> 16, + curCmd.arg2 >> 8, + curCmd.arg2, + 0, + }}; + *(s32*)&color; + }); + //u32 raw; + //raw = *(u32*)color; + switch (curCmd.op) { + case 0x27: + sub_8099A5C(curCmd.argShort, curCmd.arg1, color); + break; + case 0x28: + sub_8099AFC(curCmd.argShort, curCmd.arg1, color); + break; + } + if (curCmd.argByte) return 2; + break; + } + case 0x29: { + sub_809A6E4((u16)curCmd.argShort); + break; + } + case 0x2a: { + sub_809A6F8((u16)curCmd.argShort); + break; + } + case 0x2b: { + sub_809A738(curCmd.arg1, curCmd.arg2); + break; + } + case 0x2c: { + if (!(s8)sub_809A768()) break; + sub_80A87AC(0, 10); + if ((s8)sub_809D8EC(action, 0)) return 2; + break; + } + case 0x30: { + ScriptPrintNullTextbox(); + break; + } + case 0x31: { + ScriptPrintEmptyTextbox(); + break; + } + case 0x2d: { + switch ((u8)curCmd.argByte) { + case 0: { + sub_809A83C(curCmd.argShort); + break; + } + case 1: { + sub_80A2500(curCmd.argShort, action->unk8); + break; + } + case 2: { + sub_80A2500(curCmd.argShort, action->unkC.arr); + break; + } + case 3: { + struct {s16 unk0; s16 unk2;} unk; + unk.unk2 = sub_80A7AE8((s16)curCmd.arg1); + unk.unk0 = 1; + sub_80A2500(curCmd.argShort, (void*)&unk); + break; + } + case 4: { + sub_80A252C(curCmd.argShort, action->unk8); + break; + } + case 5: { + sub_80A252C(curCmd.argShort, action->unkC.arr); + break; + } + case 6: { + struct {s16 unk0; s16 unk2;} unk; + s16 res = sub_80A7AE8((s16)curCmd.arg1); + unk.unk2 = res; + if (unk.unk2 >= 0) { + unk.unk0 = 1; + sub_80A252C(curCmd.argShort, (void*)&unk); + } else { + sub_80A2584(curCmd.argShort, (s16)curCmd.arg1); + } + break; + } + case 7: { + sub_80A2558(curCmd.argShort, action->unk8); + break; + } + case 8: { + sub_80A2558(curCmd.argShort, action->unkC.arr); + break; + } + case 9: { + struct {s16 unk0; s16 unk2;} unk; + s16 res = sub_80A7AE8((s16)curCmd.arg1); + unk.unk2 = res; + if (unk.unk2 >= 0) { + unk.unk0 = 1; + sub_80A2558(curCmd.argShort, (void*)&unk); + } else { + sub_80A2598(curCmd.argShort, (s16)curCmd.arg1); + } + break; + } + case 10: { + u8 a = sub_80A2740((s16)curCmd.arg1); + s32 o = 0; + switch ((s16)curCmd.arg1) { + case 0: o = 1; break; + case 2: o = -1; break; + } + gFormatData_202DE30[curCmd.argShort] = GetDungeonFloorCount(a) + o; + break; + } + } + break; + } + case 0x2e: { + sub_809AC7C(curCmd.argShort, (s8)curCmd.arg1, (u8)curCmd.argByte); + break; + } + case 0x2f: { + s32 unk[2]; + unk[0] = curCmd.arg1; + unk[1] = curCmd.arg2; + sub_809ADD8(curCmd.argShort, unk); + break; + } + case 0x32 ... 0x38: { + s8 ret = 0; + switch (scriptData->curScriptOp) { + case 0x32: ret = ScriptPrintText(0, curCmd.argShort, curCmd.argPtr); break; + case 0x33: ret = ScriptPrintText(1, curCmd.argShort, curCmd.argPtr); break; + case 0x34: ret = ScriptPrintText(2, curCmd.argShort, curCmd.argPtr); break; + case 0x35: ret = ScriptPrintText(3, curCmd.argShort, curCmd.argPtr); break; + case 0x36: ret = ScriptPrintText(4, curCmd.argShort, curCmd.argPtr); break; + case 0x37: ret = sub_809AEEC(curCmd.argPtr); break; + case 0x38: ret = sub_809AF2C(curCmd.argPtr); break; + } + if (ret) { + sub_80A87AC(0, 10); + if ((s8)sub_809D8EC(action, 0)) return 2; + } + break; + } + case 0x39: { + if ((s8)sub_809AF6C(curCmd.argShort, curCmd.argPtr) && curCmd.argShort >= 0) { + sub_80A87AC(0, 10); + if ((s8)sub_809D8EC(action, 0)) return 2; + } + break; + } + case 0x3a: { + sub_809AFC8((u8)curCmd.argByte > 0, curCmd.arg1, (s16)curCmd.arg2, curCmd.argPtr); + if ((s8)sub_809D8EC(action, 1)) { + sub_80A87AC(0, 11); + return 2; + } + break; + } + case 0x3c: { + sub_809B1D4(curCmd.argByte, curCmd.arg1, curCmd.arg2, curCmd.argPtr); + sub_80A87AC(0, 11); + return 2; + } + case 0x3b: { + scriptData->unk2A = 0; + return 2; + } + case 0x3d: { + struct { u8 pad[0x4c]; u8 unk4C[10]; } *unk; // unknown struct + int i; + if ((s16)curCmd.arg1 != -1) { + unk = (void*)sub_80A8D54(curCmd.arg1); + if (unk) { + for (i = 0; i < 10; i++) { + gUnknown_2039D98[i] = unk->unk4C[i]; + } + gUnknown_2039D98[10] = 0; + sub_809B1C0(4, 0, gUnknown_2039D98); + sub_80A87AC(0, 11); + return 2; + } + break; + } else { + sub_809B1C0(4, 1, gUnknown_2039D98); + sub_80A87AC(0, 11); + return 2; + } + } + case 0x3e: { + sub_80920B8(gUnknown_2039D98); + gUnknown_2039D98[10] = 0; + sub_809B1C0(5, 0, gUnknown_2039D98); + sub_80A87AC(0, 11); + return 2; + } + case 0x3f: { + int i; + for (i = 0; i < 12; i++) { + gUnknown_2039D98[i] = 0; + } + sub_809B1C0(6, (u8)curCmd.argByte, gUnknown_2039D98); + sub_80A87AC(0, 11); + return 2; + } + case 0x42: { + StopAllMusic_1(); + break; + } + case 0x43: { + FadeOutAllMusic(curCmd.argShort < 0 ? 30 : (u16)curCmd.argShort); + break; + } + case 0x44: { + u16 id = curCmd.argByte == 0 ? sub_80A25AC((u16)curCmd.arg1) : curCmd.arg1; + if (id != 999) { + xxx_call_start_new_bgm((u16)id); + } else { + xxx_call_stop_bgm(); + } + break; + } + case 0x45: { + u16 id = curCmd.argByte == 0 ? sub_80A25AC((u16)curCmd.arg1) : curCmd.arg1; + if (id != 999) { + xxx_call_fade_in_new_bgm((u16)id, (u16)curCmd.argShort); //sub_8011900 + } else { + xxx_call_stop_bgm(); + } + break; + } + case 0x46: { + u16 id = curCmd.argByte == 0 ? sub_80A25AC((u16)curCmd.arg1) : curCmd.arg1; + if (id != 999) { + xxx_call_queue_bgm((u16)id); + } + break; + } + case 0x47: { + xxx_call_stop_bgm(); + break; + } + case 0x48: { + xxx_call_fade_out_bgm(curCmd.argShort < 0 ? 30 : (u16)curCmd.argShort); + break; + } + case 0x49: case 0x4c: { + xxx_call_play_fanfare_se((u16)curCmd.arg1, 256); + break; + } + case 0x4a: case 0x4d: { + xxx_call_stop_fanfare_se((u16)curCmd.arg1); + break; + } + case 0x4b: case 0x4e: { + xxx_call_fade_out_fanfare_se((u16)curCmd.arg1, curCmd.argShort < 0 ? 30 : (u16)curCmd.argShort); + break; + } + case 0x4f: { + if (action->scriptData2.state == 1) { + InitScriptData(&action->scriptData2); + } + action->callbacks->func1C(action->parentObject, 0); + break; + } + case 0x50: { + Action *ptr; + Position32 pos; + s8 c; + { + Action *tmp = (Action*)sub_809D52C(action->unkC.arr); + ptr = tmp; + } + if (ptr) { + ptr->callbacks->func0C(action->parentObject, &pos); + ptr->callbacks->func14(action->parentObject, &c); + action->callbacks->func24(action->parentObject, &pos); + action->scriptData.unk26 = c; + action->callbacks->func2C(action->parentObject, c); + } + break; + } + case 0x51: { + Position32 posIn; + Position32 posOut1; + Position32 posOut2; + action->callbacks->func0C(action->parentObject, &posIn); + sub_80AD914(curCmd.argShort, &posOut1, &posOut2, &posIn); + action->callbacks->func20(action->parentObject, &posOut1, &posOut2); + break; + } + case 0x52: { + action->callbacks->func3C(action->parentObject, curCmd.arg1); + break; + } + case 0x53: { + if (curCmd.arg1 & 0x400 && action->scriptData2.state == 1) { + InitScriptData(&action->scriptData2); + } + action->callbacks->func40(action->parentObject, curCmd.arg1); + break; + } + case 0x54: { + action->callbacks->func14(action->parentObject, &action->scriptData.unk26); + if (curCmd.argShort) { + action->scriptData.unk24 = curCmd.argShort; + } + action->callbacks->func30(action->parentObject, (u16)curCmd.argShort); + break; + } + case 0x55: { + action->callbacks->func34(action->parentObject, (u16)curCmd.argShort); + break; + } + case 0x56: { + action->callbacks->func38(action->parentObject, (s16)curCmd.arg1, curCmd.argShort); + break; + } + case 0x57: { + action->callbacks->func44(action->parentObject, curCmd.argShort); + break; + } + case 0x58: { + u32 unk[2]; + unk[0] = curCmd.arg1 << 8; + unk[1] = curCmd.arg2 << 8; + action->callbacks->func24(action->parentObject, unk); + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x59: { + u32 unk[2]; + unk[0] = curCmd.argShort << 8; + unk[1] = curCmd.arg1 << 8; + action->callbacks->func48(action->parentObject, unk); + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x5a: { + u32 unk[2]; + unk[0] = OtherRandInt(curCmd.argShort) << 8; + unk[1] = OtherRandInt(curCmd.arg1) << 8; + action->callbacks->func48(action->parentObject, unk); + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x5b: { + Position32 unk; + action->callbacks->func0C(action->parentObject, &unk); + sub_80AD8B4((s16)curCmd.arg1, &unk); + action->callbacks->func24(action->parentObject, &unk); //FIXME: landing end of unwanted tailmerge + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x5c: { + Position32 pos, pos1, pos2; + action->callbacks->func0C(action->parentObject, &pos); + sub_80AD914((s16)curCmd.arg1, &pos1, &pos2, &pos); + pos.x = pos1.x + OtherRandInt(pos2.x - pos1.x); + pos.y = pos1.y + OtherRandInt(pos2.y - pos1.y); + action->callbacks->func24(action->parentObject, &pos); + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x5d: { + Position32 unk; + s16 res = sub_80A7AE8((s16)curCmd.arg1); + if (res >= 0) { + sub_80A8FD8(res, &unk); + action->callbacks->func24(action->parentObject, &unk); + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + break; + } + case 0x5e: { + Position32 pos; + s32 height; + s32 dir; + pos.x = sub_8001784(0, 0x32, (u16)curCmd.arg1); // POSITION_X + pos.y = sub_8001784(0, 0x33, (u16)curCmd.arg1); // POSITION_Y + height = sub_8001784(0, 0x34, (u16)curCmd.arg1); // POSITION_HEIGHT + dir = (s8)sub_8001784(0, 0x35, (u16)curCmd.arg1); // POSITION_DIRECTION + action->callbacks->func24(action->parentObject, &pos); + action->callbacks->func28(action->parentObject, height); + action->scriptData.unk26 = dir; + action->callbacks->func2C(action->parentObject, dir); + // FIXME: unwanted tailmerge +#ifndef NONNMATCHING + asm(""); +#endif + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x5f: { + Position32 pos; + u32 height; + u32 wat; + s8 dir; + action->callbacks->func0C(action->parentObject, &pos); + action->callbacks->func10(action->parentObject, &height, &wat); + action->callbacks->func14(action->parentObject, &dir); + sub_800199C(0, 0x32, (u16)curCmd.arg1, pos.x); + sub_800199C(0, 0x33, (u16)curCmd.arg1, pos.y); + sub_800199C(0, 0x34, (u16)curCmd.arg1, height); + sub_800199C(0, 0x35, (u16)curCmd.arg1, dir); + break; + } + case 0x60: { + action->callbacks->func28(action->parentObject, curCmd.arg1 << 8); + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x61: case 0x69: { + scriptData->pos2.x = curCmd.arg1 << 8; + scriptData->pos2.y = curCmd.arg2 << 8; + scriptData->unk30 = curCmd.argShort; + scriptData->unk2A = -1; + return 2; + } + case 0x62: case 0x6a: { + u32 pos[2]; + action->callbacks->func0C(action->parentObject, pos); + scriptData->pos2.x = pos[0] + (curCmd.arg1 << 8); + scriptData->pos2.y = pos[1] + (curCmd.arg2 << 8); + scriptData->unk30 = curCmd.argShort; + scriptData->unk2A = -1; + return 2; + } + case 0x63: case 0x6b: { + action->callbacks->func0C(action->parentObject, &scriptData->pos2); + sub_80AD8B4((s16)curCmd.arg1, &scriptData->pos2); + scriptData->unk30 = curCmd.argShort; + scriptData->unk2A = -1; + return 2; + } + case 0x64: case 0x6c: { + action->callbacks->func0C(action->parentObject, &scriptData->pos2); + sub_80AD8B4((s16)curCmd.arg1, &scriptData->pos2); + scriptData->unk30 = curCmd.argShort; + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x65: case 0x6d: { + action->callbacks->func0C(action->parentObject, &scriptData->pos2); + sub_80AD8B4((s16)curCmd.arg1, &scriptData->pos2); + scriptData->unk30 = curCmd.argShort; + scriptData->unk2A = OtherRandInt((u8)curCmd.argByte); + return 2; + } + case 0x66: case 0x67: case 0x6e: case 0x6f: { + s16 ret = sub_80A7AE8((s16)curCmd.arg1); + if (ret >= 0) { + sub_80A8FD8(ret, &scriptData->pos2); + scriptData->unk30 = curCmd.argShort; + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + break; + } + case 0x71: case 0x77: case 0x7d: case 0x83: { + action->callbacks->func0C(action->parentObject, &scriptData->pos1); + scriptData->pos2.x = curCmd.arg1 << 8; + scriptData->pos2.y = curCmd.arg2 << 8; + if (curCmd.op == 0x7d || curCmd.op == 0x83) { + scriptData->unk2A = sub_8009FB8(scriptData->pos2.x - scriptData->pos1.x, scriptData->pos2.y - scriptData->pos1.y) / curCmd.argShort; + if (scriptData->unk2A <= 0) scriptData->unk2A = 1; + } else { + scriptData->unk2A = curCmd.argShort; + } + return 2; + } + case 0x72: case 0x78: case 0x7e: case 0x84: { + action->callbacks->func0C(action->parentObject, &scriptData->pos1); + scriptData->pos2.x = scriptData->pos1.x + (curCmd.arg1 << 8); + scriptData->pos2.y = scriptData->pos1.y + (curCmd.arg2 << 8); + if (curCmd.op == 0x7e || curCmd.op == 0x84) { + scriptData->unk2A = sub_8009FB8(scriptData->pos2.x - scriptData->pos1.x, scriptData->pos2.y - scriptData->pos1.y) / curCmd.argShort; + if (scriptData->unk2A <= 0) scriptData->unk2A = 1; + } else { + scriptData->unk2A = curCmd.argShort; + } + return 2; + } + case 0x73: case 0x79: case 0x7f: case 0x85: { + s32 cap1 = curCmd.arg1 * 2 - 1; + s32 cap2 = curCmd.arg2 * 2 - 1; + action->callbacks->func0C(action->parentObject, &scriptData->pos1); + scriptData->pos2.x = scriptData->pos1.x + ((OtherRandInt(cap1) - curCmd.argShort) << 8); + scriptData->pos2.y = scriptData->pos1.y + ((OtherRandInt(cap2) - curCmd.arg1) << 8); + if (curCmd.op == 0x7f || curCmd.op == 0x85) { + scriptData->unk2A = sub_8009FB8(scriptData->pos2.x - scriptData->pos1.x, scriptData->pos2.y - scriptData->pos1.y) / curCmd.argShort; + if (scriptData->unk2A <= 0) scriptData->unk2A = 1; + } else { + scriptData->unk2A = curCmd.argShort; + } + return 2; + } + case 0x74: case 0x7a: case 0x80: case 0x86: { + action->callbacks->func0C(action->parentObject, &scriptData->pos1); + scriptData->pos2 = scriptData->pos1; + sub_80AD8B4((s16)curCmd.arg1, &scriptData->pos2); + if (curCmd.op == 0x80 || curCmd.op == 0x86) { + scriptData->unk2A = sub_8009FB8(scriptData->pos2.x - scriptData->pos1.x, scriptData->pos2.y - scriptData->pos1.y) / curCmd.argShort; + if (scriptData->unk2A <= 0) scriptData->unk2A = 1; + } else { + scriptData->unk2A = curCmd.argShort; + } + return 2; + } + case 0x75: case 0x7b: case 0x81: case 0x87: { + s32 cap = curCmd.arg1 * 2 - 1; + action->callbacks->func0C(action->parentObject, &scriptData->pos2); + sub_80AD8B4((s16)curCmd.arg2, &scriptData->pos2); + scriptData->pos2.x = scriptData->pos2.x + ((OtherRandInt(cap) - curCmd.argShort) << 8); + scriptData->pos2.y = scriptData->pos2.y + ((OtherRandInt(cap) - curCmd.argShort) << 8); + if (curCmd.op == 0x81 || curCmd.op == 0x87) { + scriptData->unk2A = sub_8009FB8(scriptData->pos2.x - scriptData->pos1.x, scriptData->pos2.y - scriptData->pos1.y) / curCmd.argShort; + if (scriptData->unk2A <= 0) scriptData->unk2A = 1; + } else { + scriptData->unk2A = curCmd.argShort; + } + return 2; + } + case 0x76: case 0x7c: case 0x82: case 0x88: { + s16 ret = sub_80A7AE8((s16)curCmd.arg1); + if (ret >= 0) { + action->callbacks->func0C(action->parentObject, &scriptData->pos1); + sub_80A8FD8(ret, &scriptData->pos2); + if (curCmd.op == 0x82 || curCmd.op == 0x88) { + scriptData->unk2A = sub_8009FB8(scriptData->pos2.x - scriptData->pos1.x, scriptData->pos2.y - scriptData->pos1.y) / curCmd.argShort; + if (scriptData->unk2A <= 0) scriptData->unk2A = 1; + } else { + scriptData->unk2A = curCmd.argShort; + } + return 2; + } + break; + } + case 0x68: case 0x70: { + scriptData->unk48 = curCmd.arg1 << 8; + scriptData->unk30 = curCmd.argShort; + scriptData->unk2A = -1; + return 2; + } + case 0x89: { + action->scriptData.unk26 = curCmd.arg1; + action->callbacks->func2C(action->parentObject, (s8) curCmd.arg1); + scriptData->unk30 = curCmd.argShort; + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x8a: { + s8 dir; + action->callbacks->func14(action->parentObject, &dir); + action->scriptData.unk26 = sub_8002984(dir, (s8)curCmd.arg1); + action->callbacks->func2C(action->parentObject, action->scriptData.unk26); + scriptData->unk30 = curCmd.argShort; + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x8b: { + action->scriptData.unk26 = curCmd.argShort; + action->callbacks->func2C(action->parentObject, action->scriptData.unk26); + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x8c: { + int ret = (s16)sub_80A7AE8((s16)curCmd.arg1); + s8 dir; + if (ret >= 0) { + sub_80A9050(ret, &dir); + action->scriptData.unk26 = sub_8002984(dir, curCmd.argShort); + action->callbacks->func2C(action->parentObject, action->scriptData.unk26); + } + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x8d: { + s8 dir; + action->callbacks->func14(action->parentObject, &dir); + action->scriptData.unk26 = sub_8002984(dir, curCmd.argShort); + action->callbacks->func2C(action->parentObject, action->scriptData.unk26); + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x8e: case 0x8f: case 0x90: { + bool8 flag = FALSE; + s8 dir; + Position32 pos1, pos2, pos3, pos4; + switch (curCmd.op) { + case 0x8e: { + s32 val = (s16)sub_80A7AE8((s16)curCmd.arg1); + if (val >= 0) { + flag = TRUE; + sub_80A8FD8(val, &pos1); + sub_80A8F9C(val, &pos2); + } + break; + } + case 0x8f: { + s32 val = (s16)sub_80A7AE8((s16)curCmd.arg1); + if (val >= 0) { + flag = TRUE; + sub_80A8FD8(val, &pos1); + pos2 = gUnknown_81164DC; + } + break; + } + case 0x90: { + flag = TRUE; + action->callbacks->func0C(action->parentObject, &pos1); + action->callbacks->func08(action->parentObject, &pos2); + sub_80AD8B4((s16)curCmd.arg1, &pos1); + break; + } + } + if (flag) { + s8 ret; + int tmp; + action->callbacks->func0C(action->parentObject, &pos3); + action->callbacks->func08(action->parentObject, &pos4); + ret = sub_8002DF0(&pos3, &pos4, &pos1, &pos2); // wtf + *&dir = ret; + + tmp = -1; // This feels like a fakematch... + if (dir == tmp) { + dir = sub_8002D54(&pos3, &gUnknown_81164DC, &pos1, &gUnknown_81164DC); + } + if (dir == tmp) { + action->callbacks->func14(action->parentObject, &dir); + } + action->scriptData.unk26 = sub_8002984(dir, (s8)curCmd.argShort); + action->callbacks->func2C(action->parentObject, action->scriptData.unk26); + } + scriptData->unk2A = (u8)curCmd.argByte; + return 2; + } + case 0x93: case 0x94: case 0x95: { + scriptData->unk2A = 0; + return 2; + } + case 0x91: { + action->scriptData.unk4D = (s8)curCmd.arg1; + scriptData->unk2A = 0; + return 2; + } + case 0x92: { + s8 unk; + action->callbacks->func14(action->parentObject, &unk); + action->scriptData.unk4D = sub_8002984(unk, (s8)curCmd.arg1); + scriptData->unk2A = 0; + return 2; + } + case 0x97: { + sub_809D124(curCmd.argShort, curCmd.arg1, curCmd.arg2); + break; + } + case 0x98: { + s32 id = action->callbacks->func04(action->parentObject); + switch(action->unk8[0]) { + case 1: + sub_809D170(1, id); + break; + case 2: + sub_809D170(2, id); + break; + case 3: + sub_809D170(3, id); + break; + } + break; + } + case 0x99: { + s32 id = action->callbacks->func04(action->parentObject); + Position32 unk; + switch(action->unk8[0]) { + case 1: + sub_80A8FD8(id, &unk); + sub_809D158(0, &unk); + break; + case 2: + sub_80AC448(id, &unk); + sub_809D158(0, &unk); + break; + case 3: + sub_80AD360(id, &unk); + sub_809D158(0, &unk); + break; + } + break; + } + case 0x9a: { + sub_809D170(1, 0); + break; + } + case 0x9b: { + s32 id = action->callbacks->func04(action->parentObject); + if (id < 0) break; + switch(action->unk8[0]) { + case 1: + sub_809D1A8(1, id, curCmd.argShort); + return 2; + case 2: + sub_809D1A8(2, id, curCmd.argShort); + return 2; + case 3: + sub_809D1A8(3, id, curCmd.argShort); + return 2; + } + break; + } + case 0x9c: { + s32 id = action->callbacks->func04(action->parentObject); + Position32 unk; + switch(action->unk8[0]) { + case 1: + sub_80A8FD8(id, &unk); + sub_809D190(0, &unk, curCmd.argShort); + return 2; + case 2: + sub_80AC448(id, &unk); + sub_809D190(0, &unk, curCmd.argShort); + return 2; + case 3: + sub_80AD360(id, &unk); + sub_809D190(0, &unk, curCmd.argShort); + return 2; + } + break; + } + case 0x9d: { + sub_809D1A8(1, 0, curCmd.argShort); + return 2; + } + case 0x9e: { + s32 id = action->callbacks->func04(action->parentObject); + if (id < 0) break; + switch(action->unk8[0]) { + case 1: + sub_809D1E4(1, id, curCmd.argShort); + return 2; + case 2: + sub_809D1E4(2, id, curCmd.argShort); + return 2; + case 3: + sub_809D1E4(3, id, curCmd.argShort); + return 2; + } + break; + } + case 0x9f: { + s32 id = action->callbacks->func04(action->parentObject); + Position32 unk; + switch(action->unk8[0]) { + case 1: + sub_80A8FD8(id, &unk); + sub_809D1CC(0, &unk, curCmd.argShort); + return 2; + case 2: + sub_80AC448(id, &unk); + sub_809D1CC(0, &unk, curCmd.argShort); + return 2; + case 3: + sub_80AD360(id, &unk); + sub_809D1CC(0, &unk, curCmd.argShort); + return 2; + } + break; + } + case 0xa0: { + sub_809D1E4(1, 0, curCmd.argShort); + return 2; + } + case 0xa1: { + s32 id = action->callbacks->func04(action->parentObject); + if (id < 0) break; + switch(action->unk8[0]) { + case 1: + sub_809D220(1, id, curCmd.argShort); + return 2; + case 2: + sub_809D220(2, id, curCmd.argShort); + return 2; + case 3: + sub_809D220(3, id, curCmd.argShort); + return 2; + } + break; + } + case 0xa2: { + s32 id = action->callbacks->func04(action->parentObject); + Position32 unk; + switch(action->unk8[0]) { + case 1: + sub_80A8FD8(id, &unk); + sub_809D208(0, &unk, curCmd.argShort); + return 2; + case 2: + sub_80AC448(id, &unk); + sub_809D208(0, &unk, curCmd.argShort); + return 2; + case 3: + sub_80AD360(id, &unk); + sub_809D208(0, &unk, curCmd.argShort); + return 2; + } + break; + } + case 0xa3: { + sub_809D220(1, 0, curCmd.argShort); + return 2; + } + case 0xa4: { + sub_8001570(scriptData->unk50[0].arr, curCmd.argShort); + break; + } + case 0xa5: { + sub_80015C0(scriptData->unk50[0].arr, curCmd.argShort); + break; + } + case 0xa6: { + sub_800226C(scriptData->unk50[0].arr, curCmd.argShort, curCmd.arg1, curCmd.argByte); + break; + } + case 0xa7: { + sub_80022A0(scriptData->unk50[0].arr, curCmd.argShort, (s16)curCmd.arg1, curCmd.argByte); + break; + } + case 0xa8: { + sub_800199C(scriptData->unk50[0].arr, curCmd.argShort, (u16)curCmd.arg1, curCmd.arg2); + break; + } + case 0xa9: { + ScenarioCalc(curCmd.argShort, curCmd.arg1, curCmd.arg2); + break; + } + case 0xaa: { + s32 a, b; + sub_8001B88(curCmd.argShort, &a, &b); + ScenarioCalc(curCmd.argShort, a, b+1); + break; + } + case 0xab: { + sub_80018D8(0, 19, curCmd.arg1); + sub_80018D8(0, 22, curCmd.argShort); + break; + } + case 0xac: { + sub_80018D8(0, 28, curCmd.argShort); + break; + } + case 0xad: { + sub_80026E8(curCmd.argShort, (u8)curCmd.argByte > 0); + break; + } + case 0xae: { + sub_809733C(curCmd.argShort, (u8)curCmd.argByte > 0); + break; + } + case 0xaf: { + sub_80973A8(curCmd.argShort, (u8)curCmd.argByte > 0); + break; + } + case 0xb0: { + sub_8097418(curCmd.argShort, (u8)curCmd.argByte > 0); + break; + } + case 0xb1: { + sub_80975A8(curCmd.argShort, (u8)curCmd.argByte > 0); + break; + } + case 0xb2: { + sub_80976F8(curCmd.argShort); + break; + } + case 0xb3: { + if ((u8)sub_80022F8(0, curCmd.argShort, curCmd.arg1, 2)) { + scriptData->script.ptr = sub_80A242C(action, (u8)curCmd.argByte); + } + break; + } + case 0xb4: { + if ((s8)sub_80022F8(scriptData->unk50, (s16)curCmd.arg1, curCmd.arg2, (u8)curCmd.argByte)) { + scriptData->script.ptr = sub_80A242C(action, curCmd.argShort); + } + break; + } + case 0xb5: { + if ((s8)sub_8002318(scriptData->unk50, (s16)curCmd.arg1, (s16)curCmd.arg2, (u8)curCmd.argByte)) { + scriptData->script.ptr = sub_80A242C(action, curCmd.argShort); + } + break; + } + case 0xb6: { + if (sub_8001784(scriptData->unk50, (s16)curCmd.arg1, (u16)curCmd.arg2)) { + scriptData->script.ptr = sub_80A242C(action, curCmd.argShort); + } + break; + } + case 0xb7: { + if ((s8)FlagJudge(sub_8001AB0(scriptData->unk50, (s16)curCmd.arg1), curCmd.arg2, (u8)curCmd.argByte)) { + scriptData->script.ptr = sub_80A242C(action, curCmd.argShort); + } + break; + } + case 0xb8: { + if ((s8)sub_8001CC4(curCmd.argShort, curCmd.arg1, curCmd.arg2)) { + scriptData->script.ptr = sub_80A242C(action, (u8)curCmd.argByte); + } + break; + } + case 0xb9: { + if ((s8)sub_8001D08(curCmd.argShort, curCmd.arg1, curCmd.arg2)) { + scriptData->script.ptr = sub_80A242C(action, (u8)curCmd.argByte); + } + break; + } + case 0xba: { + if ((s8)sub_8001D44(curCmd.argShort, curCmd.arg1, curCmd.arg2)) { + scriptData->script.ptr = sub_80A242C(action, (u8)curCmd.argByte); + } + break; + } + case 0xbb: { + if ((s8)sub_80023E4(curCmd.argShort)) { + scriptData->script.ptr = sub_80A242C(action, (u8)curCmd.argByte); + } + break; + } + case 0xbc: { + if ((s8)sub_8098100((u8)curCmd.argShort)) { + scriptData->script.ptr = sub_80A242C(action, (u8)curCmd.argByte); + } + break; + } + case 0xbd: { + if ((s8)sub_80026CC((s16)curCmd.arg1)) { + scriptData->script.ptr = sub_80A242C(action, (u8)curCmd.argByte); + } + break; + } + case 0xbf: { + if (sub_809CBA4(curCmd.argShort) > 0) { + scriptData->script.ptr = sub_80A242C(action, (u8)curCmd.argByte); + } + break; + } + case 0xbe: { + if (action->unk8[0] == 1) { + if ((s8)sub_80A8C98(action->unk8[1])) { + scriptData->script.ptr = sub_80A242C(action, (u8)curCmd.argByte); + } + } + break; + } + case 0x41: { + if (FindItemInInventory((u8)curCmd.argShort) >= 0) ShiftItemsDownFrom(); + break; + } + case 0xc0 ... 0xcb: { + s32 val; + Position32 pos, pos2, pos3; + switch (curCmd.op) { + case 0xc0: { + val = sub_8001658(scriptData->unk50, curCmd.argShort); + break; + } + case 0xc1: { + val = FlagCalc( + sub_8001658(scriptData->unk50, curCmd.argShort), + curCmd.arg1, + (u8)curCmd.argByte); + break; + } + case 0xc2: { + val = FlagCalc( + sub_8001658(scriptData->unk50, curCmd.argShort), + sub_8001658(scriptData->unk50, (s16)curCmd.arg1), + (u8)curCmd.argByte); + break; + } + case 0xc3: { + val = OtherRandInt(curCmd.argShort); + break; + } + case 0xc4: { + val = sub_8001784(0, curCmd.argShort, 0); + break; + } + case 0xc5: { + val = sub_8001784(0, curCmd.argShort, 1); + break; + } + case 0xc6: { + val = (s16)sub_80A8C2C((s16)curCmd.arg1); + break; + } + case 0xc7: { + s8 dir; + action->callbacks->func14(action->parentObject, &dir); + val = dir; + break; + } + case 0xca: { + action->callbacks->func0C(action->parentObject, &pos); + pos2 = pos; + sub_80AD8B4((s16)curCmd.arg1, &pos2); + pos3.x = pos2.x - pos.x; + pos3.y = pos2.y - pos.y; + val = (s8)sub_8002C60(&pos3); + break; + } + case 0xc8: { + s16 tmp = (s16)sub_80A7AE8((s16)curCmd.arg1); + if (tmp >= 0) { + Position32 pos1, pos2, pos3, pos4; + action->callbacks->func0C(action->parentObject, &pos1); + action->callbacks->func08(action->parentObject, &pos2); + sub_80A8FD8(tmp, &pos3); + sub_80A8F9C(tmp, &pos4); + val = (s8)sub_8002DF0(&pos1, &pos2, &pos3, &pos4); + if (val == -1) { + val = (s8)sub_8002D54(&pos1, &gUnknown_81164DC, &pos3, &gUnknown_81164DC); + } + } else { + val = -1; + } + break; + } + case 0xc9: { + s16 tmp = (s16)sub_80A7AE8((s16)curCmd.arg1); + if (tmp >= 0) { // ??? + Position32 pos1, pos2, pos3; + action->callbacks->func0C(action->parentObject, &pos1); + action->callbacks->func08(action->parentObject, &pos2); + sub_80A8FD8(tmp, &pos3); + val = (s8)sub_8002DF0(&pos1, &pos2, &pos3, &gUnknown_81164DC); + if (val == -1) { + val = (s8)sub_8002D54(&pos1, &gUnknown_81164DC, &pos3, &gUnknown_81164DC); + } + } else { + val = -1; + } + break; + } + case 0xcb: { + val = sub_809CC90(curCmd.argShort); + break; + } + default: { + // The locdata says this is part of an inlined function... :/ + // "switch type error %d" + FatalError(&gUnknown_81166B4, gUnknown_81166C0, curCmd.op); + } + } + scriptData->script.ptr = sub_80A2460(action, val); + break; + } + case 0xcf: { + scriptData->branchDiscriminant = sub_8001658(scriptData->unk50, curCmd.argShort); + while (scriptData->script.ptr->op == 0xd0) { + if (scriptData->script.ptr->argShort == scriptData->branchDiscriminant) + return 2; + scriptData->script.ptr++; + } + if (scriptData->script.ptr->op == 0xd1) { + scriptData->branchDiscriminant = -1; + return 2; + } + break; + } + case 0xd2 ... 0xd8: { + char *out = curCmd.argPtr; + gUnknown_203B4AC = 0; + scriptData->branchDiscriminant = 0; + switch(curCmd.op) { + case 0xd6: case 0xd7: case 0xd8: { + s32 disc = sub_8001658(scriptData->unk50, (s16)curCmd.arg2); + for (; scriptData->script.ptr->op == 0xd0; scriptData->script.ptr++, scriptData->branchDiscriminant++) { + if (scriptData->script.ptr->argShort == disc) + out = scriptData->script.ptr->argPtr; + } + for (; scriptData->script.ptr->op == 0xd1; scriptData->script.ptr++, scriptData->branchDiscriminant++) { + if (!out) out = scriptData->script.ptr->argPtr; + } + } + } + if (!out) out = gUnknown_81166D8; // "" + for (; scriptData->script.ptr->op == 0xd9; scriptData->script.ptr++) { + gUnknown_2039D50[gUnknown_203B4AC].unk0 = scriptData->script.ptr->argPtr; + gUnknown_2039D50[gUnknown_203B4AC].unk4 = gUnknown_203B4AC + 1; + gUnknown_203B4AC++; + } + if (gUnknown_203B4AC <= 0) break; + gUnknown_2039D50[gUnknown_203B4AC].unk0 = NULL; + gUnknown_2039D50[gUnknown_203B4AC].unk4 = curCmd.argShort; + switch (curCmd.op) { + case 0xd2: case 0xd3: case 0xd6: { + sub_809B028(gUnknown_2039D50, (u8)curCmd.argByte > 0, -1, 0, (s16)curCmd.arg1, out); + break; + } + case 0xd4: case 0xd7: { + sub_809B028(gUnknown_2039D50, (u8)curCmd.argByte > 0, -1, 1, (s16)curCmd.arg1, out); + break; + } + case 0xd5: case 0xd8: { + sub_809B028(gUnknown_2039D50, (u8)curCmd.argByte > 0, -1, 2, (s16)curCmd.arg1, out); + break; + } + } + if ((s8)sub_809D8EC(action, 1)) { + sub_80A87AC(0, 11); + return 2; + } + break; + } + case 0xda: { + if (sub_809D8EC(action, 1)) { + return 2; + } + break; + } + case 0xdb: { + scriptData->unk2A = curCmd.argShort; + return 2; + } + case 0xdc: { + scriptData->unk2A = curCmd.argShort + OtherRandInt(curCmd.arg1 - curCmd.argShort); + return 2; + } + case 0xdd ... 0xe2: { + return 2; // do action + } + case 0xe3: { + scriptData->branchDiscriminant = curCmd.argShort; + if (sub_809D8EC(action, curCmd.argShort)) { + return 2; + } + break; + } + case 0xe4: { + sub_809D9B8(curCmd.argShort); + break; + } + case 0xe5: { + scriptData->branchDiscriminant = curCmd.argShort; + if ((s8)sub_809DA08(action, curCmd.argShort, curCmd.argByte)) { + return 2; + } + break; + } + case 0xe6: { + scriptData->savedScript = scriptData->script; + } //fallthrough + case 0xe7: { // ??? + scriptData->script.ptr = sub_80A242C(action, curCmd.argShort); + break; + } + case 0xe8: { // SAVE_AND_TRIGGER + scriptData->savedScript = scriptData->script; + } // fallthrough + case 0xe9: { // TRIGGER + scriptData->script.ptr2 = scriptData->script.ptr = gFunctionScriptTable[curCmd.argShort].script; + break; + } + case 0xea: { // SAVE_AND_RUN_STATION + scriptData->savedScript = scriptData->script; + } // fallthrough + case 0xeb: { // RUN_STATION + ScriptInfoSmall info; + u32 group, sector; + u32 tmp = gUnknown_2039A34; + { + s32 tmp = curCmd.argShort < 0 ? scriptData->script.group : curCmd.argShort; + group = tmp; + } + { + s32 tmp = (s8)curCmd.argByte < 0 ? scriptData->script.sector : (s8)curCmd.argByte; + sector = tmp; + } + GroundMap_GetStationScript(&info, tmp, group, sector); + scriptData->script.ptr = info.ptr; + scriptData->script.ptr2 = info.ptr; + scriptData->script.group = group; + scriptData->script.sector = sector; + break; + } + case 0xec: { + gUnknown_2039A34 = sub_80A4D7C((s16)sub_8001658(scriptData->unk50, curCmd.argShort)); + sub_809D940(); + GroundMap_ExecuteEnter(gUnknown_2039A34); + break; + } + case 0xed: { // DELETE_SAVED + scriptData->savedScript.ptr = NULL; + scriptData->savedScript.ptr2 = NULL; + break; + } + case 0xee: { // RESTORE_SAVED + if (scriptData->savedScript.ptr == NULL) { + return 0; // huh? + } + scriptData->script = scriptData->savedScript; + scriptData->savedScript.ptr = NULL; + scriptData->savedScript.ptr2 = NULL; + break; + } + case 0xef: // RETURN_FALSE + return 0; // success + case 0xf0: // RETURN_TRUE + return 1; // error? + case 0xf1: // RETURN_ERROR + return 4; // fatal error? + case 0xf2: case 0xf3: case 0xf4: case 0xf5: case 0xf6: { + // Debug, not in release ROM + break; + } + } + } +} From b3c4114a9374f3e5cbac4d4f40381318746212f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Na=C5=9Bciszewski?= Date: Tue, 23 Jul 2024 00:58:26 +0200 Subject: [PATCH 07/10] Less hacky mismatched declaration, plus removal of unneeded union --- include/code_80A26CC.h | 5 +++++ include/ground_main.h | 10 ++++++++++ src/ground_script_1.c | 28 ++++++++-------------------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/include/code_80A26CC.h b/include/code_80A26CC.h index b01fbeb6d..6d3c4e7a1 100644 --- a/include/code_80A26CC.h +++ b/include/code_80A26CC.h @@ -23,7 +23,12 @@ void sub_80A2558(s32, s16 *); void sub_80A2584(s16, s16); void sub_80A2598(s16, s16); u32 sub_80A25AC(u16); +#if !defined(NONMATCHING) && defined(GROUND_SCRIPT_INCOMPLETE_DECLARATIONS) +// Workaround for ExecuteScriptCommand relying on s32 behavior of arguments +const DungeonInfo *sub_80A2608(s32 index); +#else const DungeonInfo *sub_80A2608(s16 index); +#endif const DungeonInfo *sub_80A2620(s16 index); s16 sub_80A2654(s16 index); s16 sub_80A2668(u32); diff --git a/include/ground_main.h b/include/ground_main.h index c9ff64a27..432b7c2ac 100644 --- a/include/ground_main.h +++ b/include/ground_main.h @@ -13,8 +13,18 @@ typedef struct GroundConversionStruct bool8 sub_8098F88(void); const char *sub_8098FB4(void); + +#if !defined(NONMATCHING) && defined(GROUND_SCRIPT_INCOMPLETE_DECLARATIONS) +// Workaround for ExecuteScriptCommand relying on s32 behavior of arguments +// Arguments could be left fully implicit (as I think they were in the original code), +// but this way at least verifies the argument count +bool8 GroundMainGroundRequest(s32 r0, s32 r1, s32 r2); +bool8 GroundMainRescueRequest(s32 r0, s32 r1); +#else bool8 GroundMainGroundRequest(s16 r0, u32 r1, s32 r2); bool8 GroundMainRescueRequest(s16 r0, u32 r1); +#endif + bool32 GroundMainGameEndRequest(u32 r0); bool32 GroundMainGameCancelRequest(u32 r0); diff --git a/src/ground_script_1.c b/src/ground_script_1.c index 67752d0cf..db1bebda2 100644 --- a/src/ground_script_1.c +++ b/src/ground_script_1.c @@ -4,20 +4,12 @@ #include "ground_map.h" #include "dungeon.h" -// Needs incorrect redeclaration -#define GroundMainGroundRequest jaksdlasjdklajksdklajsd -#define GroundMainRescueRequest pudmvjhieasmlzgvouh -#include "ground_main.h" -#undef GroundMainGroundRequest -#undef GroundMainRescueRequest -bool8 GroundMainGroundRequest(s32 r0, u32 r1, s32 r2); -bool8 GroundMainRescueRequest(s32 r0, u32 r1); +#ifndef NONMATCHING +#define GROUND_SCRIPT_INCOMPLETE_DECLARATIONS +#endif -// Needs incorrect redeclaration -#define sub_80A2608 vpoiuj345nmoszuozgvdyhz +#include "ground_main.h" #include "code_80A26CC.h" -#undef sub_80A2608 -const DungeonInfo *sub_80A2608(s32 index); typedef struct { u8 xTiles; @@ -25,16 +17,12 @@ typedef struct { u8 yTiles; u8 yFlags; } PosInfo; -typedef union { - u32 raw; - PosInfo fields; -} UPos; typedef struct GroundObjectData { u8 kind; u8 unk1; u8 widthTiles; u8 heightTiles; - UPos pos; + PosInfo pos; ScriptCommand *scripts[4]; // 2 - dialogue script } GroundObjectData; typedef struct GroundEffectData { @@ -42,7 +30,7 @@ typedef struct GroundEffectData { u8 unk1; u8 widthTiles; //??? u8 heightTiles; - UPos pos; + PosInfo pos; ScriptCommand *script; } GroundEffectData; @@ -466,7 +454,7 @@ s32 ExecuteScriptCommand(Action *action) { .unk1 = *unk, .widthTiles = 1, .heightTiles = 1, - .pos = {.raw = 0}, + .pos = {}, .kind = curCmd.arg2, .scripts = { [3] = gFunctionScriptTable[curCmd.arg1].script }, }; @@ -493,7 +481,7 @@ s32 ExecuteScriptCommand(Action *action) { .unk1 = unk, .widthTiles = 1, .heightTiles = 1, - .pos = {.raw = 0}, + .pos = {}, .kind = curCmd.arg2, .script = gFunctionScriptTable[curCmd.arg1].script, }; From 9f1e5c95722237c758a16dcf19ee8a9a00afc603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Na=C5=9Bciszewski?= Date: Tue, 23 Jul 2024 07:39:26 +0200 Subject: [PATCH 08/10] Address review comments --- src/ground_script_1.c | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/src/ground_script_1.c b/src/ground_script_1.c index db1bebda2..b672cc899 100644 --- a/src/ground_script_1.c +++ b/src/ground_script_1.c @@ -3,6 +3,9 @@ #include "ground_script.h" #include "ground_map.h" #include "dungeon.h" +#include "other_random.h" +#include "rescue_team_info.h" +#include "code_80118A4.h" #ifndef NONMATCHING #define GROUND_SCRIPT_INCOMPLETE_DECLARATIONS @@ -62,7 +65,6 @@ s16 GroundObject_Add(s16 id, GroundObjectData*, s16 group, s8 sector); s16 GroundEffect_Add(s16 id, GroundEffectData*, s16 group, s8 sector); u32 FlagCalc(); u32 FlagJudge(); -s32 OtherRandInt(s32); // IT RETURNS s32!! Not s16! void FatalError(void* loc, char* fmt, ...) __attribute__((noreturn)); s32 sub_8001658(ScriptUnion832*, s32); @@ -89,23 +91,20 @@ u32 sub_8002C60(); u32 sub_8002D54(); u8 sub_8002DF0(Position32*, Position32*, Position32*, Position32*); s32 sub_8009FB8(); + +// TODO: move to code_80118A4.h u32 StopAllMusic_1(); -u32 FadeOutAllMusic(); u32 xxx_call_start_new_bgm(); u32 xxx_call_queue_bgm(); -u32 xxx_call_stop_bgm(); -u32 xxx_call_fade_out_bgm(); u32 xxx_call_play_fanfare_se(); -u32 xxx_call_stop_fanfare_se(); u32 xxx_call_fade_out_fanfare_se(); -void xxx_call_fade_in_new_bgm(u16 id, u16 arg); //sub_8011900 + bool8 sub_8021700(s32); bool8 sub_802FCF0(void); s32 FindItemInInventory(); u32 ShiftItemsDownFrom(); -u32 sub_80920B8(); void sub_809733C(s16, bool8); void sub_80973A8(s16, bool8); void sub_8097418(s16, bool8); @@ -209,7 +208,6 @@ extern char gUnknown_81166D8[]; extern DebugLocation gUnknown_81166B4; -/* No decompiler yet implemented for arm32 */ s32 ExecuteScriptCommand(Action *action) { ScriptCommand curCmd; ScriptData *scriptData = &action->scriptData; @@ -535,9 +533,8 @@ s32 ExecuteScriptCommand(Action *action) { s32 a = (s16)sub_8001658(0, 19); const DungeonInfo *ret1 = sub_80A2608(a); s32 thing = sub_8001784(0, 48, a) == 0 ? ret1->unk6 : ret1->unk8; - //s32 as = a; - //if (!(a >= 0x37 && a < 0x48) && (s16)sub_80A2750(a) == 1) { - // fakematch lmao + // fakematch: this is almost certainly a range check of the form 0x37 <= a && a < 0x48 + // but that loses the s32 -> u16 cast. Inlines, macros, or other schenanigans are likely involved if (!((u16)(a - 0x37) < 0x11) && (s16)sub_80A2750(a) == 1) { if (thing == -1) { if (ScriptLoggingEnabled(TRUE)) { @@ -632,8 +629,9 @@ s32 ExecuteScriptCommand(Action *action) { break; } case 0x27: case 0x28: { - //s8 color[4]; // THANK YOU pidgey, only an array *inside* a struct works + // TODO: Define this struct globally, so it can be passed to sub_8099A5C and sub_8099AFC + // This kind of hackiness is used at all callsites (or they load from a global) s32 color = ({ struct color { u8 arr[4]; } color = {{ curCmd.arg2 >> 16, @@ -643,8 +641,6 @@ s32 ExecuteScriptCommand(Action *action) { }}; *(s32*)&color; }); - //u32 raw; - //raw = *(u32*)color; switch (curCmd.op) { case 0x27: sub_8099A5C(curCmd.argShort, curCmd.arg1, color); @@ -990,7 +986,7 @@ s32 ExecuteScriptCommand(Action *action) { Position32 unk; action->callbacks->func0C(action->parentObject, &unk); sub_80AD8B4((s16)curCmd.arg1, &unk); - action->callbacks->func24(action->parentObject, &unk); //FIXME: landing end of unwanted tailmerge + action->callbacks->func24(action->parentObject, &unk); // landing end of unwanted tailmerge scriptData->unk2A = (u8)curCmd.argByte; return 2; } @@ -1027,7 +1023,7 @@ s32 ExecuteScriptCommand(Action *action) { action->callbacks->func28(action->parentObject, height); action->scriptData.unk26 = dir; action->callbacks->func2C(action->parentObject, dir); - // FIXME: unwanted tailmerge + // NONMATCHING: unwanted tailmerge #ifndef NONNMATCHING asm(""); #endif @@ -1265,7 +1261,7 @@ s32 ExecuteScriptCommand(Action *action) { ret = sub_8002DF0(&pos3, &pos4, &pos1, &pos2); // wtf *&dir = ret; - tmp = -1; // This feels like a fakematch... + tmp = -1; if (dir == tmp) { dir = sub_8002D54(&pos3, &gUnknown_81164DC, &pos1, &gUnknown_81164DC); } @@ -1672,7 +1668,7 @@ s32 ExecuteScriptCommand(Action *action) { } case 0xc9: { s16 tmp = (s16)sub_80A7AE8((s16)curCmd.arg1); - if (tmp >= 0) { // ??? + if (tmp >= 0) { Position32 pos1, pos2, pos3; action->callbacks->func0C(action->parentObject, &pos1); action->callbacks->func08(action->parentObject, &pos2); From a2791c6dcf77954019510ab808f4df8c94d47a9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Na=C5=9Bciszewski?= Date: Tue, 23 Jul 2024 07:44:12 +0200 Subject: [PATCH 09/10] Add warning about hacky function signatures, to not use these as source in header files without rechecking --- src/ground_script_1.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ground_script_1.c b/src/ground_script_1.c index b672cc899..282261da3 100644 --- a/src/ground_script_1.c +++ b/src/ground_script_1.c @@ -63,10 +63,12 @@ void GroundWeather_Select(s16); u32 GroundLives_ExecutePlayerScriptActionLives(); s16 GroundObject_Add(s16 id, GroundObjectData*, s16 group, s8 sector); s16 GroundEffect_Add(s16 id, GroundEffectData*, s16 group, s8 sector); -u32 FlagCalc(); -u32 FlagJudge(); void FatalError(void* loc, char* fmt, ...) __attribute__((noreturn)); +// Beware of the declarations without specified arguments, returning u32 or s32, these were quickly hacked in to get the code to compile and link +// The return values are almost certainly NOT correct and will need to be rechecked when moving to header files +u32 FlagCalc(); +u32 FlagJudge(); s32 sub_8001658(ScriptUnion832*, s32); void sub_8001570(u8*, s16); void sub_80015C0(u8*, s16); From 3ac1edf53516d8e5ba9acecc065347a87baf1a48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Na=C5=9Bciszewski?= Date: Tue, 23 Jul 2024 09:07:58 +0200 Subject: [PATCH 10/10] Document script engine return values --- src/ground_script_1.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/ground_script_1.c b/src/ground_script_1.c index 282261da3..14185b46d 100644 --- a/src/ground_script_1.c +++ b/src/ground_script_1.c @@ -210,6 +210,19 @@ extern char gUnknown_81166D8[]; extern DebugLocation gUnknown_81166B4; +// Return values: +// This function returns what's likely an enum, which controls the state of the script engine state machine, and possibly provides information to code calling the engine. +// The enum is shared at least with HandleAction. +// This value is saved into the state field of the Action when returned from this function. +// - Value 0 indicates a RET on script engine level, HandleAction copies action->scriptData2 onto action->scriptData, and reinitializes scriptData2. +// If there is no active scriptData2 it clears and reinits scriptData. +// Ultimately returns code 3 to the script engine caller. +// Caveat: If the scripting engine is in state 0, HandleAction will immediately return 0 without performing any work. +// - Value 1 is a terminal state (script success? error?), no further scripting progress will happen. This code is always returned to the caller from now on. +// - Value 2 gives control back to the HandleAction function (entry point into the scripting engine state machine) +// This is the only return value that does not return to the script engine caller +// - Value 3 returns to the caller, but will give control back to ExecuteScriptCommand when reentering the script ("script not finished") +// - Value 4 is some kind of fatal error state, no further scripting progress will happen. This code is always returned to the caller from now on. s32 ExecuteScriptCommand(Action *action) { ScriptCommand curCmd; ScriptData *scriptData = &action->scriptData; @@ -1839,18 +1852,18 @@ s32 ExecuteScriptCommand(Action *action) { } case 0xee: { // RESTORE_SAVED if (scriptData->savedScript.ptr == NULL) { - return 0; // huh? + return 0; } scriptData->script = scriptData->savedScript; scriptData->savedScript.ptr = NULL; scriptData->savedScript.ptr2 = NULL; break; } - case 0xef: // RETURN_FALSE - return 0; // success - case 0xf0: // RETURN_TRUE - return 1; // error? - case 0xf1: // RETURN_ERROR + case 0xef: + return 0; + case 0xf0: + return 1; + case 0xf1: return 4; // fatal error? case 0xf2: case 0xf3: case 0xf4: case 0xf5: case 0xf6: { // Debug, not in release ROM