diff options
author | Cameron Hall <cameronghall@cox.net> | 2019-08-05 21:48:30 -0500 |
---|---|---|
committer | Cameron Hall <cameronghall@cox.net> | 2019-08-05 21:48:30 -0500 |
commit | 66780ab02c2d26de2b74e64b07320467a47b42db (patch) | |
tree | 918340b38b16e9aba7d9f85d8e5e200f0649445d /src | |
parent | e1558f0801b1a28197a00cf6cf8cc703129aa36a (diff) |
decompile rom_1068C.s
Diffstat (limited to 'src')
-rw-r--r-- | src/rom_1068C.c | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/src/rom_1068C.c b/src/rom_1068C.c new file mode 100644 index 0000000..4a5e619 --- /dev/null +++ b/src/rom_1068C.c @@ -0,0 +1,124 @@ +#include "global.h" +#include "main.h" + +void sub_1068C(int a, int b, int c, int d, u16 e) +{ + u16 i; + u16 j; + + for (i = 0; i < d; i++) + { + for (j = 0; j < c; j++) + { + u16 index = b * 32 + a + i * 32 + j; + + gUnknown_03005C00[index] = (gUnknown_03005C00[index] & 0xFFF) | (e << 12); + } + } +} + +// This requires volatile parameters to match. There is no reason, *ever*, to do this. +void sub_10708(void *volatile src, void *volatile dest, s16 numTilesX, s16 numTilesY) +{ + int i; + + for (i = 0; i < numTilesY; i++) + { + DmaCopy16(3, (u8 *)src + 0x400 * i, (u8 *)dest + 0x400 * i, numTilesX * 32); + } +} + +void sub_10750(void *volatile src, void *volatile dest, s16 numTilesX, s16 numTilesY) +{ + int i; + + for (i = 0; i < numTilesY; i++) + { + DmaCopy16(3, (u8 *)src + 0x40 * i, (u8 *)dest + 0x40 * i, numTilesX * 2); + } +} + +void sub_10798(void *a, void *b, void (*func)(void)) +{ + u16 i; + + DmaCopy16(3, a, gUnknown_0201A920, 0x200); + DmaCopy16(3, b, gUnknown_0201A920 + 0x200, 0x200); + DmaFill16(3, 0x7FFF, gUnknown_0201A920 - 0x200, 0x400); + DmaCopy16(3, gUnknown_0201A920 - 0x200, gUnknown_0201A920 + 0x200, 0x400); + DmaCopy16(3, gUnknown_0201A920 + 0x200, (void *)PLTT, 0x400); + + sub_1050C(); + gMain.unk16 = REG_DISPCNT; + + for (i = 0; i <= 32; i += 16) + { + if (func != NULL) + func(); + sub_1001C(i); + sub_D74(); + if (i == 32) + { + DmaCopy16(3, gUnknown_0201A920, (void *)PLTT, 0x400); + } + else + { + DmaCopy16(3, gUnknown_0201AD20, (void *)PLTT, 0x400); + } + } +} + +void sub_10860(void (*func)(void)) +{ + u16 i; + + DmaCopy16(3, (void *)PLTT, gUnknown_0201A520, 0x400); + DmaFill16(3, 0x7FFF, gUnknown_0201A520 + 0x200, 0x400); + DmaCopy16(3, gUnknown_0201A520, gUnknown_0201A520 + 0x400, 0x400); + + for (i = 0; i <= 32; i += 16) + { + if (func != NULL) + func(); + sub_1001C(i); + sub_D74(); + if (i == 32) + { + DmaCopy16(3, gUnknown_0201A920, (void *)PLTT, 0x400); + } + else + { + DmaCopy16(3, gUnknown_0201AD20, (void *)PLTT, 0x400); + } + } + sub_D74(); +} + +#ifdef NONMATCHING +// Like sub_C24, it matches except for that damn 'push {lr}/pop {lr}' +void sub_1090C(void) +{ + int i; + + for (i = 0; i < 4; i++) + gUnknown_0201A500[i] = 0; +} +#else +NAKED +void sub_1090C(void) +{ + asm_unified("\n\ + ldr r1, _08010920 @ =gUnknown_0201A500\n\ + movs r2, #0\n\ + adds r0, r1, #0\n\ + adds r0, #0xc\n\ +_08010914:\n\ + str r2, [r0]\n\ + subs r0, #4\n\ + cmp r0, r1\n\ + bge _08010914\n\ + bx lr\n\ + .align 2, 0\n\ +_08010920: .4byte gUnknown_0201A500"); +} +#endif |