diff options
-rw-r--r-- | asm/darray.s | 14 | ||||
-rw-r--r-- | asm/text_10_2.s | 56 | ||||
-rw-r--r-- | asm/text_5.s | 4 | ||||
-rw-r--r-- | asm/text_7.s | 2 | ||||
-rw-r--r-- | asm/text_7_2.s | 6 | ||||
-rw-r--r-- | asm/text_9.s | 6 | ||||
-rw-r--r-- | include/darray.h | 8 | ||||
-rw-r--r-- | include/hashtable.h | 4 | ||||
-rw-r--r-- | include/nonport.h | 16 | ||||
-rw-r--r-- | src/darray.c | 150 | ||||
-rw-r--r-- | src/hashtable.c | 9 |
11 files changed, 221 insertions, 54 deletions
diff --git a/asm/darray.s b/asm/darray.s index a14be52..2b50e17 100644 --- a/asm/darray.s +++ b/asm/darray.s @@ -137,7 +137,7 @@ ArrayAppend: /* 80335F64 00331BC4 7C 85 01 D6 */ mullw r4, r5, r0
/* 80335F68 00331BC8 90 A3 00 04 */ stw r5, 4(r3)
/* 80335F6C 00331BCC 80 63 00 14 */ lwz r3, 0x14(r3)
-/* 80335F70 00331BD0 48 00 33 B5 */ bl func_80339324
+/* 80335F70 00331BD0 48 00 33 B5 */ bl gsirealloc
/* 80335F74 00331BD4 90 7D 00 14 */ stw r3, 0x14(r29)
lbl_80335F78:
/* 80335F78 00331BD8 80 7D 00 00 */ lwz r3, 0(r29)
@@ -175,7 +175,7 @@ lbl_80335FE0: /* 80335FE0 00331C40 80 BD 00 08 */ lwz r5, 8(r29)
/* 80335FE4 00331C44 7C 1F 30 50 */ subf r0, r31, r6
/* 80335FE8 00331C48 7C A5 01 D6 */ mullw r5, r5, r0
-/* 80335FEC 00331C4C 4B E9 42 89 */ bl func_801CA274
+/* 80335FEC 00331C4C 4B E9 42 89 */ bl memmove
lbl_80335FF0:
/* 80335FF0 00331C50 2C 1F 00 00 */ cmpwi r31, 0
/* 80335FF4 00331C54 41 80 00 10 */ blt lbl_80336004
@@ -252,7 +252,7 @@ lbl_803360B4: /* 803360E8 00331D48 7C 04 02 14 */ add r0, r4, r0
/* 803360EC 00331D4C 7C 80 29 D6 */ mullw r4, r0, r5
/* 803360F0 00331D50 90 1D 00 04 */ stw r0, 4(r29)
-/* 803360F4 00331D54 48 00 32 31 */ bl func_80339324
+/* 803360F4 00331D54 48 00 32 31 */ bl gsirealloc
/* 803360F8 00331D58 90 7D 00 14 */ stw r3, 0x14(r29)
lbl_803360FC:
/* 803360FC 00331D5C 80 7D 00 00 */ lwz r3, 0(r29)
@@ -290,7 +290,7 @@ lbl_80336164: /* 80336164 00331DC4 80 BD 00 08 */ lwz r5, 8(r29)
/* 80336168 00331DC8 7C 1F 30 50 */ subf r0, r31, r6
/* 8033616C 00331DCC 7C A5 01 D6 */ mullw r5, r5, r0
-/* 80336170 00331DD0 4B E9 41 05 */ bl func_801CA274
+/* 80336170 00331DD0 4B E9 41 05 */ bl memmove
lbl_80336174:
/* 80336174 00331DD4 2C 1F 00 00 */ cmpwi r31, 0
/* 80336178 00331DD8 41 80 00 10 */ blt lbl_80336188
@@ -358,7 +358,7 @@ lbl_80336238: /* 80336240 00331EA0 7C C3 33 78 */ mr r3, r6
/* 80336244 00331EA4 7C E4 3B 78 */ mr r4, r7
/* 80336248 00331EA8 7C A5 01 D6 */ mullw r5, r5, r0
-/* 8033624C 00331EAC 4B E9 40 29 */ bl func_801CA274
+/* 8033624C 00331EAC 4B E9 40 29 */ bl memmove
lbl_80336250:
/* 80336250 00331EB0 80 7F 00 00 */ lwz r3, 0(r31)
/* 80336254 00331EB4 38 03 FF FF */ addi r0, r3, -1
@@ -431,7 +431,7 @@ lbl_8033632C: /* 8033632C 00331F8C 80 BF 00 08 */ lwz r5, 8(r31)
/* 80336330 00331F90 7C 1E 30 50 */ subf r0, r30, r6
/* 80336334 00331F94 7C A5 01 D6 */ mullw r5, r5, r0
-/* 80336338 00331F98 4B E9 3F 3D */ bl func_801CA274
+/* 80336338 00331F98 4B E9 3F 3D */ bl memmove
lbl_8033633C:
/* 8033633C 00331F9C 80 7F 00 00 */ lwz r3, 0(r31)
/* 80336340 00331FA0 38 03 FF FF */ addi r0, r3, -1
@@ -795,7 +795,7 @@ lbl_803367CC: /* 803367CC 0033242C 80 BE 00 08 */ lwz r5, 8(r30)
/* 803367D0 00332430 7C 1F 30 50 */ subf r0, r31, r6
/* 803367D4 00332434 7C A5 01 D6 */ mullw r5, r5, r0
-/* 803367D8 00332438 4B E9 3A 9D */ bl func_801CA274
+/* 803367D8 00332438 4B E9 3A 9D */ bl memmove
lbl_803367DC:
/* 803367DC 0033243C 80 7E 00 00 */ lwz r3, 0(r30)
/* 803367E0 00332440 3B FF FF FF */ addi r31, r31, -1
diff --git a/asm/text_10_2.s b/asm/text_10_2.s index fb0c052..860c952 100644 --- a/asm/text_10_2.s +++ b/asm/text_10_2.s @@ -1775,8 +1775,8 @@ gsimalloc: /* 8033931C 00334F7C 7D 89 03 A6 */ mtctr r12
/* 80339320 00334F80 4E 80 04 20 */ bctr
-.global func_80339324
-func_80339324:
+.global gsirealloc
+gsirealloc:
/* 80339324 00334F84 3C A0 80 61 */ lis r5, lbl_80610928@ha
/* 80339328 00334F88 38 A5 09 28 */ addi r5, r5, lbl_80610928@l
/* 8033932C 00334F8C 81 85 00 08 */ lwz r12, 8(r5)
@@ -4852,7 +4852,7 @@ lbl_8033BE20: /* 8033BE30 00337A90 38 61 02 14 */ addi r3, r1, 0x214
/* 8033BE34 00337A94 38 81 02 18 */ addi r4, r1, 0x218
/* 8033BE38 00337A98 54 05 10 3A */ slwi r5, r0, 2
-/* 8033BE3C 00337A9C 4B E8 E4 39 */ bl func_801CA274
+/* 8033BE3C 00337A9C 4B E8 E4 39 */ bl memmove
/* 8033BE40 00337AA0 80 01 02 10 */ lwz r0, 0x210(r1)
/* 8033BE44 00337AA4 54 00 10 3A */ slwi r0, r0, 2
/* 8033BE48 00337AA8 7F 38 01 2E */ stwx r25, r24, r0
@@ -7265,7 +7265,7 @@ lbl_8033DFB0: /* 8033DFB8 00339C18 90 7D 02 0C */ stw r3, 0x20c(r29)
/* 8033DFBC 00339C1C 38 83 00 01 */ addi r4, r3, 1
/* 8033DFC0 00339C20 80 7D 02 08 */ lwz r3, 0x208(r29)
-/* 8033DFC4 00339C24 4B FF B3 61 */ bl func_80339324
+/* 8033DFC4 00339C24 4B FF B3 61 */ bl gsirealloc
/* 8033DFC8 00339C28 2C 03 00 00 */ cmpwi r3, 0
/* 8033DFCC 00339C2C 40 82 00 18 */ bne lbl_8033DFE4
/* 8033DFD0 00339C30 7F 83 E3 78 */ mr r3, r28
@@ -7289,7 +7289,7 @@ lbl_8033DFE8: /* 8033E010 00339C70 90 7D 02 00 */ stw r3, 0x200(r29)
/* 8033E014 00339C74 38 A3 00 01 */ addi r5, r3, 1
/* 8033E018 00339C78 80 7D 01 F8 */ lwz r3, 0x1f8(r29)
-/* 8033E01C 00339C7C 4B E8 C2 59 */ bl func_801CA274
+/* 8033E01C 00339C7C 4B E8 C2 59 */ bl memmove
/* 8033E020 00339C80 83 7D 02 08 */ lwz r27, 0x208(r29)
/* 8033E024 00339C84 38 8D 8F 54 */ addi r4, r13, lbl_8063E214-_SDA_BASE_
/* 8033E028 00339C88 7F 63 DB 78 */ mr r3, r27
@@ -8634,7 +8634,7 @@ func_8033F31C: /* 8033F350 0033AFB0 38 9E 40 01 */ addi r4, r30, 0x4001
/* 8033F354 0033AFB4 7C C3 33 78 */ mr r3, r6
/* 8033F358 0033AFB8 3B DE 40 00 */ addi r30, r30, 0x4000
-/* 8033F35C 0033AFBC 4B FF 9F C9 */ bl func_80339324
+/* 8033F35C 0033AFBC 4B FF 9F C9 */ bl gsirealloc
/* 8033F360 0033AFC0 2C 03 00 00 */ cmpwi r3, 0
/* 8033F364 0033AFC4 7C 66 1B 78 */ mr r6, r3
/* 8033F368 0033AFC8 40 82 00 1C */ bne lbl_8033F384
@@ -8693,7 +8693,7 @@ lbl_8033F420: /* 8033F420 0033B080 7F DE 02 14 */ add r30, r30, r0
/* 8033F424 0033B084 7F A3 EB 78 */ mr r3, r29
/* 8033F428 0033B088 38 9E 00 01 */ addi r4, r30, 1
-/* 8033F42C 0033B08C 4B FF 9E F9 */ bl func_80339324
+/* 8033F42C 0033B08C 4B FF 9E F9 */ bl gsirealloc
/* 8033F430 0033B090 2C 03 00 00 */ cmpwi r3, 0
/* 8033F434 0033B094 7C 7D 1B 78 */ mr r29, r3
/* 8033F438 0033B098 40 82 00 1C */ bne lbl_8033F454
@@ -9022,7 +9022,7 @@ lbl_8033F898: /* 8033F8A4 0033B504 7C 9A 23 78 */ mr r26, r4
/* 8033F8A8 0033B508 7F 83 E3 78 */ mr r3, r28
/* 8033F8AC 0033B50C 38 84 00 01 */ addi r4, r4, 1
-/* 8033F8B0 0033B510 4B FF 9A 75 */ bl func_80339324
+/* 8033F8B0 0033B510 4B FF 9A 75 */ bl gsirealloc
/* 8033F8B4 0033B514 2C 03 00 00 */ cmpwi r3, 0
/* 8033F8B8 0033B518 7C 7C 1B 78 */ mr r28, r3
/* 8033F8BC 0033B51C 40 82 00 1C */ bne lbl_8033F8D8
@@ -9139,7 +9139,7 @@ lbl_8033FA34: /* 8033FA44 0033B6A4 7F A3 EB 78 */ mr r3, r29
/* 8033FA48 0033B6A8 7C 9D FA 14 */ add r4, r29, r31
/* 8033FA4C 0033B6AC 38 BE 00 01 */ addi r5, r30, 1
-/* 8033FA50 0033B6B0 4B E8 A8 25 */ bl func_801CA274
+/* 8033FA50 0033B6B0 4B E8 A8 25 */ bl memmove
/* 8033FA54 0033B6B4 7F 7F D8 50 */ subf r27, r31, r27
/* 8033FA58 0033B6B8 48 00 00 08 */ b lbl_8033FA60
lbl_8033FA5C:
@@ -9281,7 +9281,7 @@ lbl_8033FC24: /* 8033FC2C 0033B88C 90 A4 00 08 */ stw r5, 8(r4)
/* 8033FC30 0033B890 41 82 00 0C */ beq lbl_8033FC3C
/* 8033FC34 0033B894 7C 83 32 14 */ add r4, r3, r6
-/* 8033FC38 0033B898 4B E8 A6 3D */ bl func_801CA274
+/* 8033FC38 0033B898 4B E8 A6 3D */ bl memmove
lbl_8033FC3C:
/* 8033FC3C 0033B89C 80 9F 00 00 */ lwz r4, 0(r31)
/* 8033FC40 0033B8A0 38 A0 00 00 */ li r5, 0
@@ -17198,7 +17198,7 @@ lbl_80346B70: /* 80346B8C 003427EC 38 04 00 01 */ addi r0, r4, 1
/* 80346B90 003427F0 1C 80 00 AC */ mulli r4, r0, 0xac
/* 80346B94 003427F4 90 01 00 A4 */ stw r0, 0xa4(r1)
-/* 80346B98 003427F8 4B FF 27 8D */ bl func_80339324
+/* 80346B98 003427F8 4B FF 27 8D */ bl gsirealloc
/* 80346B9C 003427FC 2C 03 00 00 */ cmpwi r3, 0
/* 80346BA0 00342800 90 61 00 AC */ stw r3, 0xac(r1)
/* 80346BA4 00342804 40 82 00 18 */ bne lbl_80346BBC
@@ -17506,7 +17506,7 @@ lbl_80346FDC: /* 80346FF4 00342C54 80 74 00 3C */ lwz r3, 0x3c(r20)
/* 80346FF8 00342C58 38 04 00 01 */ addi r0, r4, 1
/* 80346FFC 00342C5C 54 04 10 3A */ slwi r4, r0, 2
-/* 80347000 00342C60 4B FF 23 25 */ bl func_80339324
+/* 80347000 00342C60 4B FF 23 25 */ bl gsirealloc
/* 80347004 00342C64 2C 03 00 00 */ cmpwi r3, 0
/* 80347008 00342C68 40 82 00 18 */ bne lbl_80347020
/* 8034700C 00342C6C 7F A3 EB 78 */ mr r3, r29
@@ -17552,7 +17552,7 @@ lbl_80347084: /* 803470A0 00342D00 40 81 00 D0 */ ble lbl_80347170
/* 803470A4 00342D04 80 74 00 40 */ lwz r3, 0x40(r20)
/* 803470A8 00342D08 54 04 10 3A */ slwi r4, r0, 2
-/* 803470AC 00342D0C 4B FF 22 79 */ bl func_80339324
+/* 803470AC 00342D0C 4B FF 22 79 */ bl gsirealloc
/* 803470B0 00342D10 2C 03 00 00 */ cmpwi r3, 0
/* 803470B4 00342D14 40 82 00 18 */ bne lbl_803470CC
/* 803470B8 00342D18 7F A3 EB 78 */ mr r3, r29
@@ -17676,7 +17676,7 @@ lbl_8034724C: /* 80347268 00342EC8 90 14 00 08 */ stw r0, 8(r20)
/* 8034726C 00342ECC 1C 80 01 28 */ mulli r4, r0, 0x128
/* 80347270 00342ED0 80 74 00 0C */ lwz r3, 0xc(r20)
-/* 80347274 00342ED4 4B FF 20 B1 */ bl func_80339324
+/* 80347274 00342ED4 4B FF 20 B1 */ bl gsirealloc
/* 80347278 00342ED8 2C 03 00 00 */ cmpwi r3, 0
/* 8034727C 00342EDC 90 74 00 0C */ stw r3, 0xc(r20)
/* 80347280 00342EE0 40 82 00 18 */ bne lbl_80347298
@@ -18049,7 +18049,7 @@ lbl_803477A4: /* 803477BC 0034341C 80 74 00 08 */ lwz r3, 8(r20)
/* 803477C0 00343420 38 04 00 01 */ addi r0, r4, 1
/* 803477C4 00343424 1C 80 00 AC */ mulli r4, r0, 0xac
-/* 803477C8 00343428 4B FF 1B 5D */ bl func_80339324
+/* 803477C8 00343428 4B FF 1B 5D */ bl gsirealloc
/* 803477CC 0034342C 2C 03 00 00 */ cmpwi r3, 0
/* 803477D0 00343430 40 82 00 18 */ bne lbl_803477E8
/* 803477D4 00343434 7F A3 EB 78 */ mr r3, r29
@@ -19402,7 +19402,7 @@ lbl_80348A5C: /* 80348A68 003446C8 7C 04 00 50 */ subf r0, r4, r0
/* 80348A6C 003446CC 7C 83 2A 14 */ add r4, r3, r5
/* 80348A70 003446D0 7C A5 00 50 */ subf r5, r5, r0
-/* 80348A74 003446D4 4B E8 18 01 */ bl func_801CA274
+/* 80348A74 003446D4 4B E8 18 01 */ bl memmove
/* 80348A78 003446D8 80 1E 00 08 */ lwz r0, 8(r30)
/* 80348A7C 003446DC 7C 1F 00 50 */ subf r0, r31, r0
/* 80348A80 003446E0 90 1E 00 08 */ stw r0, 8(r30)
@@ -28546,7 +28546,7 @@ lbl_8035082C: /* 80350830 0034C490 80 63 00 04 */ lwz r3, 4(r3)
/* 80350834 0034C494 7F E0 22 14 */ add r31, r0, r4
/* 80350838 0034C498 7F E4 FB 78 */ mr r4, r31
-/* 8035083C 0034C49C 4B FE 8A E9 */ bl func_80339324
+/* 8035083C 0034C49C 4B FE 8A E9 */ bl gsirealloc
/* 80350840 0034C4A0 2C 03 00 00 */ cmpwi r3, 0
/* 80350844 0034C4A4 40 82 00 0C */ bne lbl_80350850
/* 80350848 0034C4A8 38 60 00 00 */ li r3, 0
@@ -28612,7 +28612,7 @@ lbl_80350904: lbl_80350910:
/* 80350910 0034C570 7F E4 FB 78 */ mr r4, r31
/* 80350914 0034C574 38 60 00 00 */ li r3, 0
-/* 80350918 0034C578 4B FE 8A 0D */ bl func_80339324
+/* 80350918 0034C578 4B FE 8A 0D */ bl gsirealloc
/* 8035091C 0034C57C 2C 03 00 00 */ cmpwi r3, 0
/* 80350920 0034C580 40 82 00 0C */ bne lbl_8035092C
/* 80350924 0034C584 38 00 00 00 */ li r0, 0
@@ -28807,7 +28807,7 @@ lbl_80350B8C: /* 80350B8C 0034C7EC 7F C3 02 14 */ add r30, r3, r0
/* 80350B90 0034C7F0 80 7F 00 04 */ lwz r3, 4(r31)
/* 80350B94 0034C7F4 7F C4 F3 78 */ mr r4, r30
-/* 80350B98 0034C7F8 4B FE 87 8D */ bl func_80339324
+/* 80350B98 0034C7F8 4B FE 87 8D */ bl gsirealloc
/* 80350B9C 0034C7FC 2C 03 00 00 */ cmpwi r3, 0
/* 80350BA0 0034C800 40 82 00 0C */ bne lbl_80350BAC
/* 80350BA4 0034C804 38 00 00 00 */ li r0, 0
@@ -28945,7 +28945,7 @@ lbl_80350D64: /* 80350D68 0034C9C8 80 7C 00 04 */ lwz r3, 4(r28)
/* 80350D6C 0034C9CC 7F 60 22 14 */ add r27, r0, r4
/* 80350D70 0034C9D0 7F 64 DB 78 */ mr r4, r27
-/* 80350D74 0034C9D4 4B FE 85 B1 */ bl func_80339324
+/* 80350D74 0034C9D4 4B FE 85 B1 */ bl gsirealloc
/* 80350D78 0034C9D8 2C 03 00 00 */ cmpwi r3, 0
/* 80350D7C 0034C9DC 40 82 00 0C */ bne lbl_80350D88
/* 80350D80 0034C9E0 38 00 00 00 */ li r0, 0
@@ -29089,7 +29089,7 @@ lbl_80350F50: /* 80350F50 0034CBB0 7F C5 02 14 */ add r30, r5, r0
/* 80350F54 0034CBB4 80 63 00 04 */ lwz r3, 4(r3)
/* 80350F58 0034CBB8 7F C4 F3 78 */ mr r4, r30
-/* 80350F5C 0034CBBC 4B FE 83 C9 */ bl func_80339324
+/* 80350F5C 0034CBBC 4B FE 83 C9 */ bl gsirealloc
/* 80350F60 0034CBC0 2C 03 00 00 */ cmpwi r3, 0
/* 80350F64 0034CBC4 40 82 00 0C */ bne lbl_80350F70
/* 80350F68 0034CBC8 38 00 00 00 */ li r0, 0
@@ -29454,7 +29454,7 @@ lbl_8035140C: /* 8035140C 0034D06C 80 7F 00 C4 */ lwz r3, 0xc4(r31)
/* 80351410 0034D070 7F C5 F3 78 */ mr r5, r30
/* 80351414 0034D074 7C 83 22 14 */ add r4, r3, r4
-/* 80351418 0034D078 4B E7 8E 5D */ bl func_801CA274
+/* 80351418 0034D078 4B E7 8E 5D */ bl memmove
/* 8035141C 0034D07C 38 00 00 00 */ li r0, 0
/* 80351420 0034D080 93 DF 00 CC */ stw r30, 0xcc(r31)
/* 80351424 0034D084 90 1F 00 D0 */ stw r0, 0xd0(r31)
@@ -29725,7 +29725,7 @@ lbl_803517A4: /* 803517A8 0034D408 7C C3 33 78 */ mr r3, r6
/* 803517AC 0034D40C 3B 7D 00 04 */ addi r27, r29, 4
/* 803517B0 0034D410 57 64 10 3A */ slwi r4, r27, 2
-/* 803517B4 0034D414 4B FE 7B 71 */ bl func_80339324
+/* 803517B4 0034D414 4B FE 7B 71 */ bl gsirealloc
/* 803517B8 0034D418 2C 03 00 00 */ cmpwi r3, 0
/* 803517BC 0034D41C 40 82 00 0C */ bne lbl_803517C8
/* 803517C0 0034D420 38 60 FF FF */ li r3, -1
@@ -35815,7 +35815,7 @@ lbl_80356C54: /* 80356CAC 0035290C 7C C3 33 78 */ mr r3, r6
/* 80356CB0 00352910 7F 84 E3 78 */ mr r4, r28
/* 80356CB4 00352914 38 BB 00 01 */ addi r5, r27, 1
-/* 80356CB8 00352918 4B E7 35 BD */ bl func_801CA274
+/* 80356CB8 00352918 4B E7 35 BD */ bl memmove
/* 80356CBC 0035291C 93 78 00 A8 */ stw r27, 0xa8(r24)
/* 80356CC0 00352920 48 00 00 0C */ b lbl_80356CCC
lbl_80356CC4:
@@ -37744,7 +37744,7 @@ lbl_80358614: /* 80358614 00354274 90 6D B1 18 */ stw r3, lbl_806403D8-_SDA_BASE_(r13)
/* 80358618 00354278 38 83 00 01 */ addi r4, r3, 1
/* 8035861C 0035427C 80 6D B1 14 */ lwz r3, lbl_806403D4-_SDA_BASE_(r13)
-/* 80358620 00354280 4B FE 0D 05 */ bl func_80339324
+/* 80358620 00354280 4B FE 0D 05 */ bl gsirealloc
/* 80358624 00354284 2C 03 00 00 */ cmpwi r3, 0
/* 80358628 00354288 90 6D B1 14 */ stw r3, lbl_806403D4-_SDA_BASE_(r13)
/* 8035862C 0035428C 40 82 00 0C */ bne lbl_80358638
@@ -38021,7 +38021,7 @@ lbl_80358A00: /* 80358A00 00354660 80 6D B1 14 */ lwz r3, lbl_806403D4-_SDA_BASE_(r13)
/* 80358A04 00354664 7C B4 00 50 */ subf r5, r20, r0
/* 80358A08 00354668 7C 83 A2 14 */ add r4, r3, r20
-/* 80358A0C 0035466C 4B E7 18 69 */ bl func_801CA274
+/* 80358A0C 0035466C 4B E7 18 69 */ bl memmove
/* 80358A10 00354670 80 0D B1 1C */ lwz r0, lbl_806403DC-_SDA_BASE_(r13)
/* 80358A14 00354674 7C 14 00 50 */ subf r0, r20, r0
/* 80358A18 00354678 90 0D B1 1C */ stw r0, lbl_806403DC-_SDA_BASE_(r13)
@@ -47999,7 +47999,7 @@ lbl_8036136C: /* 80361370 0035CFD0 41 82 00 10 */ beq lbl_80361380
/* 80361374 0035CFD4 7F 84 E3 78 */ mr r4, r28
/* 80361378 0035CFD8 7F 65 DB 78 */ mr r5, r27
-/* 8036137C 0035CFDC 4B E6 8E F9 */ bl func_801CA274
+/* 8036137C 0035CFDC 4B E6 8E F9 */ bl memmove
lbl_80361380:
/* 80361380 0035CFE0 93 7A 00 80 */ stw r27, 0x80(r26)
/* 80361384 0035CFE4 38 60 00 00 */ li r3, 0
@@ -48708,7 +48708,7 @@ lbl_80361CEC: /* 80361D04 0035D964 2C 03 00 00 */ cmpwi r3, 0
/* 80361D08 0035D968 41 82 00 0C */ beq lbl_80361D14
/* 80361D0C 0035D96C 7C 83 22 14 */ add r4, r3, r4
-/* 80361D10 0035D970 4B E6 85 65 */ bl func_801CA274
+/* 80361D10 0035D970 4B E6 85 65 */ bl memmove
lbl_80361D14:
/* 80361D14 0035D974 2C 1F 00 00 */ cmpwi r31, 0
/* 80361D18 0035D978 40 82 00 10 */ bne lbl_80361D28
diff --git a/asm/text_5.s b/asm/text_5.s index c0e4329..195ee48 100644 --- a/asm/text_5.s +++ b/asm/text_5.s @@ -100956,8 +100956,8 @@ lbl_801CA260: /* 801CA26C 001C5ECC 38 21 00 30 */ addi r1, r1, 0x30 /* 801CA270 001C5ED0 4E 80 00 20 */ blr -.global func_801CA274 -func_801CA274: +.global memmove +memmove: /* 801CA274 001C5ED4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801CA278 001C5ED8 7C 08 02 A6 */ mflr r0 /* 801CA27C 001C5EDC 7C 66 22 78 */ xor r6, r3, r4 diff --git a/asm/text_7.s b/asm/text_7.s index 7917d01..1cd02ee 100644 --- a/asm/text_7.s +++ b/asm/text_7.s @@ -79969,7 +79969,7 @@ lbl_80267C5C: /* 80267C90 002638F0 20 1E 00 1D */ subfic r0, r30, 0x1d /* 80267C94 002638F4 7F E4 FB 78 */ mr r4, r31 /* 80267C98 002638F8 1C A0 00 0C */ mulli r5, r0, 0xc -/* 80267C9C 002638FC 4B F6 25 D9 */ bl func_801CA274 +/* 80267C9C 002638FC 4B F6 25 D9 */ bl memmove /* 80267CA0 00263900 7F A3 EB 78 */ mr r3, r29 /* 80267CA4 00263904 38 80 00 1D */ li r4, 0x1d /* 80267CA8 00263908 4B FF F8 3D */ bl func_802674E4 diff --git a/asm/text_7_2.s b/asm/text_7_2.s index 44950e0..ec3b13b 100644 --- a/asm/text_7_2.s +++ b/asm/text_7_2.s @@ -2277,7 +2277,7 @@ lbl_8026D494: /* 8026D4E0 00269140 4B FF CC 4D */ bl OSAllocFromMEM1ArenaLo /* 8026D4E4 00269144 7F 84 E3 78 */ mr r4, r28 /* 8026D4E8 00269148 7F C5 F3 78 */ mr r5, r30 -/* 8026D4EC 0026914C 4B F5 CD 89 */ bl func_801CA274 +/* 8026D4EC 0026914C 4B F5 CD 89 */ bl memmove /* 8026D4F0 00269150 90 7D 00 08 */ stw r3, 8(r29) /* 8026D4F4 00269154 3C 60 00 0A */ lis r3, 0x000A1004@ha /* 8026D4F8 00269158 38 63 10 04 */ addi r3, r3, 0x000A1004@l @@ -11951,7 +11951,7 @@ lbl_80275990: /* 802759C8 00271628 38 9F 00 30 */ addi r4, r31, 0x30 /* 802759CC 0027162C 80 1F 00 24 */ lwz r0, 0x24(r31) /* 802759D0 00271630 54 05 18 38 */ slwi r5, r0, 3 -/* 802759D4 00271634 4B F5 48 A1 */ bl func_801CA274 +/* 802759D4 00271634 4B F5 48 A1 */ bl memmove lbl_802759D8: /* 802759D8 00271638 7F 83 E3 78 */ mr r3, r28 /* 802759DC 0027163C 38 80 00 00 */ li r4, 0 @@ -12163,7 +12163,7 @@ lbl_80275C98: /* 80275CD0 00271930 38 9D 00 30 */ addi r4, r29, 0x30 /* 80275CD4 00271934 80 1D 00 24 */ lwz r0, 0x24(r29) /* 80275CD8 00271938 54 05 18 38 */ slwi r5, r0, 3 -/* 80275CDC 0027193C 4B F5 45 99 */ bl func_801CA274 +/* 80275CDC 0027193C 4B F5 45 99 */ bl memmove lbl_80275CE0: /* 80275CE0 00271940 7F 23 CB 78 */ mr r3, r25 /* 80275CE4 00271944 38 80 00 00 */ li r4, 0 diff --git a/asm/text_9.s b/asm/text_9.s index ec6fd20..ae545df 100644 --- a/asm/text_9.s +++ b/asm/text_9.s @@ -28202,7 +28202,7 @@ func_802EB384: /* 802EB408 002E7068 7C A0 28 50 */ subf r5, r0, r5 /* 802EB40C 002E706C 3B A6 00 02 */ addi r29, r6, 2 /* 802EB410 002E7070 38 84 00 02 */ addi r4, r4, 2 -/* 802EB414 002E7074 4B ED EE 61 */ bl func_801CA274 +/* 802EB414 002E7074 4B ED EE 61 */ bl memmove /* 802EB418 002E7078 38 98 FF FE */ addi r4, r24, -2 /* 802EB41C 002E707C 38 04 00 02 */ addi r0, r4, 2 /* 802EB420 002E7080 7C 19 00 50 */ subf r0, r25, r0 @@ -28231,7 +28231,7 @@ lbl_802EB460: /* 802EB46C 002E70CC 7C 7F 2A 14 */ add r3, r31, r5 /* 802EB470 002E70D0 7C 85 22 14 */ add r4, r5, r4 /* 802EB474 002E70D4 7C A0 D0 50 */ subf r5, r0, r26 -/* 802EB478 002E70D8 4B ED ED FD */ bl func_801CA274 +/* 802EB478 002E70D8 4B ED ED FD */ bl memmove /* 802EB47C 002E70DC 7C 1D D0 50 */ subf r0, r29, r26 /* 802EB480 002E70E0 7F A5 EB 78 */ mr r5, r29 /* 802EB484 002E70E4 7C 7F 02 14 */ add r3, r31, r0 @@ -28385,7 +28385,7 @@ lbl_802EB638: /* 802EB684 002E72E4 7F 76 1A 14 */ add r27, r22, r3 /* 802EB688 002E72E8 38 64 00 02 */ addi r3, r4, 2 /* 802EB68C 002E72EC 7C A0 28 50 */ subf r5, r0, r5 -/* 802EB690 002E72F0 4B ED EB E5 */ bl func_801CA274 +/* 802EB690 002E72F0 4B ED EB E5 */ bl memmove lbl_802EB694: /* 802EB694 002E72F4 A0 76 00 00 */ lhz r3, 0(r22) /* 802EB698 002E72F8 38 03 00 02 */ addi r0, r3, 2 diff --git a/include/darray.h b/include/darray.h index f20cb82..2859cd4 100644 --- a/include/darray.h +++ b/include/darray.h @@ -7,14 +7,14 @@ extern "C" { typedef struct DArray {
s32 size;
- s32 unk4;
+ s32 capacity;
u32 elementSz;
- s32 unkC;
- s32 unk10;
+ s32 growAmount;
+ s32 unk10; // TODO destructor callback?
char *buf;
} DArray;
-void *ArrayNew(s32 p1, s32 p3, s32 p6);
+void *ArrayNew(u32 p1, s32 p2, s32 p3);
void *ArrayNth(DArray *p1, s32 p2);
void *ArrayMapBackwards2(DArray *p1, s32 p2, s32 p3);
diff --git a/include/hashtable.h b/include/hashtable.h index 0502273..b4c0ad5 100644 --- a/include/hashtable.h +++ b/include/hashtable.h @@ -18,8 +18,8 @@ typedef struct HashTable { s32 unk10; // comparison callback?
} HashTable;
-HashTable *TableNew(s32 p1, s32 p2, HashFunction hf, s32 p4, s32 p5);
-HashTable *TableNew2(s32 p1, s32 size, s32 p3, HashFunction hf, s32 p5, s32 p6);
+HashTable *TableNew(u32 p1, s32 p2, HashFunction hf, s32 p4, s32 p5);
+HashTable *TableNew2(u32 p1, s32 size, s32 p3, HashFunction hf, s32 p5, s32 p6);
void TableFree(HashTable *table);
s32 TableCount(HashTable *table);
void TableEnter(HashTable *table, void *elem);
diff --git a/include/nonport.h b/include/nonport.h new file mode 100644 index 0000000..2cc5146 --- /dev/null +++ b/include/nonport.h @@ -0,0 +1,16 @@ +#ifndef POKEREVO_NONPORT_H
+#define POKEREVO_NONPORT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void *gsimalloc(u32 sz);
+
+void gsifree(void *ptr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //POKEREVO_NONPORT_H
diff --git a/src/darray.c b/src/darray.c new file mode 100644 index 0000000..c8c4c7a --- /dev/null +++ b/src/darray.c @@ -0,0 +1,150 @@ +#if 0
+==ArrayNew 8035a460 80335db8 9c
+==ArrayFree 8035a4fc 80335e54 94
+==ArrayLength 8035a590 80025100 8
+==ArrayNth 8035a598 80335ef0 30
+==ArrayAppend 8035a5c8 80335f20 124
+ArrayInsertSorted 8035a6ec 80336044 180
+ArrayRemoveAt 8035a86c 803361c4 ac
+ArrayDeleteAt 8035a918 80336270 f0
+ArrayReplaceAt 8035aa08 80336360 b8
+# ArraySort 80336418 18
+ArraySearch 8035aad8 80336430 198
+ArrayMapBackwards 8035ac70 803365c8 9c
+ArrayMapBackwards2 8035ad0c 80336664 a4
+ArrayClear 8035adb0 80336708 104
+#endif
+
+DArray *ArrayNew(u32 p1, s32 p2, s32 p3)
+{
+ DArray *darray = gsimalloc(sizeof(DArray)); // r31
+ if (p2 == 0)
+ p2 = 8; // r29
+ darray->size = 0;
+ darray->capacity = p2;
+ darray->elementSz = p1;
+ darray->growAmount = p2;
+ darray->unk10 = p3;
+ if (p2 != 0) {
+ darray->buf = gsimalloc(p2 * darray->elementSz);
+ } else {
+ darray->buf = NULL;
+ }
+ return darray;
+}
+
+void ArrayFree(DArray *p1)
+{
+ for (s32 i = 0; i < p1->size; i++) {
+ func f = p1->unk10;
+ if (p1->unk10) {
+ if (i < 0 || i >= p1->size) {
+ f(NULL);
+ } else {
+ f(&p1->buf[i * p1->elementSz]);
+ }
+ }
+ }
+ gsifree(p1->buf);
+ gsifree(p1);
+}
+
+s32 ArrayLength(DArray *p1)
+{
+ return p1->size;
+}
+
+void *ArrayNth(DArray *p1, s32 p2)
+{
+ if (p2 < 0 || p2 >= p1->size)
+ return NULL;
+ return &p1->buf[i * p1->elementSz];
+}
+
+// params in r29, r30
+void ArrayAppend(DArray *p1, void *elem)
+{
+ if (p1) {
+ const s32 origSize = p1->size; // r31
+ if (origSize == p1->capacity) {
+ s32 newCap = p1->capacity + p1->growAmount;
+ p1->capacity = newCap;
+ p1->buf = gsirealloc(p1->buf, newCap * p1->elementSz);
+ }
+ s32 newSize = p1->size + 1; // r5
+ s32 decNewSize = newSize - 1;
+ p1->size = newSize;
+ void *r3, *r4;
+ // TODO: this whole condition could be an inlined func
+ if (origSize < decNewSize) {
+ // TODO: inlined function calls to ArrayNth
+ s32 incOrigSize = origSize + 1;
+ if (incOrigSize < 0 || incOrigSize >= newSize) {
+ r3 = 0;
+ } else {
+ r3 = &p1->buf[p1->elementSz * incOrigSize];
+ }
+ // fb8
+ if (origSize < 0 || origSize >= newSize) {
+ r4 = 0;
+ } else {
+ r4 = &p1->buf[p1->elementSz * origSize];
+ }
+ memmove(r3, r4, (decNewSize - origSize) * p1->elementSz);
+ }
+ // 5ff0
+ if (origSize < 0 || origSize >= p1->size) {
+ r3 = 0;
+ } else {
+ r3 = &p1->buf[p1->elementSz * origSize];
+ }
+ memcpy(r3, elem, p1->elementSz);
+ }
+}
+
+ArrayInsertSorted()
+{
+
+}
+
+ArrayRemoveAt()
+{
+
+}
+
+ArrayDeleteAt()
+{
+
+}
+
+ArrayReplaceAt()
+{
+
+}
+
+ArraySort()
+{
+
+}
+
+ArraySearch()
+{
+
+}
+
+ArrayMapBackwards()
+{
+
+}
+
+ArrayMapBackwards2()
+{
+
+}
+
+ArrayClear()
+{
+
+}
+
+
diff --git a/src/hashtable.c b/src/hashtable.c index ed880c8..b717ffe 100644 --- a/src/hashtable.c +++ b/src/hashtable.c @@ -1,15 +1,16 @@ #include "types.h"
+#include "nonport.h"
#include "hashtable.h"
-HashTable *TableNew(s32 p1, s32 p2, HashFunction hf, s32 p4, s32 p5)
+HashTable *TableNew(u32 p1, s32 p2, HashFunction hf, s32 p4, s32 p5)
{
return TableNew2(p1, p2, 4, hf, p4, p5);
}
-HashTable *TableNew2(s32 p1, s32 size, s32 p3, HashFunction hf, s32 p5, s32 p6)
+HashTable *TableNew2(u32 p1, s32 size, s32 p3, HashFunction hf, s32 p5, s32 p6)
{
- HashTable *table = (HashTable *)gsimalloc(sizeof(HashTable));
- table->chains = (DArray **)gsimalloc(size * sizeof(DArray *));
+ HashTable *table = gsimalloc(sizeof(HashTable));
+ table->chains = gsimalloc(size * sizeof(DArray *));
for (s32 i = 0; i < size; i++) {
table->chains[i] = (DArray *)ArrayNew(p1, p3, p6);
}
|