Skip to content

Release 4.1

Choose a tag to compare

@portwally portwally released this 03 Feb 18:23
· 5 commits to main since this release

Changelog

[4.1] - 2026-02-03

Added

  • Per-Image Conversion Settings - Lock individual settings for each image during batch export:
    • Click the lock icon in the image toolbar to save current settings for the selected image
    • Locked images display an orange lock indicator on their thumbnail
    • During batch export or disk creation, each locked image uses its saved settings
    • Unlocked images continue to use the current global settings
    • Settings are tied to the machine type (e.g., C64 settings won't apply to Apple IIgs)
    • Click the lock again to unlock and revert to global settings

Technical

  • Added lockedSettings and lockedMachineIndex fields to InputImage struct
  • Extended RetroMachine protocol with optional settings parameter
  • Updated all 15 converters to accept per-image settings
  • Modified batch export methods to use per-image settings when available
  • Added lock/unlock button and thumbnail indicator in ContentView

[4.0] - 2026-01-31

Added

  • Universal Create Disk Feature - Create disk images for ALL supported retro systems:
    • Commodore 64/VIC-20/Plus4: D64 (170KB), D71 (340KB), D81 (800KB) - CBM DOS format
    • Amiga 500/1200: ADF (880KB, 1.76MB HD) - OFS filesystem
    • Atari 800: ATR (90KB, 130KB, 180KB, 360KB) - Atari DOS 2.0S format
    • Atari ST: ST (360KB, 720KB, 1.44MB) - FAT12 filesystem
    • BBC Micro: SSD (100KB, 200KB), DSD (200KB, 400KB) - Acorn DFS format
    • MSX: DSK (360KB, 720KB) - MSX-DOS FAT12 format
    • Amstrad CPC: DSK (180KB, 360KB) - CPCEMU extended format
    • ZX Spectrum: TRD (640KB), DSK (180KB) - TR-DOS format
    • PC: IMG (360KB, 720KB, 1.2MB, 1.44MB) - DOS FAT12/FAT16 format
    • Apple II/IIgs: PO, 2MG, HDV (140KB, 800KB, 32MB) - ProDOS format (existing)
  • Create Disk Sheet - New unified UI with:
    • Horizontal system icon bar showing all 14 systems
    • Pre-selects currently active conversion system
    • Dynamic format and size options per system
    • System-specific volume name validation
    • Volume name character set enforcement per platform
  • Disk Creation Progress Bar - Visual progress indicator when creating disk images:
    • Shows current file being converted and progress percentage
    • Theme-aware styling (works with retro themes)
    • Replaces the spinning beachball with informative feedback
  • Atari ST Medium and High Res Modes - Additional graphics modes for Atari ST:
    • Low Res (320×200) - 16 colors from 512-color palette → .PI1
    • Medium Res (640×200) - 4 colors from 512-color palette → .PI2
    • High Res (640×400) - Monochrome (2 colors) → .PI3

Changed

  • ProDOS Button renamed to Create Disk - Now supports all systems, not just Apple II/IIgs

Fixed

  • VIC-20 HiRes Dot Artifacts - Fixed random dots appearing in uniform areas of VIC-20 HiRes images:
    • Changed pixel comparison from <= to < so equidistant pixels default to background color
    • Added 10% minimum contrast threshold for foreground color selection to ignore noise
    • Prevents gray or noisy pixels from being incorrectly assigned to foreground
  • D64/D71/D81 PETSCII Encoding - Fixed filename and disk name display in Commodore disk images:
    • Now uses correct unshifted PETSCII range ($41-$5A) that displays properly on C64
    • Fixed BAM format with proper $A0 shifted space padding bytes
    • Filenames and block counts now display correctly in VICE and VirtualC64
  • D64/D71 Sector Allocation - Fixed broken interleave logic that wasted disk space:
    • Previous code only used ~3 sectors per track before moving to next track
    • Now uses sequential allocation, utilizing all sectors per track
    • D64 can now fit ~16 files instead of 2-3
  • Batch Conversion for Disk Images - All selected images are now converted when creating a disk image (previously only converted one)
  • Image Count Display - CreateDiskSheet now shows correct number of selected images
  • ADFWriter Multi-File Crash - Fixed crash when exporting multiple images to Amiga ADF disk:
    • File blocks now start at block 2 (after boot blocks) instead of overlapping root/bitmap area
    • Proper skip logic for root block (880 DD / 1760 HD) and bitmap block allocation
  • CPC Disk File Truncation - Fixed Amstrad CPC DSK files being truncated:
    • Files > 16KB now correctly use multiple directory extents (CP/M format requirement)
    • 16512-byte screen files (16384 + 128 AMSDOS header) now fully stored
  • Atari ST High Res Crash - Fixed crash when using High Res (640×400) monochrome mode:
    • DEGAS format requires 16 palette entries even for monochrome mode
    • Monochrome palette now padded to 16 entries (white, black + 14 black)
  • Apple IIgs 3200-Color Brooks Format - Fixed ProDOS disk export using wrong aux type:
    • 3200-color Brooks format files now use correct aux type $0002
    • Other retro graphics converters can now properly identify Brooks format images
    • Standard SHR files continue to use aux type $0000

Technical

  • Added DiskFormats.swift with centralized disk system/format/size enumerations
  • Added CreateDiskSheet.swift with unified disk creation UI
  • Added D64Writer.swift for Commodore D64/D71/D81 disk images (CBM DOS with BAM)
  • Added ADFWriter.swift for Amiga ADF disk images (OFS filesystem)
  • Added ATRWriter.swift for Atari 800 ATR disk images (Atari DOS 2.0S)
  • Added STWriter.swift for Atari ST disk images (FAT12)
  • Added BBCDiskWriter.swift for BBC Micro SSD/DSD disk images (Acorn DFS)
  • Added MSXDiskWriter.swift for MSX DSK disk images (MSX-DOS)
  • Added CPCDiskWriter.swift for Amstrad CPC DSK disk images (CPCEMU format)
  • Added TRDWriter.swift for ZX Spectrum TRD disk images (TR-DOS)
  • Added IMGWriter.swift for PC IMG disk images (DOS FAT12/FAT16)
  • Added createDiskImage(configuration:) routing method to ConverterViewModel

[3.2] - 2026-01-30

Added

  • C64 PETSCII Mode - Character-based graphics conversion for Commodore 64:
    • PETSCII (40×25) - 40×25 character grid (320×200 with 8×8 character cells)
    • 2 colors per character cell: 1 global background + 1 foreground per character
    • XOR-based pattern matching to find best PETSCII character for each 8×8 tile
    • Automatic background color selection (most common dark color)
    • Output: .prg (self-displaying executable with BASIC loader)

Fixed

  • PC Text Mode ANSI Output - Fixed .ans file export for ANSI art viewers:
    • Now uses valid CP437 block characters (░▒▓█▄▌▐▀) instead of control characters
    • Proper ANSI.SYS escape sequences with bold attribute for bright colors
    • Added SAUCE metadata record for viewer compatibility
    • CGA to ANSI color mapping corrected
  • Retro Theme Fonts - Fixed font loading for retro appearance modes:
    • Apple IIgs theme now correctly uses "Shaston 640" font
    • Commodore 64 theme now correctly uses "Pet Me 64" font
    • Apple II theme uses "Print Char 21" font
    • Added ATSApplicationFontsPath to Info.plist for proper font discovery

Technical

  • Added convertPETSCII(), findBestPETSCIIChar(), and createPETSCIIPRG() functions to C64Converter
  • PETSCII charset loaded from c64petscii.bin bundle resource (2048 bytes)
  • PRG file includes BASIC stub loader and machine code viewer
  • Refactored findBestCharacter() to only match valid CP437 block characters
  • Added ansiBlockChars array with correct CP437 codes and bitmap patterns
  • Separated SAUCE record generation into createSAUCERecord() function

[3.4] - 2026-01-29

Added

  • BBC Micro Converter - Acorn BBC Micro graphics conversion support:
    • Mode 0 - 640×256, 2 colors (high-resolution)
    • Mode 1 - 320×256, 4 colors from 8-color palette
    • Mode 2 - 160×256, 8 colors (full palette)
    • Mode 4 - 320×256, 2 colors (compact memory)
    • Mode 5 - 160×256, 4 colors (compact memory)
    • Native .bbc file output (raw screen memory)
  • System Menu Update - BBC Micro (⇧⌘8), keyboard shortcuts reorganized

Technical

  • Added BBCMicroConverter.swift with 6845 CRTC video emulation
  • 8-color fixed palette (Black, Red, Green, Yellow, Blue, Magenta, Cyan, White)
  • Interleaved memory layout for authentic BBC Micro screen format
  • BBC Micro icon added to Assets.xcassets

[3.3] - 2026-01-29

Added

  • Atari 800 Converter - Atari 8-bit computer graphics conversion support:
    • Graphics 8 - 320×192, 2 colors (high-resolution monochrome)
    • Graphics 15 - 160×192, 4 colors from 128-color GTIA palette
    • Graphics 9 - 80×192, 16 shades (GTIA grayscale mode)
    • Graphics 10 - 80×192, 9 colors from 128-color palette (GTIA color mode)
    • Graphics 11 - 80×192, 16 hues at one luminance (GTIA hue mode)
    • Native .gr8, .gr15, .gr9, .gr10, .gr11 file output
  • System Menu Update - Atari 800 (⇧⌘6), keyboard shortcuts reorganized

Technical

  • Added Atari800Converter.swift with ANTIC/GTIA video chip emulation
  • 128-color palette (16 hues × 8 luminances) with NTSC color approximation
  • All five GTIA graphics modes fully implemented
  • Atari 800 icon added to Assets.xcassets

[3.2] - 2026-01-29

Added

  • MSX Converter - MSX/MSX2 graphics conversion support:
    • Screen 2 (MSX1) - 256×192, 2 colors per 8×1 line from TMS9918 palette
    • Screen 5 (MSX2) - 256×212, 16 colors from 512-color V9938 palette
    • Screen 8 (MSX2) - 256×212, 256 fixed colors (3-3-2 RGB)
    • Native .sc2, .sc5, .sc8 file output (BSAVE format)
  • PC Converter - IBM PC graphics conversion support:
    • CGA Mode - 320×200, 4 colors from fixed CGA palettes
    • EGA Mode - 320×200, fixed 16-color EGA palette
    • EGA 64 Mode - 320×200, 16 colors selected from 64-color EGA palette
    • VGA Mode 13h - 320×200, 256 colors from 262,144-color palette
    • CGA 80×25 Text - 640×200, character-based display with 16 colors
    • VESA 132×50 Text - 1056×400, extended text mode
    • Native .pcx file output for graphics modes, .ans for text modes
  • System Menu Update - PC (⇧⌘P), MSX (⇧⌘M)
  • Hue Color Matching - New color matching algorithm that preserves color hues, best for images with saturated colors
  • Apple IIgs Enhancements:
    • Lowpass preprocessing filter
    • Extended dithering options: Noise, Bayer 2×2/4×4/8×8/16×16, Blue Noise 8×8/16×16
  • PC Processing Options:
    • CGA Palette selection: Cyan/Magenta/White, Cyan/Magenta/Gray, Green/Red/Yellow, Green/Red/Brown
    • Dithering: None, Floyd-Steinberg, Atkinson, Bayer (2×2, 4×4, 8×8)
    • Contrast: None (default), HE, CLAHE, SWAHE
    • Color Matching: Euclidean, Perceptive, Luma, Chroma, Hue
    • Saturation and Gamma controls

Fixed

  • PCX CGA Header - Fixed bits-per-pixel value (now correctly writes 2bpp for 4-color CGA)

Technical

  • Added MSXConverter.swift with TMS9918 and V9938 video chip emulation
  • Added PCConverter.swift with CGA, EGA, VGA and text mode implementations
  • K-D tree optimization for VGA 256-color palette matching (10-20x faster)
  • CGA 16-color palette and 4-color graphics palettes
  • EGA 64-color palette generation
  • VGA adaptive 256-color palette using median-cut algorithm
  • Character pattern matching for text modes
  • MSX and PC icons added to Assets.xcassets

[3.1] - 2026-01-29

Added

  • Amiga 500 Converter - Full Amiga 500 OCS/ECS graphics conversion support:
    • Standard Mode - 320×256/320×512, 32 colors from 4096-color palette (5 bitplanes)
    • HAM6 Mode - 320×256/320×512, up to 4096 colors via hold-and-modify (6 bitplanes)
    • Native .iff file output (IFF ILBM format)
  • Amiga 1200 Converter - Full Amiga 1200 AGA graphics conversion support:
    • Standard Mode - 320×256/320×512/640×512, 256 colors from 24-bit palette (8 bitplanes)
    • HAM8 Mode - 320×256/320×512/640×512, up to 262144 colors via hold-and-modify (8 bitplanes)
    • Native .iff file output (IFF ILBM format)
  • System Menu Update - Amiga 500 (⇧⌘9), Amiga 1200 (⇧⌘0)
  • Amiga Processing Options:
    • Dithering: None, Floyd-Steinberg, Atkinson, Noise, Bayer (2×2-16×16), Blue Noise
    • Contrast: None (default), HE, CLAHE, SWAHE
    • Color Matching: Euclidean, Perceptive, Luma, Chroma, Mahalanobis
    • Saturation and Gamma controls

Technical

  • Added Amiga500Converter.swift with OCS 4096-color palette and HAM6 encoding
  • Added Amiga1200Converter.swift with AGA 24-bit palette and HAM8 encoding
  • IFF ILBM file format writer with BMHD, CMAP, CAMG, BODY chunks
  • Amiga 500 and Amiga 1200 icons added to Assets.xcassets
  • Interleaved bitplane encoding for authentic Amiga graphics format

[3.0] - 2026-01-29

Added

  • ZX Spectrum Converter - Full ZX Spectrum graphics conversion support:
    • 256×192 resolution with 8×8 attribute cells
    • 2 colors per attribute cell (ink + paper)
    • 16-color palette (8 colors × 2 brightness levels)
    • Native .scr file output (6912 bytes: 6144 bitmap + 768 attributes)
  • Amstrad CPC Converter - Full Amstrad CPC graphics conversion support:
    • Mode 1 - 320×200, 4 colors from 27-color hardware palette
    • Mode 0 - 160×200, 16 colors from 27-color hardware palette
    • Native .scr file output with AMSDOS header (128 + 16384 bytes)
  • Plus/4 Converter - Full Commodore Plus/4 graphics conversion support:
    • HiRes Mode - 320×200, 2 colors per 8×8 character cell
    • Multicolor Mode - 160×200, 4 colors per 4×8 character cell (2 global + 2 per cell)
    • 128-color palette (16 hues × 8 luminance levels)
    • Native .prg file output (10000 bytes: nibble + screen + bitmap)
  • Atari ST Converter - Full Atari ST graphics conversion support:
    • 320×200 resolution with 16 colors from 512-color palette
    • 512-color hardware palette (8 levels R × 8 levels G × 8 levels B)
    • Native .pi1 file output (DEGAS Elite format, 32034 bytes)
  • System Menu Update - ZX Spectrum (⇧⌘5), Amstrad CPC (⇧⌘6), Plus/4 (⇧⌘7), Atari ST (⇧⌘8)
  • ZX Spectrum Processing Options:
    • Dithering: None, Floyd-Steinberg, Atkinson, Noise, Bayer (2×2-16×16), Blue Noise
    • Contrast: None (default), HE, CLAHE, SWAHE
    • Filters: None, Lowpass, Sharpen, Emboss, Edge
    • Color Matching: Euclidean, Perceptive, Luma, Chroma, Mahalanobis
    • Saturation and Gamma controls
  • Amstrad CPC Processing Options:
    • Same dithering, contrast, filter, and color matching options as ZX Spectrum
    • Pixel Merge option for Mode 0 (Average/Brightest)
  • Plus/4 Processing Options:
    • Same dithering, contrast, filter, and color matching options as ZX Spectrum
    • Pixel Merge option for Multicolor mode (Average/Brightest)
  • Atari ST Processing Options:
    • Same dithering, contrast, filter, and color matching options as ZX Spectrum
    • Automatic optimal 16-color palette selection from 512 colors

Changed

  • UI Redesign - System selector moved to horizontal bar at top
  • Image Info Panel - New panel showing file info where system selector was
  • Larger System Icons - System bar icons increased to 46×90px for better visibility
  • Mode Labels with Resolution - VIC-20 and C64 mode labels now show resolution:
    • VIC-20: "HiRes (176×184)", "LowRes (88×184)"
    • C64: "HiRes (320×200)", "Multicolor (160×200)"
  • Default Presets - VIC-20, C64, ZX Spectrum, Amstrad CPC, Plus/4, Atari ST now default to:
    • Contrast: None
    • Dither Amount: 0.5

Fixed

  • Amstrad CPC Filters - Implemented missing filter processing (Lowpass, Sharpen, Emboss, Edge)

Technical

  • Added ZXSpectrumConverter.swift with attribute-based conversion
  • Added AmstradCPCConverter.swift with optimal palette selection from 27-color hardware palette
  • Added Plus4Converter.swift with 128-color TED palette and HiRes/Multicolor modes
  • Added AtariSTConverter.swift with 512-color palette and DEGAS PI1 output
  • ZX Spectrum, Amstrad CPC, Plus/4, and Atari ST icons added to Assets.xcassets
  • Added HorizontalSystemBar and ImageInfoPanel components
  • ZX Spectrum interleaved memory format for authentic screen layout
  • Amstrad CPC interleaved memory format with AMSDOS file headers
  • Plus/4 file format: nibble (1000) + screen (1000) + bitmap (8000) bytes

[2.9] - 2026-01-29

Added

  • VIC-20 Converter - Full VIC-20 graphics conversion support:
    • HiRes Mode - 176×184 resolution, 2 colors per 8×8 character cell
    • LowRes Mode - 88×184 resolution (double-wide pixels), 4 colors per 4×8 cell
  • System Menu Update - VIC-20 added (⇧⌘4)
  • VIC-20 Processing Options:
    • Dithering: None, Floyd-Steinberg, Atkinson, Noise, Bayer (2×2-16×16), Blue Noise
    • Contrast: HE, CLAHE, SWAHE (default: SWAHE)
    • Filters: Lowpass, Sharpen (default), Emboss, Edge
    • Color Matching: Euclidean, Perceptive, Luma, Chroma, Mahalanobis
  • VIC-20 Palette - Authentic 16-color VIC-20 palette

Technical

  • Added VIC20Converter.swift with HiRes and LowRes conversion
  • VIC-20 icon added to Assets.xcassets
  • Native file format: .prg (VIC-20 executable)
  • Screen: 22×23 character cells (506 characters)

Fixed

  • SWAHE Performance - Optimized sliding window algorithm with incremental histogram updates (40x faster)

[2.8] - 2026-01-28

Added

  • Commodore 64 Converter - Full C64 graphics conversion support:
    • HiRes Mode - 320×200 resolution, 2 colors per 8×8 character cell (Art Studio .art format)
    • Multicolor Mode - 160×200 resolution, 4 colors per 4×8 character cell (Koala .kla format)
  • System Menu - New menu to switch between target systems:
    • Apple II (⇧⌘1)
    • Apple IIgs (⇧⌘2)
    • C64 (⇧⌘3)
  • C64 Dithering Algorithms - Full set from retropic reference:
    • None, Floyd-Steinberg, Atkinson, Noise
    • Bayer 2×2, 4×4, 8×8, 16×16
    • Blue Noise 8×8, 16×16
  • C64 Contrast Processing - HE, CLAHE, SWAHE histogram equalization
  • C64 Image Filters - Lowpass, Sharpen, Emboss, Edge detection
  • C64 Color Matching Algorithms:
    • Euclidean, Perceptive, Luma-weighted, Chroma-weighted, Mahalanobis
  • C64 Pixel Merge Options - Average or Brightest for multicolor mode
  • C64 Saturation/Gamma Controls - Fine-tune image appearance before conversion

Changed

  • Toolbar Layout - Reorganized control groups for better C64 options display:
    • Contrast + Filter in one group
    • Pixel Merge + Color Match in another group
  • C64 Palette - Uses accurate VICE/Pepto palette (16 colors)

Technical

  • Added C64Converter.swift with full HiRes and Multicolor conversion
  • Added ConverterViewModel.shared singleton for menu access
  • C64 icon added to Assets.xcassets
  • Native file format support: Art Studio (.art) and Koala (.kla)