mirror of
https://github.com/izzy2lost/Torch.git
synced 2026-07-06 00:18:35 -07:00
Translated branch to dlist + end_dl
This commit is contained in:
@@ -291,10 +291,12 @@ ExportResult DListBinaryExporter::Export(std::ostream &write, std::shared_ptr<IP
|
||||
}
|
||||
|
||||
if(opcode == GBI(G_DL)) {
|
||||
Gfx value;
|
||||
auto ptr = w1;
|
||||
auto dec = Companion::Instance->GetNodeByAddr(ptr);
|
||||
auto branch = (w0 >> 16) & G_DL_NO_PUSH;
|
||||
|
||||
Gfx value = gsSPDisplayListOTRHash(ptr);
|
||||
value = gsSPDisplayListOTRHash(ptr);
|
||||
w0 = value.words.w0;
|
||||
w1 = value.words.w1;
|
||||
|
||||
@@ -309,6 +311,15 @@ ExportResult DListBinaryExporter::Export(std::ostream &write, std::shared_ptr<IP
|
||||
} else {
|
||||
SPDLOG_WARN("Could not find display list at 0x{:X}", ptr);
|
||||
}
|
||||
|
||||
if(branch){
|
||||
writer.Write(w0);
|
||||
writer.Write(w1);
|
||||
|
||||
value = gsSPRawOpcode(GBI(G_ENDDL));
|
||||
w0 = value.words.w0;
|
||||
w1 = value.words.w1;
|
||||
}
|
||||
}
|
||||
|
||||
if(opcode == GBI(G_MOVEMEM)) {
|
||||
|
||||
+4
-1
@@ -131,6 +131,9 @@ _DW({
|
||||
#define gsSPVertexOTR(v, n, v0) \
|
||||
{ (_SHIFTL(G_VTX_OTR_HASH, 24, 8) | _SHIFTL((n), 12, 8) | _SHIFTL((v0) + (n), 1, 7)), (uintptr_t)(v) }
|
||||
|
||||
#define gsSPRawOpcode(opcode) \
|
||||
{ _SHIFTL(opcode, 24, 8), 0 }
|
||||
|
||||
#define gsDPSetTextureOTRImage(fmt, siz, width, i) \
|
||||
{{ \
|
||||
_SHIFTL(G_SETTIMG_OTR_HASH, 24, 8) | _SHIFTL(fmt, 21, 3) | \
|
||||
@@ -141,7 +144,7 @@ _DW({
|
||||
#define gsSPBranchListOTRHash(dl) \
|
||||
{{ \
|
||||
(_SHIFTL((G_DL_OTR_HASH), 24, 8) | _SHIFTL((0x01), 16, 8) | \
|
||||
_SHIFTL((0), 0, 16)), \
|
||||
_SHIFTL((0), 1, 16)), \
|
||||
(uintptr_t)(dl) \
|
||||
}}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user