"""Write an Atari .car cartridge image (CART header + ROM).""" from __future__ import annotations import struct TYPE_STD_16K = 2 # "Standard 16 KB cartridge" def write_car(rom: bytes, path: str, cart_type: int = TYPE_STD_16K) -> str: """Wrap a cart `rom` in the .car container (16-byte CART header + ROM). The header holds the cartridge type and a checksum (sum of all ROM bytes).""" header = bytearray(16) header[0:4] = b"CART" struct.pack_into(">I", header, 4, cart_type) struct.pack_into(">I", header, 8, sum(rom) & 0xFFFFFFFF) with open(path, "wb") as f: f.write(header) f.write(rom) return path