def writeCreditsFontToProject(self, resourceOpener): arr = EbArrangement(16, 12) for i in range(192): arr[i%16, i/16] = (False, False, False, self._CREDITS_PREVIEW_SUBPALS[i], i) img = arr.toImage(self._cfont, self._cpal) with resourceOpener("Fonts/credits", "png") as imgFile: img.save(imgFile, "png") imgFile.close()
def readFromRom(self, rom): self._bbgTbl.readFromRom(rom) pct = 50.0/(6+self._bbgTbl.height()) self._bbgGfxPtrTbl.readFromRom(rom, EbModule.toRegAddr(EbModule.readAsmPointer(rom, self._ASMPTRS_GFX[0]))) updateProgress(pct) self._bbgArrPtrTbl.readFromRom(rom, EbModule.toRegAddr(EbModule.readAsmPointer(rom, self._ASMPTRS_ARR[0]))) updateProgress(pct) self._bbgPalPtrTbl.readFromRom(rom, EbModule.toRegAddr(EbModule.readAsmPointer(rom, self._ASMPTRS_PAL[0]))) updateProgress(pct) self._bbgGfxArrs = [ None for i in range(self._bbgGfxPtrTbl.height()) ] self._bbgPals = [ None for i in range(self._bbgPalPtrTbl.height()) ] updateProgress(pct) self._bbgScrollTbl.readFromRom(rom) updateProgress(pct) self._bbgDistorTbl.readFromRom(rom) updateProgress(pct) for i in range(self._bbgTbl.height()): gfxNum = self._bbgTbl[i,0].val() colorDepth = self._bbgTbl[i,2].val() if (self._bbgGfxArrs[gfxNum] == None): # Max size used in rom: 421 (2bpp) 442 (4bpp) tg = EbTileGraphics(512, 8, colorDepth) with EbCompressedData() as tgb: tgb.readFromRom(rom, EbModule.toRegAddr( self._bbgGfxPtrTbl[gfxNum,0].val())) tg.readFromBlock(tgb) a = EbArrangement(32, 32) with EbCompressedData() as ab: ab.readFromRom(rom, EbModule.toRegAddr( self._bbgArrPtrTbl[gfxNum,0].val())) a.readFromBlock(ab) self._bbgGfxArrs[gfxNum] = (tg, a) palNum = self._bbgTbl[i,1].val() if (self._bbgPals[palNum] == None): with DataBlock(32) as pb: pb.readFromRom(rom, EbModule.toRegAddr(self._bbgPalPtrTbl[palNum,0].val())) p = EbPalettes(1, 16) p.readFromBlock(pb) self._bbgPals[palNum] = p updateProgress(pct)
def writeToProject(self, resourceOpener): arr1 = EbArrangement(16, 26) for i in range(416): arr1[i%16,i/16] = (False, False, False, self._PREVIEW_SUBPALS[i], i) i = 0 for pal in self._flavPals: with resourceOpener("WindowGraphics/Windows1_" + str(i), "png") as imgFile: img1 = arr1.toImage(self._gfx1, pal) img1.save(imgFile, "png") with resourceOpener("WindowGraphics/Windows2_" + str(i), "png") as imgFile: img2 = self._gfx2.dumpToImage(pal.getSubpal(7), width=7) img2.save(imgFile, "png") i += 1 updateProgress(40) # Write names with resourceOpener("WindowGraphics/flavor_names", "txt") as f: for ptr, field in self._flavNames: print >>f, field.dump() updateProgress(10)
def readFromProject(self, resourceOpener): self._bbgTbl.readFromProject(resourceOpener) pct = 50.0/(2+self._bbgTbl.height()) self._bbgScrollTbl.readFromProject(resourceOpener) updateProgress(pct) self._bbgDistorTbl.readFromProject(resourceOpener) updateProgress(pct) self._bbgGfxArrs = [] self._bbgPals = [] for i in range(self._bbgTbl.height()): img = Image.open( resourceOpener('BattleBGs/' + str(i).zfill(3), 'png')) if img.mode != 'P': raise RuntimeError("BattleBG #" + str(i).zfill(3) + " is not an indexed PNG.") np = EbPalettes(1, 16) colorDepth = self._bbgTbl[i,2].val() # Max size used in rom: 421 (2bpp) 442 (4bpp) ntg = EbTileGraphics(512, 8, colorDepth) na = EbArrangement(32, 32) na.readFromImage(img, np, ntg) j=0 for (tg, a) in self._bbgGfxArrs: if (tg == ntg) and (a == na): self._bbgTbl[i,0].setVal(j) break j += 1 else: self._bbgGfxArrs.append((ntg, na)) self._bbgTbl[i,0].setVal(j) j=0 for p in self._bbgPals: if (p == np): self._bbgTbl[i,1].setVal(j) break j += 1 else: self._bbgPals.append((np)) self._bbgTbl[i,1].setVal(j) updateProgress(pct)