This commit is contained in:
RobertoFresca 2015-10-26 14:32:38 -03:00
commit 57503a8b88
18 changed files with 238 additions and 60 deletions

View File

@ -1472,4 +1472,18 @@ Possible Undumped protos: -
</dataarea>
</part>
</software>
<software name="5200temp">
<description>5200 Tempest</description>
<year>2012</year>
<publisher>Atariage</publisher> <!-- unlicensed? -->
<info name="developer" value="Keithen" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="tempest (atariage).bin" size="32768" crc="a6400e17" sha1="0cb2bd6ed89ce6710ac092533a24f1248688c88c" offset="0" />
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -21791,7 +21791,20 @@ Notice that these are not working on real hardware due to bugged code with VDP i
</part>
</software>
<software name="putter">
<software name="puttsqup" >
<description>Putty Squad (prototype)</description>
<year>1992</year>
<publisher>System 3 / Ocean</publisher>
<part name="cart" interface="megadriv_cart">
<dataarea name="rom" width="16" endianness="big" size="0x100000">
<rom name="PS-md.BIN" size="0x100000" crc="2348da80" sha1="f529598f56c581854d2bde2ee960100273813539" offset="0x000000"/>
</dataarea>
</part>
</software>
<software name="putter">
<description>Putter Golf (Jpn, SegaNet)</description>
<year>1991</year>
<publisher>Sega</publisher>

View File

@ -709,7 +709,97 @@
</part>
</software>
<!-- Homebrew released at http://spectralinterlude.com/#download for use on real systems & emulators -->
<software name="castlvsi">
<description>Castlevania - Spectral Interlude (v1.1, English, 128K)</description>
<year>2015</year>
<publisher>Rewind</publisher>
<part name="cass" interface="spectrum_cass">
<dataarea name="cass" size="126394">
<rom name="castlevania_si_en_v11.tap" size="126394" crc="c100bb38" sha1="ba89e73dbc16621fc52f886c6b1abb2d6a93ffc7" offset="0"/>
</dataarea>
</part>
</software>
<software name="castlvsiru" cloneof="castlevsi">
<description>Castlevania - Spectral Interlude (v1.1, Russian, 128K)</description>
<year>2015</year>
<publisher>Rewind</publisher>
<part name="cass" interface="spectrum_cass">
<dataarea name="cass" size="127054">
<rom name="castlevania_si_ru_v11.tap" size="127054" crc="45561b70" sha1="b44b7e93c8fbf74d23ad694182d99e5a5ec01f98" offset="0"/>
</dataarea>
</part>
</software>
<software name="castlvsipl" cloneof="castlevsi">
<description>Castlevania - Spectral Interlude (v1.1, Polish, 128K)</description>
<year>2015</year>
<publisher>Rewind</publisher>
<part name="cass" interface="spectrum_cass">
<dataarea name="cass" size="127378">
<rom name="castlevania_si_pl_v11.tap" size="127378" crc="2f11f5bd" sha1="4f4448f6f70eebdf6af81977cac61d0f41b7744f" offset="0"/>
</dataarea>
</part>
</software>
<software name="castlvsies" cloneof="castlevsi">
<description>Castlevania - Spectral Interlude (v1.1, Spanish, 128K)</description>
<year>2015</year>
<publisher>Rewind</publisher>
<part name="cass" interface="spectrum_cass">
<dataarea name="cass" size="126950">
<rom name="castlevania_si_es_v11.tap" size="126950" crc="27e8ae63" sha1="1dced2991e51854fdf31fe323aa6ee75b25d55a2" offset="0"/>
</dataarea>
</part>
</software>
<software name="castlvsiit" cloneof="castlevsi">
<description>Castlevania - Spectral Interlude (v1.1, Italian, 128K)</description>
<year>2015</year>
<publisher>Rewind</publisher>
<part name="cass" interface="spectrum_cass">
<dataarea name="cass" size="127355">
<rom name="castlevania_si_it_v11.tap" size="127355" crc="d9a89fc5" sha1="885d3489c94937b0db8a536a1aa6435629942d77" offset="0"/>
</dataarea>
</part>
</software>
<software name="castlvsi10" cloneof="castlevsi">
<description>Castlevania - Spectral Interlude (v1.0, English, 128K)</description>
<year>2015</year>
<publisher>Rewind</publisher>
<part name="cass" interface="spectrum_cass">
<dataarea name="cass" size="126410">
<rom name="castlevania_si_en_v10.tap" size="126410" crc="0d022bc5" sha1="450dfd57ea7407f47bbfd785d981e4a92e166029" offset="0"/>
</dataarea>
</part>
</software>
<software name="castlvsiru10" cloneof="castlevsi">
<description>Castlevania - Spectral Interlude (v1.0, Russian, 128K)</description>
<year>2015</year>
<publisher>Rewind</publisher>
<part name="cass" interface="spectrum_cass">
<dataarea name="cass" size="127066">
<rom name="castlevania_si_ru_v10.tap" size="127066" crc="2dceb444" sha1="10ca28195652a9f3f20a48e8e761f0dd138abcf6" offset="0"/>
</dataarea>
</part>
</software>
<software name="castlvsipl10" cloneof="castlevsi">
<description>Castlevania - Spectral Interlude (v1.0, Polish, 128K)</description>
<year>2015</year>
<publisher>Rewind</publisher>
<part name="cass" interface="spectrum_cass">
<dataarea name="cass" size="127361">
<rom name="castlevania_si_pl_v10.tap" size="127361" crc="e8dc0e6b" sha1="4802a4cef916466ccbf25cabb3f447db17b802bd" offset="0"/>
</dataarea>
</part>
</software>
<!-- V1.0 doesn't exist in Spanish? or Italian (translations were made after the 1.1 release) -->
</softwarelist>

View File

@ -1149,7 +1149,7 @@ bool i8086_common_cpu_device::common_op(UINT8 op)
// 8086 'invalid opcodes', as documented at http://www.os2museum.com/wp/?p=2147 and tested on real hardware
// - 0x60 - 0x6f are aliases to 0x70 - 0x7f.
// - 0xc0, 0xc1, 0xc8, 0xc9 are also aliases where the CPU ignores BIT 1 (*).
// - 0xc0, 0xc1, 0xc8, 0xc9 are also aliases where the CPU ignores BIT 1 (*).
// - 0xf1 is an alias to 0xf0.
//
// Instructions are used in the boot sector for some versions of
@ -2018,7 +2018,7 @@ bool i8086_common_cpu_device::common_op(UINT8 op)
case 0xf0: // i_lock
case 0xf1: // 0xf1 is 0xf0; verified on custom hardware
case 0xf1: // 0xf1 is 0xf0; verified on real CPU
logerror("%s: %06x: Warning - BUSLOCK\n", tag(), pc());
m_lock = true;
m_no_interrupt = 1;

View File

@ -256,6 +256,7 @@ void running_machine::start()
m_memory.initialize();
// initialize the watchdog
m_watchdog_counter = 0;
m_watchdog_timer = m_scheduler.timer_alloc(timer_expired_delegate(FUNC(running_machine::watchdog_fired), this));
if (config().m_watchdog_vblank_count != 0 && primary_screen != NULL)
primary_screen->register_vblank_callback(vblank_state_delegate(FUNC(running_machine::watchdog_vblank), this));

View File

@ -226,6 +226,7 @@ public:
// watchdog control
void watchdog_reset();
void watchdog_enable(bool enable = true);
INT32 get_vblank_watchdog_counter() { return m_watchdog_counter; }
// misc
void CLIB_DECL vlogerror(const char *format, va_list args);

View File

@ -4501,6 +4501,7 @@ wboyub // bootleg of wboyu
wbdeluxe // (c) 1986 + Escape license (S1)
wboysys2 // 834-5984 (c) 1986 + Escape license (S1)
gardia // 834-6119 (S2?)
gardiaj //
gardiab // bootleg
nob // (c) Data East
nobb // bootleg

View File

@ -1205,10 +1205,6 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bbcmet, bbcm )
/* sound hardware */
MCFG_DEVICE_REMOVE("mono")
MCFG_DEVICE_REMOVE("sn76489")
/* printer */
MCFG_DEVICE_REMOVE("centronics")
@ -1503,7 +1499,7 @@ ROM_START(bbcb_us)
ROMX_LOAD("usmos10.rom", 0x40000, 0x4000, CRC(c8e946a9) SHA1(83d91d089dca092d2c8b7c3650ff8143c9069b89), ROM_BIOS(1))
ROMX_LOAD("usbasic3.rom", 0x3c000, 0x4000, CRC(161b9539) SHA1(b39014610a968789afd7695aa04d1277d874405c), ROM_BIOS(1)) /* rom page 15 3c000 */
ROM_LOAD("viewa210.rom", 0x30000, 0x2e50, CRC(0abd418b) SHA1(e23e5bbc59339cbda87e8dafa8d80116378ac305)) /* Valid size? */
ROM_LOAD("viewa210.rom", 0x30000, 0x4000, CRC(4345359f) SHA1(88c93df1854f5fbe6cd6e5f0e29a8bf4ea3b5614))
ROM_LOAD("usdnfs10.rom", 0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
ROM_REGION(0x4000, "os", 0)
@ -1941,7 +1937,7 @@ COMP ( 1985, reutapm, 0, 0, reutapm, bbcb, bbc_state, bbc, "
COMP ( 1986, bbcm, 0, bbcb, bbcm, bbcm, bbc_state, bbc, "Acorn", "BBC Master 128", MACHINE_IMPERFECT_GRAPHICS)
COMP ( 1986, bbcmt, bbcm, 0, bbcmt, bbcm, bbc_state, bbc, "Acorn", "BBC Master Turbo", MACHINE_NOT_WORKING)
COMP ( 1986, bbcmaiv, bbcm, 0, bbcmaiv, bbcm, bbc_state, bbc, "Acorn", "BBC Master AIV", MACHINE_NOT_WORKING)
COMP ( 1986, bbcmet, bbcm, 0, bbcmet, bbcm, bbc_state, bbc, "Acorn", "BBC Master ET", MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS)
COMP ( 1986, bbcmet, bbcm, 0, bbcmet, bbcm, bbc_state, bbc, "Acorn", "BBC Master ET", MACHINE_IMPERFECT_GRAPHICS)
COMP ( 1986, bbcm512, bbcm, 0, bbcm512, bbcm, bbc_state, bbc, "Acorn", "BBC Master 512", MACHINE_NOT_WORKING)
COMP ( 1986, bbcmarm, bbcm, 0, bbcmarm, bbcm, bbc_state, bbc, "Acorn", "ARM Evaluation System", MACHINE_NOT_WORKING)
COMP ( 1986, bbcmc, 0, bbcm, bbcmc, bbcm, bbc_state, bbc, "Acorn", "BBC Master Compact", MACHINE_IMPERFECT_GRAPHICS)

View File

@ -40,7 +40,7 @@ write:
7001 8910 control
8ff0-8fff sprites
a000 ?
a006 MCU HALT controll
a006 MCU HALT control
a007 NOP (MCU shared RAM switch)
a060-a06f sprites
a080 command for the sound CPU
@ -86,6 +86,7 @@ TODO:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/alph8201/alph8201.h"
//#include "cpu/hmcs40/hmcs40.h"
#include "sound/ay8910.h"
#include "sound/dac.h"
#include "includes/champbas.h"
@ -567,7 +568,7 @@ GFXDECODE_END
/*************************************
*
* Machine driver
* Machine drivers
*
*************************************/
@ -581,6 +582,7 @@ MACHINE_START_MEMBER(champbas_state,champbas)
MACHINE_START_MEMBER(champbas_state,exctsccr)
{
// FIXME
// I dun wanna
machine().scheduler().timer_pulse(attotime::from_hz(75), timer_expired_delegate(FUNC(champbas_state::exctsccr_fm_callback),this)); /* updates fm */
MACHINE_START_CALL_MEMBER(champbas);
@ -595,7 +597,7 @@ MACHINE_RESET_MEMBER(champbas_state,champbas)
INTERRUPT_GEN_MEMBER(champbas_state::vblank_irq)
{
if(m_irq_mask)
if (m_irq_mask)
device.execute().set_input_line(0, ASSERT_LINE);
}
@ -608,7 +610,7 @@ static MACHINE_CONFIG_START( talbot, champbas_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", champbas_state, vblank_irq)
/* MCU */
MCFG_CPU_ADD(CPUTAG_MCU, ALPHA8201, XTAL_18_432MHz/6/8)
MCFG_CPU_ADD("mcu", ALPHA8201, XTAL_18_432MHz/6/8)
MCFG_CPU_PROGRAM_MAP(mcu_map)
MCFG_MACHINE_START_OVERRIDE(champbas_state,champbas)
@ -681,7 +683,7 @@ static MACHINE_CONFIG_DERIVED( champmcu, champbas )
/* basic machine hardware */
/* MCU */
MCFG_CPU_ADD(CPUTAG_MCU, ALPHA8201, XTAL_18_432MHz/6/8)
MCFG_CPU_ADD("mcu", ALPHA8201, XTAL_18_432MHz/6/8)
MCFG_CPU_PROGRAM_MAP(mcu_map)
/* to MCU timeout champbbj */
@ -702,7 +704,7 @@ static MACHINE_CONFIG_START( exctsccr, champbas_state )
MCFG_CPU_PERIODIC_INT_DRIVER(champbas_state, nmi_line_pulse, 4000) /* 4 kHz, updates the dac */
/* MCU */
MCFG_CPU_ADD(CPUTAG_MCU, ALPHA8301, XTAL_18_432MHz/6/8) /* Actually 8302 */
MCFG_CPU_ADD("mcu", ALPHA8301, XTAL_18_432MHz/6/8) /* Actually 8302 */
MCFG_CPU_PROGRAM_MAP(mcu_map)
MCFG_MACHINE_START_OVERRIDE(champbas_state,exctsccr)

View File

@ -191,7 +191,7 @@ Notes:
#include "emu.h"
#include "cdrom.h"
#include "cpu/powerpc/ppc.h"
#include "imagedev/chd_cd.h"
struct CDE_DMA
{
@ -1187,6 +1187,11 @@ static MACHINE_CONFIG_START( m2, konamim2_state )
MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
/*cd-rom*/
MCFG_CDROM_ADD( "cdrom" )
MCFG_CDROM_INTERFACE("3do_m2_cdrom")
MCFG_SOFTWARE_LIST_ADD("cd_list","3do_m2")
MACHINE_CONFIG_END

View File

@ -110,6 +110,8 @@ static MACHINE_CONFIG_START( pippin, macpci_state )
MCFG_SOUND_ROUTE( 1, "rspeaker", 1.00 )
MCFG_CDROM_ADD("cdrom")
MCFG_CDROM_INTERFACE("pippin_cdrom")
MCFG_SOFTWARE_LIST_ADD("cd_list","pippin")
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("32M")

View File

@ -141,6 +141,11 @@ static INPUT_PORTS_START( osborne1 )
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("CNF")
PORT_CONFNAME(0x01, 0x00, "Video Output")
PORT_CONFSETTING(0x00, "Standard")
PORT_CONFSETTING(0x01, "SCREEN-PAC")
INPUT_PORTS_END
@ -197,7 +202,7 @@ static MACHINE_CONFIG_START( osborne1, osborne1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_UPDATE_DRIVER(osborne1_state, screen_update)
MCFG_SCREEN_RAW_PARAMS( MAIN_CLOCK/2, 512, 0, 416, 260, 0, 240 )
MCFG_SCREEN_RAW_PARAMS( MAIN_CLOCK, 1024, 0, 832, 260, 0, 240 )
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", osborne1)
MCFG_PALETTE_ADD_MONOCHROME_GREEN_HIGHLIGHT("palette")

View File

@ -4150,6 +4150,35 @@ ROM_START( gardiab )
ROM_LOAD( "pr5317.4", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) )
ROM_END
ROM_START( gardiaj )
ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD( "epr-10250.ic90", 0x00000, 0x8000, CRC(c97943a7) SHA1(eb201987c7a78f7eb6838211c0af3394c0b2d95f) ) /* encrypted */
ROM_LOAD( "epr-10251.ic91", 0x10000, 0x8000, CRC(b2ed05dc) SHA1(c520bf7024c85dc759c27eccb0a31998f4d72b5f) )
ROM_LOAD( "epr-10252.ic92", 0x18000, 0x8000, CRC(0a490588) SHA1(18df754ebdf062096f2d631a722b168901610345) )
ROM_REGION( 0x10000, "soundcpu", 0 )
ROM_LOAD( "epr-10243.ic126", 0x0000, 0x4000, CRC(87220660) SHA1(3f2bfc03e0f1053a4aa0ec5ebb0d573f2e20964c) )
ROM_REGION( 0x18000, "tiles", 0 )
ROM_LOAD( "epr-10240.ic4", 0x00000, 0x8000, CRC(998ce090) SHA1(78929f471c5aa8b32d1693e8af2ef3e86efd3d7d) )
ROM_LOAD( "epr-10241.ic5", 0x08000, 0x8000, CRC(81ab0b07) SHA1(7f776dccd66ad097a1a906823786a52d31a8c4e8) )
ROM_LOAD( "epr-10242.ic6", 0x10000, 0x8000, CRC(2dc4c4c7) SHA1(0347170b941a5c567eed114833656e8abd16a8ab) )
ROM_REGION( 0x20000, "sprites", 0 )
ROM_LOAD( "epr-10234.ic87", 0x00000, 0x8000, CRC(8a6aed33) SHA1(044836885ace8294124b1be9b3a4828f772bb9ee) )
ROM_LOAD( "epr-10233.ic86", 0x08000, 0x8000, CRC(c52784d3) SHA1(b37d7f261be12616dbe11dfa375eaf6878e4a0f3) )
ROM_LOAD( "epr-10236.ic89", 0x10000, 0x8000, CRC(b35ab227) SHA1(616f6097afddffa9af89fe84d8b6df59c567c1e6) )
ROM_LOAD( "epr-10235.ic88", 0x18000, 0x8000, CRC(006a3151) SHA1(a575f9d5c026e6b18e990720ec7520b6b5ae94e3) )
ROM_REGION( 0x0300, "palette", 0 )
ROM_LOAD( "pr-7345.ic20", 0x0000, 0x0100, CRC(8eee0f72) SHA1(b5694c120f604a5f7cc95618a71ab16a1a6151ed) ) /* palette red component */
ROM_LOAD( "pr-7344.ic14", 0x0100, 0x0100, CRC(3e7babd7) SHA1(d4f8790db4dce75e27156a4c6de2dcef2baf6d76) ) /* palette green component */
ROM_LOAD( "pr-7343.ic8", 0x0200, 0x0100, CRC(371c44a6) SHA1(ac37458d1feb6566b09a795b20c21953d4ab109d) ) /* palette blue component */
ROM_REGION( 0x0100, "proms", 0 )
ROM_LOAD( "pr5317.ic28", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) )
ROM_END
ROM_START( brain )
ROM_REGION( 0x20000, "maincpu", 0 )
@ -5698,6 +5727,7 @@ GAME( 1985, chopliftbl, choplift, sys2row, choplift, system1_state, bank0c,
GAME( 1985, shtngmst, 0, sys2m, shtngmst, system1_state, shtngmst, ROT0, "Sega", "Shooting Master (8751 315-5159)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
GAME( 1985, shtngmste, shtngmst, sys2m, shtngmst, system1_state, shtngmst, ROT0, "Sega / EVG", "Shooting Master (EVG, 8751 315-5159a)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, gardiab, gardia, sys2x, gardia, system1_state, gardiab, ROT270, "bootleg", "Gardia (317-0007?, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1986, gardiaj, gardia, sys2x, gardia, system1_state, gardia, ROT270, "Coreland / Sega", "Gardia (Japan, 317-0006)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1986, wboysys2, wboy, sys2x, wboysys2, system1_state, wboysys2, ROT0, "Escape (Sega license)", "Wonder Boy (system 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, tokisens, 0, sys2, tokisens, system1_state, bank0c, ROT90, "Sega", "Toki no Senshi - Chrono Soldier", MACHINE_SUPPORTS_SAVE )
GAME( 1987, wbml, 0, sys2xb, wbml, system1_state, wbml, ROT0, "Sega / Westone", "Wonder Boy in Monster Land (Japan New Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE )

View File

@ -6,10 +6,9 @@
*************************************************************************/
#define CPUTAG_MCU "mcu"
#include "sound/dac.h"
class champbas_state : public driver_device
{
public:
@ -20,12 +19,13 @@ public:
m_spriteram_2(*this, "spriteram_2"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_mcu(*this, CPUTAG_MCU),
m_mcu(*this, "mcu"),
m_dac(*this, "dac"),
m_dac1(*this, "dac1"),
m_dac2(*this, "dac2"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"){ }
m_palette(*this, "palette")
{ }
/* memory pointers */
required_shared_ptr<UINT8> m_bg_videoram;

View File

@ -47,6 +47,7 @@ public:
m_row5(*this, "ROW5"),
m_row6(*this, "ROW6"),
m_row7(*this, "ROW7"),
m_cnf(*this, "CNF"),
m_bank1(*this, "bank1"),
m_bank2(*this, "bank2"),
m_bank3(*this, "bank3"),
@ -93,6 +94,8 @@ public:
bool m_pia_0_irq_state;
bool m_pia_1_irq_state;
/* video related */
UINT8 m_screen_pac;
UINT8 m_resolution;
UINT8 m_new_start_x;
UINT8 m_new_start_y;
emu_timer *m_video_timer;
@ -115,6 +118,7 @@ protected:
required_ioport m_row5;
required_ioport m_row6;
required_ioport m_row7;
required_ioport m_cnf;
required_memory_bank m_bank1;
required_memory_bank m_bank2;
required_memory_bank m_bank3;

View File

@ -75,6 +75,9 @@ READ8_MEMBER( osborne1_state::osborne1_2000_r )
/* Row 7 */
if ( offset & 0x80 ) data &= m_row7->read();
break;
case 0x400: /* SCREEN-PAC */
if (m_screen_pac) data &= 0xFB;
break;
case 0x900: /* IEEE488 PIA */
data = m_pia0->read(space, offset & 0x03 );
break;
@ -108,6 +111,9 @@ WRITE8_MEMBER( osborne1_state::osborne1_2000_w )
case 0x100: /* Floppy */
m_fdc->write(space, offset & 0x03, data );
break;
case 0x400: /* SCREEN-PAC */
m_resolution = data & 0x01;
break;
case 0x900: /* IEEE488 PIA */
m_pia0->write(space, offset & 0x03, data );
break;
@ -358,7 +364,7 @@ TIMER_CALLBACK_MEMBER(osborne1_state::osborne1_video_callback)
ma = (m_new_start_y + (y/10)) * 128 + m_new_start_x;
UINT16 *p = &m_bitmap.pix16(y);
for ( x = 0; x < 52; x++ )
for ( x = 0; x < ((m_screen_pac && m_resolution) ? 104 : 52); x++ )
{
chr = m_ram->pointer()[ 0xF000 + ( (ma+x) & 0xFFF ) ];
dim = m_ram->pointer()[ 0x10000 + ( (ma+x) & 0xFFF ) ] & 0x80;
@ -370,13 +376,21 @@ TIMER_CALLBACK_MEMBER(osborne1_state::osborne1_video_callback)
/* Display a scanline of a character */
*p++ = BIT(gfx, 7) ? ( dim ? 2 : 1 ) : 0;
if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 6) ? ( dim ? 2 : 1 ) : 0;
if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 5) ? ( dim ? 2 : 1 ) : 0;
if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 4) ? ( dim ? 2 : 1 ) : 0;
if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 3) ? ( dim ? 2 : 1 ) : 0;
if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 2) ? ( dim ? 2 : 1 ) : 0;
if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 1) ? ( dim ? 2 : 1 ) : 0;
if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
*p++ = BIT(gfx, 0) ? ( dim ? 2 : 1 ) : 0;
if (!m_screen_pac || !m_resolution) { p[0] = p[-1]; p++; }
}
}
@ -409,6 +423,8 @@ void osborne1_state::machine_reset()
m_pia_1_irq_state = FALSE;
m_in_irq_handler = 0;
m_screen_pac = 0 != (m_cnf->read() & 0x01);
m_resolution = 0;
m_p_chargen = memregion( "chargen" )->base();
memset( m_ram->pointer() + 0x10000, 0xFF, 0x1000 );

View File

@ -1,5 +1,11 @@
// license:BSD-3-Clause
// copyright-holders:Ernesto Corvi, Jarek Parchanski, Nicola Salmoria
/*************************************************************************
Talbot - Champion Base Ball - Exciting Soccer
*************************************************************************/
#include "emu.h"
#include "video/resnet.h"
#include "includes/champbas.h"
@ -28,7 +34,6 @@ PALETTE_INIT_MEMBER(champbas_state,champbas)
static const int resistances_rg[3] = { 1000, 470, 220 };
static const int resistances_b [2] = { 470, 220 };
double rweights[3], gweights[3], bweights[2];
int i;
/* compute the color output resistor weights */
compute_resistor_weights(0, 255, -1.0,
@ -37,7 +42,7 @@ PALETTE_INIT_MEMBER(champbas_state,champbas)
2, &resistances_b[0], bweights, 0, 0);
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
for (int i = 0; i < 0x20; i++)
{
int bit0, bit1, bit2;
int r, g, b;
@ -64,7 +69,7 @@ PALETTE_INIT_MEMBER(champbas_state,champbas)
color_prom += 0x20;
for (i = 0; i < 0x200; i++)
for (int i = 0; i < 0x200; i++)
{
UINT8 ctabentry = (color_prom[i & 0xff] & 0x0f) | ((i & 0x100) >> 4);
palette.set_pen_indirect(i, ctabentry);
@ -75,10 +80,9 @@ PALETTE_INIT_MEMBER(champbas_state,champbas)
PALETTE_INIT_MEMBER(champbas_state,exctsccr)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
for (int i = 0; i < 0x20; i++)
{
int bit0, bit1, bit2;
int r, g, b;
@ -108,7 +112,7 @@ PALETTE_INIT_MEMBER(champbas_state,exctsccr)
color_prom += 0x20;
/* characters / sprites (3bpp) */
for (i = 0; i < 0x100; i++)
for (int i = 0; i < 0x100; i++)
{
int swapped_i = BITSWAP8(i, 2, 7, 6, 5, 4, 3, 1, 0);
UINT8 ctabentry = (color_prom[swapped_i] & 0x0f) | ((i & 0x80) >> 3);
@ -116,7 +120,7 @@ PALETTE_INIT_MEMBER(champbas_state,exctsccr)
}
/* sprites (4bpp) */
for (i = 0; i < 0x100; i++)
for (int i = 0; i < 0x100; i++)
{
UINT8 ctabentry = (color_prom[0x100 + i] & 0x0f) | 0x10;
palette.set_pen_indirect(i + 0x100, ctabentry);
@ -186,10 +190,9 @@ WRITE8_MEMBER(champbas_state::champbas_flipscreen_w)
void champbas_state::champbas_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
int offs;
gfx_element* const gfx = m_gfxdecode->gfx(1);
for (offs = m_spriteram.bytes() - 2; offs >= 0; offs -= 2)
for (int offs = m_spriteram.bytes() - 2; offs >= 0; offs -= 2)
{
int code = (m_spriteram[offs] >> 2) | (m_gfx_bank << 6);
int color = (m_spriteram[offs + 1] & 0x1f) | (m_palette_bank << 6);
@ -198,32 +201,29 @@ void champbas_state::champbas_draw_sprites( bitmap_ind16 &bitmap, const rectangl
int sx = m_spriteram_2[offs + 1] - 16;
int sy = 255 - m_spriteram_2[offs];
gfx->transmask(bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy,
m_palette->transpen_mask(*gfx, color, 0));
gfx->transmask(bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy,
m_palette->transpen_mask(*gfx, color, 0));
// wraparound
gfx->transmask(bitmap,cliprect,
code, color,
flipx, flipy,
sx + 256, sy,
m_palette->transpen_mask(*gfx, color, 0));
gfx->transmask(bitmap,cliprect,
code, color,
flipx, flipy,
sx + 256, sy,
m_palette->transpen_mask(*gfx, color, 0));
}
}
void champbas_state::exctsccr_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
int offs;
UINT8 *obj1, *obj2;
obj1 = m_bg_videoram;
obj2 = &(m_spriteram[0x20]);
for (offs = 0x0e; offs >= 0; offs -= 2)
for (int offs = 0x0e; offs >= 0; offs -= 2)
{
int sx, sy, code, bank, flipx, flipy, color;
@ -236,18 +236,17 @@ void champbas_state::exctsccr_draw_sprites( bitmap_ind16 &bitmap, const rectangl
color = (obj1[offs + 1]) & 0x0f;
bank = ((obj1[offs + 1] >> 4) & 1);
m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
code + (bank << 6),
color,
flipx, flipy,
sx,sy,0);
m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
code + (bank << 6),
color,
flipx, flipy,
sx,sy,0);
}
obj1 = m_spriteram_2;
obj2 = m_spriteram;
for (offs = 0x0e; offs >= 0; offs -= 2)
for (int offs = 0x0e; offs >= 0; offs -= 2)
{
int sx, sy, code, flipx, flipy, color;
@ -259,13 +258,12 @@ void champbas_state::exctsccr_draw_sprites( bitmap_ind16 &bitmap, const rectangl
flipy = (~obj1[offs]) & 0x02;
color = (obj1[offs + 1]) & 0x0f;
m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
code,
color,
flipx, flipy,
sx,sy,
m_palette->transpen_mask(*m_gfxdecode->gfx(2), color, 0x10));
m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
code,
color,
flipx, flipy,
sx,sy,
m_palette->transpen_mask(*m_gfxdecode->gfx(2), color, 0x10));
}
}

View File

@ -1832,7 +1832,7 @@ static device_info *rawinput_device_create(running_machine &machine, device_info
if ((*get_rawinput_device_info)(device->hDevice, RIDI_DEVICENAME, NULL, &name_length) != 0)
goto error;
tname = global_alloc_array_clear(TCHAR, name_length+1);
if (name_length != 1 && (*get_rawinput_device_info)(device->hDevice, RIDI_DEVICENAME, tname, &name_length) == -1)
if (name_length > 1 && (*get_rawinput_device_info)(device->hDevice, RIDI_DEVICENAME, tname, &name_length) == -1)
goto error;
// if this is an RDP name, skip it