photocd.datatype adds Kodak Photo CD (.PCD) support to the Amiga DataTypes
system.
- DataTypes-based
.PCDsupport for Amiga systems withpicture.datatypeV44+ - Direct RGB decode path inside
photocd.datatype 64Base(6144x4096) support when the original Photo CD companion files are present- Optional Amiga-side helper tools:
PhotoCDPrefs anddtprobe - Reproducible host-generated
PhotoCDDataTypes descriptor
- AmigaOS 3.2 (or another system with
picture.datatypeV44+) PhotoCD Prefsuses GadTools/Intuition
- Bebbo's m68k-amigaos-gcc toolchain
- a host C compiler
lhaandicontoolformake lha
Build the main Amiga binaries and generated metadata:
makeThis produces:
build/amiga/Classes/DataTypes/photocd.datatypebuild/amiga/Prefs/PhotoCDbuild/amiga/Installbuild/amiga/PhotoCD-DT.readmebuild/amiga/Env/DataTypes/photocd.prefs
Build the optional tool and descriptor as needed:
make descriptor dtprobeBuild the distributable archive when you want the packaged release tree and
.lha output:
make lhaThe shared version source of truth is version.mk. The build uses that version when generating metadata and Amiga binaries.
make: build metadata, runtime assets,photocd.datatype, andPhotoCDmake metadata: regeneratebuild/amiga/Installandbuild/amiga/PhotoCD-DT.readmemake runtime-assets: copy packaged runtime assets such asphotocd.prefsmake dtprobe: build the Amiga-side DataTypes diagnostic tool atbuild/amiga/C/dtprobemake descriptor: regeneratebuild/amiga/Devs/DataTypes/PhotoCDwith the host-side generatormake lha: assemblePhotoCD-DT-v<version>/andPhotoCD-DT-v<version>.lhamake clean: remove build products and generated package output
64Base (6144x4096) images are supported, but they still require the original
Photo CD companion files in the matching IPE/.../64BASE directory layout. The
.PCD file alone does not contain the full 64Base image data.
On AmigaOS 3.2 and newer, it is recommended that you add a photocd filetype as a sub type under picture in your Default Icons Preferences.
Then, make sure to set it to match #?.pcd under Advanced Settings. This way you will be able to click on PCD files that lack a .info file and they will still nicely open with MultiView.
The PhotoCD Prefs tool allows you to select the default decoding resolution
and shows you the version of the installed photocd.datatype
Build the optional DataTypes probe with:
make dtprobeThis produces build/amiga/C/dtprobe, a small Amiga-side utility that:
- prints the first bytes at offsets
0and2048 - shows the descriptor selected by
ObtainDataTypeA() - tries
NewDTObject()both generically and as a picture object
Example:
C/dtprobe RAM:IMG0001.PCDThe repository includes a helper to reconstruct an ISO from a raw BIN/CUE
image and extract representative .PCD files for manual testing:
python3 tools/extract_photo_cd_samples.py --cue PCD1410.cue --out-dir /tmp/pcd-fixturesThe repository includes a host-side generator for the PhotoCD DataTypes
descriptor:
make descriptorThis builds build/host/make_pcd_descriptor and rewrites
build/amiga/Devs/DataTypes/PhotoCD reproducibly.
The generated descriptor is intentionally pattern-based. Standard Kodak Photo CD
files expose PCD_IPI at offset 2048, so a static first-64-bytes mask is not
enough to identify them reliably. If you later add a comparison hook, the tool
can also attach a raw DTCD chunk:
build/host/make_pcd_descriptor --dtcd path/to/hook -o build/amiga/Devs/DataTypes/PhotoCDsrc/: datatype, prefs tool, diagnostic tool, and decoder sourcessrc/decoder/: shared Photo CD decoder sourcestools/: fixture extraction and descriptor generatorassets/: package icons and bundled runtime assetsbuild/amiga/: default Amiga output treebuild/amiga/Devs/DataTypes/PhotoCD: generated DataTypes descriptor
The decoder source is intentionally split into smaller internal translation units:
photocd.cphotocd_core.cphotocd_data.cphotocd_huffman.cphotocd_convert.c
This keeps the lookup tables, bitstream decoder, conversion code, and control flow separated without changing the public decoder API.
Inspired by PCD-DT35 datatype by Achim Stegemann
Decoder core basis: Sandy McGuffog and contributors
Original Photo CD format reverse engineering foundation: Hadmut Danisch
This project is licensed under GPL-2.0-or-later. See LICENSE.md.

