Skip to content

Commit 35dc090

Browse files
committed
Bug fixes
1 parent 7e26252 commit 35dc090

10 files changed

Lines changed: 185 additions & 84 deletions

File tree

Z64 Utils/Common/Filters.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ public static class Filters
1313
public const string N64 = "N64 Rom(*.n64; *.z64)|*.n64;*.z64";
1414
public const string BIN = "Bin Files (*.bin)|*.bin";
1515
public const string JSON = "JSON Files (*.json)|*.json";
16+
public const string C = "C Files (*.c)|*.c";
1617
}
1718
}

Z64 Utils/Forms/ObjectAnalyzerForm.Designer.cs

Lines changed: 51 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Z64 Utils/Forms/ObjectAnalyzerForm.cs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,5 +228,82 @@ private void importJSONToolStripMenuItem_Click(object sender, EventArgs e)
228228
UpdateMap();
229229
}
230230
}
231+
232+
private void exportCToolStripMenuItem_Click(object sender, EventArgs e)
233+
{
234+
saveFileDialog1.FileName = "";
235+
saveFileDialog1.Filter = Filters.C;
236+
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
237+
{
238+
StringWriter sw = new StringWriter();
239+
foreach (var entry in _obj.Entries)
240+
{
241+
int entryOff = _obj.OffsetOf(entry);
242+
switch (entry.GetEntryType())
243+
{
244+
case Z64Object.EntryType.DList:
245+
{
246+
sw.WriteLine($"Gfx dlist_{entryOff:X8}[] = \r\n{{");
247+
bool oldStatic = RDPDisassembler.Configuration.Static;
248+
249+
RDPDisassembler.Configuration.Static = true;
250+
RDPDisassembler dis = new RDPDisassembler(entry.GetData(), new SegmentedAddress(_segment, _obj.OffsetOf(entry)).VAddr);
251+
dis.Disassemble().ForEach(l => sw.WriteLine($" {l}")); ;
252+
253+
RDPDisassembler.Configuration.Static = oldStatic;
254+
sw.WriteLine("};");
255+
break;
256+
}
257+
case Z64Object.EntryType.Vertex:
258+
{
259+
sw.WriteLine($"Vtx_t vertices_{entryOff:X8}[] = \r\n{{");
260+
261+
var vtx = (Z64Object.VertexHolder)entry;
262+
vtx.Vertices.ForEach(v => sw.WriteLine($" {{ {v.X}, {v.Y}, {v.Z}, 0x{v.Flag:X4}, {v.TexX}, {v.TexY}, {v.R}, {v.G}, {v.B}, {v.A} }},"));
263+
264+
sw.WriteLine("};");
265+
break;
266+
}
267+
case Z64Object.EntryType.Texture:
268+
{
269+
sw.WriteLine($"u8 tex_{entryOff:X8}[] = \r\n{{");
270+
271+
var tex = entry.GetData();
272+
for (int i = 0; i < tex.Length; i+= 16)
273+
{
274+
sw.Write(" ");
275+
for (int j = 0; j < 16 && i + j < tex.Length; j++)
276+
sw.Write($"0x{tex[i + j]:X2}, ");
277+
sw.Write("\r\n");
278+
}
279+
280+
sw.WriteLine("};");
281+
break;
282+
}
283+
case Z64Object.EntryType.Unknown:
284+
{
285+
sw.WriteLine($"u8 unk_{entryOff:X8}[] = \r\n{{");
286+
287+
var bytes = entry.GetData();
288+
for (int i = 0; i < bytes.Length; i += 16)
289+
{
290+
sw.Write(" ");
291+
for (int j = 0; j < 16 && i+j < bytes.Length; j++)
292+
sw.Write($"0x{bytes[i + j]:X2}, ");
293+
sw.Write("\r\n");
294+
}
295+
296+
sw.WriteLine("};");
297+
break;
298+
}
299+
default: throw new Exception("Invalid Entry Type");
300+
}
301+
302+
sw.Write("\r\n");
303+
}
304+
305+
File.WriteAllText(saveFileDialog1.FileName, sw.ToString());
306+
}
307+
}
231308
}
232309
}

Z64 Utils/N64/N64Texture.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,8 @@ private static byte[] DecodeI4(int texels, byte[] inBuff)
276276
ret[t * 4 + 0] = b;
277277
ret[t * 4 + 1] = b;
278278
ret[t * 4 + 2] = b;
279-
ret[t * 4 + 3] = b;
279+
ret[t * 4 + 3] = 0xFF;
280+
//ret[t * 4 + 3] = b;
280281

281282
b = (byte)((inBuff[t] & 0xF) * 0x11);
282283
ret[t * 4 + 4] = b;

Z64 Utils/Program.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ static class Program
1818
[STAThread]
1919
static void Main()
2020
{
21-
2221
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
2322

2423
Z64Version.LoadRessources();

0 commit comments

Comments
 (0)