diff options
| author | Revo <projectrevotpp@hotmail.com> | 2020-10-22 15:58:49 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-22 15:58:49 -0400 |
| commit | 8fd68eac26a17cd4b7a2bdb637d4d1f5497c5201 (patch) | |
| tree | 8738887e457e1810630882b715783ed34a2838c5 | |
| parent | a66cb7497f72a1628834b28328da86b4a33326d9 (diff) | |
| parent | e59582e0613910f8a47b0d6458975a5205d16d4e (diff) | |
Merge pull request #151 from mparisi20/master
decompile code_801DB81C and establish some type-naming and .cpp source file layout conventions
| -rw-r--r-- | asm/bss_2.s | 3 | ||||
| -rw-r--r-- | asm/code_801DB81C.s | 235 | ||||
| -rw-r--r-- | asm/ctors_2.s | 2 | ||||
| -rw-r--r-- | asm/sbss_2.s | 19 | ||||
| -rw-r--r-- | include/SDK/OS/OSCache.h | 14 | ||||
| -rw-r--r-- | include/SDK/os.h | 15 | ||||
| -rw-r--r-- | include/code_801DB040.h | 20 | ||||
| -rw-r--r-- | include/code_801DB81C.h | 16 | ||||
| -rw-r--r-- | include/code_801DBB3C.h | 8 | ||||
| -rw-r--r-- | include/ctorStruct.h (renamed from include/unkStruct.h) | 10 | ||||
| -rw-r--r-- | obj_files.mk | 2 | ||||
| -rw-r--r-- | src/code_801DAA30.cpp | 7 | ||||
| -rw-r--r-- | src/code_801DAAE0.cpp | 25 | ||||
| -rw-r--r-- | src/code_801DB040.cpp | 61 | ||||
| -rw-r--r-- | src/code_801DB81C.cpp | 175 |
15 files changed, 290 insertions, 322 deletions
diff --git a/asm/bss_2.s b/asm/bss_2.s index bcde67a..d2c9f39 100644 --- a/asm/bss_2.s +++ b/asm/bss_2.s @@ -1,8 +1,5 @@ .section .bss, "wa" # 0x80474F00 - 0x80643050
-.global lbl_80491370
-lbl_80491370:
- .skip 0x100
.global lbl_80491470
lbl_80491470:
.skip 0x380
diff --git a/asm/code_801DB81C.s b/asm/code_801DB81C.s deleted file mode 100644 index 5544ad5..0000000 --- a/asm/code_801DB81C.s +++ /dev/null @@ -1,235 +0,0 @@ -.include "macros.inc"
-
-.section .text, "ax" # 0x80006980 - 0x803E1E60
-
-.global func_801DB81C
-func_801DB81C:
-/* 801DB81C 001D747C 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 801DB820 001D7480 7C 08 02 A6 */ mflr r0
-/* 801DB824 001D7484 90 01 00 24 */ stw r0, 0x24(r1)
-/* 801DB828 001D7488 38 00 00 FF */ li r0, 0xff
-/* 801DB82C 001D748C 93 E1 00 1C */ stw r31, 0x1c(r1)
-/* 801DB830 001D7490 3F E0 80 49 */ lis r31, lbl_80491370@ha
-/* 801DB834 001D7494 93 C1 00 18 */ stw r30, 0x18(r1)
-/* 801DB838 001D7498 3B C0 00 00 */ li r30, 0
-/* 801DB83C 001D749C 93 A1 00 14 */ stw r29, 0x14(r1)
-/* 801DB840 001D74A0 3B BF 13 70 */ addi r29, r31, lbl_80491370@l
-/* 801DB844 001D74A4 93 81 00 10 */ stw r28, 0x10(r1)
-/* 801DB848 001D74A8 7C 7C 1B 78 */ mr r28, r3
-/* 801DB84C 001D74AC 98 1D 00 00 */ stb r0, 0(r29)
-/* 801DB850 001D74B0 98 1D 00 08 */ stb r0, 8(r29)
-/* 801DB854 001D74B4 98 1D 00 10 */ stb r0, 0x10(r29)
-/* 801DB858 001D74B8 98 1D 00 18 */ stb r0, 0x18(r29)
-/* 801DB85C 001D74BC 98 1D 00 20 */ stb r0, 0x20(r29)
-/* 801DB860 001D74C0 98 1D 00 28 */ stb r0, 0x28(r29)
-/* 801DB864 001D74C4 98 1D 00 30 */ stb r0, 0x30(r29)
-/* 801DB868 001D74C8 98 1D 00 38 */ stb r0, 0x38(r29)
-/* 801DB86C 001D74CC 98 1D 00 40 */ stb r0, 0x40(r29)
-/* 801DB870 001D74D0 98 1D 00 48 */ stb r0, 0x48(r29)
-/* 801DB874 001D74D4 98 1D 00 50 */ stb r0, 0x50(r29)
-/* 801DB878 001D74D8 98 1D 00 58 */ stb r0, 0x58(r29)
-/* 801DB87C 001D74DC 98 1D 00 60 */ stb r0, 0x60(r29)
-/* 801DB880 001D74E0 98 1D 00 68 */ stb r0, 0x68(r29)
-/* 801DB884 001D74E4 98 1D 00 70 */ stb r0, 0x70(r29)
-/* 801DB888 001D74E8 98 1D 00 78 */ stb r0, 0x78(r29)
-/* 801DB88C 001D74EC 98 1D 00 80 */ stb r0, 0x80(r29)
-/* 801DB890 001D74F0 98 1D 00 88 */ stb r0, 0x88(r29)
-/* 801DB894 001D74F4 98 1D 00 90 */ stb r0, 0x90(r29)
-/* 801DB898 001D74F8 98 1D 00 98 */ stb r0, 0x98(r29)
-/* 801DB89C 001D74FC 98 1D 00 A0 */ stb r0, 0xa0(r29)
-/* 801DB8A0 001D7500 98 1D 00 A8 */ stb r0, 0xa8(r29)
-/* 801DB8A4 001D7504 98 1D 00 B0 */ stb r0, 0xb0(r29)
-/* 801DB8A8 001D7508 98 1D 00 B8 */ stb r0, 0xb8(r29)
-/* 801DB8AC 001D750C 98 1D 00 C0 */ stb r0, 0xc0(r29)
-/* 801DB8B0 001D7510 98 1D 00 C8 */ stb r0, 0xc8(r29)
-/* 801DB8B4 001D7514 98 1D 00 D0 */ stb r0, 0xd0(r29)
-/* 801DB8B8 001D7518 98 1D 00 D8 */ stb r0, 0xd8(r29)
-/* 801DB8BC 001D751C 98 1D 00 E0 */ stb r0, 0xe0(r29)
-/* 801DB8C0 001D7520 98 1D 00 E8 */ stb r0, 0xe8(r29)
-/* 801DB8C4 001D7524 98 1D 00 F0 */ stb r0, 0xf0(r29)
-/* 801DB8C8 001D7528 93 CD A0 48 */ stw r30, lbl_8063F308-_SDA_BASE_(r13)
-/* 801DB8CC 001D752C 98 1D 00 F8 */ stb r0, 0xf8(r29)
-/* 801DB8D0 001D7530 48 08 EF 8D */ bl LCEnable
-/* 801DB8D4 001D7534 57 80 4B EC */ rlwinm r0, r28, 9, 0xf, 0x16
-/* 801DB8D8 001D7538 3C 60 E0 00 */ lis r3, 0xe000
-/* 801DB8DC 001D753C 2C 1C 00 00 */ cmpwi r28, 0
-/* 801DB8E0 001D7540 90 6D A0 3C */ stw r3, lbl_8063F2FC-_SDA_BASE_(r13)
-/* 801DB8E4 001D7544 90 0D A0 38 */ stw r0, lbl_8063F2F8-_SDA_BASE_(r13)
-/* 801DB8E8 001D7548 41 82 00 1C */ beq lbl_801DB904
-/* 801DB8EC 001D754C 7F 84 E3 78 */ mr r4, r28
-/* 801DB8F0 001D7550 38 60 00 00 */ li r3, 0
-/* 801DB8F4 001D7554 38 A0 00 01 */ li r5, 1
-/* 801DB8F8 001D7558 48 00 00 35 */ bl func_801DB92C
-/* 801DB8FC 001D755C 9B DF 13 70 */ stb r30, 0x1370(r31)
-/* 801DB900 001D7560 9B 9D 00 01 */ stb r28, 1(r29)
-lbl_801DB904:
-/* 801DB904 001D7564 38 00 00 00 */ li r0, 0
-/* 801DB908 001D7568 98 0D A0 44 */ stb r0, lbl_8063F304-_SDA_BASE_(r13)
-/* 801DB90C 001D756C 83 E1 00 1C */ lwz r31, 0x1c(r1)
-/* 801DB910 001D7570 83 C1 00 18 */ lwz r30, 0x18(r1)
-/* 801DB914 001D7574 83 A1 00 14 */ lwz r29, 0x14(r1)
-/* 801DB918 001D7578 83 81 00 10 */ lwz r28, 0x10(r1)
-/* 801DB91C 001D757C 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 801DB920 001D7580 7C 08 03 A6 */ mtlr r0
-/* 801DB924 001D7584 38 21 00 20 */ addi r1, r1, 0x20
-/* 801DB928 001D7588 4E 80 00 20 */ blr
-
-.global func_801DB92C
-func_801DB92C:
-/* 801DB92C 001D758C 3C C0 80 00 */ lis r6, 0x8000
-/* 801DB930 001D7590 48 00 00 08 */ b lbl_801DB938
-lbl_801DB934:
-/* 801DB934 001D7594 54 C6 F8 7E */ srwi r6, r6, 1
-lbl_801DB938:
-/* 801DB938 001D7598 54 60 06 3F */ clrlwi. r0, r3, 0x18
-/* 801DB93C 001D759C 38 63 FF FF */ addi r3, r3, -1
-/* 801DB940 001D75A0 40 82 FF F4 */ bne lbl_801DB934
-/* 801DB944 001D75A4 80 0D A0 48 */ lwz r0, lbl_8063F308-_SDA_BASE_(r13)
-/* 801DB948 001D75A8 48 00 00 20 */ b lbl_801DB968
-lbl_801DB94C:
-/* 801DB94C 001D75AC 28 05 00 01 */ cmplwi r5, 1
-/* 801DB950 001D75B0 7C 03 30 78 */ andc r3, r0, r6
-/* 801DB954 001D75B4 40 82 00 08 */ bne lbl_801DB95C
-/* 801DB958 001D75B8 7C 03 33 78 */ or r3, r0, r6
-lbl_801DB95C:
-/* 801DB95C 001D75BC 90 6D A0 48 */ stw r3, lbl_8063F308-_SDA_BASE_(r13)
-/* 801DB960 001D75C0 7C 60 1B 78 */ mr r0, r3
-/* 801DB964 001D75C4 54 C6 F8 7E */ srwi r6, r6, 1
-lbl_801DB968:
-/* 801DB968 001D75C8 54 83 06 3F */ clrlwi. r3, r4, 0x18
-/* 801DB96C 001D75CC 38 84 FF FF */ addi r4, r4, -1
-/* 801DB970 001D75D0 40 82 FF DC */ bne lbl_801DB94C
-/* 801DB974 001D75D4 4E 80 00 20 */ blr
-
-.global func_801DB978
-func_801DB978:
-/* 801DB978 001D75D8 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DB97C 001D75DC 7C 08 02 A6 */ mflr r0
-/* 801DB980 001D75E0 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DB984 001D75E4 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DB988 001D75E8 7C 3F 0B 78 */ mr r31, r1
-/* 801DB98C 001D75EC 93 C1 00 08 */ stw r30, 8(r1)
-/* 801DB990 001D75F0 7C 7E 1B 78 */ mr r30, r3
-/* 801DB994 001D75F4 7C 68 02 A6 */ mflr r3
-/* 801DB998 001D75F8 90 6D A0 40 */ stw r3, lbl_8063F300-_SDA_BASE_(r13)
-/* 801DB99C 001D75FC 7F C3 F3 78 */ mr r3, r30
-/* 801DB9A0 001D7600 4B FF FE 7D */ bl func_801DB81C
-/* 801DB9A4 001D7604 2C 1E 00 00 */ cmpwi r30, 0
-/* 801DB9A8 001D7608 40 82 00 0C */ bne lbl_801DB9B4
-/* 801DB9AC 001D760C 38 60 00 01 */ li r3, 1
-/* 801DB9B0 001D7610 48 00 00 2C */ b lbl_801DB9DC
-lbl_801DB9B4:
-/* 801DB9B4 001D7614 80 6D A0 3C */ lwz r3, lbl_8063F2FC-_SDA_BASE_(r13)
-/* 801DB9B8 001D7618 80 AD A0 38 */ lwz r5, lbl_8063F2F8-_SDA_BASE_(r13)
-/* 801DB9BC 001D761C 7C 63 2A 14 */ add r3, r3, r5
-/* 801DB9C0 001D7620 38 23 FF F8 */ addi r1, r3, -8
-/* 801DB9C4 001D7624 38 60 FF FF */ li r3, -1
-/* 801DB9C8 001D7628 90 61 00 00 */ stw r3, 0(r1)
-/* 801DB9CC 001D762C 80 6D A0 40 */ lwz r3, lbl_8063F300-_SDA_BASE_(r13)
-/* 801DB9D0 001D7630 7C 68 03 A6 */ mtlr r3
-/* 801DB9D4 001D7634 4E 80 00 20 */ blr
-/* 801DB9D8 001D7638 38 60 00 01 */ li r3, 1
-lbl_801DB9DC:
-/* 801DB9DC 001D763C 7F EA FB 78 */ mr r10, r31
-/* 801DB9E0 001D7640 83 FF 00 0C */ lwz r31, 0xc(r31)
-/* 801DB9E4 001D7644 83 CA 00 08 */ lwz r30, 8(r10)
-/* 801DB9E8 001D7648 81 41 00 00 */ lwz r10, 0(r1)
-/* 801DB9EC 001D764C 80 0A 00 04 */ lwz r0, 4(r10)
-/* 801DB9F0 001D7650 7D 41 53 78 */ mr r1, r10
-/* 801DB9F4 001D7654 7C 08 03 A6 */ mtlr r0
-/* 801DB9F8 001D7658 4E 80 00 20 */ blr
-
-.global func_801DB9FC
-func_801DB9FC:
-/* 801DB9FC 001D765C 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DBA00 001D7660 7C 08 02 A6 */ mflr r0
-/* 801DBA04 001D7664 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DBA08 001D7668 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DBA0C 001D766C 93 C1 00 08 */ stw r30, 8(r1)
-/* 801DBA10 001D7670 88 0D A0 44 */ lbz r0, lbl_8063F304-_SDA_BASE_(r13)
-/* 801DBA14 001D7674 28 00 00 01 */ cmplwi r0, 1
-/* 801DBA18 001D7678 41 82 00 5C */ beq lbl_801DBA74
-/* 801DBA1C 001D767C 3F C0 80 49 */ lis r30, lbl_80491370@ha
-/* 801DBA20 001D7680 3B E0 00 1F */ li r31, 0x1f
-/* 801DBA24 001D7684 3B DE 13 70 */ addi r30, r30, lbl_80491370@l
-lbl_801DBA28:
-/* 801DBA28 001D7688 88 1E 00 00 */ lbz r0, 0(r30)
-/* 801DBA2C 001D768C 28 00 00 FF */ cmplwi r0, 0xff
-/* 801DBA30 001D7690 41 82 00 2C */ beq lbl_801DBA5C
-/* 801DBA34 001D7694 81 9E 00 04 */ lwz r12, 4(r30)
-/* 801DBA38 001D7698 2C 0C 00 00 */ cmpwi r12, 0
-/* 801DBA3C 001D769C 41 82 00 20 */ beq lbl_801DBA5C
-/* 801DBA40 001D76A0 80 6D A0 3C */ lwz r3, lbl_8063F2FC-_SDA_BASE_(r13)
-/* 801DBA44 001D76A4 54 00 4B EC */ rlwinm r0, r0, 9, 0xf, 0x16
-/* 801DBA48 001D76A8 88 BE 00 01 */ lbz r5, 1(r30)
-/* 801DBA4C 001D76AC 7C 83 02 14 */ add r4, r3, r0
-/* 801DBA50 001D76B0 38 60 00 00 */ li r3, 0
-/* 801DBA54 001D76B4 7D 89 03 A6 */ mtctr r12
-/* 801DBA58 001D76B8 4E 80 04 21 */ bctrl
-lbl_801DBA5C:
-/* 801DBA5C 001D76BC 2C 1F 00 00 */ cmpwi r31, 0
-/* 801DBA60 001D76C0 3B FF FF FF */ addi r31, r31, -1
-/* 801DBA64 001D76C4 3B DE 00 08 */ addi r30, r30, 8
-/* 801DBA68 001D76C8 40 82 FF C0 */ bne lbl_801DBA28
-/* 801DBA6C 001D76CC 38 00 00 01 */ li r0, 1
-/* 801DBA70 001D76D0 98 0D A0 44 */ stb r0, lbl_8063F304-_SDA_BASE_(r13)
-lbl_801DBA74:
-/* 801DBA74 001D76D4 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DBA78 001D76D8 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DBA7C 001D76DC 83 C1 00 08 */ lwz r30, 8(r1)
-/* 801DBA80 001D76E0 7C 08 03 A6 */ mtlr r0
-/* 801DBA84 001D76E4 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DBA88 001D76E8 4E 80 00 20 */ blr
-
-.global func_801DBA8C
-func_801DBA8C:
-/* 801DBA8C 001D76EC 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DBA90 001D76F0 7C 08 02 A6 */ mflr r0
-/* 801DBA94 001D76F4 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DBA98 001D76F8 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DBA9C 001D76FC 93 C1 00 08 */ stw r30, 8(r1)
-/* 801DBAA0 001D7700 88 0D A0 44 */ lbz r0, lbl_8063F304-_SDA_BASE_(r13)
-/* 801DBAA4 001D7704 2C 00 00 00 */ cmpwi r0, 0
-/* 801DBAA8 001D7708 41 82 00 5C */ beq lbl_801DBB04
-/* 801DBAAC 001D770C 3F C0 80 49 */ lis r30, lbl_80491370@ha
-/* 801DBAB0 001D7710 3B E0 00 1F */ li r31, 0x1f
-/* 801DBAB4 001D7714 3B DE 13 70 */ addi r30, r30, lbl_80491370@l
-lbl_801DBAB8:
-/* 801DBAB8 001D7718 88 1E 00 00 */ lbz r0, 0(r30)
-/* 801DBABC 001D771C 28 00 00 FF */ cmplwi r0, 0xff
-/* 801DBAC0 001D7720 41 82 00 2C */ beq lbl_801DBAEC
-/* 801DBAC4 001D7724 81 9E 00 04 */ lwz r12, 4(r30)
-/* 801DBAC8 001D7728 2C 0C 00 00 */ cmpwi r12, 0
-/* 801DBACC 001D772C 41 82 00 20 */ beq lbl_801DBAEC
-/* 801DBAD0 001D7730 80 6D A0 3C */ lwz r3, lbl_8063F2FC-_SDA_BASE_(r13)
-/* 801DBAD4 001D7734 54 00 4B EC */ rlwinm r0, r0, 9, 0xf, 0x16
-/* 801DBAD8 001D7738 88 BE 00 01 */ lbz r5, 1(r30)
-/* 801DBADC 001D773C 7C 83 02 14 */ add r4, r3, r0
-/* 801DBAE0 001D7740 38 60 00 01 */ li r3, 1
-/* 801DBAE4 001D7744 7D 89 03 A6 */ mtctr r12
-/* 801DBAE8 001D7748 4E 80 04 21 */ bctrl
-lbl_801DBAEC:
-/* 801DBAEC 001D774C 2C 1F 00 00 */ cmpwi r31, 0
-/* 801DBAF0 001D7750 3B FF FF FF */ addi r31, r31, -1
-/* 801DBAF4 001D7754 3B DE 00 08 */ addi r30, r30, 8
-/* 801DBAF8 001D7758 40 82 FF C0 */ bne lbl_801DBAB8
-/* 801DBAFC 001D775C 38 00 00 00 */ li r0, 0
-/* 801DBB00 001D7760 98 0D A0 44 */ stb r0, lbl_8063F304-_SDA_BASE_(r13)
-lbl_801DBB04:
-/* 801DBB04 001D7764 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DBB08 001D7768 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DBB0C 001D776C 83 C1 00 08 */ lwz r30, 8(r1)
-/* 801DBB10 001D7770 7C 08 03 A6 */ mtlr r0
-/* 801DBB14 001D7774 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DBB18 001D7778 4E 80 00 20 */ blr
-
-.global func_801DBB1C
-func_801DBB1C:
-/* 801DBB1C 001D777C 38 A0 00 01 */ li r5, 1
-/* 801DBB20 001D7780 38 6D A0 30 */ addi r3, r13, lbl_8063F2F0-_SDA_BASE_
-/* 801DBB24 001D7784 38 80 00 04 */ li r4, 4
-/* 801DBB28 001D7788 38 00 00 00 */ li r0, 0
-/* 801DBB2C 001D778C 98 AD A0 30 */ stb r5, lbl_8063F2F0-_SDA_BASE_(r13)
-/* 801DBB30 001D7790 B0 83 00 02 */ sth r4, 2(r3)
-/* 801DBB34 001D7794 98 03 00 04 */ stb r0, 4(r3)
-/* 801DBB38 001D7798 4E 80 00 20 */ blr
diff --git a/asm/ctors_2.s b/asm/ctors_2.s index fe55fc5..bc10cf0 100644 --- a/asm/ctors_2.s +++ b/asm/ctors_2.s @@ -2,7 +2,7 @@ .section .ctors, "wa" # 0x803E1E60 - 0x803E22A0
-.4byte func_801DBB1C, func_801DBE70
+.4byte func_801DBE70
.4byte func_801DCE4C, func_801DD5A8, func_801DD8A0, func_801DDF58
.4byte func_801DF020, func_801E07C8, func_801E07F0, func_801E0A34
.4byte func_801E4308, func_801E472C, func_801E5F5C, func_801E6BD8
diff --git a/asm/sbss_2.s b/asm/sbss_2.s index c95a099..48ba9f2 100644 --- a/asm/sbss_2.s +++ b/asm/sbss_2.s @@ -1,23 +1,8 @@ .section .sbss, "wa" # 0x80474F00 - 0x80643050
-.global lbl_8063F2F0
-lbl_8063F2F0:
- .skip 0x8
-.global lbl_8063F2F8
-lbl_8063F2F8:
- .skip 0x4
-.global lbl_8063F2FC
-lbl_8063F2FC:
- .skip 0x4
-.global lbl_8063F300
-lbl_8063F300:
+.global lbl_8063F30C
+lbl_8063F30C:
.skip 0x4
-.global lbl_8063F304
-lbl_8063F304:
- .skip 0x4
-.global lbl_8063F308
-lbl_8063F308:
- .skip 0x8
.global lbl_8063F310
lbl_8063F310:
.skip 0x8
diff --git a/include/SDK/OS/OSCache.h b/include/SDK/OS/OSCache.h new file mode 100644 index 0000000..489ed0b --- /dev/null +++ b/include/SDK/OS/OSCache.h @@ -0,0 +1,14 @@ +#ifndef POKEREVO_OSCACHE_H
+#define POKEREVO_OSCACHE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void LCEnable(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //POKEREVO_OSCACHE_H
diff --git a/include/SDK/os.h b/include/SDK/os.h new file mode 100644 index 0000000..10d4153 --- /dev/null +++ b/include/SDK/os.h @@ -0,0 +1,15 @@ +#ifndef POKEREVO_OS_H
+#define POKEREVO_OS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "SDK/OS/OSAlloc.h"
+#include "SDK/OS/OSCache.h"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //POKEREVO_OS_H
diff --git a/include/code_801DB040.h b/include/code_801DB040.h index ad49669..b9fc27a 100644 --- a/include/code_801DB040.h +++ b/include/code_801DB040.h @@ -7,9 +7,9 @@ extern "C" { #include "SDK/mem.h"
-typedef u32 (*FuncPtr)(void*, u32, u32);
+typedef u32 (*gFuncPtr1)(void*, u32, u32);
-struct unkClass
+struct gUnkClass1
{
u8 unk0;
u8 unk1;
@@ -19,24 +19,24 @@ struct unkClass void* unkC;
u32 unk10;
u32 unk14;
- FuncPtr unk18;
- unkClass* unk1C;
- unkClass* unk20;
+ gFuncPtr1 unk18;
+ gUnkClass1* unk1C;
+ gUnkClass1* unk20;
};
-unkClass* func_801DB07C(unkClass* p1, BOOL p2);
+gUnkClass1* func_801DB07C(gUnkClass1* p1, BOOL p2);
void func_801DB15C(u32 p1);
-void* func_801DB270(MEMHeapHandle heap, u32 size, int align, u32 p4, u32 p5, FuncPtr p6);
-void* func_801DB360(u32 size, int align, u32 p3, u32 p4, FuncPtr p5);
-void func_801DB3BC(void* p1, u32 p2, u32 p3, FuncPtr p4);
+void* func_801DB270(MEMHeapHandle heap, u32 size, int align, u32 p4, u32 p5, gFuncPtr1 p6);
+void* func_801DB360(u32 size, int align, u32 p3, u32 p4, gFuncPtr1 p5);
+void func_801DB3BC(void* p1, u32 p2, u32 p3, gFuncPtr1 p4);
void* func_801DB4BC(u32 p1, u32 p2);
u32 func_801DB4FC(u32 p1, u32 p2);
u32 func_801DB548(u32 p1, u32 p2);
u32 func_801DB5E4(u32 p1, u32 p2);
void func_801DB644(u32 p1, u32 p2);
void func_801DB674(u32 p1);
-BOOL func_801DB6D0(u32 p1, u32 p2, MEMHeapHandle p3, u32 p4, u32 p5, FuncPtr p6);
+BOOL func_801DB6D0(u32 p1, u32 p2, MEMHeapHandle p3, u32 p4, u32 p5, gFuncPtr1 p6);
void func_801DB79C(u32 p1, u32 p2);
void func_801DB7CC(u32 p1, u32 p2);
diff --git a/include/code_801DB81C.h b/include/code_801DB81C.h new file mode 100644 index 0000000..3414be5 --- /dev/null +++ b/include/code_801DB81C.h @@ -0,0 +1,16 @@ +#ifndef POKEREVO_CODE_801DB81C_H
+#define POKEREVO_CODE_801DB81C_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+u32 func_801DB978(u8 p1);
+void func_801DB9FC(void);
+void func_801DBA8C(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //POKEREVO_CODE_801DB81C_H
diff --git a/include/code_801DBB3C.h b/include/code_801DBB3C.h index 67a3c3c..394bd32 100644 --- a/include/code_801DBB3C.h +++ b/include/code_801DBB3C.h @@ -7,14 +7,14 @@ extern "C" { #include "code_801DB040.h"
-struct unkClass2
+struct gUnkClass2
{
u8 pad[0x24];
};
-unkClass* func_801DBC58(unkClass2* p1);
-void func_801DBD00(unkClass2* p1, unkClass* p2);
-unkClass2* func_801DBD74(u32 p1, u32 p2);
+gUnkClass1* func_801DBC58(gUnkClass2* p1);
+void func_801DBD00(gUnkClass2* p1, gUnkClass1* p2);
+gUnkClass2* func_801DBD74(u32 p1, u32 p2);
#ifdef __cplusplus
}
diff --git a/include/unkStruct.h b/include/ctorStruct.h index d1c304f..5c40e77 100644 --- a/include/unkStruct.h +++ b/include/ctorStruct.h @@ -1,17 +1,17 @@ -#ifndef POKEREVO_CODE_UNKSTRUCT_H
-#define POKEREVO_CODE_UNKSTRUCT_H
+#ifndef POKEREVO_CODE_CTORSTRUCT_H
+#define POKEREVO_CODE_CTORSTRUCT_H
// Note: Many instances of this class appear in .sbss, and they are partially initialized
// by the static initializers in .ctors
-struct unkStruct
+struct ctorStruct
{
u8 unk0;
u16 unk2;
u8 unk4;
u8 unk5;
- unkStruct(u8 p1, u16 p2, u8 p3)
+ ctorStruct(u8 p1, u16 p2, u8 p3)
: unk0(p1), unk2(p2), unk4(p3) { }
};
-#endif //POKEREVO_CODE_UNKSTRUCT_H
+#endif //POKEREVO_CODE_CTORSTRUCT_H
diff --git a/obj_files.mk b/obj_files.mk index 6ee474c..9cf946e 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -220,7 +220,7 @@ SPLIT_O_FILES := \ $(BUILD_DIR)/src/code_801DAA30.o \ $(BUILD_DIR)/src/code_801DAAE0.o \ $(BUILD_DIR)/src/code_801DB040.o \ - $(BUILD_DIR)/asm/code_801DB81C.o \ + $(BUILD_DIR)/src/code_801DB81C.o \ $(BUILD_DIR)/asm/code_801DBB3C.o \ $(BUILD_DIR)/asm/code_801DBE90.o \ $(BUILD_DIR)/asm/code_801DCE6C.o \ diff --git a/src/code_801DAA30.cpp b/src/code_801DAA30.cpp index 17375d9..c8f0756 100644 --- a/src/code_801DAA30.cpp +++ b/src/code_801DAA30.cpp @@ -1,11 +1,8 @@ #include "types.h"
-#include "unkStruct.h"
+#include "ctorStruct.h"
#include "code_801DAAE0.h"
-namespace
-{
- unkStruct gUnk8063F2C8(1, 4, 0);
-}
+static ctorStruct gUnk8063F2C8(1, 4, 0);
void* operator new(size_t sz)
{
diff --git a/src/code_801DAAE0.cpp b/src/code_801DAAE0.cpp index 31b84e5..dd5e504 100644 --- a/src/code_801DAAE0.cpp +++ b/src/code_801DAAE0.cpp @@ -1,5 +1,5 @@ #include "types.h"
-#include "unkStruct.h"
+#include "ctorStruct.h"
#include "Runtime/__mem.h"
#include "SDK/mem.h"
#include "code_801DAAE0.h"
@@ -19,17 +19,22 @@ namespace u16 groupID;
u32 unk8;
};
-
- const size_t ARR_SIZE = 16;
- unkClass gUnk804912B0[ARR_SIZE];
-
- unkStruct gUnk8063F2D0(1, 4, 0);
- u8 gUnk8063F2D6;
- u8 gUnk8063F2D7;
- MEMHeapHandle gUnk8063F2D8;
- u16 gUnk8063F2DC;
}
+static unkClass* func_801DAAE0(void);
+static void* lbl_801DAC9C(MEMHeapHandle heap, u32 size, int fill);
+static BOOL func_801DAD1C(MEMHeapHandle heap, void* memBlock, u32 size);
+static u32 func_801DAD60(MEMHeapHandle heap);
+static void lbl_801DAF1C(void* memBlock, MEMHeapHandle, u32 p3);
+
+static const size_t ARR_SIZE = 16;
+static unkClass gUnk804912B0[ARR_SIZE];
+static ctorStruct gUnk8063F2D0(1, 4, 0);
+static u8 gUnk8063F2D6;
+static u8 gUnk8063F2D7;
+static MEMHeapHandle gUnk8063F2D8;
+static u16 gUnk8063F2DC;
+
extern "C" {
static unkClass* func_801DAAE0(void)
diff --git a/src/code_801DB040.cpp b/src/code_801DB040.cpp index cf295c2..088dc2a 100644 --- a/src/code_801DB040.cpp +++ b/src/code_801DB040.cpp @@ -1,31 +1,30 @@ #include "types.h"
-#include "unkStruct.h"
+#include "ctorStruct.h"
#include "Runtime/__mem.h"
#include "SDK/mem.h"
#include "code_801DAAE0.h"
#include "code_801DBB3C.h"
#include "code_801DB040.h"
-extern "C" {
+static gUnkClass1* func_801DB040(u32 p1, u32 p2);
-namespace
-{
- unkStruct gUnk8063F2E0(1, 4, 0);
- unkClass* gUnk8063F2E8;
- unkClass2* gUnk8063F2EC;
-}
+static ctorStruct gUnk8063F2E0(1, 4, 0);
+static gUnkClass1* gUnk8063F2E8;
+static gUnkClass2* gUnk8063F2EC;
+
+extern "C" {
-static unkClass* func_801DB040(u32 p1, u32 p2)
+static gUnkClass1* func_801DB040(u32 p1, u32 p2)
{
- for (unkClass* r5 = gUnk8063F2E8; r5; r5 = r5->unk1C)
+ for (gUnkClass1* r5 = gUnk8063F2E8; r5; r5 = r5->unk1C)
if (r5->unk10 == p1 && r5->unk14 == p2)
return r5;
return NULL;
}
-unkClass* func_801DB07C(unkClass* p1, BOOL p2)
+gUnkClass1* func_801DB07C(gUnkClass1* p1, BOOL p2)
{
- unkClass* r31;
+ gUnkClass1* r31;
if (p1->unk18 && p1->unk18(p1->unkC, p1->unk10, p1->unk14) == 0)
return p1->unk1C;
if (p1->unk0) {
@@ -38,7 +37,7 @@ unkClass* func_801DB07C(unkClass* p1, BOOL p2) p1->unkC = NULL;
r31 = p1->unk1C;
if (p2) {
- unkClass* r3 = p1->unk20;
+ gUnkClass1* r3 = p1->unk20;
if (r3)
r3->unk1C = r31;
else
@@ -57,11 +56,11 @@ void func_801DB15C(u32 p1) gUnk8063F2EC = func_801DBD74(p1, 36);
}
-static void* func_801DB184(MEMHeapHandle heap, u32 size, u32 p3, u32 p4, FuncPtr p5)
+static void* func_801DB184(MEMHeapHandle heap, u32 size, u32 p3, u32 p4, gFuncPtr1 p5)
{
if (func_801DB040(p3, p4))
return NULL;
- unkClass* r31 = func_801DBC58(gUnk8063F2EC);
+ gUnkClass1* r31 = func_801DBC58(gUnk8063F2EC);
if (!r31)
return NULL;
if ((r31->unkC = func_801DAC94(heap, size)) == NULL) {
@@ -85,11 +84,11 @@ static void* func_801DB184(MEMHeapHandle heap, u32 size, u32 p3, u32 p4, FuncPtr return r31->unkC;
}
-void* func_801DB270(MEMHeapHandle heap, u32 size, int align, u32 p4, u32 p5, FuncPtr p6)
+void* func_801DB270(MEMHeapHandle heap, u32 size, int align, u32 p4, u32 p5, gFuncPtr1 p6)
{
if (func_801DB040(p4, p5))
return NULL;
- unkClass* r31 = func_801DBC58(gUnk8063F2EC);
+ gUnkClass1* r31 = func_801DBC58(gUnk8063F2EC);
if (!r31)
return NULL;
if ((r31->unkC = func_801DAD08(heap, size, align)) == NULL) {
@@ -112,14 +111,14 @@ void* func_801DB270(MEMHeapHandle heap, u32 size, int align, u32 p4, u32 p5, Fun return r31->unkC;
}
-void* func_801DB360(u32 size, int align, u32 p3, u32 p4, FuncPtr p5)
+void* func_801DB360(u32 size, int align, u32 p3, u32 p4, gFuncPtr1 p5)
{
return func_801DB270(func_801DAC0C(), size, align, p3, p4, p5);
}
-void func_801DB3BC(void* p1, u32 p2, u32 p3, FuncPtr p4)
+void func_801DB3BC(void* p1, u32 p2, u32 p3, gFuncPtr1 p4)
{
- unkClass* r31 = func_801DB040(p2, p3);
+ gUnkClass1* r31 = func_801DB040(p2, p3);
if (!p1) {
if (r31)
func_801DB07C(r31, TRUE);
@@ -136,7 +135,7 @@ void func_801DB3BC(void* p1, u32 p2, u32 p3, FuncPtr p4) r31->unk18 = p4;
}
} else {
- unkClass* r3 = func_801DBC58(gUnk8063F2EC);
+ gUnkClass1* r3 = func_801DBC58(gUnk8063F2EC);
if (r3) {
if (gUnk8063F2E8)
gUnk8063F2E8->unk20 = r3;
@@ -155,7 +154,7 @@ void func_801DB3BC(void* p1, u32 p2, u32 p3, FuncPtr p4) void* func_801DB4BC(u32 p1, u32 p2)
{
- unkClass* r3 = func_801DB040(p1, p2);
+ gUnkClass1* r3 = func_801DB040(p1, p2);
if (!r3 || r3->unk1)
return NULL;
return r3->unkC;
@@ -163,7 +162,7 @@ void* func_801DB4BC(u32 p1, u32 p2) u32 func_801DB4FC(u32 p1, u32 p2)
{
- unkClass* r3 = func_801DB040(p1, p2);
+ gUnkClass1* r3 = func_801DB040(p1, p2);
if (!r3 || r3->unk1)
return 0;
return ++r3->unk4;
@@ -171,7 +170,7 @@ u32 func_801DB4FC(u32 p1, u32 p2) u32 func_801DB548(u32 p1, u32 p2)
{
- unkClass* r31 = func_801DB040(p1, p2);
+ gUnkClass1* r31 = func_801DB040(p1, p2);
if (!r31 || r31->unk1)
return 0;
if (r31->unk4 == 0) {
@@ -185,7 +184,7 @@ u32 func_801DB548(u32 p1, u32 p2) u32 func_801DB5E4(u32 p1, u32 p2)
{
- unkClass* r3 = func_801DB040(p1, p2);
+ gUnkClass1* r3 = func_801DB040(p1, p2);
if (!r3)
return 0;
if (!r3->unkC)
@@ -197,21 +196,21 @@ u32 func_801DB5E4(u32 p1, u32 p2) void func_801DB644(u32 p1, u32 p2)
{
- unkClass* r3 = func_801DB040(p1, p2);
+ gUnkClass1* r3 = func_801DB040(p1, p2);
if (r3)
func_801DB07C(r3, TRUE);
}
void func_801DB674(u32 p1)
{
- unkClass* p = gUnk8063F2E8;
+ gUnkClass1* p = gUnk8063F2E8;
while (p)
p = (p->unk10 == p1) ? func_801DB07C(p, TRUE) : p->unk1C;
}
-BOOL func_801DB6D0(u32 p1, u32 p2, MEMHeapHandle heap, u32 p4, u32 p5, FuncPtr p6)
+BOOL func_801DB6D0(u32 p1, u32 p2, MEMHeapHandle heap, u32 p4, u32 p5, gFuncPtr1 p6)
{
- unkClass* r31 = func_801DB040(p1, p2);
+ gUnkClass1* r31 = func_801DB040(p1, p2);
if (!r31 || r31->unk1 || !r31->unkC || !r31->unk0)
return FALSE;
u32 blockSize = func_801DAEE0(r31->unkC);
@@ -226,14 +225,14 @@ BOOL func_801DB6D0(u32 p1, u32 p2, MEMHeapHandle heap, u32 p4, u32 p5, FuncPtr p void func_801DB79C(u32 p1, u32 p2)
{
- unkClass* r3 = func_801DB040(p1, p2);
+ gUnkClass1* r3 = func_801DB040(p1, p2);
if (r3)
r3->unk1 = 1;
}
void func_801DB7CC(u32 p1, u32 p2)
{
- unkClass* r3 = func_801DB040(p1, p2);
+ gUnkClass1* r3 = func_801DB040(p1, p2);
if (r3)
r3->unk1 = 0;
}
diff --git a/src/code_801DB81C.cpp b/src/code_801DB81C.cpp new file mode 100644 index 0000000..678fafa --- /dev/null +++ b/src/code_801DB81C.cpp @@ -0,0 +1,175 @@ +#include "types.h"
+#include "ctorStruct.h"
+#include "SDK/os.h"
+#include "code_801DB81C.h"
+
+namespace
+{
+ typedef void (*funcPtr)(u32, u32, u8);
+
+ struct unkClass
+ {
+ u8 unk0;
+ u8 unk1;
+ funcPtr unk4;
+ };
+}
+
+static void func_801DB81C(u8 p1);
+static void func_801DB92C(u8 start, u8 width, u32 setOrClear);
+
+static unkClass gUnk80491370[32];
+static ctorStruct gUnk8063F2F0(1, 4, 0);
+static u32 gUnk8063F2F8;
+static u32 gUnk8063F2FC;
+static u32 gUnk8063F300;
+static u8 gUnk8063F304;
+static u32 gUnk8063F308;
+
+extern "C" {
+
+static void func_801DB81C(u8 p1)
+{
+ size_t i;
+ size_t new_var;
+ size_t new_var2;
+ size_t *new_var3;
+ size_t *new_var4;
+ size_t *new_var5;
+ new_var = 0;
+ new_var5 = &i;
+ for (i = new_var; i < 32; i++) {
+ gUnk8063F308 = new_var;
+ gUnk80491370[i].unk0 = 0xff;
+ }
+
+ LCEnable();
+
+ gUnk8063F2FC = 0xE0000000;
+ i = p1;
+ new_var = 9;
+ gUnk8063F2F8 = i << new_var;
+ if (i) {
+ new_var3 = new_var5;
+ new_var4 = new_var3;
+ new_var3 = new_var4;
+ new_var4 = new_var3;
+ new_var2 = *new_var4;
+ func_801DB92C(0 & 0xFFu, (u8)new_var2, 1);
+ gUnk80491370[0].unk0 = 0;
+ gUnk80491370[0].unk1 = (u8)*new_var3;
+ }
+
+ gUnk8063F304 = 0;
+}
+
+static void func_801DB92C(u8 start, u8 width, u32 setOrClear)
+{
+ u32 bit = 0x80000000;
+ while (start--)
+ bit >>= 1;
+ while (width--) {
+ gUnk8063F308 = (setOrClear == 1) ? gUnk8063F308 | bit : gUnk8063F308 & ~bit;
+ bit >>= 1;
+ }
+}
+
+asm u32 func_801DB978(u8 p1)
+{
+ nofralloc
+ /* 801DB978 001D75D8 94 21 FF F0 */ stwu r1, -0x10(r1)
+ /* 801DB97C 001D75DC 7C 08 02 A6 */ mflr r0
+ /* 801DB980 001D75E0 90 01 00 14 */ stw r0, 0x14(r1)
+ /* 801DB984 001D75E4 93 E1 00 0C */ stw r31, 0xc(r1)
+ /* 801DB988 001D75E8 7C 3F 0B 78 */ mr r31, r1
+ /* 801DB98C 001D75EC 93 C1 00 08 */ stw r30, 8(r1)
+ /* 801DB990 001D75F0 7C 7E 1B 78 */ mr r30, r3
+ /* 801DB994 001D75F4 7C 68 02 A6 */ mflr r3
+ /* 801DB998 001D75F8 90 6D A0 40 */ stw r3, gUnk8063F300
+ /* 801DB99C 001D75FC 7F C3 F3 78 */ mr r3, r30
+ /* 801DB9A0 001D7600 4B FF FE 7D */ bl func_801DB81C
+ /* 801DB9A4 001D7604 2C 1E 00 00 */ cmpwi r30, 0
+ /* 801DB9A8 001D7608 40 82 00 0C */ bne lbl_801DB9B4
+ /* 801DB9AC 001D760C 38 60 00 01 */ li r3, 1
+ /* 801DB9B0 001D7610 48 00 00 2C */ b lbl_801DB9DC
+ lbl_801DB9B4:
+ /* 801DB9B4 001D7614 80 6D A0 3C */ lwz r3, gUnk8063F2FC
+ /* 801DB9B8 001D7618 80 AD A0 38 */ lwz r5, gUnk8063F2F8
+ /* 801DB9BC 001D761C 7C 63 2A 14 */ add r3, r3, r5
+ /* 801DB9C0 001D7620 38 23 FF F8 */ addi r1, r3, -8
+ /* 801DB9C4 001D7624 38 60 FF FF */ li r3, -1
+ /* 801DB9C8 001D7628 90 61 00 00 */ stw r3, 0(r1)
+ /* 801DB9CC 001D762C 80 6D A0 40 */ lwz r3, gUnk8063F300
+ /* 801DB9D0 001D7630 7C 68 03 A6 */ mtlr r3
+ /* 801DB9D4 001D7634 4E 80 00 20 */ blr
+ /* 801DB9D8 001D7638 38 60 00 01 */ li r3, 1
+ lbl_801DB9DC:
+ /* 801DB9DC 001D763C 7F EA FB 78 */ mr r10, r31
+ /* 801DB9E0 001D7640 83 FF 00 0C */ lwz r31, 0xc(r31)
+ /* 801DB9E4 001D7644 83 CA 00 08 */ lwz r30, 8(r10)
+ /* 801DB9E8 001D7648 81 41 00 00 */ lwz r10, 0(r1)
+ /* 801DB9EC 001D764C 80 0A 00 04 */ lwz r0, 4(r10)
+ /* 801DB9F0 001D7650 7D 41 53 78 */ mr r1, r10
+ /* 801DB9F4 001D7654 7C 08 03 A6 */ mtlr r0
+ /* 801DB9F8 001D7658 4E 80 00 20 */ blr
+}
+
+void func_801DB9FC(void)
+{
+ u32 i;
+ short j;
+ unsigned short new_var;
+ char new_var2;
+ u32 *new_var3;
+ u32 new_var4;
+ u32 *new_var5;
+ new_var = 0xff;
+ if (gUnk8063F304 != 1) {
+ new_var2 = 9;
+ i = 31, j = 0;
+ new_var3 = &i;
+ new_var5 = &new_var4;
+ do {
+ unsigned char r0 = gUnk80491370[j].unk0;
+ new_var4 = *new_var3;
+ if ((((u32) r0) != new_var) && gUnk80491370[j].unk4) {
+ gUnk80491370[j].unk4(0, gUnk8063F2FC + (r0 << new_var2), gUnk80491370[j].unk1);
+ }
+
+ i = *new_var5;
+ j++;
+ } while ((i--) != 0);
+ gUnk8063F304 = 1;
+ }
+}
+
+void func_801DBA8C(void)
+{
+ u32 i;
+ short j;
+ unsigned short new_var;
+ char new_var2;
+ u32 *new_var3;
+ u32 new_var4;
+ u32 *new_var5;
+ new_var = 0xff;
+ if (gUnk8063F304 != 0) {
+ new_var2 = 9;
+ i = 31, j = 0;
+ new_var3 = &i;
+ new_var5 = &new_var4;
+ do {
+ unsigned char r0 = gUnk80491370[j].unk0;
+ new_var4 = *new_var3;
+ if ((((u32) r0) != new_var) && gUnk80491370[j].unk4) {
+ gUnk80491370[j].unk4(1, gUnk8063F2FC + (r0 << new_var2), gUnk80491370[j].unk1);
+ }
+
+ i = *new_var5;
+ j++;
+ } while ((i--) != 0);
+ gUnk8063F304 = 0;
+ }
+}
+
+} //extern "C"
|
