mirror of
https://github.com/izzy2lost/Torch.git
synced 2026-07-06 00:18:35 -07:00
Add option to process DLs with indexes instead of offsets (#131)
* Update DisplayListFactory.cpp * Update gbi-otr.h * Update gbi-otr.h * Update DisplayListFactory.cpp * Update gbi-otr.h * Update DisplayListFactory.cpp * Update gbi-otr.h * Update gbi-otr.h * Update DisplayListFactory.cpp * Update gbi-otr.h * Update DisplayListFactory.cpp
This commit is contained in:
@@ -296,9 +296,23 @@ ExportResult DListBinaryExporter::Export(std::ostream &write, std::shared_ptr<IP
|
||||
auto dec = Companion::Instance->GetNodeByAddr(ptr);
|
||||
auto branch = (w0 >> 16) & G_DL_NO_PUSH;
|
||||
|
||||
value = gsSPDisplayListOTRHash(ptr);
|
||||
w0 = value.words.w0;
|
||||
w1 = value.words.w1;
|
||||
Gfx value;
|
||||
if (node["otr_mode"]) {
|
||||
auto str = node["otr_mode"].as<std::string>();
|
||||
// Too lower case
|
||||
std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c){ return std::tolower(c); });
|
||||
if (str == "index") {
|
||||
value = gsSPDisplayListOTRIndex(w1);
|
||||
} else {
|
||||
value = gsSPDisplayListOTRHash(ptr);
|
||||
}
|
||||
w0 = value.words.w0;
|
||||
w1 = value.words.w1;
|
||||
} else {
|
||||
value = gsSPDisplayListOTRHash(ptr);
|
||||
w0 = value.words.w0;
|
||||
w1 = value.words.w1;
|
||||
}
|
||||
|
||||
writer.Write(w0);
|
||||
writer.Write(w1);
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#define G_MTX_OTR 0x36
|
||||
#define G_TEXRECT_WIDE 0x37
|
||||
#define G_FILLWIDERECT 0x38
|
||||
#define G_DL_OTR_INDEX 0x3D
|
||||
#define G_MOVEMEM_OTR_HASH 0x42
|
||||
|
||||
// DL FLAGS
|
||||
@@ -162,6 +163,13 @@ _DW({
|
||||
(uintptr_t)(dl) \
|
||||
}}
|
||||
|
||||
#define gsSPDisplayListOTRIndex(dl) \
|
||||
{{ \
|
||||
(_SHIFTL((G_DL_OTR_INDEX), 24, 8) | _SHIFTL((0x00), 16, 8) | \
|
||||
_SHIFTL((0), 0, 16)), \
|
||||
(uintptr_t)((SEGMENT_NUMBER(dl) << 24) | ((SEGMENT_OFFSET(dl) / 8) & 0x00FFFFFF)) \
|
||||
}}
|
||||
|
||||
#define gsSPDisplayListOTRFilePath(dl) \
|
||||
{{ \
|
||||
(_SHIFTL((G_DL_OTR_FILEPATH), 24, 8) | _SHIFTL((0x00), 16, 8) | \
|
||||
|
||||
Reference in New Issue
Block a user