Difference between revisions of "Eyecatcher"

From NeoGeo Development Wiki
Jump to: navigation, search
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.
 
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.
  
 +
==NEO-GEO LOGO==
 
The revolving NEO.GEO graphic consists of sprites (TBD).
 
The revolving NEO.GEO graphic consists of sprites (TBD).
  
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:
+
The palette is updated on-the-fly (from data stored in the BIOS (SP-S2) ROM @$C1F03E) to implement the fade effect.
 +
 
 +
==MAX 330 MEGA==
 +
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 (SP-S2) 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:
  
 
<syntaxhighlight>
 
<syntaxhighlight>
Line 19: Line 23:
 
</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.
+
==SNK LOGO==
 +
The SNK Logo consists of FIX-layer text which is actually rendered (invisible) at the start of the eye-catcher routine.
 +
 
 +
<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 "(C)" symbol is a single tile (0x7B) written to VRAM adress 0x7469.
 +
 
 +
The logo tiles are palette #15, colour #5 which is initially BLACK (0x0000) and then faded-in through a cycle of progressively brighter blues to a final value of 0x306E.
 +
 
 +
==PALETTE==
 +
Both the revolving logo and the FIX-layer text utilise palette #15.
  
Before the FIX-layer text is displayed, the following data is written to 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)
+
==CUSTOMISATION==
 +
It is 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.
  
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.
+
The only caveat is that tile #0xFF 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 background.
  
 
[[Category:Code]]
 
[[Category:Code]]

Revision as of 13:39, 23 July 2014

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.

The revolving NEO.GEO graphic consists of sprites (TBD).

The palette is updated on-the-fly (from data stored in the BIOS (SP-S2) ROM @$C1F03E) to implement the fade effect.

MAX 330 MEGA

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 (SP-S2) 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:

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 }
};

The SNK Logo consists of FIX-layer text which is actually rendered (invisible) at the start of the eye-catcher routine.

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 "(C)" symbol is a single tile (0x7B) written to VRAM adress 0x7469.

The logo tiles are palette #15, colour #5 which is initially BLACK (0x0000) and then faded-in through a cycle of progressively brighter blues to a final value of 0x306E.

PALETTE

Both the revolving logo and the FIX-layer text utilise 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
};

CUSTOMISATION

It is 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.

The only caveat is that tile #0xFF 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 background.