diff options
-rw-r--r-- | asm/code_8012A18.s | 35 | ||||
-rw-r--r-- | asm/code_8092334.s | 95 | ||||
-rw-r--r-- | src/code_8092334.c | 24 | ||||
-rw-r--r-- | src/save1.c | 75 |
4 files changed, 98 insertions, 131 deletions
diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s index 655d6c8..2cd92ca 100644 --- a/asm/code_8012A18.s +++ b/asm/code_8012A18.s @@ -5,41 +5,6 @@ .text - thumb_func_start sub_8012A64 -sub_8012A64: - push {r4,lr} - adds r4, r0, 0 - cmp r4, 0 - beq _08012A94 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08012A7A - adds r0, r4, 0 - bl nullsub_34 -_08012A7A: - ldrb r1, [r4, 0x1] - cmp r1, 0 - beq _08012A88 - movs r0, 0 - strb r0, [r4, 0x1] - movs r0, 0x1 - b _08012A98 -_08012A88: - ldrb r0, [r4, 0x2] - cmp r0, 0 - beq _08012A94 - strb r1, [r4, 0x2] - movs r0, 0x2 - b _08012A98 -_08012A94: - bl sub_8012AE8 -_08012A98: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8012A64 - thumb_func_start GetKeyPress GetKeyPress: push {lr} diff --git a/asm/code_8092334.s b/asm/code_8092334.s index f3275fc..012f3fb 100644 --- a/asm/code_8092334.s +++ b/asm/code_8092334.s @@ -5,101 +5,6 @@ .text -@ thumb_func_start sub_8092334 -@sub_8092334: -@ lsls r0, 24 -@ ldr r1, _08092340 -@ lsrs r0, 22 -@ adds r0, r1 -@ ldr r0, [r0] -@ bx lr -@ .align 2, 0 -@_08092340: .4byte gUnknown_810AD4C -@ thumb_func_end sub_8092334 - -@ thumb_func_start sub_8092344 -@sub_8092344: -@ lsls r0, 24 -@ ldr r1, _08092350 -@ lsrs r0, 22 -@ adds r0, r1 -@ ldr r0, [r0] -@ bx lr -@ .align 2, 0 -@_08092350: .4byte gUnknown_810AE24 -@ thumb_func_end sub_8092344 - -@ thumb_func_start sub_8092354 -@sub_8092354: -@ lsls r0, 24 -@ lsrs r0, 24 -@ ldr r1, _08092360 -@ adds r0, r1 -@ ldrb r0, [r0] -@ bx lr -@ .align 2, 0 -@_08092360: .4byte gUnknown_810AC7C -@ thumb_func_end sub_8092354 - -@ thumb_func_start sub_8092364 -@sub_8092364: -@ lsls r0, 24 -@ lsrs r0, 24 -@ ldr r1, _08092370 -@ adds r0, r1 -@ ldrb r0, [r0] -@ bx lr -@ .align 2, 0 -@_08092370: .4byte gUnknown_810AC6A -@ thumb_func_end sub_8092364 - - thumb_func_start sub_8092374 -sub_8092374: - push {lr} - lsls r1, 24 - ldr r2, _0809238C - lsrs r1, 22 - adds r1, r2 - ldr r1, [r1] - movs r2, 0x50 - bl strncpy - pop {r0} - bx r0 - .align 2, 0 -_0809238C: .4byte gUnknown_810B4C8 - thumb_func_end sub_8092374 - - thumb_func_start sub_8092390 -sub_8092390: - lsls r0, 24 - ldr r1, _0809239C - lsrs r0, 22 - adds r0, r1 - ldr r0, [r0] - bx lr - .align 2, 0 -_0809239C: .4byte gUnknown_810B988 - thumb_func_end sub_8092390 - - thumb_func_start sub_80923A0 -sub_80923A0: - ldr r1, _080923A8 - ldr r0, _080923AC - str r0, [r1] - bx lr - .align 2, 0 -_080923A8: .4byte gUnknown_203B468 -_080923AC: .4byte gUnknown_2038C28 - thumb_func_end sub_80923A0 - - thumb_func_start sub_80923B0 -sub_80923B0: - ldr r0, _080923B4 - bx lr - .align 2, 0 -_080923B4: .4byte gUnknown_2038C28 - thumb_func_end sub_80923B0 - thumb_func_start sub_80923B8 sub_80923B8: push {lr} diff --git a/src/code_8092334.c b/src/code_8092334.c index cb9acff..88a9c5a 100644 --- a/src/code_8092334.c +++ b/src/code_8092334.c @@ -4,6 +4,10 @@ extern u32 gUnformattedTypeStrings[]; // unformatted type names extern u32 gFormattedTypeStrings[]; // formatted type names extern u8 gUnknown_810AC7C[]; extern u8 gUnknown_810AC6A[]; +extern u8 *gUnknown_810B4C8[]; +extern u8 *gUnknown_810B988[]; +extern u32 gUnknown_2038C28; +extern u32 *gUnknown_203B468; u32 GetUnformattedTypeString(u8 type) { @@ -24,3 +28,23 @@ u8 sub_8092364(u8 r0) { return gUnknown_810AC6A[r0]; } + +void sub_8092374(char *r0, u8 r1) +{ + strncpy(r0, gUnknown_810B4C8[r1], 0x50); +} + +u8 *sub_8092390(u8 r0) +{ + return gUnknown_810B988[r0]; +} + +void sub_80923A0(void) +{ + gUnknown_203B468 = &gUnknown_2038C28; +} + +u32 *sub_80923B0(void) +{ + return &gUnknown_2038C28; +} diff --git a/src/save1.c b/src/save1.c index 1063c66..5b8ad19 100644 --- a/src/save1.c +++ b/src/save1.c @@ -9,6 +9,28 @@ struct UnkSaveStruct1 /* 0xA */ u8 unkA; }; +struct UnkStruct +{ + /* 0x0 */ u8 unk0; + /* 0x1 */ u8 unk1; + /* 0x2 */ u8 unk2; + /* 0x3 */ u8 unk3; + /* 0x4 */ u8 unk4; + /* 0x5 */ u32 unk5; + /* 0x9 */ u32 unk9; + /* 0xD */ u32 unkD; + /* 0x12 */ u32 unk11; + /* 0x16 */ u32 unk15; + /* 0x1A */ u32 unk19; + /* 0x1E */ u32 unk1D; + /* 0x24 */ u32 unk24; + /* 0x28 */ u8 unk28; + /* 0x29 */ u8 unk29; + /* 0x2A */ u8 unk2A; + /* 0x2B */ u8 unk2B; + /* 0x2C */ u8 unk2C; +}; + extern void MemoryFree(void *); extern void sub_8011860(); extern void xxx_draw_string_80144C4(); @@ -24,7 +46,8 @@ extern void xxx_call_update_bg_vram(); extern void sub_8009908(); extern void xxx_call_update_bg_sound_input(); extern void ResetSprites(u8 r0); - +extern u32 sub_8012AE8(void); +extern void nullsub_34(struct UnkStruct *r0); extern struct UnkSaveStruct1 *gUnknown_203B46C; @@ -55,3 +78,53 @@ void sub_8012A18() xxx_call_update_bg_sound_input(); ResetSprites(0); } + +u32 sub_8012A64(struct UnkStruct *r0, u32 r1) +{ + if(r0 == NULL) + { + return sub_8012AE8(); + } + if(r1 != -1) + { + nullsub_34(r0); + } + if(r0->unk1 != 0) + { + r0->unk1 = 0; + return 1; + } + if(r0->unk2 == 0) + { + return sub_8012AE8(); + } + r0->unk2 = r0->unk1; + return 2; +} + +// TODO match that one line +//u32 GetKeyPress(struct UnkStruct *r0) +//{ +// if(r0 == NULL) +// { +// return sub_8012AE8(); +// } +// // TODO it's not a struct access.. +// if(r0->unk29 != 0) +// { +// return 1; +// } +// if(r0->unk2A != 0) +// { +// return 2; +// } +// if(r0->unk2C != 0) +// { +// return 9; +// } +// if(r0->unk2B == 0) +// { +// return sub_8012AE8(); +// } +// return 0xA; +//} |