



AGABlaster - 68K Commodore Amiga CDXL Video Player

Recent Updates

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:

Lores, Hires, Superhires, AGA0 - AGA8, HAM8, HAM6, EHB.

0-8 bitplanes, 0-256 colors (variable length video chunks)

8-bit mono/stereo sound (variable length audio chunks)

12 bit and 24 bit colors.

Tested on Amiga OS 3.9

On AGA systems the border is set to black utilizing the AGA Border-blank hardware feature (this ensures that the border is black, even when color 0 is used in the video (since version 0.9.70)).

Recommended Hardware

AGA system, 68040 processor, 2MB Chip memory

Original graphics and sound hardware (no graphics card required)

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 Tweets by AgaBlaster

Soon

Amiga Forum AGABlaster Release Threads

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'. It will then play the video. To exit video play press the ESC button.

AGABlaster 68K Release notes Date Version Size Download Added support for arbitrary video size >= 128 (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/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.

AGAConv Webpage

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 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).

Key Action Cursor right Seek forward 10 seconds (default) Cursor left Seek backward 10 seconds (default) Cursor Up Increase audio volume Cursor Down Decrease audio volume Space Halt/Resume video play Backspace Restart video / Seek to beginning of video F1 Reset display (1x display) F2 Copper effect 1: 4x display (switches from Lores into hires mode) F3 Copper effect 2: 12x display (switches from Lores into superhires mode) ESC Exit video player. Return to workbench. - If no key is pressed during playback the player exits at the end of the video. Otherwise it remains active.

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.

VIDEONAME: name of video to play (the only required option to play a custom CDXL video)

ABOUT/S: prints version, author, and copyright information.

STATS/S: prints statistics after video has stopped playing.

NOCENTER/S: turns off automatic centering of video.

YOFFSET/K/N: allows to set manually an y-offset for the video when displayed. Negative values are possible as well (using overscan area then). Can be used in combination with nocenter.

SD=SEEKDISTANCE/K/N: sets the number of seconds to seek forward/backward with the cursor keys. Default is 10 seconds.

NTSC/S: forces NTSC timing and screen height. NTSC is determined automatically with version 0.9.71 and does not need to be selected on the command line.

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

PL=PRELOAD/K/N: number of frames to pre-load (required: 1≤PL≤FB)

FB=FRAMEBUFFERS/K/N: select number of frame buffers

CFD=CRITICALFRAMEDISTANCE/K/N: number of frames the loader is ahead and can skip frames

NOSF=NOSKIPFRAMES/S: do not skip frames. Usually this makes the video only slower and choppy, mostly used for testing.

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:

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=SUPERHIRES/S: set super hires graphics mode.

Current Limitations

Video display width is limited to a minimum of 128 and multiples of 16 (e.g. 128, 144, 160, ...). Best performance when width is multiple of 64 (e.g. 128, 192, 256, 320, ...). Any video hight is OK, including overscan.

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 Custom 24 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 Custom 24 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 Custom 24 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 Custom 24 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 Custom 24 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 Custom 24 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 Custom 24 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 Custom 24 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 Custom 24 bit 2:02 480.3 MB zoraia_cropped_hi_aga8.cdxl.lha Hires 640x256 AGA8 24 16:9 scaled 22050 Hz Custom 24 bit 2:02 480.3 MB zoraia_scaled_hi_aga8.cdxl.lha

Original HD test video from examples above (17 secs): zoraia_short.mp4

Original HD test video from examples above (17 secs, cropped): zoraia_short_cropped.mp4

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+.

Amiga Anime CD Project (use option 'FR=24000' to select correct speed; tested with Akira videos, 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 Frame Measured FPS (V0.9.65) PIO 4 Lores 320x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo 24 (video with 24 FPS) PIO 3 Lores 320x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo 24 (video with 24 FPS) PIO 0 Lores 320x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo 11 (video with 24 FPS) PIO 4 Hires 640x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo 15 (video with 24 FPS) PIO 3 Hires 640x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo 12 (video with 24 FPS) PIO 0 Hires 640x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo 9 (video with 24 FPS)

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

RAM, video played from RAM Disk Frame size Measured FPS (V0.9.64) Lores 320x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo 24 (video with 24 FPS) Hires 640x256, 8 bitplanes, 24 bit colors, 22050 Hz stereo 17 (video with 24 FPS)

FAQ

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. 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. 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. 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. 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. 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. Is the CDXL customization documented? Yes (see below). 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). 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. 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. AGABlaster will be eventually released open-source with a GPL. 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 Size Content Comment BYTE File type Supported file types: 0=Custom CDXL, 1=Standard CDXL. BYTE Info 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 size chunk size of previous frame LONG Current frame number 1-4294967295 WORD Video width Supported >= 128 in multiples of 16. WORD Video height Supported >= 128. Overscan is supported. BYTE reserved 0 BYTE Number of bit planes 0-8 (if 0, then only background color is displayed; allows for empty video frame data) WORD Palette size in bytes 0-768 (must be a multiple of 2 or 3) WORD Audio data size in bytes 2-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 reserved 0

Other Amiga Video Players

CDXL Video Players for Non-Amiga Platforms