First public commit.
This commit is contained in:
parent
2a48f52979
commit
4bac9d83ed
288 changed files with 18417 additions and 1076 deletions
20
lenser/atari/car.py
Normal file
20
lenser/atari/car.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
"""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
|
||||
Loading…
Add table
Add a link
Reference in a new issue