def updateGraphicsBanks(self, romdata):
     self.banks = []
     bankAddresses = []
     for bankNum in range(0, self.BANK_AMOUNT):
         bankPointer = self.GRAPHICS_BANK_HEADER_ADDRESS + (bankNum * 8)
         bankAddresses.append(DataCompressor.readSnesPointer(romdata, bankPointer))
         bankAddresses.append(DataCompressor.readSnesPointer(romdata, bankPointer + 3))
     for bankNum in range(0, self.BANK_AMOUNT*2):
         bankData = DataCompressor.decompress(romdata, bankAddresses[bankNum])
         hasPalettes = True
         if (bankNum % 2):
             hasPalettes = False
         bank = GraphicBank(bankData, hasPalettes)
         if not hasPalettes:
             bank.setPalettes(self.banks[bankNum-1].getPalettes())
         bank.updateImage(self.DEFAULT_BANK_PALETTE)
         self.banks.append(bank)
Beispiel #2
0
 def update(self, romdata):
     assert self.levelHeaderAddress >= 0
     assert self.levelNumber >= 0
     # level header amount might be changeable if some level data is moved around
     assert self.levelNumber < self.LEVEL_HEADER_AMOUNT
     self.levelPointer = DataCompressor.readSnesPointer(romdata, self.levelHeaderAddress)
     self.graphicsBankIndex = romdata[self.levelHeaderAddress + 0x03]
     self.fieldNumber = romdata[self.levelHeaderAddress + 0x04]
     self.musicSelect = romdata[self.levelHeaderAddress + 0x05]
     self.enemyType[0] = romdata[self.levelHeaderAddress + 0x06]
     self.enemyType[1] = romdata[self.levelHeaderAddress + 0x07]
     self.enemyType[2] = romdata[self.levelHeaderAddress + 0x08]
     self.enemyType[3] = romdata[self.levelHeaderAddress + 0x09]
     self.enemyType[4] = romdata[self.levelHeaderAddress + 0x0A]
     self.enemyType[5] = romdata[self.levelHeaderAddress + 0x0B]
     self.waterHeight = romdata[self.levelHeaderAddress + 0x1C]
     self.waterType = romdata[self.levelHeaderAddress + 0x1D]
     self.levelTimer = DataCompressor.readSnesPointer(romdata, self.levelHeaderAddress + 0x1F)
     self.doorExits[0] = romdata[self.levelHeaderAddress + 0x21]
     self.doorExits[1] = romdata[self.levelHeaderAddress + 0x22]
     self.doorExits[2] = romdata[self.levelHeaderAddress + 0x23]
     self.doorExits[3] = romdata[self.levelHeaderAddress + 0x24]
Beispiel #3
0
 def setTileIndex(self, leveldata):
     offset = (self.LEVEL_TILE_AMOUNT * 3) + 2
     tileIndexBytes = leveldata[offset : offset + self.LEVEL_TILE_INDEX_SIZE]
     self.tileIndex = DataCompressor.byteListIntoBitList(tileIndexBytes, False)
 def openLevel(self, romdata, levelNumber):
     self.levelHeader = LevelHeader(levelNumber)
     self.levelHeader.update(romdata)
     levelData = DataCompressor.decompress(romdata, self.levelHeader.levelPointer)
     self.level = Level(self.levelHeader)
     self.level.update(levelData)