mirror of https://github.com/zeldaret/tmc.git
matched sub_080B15E8...
This commit is contained in:
parent
5384f3daa9
commit
689ea85c5b
2
Makefile
2
Makefile
|
@ -83,7 +83,7 @@ NODEP := 1
|
|||
endif
|
||||
|
||||
#$(C_BUILDDIR)/need_interworking_file_name.o: CFLAGS += -mthumb-interwork
|
||||
$(C_BUILDDIR)/code_080B1520.o: CFLAGS += -mthumb-interwork
|
||||
$(C_BUILDDIR)/code_080B1520.o: CFLAGS = -O1 -mthumb-interwork -Wimplicit -Wparentheses -Werror -Wno-multichar
|
||||
|
||||
C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c)
|
||||
C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
|
||||
|
|
|
@ -5,99 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_080B15E8
|
||||
sub_080B15E8: @ 0x080B15E8
|
||||
push {r4, r5, r6, lr}
|
||||
sub sp, #0x88
|
||||
adds r5, r1, #0
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r3, r0, #0x10
|
||||
ldr r0, _080B1600 @ =gUnk_02036A50
|
||||
ldr r0, [r0]
|
||||
ldrh r0, [r0, #4]
|
||||
cmp r3, r0
|
||||
blo _080B1608
|
||||
ldr r0, _080B1604 @ =0x000080FF
|
||||
b _080B168A
|
||||
.align 2, 0
|
||||
_080B1600: .4byte gUnk_02036A50
|
||||
_080B1604: .4byte 0x000080FF
|
||||
_080B1608:
|
||||
ldr r0, _080B1694 @ =gUnk_02036A50
|
||||
adds r6, r0, #0
|
||||
ldr r0, [r0]
|
||||
ldrb r1, [r0, #8]
|
||||
lsls r0, r1, #1
|
||||
mov r4, sp
|
||||
adds r2, r0, r4
|
||||
adds r2, #2
|
||||
movs r4, #0
|
||||
cmp r4, r1
|
||||
bhs _080B1632
|
||||
_080B161E:
|
||||
strh r3, [r2]
|
||||
subs r2, #2
|
||||
lsrs r3, r3, #1
|
||||
adds r0, r4, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r4, r0, #0x18
|
||||
ldr r0, [r6]
|
||||
ldrb r0, [r0, #8]
|
||||
cmp r4, r0
|
||||
blo _080B161E
|
||||
_080B1632:
|
||||
movs r0, #1
|
||||
strh r0, [r2]
|
||||
subs r2, #2
|
||||
strh r0, [r2]
|
||||
movs r4, #0xd0
|
||||
lsls r4, r4, #0x14
|
||||
ldr r0, _080B1694 @ =gUnk_02036A50
|
||||
ldr r0, [r0]
|
||||
ldrb r2, [r0, #8]
|
||||
adds r2, #3
|
||||
mov r0, sp
|
||||
adds r1, r4, #0
|
||||
bl sub_080B1568
|
||||
adds r0, r4, #0
|
||||
mov r1, sp
|
||||
movs r2, #0x44
|
||||
bl sub_080B1568
|
||||
add r2, sp, #8
|
||||
adds r5, #6
|
||||
movs r4, #0
|
||||
movs r6, #1
|
||||
_080B1660:
|
||||
movs r1, #0
|
||||
movs r3, #0
|
||||
_080B1664:
|
||||
lsls r1, r1, #0x11
|
||||
ldrh r0, [r2]
|
||||
ands r0, r6
|
||||
lsrs r1, r1, #0x10
|
||||
orrs r1, r0
|
||||
adds r2, #2
|
||||
adds r0, r3, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r3, r0, #0x18
|
||||
cmp r3, #0xf
|
||||
bls _080B1664
|
||||
strh r1, [r5]
|
||||
subs r5, #2
|
||||
adds r0, r4, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r4, r0, #0x18
|
||||
cmp r4, #3
|
||||
bls _080B1660
|
||||
movs r0, #0
|
||||
_080B168A:
|
||||
add sp, #0x88
|
||||
pop {r4, r5, r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080B1694: .4byte gUnk_02036A50
|
||||
|
||||
thumb_func_start sub_080B1698
|
||||
sub_080B1698: @ 0x080B1698
|
||||
push {lr}
|
||||
|
|
|
@ -1,8 +1,17 @@
|
|||
#include "global.h"
|
||||
|
||||
extern u16 (*gUnk_02036A50)[];
|
||||
extern u16 gUnk_08DE7D40[];
|
||||
extern u16 gUnk_08DE7D4C[];
|
||||
typedef struct struct_08DE7D40 {
|
||||
u16 unk_00;
|
||||
u16 unk_02;
|
||||
u16 unk_04;
|
||||
u16 unk_06;
|
||||
u8 unk_08;
|
||||
u8 filler[3];
|
||||
} struct_08DE7D40;
|
||||
|
||||
extern struct_08DE7D40* gUnk_02036A50;
|
||||
extern struct_08DE7D40 gUnk_08DE7D40;
|
||||
extern struct_08DE7D40 gUnk_08DE7D4C;
|
||||
|
||||
u32 sub_080B1520(u16 unk_1) {
|
||||
u32 ret;
|
||||
|
@ -21,22 +30,20 @@ u32 sub_080B1520(u16 unk_1) {
|
|||
return ret;
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/code_080B1520/sub_080B1568.inc", void sub_080B1568(u32 unk_1, u32 unk_2, u32 unk_3)) {
|
||||
NONMATCH("asm/non_matching/code_080B1520/sub_080B1568.inc", void sub_080B1568(u16* src, u16* dest, u32 cnt)) {
|
||||
u32 temp;
|
||||
|
||||
u16 u1;
|
||||
u16 IME_save;
|
||||
u16* ptr;
|
||||
|
||||
u1 = unk_3;
|
||||
u1 = cnt;
|
||||
IME_save = REG_IME;
|
||||
REG_IME = 0;
|
||||
temp = REG_WAITCNT & 0xf8ff;
|
||||
ptr = *gUnk_02036A50;
|
||||
temp |= ptr[3];
|
||||
temp |= gUnk_02036A50->unk_06;
|
||||
REG_WAITCNT = temp;
|
||||
REG_DMA3SAD = unk_1;
|
||||
REG_DMA3DAD = unk_2;
|
||||
REG_DMA3SAD = (u32)src;
|
||||
REG_DMA3DAD = (u32)dest;
|
||||
REG_DMA3CNT = u1 | 0x80000000;
|
||||
if ((REG_DMA3CNT_H & 0x8000) != 0) {
|
||||
while ((REG_DMA3CNT_H & 0x8000) != 0) {}
|
||||
|
@ -44,3 +51,38 @@ NONMATCH("asm/non_matching/code_080B1520/sub_080B1568.inc", void sub_080B1568(u3
|
|||
REG_IME = IME_save;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
u32 sub_080B15E8(u16 unk_1, u16* unk_2) {
|
||||
u16 stack[0x44];
|
||||
|
||||
u16* ptr;
|
||||
u8 t1, t2;
|
||||
u16 value;
|
||||
|
||||
if (unk_1 >= gUnk_02036A50->unk_04) {
|
||||
return 0x80ff;
|
||||
} else {
|
||||
ptr = stack;
|
||||
(u8*)ptr += (gUnk_02036A50->unk_08 << 1) + 1;
|
||||
((u8*)ptr)++;
|
||||
for (t1 = 0; t1 < gUnk_02036A50->unk_08; t1++) {
|
||||
*(ptr--) = unk_1;
|
||||
unk_1 >>= 1;
|
||||
}
|
||||
*(ptr--) = 1;
|
||||
*ptr = 1;
|
||||
sub_080B1568(stack, (u16*)0xd000000, gUnk_02036A50->unk_08 + 3);
|
||||
sub_080B1568((u16*)0xd000000, stack, 0x44);
|
||||
ptr = stack + 4;
|
||||
unk_2 += 3;
|
||||
for (t1 = 0; t1 < 4; t1++) {
|
||||
value = 0;
|
||||
for (t2 = 0; t2 < 0x10; t2++) {
|
||||
value <<= 1;
|
||||
value |= (*ptr++) & 1;
|
||||
}
|
||||
*(unk_2--) = value;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue