diff options
author | huderlem <huderlem@gmail.com> | 2019-08-08 07:14:26 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-08 07:14:26 -0500 |
commit | 4c8669a3aad601f1381ca9c67c78040ce80157df (patch) | |
tree | 9159d3545978aa61ee210af5c66c09d3893f9e54 /src/rom_1068C.c | |
parent | 08bd3049160f9a6d05aa680a3106854015798f58 (diff) | |
parent | 254f7f6a218d68ced40fdf5f08b3e63d272981fc (diff) |
Merge pull request #7 from camthesaxman/misc
decompile rom_1068C.s and rom_528AC.s
Diffstat (limited to 'src/rom_1068C.c')
-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 |