mirror of https://github.com/zeldaret/tp.git
Match J2DScreen::getResReference and improve J2DScreen::createMaterial
This commit is contained in:
parent
6e05f7133b
commit
eda70a786e
|
@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes)
|
|||
.init | 97.972973% | 9280 | 9472
|
||||
.extab | 100.000000% | 96 | 96
|
||||
.extabindex | 100.000000% | 96 | 96
|
||||
.text | 22.050391% | 793052 | 3596544
|
||||
.text | 22.057397% | 793304 | 3596544
|
||||
.ctors | 100.000000% | 448 | 448
|
||||
.dtors | 100.000000% | 32 | 32
|
||||
.rodata | 100.000000% | 193856 | 193856
|
||||
.data | 100.000000% | 197632 | 197632
|
||||
.sdata | 100.000000% | 1408 | 1408
|
||||
.sdata2 | 100.000000% | 20832 | 20832
|
||||
Total | 30.268274% | 1216988 | 4020672
|
||||
Total | 30.274541% | 1217240 | 4020672
|
||||
|
||||
## Total
|
||||
|
||||
Section | Percentage | Decompiled (bytes) | Total (bytes)
|
||||
---|---|---|---
|
||||
main.dol | 30.268274% | 1216988 | 4020672
|
||||
main.dol | 30.274541% | 1217240 | 4020672
|
||||
RELs | 33.041295% | 3799856 | 11500324
|
||||
Total | 32.322951% | 5016844 | 15520996
|
||||
Total | 32.324575% | 5017096 | 15520996
|
||||
|
||||
## RELs
|
||||
|
||||
|
|
|
@ -1,67 +0,0 @@
|
|||
lbl_802F9280:
|
||||
/* 802F9280 94 21 FF D0 */ stwu r1, -0x30(r1)
|
||||
/* 802F9284 7C 08 02 A6 */ mflr r0
|
||||
/* 802F9288 90 01 00 34 */ stw r0, 0x34(r1)
|
||||
/* 802F928C 39 61 00 30 */ addi r11, r1, 0x30
|
||||
/* 802F9290 48 06 8F 45 */ bl _savegpr_27
|
||||
/* 802F9294 7C 9B 23 78 */ mr r27, r4
|
||||
/* 802F9298 7C BC 2B 78 */ mr r28, r5
|
||||
/* 802F929C 7F 63 DB 78 */ mr r3, r27
|
||||
/* 802F92A0 81 9B 00 00 */ lwz r12, 0(r27)
|
||||
/* 802F92A4 81 8C 00 1C */ lwz r12, 0x1c(r12)
|
||||
/* 802F92A8 7D 89 03 A6 */ mtctr r12
|
||||
/* 802F92AC 4E 80 04 21 */ bctrl
|
||||
/* 802F92B0 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 802F92B4 7F 63 DB 78 */ mr r3, r27
|
||||
/* 802F92B8 38 80 00 04 */ li r4, 4
|
||||
/* 802F92BC 81 9B 00 00 */ lwz r12, 0(r27)
|
||||
/* 802F92C0 81 8C 00 10 */ lwz r12, 0x10(r12)
|
||||
/* 802F92C4 7D 89 03 A6 */ mtctr r12
|
||||
/* 802F92C8 4E 80 04 21 */ bctrl
|
||||
/* 802F92CC 7F 63 DB 78 */ mr r3, r27
|
||||
/* 802F92D0 38 81 00 0C */ addi r4, r1, 0xc
|
||||
/* 802F92D4 38 A0 00 04 */ li r5, 4
|
||||
/* 802F92D8 4B FE 2F C1 */ bl read__14JSUInputStreamFPvl
|
||||
/* 802F92DC 83 A1 00 0C */ lwz r29, 0xc(r1)
|
||||
/* 802F92E0 7F 63 DB 78 */ mr r3, r27
|
||||
/* 802F92E4 38 80 00 04 */ li r4, 4
|
||||
/* 802F92E8 81 9B 00 00 */ lwz r12, 0(r27)
|
||||
/* 802F92EC 81 8C 00 10 */ lwz r12, 0x10(r12)
|
||||
/* 802F92F0 7D 89 03 A6 */ mtctr r12
|
||||
/* 802F92F4 4E 80 04 21 */ bctrl
|
||||
/* 802F92F8 7F 63 DB 78 */ mr r3, r27
|
||||
/* 802F92FC 38 81 00 08 */ addi r4, r1, 8
|
||||
/* 802F9300 38 A0 00 04 */ li r5, 4
|
||||
/* 802F9304 4B FE 2F 95 */ bl read__14JSUInputStreamFPvl
|
||||
/* 802F9308 83 C1 00 08 */ lwz r30, 8(r1)
|
||||
/* 802F930C 7F 63 DB 78 */ mr r3, r27
|
||||
/* 802F9310 7C 9F F2 14 */ add r4, r31, r30
|
||||
/* 802F9314 38 A0 00 00 */ li r5, 0
|
||||
/* 802F9318 4B FE 31 C5 */ bl seek__20JSURandomInputStreamFl17JSUStreamSeekFrom
|
||||
/* 802F931C 7F BE E8 50 */ subf r29, r30, r29
|
||||
/* 802F9320 57 80 02 DF */ rlwinm. r0, r28, 0, 0xb, 0xf
|
||||
/* 802F9324 41 82 00 14 */ beq lbl_802F9338
|
||||
/* 802F9328 7F A3 EB 78 */ mr r3, r29
|
||||
/* 802F932C 4B FD 59 99 */ bl __nwa__FUl
|
||||
/* 802F9330 7C 64 1B 78 */ mr r4, r3
|
||||
/* 802F9334 48 00 00 14 */ b lbl_802F9348
|
||||
lbl_802F9338:
|
||||
/* 802F9338 7F A3 EB 78 */ mr r3, r29
|
||||
/* 802F933C 38 80 FF FC */ li r4, -4
|
||||
/* 802F9340 4B FD 59 AD */ bl __nwa__FUli
|
||||
/* 802F9344 7C 64 1B 78 */ mr r4, r3
|
||||
lbl_802F9348:
|
||||
/* 802F9348 7C 9E 23 78 */ mr r30, r4
|
||||
/* 802F934C 28 04 00 00 */ cmplwi r4, 0
|
||||
/* 802F9350 41 82 00 10 */ beq lbl_802F9360
|
||||
/* 802F9354 7F 63 DB 78 */ mr r3, r27
|
||||
/* 802F9358 7F A5 EB 78 */ mr r5, r29
|
||||
/* 802F935C 4B FE 2F 3D */ bl read__14JSUInputStreamFPvl
|
||||
lbl_802F9360:
|
||||
/* 802F9360 7F C3 F3 78 */ mr r3, r30
|
||||
/* 802F9364 39 61 00 30 */ addi r11, r1, 0x30
|
||||
/* 802F9368 48 06 8E B9 */ bl _restgpr_27
|
||||
/* 802F936C 80 01 00 34 */ lwz r0, 0x34(r1)
|
||||
/* 802F9370 7C 08 03 A6 */ mtlr r0
|
||||
/* 802F9374 38 21 00 30 */ addi r1, r1, 0x30
|
||||
/* 802F9378 4E 80 00 20 */ blr
|
|
@ -33,7 +33,6 @@ extern "C" void draw__9J2DScreenFffPC14J2DGrafContext();
|
|||
extern "C" void search__9J2DScreenFUx();
|
||||
extern "C" void searchUserInfo__9J2DScreenFUx();
|
||||
extern "C" void drawSelf__9J2DScreenFffPA3_A4_f();
|
||||
extern "C" void getResReference__9J2DScreenFP20JSURandomInputStreamUl();
|
||||
extern "C" void createMaterial__9J2DScreenFP20JSURandomInputStreamUlP10JKRArchive();
|
||||
extern "C" void isUsed__9J2DScreenFPC7ResTIMG();
|
||||
extern "C" void isUsed__9J2DScreenFPC7ResFONT();
|
||||
|
@ -575,43 +574,31 @@ asm void J2DScreen::drawSelf(f32 param_0, f32 param_1, Mtx* param_2) {
|
|||
|
||||
/* 802F9280-802F937C 2F3BC0 00FC+00 1/1 0/0 0/0 .text
|
||||
* getResReference__9J2DScreenFP20JSURandomInputStreamUl */
|
||||
// small regalloc
|
||||
#ifdef NONMATCHING
|
||||
J2DResReference* J2DScreen::getResReference(JSURandomInputStream* p_stream, u32 param_1) {
|
||||
s32 position = p_stream->getPosition();
|
||||
p_stream->skip(4);
|
||||
|
||||
s32 start, end;
|
||||
start = p_stream->readS32();
|
||||
s32 size1, size2;
|
||||
size1 = p_stream->readS32();
|
||||
p_stream->skip(4);
|
||||
end = p_stream->readS32();
|
||||
p_stream->seek(position + end, JSUStreamSeekFrom_SET);
|
||||
size2 = p_stream->readS32();
|
||||
p_stream->seek(position + size2, JSUStreamSeekFrom_SET);
|
||||
|
||||
s32 size = end - start;
|
||||
size1 = size1 - size2;
|
||||
|
||||
char* buffer;
|
||||
if (param_1 & 0x1F0000) {
|
||||
buffer = new char[size];
|
||||
buffer = new char[size1];
|
||||
} else {
|
||||
buffer = new (-4) char[size];
|
||||
buffer = new (-4) char[size1];
|
||||
}
|
||||
|
||||
if (buffer != NULL) {
|
||||
p_stream->read(buffer, size);
|
||||
p_stream->read(buffer, size1);
|
||||
}
|
||||
|
||||
return (J2DResReference*)buffer;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm J2DResReference* J2DScreen::getResReference(JSURandomInputStream* param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J2DGraph/J2DScreen/getResReference__9J2DScreenFP20JSURandomInputStreamUl.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802F937C-802F9600 2F3CBC 0284+00 1/1 0/0 0/0 .text
|
||||
* createMaterial__9J2DScreenFP20JSURandomInputStreamUlP10JKRArchive */
|
||||
|
@ -646,28 +633,31 @@ bool J2DScreen::createMaterial(JSURandomInputStream* p_stream, u32 param_1, JKRA
|
|||
u32 offset =
|
||||
buffer[0x14] << 0x18 | buffer[0x15] << 0x10 | buffer[0x16] << 8 | buffer[0x17];
|
||||
char* sec = (char*)buffer + offset;
|
||||
u16* sec_s = (u16*)sec + *(u16*)sec;
|
||||
|
||||
u16 num = sec_s[1];
|
||||
u16* sec_s = ((u16*)sec);
|
||||
u32 size = ((u16*)sec)[0]*2;
|
||||
u16 num = sec_s[size + 1];
|
||||
while (sec[num] != 0) {
|
||||
num++;
|
||||
}
|
||||
num++;
|
||||
|
||||
ResNTAB* nametab = new ResNTAB[num];
|
||||
u8* nametab = new u8[num];
|
||||
if (nametab != NULL) {
|
||||
for (u16 i = 0; i < num; i++) {
|
||||
nametab->mEntries[i].mKeyCode = sec[i];
|
||||
nametab[i] = sec[i];
|
||||
}
|
||||
|
||||
mNameTable = new JUTNameTab(nametab);
|
||||
mNameTable = new JUTNameTab((ResNTAB*)nametab);
|
||||
if (mNameTable == NULL) {
|
||||
delete[] nametab;
|
||||
} else {
|
||||
success:
|
||||
delete[] buffer;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
goto success;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue