Table of Contents
Isabel: SAGA Video Core
Overview
The SAGA Core contains the Isabel Core, which is a hugely improved version of the graphics chipset (AGA) that was used in classic Amigas.
Isabel provides both chunky and planar (native) screen modes.
Features
- Chunky plane that can be displayed on its own by any dedicated RTG driver.
- Supported resolutions: Any valid mode from
320×200
to1920×1080
. - Supported color depths:
8
,15
,16
,24
,32
bits. - Supported pixel formats:
CLUT8
,RGB15
,RGB16
,RGB24
,RGB32
,YUV422
. - Hardware-accelerated video playback.
- Picture-in-picture support, for embedding a virtual screen in a window.
- Fast Akiko C2P routines. 1)
- FrameBuffer can be any address from accessible FastRAM.
- FrameBuffer can be Read and Write, for Direct Hardware drawings.
- Ability to turn on scanlines in certain modes.
Planar (Native) Graphics
- Support for all original AGA modes.
- New enhanced mode with 10 planes.
- Two of those planes can be switched to chunky mode.
- All planes are controllable by Copper.
- Both little-endian and big-endian representations are allowed.
- Support for all original AGA “hardware sprite” features.
- New enhanced “hardware sprite” features.
- 16 sprite DMA channels are available.
- Sprites can be up to 32 pixels wide.
- Each sprite can have 16 colors, with its own, independent palette.
- Collision detection is done for each sprite pair separately.
- Thanks to sprite indirection, you can change a sprite's data extremely fast, just by changing a pointer instead of copying a whole memory region.
- Support for all original AGA Copper features.
- New enhanced Copper features.
- You can perform a 32-bit move with a single instruction, which doubles the speed.
- Third playfield.
- Support for up to 12 MB of ChipRAM.
- Fast screen updates due to accessing ChipRAM at FastRAM speeds.
- High memory bandwidth thanks to 128-bit DMA.
- Fast Blitter operations.
- Support for Atari planar modes.
Chunky VIDEO registers
The FrameBuffer of the Chunky Video Mode can be any address from accessible FastRAM, by specifying the SAGA_VIDEO_PLANEPTR
register. The FrameBuffer is Readable and Writable, for faster Direct Hardware drawings.
Register | Name | Access | Size | Description |
---|---|---|---|---|
DFF1EC | saga_video_planeptr | W | ULONG | Set the SAGA Video FrameBuffer Address |
DFF1F4 | saga_video_mode | W | UWORD | Set the SAGA Video Mode |
The Chunky Video mode can accept virtually any resolution from 320×200 (LowRes) to 1920×1080 (1080p).
The video engine can be dynamically reconfigured at any time by filling a valid ModeLine
.
Register | Name | Access | Size | Description |
---|---|---|---|---|
DFF1F8 | saga_video_pllw | W | UWORD | Set the SAGA ModeLine PIXELCLOCK |
DFF1FA | saga_video_pllr | R | UWORD | Set the SAGA ModeLine PIXELCLOCK |
DFF300 | saga_video_hpixel | W | UWORD | Set the SAGA ModeLine HPIXEL |
DFF302 | saga_video_hsstrt | W | UWORD | Set the SAGA ModeLine HSSTRT |
DFF304 | saga_video_hsstop | W | UWORD | Set the SAGA ModeLine HSSTOP |
DFF306 | saga_video_htotal | W | UWORD | Set the SAGA ModeLine HTOTAL |
DFF308 | saga_video_vpixel | W | UWORD | Set the SAGA ModeLine VPIXEL |
DFF30A | saga_video_vsstrt | W | UWORD | Set the SAGA ModeLine VSSTRT |
DFF30C | saga_video_vsstop | W | UWORD | Set the SAGA ModeLine VSSTOP |
DFF30E | saga_video_vtotal | W | UWORD | Set the SAGA ModeLine VTOTAL |
DFF310 | saga_video_hvsync | W | UWORD | Set the SAGA ModeLine HVSYNC |
When the SAGA_VIDEO_MODE
is set to SAGA_VIDEO_FORMAT_CLUT8
, a palette should be defined by filling the 256-color lookup table. Each color is 32-bits long, in the ARGB
format.
Register | Name | Access | Size | Description |
---|---|---|---|---|
DFF400 | saga_video_clut [0] | W | ULONG | Set the SAGA CLUT8 Color #001 |
DFF7FC | saga_video_clut [255] | W | ULONG | Set the SAGA CLUT8 Color #256 |
Chunky ModeLine description
Universal ModeLine Calculator (UMC
for AmigaOS 3.x, available on Aminet) can be used to generate a valid ModeLine
for a given resolution. For example, we can ask UMC
for a valid ModeLine
for a 800×600@60Hz
resolution. Just type the following line (add the --rbt
option for a reduced framebuffer):
Example of a standard ModeLine
:
> umc 800 600 60
"MODENAME" PIXELCLOCK HPIXEL HSSTRT HSSTOP HTOTAL VPIXEL VSSTRT VSSTOP VTOTAL HVSYNC Modeline "800x600@60" 38.400000 800 832 912 1024 600 604 608 625 -HSync +VSync
Example of a reduced ModeLine
:
> umc 800 600 60 --rbt
"MODENAME" PIXELCLOCK HPIXEL HSSTRT HSSTOP HTOTAL VPIXEL VSSTRT VSSTOP VTOTAL HVSYNC Modeline "800x600@60R" 35.500000 800 848 880 960 600 603 607 618 -HSync +VSync
ModeLine
values description:
Attribute | Short | Description |
---|---|---|
PIXELCLOCK | Bandwidth (MHz) | How many dots it can output per second. |
HPIXEL | Width | Number of horizontal pixels drawn to the visible part of the screen. |
HSSTRT -HPIXEL | Front Porch | Amount of black pixels drawn to the right of the screen. |
HSSTOP -HSSTRT | Sync Pulse | Amount of time it takes to start another line. |
HTOTAL -HSSTOP | Back Porch | Amount of black pixels drawn to the left of the screen. |
VPIXEL | Height | Number of vertical pixels drawn to the visible part of the screen. |
VSSTRT -VPIXEL | Front Porch | Amount of black pixels drawn on the bottom of the screen. |
VSSTOP -VSSTRT | Vertical Sync | Amount of time it takes to move back up to the first line of the screen. |
VTOTAL -VSSTOP | Back Porch | Amount of black pixels drawn to the top of the screen. |
HVSYNC | Flags | Sync Polarity. HSync on High Byte, VSync on Low Byte. |