summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/code_8098BDC.s219
-rw-r--r--asm/code_809D148.s176
-rwxr-xr-xld_script.txt1
-rw-r--r--src/code_8098BDC.c83
-rw-r--r--src/code_809D148.c277
5 files changed, 345 insertions, 411 deletions
diff --git a/asm/code_8098BDC.s b/asm/code_8098BDC.s
index 5c9a6fb..3dad36e 100644
--- a/asm/code_8098BDC.s
+++ b/asm/code_8098BDC.s
@@ -5,132 +5,6 @@
.text
- thumb_func_start sub_8098D1C
-sub_8098D1C:
- push {r4-r7,lr}
- adds r7, r1, 0
- adds r4, r2, 0
- lsls r0, 16
- asrs r5, r0, 16
- ldr r6, _08098D34
- ldr r0, [r6]
- cmp r0, 0
- beq _08098D38
- movs r0, 0
- b _08098D60
- .align 2, 0
-_08098D34: .4byte gUnknown_20398A8
-_08098D38:
- ldr r1, _08098D68
- movs r0, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl Log
- movs r1, 0x1
- str r1, [r6]
- ldr r0, _08098D6C
- str r1, [r0]
- ldr r0, _08098D70
- str r4, [r0]
- ldr r1, _08098D74
- movs r0, 0x2
- str r0, [r1]
- ldr r0, _08098D78
- strh r5, [r0]
- ldr r0, _08098D7C
- str r7, [r0]
- movs r0, 0x1
-_08098D60:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08098D68: .4byte gUnknown_8115F5C
-_08098D6C: .4byte gUnknown_20398AC
-_08098D70: .4byte gUnknown_20398B0
-_08098D74: .4byte gUnknown_20398B4
-_08098D78: .4byte gUnknown_20398BE
-_08098D7C: .4byte gUnknown_20398C0
- thumb_func_end sub_8098D1C
-
- thumb_func_start sub_8098D80
-sub_8098D80:
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _08098DB8
- ldr r0, [r1]
- cmp r0, 0
- bne _08098DC4
- movs r0, 0x3
- str r0, [r1]
- ldr r1, _08098DBC
- movs r0, 0x1
- str r0, [r1]
- ldr r0, _08098DC0
- str r4, [r0]
- bl sub_809C730
- movs r0, 0xD
- bl sub_80023E4
- lsls r0, 24
- cmp r0, 0
- bne _08098DB2
- lsls r0, r4, 16
- lsrs r0, 16
- bl sub_80118C4
-_08098DB2:
- movs r0, 0x1
- b _08098DC6
- .align 2, 0
-_08098DB8: .4byte gUnknown_20398A8
-_08098DBC: .4byte gUnknown_20398AC
-_08098DC0: .4byte gUnknown_20398B0
-_08098DC4:
- movs r0, 0
-_08098DC6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8098D80
-
- thumb_func_start sub_8098DCC
-sub_8098DCC:
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _08098E04
- ldr r0, [r1]
- cmp r0, 0
- bne _08098E10
- movs r0, 0x4
- str r0, [r1]
- ldr r1, _08098E08
- movs r0, 0x1
- str r0, [r1]
- ldr r0, _08098E0C
- str r4, [r0]
- bl sub_809C730
- movs r0, 0xD
- bl sub_80023E4
- lsls r0, 24
- cmp r0, 0
- bne _08098DFE
- lsls r0, r4, 16
- lsrs r0, 16
- bl sub_80118C4
-_08098DFE:
- movs r0, 0x1
- b _08098E12
- .align 2, 0
-_08098E04: .4byte gUnknown_20398A8
-_08098E08: .4byte gUnknown_20398AC
-_08098E0C: .4byte gUnknown_20398B0
-_08098E10:
- movs r0, 0
-_08098E12:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8098DCC
-
thumb_func_start sub_8098E18
sub_8098E18:
push {r4-r6,lr}
@@ -8713,97 +8587,4 @@ _0809D0A6:
bx r1
thumb_func_end sub_809D058
- thumb_func_start sub_809D0AC
-sub_809D0AC:
- push {lr}
- bl sub_809D0BC
- pop {r0}
- bx r0
- thumb_func_end sub_809D0AC
-
- thumb_func_start nullsub_119
-nullsub_119:
- bx lr
- thumb_func_end nullsub_119
-
- thumb_func_start sub_809D0BC
-sub_809D0BC:
- push {r4,r5,lr}
- ldr r5, _0809D0F8
- ldr r1, _0809D0FC
- ldr r2, [r1]
- ldr r3, [r1, 0x4]
- str r2, [r5, 0x3C]
- str r3, [r5, 0x40]
- adds r0, r5, 0
- adds r0, 0x44
- movs r4, 0
- strb r4, [r0]
- movs r0, 0
- bl sub_809D158
- str r4, [r5, 0x8]
- str r4, [r5, 0xC]
- str r4, [r5, 0x10]
- movs r0, 0x1
- negs r0, r0
- str r0, [r5, 0x4]
- str r4, [r5, 0x24]
- str r4, [r5, 0x28]
- str r4, [r5, 0x2C]
- str r4, [r5, 0x30]
- str r4, [r5, 0x34]
- str r4, [r5, 0x38]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809D0F8: .4byte gUnknown_20399E8
-_0809D0FC: .4byte gUnknown_8116478
- thumb_func_end sub_809D0BC
-
- thumb_func_start sub_809D100
-sub_809D100:
- push {lr}
- adds r2, r0, 0
- ldr r1, _0809D120
- ldr r0, [r1, 0x24]
- cmp r0, r2
- beq _0809D11A
- str r2, [r1, 0x24]
- movs r0, 0
- str r0, [r1, 0x28]
- str r0, [r1, 0x2C]
- str r0, [r1, 0x30]
- str r0, [r1, 0x34]
- str r0, [r1, 0x38]
-_0809D11A:
- pop {r0}
- bx r0
- .align 2, 0
-_0809D120: .4byte gUnknown_20399E8
- thumb_func_end sub_809D100
-
- thumb_func_start sub_809D124
-sub_809D124:
- push {r4,lr}
- adds r4, r0, 0
- ldr r3, _0809D144
- ldr r0, [r3, 0x24]
- cmp r0, r4
- beq _0809D13A
- str r4, [r3, 0x24]
- movs r0, 0
- str r0, [r3, 0x30]
- str r0, [r3, 0x34]
- str r0, [r3, 0x38]
-_0809D13A:
- str r1, [r3, 0x28]
- str r2, [r3, 0x2C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809D144: .4byte gUnknown_20399E8
- thumb_func_end sub_809D124
-
.align 2,0
diff --git a/asm/code_809D148.s b/asm/code_809D148.s
index b03391b..75bec2b 100644
--- a/asm/code_809D148.s
+++ b/asm/code_809D148.s
@@ -5,182 +5,6 @@
.text
- thumb_func_start sub_809D148
-sub_809D148:
- ldr r1, _0809D154
- str r0, [r1]
- movs r0, 0
- str r0, [r1, 0x8]
- bx lr
- .align 2, 0
-_0809D154: .4byte gUnknown_20399E8
- thumb_func_end sub_809D148
-
- thumb_func_start sub_809D158
-sub_809D158:
- ldr r2, _0809D16C
- str r0, [r2]
- movs r0, 0
- str r0, [r2, 0x8]
- ldr r0, [r1]
- ldr r1, [r1, 0x4]
- str r0, [r2, 0x1C]
- str r1, [r2, 0x20]
- bx lr
- .align 2, 0
-_0809D16C: .4byte gUnknown_20399E8
- thumb_func_end sub_809D158
-
- thumb_func_start sub_809D170
-sub_809D170:
- ldr r2, _0809D17C
- str r0, [r2]
- movs r0, 0
- str r0, [r2, 0x8]
- str r1, [r2, 0x4]
- bx lr
- .align 2, 0
-_0809D17C: .4byte gUnknown_20399E8
- thumb_func_end sub_809D170
-
- thumb_func_start sub_809D180
-sub_809D180:
- ldr r2, _0809D18C
- str r0, [r2]
- movs r0, 0x1
- str r0, [r2, 0x8]
- str r1, [r2, 0xC]
- bx lr
- .align 2, 0
-_0809D18C: .4byte gUnknown_20399E8
- thumb_func_end sub_809D180
-
- thumb_func_start sub_809D190
-sub_809D190:
- ldr r3, _0809D1A4
- str r0, [r3]
- movs r0, 0x1
- str r0, [r3, 0x8]
- str r2, [r3, 0xC]
- ldr r0, [r1]
- ldr r1, [r1, 0x4]
- str r0, [r3, 0x14]
- str r1, [r3, 0x18]
- bx lr
- .align 2, 0
-_0809D1A4: .4byte gUnknown_20399E8
- thumb_func_end sub_809D190
-
- thumb_func_start sub_809D1A8
-sub_809D1A8:
- ldr r3, _0809D1B8
- str r0, [r3]
- movs r0, 0x1
- str r0, [r3, 0x8]
- str r2, [r3, 0xC]
- str r1, [r3, 0x4]
- bx lr
- .align 2, 0
-_0809D1B8: .4byte gUnknown_20399E8
- thumb_func_end sub_809D1A8
-
- thumb_func_start sub_809D1BC
-sub_809D1BC:
- ldr r2, _0809D1C8
- str r0, [r2]
- movs r0, 0x2
- str r0, [r2, 0x8]
- str r1, [r2, 0x10]
- bx lr
- .align 2, 0
-_0809D1C8: .4byte gUnknown_20399E8
- thumb_func_end sub_809D1BC
-
- thumb_func_start sub_809D1CC
-sub_809D1CC:
- ldr r3, _0809D1E0
- str r0, [r3]
- movs r0, 0x2
- str r0, [r3, 0x8]
- str r2, [r3, 0x10]
- ldr r0, [r1]
- ldr r1, [r1, 0x4]
- str r0, [r3, 0x14]
- str r1, [r3, 0x18]
- bx lr
- .align 2, 0
-_0809D1E0: .4byte gUnknown_20399E8
- thumb_func_end sub_809D1CC
-
- thumb_func_start sub_809D1E4
-sub_809D1E4:
- ldr r3, _0809D1F4
- str r0, [r3]
- movs r0, 0x2
- str r0, [r3, 0x8]
- str r2, [r3, 0x10]
- str r1, [r3, 0x4]
- bx lr
- .align 2, 0
-_0809D1F4: .4byte gUnknown_20399E8
- thumb_func_end sub_809D1E4
-
- thumb_func_start sub_809D1F8
-sub_809D1F8:
- ldr r2, _0809D204
- str r0, [r2]
- movs r0, 0x3
- str r0, [r2, 0x8]
- str r1, [r2, 0xC]
- bx lr
- .align 2, 0
-_0809D204: .4byte gUnknown_20399E8
- thumb_func_end sub_809D1F8
-
- thumb_func_start sub_809D208
-sub_809D208:
- ldr r3, _0809D21C
- str r0, [r3]
- movs r0, 0x3
- str r0, [r3, 0x8]
- str r2, [r3, 0xC]
- ldr r0, [r1]
- ldr r1, [r1, 0x4]
- str r0, [r3, 0x14]
- str r1, [r3, 0x18]
- bx lr
- .align 2, 0
-_0809D21C: .4byte gUnknown_20399E8
- thumb_func_end sub_809D208
-
- thumb_func_start sub_809D220
-sub_809D220:
- ldr r3, _0809D230
- str r0, [r3]
- movs r0, 0x3
- str r0, [r3, 0x8]
- str r2, [r3, 0xC]
- str r1, [r3, 0x4]
- bx lr
- .align 2, 0
-_0809D230: .4byte gUnknown_20399E8
- thumb_func_end sub_809D220
-
- thumb_func_start sub_809D234
-sub_809D234:
- push {lr}
- ldr r0, _0809D244
- ldr r0, [r0, 0x8]
- cmp r0, 0
- beq _0809D240
- movs r0, 0x1
-_0809D240:
- pop {r1}
- bx r1
- .align 2, 0
-_0809D244: .4byte gUnknown_20399E8
- thumb_func_end sub_809D234
-
thumb_func_start sub_809D248
sub_809D248:
ldr r3, _0809D258
diff --git a/ld_script.txt b/ld_script.txt
index 23346ab..51ad399 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -125,6 +125,7 @@ SECTIONS {
asm/code_8098468.o(.text);
src/code_8098BDC.o(.text);
asm/code_8098BDC.o(.text);
+ src/code_809D148.o(.text);
asm/code_809D148.o(.text);
asm/code_80A26CC.o(.text);
src/code_80A7714.o(.text);
diff --git a/src/code_8098BDC.c b/src/code_8098BDC.c
index bd56fb3..23aa716 100644
--- a/src/code_8098BDC.c
+++ b/src/code_8098BDC.c
@@ -1,6 +1,15 @@
#include "global.h"
extern u32 gUnknown_203B47C;
+extern u32 gUnknown_20398A8;
+extern u32 gUnknown_8115F5C;
+extern u32 gUnknown_20398AC;
+extern u32 gUnknown_20398B0;
+extern u32 gUnknown_20398B4;
+extern u32 gUnknown_20398C0;
+extern u16 gUnknown_20398BE;
+
+extern void Log(u32, u32*, s32, u32);
extern void sub_809B57C();
extern void GroundScript_Unlock();
@@ -44,6 +53,10 @@ extern void sub_8091FB4();
extern u8 sub_8001CC4(u8, u8, u8);
extern void sub_8091980(u32);
+extern u8 sub_80023E4(u32);
+extern void sub_80118C4(u32);
+extern void sub_809C730();
+
void sub_8098BDC(void)
{
sub_809B57C();
@@ -148,19 +161,57 @@ void sub_8098CC8(void)
sub_8091FB4();
}
-// TODO lsrs should be asrs on my first arg
-//u8 sub_8098D1C(u16 r0, u32 r1, s32 r2)
-//{
-// if(gUnknown_20398A8 == 0)
-// {
-// Log(0, &gUnknown_8115F5C, r0, r2);
-// gUnknown_20398A8 = 1;
-// gUnknown_20398AC = 1;
-// gUnknown_20398B0 = r2;
-// gUnknown_20398B4 = 2;
-// gUnknown_20398BE = r0;
-// gUnknown_20398C0 = r1;
-// return 1;
-// }
-// return 0;
-//}
+bool8 sub_8098D1C(s16 r0, u32 r1, u32 r2)
+{
+ s32 temp;
+ temp = r0; // force a asr shift
+ if(gUnknown_20398A8 == 0)
+ {
+ Log(0, &gUnknown_8115F5C, temp, r2);
+ gUnknown_20398A8 = 1;
+ gUnknown_20398AC = 1;
+ gUnknown_20398B0 = r2;
+ gUnknown_20398B4 = 2;
+ gUnknown_20398BE = temp;
+ gUnknown_20398C0 = r1;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8098D80(u32 r0)
+{
+ if(gUnknown_20398A8 == 0)
+ {
+ gUnknown_20398A8 = 3;
+ gUnknown_20398AC = 1;
+ gUnknown_20398B0 = r0;
+ sub_809C730();
+ if(sub_80023E4(0xD) == 0)
+ {
+ // Terrible hack but meh
+ sub_80118C4((r0 << 16) >> 16);
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8098DCC(u32 r0)
+{
+ if(gUnknown_20398A8 == 0)
+ {
+ gUnknown_20398A8 = 4;
+ gUnknown_20398AC = 1;
+ gUnknown_20398B0 = r0;
+ sub_809C730();
+ if(sub_80023E4(0xD) == 0)
+ {
+ // Terrible hack but meh
+ sub_80118C4((r0 << 16) >> 16);
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
diff --git a/src/code_809D148.c b/src/code_809D148.c
new file mode 100644
index 0000000..965ca12
--- /dev/null
+++ b/src/code_809D148.c
@@ -0,0 +1,277 @@
+#include "global.h"
+
+struct unkStruct_20399E8
+{
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+ u32 unkC;
+ u32 unk10;
+ u32 unk14;
+ u32 unk18;
+ u32 unk1C;
+ u32 unk20;
+
+ u32 unk24;
+ u32 unk28;
+ u32 unk2C;
+ u32 unk30;
+ u32 unk34;
+ u32 unk38;
+};
+
+struct unkStruct_809D158
+{
+ u32 unk0;
+ u32 unk4;
+};
+
+extern struct unkStruct_20399E8 gUnknown_20399E8;
+
+void sub_809D0BC(void);
+
+
+void sub_809D0AC(void)
+{
+ sub_809D0BC();
+}
+
+void nullsub_119(void)
+{
+}
+
+#ifndef NONMATCHING
+NAKED
+#endif
+void sub_809D0BC(void)
+{
+#ifdef NONMATCHING
+ struct unkStruct_20399E8 *pre_load_203;
+
+ u32 temp;
+ u32 temp1;
+
+ pre_load_203 = &gUnknown_20399E8;
+
+ // TODO regswap.. should be r2/r3, not r0, r1
+ temp = gUnknown_8116478.unk0;
+ temp1 = gUnknown_8116478.unk4;
+
+ pre_load_203->unk3C = temp;
+ pre_load_203->unk40 = temp1;
+ pre_load_203->unk44 = 0;
+ sub_809D158(0);
+ pre_load_203->unk8 = 0;
+ pre_load_203->unkC = 0;
+ pre_load_203->unk10 = 0;
+ pre_load_203->unk4 = -1;
+ pre_load_203->unk24 = 0;
+ pre_load_203->unk28 = 0;
+ pre_load_203->unk2C = 0;
+ pre_load_203->unk30 = 0;
+ pre_load_203->unk34 = 0;
+ pre_load_203->unk38 = 0;
+#else
+ asm_unified("\tpush {r4,r5,lr}\n"
+ "\tldr r5, _0809D0F8\n"
+ "\tldr r1, _0809D0FC\n"
+ "\tldr r2, [r1]\n"
+ "\tldr r3, [r1, 0x4]\n"
+ "\tstr r2, [r5, 0x3C]\n"
+ "\tstr r3, [r5, 0x40]\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r0, 0x44\n"
+ "\tmovs r4, 0\n"
+ "\tstrb r4, [r0]\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_809D158\n"
+ "\tstr r4, [r5, 0x8]\n"
+ "\tstr r4, [r5, 0xC]\n"
+ "\tstr r4, [r5, 0x10]\n"
+ "\tmovs r0, 0x1\n"
+ "\tnegs r0, r0\n"
+ "\tstr r0, [r5, 0x4]\n"
+ "\tstr r4, [r5, 0x24]\n"
+ "\tstr r4, [r5, 0x28]\n"
+ "\tstr r4, [r5, 0x2C]\n"
+ "\tstr r4, [r5, 0x30]\n"
+ "\tstr r4, [r5, 0x34]\n"
+ "\tstr r4, [r5, 0x38]\n"
+ "\tpop {r4,r5}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+"_0809D0F8: .4byte gUnknown_20399E8\n"
+"_0809D0FC: .4byte gUnknown_8116478\n");
+#endif
+}
+
+void sub_809D100(u32 r0)
+{
+ if(gUnknown_20399E8.unk24 != r0)
+ {
+ gUnknown_20399E8.unk24 = r0;
+ gUnknown_20399E8.unk28 = 0;
+ gUnknown_20399E8.unk2C = 0;
+ gUnknown_20399E8.unk30 = 0;
+ gUnknown_20399E8.unk34 = 0;
+ gUnknown_20399E8.unk38 = 0;
+ }
+}
+
+void sub_809D124(u32 r0, u32 r1, u32 r2)
+{
+ if(gUnknown_20399E8.unk24 != r0)
+ {
+ gUnknown_20399E8.unk24 = r0;
+ gUnknown_20399E8.unk30 = 0;
+ gUnknown_20399E8.unk34 = 0;
+ gUnknown_20399E8.unk38 = 0;
+ }
+ gUnknown_20399E8.unk28 = r1;
+ gUnknown_20399E8.unk2C = r2;
+}
+
+void sub_809D148(u32 r0)
+{
+ gUnknown_20399E8.unk0 = r0;
+ gUnknown_20399E8.unk8 = 0;
+
+}
+
+void sub_809D158(u32 r0, struct unkStruct_809D158 *r1)
+{
+ u32 temp;
+ u32 temp1;
+ gUnknown_20399E8.unk0 = r0;
+ gUnknown_20399E8.unk8 = 0;
+
+ // Load both first and then store
+ temp = r1->unk0;
+ temp1 = r1->unk4;
+ gUnknown_20399E8.unk1C = temp;
+ gUnknown_20399E8.unk20 = temp1;
+}
+
+void sub_809D170(u32 r0, u32 r1)
+{
+ gUnknown_20399E8.unk0 = r0;
+ gUnknown_20399E8.unk8 = 0;
+ gUnknown_20399E8.unk4 = r1;
+}
+
+void sub_809D180(u32 r0, u32 r1)
+{
+ gUnknown_20399E8.unk0 = r0;
+ gUnknown_20399E8.unk8 = 1;
+ gUnknown_20399E8.unkC = r1;
+}
+
+void sub_809D190(u32 r0, struct unkStruct_809D158 *r1, u32 r2)
+{
+ u32 temp;
+ u32 temp1;
+ gUnknown_20399E8.unk0 = r0;
+ gUnknown_20399E8.unk8 = 1;
+ gUnknown_20399E8.unkC = r2;
+
+ // Load both first and then store
+ temp = r1->unk0;
+ temp1 = r1->unk4;
+ gUnknown_20399E8.unk14 = temp;
+ gUnknown_20399E8.unk18 = temp1;
+}
+
+void sub_809D1A8(u32 r0, u32 r1, u32 r2)
+{
+ gUnknown_20399E8.unk0 = r0;
+ gUnknown_20399E8.unk8 = 1;
+ gUnknown_20399E8.unkC = r2;
+ gUnknown_20399E8.unk4 = r1;
+}
+
+void sub_809D1BC(u32 r0, u32 r1)
+{
+ gUnknown_20399E8.unk0 = r0;
+ gUnknown_20399E8.unk8 = 2;
+ gUnknown_20399E8.unk10 = r1;
+}
+
+void sub_809D1CC(u32 r0, struct unkStruct_809D158 *r1, u32 r2)
+{
+ u32 temp;
+ u32 temp1;
+
+ gUnknown_20399E8.unk0 = r0;
+ gUnknown_20399E8.unk8 = 2;
+ gUnknown_20399E8.unk10 = r2;
+
+ // Load both first and then store
+ temp = r1->unk0;
+ temp1 = r1->unk4;
+ gUnknown_20399E8.unk14 = temp;
+ gUnknown_20399E8.unk18 = temp1;
+}
+
+void sub_809D1E4(u32 r0, u32 r1, u32 r2)
+{
+ gUnknown_20399E8.unk0 = r0;
+ gUnknown_20399E8.unk8 = 2;
+ gUnknown_20399E8.unk10 = r2;
+ gUnknown_20399E8.unk4 = r1;
+}
+
+void sub_809D1F8(u32 r0, u32 r1)
+{
+ gUnknown_20399E8.unk0 = r0;
+ gUnknown_20399E8.unk8 = 3;
+ gUnknown_20399E8.unkC = r1;
+}
+
+void sub_809D208(u32 r0, struct unkStruct_809D158 *r1, u32 r2)
+{
+ u32 temp;
+ u32 temp1;
+
+ gUnknown_20399E8.unk0 = r0;
+ gUnknown_20399E8.unk8 = 3;
+ gUnknown_20399E8.unkC = r2;
+
+ // Load both first and then store
+ temp = r1->unk0;
+ temp1 = r1->unk4;
+ gUnknown_20399E8.unk14 = temp;
+ gUnknown_20399E8.unk18 = temp1;
+}
+
+void sub_809D220(u32 r0, u32 r1, u32 r2)
+{
+ gUnknown_20399E8.unk0 = r0;
+ gUnknown_20399E8.unk8 = 3;
+ gUnknown_20399E8.unkC = r2;
+ gUnknown_20399E8.unk4 = r1;
+}
+
+u32 sub_809D234(void)
+{
+ u32 temp;
+ temp = gUnknown_20399E8.unk8;
+ if(temp != 0)
+ {
+ temp = 1;
+ }
+ return temp;
+}
+
+// TODO regswap but matches otherwise
+//u8 sub_809D248(struct unkStruct_809D158 *r0)
+//{
+// u32 temp;
+// u32 temp1;
+//
+// temp = gUnknown_20399E8.unk3C;
+// temp1 = gUnknown_20399E8.unk40;
+// r0->unk0 = temp;
+// r0->unk4 = temp1;
+// return gUnknown_20399E8.unk44;
+//}