from playscii.art import TileIter from playscii.art_export import ArtExporter class ANSExporter(ArtExporter): format_name = "ATASCII" format_description = """ ATARI 8-bit computer version of ASCII. Assumes ATASCII character set and Atari palette. Any tile with non-black background will be considered inverted. """ file_extension = "ata" def run_export(self, out_filename, options): # binary file; encoding into ANSI bytes happens just before write self.outfile = open(out_filename, "wb") for frame, layer, x, y in TileIter(self.art): # only read from layer 0 of frame 0 if layer > 0 or frame > 0: continue ch, fg, bg, _ = self.art.get_tile_at(frame, layer, x, y) # swap char indices 0 (heart) and 32 (blank space) if ch == 0: ch = 32 elif ch == 32: ch = 0 # non-black (color 1) background = use inverted set if bg > 1: ch += 128 self.outfile.write(bytes([ch])) # line break if x == self.art.width - 1: self.outfile.write(bytes([155])) self.outfile.close() return True