Converts an RGB image (.png, .jpeg) into a binary file compliant with the Apple II's HIRES format.
Go to file
2022-06-18 15:08:55 +02:00
Loader_Apple2 SDL2 port: Picture executable 2022-06-18 15:08:54 +02:00
Rgb2Hires_PC Enhancing command parsing 2022-06-18 15:08:55 +02:00
.gitignore Windows project generated by cmake 2021-02-02 18:24:36 +01:00
COPYING INITIAL 2016-11-29 23:06:37 +01:00
Readme.md Compilation with GCC < 9 2021-02-15 21:49:54 +01:00

Rgb2Hires

Rgb2Hires is a set of tools to help converting a modern RGB image (JPEG, PNG) to the HIRES format for Apple II computers ; either as a binary export or an assembly listing.

The color of the RGB imlage can be approximative: Rgb2Hires will match them with the nearest HIRES color.

Apple II colors

RGB values of the targeted colors:

  • BLACK: 00 00 00
  • WHITE: FF FF FF
  • BLUE: 07 A8 E0
  • ORANGE: F9 56 1D
  • GREEN: 43 C8 00
  • VIOLET: BB 36 FF

Projects

This repository contains three "PC" projects:

  • libRgb2Hires: a library to convert RGB image to the Apple II's HIRES format
  • Picture: a program to convert a RGB png to a binary or an ASM excerpt, that can be loaded to the HIRES memory pages of an Apple II. An optional live preview can be displayed: its window will simulate an RGB monitor and will show the result, including color clashing and artifacts.
    • Source image must be 140x192. Pixels are anamorphic: they will be displayed twice wider than tall.
    • Source image must contains six colors : BLACK, WHITE, ORANGE, GREEN, BLUE and PURPLE. The color may be approximation of the Apple II 6 colors. Please refer to the provided pic.
  • Tile: given a RGB png tile sheet that satisfies the same requirements as above, it extracts a 14x16 tile and converts it to ASM data. This data is not interleaved.

And one Apple II project:

  • Loader: a program that will load and display a picture generated by the Picture program. A bash scripts is provided as an exemple to load the picture and the loader on an image disk. AppleCommander is required to do so. Once in ProDOS, just type -DISPLAY.

Note: For more information about the "Hires" format and its limitations, you can refer to my website.

Build from sources

This project has been tested with VisualStudio 2019, Gcc 9 (Ubuntu 20.04) and Gcc8.3.0 (Debian 10).

Dependencies

  • Magick++ from ImageMagick 6 and SDL2
    • On Windows

      • ImageMagick
        • Download ImageMagick 6 from the official website.
        • Compile it in Dynamic Multithreaded.
        • Provide an environment variable called MAGICK_HOME and pointing to the root ImageMagick folder.
        • Copy ImageMagick-config from the script/ folder to MAGICK_HOME.
      • SDL2
        • Download the latest version of the development library from the official website and unarchive it.
        • Provide an environment variable called SDL2_HOME and pointing to the root of the SDL2 library.
    • On Linux, install libmagick++-dev for version 6 and libsdl2-dev

      sudo apt install libmagick++-6.q16-dev libsdl2-dev

      Depending on your Linux distribution, you may have to set an environment variable sdl2_DIR, pointing to the directory hosting SDL2's cmake configuration, before running cmake.

      Example on Debian:

      export sdl2_DIR=/usr/lib/x86_64-linux-gnu/cmake/SDL2/

How to build

  • Linux a CMakeList is provided:

    mkdir build && cd build

    cmake ..

    cmake --build . --config release

  • Windows a VisualStudio solution is provided

Apple II project (Loader)

Dependencies

  • CC65
    • The crosscompiler suit. Please provide an environment variable, CC65_HOME pointing to your CC65 folder.

Build

make

Test

A correct source image, test.png, is provided as an example. Convert it using Picture, then copy it on a dsk image along with the Apple II loader. You can use or refer to the provided script in the Loader_Apple2 folder.

Demo

The live preview can help to visualise color clashing and artifacts. You can edit your file using Photoshop or any other application. The Preview window will be ubdated each tile the file is saved.