AGABlaster - 68K Commodore Amiga CDXL Video Player

AGABlaster is a video player for the Amiga Commodore computer. It uses a customized version of the CDXL format supporting the AGA chipset with 24 bit colors and variable length frames. AGABlaster is written in 68K Assembly and runs on native Amiga hardware (no gfx card or sound card required). It is currently in alpha testing stage.

The CDXL format was created primarily for the Commodore CDTV, to permit playback of video from CD-ROM in the early 1990s. The original (standard) CDXL format was a simple streaming format, consisting of linear concatenated chunks (packets), each with an uncompressed frame and associated audio data. It did not contain video timing information, additional command line arguments had to be provided to the CDXL player.

AGABlaster can play the original CDXL format (see Current Limitations), but can also play custom variable length CDXL frames. For example, frames can have have a different number of bitplanes. The custom headers in each chunk contain all information necessary to display each frame (audio frequency, etc.), such that no additional command line parameters need to be provided. However, command line arguments are available to set all parameters manually to play also original CDXL videos.

AGABlaster has been tested on an A4000/60 with a Fast ATA 4000 MK-III disk controller (expansion card) and different PIO settings. AGABlaster can play videos with 24 FPS, 320x256 Lores resolution, and 8-bit stereo sound at 22050 Hz directly from disk, with the MK-III in PIO3 setting. Only chip memory is required. Alternatively, playing from an USB 2.0 memory stick connected to a DENEB USB 2.0 expansion card is also fast enough.

AGABlaster is designed to only require chip memory and to display videos in full screen on original Amiga hardware. Graphics cards and/or sound cards are not supported. AGABlaster can skip frames if disk I/O is too slow. Video data is skipped by seeking on disk to the next frame without loading it into memory. Audio data is always read. All data is read asynchronously from disk, allowing it to read ahead if I/O is fast enough.

Overview of supported video/audio modes:

YouTube Videos of My Amiga Video Conversions

ViewTek - A4000/60 - Anim7 - 2017

AnimFx - FS-UAE Emulator - SndAnim7 - 2017

AnimFx - FS-UAE Emulator - SndAnim7 - 2018

AnimFX - FS-UAE Emulator - SndAnim7 - 2018

AGABlaster - A4000/60 - Custom CDXL - 2019
ZORAIA by Zohre Esmaeli Campaign

AGABlaster - A4000/60 USB 2.0 - Custom CDXL 2019
INNA - No Help

How to Use

AGABlaster and some example videos can be downloaded from this website. No additional installation is required. AGABlaster can be started from a console window with the name of the CDXL video as command line argument:

> agablaster VIDEONAME

where VIDEONAME is a custom or standard CDXL file name (see Current Limitations). The video starts playing immediately and can be stopped with the left mouse button. There are no control buttons available yet.

An AGABlaster custom CDXL file (see below for downloads) contains all information to play the video. For standard CDXL files command line options can be used to set the audio frequency, NTSC/PAL mode, and resolution.

Command Line Options

The only command line argument that is required is the name of the CDXL file. For example to play one of the provided CDXL videos, enter the following in a console window and hit return: agablaster zoraia_short_lo_aga8.cxl - the video should start playing immediately.

The following options can be useful to tune the player to a given system. The default values are PL=6, FB=6, CFD=4 which are well suited for AGA systems with at least 1M chip memory (fast memory is not required).

The following options can be used to override the values of a custom CDXL file for the entire video or to set the missing values for a standard CDXL file:

Current Limitations

Measured Frames per Second

For the provided custom CDXL videos the following values are reported by AGABlaster with the STATS option (default behavior) for my A4000/60:

Played from hard disk
I/O Speed setting
Video FrameMeasured FPS (V0.9.61)
PIO 3Lores 320x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo24 (video with 24 FPS)
PIO 3Hires 640x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo12 (video with 24 FPS)
PIO 0Lores 320x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo9 (video with 24 FPS)

DENEB USB 2.0, video played from USB memory stick
Frame sizeMeasured FPS (V0.9.64)
Lores 320x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo24 (video with 24 FPS)
Hires 640x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo12 (video with 24 FPS)


  1. Why was AGABlaster written in 2019? This player is a just-for-fun project for exploring the limits of my Amiga AGA system.
  2. Any attempts with other video players? Previous attempts with other video players showed that ViewTek can play an ANIM7 video from memory at 25 FPS, but does not support audio. AnimFX can play SND-ANIMs at 25 FPS when pre-loading the entire video (with audio) into the processor card's memory (approx. 1 minute), but becomes very slow when loading from Zorro memory (beyond 1 minute). It is also very slow from disk at 320x256/8 with biganim. Several videos also had some flicker, so I eventually gave up. The RIVA MPEG-1 player runs at around 20 FPS without sound, which is impressive considering that it's decompressing an MPEG-1 stream with an MC 68060 at 50Hz, but with native sound it's choppy on my system. However, the small file size of the MPEG-1 videos is very convenient.
  3. Why CDXL? Because it is a simple video format (released for the CDTV/Amiga) which can be scaled down to low-spec Amiga models as well. It's also supported by ffmpeg.
  4. Why all these different variants of the same video? Mostly for testing. There exist many different Amiga configurations and the idea is to provide CDXL variants that allow to max out the respective Amiga hardware without unnecessarily large files. However, if a file is too large, AGABlaster should still properly skip frames, giving similar results as with smaller files.
  5. How Amiga OS-friendly is AGABlaster? It uses OS interrupt routines (AUD0, VERTB), OS memory allocation, and OS I/O routines. It uses its own copper list which consists only of instructions for loading the respective bitplane pointers. The number of bitplanes can be different in every frame. Color registers are set by the CPU. It does not use the audio device, the audio registers are set by the CPU.
  6. Which video converter did you use? I created my own CDXL conversion pipeline - a mix of ffmpeg scripts and C++ tools, mostly to experiment with video conversions and color mappings.
  7. Are the CDXL customization documented? Yes (see below).
  8. Why variable length audio chunks? Because the entire audio stream is divided into as many chunks as frames, one audio chunk per frame, and this usually doesn't exactly add up to the total audio size. Variable length (usually differing by 2 bytes) allows to get the exact number of audio bytes encoded. Note that the exact timing of the video is defined by the audio stream (similar to AnimFx's sound anims).
  9. So how about compression? If pre-loading into fast memory is added, then some (de)compression might be added as well. Currently only the original format with no compression is supported.
  10. Is AGABlaster finished? No. It currently is in alpha status, version 0.9.x, for testing I/O band-width and frame rates with different Amiga hardware configurations. It is currently limited to a fixed set of full-screen resolutions. AGABlaster will be eventually released open-source with an LGPL.


Amiga video player AGABlaster (68K)

AGABlaster consists of the single file 'agablaster' and has only system library dependencies. Simply copy the file to any location of your choice. To play one of the provided cdxl videos with agablaster enter on a console: 'agablaster myvideo.cdxl'. It will then play the video. To exit video play use the left mouse button.

AGABlaster 68K
Release notes Date Version Size Download
Initial alpha release 28-APR-2019 0.9.62 12 KB agablaster_0_9_62
12 bit color palette bug fix (standard CDXL) 01-MAY-2019 0.9.63 12 KB agablaster_0_9_63
Added support for video height 128 to 256.
Renamed option 'info' to 'about'.
Fixed PL=1 bug.
12-MAY-2019 0.9.64 12 KB agablaster_0_9_64

Example videos (AGABlaster Custom 24 bit Colors/HAM8 CDXL Format)

Video: Zoraia by Zohre Esmaeli.

Distribution of the video conversion variants on this website with permission of the copyright holders Zohre Esmaeli and photographers.

Video credits: Filmed and directed by Alexei Bazdarev, Camera assistant Leonhard Koall, Makup artist Cara Okfen, Video edit by Janine Risse, Management by Mihai Nagy.

The original video is available on Vimeo - external link: original video in full HD

Zoraia - Short Test CDXL Video - 17 seconds
Resolution Mode FPS Format Audio CDXL Type Colors Length Size Download
Lores 320x256 AGA7 15 5:4 cropped 11025 Hz Custom24 bit 0:17 19.0 MB zoraia_short_crop_lo_aga7.cdxl
Lores 320x256 AGA8 24 5:4 cropped 22050 Hz Custom24 bit 0:17 34.6 MB zoraia_short_crop_lo_aga8.cdxl
Lores 320x256 HAM8 24 5:4 cropped 22050 Hz Custom24 bit 0:17 34.3 MB zoraia_short_crop_lo_ham8.cdxl
Hires 640x256 AGA8 24 5:4 cropped 22050 Hz Custom24 bit 0:17 68.1 MB zoraia_short_crop_hi_aga8.cdxl
Lores 320x256 AGA8 24 16:9 scaled 22050 Hz Custom24 bit 0:17 34.5 MB zoraia_short_lo_aga8s.cdxl
Hires 640x256 AGA8 24 16:9 scaled 22050 Hz Custom24 bit 0:17 68.0 MB zoraia_short_hi_aga8s.cdxl

Zoraia - Full CDXL Video - 2 min 2 secs
Resolution Mode FPS Format Audio CDXL Type Colors Length Size Download
Lores 320x256 AGA8 24 5:4 cropped 22050 Hz Custom24 bit 2:02 243.9 MB zoraia_crop_lo_aga8.cdxl
Lores 320x256 AGA8 24 16:9 scaled 22050 Hz Custom24 bit 2:02 243.9 MB zoraia_lo_aga8s.cdxl (*)

The 16:9 scaled videos require an LCD monitor to stretch the picture to HD size. This way one can get a correct HD sized video with the Amiga 5:4 PAL output ratio. For display with an original PAL 5:4 screen ratio the cropped videos are provided.

(*) shown on youtube

Other Available CDXL Videos (Standard 12 bit Colors/HAM6 Format)

The following webpages offer standard CDXL videos that are known to work with AGABlaster 0.9.64+.

AGABlaster Supported Standard and Custom CDXL Format

Supported AGABlaster extensions are marked with ' [extension]'. If the standard CDXL format is used the following default values are assumed: frequency=11025 Hz, video mode: lores, fps: implied by frequency. Command line options allow to set parameters explicitly for standard CDXL videos. No command line parameters are necessary for AGABlaster custom CDXL videos.

CDXL Header
BYTE File type Supported file types: 0=Custom CDXL, 1=Standard CDXL.
BYTEInfo byte
bits 0-3: Video encoding
bit  4  : Audio mode (stereo flag)
bits 5-7: Plane arrangement
Supported video encodings: 0=RGB, 1=HAM.
Supported audio modes: 0=mono, 1=stereo
Supported plane arrangements: 0=bit planar
LONG Current chunk size= 32 + (Palette size + Palette Padding)
+ (Video width in bytes)*(Video height)*(Number of bitplanes)
+ Video padding + (Audio data size (twice as long if stereo) + Audio padding
LONG Previous chunk sizechunk size of previous frame
LONG Current frame number1-4294967295
WORD Video widthCurrently limited to multiples of 320
WORD Video heightSupported 128-256
BYTE reserved0
BYTE Number of bit planes0-8 (if 0, then only background color is displayed; allows for empty video frame data)
WORD Palette size in bytes0-768 (must be a multiple of 2 or 3)
WORD Audio data size in bytes2-65534 (only even numbers; sample length; in stereo mode total audio size is twice as long; audio data must be present)
WORD Frequency [extension]Provided in Hz (0=unspecified)
BYTE Frames per second [extension]1-255 (0=unspecified)
BYTE Info byte 2 [extension]
bits 0-3: Resolution
bit  4  : Color mode
bits 5-7: 0
Supported resolutions: 0=unspecified, 1=lores, 2=hires, 3=superhires
Supported color modes: 0=12 bit colors, 1=24 bit colors
WORD Padding [extension]
bits  0- 3: Audio padding
bits  4- 7: Video padding                  
bits  8-11: Palette padding
bits 12-14: Padding mode
bit     15: 0

0-15 (palette padding, video padding, audio padding)
Supported padding modes: 0=unspecified, 1=no padding, 2=16 bit padding, 3=32 bit padding, 4=64 bit padding, 5=128 bit padding
WORD reserved0

Other Amiga Video Players