Skip to content

Commit

Permalink
Merge pull request #213 from kurethedead/f3d_image_key_bug
Browse files Browse the repository at this point in the history
Fixed save_textures() error when "Save Textures As PNGs" is enabled
  • Loading branch information
thecozies committed Feb 18, 2023
2 parents f5ffd2b + eb5a964 commit 2d9f0c2
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 17 deletions.
28 changes: 15 additions & 13 deletions fast64_internal/f3d/f3d_gbi.py
Original file line number Diff line number Diff line change
Expand Up @@ -2455,8 +2455,8 @@ def set_addr(self, startAddress):
if not startAddrSet:
startAddrSet = True
startAddress = addrRange[0]
for info, texture in self.textures.items():
addrRange = texture.set_addr(addrRange[1])
for _, fImage in self.textures.items():
addrRange = fImage.set_addr(addrRange[1])
if not startAddrSet:
startAddrSet = True
startAddress = addrRange[0]
Expand All @@ -2480,8 +2480,8 @@ def set_addr(self, startAddress):
def save_binary(self, romfile, segments):
for name, light in self.lights.items():
light.save_binary(romfile)
for info, texture in self.textures.items():
texture.save_binary(romfile)
for _, fImage in self.textures.items():
fImage.save_binary(romfile)
for materialKey, (fMaterial, texDimensions) in self.materials.items():
fMaterial.save_binary(romfile, self.f3d, segments)
for name, mesh in self.meshes.items():
Expand All @@ -2505,11 +2505,11 @@ def to_c_textures(self, texCSeparate, savePNG, texDir, texArrayBitSize):
if len(texDir) > 0 and texDir[-1] != "/":
texDir += "/"
data = CData()
for info, texture in self.textures.items():
for _, fImage in self.textures.items():
if savePNG:
data.append(texture.to_c_tex_separate(texDir, texArrayBitSize))
data.append(fImage.to_c_tex_separate(texDir, texArrayBitSize))
else:
data.append(texture.to_c(texArrayBitSize))
data.append(fImage.to_c(texArrayBitSize))
return data

def to_c_materials(self, gfxFormatter):
Expand Down Expand Up @@ -2609,13 +2609,15 @@ def to_c_gfx_scroll(self, gfxFormatter: GfxFormatter) -> CScrollData:
def save_textures(self, exportPath):
# TODO: Saving texture should come from FImage
texturesSaved = 0
for (image, texInfo), texture in self.textures.items():
if texInfo[1] == "PAL":
for imageKey, fImage in self.textures.items():
if isinstance(imageKey, FPaletteKey):
continue
imageKey: FImageKey

# remove '.inc.c'
imageFileName = texture.filename[:-6] + ".png"
imageFileName = fImage.filename[:-6] + ".png"

image = imageKey.image
isPacked = image.packed_file is not None
if not isPacked:
image.pack()
Expand Down Expand Up @@ -2648,11 +2650,11 @@ def to_c(self, savePNG, texDir, gfxFormatter):
# on windows this results in '\', which is incorrect (should be '/')
if texDir[-1] != "/":
texDir += "/"
for info, texture in self.textures.items():
for _, fImage in self.textures.items():
if savePNG:
staticData.append(texture.to_c_tex_separate(texDir, gfxFormatter.texArrayBitSize))
staticData.append(fImage.to_c_tex_separate(texDir, gfxFormatter.texArrayBitSize))
else:
staticData.append(texture.to_c(gfxFormatter.texArrayBitSize))
staticData.append(fImage.to_c(gfxFormatter.texArrayBitSize))
dynamicData.append(self.draw.to_c(self.f3d))
return ExportCData(staticData, dynamicData, CData())

Expand Down
4 changes: 2 additions & 2 deletions fast64_internal/f3d/f3d_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2332,8 +2332,8 @@ def compactNibbleArray(texture, width, height):

def checkDuplicateTextureName(fModelOrTexRect, name):
names = []
for info, texture in fModelOrTexRect.textures.items():
names.append(texture.name)
for _, fImage in fModelOrTexRect.textures.items():
names.append(fImage.name)
while name in names:
name = name + "_copy"
return name
Expand Down
4 changes: 2 additions & 2 deletions fast64_internal/sm64/sm64_f3d_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,8 +180,8 @@ def exportTexRectToC(dirPath, texProp, f3dType, isHWv1, texDir, savePNG, name, e
fTexRect.save_textures(seg2TexDir, not savePNG)

textures = []
for info, texture in fTexRect.textures.items():
textures.append(texture)
for _, fImage in fTexRect.textures.items():
textures.append(fImage)

# Append/Overwrite texture definition to segment2.c
overwriteData("const\s*u8\s*", textures[0].name, data, seg2CPath, None, False)
Expand Down

0 comments on commit 2d9f0c2

Please sign in to comment.