diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2020-10-01 01:40:05 -0500 |
---|---|---|
committer | Seth Barberee <seth.barberee@gmail.com> | 2020-10-01 01:40:05 -0500 |
commit | 70c644dfdd82dd31038faf1e2ca37b833ee8c328 (patch) | |
tree | e9d83ee6ca8cc66f49aa581e99c1240696126487 | |
parent | 6415dfbaeb9190dbefa6eb2d8e3bbe520b8624a6 (diff) |
actually add both files
-rw-r--r-- | asm/code_80118A4.s | 87 | ||||
-rw-r--r-- | src/code_80118A4.c | 99 |
2 files changed, 98 insertions, 88 deletions
diff --git a/asm/code_80118A4.s b/asm/code_80118A4.s index 13edd86..309f837 100644 --- a/asm/code_80118A4.s +++ b/asm/code_80118A4.s @@ -5,93 +5,6 @@ .text - thumb_func_start sub_8011940 -sub_8011940: - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - bl sub_800C068 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _08011960 - cmp r4, r0 - bne _08011964 - eors r1, r4 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - b _0801196C - .align 2, 0 -_08011960: .4byte 0x000003e7 -_08011964: - movs r0, 0 - cmp r1, r4 - bne _0801196C - movs r0, 0x1 -_0801196C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8011940 - - thumb_func_start sub_8011974 -sub_8011974: - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - bl sub_800C074 - pop {r0} - bx r0 - thumb_func_end sub_8011974 - - thumb_func_start sub_8011988 -sub_8011988: - push {lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_800C074 - pop {r0} - bx r0 - thumb_func_end sub_8011988 - - thumb_func_start sub_801199C -sub_801199C: - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl sub_800C298 - pop {r0} - bx r0 - thumb_func_end sub_801199C - - thumb_func_start sub_80119AC -sub_80119AC: - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - bl sub_800C3F8 - pop {r0} - bx r0 - thumb_func_end sub_80119AC - - thumb_func_start sub_80119C0 -sub_80119C0: - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl sub_800C5D0 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80119C0 - thumb_func_start sub_80119D4 sub_80119D4: push {r4,lr} diff --git a/src/code_80118A4.c b/src/code_80118A4.c index 3881ba8..2ed0e9e 100644 --- a/src/code_80118A4.c +++ b/src/code_80118A4.c @@ -9,7 +9,19 @@ extern void sub_800BF80(void); extern void sub_800BFD0(u16 r0); extern void sub_800C3F8(u16 r0, u16 r1); extern void sub_801199C(u16 r0); -extern void sub_800C068(u16 r0); +extern u16 sub_800C068(); +extern void sub_800C074(u16 r0, u16 r1); +extern void sub_800C298(u16 r0); +extern u8 sub_800C5D0(u16 r0); + +struct UnkStructType +{ + /* 0x0 */ s16 unk0; + +}; + +extern u16 gUnknown_80D4144[]; +extern struct UnkStructType gUnknown_202DE20; void sub_80118A4(void) { @@ -49,3 +61,88 @@ void sub_8011930(u16 r0) { sub_800BFD0(r0); } + +// TODO fix this nonmatching +#ifndef NONMATCHING +NAKED +#endif +u32 sub_8011940(u16 r0) +{ +#ifdef NONMATCHING + u32 temp; + temp = sub_800C068(); + + if(r0 == 0x3e7) + { + temp ^= r0; + // TODO this OR/NEG apparently is close + temp |= -temp; + return temp >> 31; + } + + if(temp != r0) + return 0; + else + return 1; +#else + asm_unified("\tpush {r4,lr}\n" + "\tlsls r0, 16\n" + "\tlsrs r4, r0, 16\n" + "\tbl sub_800C068\n" + "\tlsls r0, 16\n" + "\tlsrs r1, r0, 16\n" + "\tldr r0, _08011960\n" + "\tcmp r4, r0\n" + "\tbne _08011964\n" + "\teors r1, r4\n" + "\tnegs r0, r1\n" + "\torrs r0, r1\n" + "\tlsrs r0, 31\n" + "\tb _0801196C\n" + "\t.align 2,0\n" + "_08011960: .4byte 0x000003e7\n" + "_08011964:\n" + "\tmovs r0, 0\n" + "\tcmp r1, r4\n" + "\tbne _0801196C\n" + "\tmovs r0, 0x1\n" + "_0801196C:\n" + "\tpop {r4}\n" + "\tpop {r1}\n" + "\tbx r1"); +#endif +} + +void sub_8011974(u16 r0, u16 r1) +{ + sub_800C074(r0, r1); +} + +void sub_8011988(u16 r0) +{ + sub_800C074(r0, 0x80 << 1); +} + +void sub_801199C(u16 r0) +{ + sub_800C298(r0); +} + +void sub_80119AC(u16 r0, u16 r1) +{ + sub_800C3F8(r0, r1); +} + +u8 sub_80119C0(u16 r0) +{ + return sub_800C5D0(r0); +} + +// TODO pretty close except r4's where should be r2's +//void sub_80119D4(u32 r0) +//{ +// if(gUnknown_202DE20.unk0 > 0) +// return; +// sub_800C074(gUnknown_80D4144[r0], 0x80 << 1); +// gUnknown_80D4144[r0] = 0x4; +//} |