mirror of
https://github.com/pret/pokerevo.git
synced 2026-04-26 02:40:01 -05:00
match func_801DBD74
This commit is contained in:
parent
7a613ce73c
commit
1a76bb3162
|
|
@ -2,76 +2,6 @@
|
|||
|
||||
.section .text, "ax" # 0x80006980 - 0x803E1E60
|
||||
|
||||
.global func_801DBD74
|
||||
func_801DBD74:
|
||||
/* 801DBD74 001D79D4 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 801DBD78 001D79D8 7C 08 02 A6 */ mflr r0
|
||||
/* 801DBD7C 001D79DC 3C C0 80 49 */ lis r6, lbl_80491470@ha
|
||||
/* 801DBD80 001D79E0 7C 67 1B 78 */ mr r7, r3
|
||||
/* 801DBD84 001D79E4 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 801DBD88 001D79E8 38 00 00 04 */ li r0, 4
|
||||
/* 801DBD8C 001D79EC 7C 85 23 78 */ mr r5, r4
|
||||
/* 801DBD90 001D79F0 38 C6 14 70 */ addi r6, r6, lbl_80491470@l
|
||||
/* 801DBD94 001D79F4 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 801DBD98 001D79F8 38 60 00 00 */ li r3, 0
|
||||
/* 801DBD9C 001D79FC 7C 09 03 A6 */ mtctr r0
|
||||
lbl_801DBDA0:
|
||||
/* 801DBDA0 001D7A00 80 06 00 08 */ lwz r0, 8(r6)
|
||||
/* 801DBDA4 001D7A04 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 801DBDA8 001D7A08 41 82 00 80 */ beq lbl_801DBE28
|
||||
/* 801DBDAC 001D7A0C 80 06 00 24 */ lwz r0, 0x24(r6)
|
||||
/* 801DBDB0 001D7A10 38 63 00 01 */ addi r3, r3, 1
|
||||
/* 801DBDB4 001D7A14 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 801DBDB8 001D7A18 41 82 00 70 */ beq lbl_801DBE28
|
||||
/* 801DBDBC 001D7A1C 80 06 00 40 */ lwz r0, 0x40(r6)
|
||||
/* 801DBDC0 001D7A20 38 63 00 01 */ addi r3, r3, 1
|
||||
/* 801DBDC4 001D7A24 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 801DBDC8 001D7A28 41 82 00 60 */ beq lbl_801DBE28
|
||||
/* 801DBDCC 001D7A2C 80 06 00 5C */ lwz r0, 0x5c(r6)
|
||||
/* 801DBDD0 001D7A30 38 63 00 01 */ addi r3, r3, 1
|
||||
/* 801DBDD4 001D7A34 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 801DBDD8 001D7A38 41 82 00 50 */ beq lbl_801DBE28
|
||||
/* 801DBDDC 001D7A3C 80 06 00 78 */ lwz r0, 0x78(r6)
|
||||
/* 801DBDE0 001D7A40 38 63 00 01 */ addi r3, r3, 1
|
||||
/* 801DBDE4 001D7A44 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 801DBDE8 001D7A48 41 82 00 40 */ beq lbl_801DBE28
|
||||
/* 801DBDEC 001D7A4C 80 06 00 94 */ lwz r0, 0x94(r6)
|
||||
/* 801DBDF0 001D7A50 38 63 00 01 */ addi r3, r3, 1
|
||||
/* 801DBDF4 001D7A54 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 801DBDF8 001D7A58 41 82 00 30 */ beq lbl_801DBE28
|
||||
/* 801DBDFC 001D7A5C 80 06 00 B0 */ lwz r0, 0xb0(r6)
|
||||
/* 801DBE00 001D7A60 38 63 00 01 */ addi r3, r3, 1
|
||||
/* 801DBE04 001D7A64 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 801DBE08 001D7A68 41 82 00 20 */ beq lbl_801DBE28
|
||||
/* 801DBE0C 001D7A6C 80 06 00 CC */ lwz r0, 0xcc(r6)
|
||||
/* 801DBE10 001D7A70 38 63 00 01 */ addi r3, r3, 1
|
||||
/* 801DBE14 001D7A74 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 801DBE18 001D7A78 41 82 00 10 */ beq lbl_801DBE28
|
||||
/* 801DBE1C 001D7A7C 38 C6 00 E0 */ addi r6, r6, 0xe0
|
||||
/* 801DBE20 001D7A80 38 63 00 01 */ addi r3, r3, 1
|
||||
/* 801DBE24 001D7A84 42 00 FF 7C */ bdnz lbl_801DBDA0
|
||||
lbl_801DBE28:
|
||||
/* 801DBE28 001D7A88 1C 03 00 1C */ mulli r0, r3, 0x1c
|
||||
/* 801DBE2C 001D7A8C 3C 60 80 49 */ lis r3, lbl_80491470@ha
|
||||
/* 801DBE30 001D7A90 38 63 14 70 */ addi r3, r3, lbl_80491470@l
|
||||
/* 801DBE34 001D7A94 7F E3 02 14 */ add r31, r3, r0
|
||||
/* 801DBE38 001D7A98 80 1F 00 08 */ lwz r0, 8(r31)
|
||||
/* 801DBE3C 001D7A9C 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 801DBE40 001D7AA0 41 82 00 0C */ beq lbl_801DBE4C
|
||||
/* 801DBE44 001D7AA4 38 60 00 00 */ li r3, 0
|
||||
/* 801DBE48 001D7AA8 48 00 00 14 */ b lbl_801DBE5C
|
||||
lbl_801DBE4C:
|
||||
/* 801DBE4C 001D7AAC 7F E3 FB 78 */ mr r3, r31
|
||||
/* 801DBE50 001D7AB0 7C E4 3B 78 */ mr r4, r7
|
||||
/* 801DBE54 001D7AB4 4B FF FC F5 */ bl func_801DBB48
|
||||
/* 801DBE58 001D7AB8 7F E3 FB 78 */ mr r3, r31
|
||||
lbl_801DBE5C:
|
||||
/* 801DBE5C 001D7ABC 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 801DBE60 001D7AC0 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 801DBE64 001D7AC4 7C 08 03 A6 */ mtlr r0
|
||||
/* 801DBE68 001D7AC8 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 801DBE6C 001D7ACC 4E 80 00 20 */ blr
|
||||
|
||||
.global func_801DBE70
|
||||
func_801DBE70:
|
||||
/* 801DBE70 001D7AD0 38 A0 00 01 */ li r5, 1
|
||||
|
|
|
|||
|
|
@ -10,19 +10,19 @@ extern "C" {
|
|||
// free store block?
|
||||
struct gUnkClass3
|
||||
{
|
||||
gUnkClass3* unk0;
|
||||
gUnkClass3* unk0; // pointer to the next free block
|
||||
gUnkClass1 unk4;
|
||||
};
|
||||
|
||||
// linked list node free store?
|
||||
struct gUnkClass2
|
||||
{
|
||||
u32 unk0; // counter?
|
||||
u32 unk4;
|
||||
u8 pad[0x4];
|
||||
u32 unk0; // counter for blocks currently allocated?
|
||||
u32 unk4; // maximum number of blocks allocated so far?
|
||||
u32 unk8; // checked heavily in func_801DBD74
|
||||
size_t unkC; // block size
|
||||
u8 pad2[0x8];
|
||||
gUnkClass3* unk18; // next block?
|
||||
u8 unk10[0x8];
|
||||
gUnkClass3* unk18; // head of the linked list of free nodes
|
||||
};
|
||||
|
||||
gUnkClass1* func_801DBC58(gUnkClass2* p1);
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ void func_801DBB44(u32)
|
|||
|
||||
//static
|
||||
#ifdef NONMATCHING
|
||||
void func_801DBB48(unkClass *p1, u32 p2, u32 p3)
|
||||
void func_801DBB48(gUnkClass2* p1, u32 p2, u32 p3)
|
||||
{
|
||||
//p2 = r30
|
||||
u32 r31 = (p3+7) & ~0x3; // element size
|
||||
|
|
@ -69,14 +69,14 @@ void func_801DBB48(unkClass *p1, u32 p2, u32 p3)
|
|||
for (size_t i = (r4+7)/8; i != 0; i--) {
|
||||
// 8 stores per iteration
|
||||
|
||||
...
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
asm void func_801DBB48(unkClass *p1, u32 p2, u32 p3)
|
||||
asm void func_801DBB48(gUnkClass2* p1, u32 p2, u32 p3)
|
||||
{
|
||||
/* 801DBB48 001D77A8 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 801DBB4C 001D77AC 7C 08 02 A6 */ mflr r0
|
||||
|
|
@ -174,7 +174,8 @@ passCheck:
|
|||
return &r31->unk4;
|
||||
}
|
||||
|
||||
// return node p2 to free store p1
|
||||
// return node p2 to free store p1, making it the new head of the
|
||||
// free node linked list
|
||||
void func_801DBD00(gUnkClass2* p1, gUnkClass1* p2)
|
||||
{
|
||||
u32 r31;
|
||||
|
|
@ -189,6 +190,22 @@ void func_801DBD00(gUnkClass2* p1, gUnkClass1* p2)
|
|||
}
|
||||
}
|
||||
|
||||
// array
|
||||
extern gUnkClass2 lbl_80491470[32];
|
||||
|
||||
// allocate the free store given number of elements and size of each?
|
||||
gUnkClass2* func_801DBD74(u32 p1, u32 p2)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < 32; i++)
|
||||
if (lbl_80491470[i].unk8 == 0)
|
||||
break;
|
||||
gUnkClass2* r31 = &lbl_80491470[i];
|
||||
if (r31->unk8)
|
||||
return NULL;
|
||||
func_801DBB48(r31, p1, p2);
|
||||
return r31;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user