diff --git a/.travis.yml b/.travis.yml index 15718c091af..80e3b739633 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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=" diff --git a/3rdparty/mongoose/mongoose.c b/3rdparty/mongoose/mongoose.c index fce6e0405b6..3fc2b63fd0a 100644 --- a/3rdparty/mongoose/mongoose.c +++ b/3rdparty/mongoose/mongoose.c @@ -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); } diff --git a/src/emu/machine/smpc.c b/src/emu/machine/smpc.c index eab928f4daa..effb6ba9841 100644 --- a/src/emu/machine/smpc.c +++ b/src/emu/machine/smpc.c @@ -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,9 +939,11 @@ 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; } - + return res; } @@ -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? diff --git a/src/emu/netlist/devices/nld_system.h b/src/emu/netlist/devices/nld_system.h index 76837f99d28..3f8de7bc2fc 100644 --- a/src/emu/netlist/devices/nld_system.h +++ b/src/emu/netlist/devices/nld_system.h @@ -294,7 +294,7 @@ private: SUB, DIV, PUSH_CONST, - PUSH_INPUT, + PUSH_INPUT }; struct rpn_inst diff --git a/src/mame/drivers/paranoia.c b/src/mame/drivers/paranoia.c index 6cf11b6de02..3d4ab78d5d4 100644 --- a/src/mame/drivers/paranoia.c +++ b/src/mame/drivers/paranoia.c @@ -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 ) diff --git a/src/mame/drivers/system1.c b/src/mame/drivers/system1.c index 6cbaa042973..7c3f8963367 100644 --- a/src/mame/drivers/system1.c +++ b/src/mame/drivers/system1.c @@ -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 ) diff --git a/src/mame/drivers/taitoair.c b/src/mame/drivers/taitoair.c index 55a61decafe..dc301dc0c66 100644 --- a/src/mame/drivers/taitoair.c +++ b/src/mame/drivers/taitoair.c @@ -184,15 +184,14 @@ perhaps? The two writes seem to take only two values. ****************************************************************************/ /*! - @todo - Framebuffer DMA requires palette switch to be selected dynamically, see at first stage Course Select in Top Landing. + @todo - Framebuffer DMA requires palette switch to be selected dynamically, see at first stage Course Select in Top Landing. My gut feeling is that 3d poly fill operation actually copies to internal buffer then a DMA op actually do the buffer-to-screen copy, including gradiation ROZ too; - 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" @@ -355,9 +354,9 @@ WRITE8_MEMBER(taitoair_state::sound_bankswitch_w) [3] both games uses 0xb7, most likely a register setting. */ WRITE16_MEMBER(taitoair_state::dma_regs_w) -{ +{ printf("%08x %04x\n",offset,data); - + if(offset == 0 && ACCESSING_BITS_8_15) { if(data == 0x1fff) @@ -481,7 +480,7 @@ READ16_MEMBER(taitoair_state::dsp_muldiv_1_r) { if(m_dsp_muldiv_c_1 == 0) return 0xffff; /**< @todo true value? */ - + return m_dsp_muldiv_a_1*m_dsp_muldiv_b_1/m_dsp_muldiv_c_1; } @@ -504,7 +503,7 @@ READ16_MEMBER(taitoair_state::dsp_muldiv_2_r) { if(m_dsp_muldiv_c_2 == 0) return 0xffff; /**< @todo true value? */ - + return m_dsp_muldiv_a_2*m_dsp_muldiv_b_2/m_dsp_muldiv_c_2; } diff --git a/src/mame/includes/system1.h b/src/mame/includes/system1.h index c6d7e437841..1cdc17ee42a 100644 --- a/src/mame/includes/system1.h +++ b/src/mame/includes/system1.h @@ -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();