From 5a907cdf8c463e3499dac85ce0af904883e64e6e Mon Sep 17 00:00:00 2001 From: Lila Date: Sun, 15 Sep 2024 11:34:37 +0100 Subject: [PATCH 1/2] [SM64] Bring binary dl exporter up-to-date MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add bleed and inline support. Assert for fmeshes len No longer use getDrawLayerV3, yes it doesn´t matter here but it was the last bit of code to use it, with permission I'd like to remove the function --- fast64_internal/sm64/sm64_f3d_writer.py | 51 ++++++++++++++++++++----- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/fast64_internal/sm64/sm64_f3d_writer.py b/fast64_internal/sm64/sm64_f3d_writer.py index ab69b095f..728fd3484 100644 --- a/fast64_internal/sm64/sm64_f3d_writer.py +++ b/fast64_internal/sm64/sm64_f3d_writer.py @@ -488,10 +488,20 @@ def sm64ExportF3DtoC( def exportF3DtoBinary(romfile, exportRange, transformMatrix, obj, segmentData, includeChildren): - fModel = SM64Model(obj.name, DLFormat, GfxMatWriteMethod.WriteDifferingAndRevert) - fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat.Static, True) - fMesh = fMeshes[fModel.getDrawLayerV3(obj)] + inline = bpy.context.scene.exportInlineF3D + fModel = SM64Model( + obj.name, + DLFormat, + GfxMatWriteMethod.WriteDifferingAndRevert if not inline else GfxMatWriteMethod.WriteAll, + ) + fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat, True) + + if inline: + bleed_gfx = BleedGraphics() + bleed_gfx.bleed_fModel(fModel, fMeshes) fModel.freePalettes() + assert len(fMeshes) == 1, "Less or more than one fmesh" + fMesh = list(fMeshes.values())[0] addrRange = fModel.set_addr(exportRange[0]) if addrRange[1] > exportRange[1]: @@ -508,9 +518,21 @@ def exportF3DtoBinary(romfile, exportRange, transformMatrix, obj, segmentData, i def exportF3DtoBinaryBank0(romfile, exportRange, transformMatrix, obj, RAMAddr, includeChildren): - fModel = SM64Model(obj.name, DLFormat, GfxMatWriteMethod.WriteDifferingAndRevert) - fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat.Static, True) - fMesh = fMeshes[fModel.getDrawLayerV3(obj)] + inline = bpy.context.scene.exportInlineF3D + fModel = SM64Model( + obj.name, + DLFormat, + GfxMatWriteMethod.WriteDifferingAndRevert if not inline else GfxMatWriteMethod.WriteAll, + ) + fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat, True) + + if inline: + bleed_gfx = BleedGraphics() + bleed_gfx.bleed_fModel(fModel, fMeshes) + fModel.freePalettes() + assert len(fMeshes) == 1, "Less or more than one fmesh" + fMesh = list(fMeshes.values())[0] + segmentData = copy.copy(bank0Segment) data, startRAM = getBinaryBank0F3DData(fModel, RAMAddr, exportRange) @@ -528,9 +550,20 @@ def exportF3DtoBinaryBank0(romfile, exportRange, transformMatrix, obj, RAMAddr, def exportF3DtoInsertableBinary(filepath, transformMatrix, obj, includeChildren): - fModel = SM64Model(obj.name, DLFormat, GfxMatWriteMethod.WriteDifferingAndRevert) - fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat.Static, True) - fMesh = fMeshes[fModel.getDrawLayerV3(obj)] + inline = bpy.context.scene.exportInlineF3D + fModel = SM64Model( + obj.name, + DLFormat, + GfxMatWriteMethod.WriteDifferingAndRevert if not inline else GfxMatWriteMethod.WriteAll, + ) + fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat, True) + + if inline: + bleed_gfx = BleedGraphics() + bleed_gfx.bleed_fModel(fModel, fMeshes) + fModel.freePalettes() + assert len(fMeshes) == 1, "Less or more than one fmesh" + fMesh = list(fMeshes.values())[0] data, startRAM = getBinaryBank0F3DData(fModel, 0, [0, 0xFFFFFF]) # must happen after getBinaryBank0F3DData From 507abc6ed9f019f675a7b323a55a0c9a2e77ef6d Mon Sep 17 00:00:00 2001 From: Lila Date: Thu, 9 Jan 2025 16:35:36 +0000 Subject: [PATCH 2/2] DLFormat.Static --- fast64_internal/sm64/sm64_f3d_writer.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fast64_internal/sm64/sm64_f3d_writer.py b/fast64_internal/sm64/sm64_f3d_writer.py index 728fd3484..776c59eaa 100644 --- a/fast64_internal/sm64/sm64_f3d_writer.py +++ b/fast64_internal/sm64/sm64_f3d_writer.py @@ -491,10 +491,10 @@ def exportF3DtoBinary(romfile, exportRange, transformMatrix, obj, segmentData, i inline = bpy.context.scene.exportInlineF3D fModel = SM64Model( obj.name, - DLFormat, + DLFormat.Static, GfxMatWriteMethod.WriteDifferingAndRevert if not inline else GfxMatWriteMethod.WriteAll, ) - fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat, True) + fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat.Static, True) if inline: bleed_gfx = BleedGraphics() @@ -521,10 +521,10 @@ def exportF3DtoBinaryBank0(romfile, exportRange, transformMatrix, obj, RAMAddr, inline = bpy.context.scene.exportInlineF3D fModel = SM64Model( obj.name, - DLFormat, + DLFormat.Static, GfxMatWriteMethod.WriteDifferingAndRevert if not inline else GfxMatWriteMethod.WriteAll, ) - fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat, True) + fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat.Static, True) if inline: bleed_gfx = BleedGraphics() @@ -553,10 +553,10 @@ def exportF3DtoInsertableBinary(filepath, transformMatrix, obj, includeChildren) inline = bpy.context.scene.exportInlineF3D fModel = SM64Model( obj.name, - DLFormat, + DLFormat.Static, GfxMatWriteMethod.WriteDifferingAndRevert if not inline else GfxMatWriteMethod.WriteAll, ) - fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat, True) + fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat.Static, True) if inline: bleed_gfx = BleedGraphics()