AGABlaster - 68K Commodore Amiga CDXL Video Player

Recent Updates

You can follow updates on the AGABlaster Twitter channel


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. Customized CDXL files can be generated with AGAConv. 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 required (and 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:

Recommended Hardware

If you run AGABlaster on an OCS/ECS system, use the additional option 'FMODE=0'. Standard CDXL files should run similar to other CDXL video players on OCS/ECS systems. AGABlaster only supports standard CDXL files or AGABlaster specific extensions. It is designed to get the best out of AGA systems, there is no OCS/ECS specific mode - however, some of the features (e.g. dropping of frames) are also beneficial on OCS/ECS systems.

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


Amiga Forum AGABlaster Release Threads


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 press the ESC key.

AGABlaster 68K
Release notes Date Version Size Download
Changed behavior when player reaches end of video
Added option NOEXIT (otherwise always exits now)
15-NOV-2020 0.9.81 alpha 25 KB agablaster_0_9_81.lha
Fixed flickering when skipping frames on slower devices
Fixed error when video width was not a multiple of 16
Reduced chip memory consumption for pre-buffering
Added audio mute key F6 and option MUTE
Added Amiga audio filter toggle key F7 (change persists after exit)
Added Amiga audio filter option NOFILTER
Added video info output in console (width/height, FPS, Hz, etc.)
Added PAL option (forces PAL mode even when NTSC is detected)
31-OCT-2020 0.9.80 alpha 25 KB agablaster_0_9_80.lha
Added support for video size >= 128 as multiples of 16
Added automatic video centering (x-axis)
Added OCS support (Kick 1.3 supported as well)
Added overscan support for arbitrary height.
Added NTSC support (detection and automatic y-centering using overscan)
29-MAR-2020 0.9.71 alpha 22 KB agablaster_0_9_71.lha
Added keyboard video controls (forward/backward/halt/restart/volume)
Added automatic video centering (y-axis)
Added copper effects
Activated AGA border blank feature
26-JAN-2020 0.9.70 alpha 16 KB agablaster_0_9_70.lha
Reduced flickering in case of low I/O bandwidth.
Fixed memory issues/crashes.
28-JUL-2019 0.9.65 alpha 14 KB agablaster_0_9_65.lha
Added support for video height 128 to 256.
Renamed option 'info' to 'about'.
Fixed PL=1 bug.
12-MAY-2019 0.9.64 alpha 12 KB agablaster_0_9_64.lha
12 bit color palette bug fix (standard CDXL) 01-MAY-2019 0.9.63 alpha 12 KB agablaster_0_9_63
Initial alpha release 28-APR-2019 0.9.62 alpha 12 KB agablaster_0_9_62

Amiga Video Converter AGAConv

AGAConv is a tool to encode PNG/IFF/ILBM frames and an audio stream into (custom) CDXL videos that AGABlaster can play on an Amiga. The tool ffmpeg can be used to extract the frames as PNG files. AGAConv combines several tools to allow conversion of video files into CDXL files with a single command line.

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 FILENAME

where FILENAME is a custom or standard CDXL file name (see Current Limitations). The video starts playing immediately and can be controlled via the keyboard (see below).

An AGABlaster custom CDXL file 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 (e.g. Hires (default is Lores)). Command line options can be used to override settings defined in the CDXL file.

Keyboard Video Controls

Video controls allow to seek forward, backward, halt/resume the video, and restart the video. Audio volume can be adjusted as well. Copper effects can be selected while the video is playing or halted. The video forward/backward seek distance can be changed via a command line option (default is 10 seconds).

Cursor rightSeek forward 10 seconds (default)
Cursor leftSeek backward 10 seconds (default)
Cursor UpIncrease audio volume
Cursor DownDecrease audio volume
SpaceHalt/Resume video play
BackspaceRestart video / Seek to beginning of video
F1Reset display (1x display)
F2Copper effect 1: 4x display (switches from Lores into hires mode)
F3Copper effect 2: 12x display (switches from Lores into superhires mode)
F6Mute/unmute audio (V0.80.0+)
F7Turn Amiga hardware audio filter off/on (V0.80.0+). The filter setting remains after exit. Alternatively, the command line option NOFILTER can be used to turn off the filter only during video play.
ESCExit video player at any time. Return to workbench.
- By default player always exits at the end of the video (V0.9.81+). The only exception is when 'Cursor Right' seeks beyond the end of video, in this case it stops at last frame (to be able to find the end). If option NOEXIT is used then it always remains active at end of video.
LMBLeft mouse button exits video player at any time (same as ESC).

The copper effects are only available if the video is encoded in Lores resolution. Switching only works if the respective higher resolution mode can be displayed with the data alignment of the displayed video. AGABlaster uses an internal table to determine this, you will see for a short moment a black screen, and then it will switch back, if not supported by the hardware. All modes work when the video width is a multiple of 64, there are restrictions if it is only a multiple of 32 or 16.

Command Line Options

The only command line argument that is required is the name of the CDXL file if converted with AGAConv. For standard CDXL files created with other video converters, the frequency and/or screen-modes may need to be added on the command line because this info is not present in standard CDXL files (default is 11025 Hz, Lores)

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 are useful to customize the appearance or audio during video play:

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. None of the following options are required for AGAConv generated CDXL videos.

The following options are mostly useful for testing and allow to turn off default settings or override automatically chosen best settings:

Current Limitations

Example CDXL Videos Available for Download (24 bit Color Space)

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

AGA Amiga - Short CDXL Test Videos - Zoraia (17 seconds)
Resolution Mode FPS Format Audio CDXL Type Colors Length CDXL Size Download
Lores 320x256 AGA7 15 5:4 cropped 11025 Hz Custom24 bit 0:17 19.0 MB zoraia_short_cropped_lo_aga7.cdxl
Lores 320x256 AGA8 24 5:4 cropped 22050 Hz Custom24 bit 0:17 34.6 MB zoraia_short_cropped_lo_aga8.cdxl
Lores 320x256 HAM8 24 5:4 cropped 22050 Hz Custom24 bit 0:17 34.6 MB zoraia_short_cropped_lo_ham8.cdxl
Lores 320x256 AGA8 24 16:9 scaled 22050 Hz Custom24 bit 0:17 34.5 MB zoraia_short_scaled_lo_aga8.cdxl
Hires 640x256 AGA8 24 5:4 cropped 22050 Hz Custom24 bit 0:17 68.1 MB zoraia_short_cropped_hi_aga8.cdxl
Hires 640x256 AGA8 24 16:9 scaled 22050 Hz Custom24 bit 0:17 67.9 MB zoraia_short_scaled_hi_aga8.cdxl

AGA Amiga - Full CDXL Video - Zoraia (2 min 2 secs)
Resolution Mode FPS Format Audio CDXL Type Colors Length CDXL Size Download
Lores 320x256 AGA8 24 5:4 cropped 22050 Hz Custom24 bit 2:02 243.9 MB zoraia_cropped_lo_aga8.cdxl
Lores 320x256 AGA8 24 16:9 scaled 22050 Hz Custom24 bit 2:02 243.9 MB zoraia_scaled_lo_aga8.cdxl (*)
zoraia_scaled_lo_aga8.cdxl.lha (*)
Hires 640x256 AGA8 24 5:4 cropped 22050 Hz Custom24 bit 2:02 480.3 MB zoraia_cropped_hi_aga8.cdxl.lha
Hires 640x256 AGA8 24 16:9 scaled 22050 Hz Custom24 bit 2:02 480.3 MB zoraia_scaled_hi_aga8.cdxl.lha

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 (named zoraia_lo_aga8s.cdxl in video)

Other Available CDXL Videos (12 bit Colors/HAM6)

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

Benchmarking: 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
Measured FPS
PIO 4Lores 320x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo, with 24 FPS 2424.00
PIO 3Lores 320x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo, with 24 FPS 2424.00
PIO 0Lores 320x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo, with 24 FPS 119.74
PIO 4Hires 640x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo, with 24 FPS 1514.76
PIO 3Hires 640x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo, with 24 FPS 1212.35
PIO 0Hires 640x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo, with 24 FPS ---4.70

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)

RAM, video played from RAM Disk
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 stereo17 (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 from 1992.
  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 the CDXL file contains data for a frame rate that is higher than can be displayed on a given system, 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. Is 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. The variable number of bitplanes can reduce the file size if a lower number of colors is sufficient for some frame(s) and less planes are required.
  10. Is AGABlaster finished? No. It currently is in alpha status, version 0.9.xx, for testing I/O band-width and frame rates with different Amiga hardware configurations. AGABlaster will be eventually released open-source with a GPL.
  11. Is AGAConv finished? Version 0.9.5 has be released open-source with a GPL v3 license (see section License on the AGAConv webpage).

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 widthSupported >= 128
WORD Video heightSupported >= 128. Overscan is supported.
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

Audio padding: 0-15 (size of padding in number of bytes)
Video padding: 0-15 (size of padding in number of bytes)
Palette padding: 0-15 (size of padding in number of bytes)
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

CDXL Video Players for Non-Amiga Platforms