Skip to content

Commit

Permalink
[SM64] Bring binary dl exporter up-to-date (#459)
Browse files Browse the repository at this point in the history
* [SM64] Bring binary dl exporter up-to-date

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

* DLFormat.Static
  • Loading branch information
Lilaa3 authored Feb 11, 2025
1 parent f247e20 commit 328736d
Showing 1 changed file with 39 additions and 6 deletions.
45 changes: 39 additions & 6 deletions fast64_internal/sm64/sm64_f3d_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -488,10 +488,20 @@ def sm64ExportF3DtoC(


def exportF3DtoBinary(romfile, exportRange, transformMatrix, obj, segmentData, includeChildren):
fModel = SM64Model(obj.name, DLFormat, GfxMatWriteMethod.WriteDifferingAndRevert)
inline = bpy.context.scene.exportInlineF3D
fModel = SM64Model(
obj.name,
DLFormat.Static,
GfxMatWriteMethod.WriteDifferingAndRevert if not inline else GfxMatWriteMethod.WriteAll,
)
fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat.Static, True)
fMesh = fMeshes[fModel.getDrawLayerV3(obj)]

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]:
Expand All @@ -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)
inline = bpy.context.scene.exportInlineF3D
fModel = SM64Model(
obj.name,
DLFormat.Static,
GfxMatWriteMethod.WriteDifferingAndRevert if not inline else GfxMatWriteMethod.WriteAll,
)
fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat.Static, True)
fMesh = fMeshes[fModel.getDrawLayerV3(obj)]

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)
Expand All @@ -528,9 +550,20 @@ def exportF3DtoBinaryBank0(romfile, exportRange, transformMatrix, obj, RAMAddr,


def exportF3DtoInsertableBinary(filepath, transformMatrix, obj, includeChildren):
fModel = SM64Model(obj.name, DLFormat, GfxMatWriteMethod.WriteDifferingAndRevert)
inline = bpy.context.scene.exportInlineF3D
fModel = SM64Model(
obj.name,
DLFormat.Static,
GfxMatWriteMethod.WriteDifferingAndRevert if not inline else GfxMatWriteMethod.WriteAll,
)
fMeshes = exportF3DCommon(obj, fModel, transformMatrix, includeChildren, obj.name, DLFormat.Static, True)
fMesh = fMeshes[fModel.getDrawLayerV3(obj)]

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
Expand Down

1 comment on commit 328736d

@hajiabardarn
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi im trying to change the models of SM64 and used this video https://www.youtube.com/watch?v=2esvnWE3QsE&t=396s which is where I found your fast64 thing and I downloaded the other addon however I cannot find the file settings seen in this video which is neccesary

Image the tools in video

Image

Image

Image the tools in my blender. please help me out Dude!

Please sign in to comment.