mirror of
https://github.com/holub/mame
synced 2025-05-22 05:38:52 +03:00
Clean-ups in the ST-V driver and corrected protection number seeds for elandore.
This commit is contained in:
parent
bc72141598
commit
ecffdc96cb
@ -143,7 +143,7 @@ ToDo / Notes:
|
||||
-Protection issues:
|
||||
\-ffreveng: boot vectors;
|
||||
\-decathlt: in-game graphics;
|
||||
\-elandore: human textures;
|
||||
\-elandore: human / dragons textures;
|
||||
\-twcup98: tecmo logo / sprite movements;
|
||||
\-astrass: text layer (kludged for now);
|
||||
|
||||
|
@ -9,10 +9,10 @@
|
||||
Known Protected ST-V Games
|
||||
|
||||
Astra Superstars (text layer gfx transfer)
|
||||
Elandoree (gfx transfer of textures for some characters)
|
||||
Elandoree (gfx transfer of textures)
|
||||
Final Fight Revenge (boot vectors etc.?)
|
||||
Radiant Silvergun (game start protection)
|
||||
Steep Slope Sliders (gfx transfer of some character portraits)
|
||||
Radiant Silvergun (game start protection ?)
|
||||
Steep Slope Sliders (gfx transfer of character portraits)
|
||||
Decathlete (transfer of all gfx data)
|
||||
Tecmo World Cup '98 (tecmo logo, player movement?)
|
||||
|
||||
@ -48,7 +48,15 @@ the data used by the games in the various circumstances for reference:
|
||||
[0] [1] [2] [3]
|
||||
No protection test mode
|
||||
No protection attract mode
|
||||
0x000y0000 0x00000000 0xe69000f9 0xff7f0000 gameplay,VDP-1 write (textures on humans)
|
||||
0x000y0000 0x00000000 0x****00** 0xff7f0000 gameplay,VDP-1 write (textures on humans)
|
||||
0x000y0000 0x00000000 0x****00** 0xffbf0000 gameplay,VDP-1 write (textures on humans)
|
||||
|
||||
0x000y0000 0x00000000 0x****00** 0xf9ff0000 gameplay,VDP-1 write (textures on dragons)
|
||||
0x000y0000 0x00000000 0x****00** 0xfbff0000 gameplay,VDP-1 write (textures on dragons)
|
||||
0x000y0000 0x00000000 0x****00** 0xfe7f0000 gameplay,VDP-1 write (textures on dragons)
|
||||
0x000y0000 0x00000000 0x****00** 0xfd7f0000 gameplay,VDP-1 write (textures on dragons)
|
||||
0x000y0000 0x00000000 0x****00** 0xfeff0000 gameplay,VDP-1 write (textures on dragons)
|
||||
0x000y0000 0x00000000 0x****00** 0xf9bf0000 gameplay,VDP-1 write (textures on dragons)
|
||||
|
||||
-Final Fight Revenge [ffreveng]
|
||||
[0] [1] [2] [3]
|
||||
@ -118,6 +126,17 @@ Wrong vectors (at least not where I tested it):
|
||||
*/
|
||||
static const UINT32 vector_prot[] = { 0x0603B1B2,0x234 };
|
||||
|
||||
#define ELANDORE_CTRL_1_HUMAN 0xff7f0000
|
||||
#define ELANDORE_CTRL_2_HUMAN 0xffbf0000
|
||||
|
||||
#define ELANDORE_CTRL_1_DRAGON 0xf9ff0000
|
||||
#define ELANDORE_CTRL_2_DRAGON 0xfbff0000
|
||||
#define ELANDORE_CTRL_3_DRAGON 0xfe7f0000
|
||||
#define ELANDORE_CTRL_4_DRAGON 0xfd7f0000
|
||||
#define ELANDORE_CTRL_5_DRAGON 0xfeff0000
|
||||
#define ELANDORE_CTRL_6_DRAGON 0xf9bf0000
|
||||
|
||||
|
||||
static READ32_HANDLER( a_bus_ctrl_r )
|
||||
{
|
||||
UINT32 *ROM = (UINT32 *)memory_region(machine, "user1");
|
||||
@ -228,14 +247,15 @@ static READ32_HANDLER( a_bus_ctrl_r )
|
||||
ctrl_index += 4;
|
||||
return val;
|
||||
}
|
||||
case 0xff7f0000://elandore
|
||||
if(a_bus[2] == 0xe69000f9)
|
||||
{
|
||||
ctrl_index++;
|
||||
return ROM[ctrl_index];
|
||||
}
|
||||
else return 0x12345678;
|
||||
case 0xffbf0000:
|
||||
//elandore
|
||||
case ELANDORE_CTRL_1_HUMAN:
|
||||
case ELANDORE_CTRL_2_HUMAN:
|
||||
case ELANDORE_CTRL_1_DRAGON:
|
||||
case ELANDORE_CTRL_2_DRAGON:
|
||||
case ELANDORE_CTRL_3_DRAGON:
|
||||
case ELANDORE_CTRL_4_DRAGON:
|
||||
case ELANDORE_CTRL_5_DRAGON:
|
||||
case ELANDORE_CTRL_6_DRAGON:
|
||||
ctrl_index++;
|
||||
return ROM[ctrl_index];
|
||||
}
|
||||
@ -255,6 +275,7 @@ static WRITE32_HANDLER ( a_bus_ctrl_w )
|
||||
logerror("A-Bus control protection write at %06x: [%02x] <- %08x\n",activecpu_get_pc(),offset,data);
|
||||
if(offset == 3)
|
||||
{
|
||||
//printf("MAIN : %08x DATA : %08x\n",a_bus[3],a_bus[2]);
|
||||
switch(a_bus[3])
|
||||
{
|
||||
/*astrass,I need an original test mode screen to compare...*/
|
||||
@ -277,8 +298,30 @@ static WRITE32_HANDLER ( a_bus_ctrl_w )
|
||||
/*rsgun*/
|
||||
case 0x77770000: ctrl_index = 0; break;
|
||||
/*elandore*/
|
||||
case 0xff7f0000: ctrl_index = ((0x400000)/4)-1; break;
|
||||
case 0xffbf0000: ctrl_index = (0x1c40000/4)-1; break;
|
||||
case ELANDORE_CTRL_1_HUMAN: // (human polygons)
|
||||
ctrl_index = ((0x00000000/4) + ((a_bus[2] & 0xff)<<16) + ((a_bus[2] & 0xffff0000)>>16)/4)-1;
|
||||
break;
|
||||
case ELANDORE_CTRL_2_HUMAN: // (human polygons)
|
||||
ctrl_index = ((0x00000000/4) + ((a_bus[2] & 0xff)<<16) + ((a_bus[2] & 0xffff0000)>>16)/4)-1;
|
||||
break;
|
||||
case ELANDORE_CTRL_1_DRAGON://KAIN / THUNDER (dragon polygons)
|
||||
ctrl_index = ((0x00000000/4) + ((a_bus[2] & 0xff)<<16) + ((a_bus[2] & 0xffff0000)>>16)/4)-1;
|
||||
break;
|
||||
case ELANDORE_CTRL_2_DRAGON://REVI CURIO / DARK (dragon polygons)
|
||||
ctrl_index = ((0x00000000/4) + ((a_bus[2] & 0xff)<<16) + ((a_bus[2] & 0xffff0000)>>16)/4)-1;
|
||||
break;
|
||||
case ELANDORE_CTRL_3_DRAGON://RUBONE / POISON (dragon polygons)
|
||||
ctrl_index = ((0x00000000/4) + ((a_bus[2] & 0xff)<<16) + ((a_bus[2] & 0xffff0000)>>16)/4)-1;
|
||||
break;
|
||||
case ELANDORE_CTRL_4_DRAGON://TINA / MAGICAL GIRL (dragon polygons)
|
||||
ctrl_index = ((0x00000000/4) + ((a_bus[2] & 0xff)<<16) + ((a_bus[2] & 0xffff0000)>>16)/4)-1;
|
||||
break;
|
||||
case ELANDORE_CTRL_5_DRAGON://KEYAKI / FIRE (dragon polygons)
|
||||
ctrl_index = ((0x00000000/4) + ((a_bus[2] & 0xff)<<16) + ((a_bus[2] & 0xffff0000)>>16)/4)-1;
|
||||
break;
|
||||
case ELANDORE_CTRL_6_DRAGON://SION / WIND (dragon polygons)
|
||||
ctrl_index = ((0x00000000/4) + ((a_bus[2] & 0xff)<<16) + ((a_bus[2] & 0xffff0000)>>16)/4)-1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//popmessage("%04x %04x",data,offset/4);
|
||||
|
@ -27,26 +27,28 @@ RBG1
|
||||
-- other crap
|
||||
EXBG (external)
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
-----------------------------------------------------------------------------------------------------------
|
||||
|
||||
Video emulation TODO:
|
||||
-all games:
|
||||
\-priorities (check myfairld,thunt)
|
||||
\-complete windows effects
|
||||
\-mosaic effect
|
||||
\-ODD bit/H/V Counter not yet emulated.
|
||||
\-Missing
|
||||
\-ODD bit/H/V Counter not yet emulated properly
|
||||
\-Reduction enable bits
|
||||
\-Check if there are any remaining video registers that are yet to be macroized & added to the rumble.
|
||||
-batmanfr:
|
||||
\-If you reset the game after the character selection screen,when you get again to it there's garbage
|
||||
floating behind Batman.
|
||||
-elandore:
|
||||
\-(BTANB) priorities at the VS. screen apparently is wrong,but it's like this on the Saturn version too.
|
||||
-hanagumi:
|
||||
\-ending screens have corrupt graphics. (*untested*)
|
||||
-kiwames:
|
||||
\-incorrect color emulation for the alpha blended flames on the title screen,it's caused by a bit
|
||||
that writes 1 to the NBG1 bitmap color bank.It should be 0 but I don't know what is going on,
|
||||
might be a SH-2 / irq issue.
|
||||
\-incorrect color emulation for the alpha blended flames on the title screen,it's caused by a schizoid
|
||||
linescroll emulation quirk.
|
||||
\-the VDP1 sprites refresh is too slow,causing the "Draw by request" mode to
|
||||
flicker.Moved back to default ATM...
|
||||
flicker.Moved back to default ATM.
|
||||
-pblbeach:
|
||||
\-Sprites are offset, because it doesn't clear vdp1 local coordinates set by bios,
|
||||
I guess that they are cleared when some vdp1 register is written (kludged for now)
|
||||
@ -56,26 +58,20 @@ Video emulation TODO:
|
||||
-seabass:
|
||||
\-Player sprite is corrupt/missing during movements,caused by incomplete framebuffer switching.
|
||||
|
||||
Notes of Interest:
|
||||
Notes of Interest & Unclear features:
|
||||
|
||||
-the test mode / bios is drawn with layer NBG3;
|
||||
|
||||
-hanagumi Puts a 'RED' dragon logo in tileram (base 0x64000, 4bpp, 8x8 tiles) but
|
||||
its not displayed in gurus video.Update:It's actually not drawn because its
|
||||
priority value is 0;
|
||||
-hanagumi puts a 'RED' dragon logo in tileram (base 0x64000, 4bpp, 8x8 tiles) but
|
||||
its not displayed because its priority value is 0.Left-over?
|
||||
|
||||
-scrolling is screen display wise,meaning that a scrolling value is masked with the
|
||||
screen resolution size values;
|
||||
|
||||
-Bitmaps USES transparency pens,examples are:
|
||||
elandore's energy bars;
|
||||
mausuke's foreground(the one used on the playfield)(I guess that this is also
|
||||
alpha-blended);
|
||||
shanhigw's tile-based sprites;
|
||||
|
||||
for now I've removed black pixels,it isn't 100% right so there MUST BE a better way
|
||||
for this...
|
||||
Update: some games uses transparent windows,others uses a transparency pen table like this:
|
||||
-Bitmaps uses transparency pens,examples are:
|
||||
\-elandore's energy bars;
|
||||
\-mausuke's foreground(the one used on the playfield)
|
||||
\-shanhigw's tile-based sprites;
|
||||
The transparency pen table is like this:
|
||||
|
||||
|------------------|---------------------|
|
||||
| Character count | Transparency code |
|
||||
@ -86,8 +82,9 @@ Update: some games uses transparent windows,others uses a transparency pen table
|
||||
| 32,768 colors |MSB=0 (bit 15) |
|
||||
| 16,770,000 colors|MSB=0 (bit 31) |
|
||||
|------------------|---------------------|
|
||||
In other words,the first three types uses the offset and not the color allocated.
|
||||
|
||||
In other words,the first three types uses the offset and not the color allocated...
|
||||
-double density interlace setting (LSMD == 3) apparently does a lot of fancy stuff in the graphics sizes.
|
||||
|
||||
-Debug key list(only if you enable the debug mode on top of this file):
|
||||
\-T: NBG3 layer toggle
|
||||
@ -5565,6 +5562,9 @@ static int stv_vdp2_window_process(int x,int y)
|
||||
{
|
||||
UINT16 s_x=0,e_x=0,s_y=0,e_y=0;
|
||||
|
||||
if ((stv2_current_tilemap.window_control & 6) == 0)
|
||||
return 0;
|
||||
|
||||
stv_vdp2_get_window0_coordinates(&s_x, &e_x, &s_y, &e_y);
|
||||
|
||||
if(stv2_current_tilemap.window_control & 2)
|
||||
|
Loading…
Reference in New Issue
Block a user