This commit is contained in:
David Haywood 2015-07-21 21:12:55 +01:00
commit 965c37c88b
8 changed files with 91 additions and 45 deletions

View File

@ -16,3 +16,6 @@ before_install:
- sudo add-apt-repository ppa:shahar-evron/qt-backports -y
- sudo apt-get update -qq
- sudo apt-get install -y libsdl2-dev libsdl2-ttf-dev libasound2-dev libqt4-dev libqt4-dev-bin
notifications:
email:
- secure: "sK8JJcn1A0yLnbDJ/7vmJgESuXmP6D4QlvQvsYLp1xAx5eTVSJ5Z+GSXLBJ9CnoeJ5AlPVPX4rXdRV93UyxYlTh1O97x8VZZQtYBNPRjk/VCflsOOg7C+jcJKX/knMu/QG2MVEDE5G2b8mHSAgWljG/7Z2N0rYZlWppwklYafOkyW4uE0E7PU5XpmKim4ra6Y1eDSbap+XJiDwgUm9moDZrgAv7eom9NIWGNMRIozSRyR2IkYimlWE92FOy5PzLJtFGK02iumbYN+39mTux59v/h/m6HD6cD7Wf10Lco9+Fnmi9Bs+VvIReJIP9pDABRvJ3MkUV4I9BjUT9xk48lzxqjGtdfUwOMDOTABd4Pb/5cmNtyNUQIosy5oiplR6USBnqD7/gmJw+mfn3A+jdQHGne+akypwzUjSM6XrezjTiZLlDDG+QpA0kwAnxSXw8H2SpVyynMSn4nu0iZmOiOZMtFY0jKlt/W7OFC5wTuJFrky+bBGlVIv3KGOTJNJNgasXV4u0NXOjHyeBFpFYCIf0FZLfYyf7ITu94JxUzXGcVi5D0lBwvKY9HfJ4yJxciyfH6V7yU1+o23E/Meqe/tjt6dTW8DM5xIokrnusfzE5b0zw5GFyg54nbpazXpcPnrMdxhp+t2C7xKrxcZXhBECRYegj+Z86D9BJP/yum1YrQ="

View File

@ -5479,7 +5479,7 @@ static void iter2(struct ns_connection *nc, int ev, void *param) {
(void) ev;
//DBG(("%p [%s]", conn, msg));
if (sscanf(msg, "%p %n", &func, &n) && func != NULL && conn != NULL) {
if (sscanf(msg, "%p %n", (void **) &func, &n) && func != NULL && conn != NULL) {
conn->mg_conn.callback_param = (void *) (msg + n);
func(&conn->mg_conn, MG_POLL);
}

View File

@ -686,8 +686,7 @@ void saturn_state::smpc_comreg_exec(address_space &space, UINT8 data, UINT8 is_s
case 0x0a:
case 0x0b:
popmessage ("SMPC: NETLINK %s, contact MAMEdev",(data & 1) ? "off" : "on");
break;
case 0x0d:
break; case 0x0d:
if(LOG_SMPC) printf ("SMPC: System Reset\n");
smpc_system_reset();
break;
@ -926,8 +925,9 @@ UINT8 saturn_state::smpc_th_control_mode(UINT8 pad_n)
case 2:
res = th<<6;
// 1 C B Right Left Down Up
// WHP actually has a very specific code at 0x6015f30, doesn't like bits 0-1 active here ...
res|= (((machine().root_device().ioport(padnames[pad_n])->read()>>4)) & 0x30); // C & B
res|= (((machine().root_device().ioport(padnames[pad_n])->read()>>12)) & 0xf);
res|= (((machine().root_device().ioport(padnames[pad_n])->read()>>12)) & 0xc);
break;
case 1:
res = th<<6;
@ -939,6 +939,8 @@ UINT8 saturn_state::smpc_th_control_mode(UINT8 pad_n)
// 0 Start A 0 0 Down Up
res|= (((machine().root_device().ioport(padnames[pad_n])->read()>>6)) & 0x30); // Start & A
res|= (((machine().root_device().ioport(padnames[pad_n])->read()>>12)) & 0x3);
// ... and actually wants bits 2 - 3 active here.
res|= 0xc;
break;
}
@ -1025,13 +1027,13 @@ WRITE8_MEMBER( saturn_state::saturn_SMPC_w )
{
if(data & 0x40)
{
if(LOG_PAD_CMD) printf("SMPC: BREAK request\n");
if(LOG_PAD_CMD) printf("SMPC: BREAK request %02x\n",data);
m_smpc.SR &= 0x0f;
m_smpc.intback_stage = 0;
}
else if(data & 0x80)
{
if(LOG_PAD_CMD) printf("SMPC: CONTINUE request\n");
if(LOG_PAD_CMD) printf("SMPC: CONTINUE request %02x\n",data);
machine().scheduler().timer_set(attotime::from_usec(700), timer_expired_delegate(FUNC(saturn_state::intback_peripheral),this),0); /* TODO: is timing correct? */
m_smpc.OREG[31] = 0x10;
m_smpc.SF = 0x01; //TODO: set hand-shake flag?

View File

@ -294,7 +294,7 @@ private:
SUB,
DIV,
PUSH_CONST,
PUSH_INPUT,
PUSH_INPUT
};
struct rpn_inst

View File

@ -51,15 +51,15 @@ public:
paranoia_state(const machine_config &mconfig, device_type type, const char *tag)
: pce_common_state(mconfig, type, tag) { }
DECLARE_WRITE8_MEMBER(paranoia_8085_d000_w);
DECLARE_READ8_MEMBER(paranoia_z80_io_01_r);
DECLARE_READ8_MEMBER(paranoia_z80_io_02_r);
DECLARE_WRITE8_MEMBER(paranoia_z80_io_17_w);
DECLARE_WRITE8_MEMBER(paranoia_z80_io_37_w);
DECLARE_WRITE8_MEMBER(paranoia_i8155_a_w);
DECLARE_WRITE8_MEMBER(paranoia_i8155_b_w);
DECLARE_WRITE8_MEMBER(paranoia_i8155_c_w);
DECLARE_WRITE_LINE_MEMBER(paranoia_i8155_timer_out);
DECLARE_WRITE8_MEMBER(i8085_d000_w);
DECLARE_READ8_MEMBER(z80_io_01_r);
DECLARE_READ8_MEMBER(z80_io_02_r);
DECLARE_WRITE8_MEMBER(z80_io_17_w);
DECLARE_WRITE8_MEMBER(z80_io_37_w);
DECLARE_WRITE8_MEMBER(i8155_a_w);
DECLARE_WRITE8_MEMBER(i8155_b_w);
DECLARE_WRITE8_MEMBER(i8155_c_w);
DECLARE_WRITE_LINE_MEMBER(i8155_timer_out);
};
@ -90,7 +90,7 @@ static ADDRESS_MAP_START( pce_io , AS_IO, 8, paranoia_state )
AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write )
ADDRESS_MAP_END
WRITE8_MEMBER(paranoia_state::paranoia_8085_d000_w)
WRITE8_MEMBER(paranoia_state::i8085_d000_w)
{
//logerror( "D000 (8085) write %02x\n", data );
}
@ -99,7 +99,7 @@ static ADDRESS_MAP_START(paranoia_8085_map, AS_PROGRAM, 8, paranoia_state )
AM_RANGE( 0x0000, 0x7fff) AM_ROM
AM_RANGE( 0x8000, 0x80ff) AM_DEVREADWRITE("i8155", i8155_device, memory_r, memory_w)
AM_RANGE( 0x8100, 0x8107) AM_DEVREADWRITE("i8155", i8155_device, io_r, io_w)
AM_RANGE( 0xd000, 0xd000) AM_WRITE(paranoia_8085_d000_w )
AM_RANGE( 0xd000, 0xd000) AM_WRITE(i8085_d000_w )
AM_RANGE( 0xe000, 0xe1ff) AM_RAM
ADDRESS_MAP_END
@ -112,48 +112,48 @@ static ADDRESS_MAP_START(paranoia_z80_map, AS_PROGRAM, 8, paranoia_state )
AM_RANGE( 0x7000, 0x73ff) AM_RAM
ADDRESS_MAP_END
READ8_MEMBER(paranoia_state::paranoia_z80_io_01_r)
READ8_MEMBER(paranoia_state::z80_io_01_r)
{
return 0;
}
READ8_MEMBER(paranoia_state::paranoia_z80_io_02_r)
READ8_MEMBER(paranoia_state::z80_io_02_r)
{
return 0;
}
WRITE8_MEMBER(paranoia_state::paranoia_z80_io_17_w)
WRITE8_MEMBER(paranoia_state::z80_io_17_w)
{
}
WRITE8_MEMBER(paranoia_state::paranoia_z80_io_37_w)
WRITE8_MEMBER(paranoia_state::z80_io_37_w)
{
}
static ADDRESS_MAP_START(paranoia_z80_io_map, AS_IO, 8, paranoia_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE( 0x01, 0x01 ) AM_READ(paranoia_z80_io_01_r )
AM_RANGE( 0x02, 0x02 ) AM_READ(paranoia_z80_io_02_r )
AM_RANGE( 0x17, 0x17 ) AM_WRITE(paranoia_z80_io_17_w )
AM_RANGE( 0x37, 0x37 ) AM_WRITE(paranoia_z80_io_37_w )
AM_RANGE( 0x01, 0x01 ) AM_READ(z80_io_01_r )
AM_RANGE( 0x02, 0x02 ) AM_READ(z80_io_02_r )
AM_RANGE( 0x17, 0x17 ) AM_WRITE(z80_io_17_w )
AM_RANGE( 0x37, 0x37 ) AM_WRITE(z80_io_37_w )
ADDRESS_MAP_END
WRITE8_MEMBER(paranoia_state::paranoia_i8155_a_w)
WRITE8_MEMBER(paranoia_state::i8155_a_w)
{
//logerror("i8155 Port A: %02X\n", data);
}
WRITE8_MEMBER(paranoia_state::paranoia_i8155_b_w)
WRITE8_MEMBER(paranoia_state::i8155_b_w)
{
//logerror("i8155 Port B: %02X\n", data);
}
WRITE8_MEMBER(paranoia_state::paranoia_i8155_c_w)
WRITE8_MEMBER(paranoia_state::i8155_c_w)
{
//logerror("i8155 Port C: %02X\n", data);
}
WRITE_LINE_MEMBER(paranoia_state::paranoia_i8155_timer_out)
WRITE_LINE_MEMBER(paranoia_state::i8155_timer_out)
{
//m_subcpu->set_input_line(I8085_RST55_LINE, state ? CLEAR_LINE : ASSERT_LINE );
//logerror("Timer out %d\n", state);
@ -175,10 +175,10 @@ static MACHINE_CONFIG_START( paranoia, paranoia_state )
MCFG_CPU_IO_MAP(paranoia_z80_io_map)
MCFG_DEVICE_ADD("i8155", I8155, 1000000 /*?*/)
MCFG_I8155_OUT_PORTA_CB(WRITE8(paranoia_state, paranoia_i8155_a_w))
MCFG_I8155_OUT_PORTB_CB(WRITE8(paranoia_state, paranoia_i8155_b_w))
MCFG_I8155_OUT_PORTC_CB(WRITE8(paranoia_state, paranoia_i8155_c_w))
MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE(paranoia_state, paranoia_i8155_timer_out))
MCFG_I8155_OUT_PORTA_CB(WRITE8(paranoia_state, i8155_a_w))
MCFG_I8155_OUT_PORTB_CB(WRITE8(paranoia_state, i8155_b_w))
MCFG_I8155_OUT_PORTC_CB(WRITE8(paranoia_state, i8155_c_w))
MCFG_I8155_OUT_TIMEROUT_CB(WRITELINE(paranoia_state, i8155_timer_out))
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -217,4 +217,4 @@ ROM_START(paranoia)
ROM_LOAD( "4.352", 0x18000, 0x8000, CRC(11297fed) SHA1(17a294e65ba1c4806307602dee4c7c627ad1fcfd) )
ROM_END
GAME( 1990, paranoia, 0, paranoia, paranoia, pce_common_state, pce_common, ROT0, "Naxat Soft", "Paranoia", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
GAME( 1990, paranoia, 0, paranoia, paranoia, pce_common_state, pce_common, ROT0, "Naxat Soft", "Paranoia", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )

View File

@ -47,6 +47,7 @@ bullfgt 6x8k 1x8k 6x8k 2x16k no ppi ???? 6069
thetogyu 3x16k 1x8k 6x8k 2x16k no pio 6073
spatter 3x16k 1x8k 6x8k 4x16k no pio 6394 6306
spattera 3x16k 1x8k 6x8k 4x16k no pio 6599 6306
ssanchan 3x16k 1x8k 6x8k 4x16k no pio 6312
pitfall2 3x16k 1x8k 6x8k 2x16k no pio 6458(a) 6454
@ -121,6 +122,18 @@ nobb 3x32k 1x16k 3x32k 4x32k yes
*******************************************************************************
Spatter (315-5099)
Sega 1984
This game runs on Sega System 1 hardware.
834-5583-12 SPATTER (sticker)
834-5542 daughter board with 4 eproms (EPR6306, EPR6307, EPR6308, EPR6309)
834-5540 daughter board with logic ICs
315-5099 custom Z80 CPU w/security
*******************************************************************************
Chop Lifter
Sega 1985
@ -2808,7 +2821,7 @@ ROM_END
ROM_START( spattera )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "epr-6597.116", 0x0000, 0x4000, BAD_DUMP CRC(be80384d) SHA1(9e1f5807492b98c3f36a5b80466dcb2a1f1fead8) ) /* encrypted */ // consistent read, but fails ingame ROM check on PCB
ROM_LOAD( "epr-6597.116", 0x0000, 0x4000, CRC(fb928b9d) SHA1(0a9bede7a147009b9ebb8a0b73681359da665982) ) /* encrypted */
ROM_LOAD( "epr-6598.109", 0x4000, 0x4000, CRC(5dff037a) SHA1(8e6f6b75a89609ab0498d317c11e6d653343ffbe) ) /* encrypted */
ROM_LOAD( "epr-6599.96", 0x8000, 0x4000, CRC(7ba9de5b) SHA1(f18542c95e8241433ed995c213924ad1ce03cd5b) )
@ -4958,6 +4971,34 @@ DRIVER_INIT_MEMBER(system1_state,spatter)
sega_decode(m_maincpu_region->base(), m_decrypted_opcodes, 0x8000, convtable);
}
DRIVER_INIT_MEMBER(system1_state,spattera)
{
static const UINT8 convtable[32][4] =
{
/* opcode data address */
/* A B C D A B C D */
{ 0xa0,0xa8,0x20,0x28 }, { 0x80,0xa0,0x00,0x20 }, /* ...0...0...0...0 */
{ 0x20,0x28,0x00,0x08 }, { 0x20,0x28,0x00,0x08 }, /* ...0...0...0...1 */
{ 0xa0,0xa8,0x20,0x28 }, { 0x08,0x28,0x00,0x20 }, /* ...0...0...1...0 */
{ 0x88,0x08,0xa8,0x28 }, { 0x88,0x08,0xa8,0x28 }, /* ...0...0...1...1 */
{ 0xa0,0xa8,0x20,0x28 }, { 0x20,0x28,0x00,0x08 }, /* ...0...1...0...0 */
{ 0x28,0xa8,0x20,0xa0 }, { 0x20,0x28,0x00,0x08 }, /* ...0...1...0...1 */
{ 0xa0,0xa8,0x20,0x28 }, { 0x08,0x28,0x00,0x20 }, /* ...0...1...1...0 */
{ 0x88,0x08,0xa8,0x28 }, { 0x88,0x08,0xa8,0x28 }, /* ...0...1...1...1 */
{ 0x28,0xa8,0x20,0xa0 }, { 0xa0,0xa8,0x20,0x28 }, /* ...1...0...0...0 */
{ 0x88,0x08,0xa8,0x28 }, { 0x80,0xa0,0x00,0x20 }, /* ...1...0...0...1 */
{ 0x28,0xa8,0x20,0xa0 }, { 0x08,0x28,0x00,0x20 }, /* ...1...0...1...0 */
{ 0x28,0xa8,0x20,0xa0 }, { 0x80,0xa0,0x00,0x20 }, /* ...1...0...1...1 */
{ 0x20,0x28,0x00,0x08 }, { 0x20,0x28,0x00,0x08 }, /* ...1...1...0...0 */
{ 0x88,0x08,0xa8,0x28 }, { 0x20,0x28,0x00,0x08 }, /* ...1...1...0...1 */
{ 0x08,0x28,0x00,0x20 }, { 0x80,0xa0,0x00,0x20 }, /* ...1...1...1...0 */
{ 0x08,0x28,0x00,0x20 }, { 0x88,0x08,0xa8,0x28 } /* ...1...1...1...1 */
};
DRIVER_INIT_CALL(bank00);
sega_decode(m_maincpu_region->base(), m_decrypted_opcodes, 0x8000, convtable);
}
DRIVER_INIT_MEMBER(system1_state,pitfall2)
{
static const UINT8 convtable[32][4] =
@ -5615,7 +5656,7 @@ GAME( 1984, flicky, 0, sys1piox, flicky, system1_state, flicky,
GAME( 1984, flickys2, flicky, sys1pio, flickys2, system1_state, bank00, ROT0, "Sega", "Flicky (128k Version, System 2, not encrypted)", GAME_SUPPORTS_SAVE )
GAME( 1984, thetogyu, bullfgt, sys1piox, bullfgt, system1_state, bullfgtj, ROT0, "Coreland / Sega", "The Togyu (315-5065, Japan)", GAME_SUPPORTS_SAVE )
GAME( 1984, spatter, 0, sys1piosx, spatter, system1_state, spatter, ROT0, "Sega", "Spatter (set 1)", GAME_SUPPORTS_SAVE )
GAME( 1984, spattera, spatter, sys1piosx, spatter, system1_state, spatter, ROT0, "Sega", "Spatter (315-5099)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
GAME( 1984, spattera, spatter, sys1piosx, spatter, system1_state, spattera, ROT0, "Sega", "Spatter (315-5099)", GAME_SUPPORTS_SAVE )
GAME( 1984, ssanchan, spatter, sys1piosx, spatter, system1_state, spatter, ROT0, "Sega", "Sanrin San Chan (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1985, pitfall2, 0, sys1piox, pitfall2, system1_state, pitfall2, ROT0, "Sega", "Pitfall II (315-5093)", GAME_SUPPORTS_SAVE )
GAME( 1985, pitfall2a, pitfall2, sys1piox, pitfall2, system1_state, pitfall2, ROT0, "Sega", "Pitfall II (315-5093, Flicky Conversion)", GAME_SUPPORTS_SAVE )

View File

@ -189,10 +189,9 @@ perhaps? The two writes seem to take only two values.
- Air Inferno: missing landing monitor camera (blackened);
- Air Inferno: missing 3d HUD graphics;
- Air Inferno: Expert course has wrong 3d geometry;
- Air Inferno: Almost surely crashing during replay has missing smoke effect, looks quit odd atm.
- Air Inferno: Almost surely crashing during replay has missing smoke effect, looks quite odd atm.
- Top Landing: Night stages might have wrong priority for stars-above-sea;
- Input limiters / analog thresholds for both games;
- Special thanks to syq for being a cunt.
*/
#include "emu.h"

View File

@ -115,6 +115,7 @@ public:
DECLARE_DRIVER_INIT(seganinj);
DECLARE_DRIVER_INIT(gardia);
DECLARE_DRIVER_INIT(spatter);
DECLARE_DRIVER_INIT(spattera);
TILE_GET_INFO_MEMBER(tile_get_info);
virtual void machine_start();
virtual void machine_reset();