summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author angelosa <salese_corp_ltd@email.it>2016-02-08 22:44:33 +0100
committer angelosa <salese_corp_ltd@email.it>2016-02-08 22:44:33 +0100
commit2050fda6e38eb7034ab8b7b13c5ea7e286cac400 (patch)
treeb8cee04201b67007f1b721bc1dad51b1c6305211
parent7a1eb1d2add20aab3b78f9e1712af823085e715e (diff)
NCS8105 ADCX opcode is actually an ADDX, fixes gfx garbage in nightgal.cpp [Angelo Salese]
-rw-r--r--src/devices/cpu/m6800/6800ops.inc3
-rw-r--r--src/devices/video/jangou_blitter.cpp19
-rw-r--r--src/devices/video/jangou_blitter.h1
-rw-r--r--src/mame/drivers/nightgal.cpp51
4 files changed, 45 insertions, 29 deletions
diff --git a/src/devices/cpu/m6800/6800ops.inc b/src/devices/cpu/m6800/6800ops.inc
index c9712dca9ff..6dc59863f09 100644
--- a/src/devices/cpu/m6800/6800ops.inc
+++ b/src/devices/cpu/m6800/6800ops.inc
@@ -2073,11 +2073,12 @@ OP_HANDLER( ldd_ix )
}
/* $ec ADCX immediate -**** NSC8105 only. Flags are a guess - copied from addb_im() */
+// actually this is ADDX, causes garbage in nightgal.cpp otherwise
OP_HANDLER( adcx_im )
{
UINT16 t,r;
IMMBYTE(t);
- r = X+t+(CC&0x01);
+ r = X+t;
CLR_HNZVC;
SET_FLAGS8(X,t,r);
SET_H(X,t,r);
diff --git a/src/devices/video/jangou_blitter.cpp b/src/devices/video/jangou_blitter.cpp
index be11e07b315..4427fe01f74 100644
--- a/src/devices/video/jangou_blitter.cpp
+++ b/src/devices/video/jangou_blitter.cpp
@@ -105,8 +105,8 @@ WRITE8_MEMBER( jangou_blitter_device::blitter_process_w )
int count = 0;
int xcount, ycount;
- //printf("%02x %02x %02x %02x %02x %02x %02x\n", m_blit_data[0], m_blit_data[1], m_blit_data[2],
- // m_blit_data[3], m_blit_data[4], m_blit_data[5],m_blit_data[6]);
+ printf("%02x %02x %02x %02x %02x %02x %02x\n", m_blit_data[0], m_blit_data[1], m_blit_data[2],
+ m_blit_data[3], m_blit_data[4], m_blit_data[5],m_blit_data[6]);
w = (m_blit_data[4] & 0xff) + 1;
h = (m_blit_data[5] & 0xff) + 1;
src = ((m_blit_data[1] << 8)|(m_blit_data[0] << 0));
@@ -146,6 +146,21 @@ WRITE8_MEMBER( jangou_blitter_device::blitter_process_w )
}
}
+WRITE8_MEMBER( jangou_blitter_device::blitter_alt_process_w)
+{
+ switch(offset)
+ {
+ case 0: blitter_process_w(space,0,data); break;
+ case 1: blitter_process_w(space,1,data); break;
+ case 2: blitter_process_w(space,6,data); break;
+ case 3: blitter_process_w(space,2,data); break;
+ case 4: blitter_process_w(space,3,data); break;
+ case 5: blitter_process_w(space,4,data); break;
+ case 6: blitter_process_w(space,5,data); break;
+
+ }
+}
+
WRITE8_MEMBER( jangou_blitter_device::blitter_vregs_w)
{
// printf("%02x %02x\n", offset, data);
diff --git a/src/devices/video/jangou_blitter.h b/src/devices/video/jangou_blitter.h
index 735fea64a73..a8a4934a475 100644
--- a/src/devices/video/jangou_blitter.h
+++ b/src/devices/video/jangou_blitter.h
@@ -34,6 +34,7 @@ public:
// I/O operations
DECLARE_WRITE8_MEMBER( blitter_process_w );
+ DECLARE_WRITE8_MEMBER( blitter_alt_process_w );
DECLARE_WRITE8_MEMBER( blitter_vregs_w );
UINT8 m_blit_buffer[256 * 256];
diff --git a/src/mame/drivers/nightgal.cpp b/src/mame/drivers/nightgal.cpp
index b89e04c5ad3..12642968006 100644
--- a/src/mame/drivers/nightgal.cpp
+++ b/src/mame/drivers/nightgal.cpp
@@ -302,12 +302,12 @@ READ8_MEMBER(nightgal_state::royalqn_nsc_blit_r)
TIMER_CALLBACK_MEMBER(nightgal_state::z80_wait_ack_cb)
{
- m_maincpu->set_input_line(Z80_INPUT_LINE_BOGUSWAIT, CLEAR_LINE);
+ m_maincpu->set_input_line(Z80_INPUT_LINE_WAIT, CLEAR_LINE);
}
void nightgal_state::z80_wait_assert_cb()
{
- m_maincpu->set_input_line(Z80_INPUT_LINE_BOGUSWAIT, ASSERT_LINE);
+ m_maincpu->set_input_line(Z80_INPUT_LINE_WAIT, ASSERT_LINE);
// Note: cycles_to_attotime requires z80 context to work, calling for example m_subcpu as context gives a x4 cycle boost in z80 terms (reads execute_cycles_to_clocks() from NCS?) even if they runs at same speed basically.
// TODO: needs a getter that tells a given CPU how many cycles requires an executing opcode for the r/w operation, which stacks with wait state penalty for accessing this specific area.
@@ -419,13 +419,12 @@ static ADDRESS_MAP_START( sexygal_nsc_map, AS_PROGRAM, 8, nightgal_state )
AM_RANGE(0x0000, 0x007f) AM_RAM
AM_RANGE(0x0080, 0x0080) AM_READ(blitter_status_r)
AM_RANGE(0x0081, 0x0083) AM_READ(royalqn_nsc_blit_r)
- AM_RANGE(0x0080, 0x0086) AM_DEVWRITE("blitter", jangou_blitter_device, blitter_process_w)
+ AM_RANGE(0x0080, 0x0086) AM_DEVWRITE("blitter", jangou_blitter_device, blitter_alt_process_w)
AM_RANGE(0x00a0, 0x00af) AM_DEVWRITE("blitter", jangou_blitter_device, blitter_vregs_w)
-
AM_RANGE(0x00b0, 0x00b0) AM_WRITENOP // bltflip register
AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram")
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_WRITENOP
+ AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_ROM AM_REGION("subrom", 0)
ADDRESS_MAP_END
/********************************
@@ -464,7 +463,7 @@ static ADDRESS_MAP_START( royalqn_nsc_map, AS_PROGRAM, 8, nightgal_state )
AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r,royalqn_comm_w)
AM_RANGE(0x4000, 0x4000) AM_NOP
AM_RANGE(0x8000, 0x8000) AM_NOP //open bus or protection check
- AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_ROM
+ AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_ROM AM_REGION("subrom", 0)
ADDRESS_MAP_END
/********************************************
@@ -817,8 +816,8 @@ ROM_START( nightgal )
ROM_LOAD( "ngal_11.bin", 0x02000, 0x02000, CRC(c52f7942) SHA1(e23b9e4936f9b3111ea14c0250190ee6de1ed4ab) )
ROM_LOAD( "ngal_12.bin", 0x04000, 0x02000, CRC(515e69a7) SHA1(234247c829c2b082360d7d44c1488fc5fcf45cd2) )
- ROM_REGION( 0x10000, "sub", 0 )
- ROM_LOAD( "ngal_09.bin", 0x0c000, 0x02000, CRC(da3dcc08) SHA1(6f5319c1777dabf7041286698ac8f25eca1545a1) )
+ ROM_REGION( 0x2000, "subrom", 0 )
+ ROM_LOAD( "ngal_09.bin", 0x0000, 0x02000, CRC(da3dcc08) SHA1(6f5319c1777dabf7041286698ac8f25eca1545a1) )
ROM_REGION( 0x20000, "gfx", 0 )
ROM_LOAD( "ngal_01.bin", 0x00000, 0x02000, CRC(8e4c92ad) SHA1(13cebe765ebabe6be79c9c9ac3f778550e450380) )
@@ -867,8 +866,8 @@ ROM_START( ngtbunny )
ROM_LOAD( "7.3p", 0x02000, 0x02000, CRC(34024380) SHA1(ba535e2b198f55e68a45ad7030b12c9aa1389aea) )
ROM_LOAD( "8.3s", 0x04000, 0x02000, CRC(9bf96168) SHA1(f0e9302bc9577fe779b56cb72035672368c94481) )
- ROM_REGION( 0x10000, "sub", 0 )
- ROM_LOAD( "5.3m", 0x0c000, 0x02000, CRC(b8a82966) SHA1(9f86b3208fb48f9735cfc4f8e62680f0cb4a92f0) )
+ ROM_REGION( 0x2000, "subrom", 0 )
+ ROM_LOAD( "5.3m", 0x0000, 0x02000, CRC(b8a82966) SHA1(9f86b3208fb48f9735cfc4f8e62680f0cb4a92f0) )
ROM_REGION( 0x20000, "gfx", 0 )
ROM_LOAD( "1.3a", 0x00000, 0x02000, CRC(16776c5f) SHA1(a2925eaed938ae3985ea796658b62d6fafb6412b) )
@@ -886,8 +885,8 @@ ROM_START( royalngt )
ROM_LOAD( "rn7.3p", 0x02000, 0x02000, CRC(ae9c082b) SHA1(ee3effea653f972fd732453e9ab72f48e75410f8) )
ROM_LOAD( "rn8.3s", 0x04000, 0x02000, CRC(1371a83a) SHA1(c7107b62534837dd51bb4a93ba9a690f91393930) )
- ROM_REGION( 0x10000, "sub", 0 )
- ROM_LOAD( "rn5.3l", 0x0c000, 0x02000, CRC(b8a82966) SHA1(9f86b3208fb48f9735cfc4f8e62680f0cb4a92f0) )
+ ROM_REGION( 0x2000, "subrom", 0 )
+ ROM_LOAD( "rn5.3l", 0x00000, 0x02000, CRC(b8a82966) SHA1(9f86b3208fb48f9735cfc4f8e62680f0cb4a92f0) )
ROM_REGION( 0x20000, "gfx", 0 )
ROM_LOAD( "rn1.3a", 0x00000, 0x02000, CRC(16776c5f) SHA1(a2925eaed938ae3985ea796658b62d6fafb6412b) )
@@ -905,8 +904,8 @@ ROM_START( royalqn )
ROM_LOAD( "a11.3t", 0x02000, 0x02000, CRC(e7c5395b) SHA1(5131ab9b0fbf1b7b4d410aa2a57eceaf47f8ec3a) )
ROM_LOAD( "a12.3v", 0x04000, 0x02000, CRC(4e8efda4) SHA1(1959491fd899a4d85fd067d7674592ec25188a75) )
- ROM_REGION( 0x10000, "sub", 0 )
- ROM_LOAD( "rq9.3p", 0x0c000, 0x02000, CRC(34b4cf82) SHA1(01f49ca11a695d41c181e92217e228bc1656ee57) )
+ ROM_REGION( 0x2000, "subrom", 0 )
+ ROM_LOAD( "rq9.3p", 0x0000, 0x02000, CRC(34b4cf82) SHA1(01f49ca11a695d41c181e92217e228bc1656ee57) )
ROM_REGION( 0xc000, "samples", ROMREGION_ERASE00 )
@@ -971,8 +970,8 @@ ROM_START( sexygal )
ROM_LOAD( "11.3pr", 0x04000, 0x04000, CRC(a3138b42) SHA1(1bf7f6e2c4020251379cc72fa731c17795f35e2e) )
ROM_LOAD( "12.s8b", 0x08000, 0x04000, CRC(7ac4a984) SHA1(7b41c522387938fe7625c9a6c62a385d6635cc5e) )
- ROM_REGION( 0x10000, "sub", 0 )
- ROM_LOAD( "1.3a", 0x0c000, 0x04000, CRC(f814cf27) SHA1(ceba1f14a202d926380039d7cb4669eb8be58539) ) // has a big (16 byte wide) ASCII 'Y.M' art, written in YMs (!)
+ ROM_REGION( 0x4000, "subrom", 0 )
+ ROM_LOAD( "1.3a", 0x00000, 0x04000, CRC(f814cf27) SHA1(ceba1f14a202d926380039d7cb4669eb8be58539) ) // has a big (16 byte wide) ASCII 'Y.M' art, written in YMs (!)
ROM_REGION( 0xc000, "samples", 0 )
ROM_LOAD( "13.s7b", 0x04000, 0x04000, CRC(5eb75f56) SHA1(b7d81d786d1ac8d65a6a122140954eb89d76e8b4) )
@@ -997,8 +996,8 @@ ROM_START( sweetgal )
ROM_LOAD( "10.3n", 0x00000, 0x04000, CRC(0f6c4bf0) SHA1(50e5c6f08e124641f5df8938ccfcdebde18f6a0f) ) // sldh
ROM_LOAD( "11.3p", 0x04000, 0x04000, CRC(7388e9b3) SHA1(e318d2d3888679bbd43a0aab68252fd359b7969d) )
- ROM_REGION( 0x10000, "sub", 0 )
- ROM_LOAD( "1.3a", 0x0e000, 0x2000, CRC(5342c757) SHA1(b4ff84c45bd2c6a6a468f1d0daaf5b19c4dbf8fe) ) // sldh
+ ROM_REGION( 0x2000, "subrom", 0 )
+ ROM_LOAD( "1.3a", 0x0000, 0x2000, CRC(5342c757) SHA1(b4ff84c45bd2c6a6a468f1d0daaf5b19c4dbf8fe) ) // sldh
ROM_REGION( 0xc000, "samples", 0 ) // sound samples
ROM_LOAD( "v2_12.bin", 0x00000, 0x04000, CRC(66a35be2) SHA1(4f0d73d753387acacc5ccc90e91d848a5ecce55e) )
@@ -1064,8 +1063,8 @@ ROM_START( ngalsumr )
ROM_LOAD( "9.3t", 0x02000, 0x02000, CRC(879fc493) SHA1(ec7c6928b5d4e46dcc99271466e7eb801f601a70) )
ROM_LOAD( "10.3v", 0x04000, 0x02000, CRC(31211088) SHA1(960b781c420602be3de66565a030cf5ebdcc2ffb) )
- ROM_REGION( 0x10000, "sub", 0 )
- ROM_LOAD( "7.3p", 0x0c000, 0x02000, BAD_DUMP CRC(20c55a25) SHA1(9dc88cb6c016b594264f7272d4fd5f30567e7c5d) ) // either encrypted or bit-rotted.
+ ROM_REGION( 0x2000, "subrom", 0 )
+ ROM_LOAD( "7.3p", 0x0000, 0x02000, BAD_DUMP CRC(20c55a25) SHA1(9dc88cb6c016b594264f7272d4fd5f30567e7c5d) ) // either encrypted or bit-rotted.
ROM_REGION( 0xc000, "samples", 0 )
ROM_LOAD( "1s.ic7", 0x00000, 0x04000, CRC(47ad8a0f) SHA1(e3b1e13f0a5c613bd205338683bef8d005b54830) )
@@ -1086,22 +1085,22 @@ ROM_END
DRIVER_INIT_MEMBER(nightgal_state,royalqn)
{
- UINT8 *ROM = memregion("sub")->base();
+ UINT8 *ROM = memregion("subrom")->base();
/* patch open bus / protection */
- ROM[0xc27e] = 0x02;
- ROM[0xc27f] = 0x02;
+ ROM[0x027e] = 0x02;
+ ROM[0x027f] = 0x02;
}
DRIVER_INIT_MEMBER(nightgal_state,ngalsumr)
{
- UINT8 *ROM = memregion("sub")->base();
+ //UINT8 *ROM = memregion("subrom")->base();
/* patch blantantly wrong ROM checks */
//ROM[0xd6ce] = 0x02;
//ROM[0xd6cf] = 0x02;
// adcx $05 converted to 0x04 for debug purposes
- ROM[0xd782] = 0x04;
+ //ROM[0x1782] = 0x04;
//ROM[0xd655] = 0x20;
//ROM[0xd3f9] = 0x02;
//ROM[0xd3fa] = 0x02;
@@ -1112,7 +1111,7 @@ DRIVER_INIT_MEMBER(nightgal_state,ngalsumr)
GAME( 1984, nightgal, 0, royalqn, sexygal, driver_device, 0, ROT0, "Nichibutsu", "Night Gal (Japan 840920 AG 1-00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1984, ngtbunny, 0, royalqn, sexygal, driver_device, 0, ROT0, "Nichibutsu", "Night Bunny (Japan 840601 MRN 2-10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1984, royalngt, ngtbunny, royalqn, sexygal, driver_device, 0, ROT0, "Royal Denshi", "Royal Night [BET] (Japan 840220 RN 2-00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1984, royalqn, 0, royalqn, sexygal, nightgal_state, royalqn, ROT0, "Royal Denshi", "Royal Queen [BET] (Japan 841010 RQ 0-07)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, royalqn, 0, royalqn, sexygal, nightgal_state, royalqn, ROT0, "Royal Denshi", "Royal Queen [BET] (Japan 841010 RQ 0-07)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
/* Type 2 HW */
GAME( 1985, sexygal, 0, sexygal, sexygal, driver_device, 0, ROT0, "Nichibutsu", "Sexy Gal (Japan 850501 SXG 1-00)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
GAME( 1985, sweetgal, sexygal, sexygal, sexygal, driver_device, 0, ROT0, "Nichibutsu", "Sweet Gal (Japan 850510 SWG 1-02)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )