mirror of https://github.com/zeldaret/tp.git
j2dmanage
This commit is contained in:
parent
202e3c51c0
commit
fdd13a5797
|
|
@ -1,98 +0,0 @@
|
|||
lbl_8030CF44:
|
||||
/* 8030CF44 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 8030CF48 7C 08 02 A6 */ mflr r0
|
||||
/* 8030CF4C 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 8030CF50 4B FF FF C1 */ bl getResReference__15J2DResReferenceCFUs
|
||||
/* 8030CF54 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8030CF58 40 82 00 14 */ bne lbl_8030CF6C
|
||||
/* 8030CF5C 38 00 00 00 */ li r0, 0
|
||||
/* 8030CF60 3C 60 80 43 */ lis r3, p_name@ha /* 0x804349C0@ha */
|
||||
/* 8030CF64 9C 03 49 C0 */ stbu r0, p_name@l(r3) /* 0x804349C0@l */
|
||||
/* 8030CF68 48 00 01 20 */ b lbl_8030D088
|
||||
lbl_8030CF6C:
|
||||
/* 8030CF6C 88 03 00 00 */ lbz r0, 0(r3)
|
||||
/* 8030CF70 7C 00 07 74 */ extsb r0, r0
|
||||
/* 8030CF74 2C 00 00 04 */ cmpwi r0, 4
|
||||
/* 8030CF78 41 82 00 5C */ beq lbl_8030CFD4
|
||||
/* 8030CF7C 40 80 00 F8 */ bge lbl_8030D074
|
||||
/* 8030CF80 2C 00 00 02 */ cmpwi r0, 2
|
||||
/* 8030CF84 40 80 00 08 */ bge lbl_8030CF8C
|
||||
/* 8030CF88 48 00 00 EC */ b lbl_8030D074
|
||||
lbl_8030CF8C:
|
||||
/* 8030CF8C 38 C0 00 00 */ li r6, 0
|
||||
/* 8030CF90 3C 80 80 43 */ lis r4, p_name@ha /* 0x804349C0@ha */
|
||||
/* 8030CF94 38 A4 49 C0 */ addi r5, r4, p_name@l /* 0x804349C0@l */
|
||||
/* 8030CF98 48 00 00 18 */ b lbl_8030CFB0
|
||||
lbl_8030CF9C:
|
||||
/* 8030CF9C 38 06 00 02 */ addi r0, r6, 2
|
||||
/* 8030CFA0 7C 03 00 AE */ lbzx r0, r3, r0
|
||||
/* 8030CFA4 98 05 00 00 */ stb r0, 0(r5)
|
||||
/* 8030CFA8 38 C6 00 01 */ addi r6, r6, 1
|
||||
/* 8030CFAC 38 A5 00 01 */ addi r5, r5, 1
|
||||
lbl_8030CFB0:
|
||||
/* 8030CFB0 88 03 00 01 */ lbz r0, 1(r3)
|
||||
/* 8030CFB4 7C 04 07 74 */ extsb r4, r0
|
||||
/* 8030CFB8 7C 06 20 00 */ cmpw r6, r4
|
||||
/* 8030CFBC 41 80 FF E0 */ blt lbl_8030CF9C
|
||||
/* 8030CFC0 38 00 00 00 */ li r0, 0
|
||||
/* 8030CFC4 3C 60 80 43 */ lis r3, p_name@ha /* 0x804349C0@ha */
|
||||
/* 8030CFC8 38 63 49 C0 */ addi r3, r3, p_name@l /* 0x804349C0@l */
|
||||
/* 8030CFCC 7C 03 21 AE */ stbx r0, r3, r4
|
||||
/* 8030CFD0 48 00 00 B0 */ b lbl_8030D080
|
||||
lbl_8030CFD4:
|
||||
/* 8030CFD4 88 03 00 01 */ lbz r0, 1(r3)
|
||||
/* 8030CFD8 7C 04 07 74 */ extsb r4, r0
|
||||
/* 8030CFDC 38 E4 00 01 */ addi r7, r4, 1
|
||||
/* 8030CFE0 7C 83 3A 14 */ add r4, r3, r7
|
||||
/* 8030CFE4 38 07 FF FF */ addi r0, r7, -1
|
||||
/* 8030CFE8 7C 09 03 A6 */ mtctr r0
|
||||
/* 8030CFEC 2C 07 00 02 */ cmpwi r7, 2
|
||||
/* 8030CFF0 41 80 00 28 */ blt lbl_8030D018
|
||||
lbl_8030CFF4:
|
||||
/* 8030CFF4 88 04 00 00 */ lbz r0, 0(r4)
|
||||
/* 8030CFF8 7C 00 07 74 */ extsb r0, r0
|
||||
/* 8030CFFC 2C 00 00 5C */ cmpwi r0, 0x5c
|
||||
/* 8030D000 41 82 00 18 */ beq lbl_8030D018
|
||||
/* 8030D004 2C 00 00 2F */ cmpwi r0, 0x2f
|
||||
/* 8030D008 41 82 00 10 */ beq lbl_8030D018
|
||||
/* 8030D00C 38 E7 FF FF */ addi r7, r7, -1
|
||||
/* 8030D010 38 84 FF FF */ addi r4, r4, -1
|
||||
/* 8030D014 42 00 FF E0 */ bdnz lbl_8030CFF4
|
||||
lbl_8030D018:
|
||||
/* 8030D018 39 00 00 00 */ li r8, 0
|
||||
/* 8030D01C 3C 80 80 43 */ lis r4, p_name@ha /* 0x804349C0@ha */
|
||||
/* 8030D020 38 04 49 C0 */ addi r0, r4, p_name@l /* 0x804349C0@l */
|
||||
/* 8030D024 38 E7 00 01 */ addi r7, r7, 1
|
||||
/* 8030D028 7C A3 3A 14 */ add r5, r3, r7
|
||||
/* 8030D02C 7C 04 03 78 */ mr r4, r0
|
||||
/* 8030D030 48 00 00 1C */ b lbl_8030D04C
|
||||
lbl_8030D034:
|
||||
/* 8030D034 88 05 00 00 */ lbz r0, 0(r5)
|
||||
/* 8030D038 98 04 00 00 */ stb r0, 0(r4)
|
||||
/* 8030D03C 39 08 00 01 */ addi r8, r8, 1
|
||||
/* 8030D040 38 84 00 01 */ addi r4, r4, 1
|
||||
/* 8030D044 38 E7 00 01 */ addi r7, r7, 1
|
||||
/* 8030D048 38 A5 00 01 */ addi r5, r5, 1
|
||||
lbl_8030D04C:
|
||||
/* 8030D04C 88 03 00 01 */ lbz r0, 1(r3)
|
||||
/* 8030D050 7C 06 07 74 */ extsb r6, r0
|
||||
/* 8030D054 38 06 00 02 */ addi r0, r6, 2
|
||||
/* 8030D058 7C 07 00 00 */ cmpw r7, r0
|
||||
/* 8030D05C 41 80 FF D8 */ blt lbl_8030D034
|
||||
/* 8030D060 38 00 00 00 */ li r0, 0
|
||||
/* 8030D064 3C 60 80 43 */ lis r3, p_name@ha /* 0x804349C0@ha */
|
||||
/* 8030D068 38 63 49 C0 */ addi r3, r3, p_name@l /* 0x804349C0@l */
|
||||
/* 8030D06C 7C 03 41 AE */ stbx r0, r3, r8
|
||||
/* 8030D070 48 00 00 10 */ b lbl_8030D080
|
||||
lbl_8030D074:
|
||||
/* 8030D074 38 00 00 00 */ li r0, 0
|
||||
/* 8030D078 3C 60 80 43 */ lis r3, p_name@ha /* 0x804349C0@ha */
|
||||
/* 8030D07C 98 03 49 C0 */ stb r0, p_name@l(r3) /* 0x804349C0@l */
|
||||
lbl_8030D080:
|
||||
/* 8030D080 3C 60 80 43 */ lis r3, p_name@ha /* 0x804349C0@ha */
|
||||
/* 8030D084 38 63 49 C0 */ addi r3, r3, p_name@l /* 0x804349C0@l */
|
||||
lbl_8030D088:
|
||||
/* 8030D088 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 8030D08C 7C 08 03 A6 */ mtlr r0
|
||||
/* 8030D090 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 8030D094 4E 80 00 20 */ blr
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
lbl_8030CF10:
|
||||
/* 8030CF10 A0 A3 00 00 */ lhz r5, 0(r3)
|
||||
/* 8030CF14 54 80 04 3E */ clrlwi r0, r4, 0x10
|
||||
/* 8030CF18 7C 05 00 40 */ cmplw r5, r0
|
||||
/* 8030CF1C 40 81 00 0C */ ble lbl_8030CF28
|
||||
/* 8030CF20 28 00 FF FF */ cmplwi r0, 0xffff
|
||||
/* 8030CF24 40 82 00 0C */ bne lbl_8030CF30
|
||||
lbl_8030CF28:
|
||||
/* 8030CF28 38 60 00 00 */ li r3, 0
|
||||
/* 8030CF2C 4E 80 00 20 */ blr
|
||||
lbl_8030CF30:
|
||||
/* 8030CF30 54 80 0B FC */ rlwinm r0, r4, 1, 0xf, 0x1e
|
||||
/* 8030CF34 7C 83 02 14 */ add r4, r3, r0
|
||||
/* 8030CF38 A0 04 00 02 */ lhz r0, 2(r4)
|
||||
/* 8030CF3C 7C 63 02 14 */ add r3, r3, r0
|
||||
/* 8030CF40 4E 80 00 20 */ blr
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
lbl_8030CE7C:
|
||||
/* 8030CE7C 94 21 FE E0 */ stwu r1, -0x120(r1)
|
||||
/* 8030CE80 7C 08 02 A6 */ mflr r0
|
||||
/* 8030CE84 90 01 01 24 */ stw r0, 0x124(r1)
|
||||
/* 8030CE88 39 61 01 20 */ addi r11, r1, 0x120
|
||||
/* 8030CE8C 48 05 53 51 */ bl _savegpr_29
|
||||
/* 8030CE90 7C 7D 1B 78 */ mr r29, r3
|
||||
/* 8030CE94 7C 9E 23 78 */ mr r30, r4
|
||||
/* 8030CE98 7F C3 F3 78 */ mr r3, r30
|
||||
/* 8030CE9C 38 80 00 01 */ li r4, 1
|
||||
/* 8030CEA0 81 9E 00 00 */ lwz r12, 0(r30)
|
||||
/* 8030CEA4 81 8C 00 10 */ lwz r12, 0x10(r12)
|
||||
/* 8030CEA8 7D 89 03 A6 */ mtctr r12
|
||||
/* 8030CEAC 4E 80 04 21 */ bctrl
|
||||
/* 8030CEB0 7F C3 F3 78 */ mr r3, r30
|
||||
/* 8030CEB4 38 81 00 08 */ addi r4, r1, 8
|
||||
/* 8030CEB8 38 A0 00 01 */ li r5, 1
|
||||
/* 8030CEBC 4B FC F3 DD */ bl read__14JSUInputStreamFPvl
|
||||
/* 8030CEC0 8B E1 00 08 */ lbz r31, 8(r1)
|
||||
/* 8030CEC4 28 1F 00 00 */ cmplwi r31, 0
|
||||
/* 8030CEC8 40 82 00 0C */ bne lbl_8030CED4
|
||||
/* 8030CECC 38 60 00 00 */ li r3, 0
|
||||
/* 8030CED0 48 00 00 28 */ b lbl_8030CEF8
|
||||
lbl_8030CED4:
|
||||
/* 8030CED4 7F C3 F3 78 */ mr r3, r30
|
||||
/* 8030CED8 38 81 00 0C */ addi r4, r1, 0xc
|
||||
/* 8030CEDC 7F E5 FB 78 */ mr r5, r31
|
||||
/* 8030CEE0 4B FC F3 B9 */ bl read__14JSUInputStreamFPvl
|
||||
/* 8030CEE4 38 00 00 00 */ li r0, 0
|
||||
/* 8030CEE8 38 81 00 0C */ addi r4, r1, 0xc
|
||||
/* 8030CEEC 7C 04 F9 AE */ stbx r0, r4, r31
|
||||
/* 8030CEF0 7F A3 EB 78 */ mr r3, r29
|
||||
/* 8030CEF4 4B FF FF 25 */ bl get__13J2DDataManageFPCc
|
||||
lbl_8030CEF8:
|
||||
/* 8030CEF8 39 61 01 20 */ addi r11, r1, 0x120
|
||||
/* 8030CEFC 48 05 53 2D */ bl _restgpr_29
|
||||
/* 8030CF00 80 01 01 24 */ lwz r0, 0x124(r1)
|
||||
/* 8030CF04 7C 08 03 A6 */ mtlr r0
|
||||
/* 8030CF08 38 21 01 20 */ addi r1, r1, 0x120
|
||||
/* 8030CF0C 4E 80 00 20 */ blr
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
lbl_8030CE18:
|
||||
/* 8030CE18 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 8030CE1C 7C 08 02 A6 */ mflr r0
|
||||
/* 8030CE20 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 8030CE24 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 8030CE28 93 C1 00 08 */ stw r30, 8(r1)
|
||||
/* 8030CE2C 7C 9E 23 78 */ mr r30, r4
|
||||
/* 8030CE30 83 E3 00 00 */ lwz r31, 0(r3)
|
||||
/* 8030CE34 48 00 00 24 */ b lbl_8030CE58
|
||||
lbl_8030CE38:
|
||||
/* 8030CE38 80 7F 00 04 */ lwz r3, 4(r31)
|
||||
/* 8030CE3C 7F C4 F3 78 */ mr r4, r30
|
||||
/* 8030CE40 48 05 BB 55 */ bl strcmp
|
||||
/* 8030CE44 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 8030CE48 40 82 00 0C */ bne lbl_8030CE54
|
||||
/* 8030CE4C 80 7F 00 00 */ lwz r3, 0(r31)
|
||||
/* 8030CE50 48 00 00 14 */ b lbl_8030CE64
|
||||
lbl_8030CE54:
|
||||
/* 8030CE54 83 FF 00 08 */ lwz r31, 8(r31)
|
||||
lbl_8030CE58:
|
||||
/* 8030CE58 28 1F 00 00 */ cmplwi r31, 0
|
||||
/* 8030CE5C 40 82 FF DC */ bne lbl_8030CE38
|
||||
/* 8030CE60 38 60 00 00 */ li r3, 0
|
||||
lbl_8030CE64:
|
||||
/* 8030CE64 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 8030CE68 83 C1 00 08 */ lwz r30, 8(r1)
|
||||
/* 8030CE6C 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 8030CE70 7C 08 03 A6 */ mtlr r0
|
||||
/* 8030CE74 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 8030CE78 4E 80 00 20 */ blr
|
||||
|
|
@ -5,11 +5,22 @@
|
|||
#include "dolphin/types.h"
|
||||
|
||||
struct J2DResReference {
|
||||
/* 8030CF10 */ void getResReference(u16) const;
|
||||
/* 8030CF44 */ void getName(u16) const;
|
||||
u16 mCount;
|
||||
u16 mOffsets[1];
|
||||
/* 8030CF10 */ s8* getResReference(u16) const;
|
||||
/* 8030CF44 */ char* getName(u16) const;
|
||||
};
|
||||
|
||||
struct J2DataManageLink {
|
||||
void* mData;
|
||||
char* mName;
|
||||
J2DataManageLink* mNext;
|
||||
};
|
||||
|
||||
class J2DDataManage {
|
||||
private:
|
||||
J2DataManageLink* mList;
|
||||
|
||||
public:
|
||||
/* 8030CE18 */ void* get(char const*);
|
||||
/* 8030CE7C */ void* get(JSUInputStream*);
|
||||
|
|
|
|||
|
|
@ -4,71 +4,85 @@
|
|||
//
|
||||
|
||||
#include "JSystem/J2DGraph/J2DManage.h"
|
||||
#include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/string.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void get__13J2DDataManageFPCc();
|
||||
extern "C" void get__13J2DDataManageFP14JSUInputStream();
|
||||
extern "C" void getResReference__15J2DResReferenceCFUs();
|
||||
extern "C" void getName__15J2DResReferenceCFUs();
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void read__14JSUInputStreamFPvl();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" void strcmp();
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* 8030CE18-8030CE7C 307758 0064+00 1/1 3/3 0/0 .text get__13J2DDataManageFPCc */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void* J2DDataManage::get(char const* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J2DGraph/J2DManage/get__13J2DDataManageFPCc.s"
|
||||
void* J2DDataManage::get(char const* name) {
|
||||
for (J2DataManageLink* link = mList; link != NULL; link = link->mNext) {
|
||||
if (strcmp(link->mName, name) == 0) {
|
||||
return link->mData;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8030CE7C-8030CF10 3077BC 0094+00 0/0 1/1 0/0 .text get__13J2DDataManageFP14JSUInputStream */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void* J2DDataManage::get(JSUInputStream* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J2DGraph/J2DManage/get__13J2DDataManageFP14JSUInputStream.s"
|
||||
void* J2DDataManage::get(JSUInputStream* inputStream) {
|
||||
inputStream->skip(1);
|
||||
u8 nameLen = inputStream->readU8();
|
||||
if (nameLen == 0) {
|
||||
return NULL;
|
||||
} else {
|
||||
char nameBuffer[257];
|
||||
inputStream->read(&nameBuffer, nameLen);
|
||||
nameBuffer[nameLen] = 0;
|
||||
return this->get(nameBuffer);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8030CF10-8030CF44 307850 0034+00 1/1 2/2 0/0 .text getResReference__15J2DResReferenceCFUs */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J2DResReference::getResReference(u16 param_0) const {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J2DGraph/J2DManage/getResReference__15J2DResReferenceCFUs.s"
|
||||
s8* J2DResReference::getResReference(u16 idx) const {
|
||||
if (mCount <= idx || idx == 0xFFFF) {
|
||||
return NULL;
|
||||
} else {
|
||||
return (((s8*)this) + mOffsets[idx]);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804349C0-80434AC8 0616E0 0101+07 1/1 0/0 0/0 .bss p_name$494 */
|
||||
static u8 p_name[257 + 7 /* padding */];
|
||||
static char p_name[257];
|
||||
|
||||
/* 8030CF44-8030D098 307884 0154+00 0/0 2/2 0/0 .text getName__15J2DResReferenceCFUs */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J2DResReference::getName(u16 param_0) const {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J2DGraph/J2DManage/getName__15J2DResReferenceCFUs.s"
|
||||
char* J2DResReference::getName(u16 idx) const {
|
||||
s8* resRef = this->getResReference(idx);
|
||||
if (resRef == NULL) {
|
||||
p_name[0] = 0;
|
||||
return p_name;
|
||||
} else {
|
||||
s8 first = resRef[0];
|
||||
switch (first) {
|
||||
case 2:
|
||||
case 3:
|
||||
for (s32 i = 0; i < resRef[1]; i++) {
|
||||
p_name[i] = resRef[2 + i];
|
||||
}
|
||||
p_name[resRef[1]] = 0;
|
||||
break;
|
||||
case 4:
|
||||
s32 pos = resRef[1] + 1;
|
||||
for (; pos >= 2; pos--) {
|
||||
if (resRef[pos] == '\\' || resRef[pos] == '/') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
s32 i = 0;
|
||||
pos++;
|
||||
for (; pos < resRef[1] + 2; i++, pos++) {
|
||||
p_name[i] = resRef[pos];
|
||||
}
|
||||
p_name[i] = 0;
|
||||
|
||||
break;
|
||||
default:
|
||||
p_name[0] = 0;
|
||||
}
|
||||
return p_name;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
|
|
|||
Loading…
Reference in New Issue