AGABlaster - 68K Commodore Amiga CDXL Video Player

Recent Updates

You can follow release updates on Twitter: https://twitter.com/AGABlaster
You can follow videos on YouTube https://www.youtube.com/@AGABlaster

Overview

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.


Amiga Forum AGABlaster Release Threads

CDXL Video Converter AGAConv

AGAConv is a tool to convert MPEG4 and other video formats to custom 24-bit CDXL videos and standard 12-bit CDXL videos.

Downloads

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' or just 'agablaster' and select the video with the ASL file requester, or start AGABlaster from its workbench icon and select a list of videos with the file requester. It will then play the video(s). To exit video play press the ESC key.

AGABlaster 68K
Release notes Date Version Size Download
Added support for overscan in Lores (width 384), Hires (704), Superhires (1344)
Fixed error reporting for some unsupported video width in Hires/Superhires
11-JUN-2023 0.9.92 beta 30 KB agablaster_0_9_92.lha
Added support for pausing video at startup (option PAUSE)
See 'PAUSE' in Section Command Line Options for more details.
02-JAN-2023 0.9.91 beta 30 KB agablaster_0_9_91.lha
Added support for video playlists
CDXL videos can be selected with ASL file requester (multi-select with 'shift')
Jump between playlist videos with 'N'ext and 'P'revious
Can be started from workbench icon now (AGABlaster.info)
New playlist/video loop mode ('L' key to toggle loop mode, or command line option LOOP)
Audio filter is off by default now and can be turned on/off with 'F'
Optimized versions for 68000/20/30/40/60/80
22-FEB-2022 0.9.90 beta 30 KB agablaster_0_9_90.lha
Bugfix for 12-bit standard CDXL HAM6 color glitches on AGA systems. HAM6 looks very stable across frames with agaconv 0.9.7 generated videos now.
21-FEB-2021 0.9.83 alpha 27 KB agablaster_0_9_83.lha
Added support for standard 12-bit AGA6-8 and HAM8 videos (used in several games in the late 90s)
Optimized versions for 68000, 68020, 68060, 68080
Extended one-line info message after video play has finished
Added support for 2GB limit of AmigaOS seek functions (it is still possible to play up to 4GB)
Some new features require agaconv 0.9.6 (e.g. big CDXL files with 32-bit frame number)
17-JAN-2021 0.9.82 alpha 27 KB agablaster_0_9_82.lha
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
agablaster_0_9_71_kick13.lha
Added keyboard video controls (forward/backward/pause/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

License

AGABlaster is distributed with a freeware license (not as public domain). It is provided free of charge. As freeware software it may be used as many times as you like, for as long as you like. You may copy and distribute copies of this program provided that you keep the copyright notice and disclaimer of warranty intact. See file LICENSE in the distribution for the complete license.

Installation

AGABlaster is provided for all variants of 68000-68080 (different optimized versions). AGABlaster does not require any additional libraries. If the ASL requester library is available, it will use the ASL requester if started without a CDXL file name. The included icon file, AGABlaster.info, can be used to start AGABlaster from the workbench. In this case the ASL library is required.

How to Use

AGABlaster and some example videos can be downloaded from this website. No additional installation is required (except the ASL library if not pre-installed). AGABlaster 0.9.90+ can be started from workbench or a console window with or without the name of the CDXL video as command line argument:

> agablaster [OPTIONS] (using ASL file requester)
> agablaster FILENAME1 FILENAME2 ... FILENAMEn [OPTIONS]
> [from workbench using the AGABlaster icon]

where FILENAME1.. is a list of CDXL file names. The first 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 not generated with AGAConv, command line options can be used to set the audio frequency, NTSC/PAL mode, and resolution (e.g. Hires (default is Lores)).

Keyboard Video Controls

Video controls allow to seek forward, backward, pause/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 paused. The video forward/backward seek distance can be changed via a command line option (default is 10 seconds).

KeyAction
Cursor rightSeek forward 10 seconds (default)
Cursor leftSeek backward 10 seconds (default)
Cursor UpIncrease audio volume
Cursor DownDecrease audio volume
MMute/Unmute audio
FToggle Amiga hardware audio filter (by default off)
NNext video (of playlist)
PPrevious video (of playlist)
LToggle loop mode. Loop mode applies to a video playlist and restarts after the last video with the very first video. If only one video is loaded it loops this one video.
XToggle exit mode (by default AGABlaster exits after last video. The alternative exit mode pauses at last frame of (each) video and key 'N' can be used to start next video.
CToggle Y-Center/NoCenter mode. By default the video is centered, this allows to turn off the vertical centering.
SpacePause/Resume video play
BackspaceRestart video / Seek to beginning of video
F1Reset display (1x display)
F2Copper effect 1: 4x display (only available in Lores mode, switches from Lores into hires mode)
F3Copper effect 2: 16x display (only available in Lores mode, switches from Lores into superhires mode)
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 (or Key 'X') 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

If started from a console (or workbench), no command line argument is required. However, a a list of video files and options can be provided on command line. No additional command line options are required if the CDXL file was 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:

  • FILENAME: name of video to play (the only required option to play a custom CDXL video)
  • VERSION/S: prints version, author, and copyright information.
  • MUTE/S: starts video play with muted volume (key 'M' can also be used to mute/unmute)
  • PAUSE/S: starts video play and pauses at first frame (use key 'space' to continue/pause video). This option is useful to wait until monitors have synchronized with a change in display mode. It also pauses in a playlist at the beginning of each video and when 'P' or 'N' are used. It can also be used with the file requester when AGABlaster is started from the command line with 'agablaster pause' (no video name provided).
  • NOEXIT/S: do not exit when player reaches end of video - with a playlist it pauses at the end of each video, use 'N' to go to the next video.
  • LOOP/S: plays playlist in a loop (or single video). Can also be enabled/disabled with 'L' key.
  • FILTER/S: turns the Amiga hardware audio filter on, by default off. Can also be turned on/off with key 'F'.
  • NOCENTER/S: turns off automatic centering of video. Can also be enabled/disabled with 'C' key.
  • YOFFSET/K/N: allows to set manually an y-offset in lines for the video when displayed. Negative values are possible as well (using overscan area then). Can be used in combination with NOCENTER.
  • NTSC/S: NTSC is determined automatically with version 0.9.71 and does not need to be selected on the command line anymore.
  • PAL/S: enforce AGABlaster PAL mode even when an NTSC system is detected.
  • QUIET/S: do not print any information (by default one line with infos about the video is printed)
  • SD/K/N: sets seek distance for forward/backward seek to N seconds. Default is 10 seconds.
  • FMODE/K/N: When running videos on OCS systems, setting FMODE=0 is recommended (until an OCS detection is implemented). On AGA systems this value is determined automatically.

The following options can be used to set manually parameters when playing standard CDXL files not generated with AGAConv. None of the following options are required for AGAConv generated CDXL videos.

  • FR=FREQUENCY/K/N: set audio frequency in Hz (e.g. FR=22050). This implicitly changes the frame rate as well. Default value for standard CDXL is 11025. Maximum value: 28867.
  • LO=LORES/S: set lores graphics mode (default for standard CDXL)
  • HI=HIRES/S: set hires graphics mode
  • SH=SHIRES/S: set super hires graphics mode

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

  • NOBB/S: on AGA systems AGABlaster sets the border to blank mode by default. This ensures that the border is of black color, even when the background color is used in a video. This option turns this AGA feature off.
  • NOFORBID/S: by default other tasks are forbidden. This option keeps all other tasks running in the background.
  • NOSKIP/S: do not skip frames. Usually this makes the video only slower and choppy (mostly used for testing).
  • FORCE/S: ignores several error checks (mostly useful for testing).
  • STATS/S: print statistics about some internal counters and settings.

Current Limitations

  • Video width must have a width of at least 128 pixels.

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
zoraia_short_cropped_lo_aga7.cdxl.lha
Lores 320x256 AGA8 24 5:4 cropped 22050 Hz Custom24 bit 0:17 34.6 MB zoraia_short_cropped_lo_aga8.cdxl
zoraia_short_cropped_lo_aga8.cdxl.lha
Lores 320x256 HAM8 24 5:4 cropped 22050 Hz Custom24 bit 0:17 34.6 MB zoraia_short_cropped_lo_ham8.cdxl
zoraia_short_cropped_lo_ham8.cdxl.lha
Lores 320x256 AGA8 24 16:9 scaled 22050 Hz Custom24 bit 0:17 34.5 MB zoraia_short_scaled_lo_aga8.cdxl
zoraia_short_scaled_lo_aga8.cdxl.lha
Hires 640x256 AGA8 24 5:4 cropped 22050 Hz Custom24 bit 0:17 68.1 MB zoraia_short_cropped_hi_aga8.cdxl
zoraia_short_cropped_hi_aga8.cdxl.lha
Hires 640x256 AGA8 24 16:9 scaled 22050 Hz Custom24 bit 0:17 67.9 MB zoraia_short_scaled_hi_aga8.cdxl
zoraia_short_scaled_hi_aga8.cdxl.lha

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
zoraia_cropped_lo_aga8.cdxl.lha
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
Fast ATA MK III
I/O Speed setting
Video FrameMeasured FPS
(V0.9.65)
Measured FPS
(V0.9.80)
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)

FAQ

  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. It does not use the audio device, the audio registers are set by the CPU.
  6. Which video converter did you use? AGAConv (can generate 24-bit CDXL videos, fully utilizing the 24-bit colors space of AGA systems).
  7. Is the CDXL customization documented? Yes (see below).
  8. Why variable length frames? This allows filtering of empty bitplanes, reducing file size.
  9. So how about compression? Currently only filtering of empty bitplanes is supported by AGAConv. A simple RLE encoding/decoding might be added at some point.
  10. Is AGABlaster finished? Almost. 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 license. Currently it is distributed with a freeware license (not as public domain). The license is included with the binary distribution.

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
SizeContentComment
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
bit  5  : Kill EHB
bits 6-7: 0
                
Supported resolutions: 0=unspecified, 1=lores, 2=hires, 3=superhires
Supported color mode: 0=12 bit colors, 1=24 bit colors
Kill EHB: 0=keep EHB mode, 1: kill EHB, use AGA6 [since V0.9.82, only required for 12-bit CDXL videos]
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