Splash animation: Difference between revisions

From WSdev Wiki
Jump to navigationJump to search
(Created page with "The WonderSwan Color upgraded the internal EEPROM from 128 bytes to 2 kilobytes; most of the additional space is utilized to allow for branding consoles in the form of unique, custom splash animations on console startup. == Format == {| class="wikitable" |- ! Offset !! Length !! Contents |- | $83 || 1 || WSC-specific configuration. Bit 7 enables custom splash animation. |- | $84 || 1 || Name color |- | $85 || 1 || Must be $00 |- | $86 || 1 || Size; 0 = ends...")
 
m (fix URL)
 
(One intermediate revision by the same user not shown)
Line 41: Line 41:
| $98 || 2 || VBlank IRQ handler offset
| $98 || 2 || VBlank IRQ handler offset
|-
|-
| $9A || 2 || VBlank IRQ handler segment
| $9A || 2 || VBlank IRQ handler segment, must be $0600
|-
|-
| $9C || 1 || Owner name X (horizontal)
| $9C || 1 || Owner name X (horizontal)
Line 114: Line 114:
| 12 || #f07
| 12 || #f07
|}
|}
=== VBlank IRQ handler ===
A custom splash animation ''must'' provide a valid VBlank IRQ handler, with the following rules:
* The segment must be ''0x0600''; the offset is provided relative to ''$80'', as with other data offsets.
* The code must end with a ''retf'' opcode, or equivalent.
=== Horizontal/Vertical orientation handling ===
The splash animation loader will automatically rotate the tile data and tilemap when booting a cartridge whose [[ROM header|header]] declares vertical orientation as its startup orientation.
=== Sound channel data format ===
TODO

Latest revision as of 06:11, 23 August 2023

The WonderSwan Color upgraded the internal EEPROM from 128 bytes to 2 kilobytes; most of the additional space is utilized to allow for branding consoles in the form of unique, custom splash animations on console startup.

Format

Offset Length Contents
$83 1 WSC-specific configuration. Bit 7 enables custom splash animation.
$84 1 Name color
$85 1 Must be $00
$86 1 Size; 0 = ends at <= $3FF, 1 = ends at <= $7FF
$87 1 First frame
$88 1 Last frame
$89 1 Sprite count
$8A 1 Palette flags
$8B 1 Tile count
$8C 2 Palette location - $80
$8E 2 Tile data location - $80
$90 2 Tilemap location - $80
$92 2 Screen offset (Horizontal)
$94 2 Screen offset (Vertical)
$96 1 Tilemap width
$97 1 Tilemap height
$98 2 VBlank IRQ handler offset
$9A 2 VBlank IRQ handler segment, must be $0600
$9C 1 Owner name X (horizontal)
$9D 1 Owner name Y (horizontal)
$9E 1 Owner name X (vertical)
$9F 1 Owner name Y (vertical)
$A0 2 Padding, unused
$A2 2 Sound wavetable location - $80
$A4 2 Sound channel 1 data offset - $80
$A6 2 Sound channel 2 data offset - $80
$A8 2 Sound channel 3 data offset - $80
$AA 2 Sound channel 4 data offset - $80
$AC 10 SwanCrystal TFT LCD configuration
$B6 10 Padding, unused
$C0 ... Arbitrary data - palettes, tilemaps, etc.

Palette flags

7  bit  0
---- ----
b..p pppp
|  +-++++- Palette count (0-16)
+--------- Tile/palette bits per pixel:
             0 = 1 bit per pixel
             1 = 2 bits per pixel

Name colors

Value RGB code
0 #000
1 #f00
2 #f70
3 #ff0
4 #7f0
5 #0f0
6 #0f7
7 #0ff
8 #07f
9 #00f
10 #70f
11 #f0f
12 #f07

VBlank IRQ handler

A custom splash animation must provide a valid VBlank IRQ handler, with the following rules:

  • The segment must be 0x0600; the offset is provided relative to $80, as with other data offsets.
  • The code must end with a retf opcode, or equivalent.

Horizontal/Vertical orientation handling

The splash animation loader will automatically rotate the tile data and tilemap when booting a cartridge whose header declares vertical orientation as its startup orientation.

Sound channel data format

TODO