If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
Notes:Super Tetris 2 + Bombliss (PC-98)
Jump to navigation
Jump to search
This page contains notes for the game Super Tetris 2 + Bombliss (PC-98).
Python 3 script for extracting graphics from RGB.DB and RGB.CNT: (requires Pillow)
#!/usr/bin/env python3 # Super Tetris 2 + Bombliss (PC-98) image unpacker # by Revenant import struct, math from PIL import Image entries = [] with open("RGB.CNT", 'rb') as cnt: while True: try: name, offset = struct.unpack("16sI", cnt.read(20)) endpos = name.find(0) if endpos >= 0: name = name[:endpos] name = name.decode('ascii', 'ignore') entries.append((name, offset)) except struct.error: break with open("RGB.DB", 'rb') as db: for entry in entries: # seek db.seek(entry[1], 0) # get num. of colors num_colors = db.read(1)[0] colors = [0] * 768 for i in range(3 * num_colors): colors[i] = db.read(1)[0] colors[i] |= (colors[i] << 4) # get image dimensions width, height = struct.unpack("II", db.read(8)) stride = math.ceil(width / 8) # get bitplanes bitplanes = [] for i in range(4): bitplanes.append(db.read(stride * height)) imagedata = [] for y in range(height): for x in range(width): offset = (y * stride) + (x // 8) mask = 1 << (7 - (x % 8)) byte = 0 for p in range(4): if bitplanes[p][offset] & mask: byte |= (1 << p) imagedata.append(byte) image = Image.frombytes('P', (width, height), bytes(imagedata)) image.putpalette(bytes(colors)) image.save(entry[0] + '.png') print("%s (%dx%d)" % (entry[0], width, height))