mirror of
https://github.com/holub/mame
synced 2025-05-09 15:51:48 +03:00
pgm cleanups part 1 (nw)
This commit is contained in:
parent
ff14529dd3
commit
666532e476
@ -4018,15 +4018,15 @@ GAME( 1997, dw2v100x, drgw2, pgm_012_025_drgw2, pgm, pgm_012_025_sta
|
||||
GAME( 1997, drgw2j, drgw2, pgm_012_025_drgw2, pgm, pgm_012_025_state, drgw2j, ROT0, "IGS", "Chuugokuryuu II (ver. 100J, Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1997, drgw2c, drgw2, pgm_012_025_drgw2, pgm, pgm_012_025_state, drgw2c, ROT0, "IGS", "Zhong Guo Long II (ver. 100C, China)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1998, killbld, pgm, pgm_022_025, killbld, pgm_022_025_state, killbld, ROT0, "IGS", "The Killing Blade (ver. 109, Chinese Board)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
|
||||
GAME( 1998, killbld104, killbld, pgm_022_025, killbld, pgm_022_025_state, killbld, ROT0, "IGS", "The Killing Blade (ver. 104)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
|
||||
GAME( 1998, killbld, pgm, pgm_022_025_killbld, killbld, pgm_022_025_state, killbld, ROT0, "IGS", "The Killing Blade (ver. 109, Chinese Board)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
|
||||
GAME( 1998, killbld104, killbld, pgm_022_025_killbld, killbld, pgm_022_025_state, killbld, ROT0, "IGS", "The Killing Blade (ver. 104)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
|
||||
|
||||
// these seem playable but the DMA mode transfering 68k code to RAM is not emulated so there could still be problems
|
||||
GAME( 1998, drgw3, pgm, pgm_022_025, dw3, pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 (ver. 106)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
|
||||
GAME( 1998, drgw3105, drgw3, pgm_022_025, dw3, pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 (ver. 105)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
|
||||
GAME( 1998, drgw3100, drgw3, pgm_022_025, dw3j,pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 (Japan, ver. 100)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // Japan only, has an extra game mode option!
|
||||
GAME( 1998, drgw3, pgm, pgm_022_025_dw3, dw3, pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 (ver. 106)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
|
||||
GAME( 1998, drgw3105, drgw3, pgm_022_025_dw3, dw3, pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 (ver. 105)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
|
||||
GAME( 1998, drgw3100, drgw3, pgm_022_025_dw3, dw3j,pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 (Japan, ver. 100)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // Japan only, has an extra game mode option!
|
||||
|
||||
GAME( 1998, dwex, pgm, pgm_022_025, dw3, pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 EX (ver. 100)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
|
||||
GAME( 1998, dwex, pgm, pgm_022_025_dw3, dw3, pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 EX (ver. 100)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
|
||||
|
||||
// region provided by internal ARM rom
|
||||
GAME( 1999, photoy2k, pgm, pgm_arm_type1, photoy2k, pgm_arm_type1_state, photoy2k, ROT0, "IGS", "Photo Y2K (ver. 105)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
|
||||
|
@ -405,6 +405,7 @@ public:
|
||||
DECLARE_DRIVER_INIT(killbld);
|
||||
DECLARE_DRIVER_INIT(drgw3);
|
||||
DECLARE_MACHINE_RESET(killbld);
|
||||
DECLARE_MACHINE_RESET(dw3);
|
||||
|
||||
void igs025_to_igs022_callback( void );
|
||||
|
||||
@ -532,7 +533,8 @@ MACHINE_CONFIG_EXTERN( pgm_arm_type3 );
|
||||
|
||||
/*----------- defined in machine/pgmprot4.c -----------*/
|
||||
|
||||
MACHINE_CONFIG_EXTERN( pgm_022_025 );
|
||||
MACHINE_CONFIG_EXTERN(pgm_022_025_dw3);
|
||||
MACHINE_CONFIG_EXTERN(pgm_022_025_killbld);
|
||||
|
||||
INPUT_PORTS_EXTERN( killbld );
|
||||
INPUT_PORTS_EXTERN( dw3 );
|
||||
|
@ -148,7 +148,7 @@ void igs025_device::killbld_protection_calculate_hilo()
|
||||
m_kb_prot_hilo_select = 0;
|
||||
}
|
||||
|
||||
source = m_kb_source_data[(ioport(":Region")->read() - m_kb_source_data_offset)][m_kb_prot_hilo_select];
|
||||
source = m_kb_source_data[m_drgw2_protection_region][m_kb_prot_hilo_select];
|
||||
|
||||
if (m_kb_prot_hilo_select & 1)
|
||||
{
|
||||
@ -236,7 +236,7 @@ READ16_MEMBER(igs025_device::killbld_igs025_prot_r )
|
||||
switch (m_kb_ptr)
|
||||
{
|
||||
case 1:
|
||||
return 0x3f00 | ioport(":Region")->read();
|
||||
return 0x3f00 | ((m_kb_game_id >> 0) & 0xff);
|
||||
|
||||
case 2:
|
||||
return 0x3f00 | ((m_kb_game_id >> 8) & 0xff);
|
||||
@ -293,7 +293,7 @@ void igs025_device::olds_protection_calculate_hilo() // calculated in routine $1
|
||||
m_olds_prot_hilo_select = 0;
|
||||
}
|
||||
|
||||
source = olds_source_data[(ioport(":Region")->read())][m_olds_prot_hilo_select];
|
||||
source = olds_source_data[m_drgw2_protection_region][m_olds_prot_hilo_select];
|
||||
|
||||
if (m_olds_prot_hilo_select & 1) // $8178fa
|
||||
{
|
||||
@ -372,16 +372,20 @@ READ16_MEMBER(igs025_device::olds_r )
|
||||
{
|
||||
switch (m_olds_ptr)
|
||||
{
|
||||
case 1: return 0x3f00 | ioport(":Region")->read();
|
||||
case 1:
|
||||
return 0x3f00 | ((m_kb_game_id >> 0) & 0xff);
|
||||
|
||||
case 2:
|
||||
return 0x3f00 | 0x00;
|
||||
return 0x3f00 | ((m_kb_game_id >> 8) & 0xff);
|
||||
|
||||
case 3:
|
||||
return 0x3f00 | 0x90;
|
||||
return 0x3f00 | ((m_kb_game_id >> 16) & 0xff);
|
||||
|
||||
case 4:
|
||||
return 0x3f00 | 0x00;
|
||||
return 0x3f00 | ((m_kb_game_id >> 24) & 0xff);
|
||||
|
||||
|
||||
|
||||
|
||||
case 5:
|
||||
default: // >= 5
|
||||
@ -443,16 +447,17 @@ READ16_MEMBER(igs025_device::drgw2_d80000_protection_r )
|
||||
{
|
||||
switch (m_drgw2_ptr)
|
||||
{
|
||||
case 1: return 0x3f00 | ((m_drgw2_protection_region >> 0) & 0xff);
|
||||
case 1:
|
||||
return 0x3f00 | ((m_kb_game_id >> 0) & 0xff);
|
||||
|
||||
case 2:
|
||||
return 0x3f00 | ((m_drgw2_protection_region >> 8) & 0xff);
|
||||
return 0x3f00 | ((m_kb_game_id >> 8) & 0xff);
|
||||
|
||||
case 3:
|
||||
return 0x3f00 | ((m_drgw2_protection_region >> 16) & 0xff);
|
||||
return 0x3f00 | ((m_kb_game_id >> 16) & 0xff);
|
||||
|
||||
case 4:
|
||||
return 0x3f00 | ((m_drgw2_protection_region >> 24) & 0xff);
|
||||
return 0x3f00 | ((m_kb_game_id >> 24) & 0xff);
|
||||
|
||||
case 5:
|
||||
default:
|
||||
|
@ -149,7 +149,9 @@ DRIVER_INIT_MEMBER(pgm_012_025_state,drgw2)
|
||||
|
||||
drgw2_common_init();
|
||||
|
||||
m_igs025->m_drgw2_protection_region = 0x00000006;
|
||||
int region = 0x06;
|
||||
m_igs025->m_drgw2_protection_region = region;
|
||||
m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
|
||||
|
||||
mem16[0x131098 / 2] = 0x4e93;
|
||||
mem16[0x13113e / 2] = 0x4e93;
|
||||
@ -162,7 +164,9 @@ DRIVER_INIT_MEMBER(pgm_012_025_state,dw2v100x)
|
||||
|
||||
drgw2_common_init();
|
||||
|
||||
m_igs025->m_drgw2_protection_region = 0x00000006;
|
||||
int region = 0x06;
|
||||
m_igs025->m_drgw2_protection_region = region;
|
||||
m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
|
||||
|
||||
mem16[0x131084 / 2] = 0x4e93;
|
||||
mem16[0x13112a / 2] = 0x4e93;
|
||||
@ -175,7 +179,9 @@ DRIVER_INIT_MEMBER(pgm_012_025_state,drgw2c)
|
||||
|
||||
drgw2_common_init();
|
||||
|
||||
m_igs025->m_drgw2_protection_region = 0x00000005;
|
||||
int region = 0x05;
|
||||
m_igs025->m_drgw2_protection_region = region;
|
||||
m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
|
||||
|
||||
mem16[0x1303bc / 2] = 0x4e93;
|
||||
mem16[0x130462 / 2] = 0x4e93;
|
||||
@ -188,7 +194,9 @@ DRIVER_INIT_MEMBER(pgm_012_025_state,drgw2j)
|
||||
|
||||
drgw2_common_init();
|
||||
|
||||
m_igs025->m_drgw2_protection_region = 0x00000001;
|
||||
int region = 0x01;
|
||||
m_igs025->m_drgw2_protection_region = region;
|
||||
m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
|
||||
|
||||
mem16[0x1302c0 / 2] = 0x4e93;
|
||||
mem16[0x130366 / 2] = 0x4e93;
|
||||
|
@ -312,9 +312,27 @@ static const UINT8 dw3_source_data[0x08][0xec] =
|
||||
|
||||
MACHINE_RESET_MEMBER(pgm_022_025_state,killbld)
|
||||
{
|
||||
int region = (ioport(":Region")->read()) & 0xff;
|
||||
|
||||
m_igs025->m_drgw2_protection_region = region - 0x16;
|
||||
m_igs025->m_kb_game_id = 0x89911400 | region;
|
||||
|
||||
MACHINE_RESET_CALL_MEMBER(pgm);
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(pgm_022_025_state, dw3)
|
||||
{
|
||||
int region = (ioport(":Region")->read()) & 0xff;
|
||||
|
||||
m_igs025->m_drgw2_protection_region = region;
|
||||
m_igs025->m_kb_game_id = 0x00060000 | region;
|
||||
|
||||
MACHINE_RESET_CALL_MEMBER(pgm);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void pgm_022_025_state::igs025_to_igs022_callback( void )
|
||||
{
|
||||
// printf("igs025_to_igs022_callback\n");
|
||||
@ -333,7 +351,6 @@ DRIVER_INIT_MEMBER(pgm_022_025_state,killbld)
|
||||
m_igs022->m_sharedprotram = m_sharedprotram;
|
||||
m_igs025->m_kb_source_data = killbld_source_data;
|
||||
m_igs025->m_kb_source_data_offset = 0x16;
|
||||
m_igs025->m_kb_game_id = 0x89911400;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(pgm_022_025_state,drgw3)
|
||||
@ -346,7 +363,6 @@ DRIVER_INIT_MEMBER(pgm_022_025_state,drgw3)
|
||||
m_igs022->m_sharedprotram = m_sharedprotram;
|
||||
m_igs025->m_kb_source_data = dw3_source_data;
|
||||
m_igs025->m_kb_source_data_offset = 0;
|
||||
m_igs025->m_kb_game_id = 0x00060000;
|
||||
}
|
||||
|
||||
|
||||
@ -368,7 +384,14 @@ MACHINE_CONFIG_START( pgm_022_025, pgm_022_025_state )
|
||||
|
||||
MCFG_DEVICE_ADD("igs022", IGS022, 0)
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(pgm_022_025_state,killbld)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_DERIVED(pgm_022_025_dw3, pgm_022_025)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(pgm_022_025_state, dw3)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_DERIVED(pgm_022_025_killbld, pgm_022_025)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(pgm_022_025_state, killbld)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
@ -151,9 +151,12 @@ static const UINT8 olds_source_data[8][0xec] = // table addresses $2951CA
|
||||
|
||||
MACHINE_RESET_MEMBER(pgm_028_025_state,olds)
|
||||
{
|
||||
int region = (ioport(":Region")->read()) & 0xff;
|
||||
|
||||
m_igs025->m_drgw2_protection_region = region;
|
||||
m_igs025->m_kb_game_id = 0x00900000 | region;
|
||||
|
||||
MACHINE_RESET_CALL_MEMBER(pgm);
|
||||
|
||||
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(pgm_028_025_state,olds)
|
||||
|
Loading…
Reference in New Issue
Block a user