mirror of
https://github.com/holub/mame
synced 2025-05-10 00:01:52 +03:00
part 3 (nw)
This commit is contained in:
parent
ec40506c6a
commit
fa74638458
@ -94,28 +94,9 @@ void igs025_device::device_reset()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
void igs025_device::killbld_protection_calculate_hilo()
|
/* WRITE */
|
||||||
{
|
/****************************************/
|
||||||
UINT8 source;
|
|
||||||
|
|
||||||
m_kb_prot_hilo_select++;
|
|
||||||
|
|
||||||
if (m_kb_prot_hilo_select > 0xeb) {
|
|
||||||
m_kb_prot_hilo_select = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
source = m_kb_source_data[m_drgw2_protection_region][m_kb_prot_hilo_select];
|
|
||||||
|
|
||||||
if (m_kb_prot_hilo_select & 1)
|
|
||||||
{
|
|
||||||
m_kb_prot_hilo = (m_kb_prot_hilo & 0x00ff) | (source << 8);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_kb_prot_hilo = (m_kb_prot_hilo & 0xff00) | (source << 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
WRITE16_MEMBER(igs025_device::killbld_igs025_prot_w )
|
WRITE16_MEMBER(igs025_device::killbld_igs025_prot_w )
|
||||||
{
|
{
|
||||||
@ -176,78 +157,6 @@ WRITE16_MEMBER(igs025_device::killbld_igs025_prot_w )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
READ16_MEMBER(igs025_device::killbld_igs025_prot_r )
|
|
||||||
{
|
|
||||||
if (offset)
|
|
||||||
{
|
|
||||||
switch (m_kb_cmd)
|
|
||||||
{
|
|
||||||
case 0x00:
|
|
||||||
return BITSWAP8((m_kb_swap+1) & 0x7f, 0,1,2,3,4,5,6,7); // drgw3
|
|
||||||
|
|
||||||
case 0x01:
|
|
||||||
return m_kb_reg & 0x7f;
|
|
||||||
|
|
||||||
case 0x05:
|
|
||||||
{
|
|
||||||
switch (m_kb_ptr)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
return 0x3f00 | ((m_kb_game_id >> 0) & 0xff);
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
return 0x3f00 | ((m_kb_game_id >> 8) & 0xff);
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
return 0x3f00 | ((m_kb_game_id >> 16) & 0xff);
|
|
||||||
|
|
||||||
case 4:
|
|
||||||
return 0x3f00 | ((m_kb_game_id >> 24) & 0xff);
|
|
||||||
|
|
||||||
default: // >= 5
|
|
||||||
return 0x3f00 | BITSWAP8(m_kb_prot_hold, 5,2,9,7,10,13,12,15);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
case 0x40:
|
|
||||||
killbld_protection_calculate_hilo();
|
|
||||||
return 0; // Read and then discarded
|
|
||||||
|
|
||||||
// default:
|
|
||||||
// logerror("%06X: ASIC25 R CMD %X\n", space.device().safe_pc(), m_kb_cmd);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* todo, collapse this all into above */
|
|
||||||
|
|
||||||
|
|
||||||
void igs025_device::olds_protection_calculate_hilo() // calculated in routine $12dbc2 in olds
|
|
||||||
{
|
|
||||||
UINT8 source;
|
|
||||||
|
|
||||||
m_kb_prot_hilo_select++;
|
|
||||||
if (m_kb_prot_hilo_select > 0xeb) {
|
|
||||||
m_kb_prot_hilo_select = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
source = olds_source_data[m_drgw2_protection_region][m_kb_prot_hilo_select];
|
|
||||||
|
|
||||||
if (m_kb_prot_hilo_select & 1) // $8178fa
|
|
||||||
{
|
|
||||||
m_kb_prot_hilo = (m_kb_prot_hilo & 0x00ff) | (source << 8); // $8178d8
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_kb_prot_hilo = (m_kb_prot_hilo & 0xff00) | (source << 0); // $8178d8
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
WRITE16_MEMBER(igs025_device::olds_w )
|
WRITE16_MEMBER(igs025_device::olds_w )
|
||||||
{
|
{
|
||||||
if (offset == 0)
|
if (offset == 0)
|
||||||
@ -296,124 +205,10 @@ WRITE16_MEMBER(igs025_device::olds_w )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
READ16_MEMBER(igs025_device::olds_r )
|
|
||||||
{
|
|
||||||
if (offset)
|
|
||||||
{
|
|
||||||
switch (m_kb_cmd)
|
|
||||||
{
|
|
||||||
case 0x01:
|
|
||||||
return m_kb_reg & 0x7f;
|
|
||||||
|
|
||||||
case 0x02:
|
|
||||||
return m_olds_bs | 0x80;
|
|
||||||
|
|
||||||
case 0x03:
|
|
||||||
return m_kb_cmd3;
|
|
||||||
|
|
||||||
case 0x05:
|
|
||||||
{
|
|
||||||
switch (m_kb_ptr)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
return 0x3f00 | ((m_kb_game_id >> 0) & 0xff);
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
return 0x3f00 | ((m_kb_game_id >> 8) & 0xff);
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
return 0x3f00 | ((m_kb_game_id >> 16) & 0xff);
|
|
||||||
|
|
||||||
case 4:
|
|
||||||
return 0x3f00 | ((m_kb_game_id >> 24) & 0xff);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
case 5:
|
|
||||||
default: // >= 5
|
|
||||||
return 0x3f00 | BITSWAP8(m_kb_prot_hold, 5,2,9,7,10,13,12,15); // $817906
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
case 0x40:
|
|
||||||
olds_protection_calculate_hilo();
|
|
||||||
return 0; // unused?
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void igs025_device::drgw2_protection_calculate_hilo()
|
|
||||||
{
|
|
||||||
UINT8 source;
|
|
||||||
|
|
||||||
m_kb_prot_hilo_select++;
|
|
||||||
if (m_kb_prot_hilo_select > 0xeb) {
|
|
||||||
m_kb_prot_hilo_select = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
source = m_drgw2_source_data[m_drgw2_protection_region][m_kb_prot_hilo_select];
|
|
||||||
|
|
||||||
if (m_kb_prot_hilo_select & 1)
|
|
||||||
{
|
|
||||||
m_kb_prot_hilo = (m_kb_prot_hilo & 0x00ff) | (source << 8);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_kb_prot_hilo = (m_kb_prot_hilo & 0xff00) | (source << 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
READ16_MEMBER(igs025_device::drgw2_d80000_protection_r )
|
|
||||||
{
|
|
||||||
switch (m_kb_cmd)
|
|
||||||
{
|
|
||||||
case 0x05:
|
|
||||||
{
|
|
||||||
switch (m_kb_ptr)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
return 0x3f00 | ((m_kb_game_id >> 0) & 0xff);
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
return 0x3f00 | ((m_kb_game_id >> 8) & 0xff);
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
return 0x3f00 | ((m_kb_game_id >> 16) & 0xff);
|
|
||||||
|
|
||||||
case 4:
|
|
||||||
return 0x3f00 | ((m_kb_game_id >> 24) & 0xff);
|
|
||||||
|
|
||||||
case 5:
|
|
||||||
default:
|
|
||||||
return 0x3f00 | BITSWAP8(m_kb_prot_hold, 5,2,9,7,10,13,12,15);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0x3f00;
|
|
||||||
}
|
|
||||||
|
|
||||||
case 0x40:
|
|
||||||
drgw2_protection_calculate_hilo();
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
// case 0x13: // Read to $80eeb8
|
|
||||||
// case 0x1f: // Read to $80eeb8
|
|
||||||
// case 0xf4: // Read to $80eeb8
|
|
||||||
// case 0xf6: // Read to $80eeb8
|
|
||||||
// case 0xf8: // Read to $80eeb8
|
|
||||||
// return 0;
|
|
||||||
|
|
||||||
// default:
|
|
||||||
// logerror("%06x: warning, reading with igs003_reg = %02x\n", space.device().safe_pc(), m_kb_cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
WRITE16_MEMBER(igs025_device::drgw2_d80000_protection_w )
|
WRITE16_MEMBER(igs025_device::drgw2_d80000_protection_w )
|
||||||
{
|
{
|
||||||
@ -454,6 +249,155 @@ WRITE16_MEMBER(igs025_device::drgw2_d80000_protection_w )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
/* READ */
|
||||||
|
/****************************************/
|
||||||
|
|
||||||
|
READ16_MEMBER(igs025_device::killbld_igs025_prot_r)
|
||||||
|
{
|
||||||
|
if (offset)
|
||||||
|
{
|
||||||
|
switch (m_kb_cmd)
|
||||||
|
{
|
||||||
|
case 0x00:
|
||||||
|
return BITSWAP8((m_kb_swap + 1) & 0x7f, 0, 1, 2, 3, 4, 5, 6, 7); // drgw3
|
||||||
|
|
||||||
|
case 0x01:
|
||||||
|
return m_kb_reg & 0x7f;
|
||||||
|
|
||||||
|
case 0x05:
|
||||||
|
{
|
||||||
|
switch (m_kb_ptr)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
return 0x3f00 | ((m_kb_game_id >> 0) & 0xff);
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
return 0x3f00 | ((m_kb_game_id >> 8) & 0xff);
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
return 0x3f00 | ((m_kb_game_id >> 16) & 0xff);
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
return 0x3f00 | ((m_kb_game_id >> 24) & 0xff);
|
||||||
|
|
||||||
|
default: // >= 5
|
||||||
|
return 0x3f00 | BITSWAP8(m_kb_prot_hold, 5, 2, 9, 7, 10, 13, 12, 15);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
case 0x40:
|
||||||
|
killbld_protection_calculate_hilo();
|
||||||
|
return 0; // Read and then discarded
|
||||||
|
|
||||||
|
// default:
|
||||||
|
// logerror("%06X: ASIC25 R CMD %X\n", space.device().safe_pc(), m_kb_cmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
READ16_MEMBER(igs025_device::olds_r)
|
||||||
|
{
|
||||||
|
if (offset)
|
||||||
|
{
|
||||||
|
switch (m_kb_cmd)
|
||||||
|
{
|
||||||
|
case 0x01:
|
||||||
|
return m_kb_reg & 0x7f;
|
||||||
|
|
||||||
|
case 0x02:
|
||||||
|
return m_olds_bs | 0x80;
|
||||||
|
|
||||||
|
case 0x03:
|
||||||
|
return m_kb_cmd3;
|
||||||
|
|
||||||
|
case 0x05:
|
||||||
|
{
|
||||||
|
switch (m_kb_ptr)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
return 0x3f00 | ((m_kb_game_id >> 0) & 0xff);
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
return 0x3f00 | ((m_kb_game_id >> 8) & 0xff);
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
return 0x3f00 | ((m_kb_game_id >> 16) & 0xff);
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
return 0x3f00 | ((m_kb_game_id >> 24) & 0xff);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
default: // >= 5
|
||||||
|
return 0x3f00 | BITSWAP8(m_kb_prot_hold, 5, 2, 9, 7, 10, 13, 12, 15); // $817906
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case 0x40:
|
||||||
|
olds_protection_calculate_hilo();
|
||||||
|
return 0; // unused?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
READ16_MEMBER(igs025_device::drgw2_d80000_protection_r)
|
||||||
|
{
|
||||||
|
switch (m_kb_cmd)
|
||||||
|
{
|
||||||
|
case 0x05:
|
||||||
|
{
|
||||||
|
switch (m_kb_ptr)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
return 0x3f00 | ((m_kb_game_id >> 0) & 0xff);
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
return 0x3f00 | ((m_kb_game_id >> 8) & 0xff);
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
return 0x3f00 | ((m_kb_game_id >> 16) & 0xff);
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
return 0x3f00 | ((m_kb_game_id >> 24) & 0xff);
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
default:
|
||||||
|
return 0x3f00 | BITSWAP8(m_kb_prot_hold, 5, 2, 9, 7, 10, 13, 12, 15);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0x3f00;
|
||||||
|
}
|
||||||
|
|
||||||
|
case 0x40:
|
||||||
|
drgw2_protection_calculate_hilo();
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
// case 0x13: // Read to $80eeb8
|
||||||
|
// case 0x1f: // Read to $80eeb8
|
||||||
|
// case 0xf4: // Read to $80eeb8
|
||||||
|
// case 0xf6: // Read to $80eeb8
|
||||||
|
// case 0xf8: // Read to $80eeb8
|
||||||
|
// return 0;
|
||||||
|
|
||||||
|
// default:
|
||||||
|
// logerror("%06x: warning, reading with igs003_reg = %02x\n", space.device().safe_pc(), m_kb_cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void igs025_device::drgw2_protection_calculate_hold(int y, int z)
|
void igs025_device::drgw2_protection_calculate_hold(int y, int z)
|
||||||
@ -504,5 +448,72 @@ void igs025_device::killbld_protection_calculate_hold(int y, int z)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void igs025_device::killbld_protection_calculate_hilo()
|
||||||
|
{
|
||||||
|
UINT8 source;
|
||||||
|
|
||||||
|
m_kb_prot_hilo_select++;
|
||||||
|
|
||||||
|
if (m_kb_prot_hilo_select > 0xeb) {
|
||||||
|
m_kb_prot_hilo_select = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
source = m_kb_source_data[m_kb_region][m_kb_prot_hilo_select];
|
||||||
|
|
||||||
|
if (m_kb_prot_hilo_select & 1)
|
||||||
|
{
|
||||||
|
m_kb_prot_hilo = (m_kb_prot_hilo & 0x00ff) | (source << 8);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_kb_prot_hilo = (m_kb_prot_hilo & 0xff00) | (source << 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void igs025_device::drgw2_protection_calculate_hilo()
|
||||||
|
{
|
||||||
|
UINT8 source;
|
||||||
|
|
||||||
|
m_kb_prot_hilo_select++;
|
||||||
|
if (m_kb_prot_hilo_select > 0xeb) {
|
||||||
|
m_kb_prot_hilo_select = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
source = m_kb_source_data[m_kb_region][m_kb_prot_hilo_select];
|
||||||
|
|
||||||
|
if (m_kb_prot_hilo_select & 1)
|
||||||
|
{
|
||||||
|
m_kb_prot_hilo = (m_kb_prot_hilo & 0x00ff) | (source << 8);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_kb_prot_hilo = (m_kb_prot_hilo & 0xff00) | (source << 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void igs025_device::olds_protection_calculate_hilo() // calculated in routine $12dbc2 in olds
|
||||||
|
{
|
||||||
|
UINT8 source;
|
||||||
|
|
||||||
|
m_kb_prot_hilo_select++;
|
||||||
|
if (m_kb_prot_hilo_select > 0xeb) {
|
||||||
|
m_kb_prot_hilo_select = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
source = m_kb_source_data[m_kb_region][m_kb_prot_hilo_select];
|
||||||
|
|
||||||
|
if (m_kb_prot_hilo_select & 1) // $8178fa
|
||||||
|
{
|
||||||
|
m_kb_prot_hilo = (m_kb_prot_hilo & 0x00ff) | (source << 8); // $8178d8
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_kb_prot_hilo = (m_kb_prot_hilo & 0xff00) | (source << 0); // $8178d8
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const device_type IGS025 = &device_creator<igs025_device>;
|
const device_type IGS025 = &device_creator<igs025_device>;
|
||||||
|
@ -17,8 +17,9 @@ public:
|
|||||||
DECLARE_READ16_MEMBER( killbld_igs025_prot_r );
|
DECLARE_READ16_MEMBER( killbld_igs025_prot_r );
|
||||||
// use setters instead of making public?
|
// use setters instead of making public?
|
||||||
const UINT8 (*m_kb_source_data)[0xec];
|
const UINT8 (*m_kb_source_data)[0xec];
|
||||||
INT32 m_kb_source_data_offset;
|
|
||||||
UINT32 m_kb_game_id;
|
UINT32 m_kb_game_id;
|
||||||
|
UINT32 m_kb_region;
|
||||||
|
|
||||||
|
|
||||||
igs025_execute_external m_execute_external;
|
igs025_execute_external m_execute_external;
|
||||||
static void set_external_cb(device_t &device,igs025_execute_external newcb);
|
static void set_external_cb(device_t &device,igs025_execute_external newcb);
|
||||||
@ -27,12 +28,10 @@ public:
|
|||||||
DECLARE_READ16_MEMBER( olds_r );
|
DECLARE_READ16_MEMBER( olds_r );
|
||||||
DECLARE_WRITE16_MEMBER( olds_w );
|
DECLARE_WRITE16_MEMBER( olds_w );
|
||||||
//const UINT8 *m_kb_prot_hilo_source2;
|
//const UINT8 *m_kb_prot_hilo_source2;
|
||||||
const UINT8 (*olds_source_data)[0xec];
|
|
||||||
|
|
||||||
DECLARE_READ16_MEMBER( drgw2_d80000_protection_r );
|
DECLARE_READ16_MEMBER( drgw2_d80000_protection_r );
|
||||||
DECLARE_WRITE16_MEMBER( drgw2_d80000_protection_w );
|
DECLARE_WRITE16_MEMBER( drgw2_d80000_protection_w );
|
||||||
UINT32 m_drgw2_protection_region;
|
|
||||||
const UINT8 (*m_drgw2_source_data)[0xec];
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void device_config_complete();
|
virtual void device_config_complete();
|
||||||
|
@ -115,7 +115,7 @@ void pgm_012_025_state::drgw2_common_init()
|
|||||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd80000, 0xd80003, read16_delegate(FUNC(igs025_device::drgw2_d80000_protection_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::drgw2_d80000_protection_w), (igs025_device*)m_igs025));
|
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd80000, 0xd80003, read16_delegate(FUNC(igs025_device::drgw2_d80000_protection_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::drgw2_d80000_protection_w), (igs025_device*)m_igs025));
|
||||||
|
|
||||||
|
|
||||||
m_igs025->m_drgw2_source_data = drgw2_source_data;
|
m_igs025->m_kb_source_data = drgw2_source_data;
|
||||||
|
|
||||||
pgm_basic_init();
|
pgm_basic_init();
|
||||||
pgm_drgw2_decrypt();
|
pgm_drgw2_decrypt();
|
||||||
@ -150,7 +150,7 @@ DRIVER_INIT_MEMBER(pgm_012_025_state,drgw2)
|
|||||||
drgw2_common_init();
|
drgw2_common_init();
|
||||||
|
|
||||||
int region = 0x06;
|
int region = 0x06;
|
||||||
m_igs025->m_drgw2_protection_region = region;
|
m_igs025->m_kb_region = region;
|
||||||
m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
|
m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
|
||||||
|
|
||||||
mem16[0x131098 / 2] = 0x4e93;
|
mem16[0x131098 / 2] = 0x4e93;
|
||||||
@ -165,7 +165,7 @@ DRIVER_INIT_MEMBER(pgm_012_025_state,dw2v100x)
|
|||||||
drgw2_common_init();
|
drgw2_common_init();
|
||||||
|
|
||||||
int region = 0x06;
|
int region = 0x06;
|
||||||
m_igs025->m_drgw2_protection_region = region;
|
m_igs025->m_kb_region = region;
|
||||||
m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
|
m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
|
||||||
|
|
||||||
mem16[0x131084 / 2] = 0x4e93;
|
mem16[0x131084 / 2] = 0x4e93;
|
||||||
@ -180,7 +180,7 @@ DRIVER_INIT_MEMBER(pgm_012_025_state,drgw2c)
|
|||||||
drgw2_common_init();
|
drgw2_common_init();
|
||||||
|
|
||||||
int region = 0x05;
|
int region = 0x05;
|
||||||
m_igs025->m_drgw2_protection_region = region;
|
m_igs025->m_kb_region = region;
|
||||||
m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
|
m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
|
||||||
|
|
||||||
mem16[0x1303bc / 2] = 0x4e93;
|
mem16[0x1303bc / 2] = 0x4e93;
|
||||||
@ -195,7 +195,7 @@ DRIVER_INIT_MEMBER(pgm_012_025_state,drgw2j)
|
|||||||
drgw2_common_init();
|
drgw2_common_init();
|
||||||
|
|
||||||
int region = 0x01;
|
int region = 0x01;
|
||||||
m_igs025->m_drgw2_protection_region = region;
|
m_igs025->m_kb_region = region;
|
||||||
m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
|
m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
|
||||||
|
|
||||||
mem16[0x1302c0 / 2] = 0x4e93;
|
mem16[0x1302c0 / 2] = 0x4e93;
|
||||||
|
@ -314,7 +314,7 @@ MACHINE_RESET_MEMBER(pgm_022_025_state,killbld)
|
|||||||
{
|
{
|
||||||
int region = (ioport(":Region")->read()) & 0xff;
|
int region = (ioport(":Region")->read()) & 0xff;
|
||||||
|
|
||||||
m_igs025->m_drgw2_protection_region = region - 0x16;
|
m_igs025->m_kb_region = region - 0x16;
|
||||||
m_igs025->m_kb_game_id = 0x89911400 | region;
|
m_igs025->m_kb_game_id = 0x89911400 | region;
|
||||||
|
|
||||||
MACHINE_RESET_CALL_MEMBER(pgm);
|
MACHINE_RESET_CALL_MEMBER(pgm);
|
||||||
@ -324,7 +324,7 @@ MACHINE_RESET_MEMBER(pgm_022_025_state, dw3)
|
|||||||
{
|
{
|
||||||
int region = (ioport(":Region")->read()) & 0xff;
|
int region = (ioport(":Region")->read()) & 0xff;
|
||||||
|
|
||||||
m_igs025->m_drgw2_protection_region = region;
|
m_igs025->m_kb_region = region;
|
||||||
m_igs025->m_kb_game_id = 0x00060000 | region;
|
m_igs025->m_kb_game_id = 0x00060000 | region;
|
||||||
|
|
||||||
MACHINE_RESET_CALL_MEMBER(pgm);
|
MACHINE_RESET_CALL_MEMBER(pgm);
|
||||||
@ -350,7 +350,6 @@ DRIVER_INIT_MEMBER(pgm_022_025_state,killbld)
|
|||||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd40000, 0xd40003, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::killbld_igs025_prot_w), (igs025_device*)m_igs025));
|
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd40000, 0xd40003, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::killbld_igs025_prot_w), (igs025_device*)m_igs025));
|
||||||
m_igs022->m_sharedprotram = m_sharedprotram;
|
m_igs022->m_sharedprotram = m_sharedprotram;
|
||||||
m_igs025->m_kb_source_data = killbld_source_data;
|
m_igs025->m_kb_source_data = killbld_source_data;
|
||||||
m_igs025->m_kb_source_data_offset = 0x16;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DRIVER_INIT_MEMBER(pgm_022_025_state,drgw3)
|
DRIVER_INIT_MEMBER(pgm_022_025_state,drgw3)
|
||||||
@ -362,7 +361,6 @@ DRIVER_INIT_MEMBER(pgm_022_025_state,drgw3)
|
|||||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xda5610, 0xda5613, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::killbld_igs025_prot_w), (igs025_device*)m_igs025));
|
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xda5610, 0xda5613, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::killbld_igs025_prot_w), (igs025_device*)m_igs025));
|
||||||
m_igs022->m_sharedprotram = m_sharedprotram;
|
m_igs022->m_sharedprotram = m_sharedprotram;
|
||||||
m_igs025->m_kb_source_data = dw3_source_data;
|
m_igs025->m_kb_source_data = dw3_source_data;
|
||||||
m_igs025->m_kb_source_data_offset = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
// tables are xored by table at $1998dc
|
// tables are xored by table at $1998dc
|
||||||
// tables are the same as drgw3 and drgw2
|
// tables are the same as drgw3 and drgw2
|
||||||
static const UINT8 olds_source_data[8][0xec] = // table addresses $2951CA
|
static const UINT8 m_olds_source_data[8][0xec] = // table addresses $2951CA
|
||||||
{
|
{
|
||||||
{ // region 0, unused...
|
{ // region 0, unused...
|
||||||
0,
|
0,
|
||||||
@ -153,7 +153,7 @@ MACHINE_RESET_MEMBER(pgm_028_025_state,olds)
|
|||||||
{
|
{
|
||||||
int region = (ioport(":Region")->read()) & 0xff;
|
int region = (ioport(":Region")->read()) & 0xff;
|
||||||
|
|
||||||
m_igs025->m_drgw2_protection_region = region;
|
m_igs025->m_kb_region = region;
|
||||||
m_igs025->m_kb_game_id = 0x00900000 | region;
|
m_igs025->m_kb_game_id = 0x00900000 | region;
|
||||||
|
|
||||||
MACHINE_RESET_CALL_MEMBER(pgm);
|
MACHINE_RESET_CALL_MEMBER(pgm);
|
||||||
@ -165,7 +165,7 @@ DRIVER_INIT_MEMBER(pgm_028_025_state,olds)
|
|||||||
|
|
||||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xdcb400, 0xdcb403, read16_delegate(FUNC(igs025_device::olds_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::olds_w), (igs025_device*)m_igs025));
|
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xdcb400, 0xdcb403, read16_delegate(FUNC(igs025_device::olds_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::olds_w), (igs025_device*)m_igs025));
|
||||||
m_igs028->m_sharedprotram = m_sharedprotram;
|
m_igs028->m_sharedprotram = m_sharedprotram;
|
||||||
m_igs025->olds_source_data = olds_source_data;
|
m_igs025->m_kb_source_data = m_olds_source_data;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,12 +169,12 @@ MACHINE_CONFIG_END
|
|||||||
void pgm_arm_type3_state::svg_basic_init()
|
void pgm_arm_type3_state::svg_basic_init()
|
||||||
{
|
{
|
||||||
pgm_basic_init();
|
pgm_basic_init();
|
||||||
m_svg_shareram[0] = auto_alloc_array(machine(), UINT32, 0x10000 / 4);
|
m_svg_shareram[0] = auto_alloc_array(machine(), UINT32, 0x20000 / 4);
|
||||||
m_svg_shareram[1] = auto_alloc_array(machine(), UINT32, 0x10000 / 4);
|
m_svg_shareram[1] = auto_alloc_array(machine(), UINT32, 0x20000 / 4);
|
||||||
m_svg_ram_sel = 0;
|
m_svg_ram_sel = 0;
|
||||||
|
|
||||||
save_pointer(NAME(m_svg_shareram[0]), 0x10000 / 4);
|
save_pointer(NAME(m_svg_shareram[0]), 0x20000 / 4);
|
||||||
save_pointer(NAME(m_svg_shareram[1]), 0x10000 / 4);
|
save_pointer(NAME(m_svg_shareram[1]), 0x20000 / 4);
|
||||||
save_item(NAME(m_svg_ram_sel));
|
save_item(NAME(m_svg_ram_sel));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user