diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2020-09-16 14:00:48 -0500 |
---|---|---|
committer | Seth Barberee <seth.barberee@gmail.com> | 2020-09-16 14:00:48 -0500 |
commit | 190c3562b9df62ab57297c46348f3739563c9868 (patch) | |
tree | 735a8a62d07f64809fe90e38b35f545fa499204d | |
parent | 5cdd4a723668c8abd46205f74a51a8a82e72f35c (diff) |
decomp a chunk of input
-rw-r--r-- | asm/input.s | 129 | ||||
-rw-r--r-- | include/input.h | 44 | ||||
-rwxr-xr-x | ld_script.txt | 1 | ||||
-rw-r--r-- | src/input.c | 206 |
4 files changed, 251 insertions, 129 deletions
diff --git a/asm/input.s b/asm/input.s index d439867..f7b8540 100644 --- a/asm/input.s +++ b/asm/input.s @@ -5,135 +5,6 @@ .text - thumb_func_start InitInput -InitInput: - ldr r0, =gUnknown_20255F0 - movs r3, 0 - movs r2, 0 - strh r2, [r0] - strh r2, [r0, 0x2] - strh r2, [r0, 0x4] - strh r2, [r0, 0x6] - ldr r0, =gUnknown_2025638 - strh r2, [r0] - strh r2, [r0, 0x2] - strh r2, [r0, 0x4] - strh r2, [r0, 0x6] - ldr r1, =gUnknown_202562C - ldr r0, =0x4a14c1 - str r0, [r1] - ldr r0, =gUnknown_2025600 - str r2, [r0, 0x20] - ldr r1, =0xffff - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r1, [r0, 0x1C] - strh r1, [r0, 0x1E] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - strh r1, [r0, 0x14] - strh r1, [r0, 0x16] - adds r1, r0, 0 - adds r1, 0x28 - strb r3, [r1] - adds r0, 0x29 - strb r3, [r0] - ldr r0, =gUnknown_2025668 - strh r2, [r0] - strh r2, [r0, 0x2] - bx lr - .align 2, 0 - .pool - thumb_func_end InitInput - - thumb_func_start sub_800485C -sub_800485C: - push {r4,r5,lr} - ldr r2, =gUnknown_2025638 - ldr r1, =gUnknown_20255F0 - adds r0, r2, 0 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldr r0, [r0] - str r0, [r1] - movs r3, 0 - movs r0, 0 - strh r0, [r2] - strh r0, [r2, 0x2] - strh r0, [r2, 0x4] - strh r0, [r2, 0x6] - ldr r0, =gUnknown_2025600 - ldr r1, =0xffff - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - strh r1, [r0, 0x14] - strh r1, [r0, 0x16] - adds r1, r0, 0 - adds r1, 0x28 - strb r3, [r1] - adds r0, 0x29 - strb r3, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end sub_800485C - - thumb_func_start sub_80048B8 -sub_80048B8: - movs r0, 0 - bx lr - thumb_func_end sub_80048B8 - - thumb_func_start sub_80048BC -sub_80048BC: - movs r0, 0 - bx lr - thumb_func_end sub_80048BC - - thumb_func_start sub_80048C0 -sub_80048C0: - movs r0, 0 - bx lr - thumb_func_end sub_80048C0 - - thumb_func_start sub_80048C4 -sub_80048C4: - movs r0, 0 - bx lr - thumb_func_end sub_80048C4 - - thumb_func_start sub_80048C8 -sub_80048C8: - movs r0, 0 - bx lr - thumb_func_end sub_80048C8 - - thumb_func_start sub_80048CC -sub_80048CC: - movs r0, 0 - bx lr - thumb_func_end sub_80048CC - thumb_func_start sub_80048D0 sub_80048D0: ldr r1, =gUnknown_20255F0 diff --git a/include/input.h b/include/input.h new file mode 100644 index 0000000..1ac1bec --- /dev/null +++ b/include/input.h @@ -0,0 +1,44 @@ +struct test +{ + /* 0x0 */ u16 unk0; + /* 0x2 */ u16 unk1; + /* 0x4 */ u16 unk2; + /* 0x6 */ u16 unk3; + /* 0x8 */ u16 unk4; +}; + +struct test3 +{ + /* 0x0 */ u16 unk0; + /* 0x2 */ u16 unk1; + /* 0x4 */ u16 unk2; + /* 0x6 */ u16 unk3; +}; + +struct Input +{ + /* 0x0 */ u16 unk0; + /* 0x2 */ u16 unk1; + /* 0x4 */ u16 unk2; + /* 0x6 */ u16 unk3; + /* 0x8 */ u16 unk4; + /* 0xA */ u16 unk5; + /* 0xC */ u16 unk6; + /* 0xE */ u16 unk7; + /* 0x10 */ u16 unk8; + /* 0x12 */ u16 unk9; + /* 0x14 */ u16 unk10; + /* 0x16 */ u16 unk11; + /* 0x18 */ u16 unk12; + /* 0x1A */ u16 unk13; + /* 0x1C */ u16 unk14; + /* 0x1E */ u16 unk15; + /* 0x20 */ u16 unk16; + /* 0x22 */ u16 unk17[3]; // padding + /* 0x28 */ u8 unk18; + /* 0x29 */ u8 unk19; + /* 0x2A */ u8 unk20; +}; + +void InitInput(void); +void sub_800485C(void); diff --git a/ld_script.txt b/ld_script.txt index ed0cae4..c1d91f7 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -52,6 +52,7 @@ SECTIONS { src/other_random.o(.text); src/util.o(.text); src/bg_palette_buffer.o(.text); + src/input.o(.text); asm/input.o(.text); asm/code_8004AA0.o(.text); src/sprite.o(.text); diff --git a/src/input.c b/src/input.c new file mode 100644 index 0000000..9455eb2 --- /dev/null +++ b/src/input.c @@ -0,0 +1,206 @@ +#include "global.h" +#include "input.h" + +extern struct Input gUnknown_2025600; +extern struct test gUnknown_20255F0; +extern struct test gUnknown_2025638; +extern struct test gUnknown_2025648; +extern struct test3 gUnknown_2025668; +extern u32 gUnknown_202562C; + +#ifndef NONMATCHING +NAKED +#endif +void InitInput(void) +{ +#ifdef NONMATCHING + gUnknown_20255F0.unk0 = 0; + gUnknown_20255F0.unk1 = 0; + gUnknown_20255F0.unk2 = 0; + gUnknown_20255F0.unk3 = 0; + + gUnknown_2025638.unk0 = 0; + gUnknown_2025638.unk1 = 0; + gUnknown_2025638.unk2 = 0; + gUnknown_2025638.unk3 = 0; + + gUnknown_202562C = 4854977; // ????? (0x4a14c1) + + gUnknown_2025600.unk16 = 0; // TODO: should be str but generates strh + gUnknown_2025600.unk0 = 0xffff; // probably a mask + gUnknown_2025600.unk1 = -1; + gUnknown_2025600.unk2 = -1; + gUnknown_2025600.unk3 = -1; + gUnknown_2025600.unk14 = -1; + gUnknown_2025600.unk15 = -1; + gUnknown_2025600.unk4 = -1; + gUnknown_2025600.unk5 = -1; + gUnknown_2025600.unk6 = -1; + gUnknown_2025600.unk7 = -1; + gUnknown_2025600.unk8 = -1; + gUnknown_2025600.unk9 = -1; + gUnknown_2025600.unk10 = -1; + gUnknown_2025600.unk11 = -1; + gUnknown_2025600.unk18 = 0; + gUnknown_2025600.unk19 = 0; + + gUnknown_2025668.unk0 = 0; + gUnknown_2025668.unk1 = 0; +#else + asm_unified("\tldr r0, =gUnknown_20255F0\n" + "\tmovs r3, 0\n" + "\tmovs r2, 0\n" + "\tstrh r2, [r0] \n" + "\tstrh r2, [r0, 0x2]\n" + "\tstrh r2, [r0, 0x4]\n" + "\tstrh r2, [r0, 0x6]\n" + "\tldr r0, =gUnknown_2025638\n" + "\tstrh r2, [r0]\n" + "\tstrh r2, [r0, 0x2]\n" + "\tstrh r2, [r0, 0x4]\n" + "\tstrh r2, [r0, 0x6]\n" + "\tldr r1, =gUnknown_202562C\n" + "\tldr r0, =0x4a14c1\n" + "\tstr r0, [r1]\n" + "\tldr r0, =gUnknown_2025600\n" + "\tstr r2, [r0, 0x20]\n" + "\tldr r1, =0xffff\n" + "\tstrh r1, [r0] \n" + "\tmovs r1, 0x1\n" + "\tnegs r1, r1\n" + "\tstrh r1, [r0, 0x2]\n" + "\tstrh r1, [r0, 0x4]\n" + "\tstrh r1, [r0, 0x6]\n" + "\tstrh r1, [r0, 0x1C]\n" + "\tstrh r1, [r0, 0x1E]\n" + "\tstrh r1, [r0, 0x8]\n" + "\tstrh r1, [r0, 0xA]\n" + "\tstrh r1, [r0, 0xC]\n" + "\tstrh r1, [r0, 0xE]\n" + "\tstrh r1, [r0, 0x10]\n" + "\tstrh r1, [r0, 0x12]\n" + "\tstrh r1, [r0, 0x14]\n" + "\tstrh r1, [r0, 0x16]\n" + "\tadds r1, r0, 0\n" + "\tadds r1, 0x28\n" + "\tstrb r3, [r1]\n" + "\tadds r0, 0x29\n" + "\tstrb r3, [r0]\n" + "\tldr r0, =gUnknown_2025668\n" + "\tstrh r2, [r0]\n" + "\tstrh r2, [r0, 0x2]\n" + "\tbx lr\n" + "\t.align 2, 0\n" + "\t.pool"); +#endif +} + +#ifndef NONMATCHING +NAKED +#endif +void sub_800485C(void) +{ +#ifdef NONMATCHING + gUnknown_20255F0 = gUnknown_2025638; + + // TODO missing: + // ldr r0, [r0] + // str r0, [r1] + + gUnknown_2025638.unk0 = 0; + gUnknown_2025638.unk1 = 0; + gUnknown_2025638.unk2 = 0; + gUnknown_2025638.unk3 = 0; + + gUnknown_2025600.unk0 = 0xffff; + gUnknown_2025600.unk1 = -1; + gUnknown_2025600.unk2 = -1; + gUnknown_2025600.unk3 = -1; + gUnknown_2025600.unk4 = -1; + gUnknown_2025600.unk5 = -1; + gUnknown_2025600.unk6 = -1; + gUnknown_2025600.unk7 = -1; + gUnknown_2025600.unk8 = -1; + gUnknown_2025600.unk9 = -1; + gUnknown_2025600.unk10 = -1; + gUnknown_2025600.unk11 = -1; + + gUnknown_2025600.unk18 = 0; + gUnknown_2025600.unk19 = 0; +#else + asm_unified("\tpush {r4,r5,lr}\n" + "\tldr r2, =gUnknown_2025638\n" + "\tldr r1, =gUnknown_20255F0\n" + "\tadds r0, r2, 0\n" + "\tldm r0!, {r3-r5}\n" + "\tstm r1!, {r3-r5}\n" + "\tldr r0, [r0]\n" + "\tstr r0, [r1]\n" + "\tmovs r3, 0\n" + "\tmovs r0, 0\n" + "\tstrh r0, [r2]\n" + "\tstrh r0, [r2, 0x2]\n" + "\tstrh r0, [r2, 0x4]\n" + "\tstrh r0, [r2, 0x6]\n" + "\tldr r0, =gUnknown_2025600\n" + "\tldr r1, =0xffff\n" + "\tstrh r1, [r0]\n" + "\tmovs r1, 0x1\n" + "\tnegs r1, r1\n" + "\tstrh r1, [r0, 0x2]\n" + "\tstrh r1, [r0, 0x4]\n" + "\tstrh r1, [r0, 0x6]\n" + "\tstrh r1, [r0, 0x8]\n" + "\tstrh r1, [r0, 0xA]\n" + "\tstrh r1, [r0, 0xC]\n" + "\tstrh r1, [r0, 0xE]\n" + "\tstrh r1, [r0, 0x10]\n" + "\tstrh r1, [r0, 0x12]\n" + "\tstrh r1, [r0, 0x14]\n" + "\tstrh r1, [r0, 0x16]\n" + "\tadds r1, r0, 0\n" + "\tadds r1, 0x28\n" + "\tstrb r3, [r1]\n" + "\tadds r0, 0x29\n" + "\tstrb r3, [r0]\n" + "\tpop {r4,r5}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "\t.pool"); +#endif +} + +// Unused +u8 sub_80048B8(void) +{ + return 0; +} + +u8 sub_80048BC(void) +{ + return 0; +} + +// Unused +u8 sub_80048C0(void) +{ + return 0; +} + +// Unused +u8 sub_80048C4(void) +{ + return 0; +} + +u8 sub_80048C8(void) +{ + return 0; +} + +// Unused +u8 sub_80048CC(void) +{ + return 0; +} |