Eyecatcher: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
(Description of the BIOS Eye Catcher routine)
 
 
(17 intermediate revisions by 5 users not shown)
Line 1: Line 1:
The eye-catcher animation coded in the BIOS comprises both sprites and FIX layer tiles. The graphics data for both must be provided in the cartridge sprite and FIX ROM images.
[[File:Eyecatcher.gif|frame|Original eye-catcher animation.]]


The revolving NEO.GEO graphic consists of sprites (TBD).
[[File:Eyecatcher_giga.gif|frame|"Giga shock" animation.]]


The "MAX 330 MEGA" & "PRO-GEAR SPEC" text as seen on smaller/early-release cartridges (eg. Puzzle De Pon) comprises FIX-layer tiles. The tiles used are defined in the BIOS ROM @$C1F34A. Each line of text is itself two (2) FIX-layer tiles high, and is animated using a 'wipe in' effect from left-to-right to render each line in turn. These are the tiles used to display each line of text:
[[File:Gigapowervliner.gif|frame|Imitated, wonky animation in[[V-Liner]].]]
"Eye-catcher" is the name officially given by SNK to the bootup animation.
 
=Original animation=
 
The [[system ROM]] takes care of the animation, but the graphics data for both [[sprites]] and [[fix layer]] must be provided by the game in its {{Chipname|C ROM}}s and {{Chipname|S ROM}}.
 
==NEO-GEO logo==
The revolving NEO.GEO graphic consists of sprites (the bank of tiles is specified by the byte in the [[68k program header]] at address $115).
 
58 tiles make up the main logo image. They are laid out row by row. The logo starts out mirrored horizontally, but once the animation completes the final layout is
 
[[File:EyecatcherLogoTilesLayout.png|eyecatcher logo tile layout]]
 
Tile 256 (the 0xff index in the CROM) is also used as a blank tile. It pads out the sides of the logo as well as files in the blank areas when the logo is scaling down and then back up. Using a CROM where each tile is a number, one can see the full layout of the main logo once it has completed animating
 
[[File:DebugEyecatcherTiles.png|eyecatcher logo tile layout]]
 
The palette is updated on the fly from data stored in the system ROM ($01F03E in {{Chipname|SP-S2}}) to implement the fading effect.
 
==MAX 330 MEGA==
The "MAX 330 MEGA" & "PRO-GEAR SPEC" text as seen on small or early cartridges (eg. [[Puzzle De Pon!]]) is drawn on the fix layer with tiles from banks 0 and 1. The tilemap is stored in the system ROM ($01F34A in SP-S2). Each line of text is 2 fix tiles in height, and is animated using a 'wipe in' effect from left-to-right.
 
The tiles used to display each line of text are:


<syntaxhighlight>
<syntaxhighlight>
Line 19: Line 42:
</syntaxhighlight>
</syntaxhighlight>


Both the revolving logo and the FIX-layer text utilise palette #15. For the revolving logo, the palette is updated on-the-fly (from data stored in the BIOS ROM @$C1F03E) to implement the fade effect.
This can be useful to customize the text in a S ROM.
 
==SNK logo==
The SNK logo is also drawn on the fix layer, with tiles of bank 2. It is always drawn but actually made visible at the end of the animation by switching its palette.
 
<syntaxhighlight>
static const uint16_t SNK[3][10] =
{
  { 0x200, 0x201, 0x202, 0x203, 0x204, 0x205, 0x206, 0x207, 0x208, 0x209 },
  { 0x20A, 0x20B, 0x20C, 0x20D, 0x20E, 0x20F, 0x214, 0x215, 0x216, 0x217 },
  { 0x218, 0x219, 0x21A, 0x21B, 0x21C, 0x21D, 0x21E, 0x21F, 0x240, 0x25E }
};
</syntaxhighlight>
 
The copyright "©" symbol is a single tile ($7B) written to [[VRAM]] adress $7469.


Before the FIX-layer text is displayed, the following data is written to palette #15:
The tiles are set to [[palettes|palette]] 15. The colour 5 is initially black ($0000) and then faded-in through a cycle of progressively brighter blues to a final value of $306E.
 
==Palettes==
Both the revolving logo and the fix layer text use palette 15.
 
Here is the *final* data written to palette 15:


<syntaxhighlight>
<syntaxhighlight>
static const uint16_t eye_catcher_pal[] =  
static const uint16_t eye_catcher_pal[] =  
{
{
   0x0000, 0x0fff, 0x0ddd, 0x0aaa, 0x7555, 0x0000, 0x0000, 0x0000,
   0x0000, 0x0fff, 0x0ddd, 0x0aaa, 0x7555, 0x306E, 0x0000, 0x0000,
   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};
};
</syntaxhighlight>
</syntaxhighlight>


SNK Logo consists of (TBD)
==Customization==
By replacing the tile data for the above tile numbers with alternate text or graphics, it is possible to somewhat customize the eye-catcher screen without requiring a custom eye-catcher routine in the game cartridge itself.
 
When replacing the graphics, the tiles for the logo and wording should use colors 1-4 in the palette, the SNK logo replacement should use color 5, and like all palettes, color 0 will be treated as transparent.
 
Also, the tiles at $FF in both CROM and SROM must be blank. Tile $FF in SROM is used in the "PRO-GEAR SPEC" display (see array data above) and is also used as the blank/space character for the entire screen. Thus this tile cannot be changed without replicating it over the entire fix layer.
 
Tile $FF in CROM is used during the main logo animation, both when it is scaling the logo down and back up again during the animation, as well as on the left and right sides of the logo. So it too should be blank.


It would be possible, then, by replacing the FIX-layer tile data for the above tiles with alternate text/graphics to create a somewhat customised eye catcher without requiring a custom eye-catcher routine in the game cartridge itself.
[[Category:Code]]
[[Category:Video system]]

Latest revision as of 20:41, 26 November 2023

Original eye-catcher animation.
"Giga shock" animation.
File:Gigapowervliner.gif
Imitated, wonky animation inV-Liner.

"Eye-catcher" is the name officially given by SNK to the bootup animation.

Original animation

The system ROM takes care of the animation, but the graphics data for both sprites and fix layer must be provided by the game in its C ROMs and S ROM.

The revolving NEO.GEO graphic consists of sprites (the bank of tiles is specified by the byte in the 68k program header at address $115).

58 tiles make up the main logo image. They are laid out row by row. The logo starts out mirrored horizontally, but once the animation completes the final layout is

eyecatcher logo tile layout

Tile 256 (the 0xff index in the CROM) is also used as a blank tile. It pads out the sides of the logo as well as files in the blank areas when the logo is scaling down and then back up. Using a CROM where each tile is a number, one can see the full layout of the main logo once it has completed animating

eyecatcher logo tile layout

The palette is updated on the fly from data stored in the system ROM ($01F03E in SP-S2) to implement the fading effect.

MAX 330 MEGA

The "MAX 330 MEGA" & "PRO-GEAR SPEC" text as seen on small or early cartridges (eg. Puzzle De Pon!) is drawn on the fix layer with tiles from banks 0 and 1. The tilemap is stored in the system ROM ($01F34A in SP-S2). Each line of text is 2 fix tiles in height, and is animated using a 'wipe in' effect from left-to-right.

The tiles used to display each line of text are:

static const uint16_t max_330_mega[2][15] =
{
  { 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F, 0x5E, 0x60, 0x7D },
  { 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E, 0x40, 0x5F, 0x7C, 0x7E }
};
			
static const uint16_t pro_gear_spec[2][17] =
{
  { 0x7F, 0x9A, 0x9C, 0x9E, 0xFF, 0xBB, 0xBD, 0xBF, 0xDA, 0xDC, 0xDE, 0xFA, 0xFC, 0x100, 0x102, 0x104, 0x106 },
  { 0x99, 0x9B, 0x9D, 0x9F, 0xBA, 0xBC, 0xBE, 0xD9, 0xDB, 0xDD, 0xDF, 0xFB, 0xFD, 0x101, 0x103, 0x105, 0x107 }
};

This can be useful to customize the text in a S ROM.

The SNK logo is also drawn on the fix layer, with tiles of bank 2. It is always drawn but actually made visible at the end of the animation by switching its palette.

static const uint16_t SNK[3][10] = 
{
  { 0x200, 0x201, 0x202, 0x203, 0x204, 0x205, 0x206, 0x207, 0x208, 0x209 },
  { 0x20A, 0x20B, 0x20C, 0x20D, 0x20E, 0x20F, 0x214, 0x215, 0x216, 0x217 },
  { 0x218, 0x219, 0x21A, 0x21B, 0x21C, 0x21D, 0x21E, 0x21F, 0x240, 0x25E }
};

The copyright "©" symbol is a single tile ($7B) written to VRAM adress $7469.

The tiles are set to palette 15. The colour 5 is initially black ($0000) and then faded-in through a cycle of progressively brighter blues to a final value of $306E.

Palettes

Both the revolving logo and the fix layer text use palette 15.

Here is the *final* data written to palette 15:

static const uint16_t eye_catcher_pal[] = 
{
  0x0000, 0x0fff, 0x0ddd, 0x0aaa, 0x7555, 0x306E, 0x0000, 0x0000,
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};

Customization

By replacing the tile data for the above tile numbers with alternate text or graphics, it is possible to somewhat customize the eye-catcher screen without requiring a custom eye-catcher routine in the game cartridge itself.

When replacing the graphics, the tiles for the logo and wording should use colors 1-4 in the palette, the SNK logo replacement should use color 5, and like all palettes, color 0 will be treated as transparent.

Also, the tiles at $FF in both CROM and SROM must be blank. Tile $FF in SROM is used in the "PRO-GEAR SPEC" display (see array data above) and is also used as the blank/space character for the entire screen. Thus this tile cannot be changed without replicating it over the entire fix layer.

Tile $FF in CROM is used during the main logo animation, both when it is scaling the logo down and back up again during the animation, as well as on the left and right sides of the logo. So it too should be blank.