"""Atari 7800 conversion dispatch. The 7800's MARIA chip has its own architecture (display lists + zones + objects), nothing like ANTIC/GTIA -- but its 160A graphics mode is 2 bits/pixel, 4 px/byte, exactly the packing of ANTIC mode E (Atari GR.15). So the per-mode encoders pack 160x192 2bpp bitmaps the same way GR.15 does and reuse the Atari 256-colour NTSC palette + dither-aware selection; the MARIA-specific display lists are built by the cartridge packer (viewer/assemble.py). Modes: ``c160`` = 25-colour 160A (8 MARIA palettes, per-segment palette choice); ``mono`` = luminance two-tone / tinted. """ from __future__ import annotations from ... import imageprep from . import c160, mono _MODULES = {"c160": c160, "mono": mono} MODES = list(_MODULES.keys()) def convert_image(path_or_img, mode="c160", palette_name="ntsc", dither_mode="floyd", intensive=False, prep_opt=None, base_color=None): prep_opt = prep_opt or imageprep.PrepOptions() module = _MODULES.get(mode, c160) img_rgb = imageprep.prepare(path_or_img, module.WIDTH, module.HEIGHT, module.PIXEL_ASPECT, prep_opt, border_rgb=(0, 0, 0)) return module.convert(img_rgb, palette_name, dither_mode, intensive, base_color=base_color)