Merge remote-tracking branch 'upstream/master' into fix_mm1_video

This commit is contained in:
kara1001000 2015-10-09 23:35:45 +03:00
commit f5e84eeca0
44 changed files with 5264 additions and 4938 deletions

View File

@ -82,7 +82,7 @@ static void MyCPUID(UInt32 function, UInt32 *a, UInt32 *b, UInt32 *c, UInt32 *d)
"=c" (*c) ,
"=d" (*d)
: "0" (function)) ;
#else // __PIC__
#else /* __PIC__ */
__asm__ __volatile__ (
"cpuid"
: "=a" (*a) ,
@ -90,8 +90,8 @@ static void MyCPUID(UInt32 function, UInt32 *a, UInt32 *b, UInt32 *c, UInt32 *d)
"=c" (*c) ,
"=d" (*d)
: "0" (function)) ;
#endif // __PIC__
#endif /* __PIC__ */
#endif
#else

View File

@ -967,7 +967,7 @@ SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAll
return SZ_OK;
}
// why isn't there an interface to pass in the properties directly????
/* why isn't there an interface to pass in the properties directly???? */
SRes LzmaDec_Allocate_MAME(CLzmaDec *p, const CLzmaProps *propNew, ISzAlloc *alloc)
{
SizeT dicBufSize;

File diff suppressed because it is too large Load Diff

View File

@ -90,7 +90,7 @@
# QT_HOME = /usr/lib64/qt48/
# DRIVERS = src/mame/drivers/1942.c,src/mame/drivers/cops.c
# SOURCES = src/mame/drivers/asteroid.c,src/mame/audio/llander.c
# FORCE_VERSION_COMPILE = 1
@ -628,8 +628,8 @@ ifdef QT_HOME
PARAMS += --QT_HOME='$(QT_HOME)'
endif
ifdef DRIVERS
PARAMS += --DRIVERS='$(DRIVERS)'
ifdef SOURCES
PARAMS += --SOURCES='$(SOURCES)'
endif
ifdef FORCE_VERSION_COMPILE
@ -661,7 +661,7 @@ SCRIPTS = scripts/genie.lua \
$(wildcard src/osd/$(OSD)/$(OSD).mak) \
$(wildcard src/$(TARGET)/$(SUBTARGET).mak)
ifndef DRIVERS
ifndef SOURCES
SCRIPTS += scripts/target/$(TARGET)/$(SUBTARGET).lua
endif

View File

@ -370,8 +370,8 @@ newoption {
}
newoption {
trigger = "DRIVERS",
description = "List of drivers to compile.",
trigger = "SOURCES",
description = "List of sources to compile.",
}
newoption {
@ -516,15 +516,15 @@ msgarchiving ("Archiving $(notdir $@)...")
messageskip { "SkipCreatingMessage", "SkipBuildingMessage", "SkipCleaningMessage" }
if (_OPTIONS["DRIVERS"] == nil) then
if (_OPTIONS["SOURCES"] == nil) then
if (not os.isfile(path.join("target", _OPTIONS["target"],_OPTIONS["subtarget"] .. ".lua"))) then
error("File definition for TARGET=" .. _OPTIONS["target"] .. " SUBTARGET=" .. _OPTIONS["subtarget"] .. " does not exist")
end
dofile (path.join("target", _OPTIONS["target"],_OPTIONS["subtarget"] .. ".lua"))
else
OUT_STR = os.outputof( PYTHON .. " " .. MAME_DIR .. "scripts/build/makedep.py " .. MAME_DIR .. " " .. _OPTIONS["DRIVERS"] .. " target " .. _OPTIONS["subtarget"])
OUT_STR = os.outputof( PYTHON .. " " .. MAME_DIR .. "scripts/build/makedep.py " .. MAME_DIR .. " " .. _OPTIONS["SOURCES"] .. " target " .. _OPTIONS["subtarget"])
load(OUT_STR)()
os.outputof( PYTHON .. " " .. MAME_DIR .. "scripts/build/makedep.py " .. MAME_DIR .. " " .. _OPTIONS["DRIVERS"] .. " drivers " .. _OPTIONS["subtarget"] .. " > ".. GEN_DIR .. _OPTIONS["target"] .. "/" .. _OPTIONS["subtarget"].."/drivlist.c")
os.outputof( PYTHON .. " " .. MAME_DIR .. "scripts/build/makedep.py " .. MAME_DIR .. " " .. _OPTIONS["SOURCES"] .. " drivers " .. _OPTIONS["subtarget"] .. " > ".. GEN_DIR .. _OPTIONS["target"] .. "/" .. _OPTIONS["subtarget"].."/drivlist.c")
end
configuration { "gmake" }
flags {

View File

@ -47,7 +47,7 @@ function devicesProject(_target, _subtarget)
dofile(path.join("src", "machine.lua"))
if (_OPTIONS["DRIVERS"] == nil) then
if (_OPTIONS["SOURCES"] == nil) then
project ("bus")
uuid ("5d782c89-cf7e-4cfe-8f9f-0d4bfc16c91d")
kind (LIBTYPE)
@ -85,6 +85,7 @@ else
dofile(path.join("src", "bus.lua"))
end
if #disasm_files > 0 then
project ("dasm")
uuid ("f2d28b0a-6da5-4f78-b629-d834aa00429d")
kind (LIBTYPE)
@ -129,3 +130,5 @@ end
}
end
end
end

View File

@ -2,7 +2,7 @@
-- copyright-holders:MAMEdev Team
function mainProject(_target, _subtarget)
if (_OPTIONS["DRIVERS"] == nil) then
if (_OPTIONS["SOURCES"] == nil) then
if (_target == _subtarget) then
project (_target)
else
@ -38,7 +38,7 @@ end
flags {
"Unicode",
}
if (_OPTIONS["DRIVERS"] == nil) then
if (_OPTIONS["SOURCES"] == nil) then
configuration { "x64", "Release" }
targetsuffix "64"
if _OPTIONS["PROFILE"] then
@ -91,7 +91,7 @@ end
links {
"osd_" .. _OPTIONS["osd"],
}
if (_OPTIONS["DRIVERS"] == nil) then
if (_OPTIONS["SOURCES"] == nil) then
links {
"bus",
}
@ -101,7 +101,13 @@ end
"optional",
"emu",
"formats",
}
if #disasm_files > 0 then
links {
"dasm",
}
end
links {
"utils",
"expat",
"softfloat",
@ -226,7 +232,7 @@ end
GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.c",
}
if (_OPTIONS["DRIVERS"] == nil) then
if (_OPTIONS["SOURCES"] == nil) then
dependency {
{ "../../../../generated/mame/mame/drivlist.c", MAME_DIR .. "src/mame/mess.lst", true },
{ "../../../../generated/mame/mame/drivlist.c" , MAME_DIR .. "src/mame/arcade.lst", true},

View File

@ -109,9 +109,9 @@ void pit68230_device::execute_run ()
} while (m_icount > 0);
}
LOG (static INT32 ow_cnt = 0);
LOG (static INT32 ow_data = 0);
LOG (static INT32 ow_ofs = 0);
LOG (static INT32 ow_cnt = 0)
LOG (static INT32 ow_data = 0)
LOG (static INT32 ow_ofs = 0)
WRITE8_MEMBER (pit68230_device::write){
switch (offset) {
@ -185,9 +185,9 @@ WRITE8_MEMBER (pit68230_device::write){
ow_cnt++; )
}
LOG (static INT32 or_cnt = 0);
LOG (static INT32 or_data = 0);
LOG (static INT32 or_ofs = 0);
LOG (static INT32 or_cnt = 0)
LOG (static INT32 or_data = 0)
LOG (static INT32 or_ofs = 0)
READ8_MEMBER (pit68230_device::read){
UINT8 data = 0;

View File

@ -451,7 +451,7 @@ protected:
WR11_TRXSRC_SRC_XTAL = 0x00, // 0 0
WR11_TRXSRC_SRC_TRA = 0x01, // 0 1
WR11_TRXSRC_SRC_BR = 0x02, // 1 0
WR11_TRXSRC_SRC_DPLL = 0x03, // 1 1
WR11_TRXSRC_SRC_DPLL = 0x03 // 1 1
};
enum

View File

@ -208,7 +208,7 @@ protected:
{
REG_RR0_STATUS = 0,
REG_RR1_SPEC_RCV_COND = 1,
REG_RR2_INTERRUPT_VECT = 2,
REG_RR2_INTERRUPT_VECT = 2
};
// Write registers
@ -221,7 +221,7 @@ protected:
REG_WR4_RX_TX_MODES = 4,
REG_WR5_TX_CONTROL = 5,
REG_WR6_SYNC_OR_SDLC_A = 6,
REG_WR7_SYNC_OR_SDLC_F = 7,
REG_WR7_SYNC_OR_SDLC_F = 7
};
enum
@ -486,7 +486,7 @@ protected:
enum
{
TYPE_Z80SIO,
TYPE_Z80SIO
};
enum

View File

@ -12,6 +12,7 @@
#include "emuopts.h"
#include "png.h"
#include "rendutil.h"
#include "validity.h"
@ -55,6 +56,7 @@ screen_device::screen_device(const machine_config &mconfig, const char *tag, dev
m_yscale(1.0f),
m_palette(*this),
m_video_attributes(0),
m_orientation(0),
m_container(NULL),
m_width(100),
m_height(100),
@ -238,6 +240,16 @@ void screen_device::static_set_video_attributes(device_t &device, UINT32 flags)
screen_device &screen = downcast<screen_device &>(device);
screen.m_video_attributes = flags;
}
//-------------------------------------------------
// static_set_orientation - set the screen orientation
//-------------------------------------------------
void screen_device::static_set_orientation(device_t &device, UINT32 orientation)
{
screen_device &screen = downcast<screen_device &>(device);
screen.m_orientation = orientation;
}
//-------------------------------------------------
// device_validity_check - verify device
// configuration
@ -269,6 +281,9 @@ void screen_device::device_validity_check(validity_checker &valid) const
osd_printf_error("Screen does not have palette defined\n");
if (m_palette != NULL && texformat == TEXFORMAT_RGB32)
osd_printf_warning("Screen does not need palette defined\n");
// if (m_orientation != (valid.driver()->flags & ORIENTATION_MASK))
// osd_printf_error("Screen orientation does not match\n");
}

View File

@ -181,11 +181,13 @@ public:
static void static_set_screen_vblank(device_t &device, screen_vblank_delegate callback);
static void static_set_palette(device_t &device, const char *tag);
static void static_set_video_attributes(device_t &device, UINT32 flags);
static void static_set_orientation(device_t &device, UINT32 orientation);
// information getters
render_container &container() const { assert(m_container != NULL); return *m_container; }
bitmap_ind8 &priority() { return m_priority; }
palette_device *palette() { return m_palette; }
UINT32 orientation() { return m_orientation; }
// dynamic configuration
void configure(int width, int height, const rectangle &visarea, attoseconds_t frame_period);
@ -266,6 +268,7 @@ private:
screen_vblank_delegate m_screen_vblank; // screen vblank callback
optional_device<palette_device> m_palette; // our palette
UINT32 m_video_attributes; // flags describing the video system
UINT32 m_orientation; // screen orientation
// internal state
render_container * m_container; // pointer to our container
@ -429,6 +432,8 @@ typedef device_type_iterator<&device_creator<screen_device>, screen_device> scre
screen_device::static_set_palette(*device, FINDER_DUMMY_TAG);
#define MCFG_SCREEN_VIDEO_ATTRIBUTES(_flags) \
screen_device::static_set_video_attributes(*device, _flags);
#define MCFG_SCREEN_ORIENTATION(_orientation) \
screen_device::static_set_orientation(*device, _orientation);
//**************************************************************************

View File

@ -39,6 +39,7 @@ public:
// getters
int errors() const { return m_errors; }
int warnings() const { return m_warnings; }
const game_driver *driver() const { return m_current_driver; }
// operations
void check_driver(const game_driver &driver);

View File

@ -1826,6 +1826,7 @@ rtypej // (c) 1987 (Japan)
rtypejp // (c) 1987 (Japan)
rtypeu // (c) 1987 + Nintendo USA license (US)
rtypeb // bootleg
rtypem82b // bootleg
bchopper // (c) 1987
mrheli // (c) 1987 (Japan)
nspirit // (c) 1988
@ -1843,6 +1844,7 @@ dbreedm72 // (c) 1989
rtype2 // (c) 1989
rtype2j // (c) 1989 (Japan)
rtype2jc // (c) 1989 (Japan)
rtype2m82b // bootleg
majtitle // (c) 1990 (World)
majtitlej // (c) 1990 (Japan)
hharry // (c) 1990 (World)

View File

@ -250,6 +250,7 @@ static MACHINE_CONFIG_START( battlex, battlex_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(battlex_state, screen_update_battlex)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", battlex)
MCFG_PALETTE_ADD("palette", 64)

View File

@ -490,6 +490,7 @@ static MACHINE_CONFIG_START( changela, changela_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(changela_state, screen_update_changela)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_PALETTE_ADD("palette", 0x40)

View File

@ -4401,6 +4401,7 @@ static MACHINE_CONFIG_START( htengoku, ddenlovr_state )
MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_htengoku)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_PALETTE_ADD("palette", 16*256)

View File

@ -1800,6 +1800,7 @@ static MACHINE_CONFIG_DERIVED( pestplce, dkongjr )
MCFG_PALETTE_INIT_OWNER(dkong_state,dkong2b) /* wrong! */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(dkong_state, screen_update_pestplce)
MCFG_SCREEN_ORIENTATION(ROT180)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( dkong3b, dkongjr )
@ -1831,6 +1832,12 @@ static MACHINE_CONFIG_DERIVED( s2650, dkong2b )
MCFG_MACHINE_START_OVERRIDE(dkong_state,s2650)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( shootgal, s2650 )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_ORIENTATION(ROT180)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( spclforc, s2650 )
/* basic machine hardware */
@ -3319,7 +3326,7 @@ GAME( 1984, herodk, hero, s2650, herodk, dkong_state, herodk, R
GAME( 1984, herodku, hero, s2650, herodk, driver_device, 0, ROT90, "Seatongrove Ltd (Crown license)", "Hero in the Castle of Doom (DK conversion not encrypted)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, 8ballact, 0, s2650, 8ballact, driver_device, 0, ROT90, "Seatongrove Ltd (Magic Electronics USA license)", "Eight Ball Action (DK conversion)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, 8ballact2, 8ballact, s2650, 8ballact, driver_device, 0, ROT90, "Seatongrove Ltd (Magic Electronics USA license)", "Eight Ball Action (DKJr conversion)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, shootgal, 0, s2650, shootgal, driver_device, 0, ROT180, "Seatongrove Ltd (Zaccaria license)", "Shooting Gallery", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, shootgal, 0, shootgal, shootgal, driver_device, 0, ROT180, "Seatongrove Ltd (Zaccaria license)", "Shooting Gallery", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1985, spclforc, 0, spclforc, spclforc, driver_device, 0, ROT90, "Senko Industries (Magic Electronics Inc. license)", "Special Forces", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1985, spcfrcii, 0, spclforc, spclforc, driver_device, 0, ROT90, "Senko Industries (Magic Electronics Inc. license)", "Special Forces II", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )

View File

@ -4405,6 +4405,7 @@ static MACHINE_CONFIG_START( hanamai, dynax_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16+8, 255-8)
MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hanamai)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_PALETTE_ADD("palette", 512)
@ -4459,6 +4460,7 @@ static MACHINE_CONFIG_START( hnoridur, dynax_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hnoridur)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_PALETTE_ADD("palette", 16*256)
@ -4506,6 +4508,7 @@ static MACHINE_CONFIG_START( hjingi, dynax_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hnoridur)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_PALETTE_ADD("palette", 16*256)
@ -4598,6 +4601,7 @@ static MACHINE_CONFIG_START( mjfriday, dynax_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_mjdialq2)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_PALETTE_ADD("palette", 512)
@ -5003,6 +5007,7 @@ static MACHINE_CONFIG_START( gekisha, dynax_state )
MCFG_SCREEN_VISIBLE_AREA(2, 256-1, 16, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_mjdialq2)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_PALETTE_ADD("palette", 512)
MCFG_PALETTE_INIT_OWNER(dynax_state,sprtmtch) // static palette

View File

@ -1,21 +1,40 @@
// license:BSD-3-Clause
// copyright-holders:Curt Coder
/*
// copyright-holders:Curt Coder, Robbbert
/*****************************************************************************************
ETI project 660, featured in the Australian magazine Electronics Today International.
Commands:
R - Reset (use this before any other instruction)
S - Step
0 - Enter modify memory mode
2 - Save memory to cassette
4 - Load memory from cassette
6 - start binary program
8 - start chip-8 program.
To modify memory, press R, 0, enter 4-digit address, S, enter data, S, continue on.
R to escape.
To save a tape, enter the start address into 0400,0401 (big endian), and the end
address into 0402,0403. Press R. Press record on the tape, press 2.
To load a tape, enter the start and end addresses as above. Press R, 4. Screen goes
black. Press play on tape. If the screen is still black after the tape ends, press R.
All chip-8 programs start at 0600. The manual says the max end address is 7FF (gives
512 bytes), but you can fill up all of memory (gives 2560 bytes).
TODO:
- sometimes there's no sound when started. You may need to hard reset until it beeps.
- don't know why, but the expected behaviour of our 6821 pia isn't what this machine
expects, so had to add a couple of hacks.
- doesn't run programs for other chip-8 computers (this might be normal?)
- we support BIN files, but have none to test with.
- in Invaders, can't shoot them
- in Maze, the result is rubbish (works in Emma02 emulator)
- does not boot!
- reset key
- allocate color ram
- quickload
- color on
- keyboard not working
- foreground is black, according to the construction article it should be white.
- it is supposed to reset itself at boot, but that isn't working. You must press R.
- Pressing F3 causes it to jump into the weeds.
*/
**************************************************************************************************/
#include "includes/eti660.h"
@ -23,25 +42,37 @@
READ8_MEMBER( eti660_state::pia_r )
{
int pia_offset = m_maincpu->get_memory_address() & 0x03;
UINT8 pia_offset = m_maincpu->get_memory_address() & 0x03;
return m_pia->read(space, pia_offset);
}
WRITE8_MEMBER( eti660_state::pia_w )
{
int pia_offset = m_maincpu->get_memory_address() & 0x03;
UINT8 pia_offset = m_maincpu->get_memory_address() & 0x03;
// Some PIA hacks here, as mentioned in the ToDo.
if (pia_offset == 1)
{
// switch color on when requested (test with Wipeout game)
if (data == 0x2c)
m_color_on = 1;
// enable keyboard
if (data == 0x20)
data = 0x24;
}
m_pia->write(space, pia_offset, data);
}
WRITE8_MEMBER( eti660_state::colorram_w )
{
int colorram_offset = m_maincpu->get_memory_address() & 0xff;
offset = m_maincpu->get_memory_address() - 0xc80;
colorram_offset = ((colorram_offset & 0xf8) >> 1) || (colorram_offset & 0x03);
UINT8 colorram_offset = (((offset & 0x1f0) >> 1) | (offset & 0x07));
m_color_ram[colorram_offset] = data;
if (colorram_offset < 0xc0)
m_color_ram[colorram_offset] = data;
}
/* Memory Maps */
@ -49,7 +80,9 @@ WRITE8_MEMBER( eti660_state::colorram_w )
static ADDRESS_MAP_START( eti660_map, AS_PROGRAM, 8, eti660_state )
ADDRESS_MAP_GLOBAL_MASK(0xfff)
AM_RANGE(0x0000, 0x03ff) AM_ROM
AM_RANGE(0x0400, 0x0fff) AM_RAM
AM_RANGE(0x0400, 0x047f) AM_RAM
AM_RANGE(0x0480, 0x05ff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0x0600, 0x0fff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( eti660_io_map, AS_IO, 8, eti660_state )
@ -60,31 +93,34 @@ static ADDRESS_MAP_START( eti660_io_map, AS_IO, 8, eti660_state )
ADDRESS_MAP_END
/* Input Ports */
static INPUT_PORTS_START( eti660 )
PORT_START("PA0")
PORT_START("KEY.0")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3')
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_CHAR('F')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7')
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2')
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CHAR('1')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("PA1")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2')
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A')
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CHAR('6')
PORT_START("PA2")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CHAR('1')
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CHAR('9')
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_CHAR('D')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5')
PORT_START("PA3")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8')
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
PORT_START("KEY.1")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7')
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CHAR('6')
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4')
PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("KEY.2")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A')
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CHAR('9')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8')
PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("KEY.3")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_CHAR('F')
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E')
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_CHAR('D')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("SPECIAL")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("RESET") PORT_CODE(KEYCODE_R)
@ -112,7 +148,13 @@ READ_LINE_MEMBER( eti660_state::gdata_r )
READ_LINE_MEMBER( eti660_state::clear_r )
{
return BIT(m_special->read(), 0);
// A hack to make the machine reset itself on
// boot, like the real one does.
if (m_resetcnt < 0xffff)
m_resetcnt++;
if (m_resetcnt == 0xff00)
return 0;
return BIT(m_special->read(), 0); // R key
}
READ_LINE_MEMBER( eti660_state::ef2_r )
@ -122,7 +164,7 @@ READ_LINE_MEMBER( eti660_state::ef2_r )
READ_LINE_MEMBER( eti660_state::ef4_r )
{
return BIT(m_special->read(), 1);
return BIT(m_special->read(), 1); // S key
}
WRITE_LINE_MEMBER( eti660_state::q_w )
@ -139,9 +181,19 @@ WRITE_LINE_MEMBER( eti660_state::q_w )
WRITE8_MEMBER( eti660_state::dma_w )
{
UINT8 colorram_offset = ((offset & 0xf8) >> 1) | (offset & 0x03);
offset -= 0x480;
m_color = m_color_ram[colorram_offset];
m_color = 7;
if (m_color_on)
{
UINT8 colorram_offset = ((offset & 0x1f0) >> 1) | (offset & 0x07);
if (colorram_offset < 0xc0)
m_color = m_color_ram[colorram_offset];
}
else
m_color = m_p_videoram[offset] ? 7 : 0;
m_cti->con_w(0); // HACK
m_cti->dma_w(space, offset, data);
@ -166,14 +218,13 @@ READ8_MEMBER( eti660_state::pia_pa_r )
*/
UINT8 data = 0xf0;
UINT8 i, data = 0xff;
for (i = 0; i < 4; i++)
if BIT(m_keylatch, i)
return m_io_keyboard[i]->read();
if (!BIT(m_keylatch, 0)) data &= m_pa0->read();
if (!BIT(m_keylatch, 1)) data &= m_pa1->read();
if (!BIT(m_keylatch, 2)) data &= m_pa2->read();
if (!BIT(m_keylatch, 3)) data &= m_pa3->read();
return data | m_keylatch;
return data;
}
WRITE8_MEMBER( eti660_state::pia_pa_w )
@ -193,7 +244,57 @@ WRITE8_MEMBER( eti660_state::pia_pa_w )
*/
m_keylatch = data & 0x0f;
m_keylatch = data ^ 0xff;
}
void eti660_state::machine_reset()
{
m_resetcnt = 0;
m_color_on = 0;
// fix for F3 soft reboot
m_maincpu->set_state_int(COSMAC_R0, 0); // set R0 to start of rom
m_maincpu->set_state_int(COSMAC_P, 0); // set R0 as the PC register
}
void eti660_state::machine_start()
{
save_item(NAME(m_color_ram));
}
QUICKLOAD_LOAD_MEMBER( eti660_state, eti660 )
{
address_space &space = m_maincpu->space(AS_PROGRAM);
int i;
int quick_addr = 0x600;
int quick_length;
dynamic_buffer quick_data;
int read_;
int result = IMAGE_INIT_FAIL;
quick_length = image.length();
quick_data.resize(quick_length);
read_ = image.fread( &quick_data[0], quick_length);
if (read_ != quick_length)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Cannot read the file");
image.message(" Cannot read the file");
}
else
{
for (i = 0; i < quick_length; i++)
if ((quick_addr + i) < 0x1000)
space.write_byte(i + quick_addr, quick_data[i]);
/* display a message about the loaded quickload */
if (strcmp(image.filetype(), "bin") == 0)
image.message(" Quickload: size=%04X : start=%04X : end=%04X : Press 6 to start",quick_length,quick_addr,quick_addr+quick_length);
else
image.message(" Quickload: size=%04X : start=%04X : end=%04X : Press 8 to start",quick_length,quick_addr,quick_addr+quick_length);
result = IMAGE_INIT_PASS;
}
return result;
}
/* Machine Drivers */
@ -224,6 +325,8 @@ static MACHINE_CONFIG_START( eti660, eti660_state )
MCFG_DEVICE_ADD(MC6821_TAG, PIA6821, 0)
MCFG_PIA_READPA_HANDLER(READ8(eti660_state, pia_pa_r))
MCFG_PIA_WRITEPA_HANDLER(WRITE8(eti660_state, pia_pa_w))
MCFG_PIA_IRQA_HANDLER(DEVWRITELINE(CDP1802_TAG, cosmac_device, int_w)) MCFG_DEVCB_INVERT
MCFG_PIA_IRQB_HANDLER(DEVWRITELINE(CDP1802_TAG, cosmac_device, int_w)) MCFG_DEVCB_INVERT
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
@ -231,6 +334,9 @@ static MACHINE_CONFIG_START( eti660, eti660_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("3K")
/* quickload */
MCFG_QUICKLOAD_ADD("quickload", eti660_state, eti660, "bin,c8,ch8", 2)
MACHINE_CONFIG_END
/* ROMs */
@ -240,5 +346,5 @@ ROM_START( eti660 )
ROM_LOAD( "eti660.bin", 0x0000, 0x0400, CRC(811dfa62) SHA1(c0c4951e02f873f15560bdc3f35cdf3f99653922) )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
COMP( 1981, eti660, 0, 0, eti660, eti660, driver_device, 0, "Electronics Today International", "ETI-660", MACHINE_NOT_WORKING )
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
COMP( 1981, eti660, 0, 0, eti660, eti660, driver_device, 0, "Electronics Today International", "ETI-660", 0 )

View File

@ -1068,6 +1068,7 @@ static MACHINE_CONFIG_START( flstory, flstory_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(flstory_state, screen_update_flstory)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", flstory)
MCFG_PALETTE_ADD("palette", 512)

View File

@ -2640,6 +2640,7 @@ static MACHINE_CONFIG_DERIVED( rockclim, galaxian )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_ORIENTATION(ROT180)
MACHINE_CONFIG_END

View File

@ -638,6 +638,7 @@ static MACHINE_CONFIG_START( looping, looping_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(looping_state, screen_update_looping)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT90)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", looping)

View File

@ -769,6 +769,7 @@ static MACHINE_CONFIG_START( m63, m63_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(m63_state, screen_update_m63)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", m63)
MCFG_PALETTE_ADD("palette", 256+4)

View File

@ -96,7 +96,7 @@ M84 - 2 PCB stack
M85 - Pound for Pound uses this, possibly just M84 with
a modified sound section?
- not Jamma, trackball input only
- most Jamma inputs not connected, trackball only
Year Board Protected?
@ -105,28 +105,31 @@ Battle Chopper / Mr. Heli 1987 M72 Y
Ninja Spirit 1988 M72 Y
Image Fight 1988 M72 Y
Legend of Hero Tonma 1989 M72 Y
X Multiply 1989 M81 N
X Multiply 1989 M72(1) Y
Dragon Breed 1989 M81 N
Dragon Breed 1989 M72 Y
X Multiply (World) 1989 M81-A-B + M81-B-B N
X Multiply (Japan) 1989 M72 Y
Dragon Breed 1989 M81-A-B + M81-B-B N
Dragon Breed (Japan?) 1989 M72 Y
R-Type II 1989 M84-A-A + M84-B-A N
Major Title 1990 M82-A-A + M82-B-A N
Hammerin' Harry (World ver) 1990 M81? N
Hammerin' Harry (World ver) 1990 M81-A-B + M81-B-B N
Hammerin' H..(US)/ Daiku no Gensan 1990 M84-A-A + M84-C-A N
Daiku no Gensan 1990 M72(3) Y
Pound for Pound 1990 MM85-A-B + M85-B N
Air Duel (World) 1990 M82 N
Air Duel (Japan) 1990 M72? Y
Cosmic Cop / 1991 M84 N
Daiku no Gensan 1990 M72 Y
Pound for Pound 1990 M85-A-B + M85-B N
Air Duel (World) 1990 M82-A-A + M82-B-A N
Air Duel (Japan) 1990 M72 Y
Cosmic Cop / 1991 M84-D-B + M84-B-B N
Gallop - Armed Police Unit 1991 M72 Y (sample playback only)
Ken-Go / Lightning Swords 1991 M84-A-A + M84-B-B Encrypted
Ken-Go / Lightning Swords 1991 M84-D-B + M84-B-B Encrypted
(1) different addressing PALs, so different memory map
(3) normal M72 memory map, but IRQ vectors and sprite control as in X-Multiply
rtype2 has also been reported as running on M82, is it an official
conversion or not? we've only seen originals verified as M84, same for
Hammering Harry
Rtype / Rtype 2 are often misreported as being M82 games, this is mostly
due to the unofficial conversions that have become widespread, see:
http://www.paulswan.me/arcade/m82-m72.htm (Rtype on M82, extensive wiremods)
http://www.paulswan.me/arcade/m82-m84.htm (Rtype 2 on M82)
these are supported as 'rtypem82b' and 'rtype2m82b' although the former
still needs work because the wiremods change same of the behavior to be
more like an M72 PCB than an M82
TODO:
- m82_gfx_ctrl_w is unknown, it seems to be used to disable rowscroll,
@ -197,6 +200,38 @@ other supported games as well.
/***************************************************************************/
// bchopper doesn't like the proper IRQ controller hookup, title screen jumps around, as does ingame at times
// like m92.c I think this is because we don't clear things at the right time.
#define USE_HACKED_IRQS
#ifdef USE_HACKED_IRQS
#define M72_TRIGGER_IRQ0 m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_upd71059c->HACK_get_base_vector()+0 ); /* VBL interrupt */
#define M72_TRIGGER_IRQ1 m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_upd71059c->HACK_get_base_vector()+1 ); /* Sprite buffer complete interrupt */
#define M72_TRIGGER_IRQ2 m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_upd71059c->HACK_get_base_vector()+2 ); /* Raster interrupt */
#define M72_TRIGGER_IRQ3 m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_upd71059c->HACK_get_base_vector()+3 ); /* Sound cpu->Main cpu interrupt */
// not used due to HOLD LINE logic
#define M72_CLEAR_IRQ0 ;
#define M72_CLEAR_IRQ1 ;
#define M72_CLEAR_IRQ2 ;
#define M72_CLEAR_IRQ3 ;
#else
#define M72_TRIGGER_IRQ0 m_upd71059c->ir0_w(1);
#define M72_TRIGGER_IRQ1 m_upd71059c->ir1_w(1);
#define M72_TRIGGER_IRQ2 m_upd71059c->ir2_w(1);
#define M72_TRIGGER_IRQ3 m_upd71059c->ir3_w(1);
// not sure when these should happen, probably the source of our issues
#define M72_CLEAR_IRQ0 m_upd71059c->ir0_w(0);
#define M72_CLEAR_IRQ1 m_upd71059c->ir1_w(0);
#define M72_CLEAR_IRQ2 m_upd71059c->ir2_w(0);
#define M72_CLEAR_IRQ3 m_upd71059c->ir3_w(0);
#endif
void m72_state::machine_start()
{
m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m72_state::scanline_interrupt),this));
@ -234,20 +269,22 @@ TIMER_CALLBACK_MEMBER(m72_state::scanline_interrupt)
/* raster interrupt - visible area only? */
if (scanline < 256 && scanline == m_raster_irq_position - 128)
{
m_screen->update_partial(scanline);
m_upd71059c->ir2_w(1);
M72_TRIGGER_IRQ2
}
else
m_upd71059c->ir2_w(0);
{
M72_CLEAR_IRQ2
}
/* VBLANK interrupt */
if (scanline == 256)
{
m_screen->update_partial(scanline);
m_upd71059c->ir0_w(1);
M72_TRIGGER_IRQ0
}
else
m_upd71059c->ir0_w(0);
{
M72_CLEAR_IRQ0
}
/* adjust for next scanline */
if (++scanline >= m_screen->height())
@ -1854,8 +1891,9 @@ static MACHINE_CONFIG_START( m72_base, m72_state )
MCFG_CPU_ADD("maincpu",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
MCFG_CPU_PROGRAM_MAP(m72_map)
MCFG_CPU_IO_MAP(m72_portmap)
#ifndef USE_HACKED_IRQS
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
#endif
MCFG_CPU_ADD("soundcpu",Z80, SOUND_CLOCK)
MCFG_CPU_PROGRAM_MAP(sound_ram_map)
MCFG_CPU_IO_MAP(sound_portmap)
@ -1965,7 +2003,9 @@ static MACHINE_CONFIG_START( rtype2, m72_state )
MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
MCFG_CPU_PROGRAM_MAP(rtype2_map)
MCFG_CPU_IO_MAP(m84_portmap)
#ifndef USE_HACKED_IRQS
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
#endif
MCFG_CPU_ADD("soundcpu", Z80, SOUND_CLOCK)
MCFG_CPU_PROGRAM_MAP(sound_rom_map)
@ -2008,7 +2048,9 @@ static MACHINE_CONFIG_START( cosmccop, m72_state )
MCFG_CPU_ADD("maincpu", V35,MASTER_CLOCK/2)
MCFG_CPU_PROGRAM_MAP(kengo_map)
MCFG_CPU_IO_MAP(m84_v33_portmap)
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
//#ifndef USE_HACKED_IRQS
// MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
//#endif
MCFG_CPU_ADD("soundcpu", Z80, SOUND_CLOCK)
MCFG_CPU_PROGRAM_MAP(sound_rom_map)
@ -2016,7 +2058,7 @@ static MACHINE_CONFIG_START( cosmccop, m72_state )
MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
/* IRQs are generated by main Z80 and YM2151 */
MCFG_PIC8259_ADD( "upd71059c", INPUTLINE("maincpu", 0), VCC, NULL)
// MCFG_PIC8259_ADD( "upd71059c", INPUTLINE("maincpu", 0), VCC, NULL)
MCFG_MACHINE_START_OVERRIDE(m72_state,kengo)
MCFG_MACHINE_RESET_OVERRIDE(m72_state,kengo)
@ -2055,8 +2097,9 @@ static MACHINE_CONFIG_START( m82, m72_state )
MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
MCFG_CPU_PROGRAM_MAP(m82_map)
MCFG_CPU_IO_MAP(m82_portmap)
#ifndef USE_HACKED_IRQS
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
#endif
MCFG_CPU_ADD("soundcpu", Z80, SOUND_CLOCK)
MCFG_CPU_PROGRAM_MAP(sound_rom_map)
MCFG_CPU_IO_MAP(rtype2_sound_portmap)
@ -2090,8 +2133,9 @@ static MACHINE_CONFIG_START( poundfor, m72_state )
MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
MCFG_CPU_PROGRAM_MAP(rtype2_map)
MCFG_CPU_IO_MAP(poundfor_portmap)
#ifndef USE_HACKED_IRQS
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
#endif
MCFG_CPU_ADD("soundcpu", Z80, SOUND_CLOCK)
MCFG_CPU_PROGRAM_MAP(sound_rom_map)
MCFG_CPU_IO_MAP(poundfor_sound_portmap)
@ -3291,6 +3335,76 @@ ROM_START( airduel )
ROM_LOAD( "AD_(M82)_A-V0-D.IC12", 0x00000, 0x20000, CRC(339f474d) SHA1(a81bb52598a0e31b2ed6a538755237c5d14d1844) )
ROM_END
ROM_START( rtypem82b )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_BYTE( "rt_h0.bin", 0x00001, 0x20000, CRC(5fa5068b) SHA1(b33891d2e0ca7e52226c1318ad657ac6bc7d6df4) )
ROM_LOAD16_BYTE( "rt_l0.bin", 0x00000, 0x20000, CRC(aee6fae8) SHA1(22645da3bfeb3a7517bdbf0829fd9d689ddc5368) )
ROM_LOAD16_BYTE( "rt_h1.bin", 0x40001, 0x20000, CRC(76389df4) SHA1(20004dd1d058589bdd8ea93a66a6cdf93382c7cc) )
ROM_RELOAD( 0xc0001, 0x20000 )
ROM_LOAD16_BYTE( "rt_l1.bin", 0x40000, 0x20000, CRC(6af66a05) SHA1(3c686b4559e4e223e3b03533fe2b2fc4758f4e02) )
ROM_RELOAD( 0xc0000, 0x20000 )
ROM_REGION( 0x10000, "soundcpu", 0 )
ROM_LOAD( "rt_sp.bin", 0x00000, 0x10000, CRC(24fded65) SHA1(34e085ebfc6415a60b7440ac53c8ae7130b5e9d4) )
ROM_REGION( 0x80000, "sprites", 0 )
ROM_LOAD( "rt_n0.bin", 0x00000, 0x20000, CRC(236e93ad) SHA1(a168c2f007a7469d8c1d834dc5247d99d13fd36d) ) /* sprites #1 */
ROM_LOAD( "rt_n1.bin", 0x20000, 0x20000, CRC(94e0da50) SHA1(0e8aef07b2a4a60bb6faa9ea3d02869d30dff84c) )
ROM_LOAD( "rt_n2.bin", 0x40000, 0x20000, CRC(6310dd0e) SHA1(4e4a50ef64cdfddea10d415a4b2d2490c1364074) )
ROM_LOAD( "rt_n3.bin", 0x60000, 0x20000, CRC(dd9674fb) SHA1(925bbd64015ec9109a74ce80747bea2bfdb0cde6) )
ROM_REGION( 0x100000, "gfx2", 0 )
ROM_LOAD( "rt_c0.bin", 0x00000, 0x40000, CRC(c2511272) SHA1(138dd131f827215f13ba0761cacc0f383b5e5a48) ) /* tiles */
ROM_LOAD( "rt_c1.bin", 0x40000, 0x40000, CRC(6da33dae) SHA1(2b5f686c5c8e45a896ab115818066d03af767cb5) )
ROM_LOAD( "rt_c2.bin", 0x80000, 0x40000, CRC(29322d6e) SHA1(b553d46f1270dcc4754800e65c21b5e418994fcd) )
ROM_LOAD( "rt_c3.bin", 0xc0000, 0x40000, CRC(0ab3a8db) SHA1(7f4f5c18b5df0f5fdcb471db4e87c1be393aca92) )
ROM_REGION( 0x080000, "sprites2", 0 ) // leftover from Major Title
ROM_LOAD( "mt_f0.bin", 0x00000, 0x20000, CRC(2d5e05d5) SHA1(18bdc9c561dbf0f91642161ca985d2154bd58b5d) ) /* sprites #2 */
ROM_LOAD( "mt_f1.bin", 0x20000, 0x20000, CRC(c68cd65f) SHA1(8999b558b4af0f453ada9e4ef705163df96844e6) )
ROM_LOAD( "mt_f2.bin", 0x40000, 0x20000, CRC(a71feb2d) SHA1(47e366b422772bed08ee4d1c338970687d6c3b4c) )
ROM_LOAD( "mt_f3.bin", 0x60000, 0x20000, CRC(179f7562) SHA1(6d28b199daffc62e8fa9009878ac0bb976ccbb2a) )
ROM_REGION( 0x20000, "samples", 0 ) /* samples */ // leftover from Major Title
ROM_LOAD( "mt_vo.bin", 0x00000, 0x20000, CRC(eb24bb2c) SHA1(9fca04fba0249e8213dd164eb6829e1a5acbee65) )
ROM_END
ROM_START( rtype2m82b )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_BYTE( "rt2_h0.bin", 0x00001, 0x20000, CRC(47639a78) SHA1(d7dd851fed96d46c850e5c8f24d9d1a081f6b297) )
ROM_LOAD16_BYTE( "rt2_l0.bin", 0x00000, 0x20000, CRC(a1661cdf) SHA1(d209328d678fc2fc405bd20f5134bd85b4cd4802) )
ROM_LOAD16_BYTE( "rt2_h1.bin", 0x40001, 0x20000, CRC(4b79840c) SHA1(6cf8c8cf4bcf5e2acdaa05b8dca2f2a969edc2c5) )
ROM_RELOAD( 0xc0001, 0x20000 )
ROM_LOAD16_BYTE( "rt2_l1.bin", 0x40000, 0x20000, CRC(6ab3ae42) SHA1(d3d7c35e1583b55cc668aa011471c3bf04a541af) )
ROM_RELOAD( 0xc0000, 0x20000 )
ROM_REGION( 0x10000, "soundcpu", 0 )
ROM_LOAD( "rt2_sp.bin", 0x00000, 0x10000, CRC(73ffecb4) SHA1(4795bf0d6263060c3d3759b659bdb189a4087600) )
ROM_REGION( 0x80000, "sprites", 0 )
ROM_LOAD( "rt2_n0.bin", 0x00000, 0x20000, CRC(2cd8f913) SHA1(a53752b35da95b420dd29a09176d265d292b3938) ) /* sprites #1 */
ROM_LOAD( "rt2_n1.bin", 0x20000, 0x20000, CRC(5033066d) SHA1(e125127f0610c63f9e59a585db547be5d49ed863) )
ROM_LOAD( "rt2_n2.bin", 0x40000, 0x20000, CRC(ec3a0450) SHA1(632bdd397f1bc67f6970faf7d09ab8d911e105fe) )
ROM_LOAD( "rt2_n3.bin", 0x60000, 0x20000, CRC(db6176fc) SHA1(1eaf72af0322490c98461aded202288e387caac1) )
ROM_REGION( 0x100000, "gfx2", 0 )
ROM_LOAD( "rt2_c0.bin", 0x00000, 0x40000, CRC(f5bad5f2) SHA1(dc86b93f62e8947e3551f07e393e740e5dc43f5e)) /* tiles */
ROM_LOAD( "rt2_c1.bin", 0x40000, 0x40000, CRC(71451778) SHA1(52ca7aa8522b988a19556313041450c767dad054) )
ROM_LOAD( "rt2_c2.bin", 0x80000, 0x40000, CRC(c6b0c352) SHA1(eec4fa88c27815960106881e7ccb23e62556bf1c) )
ROM_LOAD( "rt2_c3.bin", 0xc0000, 0x40000, CRC(6d530a32) SHA1(4e4100e5e5d88e65fb5494474d3692ecd8f44343) )
ROM_REGION( 0x080000, "sprites2", 0 ) // leftover from Major Title
ROM_LOAD( "mt_f0.bin", 0x00000, 0x20000, CRC(2d5e05d5) SHA1(18bdc9c561dbf0f91642161ca985d2154bd58b5d) ) /* sprites #2 */
ROM_LOAD( "mt_f1.bin", 0x20000, 0x20000, CRC(c68cd65f) SHA1(8999b558b4af0f453ada9e4ef705163df96844e6) )
ROM_LOAD( "mt_f2.bin", 0x40000, 0x20000, CRC(a71feb2d) SHA1(47e366b422772bed08ee4d1c338970687d6c3b4c) )
ROM_LOAD( "mt_f3.bin", 0x60000, 0x20000, CRC(179f7562) SHA1(6d28b199daffc62e8fa9009878ac0bb976ccbb2a) )
ROM_REGION( 0x20000, "samples", 0 ) /* samples */
ROM_LOAD( "rt2_vo.bin", 0x00000, 0x20000, CRC(637172d5) SHA1(9dd0dc409306287238826bf301e2a7a12d6cd9ce) )
ROM_END
/*****************************
M84 sets
******************************/
@ -3660,6 +3774,8 @@ ROM_END
// the program roms failing their tests. This is why we still have simulation code for many games
// despite having Japanese version MCU roms for several of them. See notes next to the sets
/* M72 */
GAME( 1987, rtype, 0, rtype, rtype, driver_device, 0, ROT0, "Irem", "R-Type (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1987, rtypej, rtype, rtype, rtype, driver_device, 0, ROT0, "Irem", "R-Type (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1987, rtypejp, rtype, rtype, rtypep, driver_device, 0, ROT0, "Irem", "R-Type (Japan prototype)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
@ -3678,37 +3794,52 @@ GAME( 1988, imgfightj, imgfight, m72_8751, imgfight, m72_state, m72_875
GAME( 1989, loht, 0, m72, loht, m72_state, loht, ROT0, "Irem", "Legend of Hero Tonma", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // fails rom check if used with Japan MCU rom (World version?)
GAME( 1989, lohtj, loht, m72_8751, loht, m72_state, m72_8751, ROT0, "Irem", "Legend of Hero Tonma (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // waits for japan warning screen, works with our mcu dump (Japan Version)
GAME( 1989, lohtb2, loht, m72_8751, loht, m72_state, m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (Japan, bootleg with i8751)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // works like above, mcu code is the same as the real code, probably just an alt revision on a bootleg board
GAME( 1989, lohtb, loht, m72, loht, driver_device, 0, ROT0, "bootleg", "Legend of Hero Tonma (unprotected bootleg)", MACHINE_NOT_WORKING| MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1989, xmultipl, 0, m81_xmultipl,m81_xmultipl,driver_device,0, ROT0, "Irem", "X Multiply (World, M81)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1989, xmultiplm72, xmultipl, m72_xmultipl,xmultipl, m72_state, m72_8751, ROT0, "Irem", "X Multiply (Japan, M72)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1989, dbreed, 0, m81_dbreed, m81_dbreed,driver_device,0, ROT0, "Irem", "Dragon Breed (M81 PCB version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1989, dbreedm72, dbreed, m72_dbreed, dbreed, m72_state, dbreedm72, ROT0, "Irem", "Dragon Breed (M72 PCB version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // probably Japan version
GAME( 1991, gallop, cosmccop, m72, gallop, m72_state, gallop, ROT0, "Irem", "Gallop - Armed Police Unit (Japan, M72)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1990, airduelm72, airduel, m72, airduel, m72_state, airduelm72, ROT270, "Irem", "Air Duel (Japan, M72)", MACHINE_SUPPORTS_SAVE )
GAME( 1990, dkgensanm72, hharry, m72, hharry, m72_state, dkgenm72, ROT0, "Irem", "Daiku no Gensan (Japan, M72)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
/* M81 */
GAME( 1989, xmultipl, 0, m81_xmultipl,m81_xmultipl,driver_device,0, ROT0, "Irem", "X Multiply (World, M81)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1989, dbreed, 0, m81_dbreed, m81_dbreed,driver_device,0, ROT0, "Irem", "Dragon Breed (M81 PCB version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1990, hharry, 0, m81_hharry, m81_hharry,driver_device,0, ROT0, "Irem", "Hammerin' Harry (World, M81)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
/* M82 */
GAME( 1990, majtitle, 0, m82, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // M82-A-A + M82-B-A
GAME( 1990, majtitlej, majtitle, m82, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^
GAME( 1990, airduel, 0, m82, airduel, driver_device, 0, ROT270, "Irem", "Air Duel (World, M82-A-A + M82-B-A)", MACHINE_SUPPORTS_SAVE ) // Major Title conversion
GAME( 2009, rtypem82b, rtype, m82, rtype, driver_device, 0, ROT0, "bootleg", "R-Type (Japan, bootleg Major Title conversion, M82)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // unofficial conversion of Major Title, extensive wiremods, made in 2009 by Paul Swan
GAME( 1997, rtype2m82b, rtype2, m82, rtype2, driver_device, 0, ROT0, "bootleg", "R-Type II (Japan, bootleg Major Title conversion, M82)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // made in 1997 by Chris Hardy
/* M84 */
GAME( 1990, hharryu, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem America", "Hammerin' Harry (US, M84)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1990, dkgensan, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem", "Daiku no Gensan (Japan, M84)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1989, rtype2, 0, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1989, rtype2j, rtype2, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1989, rtype2jc, rtype2, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II (Japan, revision C)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1990, majtitle, 0, m82, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // M82-A-A + M82-B-A
GAME( 1990, majtitlej, majtitle, m82, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^
GAME( 1991, cosmccop, 0, cosmccop, gallop, driver_device, 0, ROT0, "Irem", "Cosmic Cop (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1990, hharry, 0, m81_hharry, m81_hharry,driver_device,0, ROT0, "Irem", "Hammerin' Harry (World, M81)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1990, hharryu, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem America", "Hammerin' Harry (US, M84)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1990, dkgensan, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem", "Daiku no Gensan (Japan, M84)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1990, dkgensanm72, hharry, m72, hharry, m72_state, dkgenm72, ROT0, "Irem", "Daiku no Gensan (Japan, M72)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1991, ltswords, 0, kengo, kengo, driver_device, 0, ROT0, "Irem", "Lightning Swords", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1991, kengo, ltswords, kengo, kengo, driver_device, 0, ROT0, "Irem", "Ken-Go (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1991, kengoa, ltswords, kengo, kengo, driver_device, 0, ROT0, "Irem", "Ken-Go (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // has 'for use in Japan' message, above set doesn't
/* M85 */
GAME( 1990, poundfor, 0, poundfor, poundfor, driver_device, 0, ROT270, "Irem", "Pound for Pound (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // M85-A-B / M85-B
GAME( 1990, poundforj, poundfor, poundfor, poundfor, driver_device, 0, ROT270, "Irem", "Pound for Pound (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^
GAME( 1990, poundforu, poundfor, poundfor, poundfor, driver_device, 0, ROT270, "Irem America", "Pound for Pound (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^
GAME( 1990, airduel, 0, m82, airduel, driver_device, 0, ROT270, "Irem", "Air Duel (World, M82-A-A + M82-B-A)", MACHINE_SUPPORTS_SAVE ) // Major Title conversion
GAME( 1990, airduelm72, airduel, m72, airduel, m72_state, airduelm72, ROT270, "Irem", "Air Duel (Japan, M72)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, cosmccop, 0, cosmccop, gallop, driver_device, 0, ROT0, "Irem", "Cosmic Cop (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1991, gallop, cosmccop, m72, gallop, m72_state, gallop, ROT0, "Irem", "Gallop - Armed Police Unit (Japan, M72)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1991, ltswords, 0, kengo, kengo, driver_device, 0, ROT0, "Irem", "Lightning Swords", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1991, kengo, ltswords, kengo, kengo, driver_device, 0, ROT0, "Irem", "Ken-Go (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // M84-B-B ?
GAME( 1991, kengoa, ltswords, kengo, kengo, driver_device, 0, ROT0, "Irem", "Ken-Go (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
/* bootlegs, unique hw */
GAME( 1989, lohtb, loht, m72, loht, driver_device, 0, ROT0, "bootleg", "Legend of Hero Tonma (unprotected bootleg)", MACHINE_NOT_WORKING| MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )

View File

@ -578,6 +578,8 @@ static MACHINE_CONFIG_START( mariobl, mario_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(mario_state, screen_update_mariobl)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", mariobl)
MCFG_PALETTE_ADD("palette", 256)
MCFG_PALETTE_INIT_OWNER(mario_state, mario)

View File

@ -1086,6 +1086,11 @@ static MACHINE_CONFIG_START( hopmappy, namcos86_state )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( skykiddx, hopmappy )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_ORIENTATION(ROT180)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( roishtar, hopmappy )
/* basic machine hardware */
@ -1666,7 +1671,7 @@ DRIVER_INIT_MEMBER(namcos86_state,namco86)
GAME( 1986, skykiddx, 0, hopmappy, skykiddx, namcos86_state, namco86, ROT180, "Namco", "Sky Kid Deluxe (set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, skykiddxo,skykiddx, hopmappy, skykiddx, namcos86_state, namco86, ROT180, "Namco", "Sky Kid Deluxe (set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, skykiddxo,skykiddx, skykiddx, skykiddx, namcos86_state, namco86, ROT180, "Namco", "Sky Kid Deluxe (set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, hopmappy, 0, hopmappy, hopmappy, namcos86_state, namco86, ROT0, "Namco", "Hopping Mappy", MACHINE_SUPPORTS_SAVE )

View File

@ -2894,6 +2894,9 @@ static MACHINE_CONFIG_DERIVED( barline, mbmj_h12bit )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
MCFG_DEVICE_REMOVE("dac")
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_ORIENTATION(ROT180)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mbmj_p16bit, NBMJDRV_65536 )

View File

@ -2747,6 +2747,9 @@ static MACHINE_CONFIG_DERIVED( hnxmasev, maiko )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hnxmasev_map)
MCFG_CPU_IO_MAP(maiko_io_map)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_ORIENTATION(ROT180)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( hnageman, maiko )
@ -2755,6 +2758,9 @@ static MACHINE_CONFIG_DERIVED( hnageman, maiko )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hnageman_map)
MCFG_CPU_IO_MAP(maiko_io_map)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_ORIENTATION(ROT180)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( scandal, hanamomo )

View File

@ -1389,6 +1389,7 @@ static MACHINE_CONFIG_START( nbmjdrv1, nbmj8991_state ) // galkoku
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(nbmj8991_state, screen_update_type1)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_PALETTE_ADD("palette", 256)
@ -1425,6 +1426,7 @@ static MACHINE_CONFIG_START( nbmjdrv2, nbmj8991_state ) // pstadium
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(nbmj8991_state, screen_update_type2)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_PALETTE_ADD("palette", 256)
@ -1625,6 +1627,9 @@ static MACHINE_CONFIG_DERIVED( av2mj1bb, nbmjdrv2 )
MCFG_DEVICE_MODIFY("nb1413m3")
MCFG_NB1413M3_TYPE( NB1413M3_AV2MJ1BB )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_ORIENTATION(ROT0)
MACHINE_CONFIG_END
@ -1637,6 +1642,9 @@ static MACHINE_CONFIG_DERIVED( av2mj2rg, nbmjdrv2 )
MCFG_DEVICE_MODIFY("nb1413m3")
MCFG_NB1413M3_TYPE( NB1413M3_AV2MJ2RG )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_ORIENTATION(ROT0)
MACHINE_CONFIG_END

View File

@ -913,6 +913,9 @@ static MACHINE_CONFIG_DERIVED( darkplnt, type2 )
MCFG_PALETTE_INIT_OWNER(scobra_state,darkplnt)
MCFG_VIDEO_START_OVERRIDE(scobra_state,darkplnt)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_ORIENTATION(ROT180)
MACHINE_CONFIG_END

View File

@ -454,6 +454,7 @@ static MACHINE_CONFIG_START( skykid, skykid_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(skykid_state, screen_update_skykid)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", skykid)
MCFG_PALETTE_ADD("palette", 64*4+128*4+64*8)

View File

@ -293,6 +293,7 @@ static MACHINE_CONFIG_START( speedspn, speedspn_state )
MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(speedspn_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", speedspn)
MCFG_PALETTE_ADD("palette", 0x400)

View File

@ -412,6 +412,7 @@ static MACHINE_CONFIG_START( sprint4, sprint4_state )
MCFG_SCREEN_UPDATE_DRIVER(sprint4_state, screen_update_sprint4)
MCFG_SCREEN_VBLANK_DRIVER(sprint4_state, screen_eof_sprint4)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", sprint4)
MCFG_PALETTE_ADD("palette", 10)

View File

@ -433,6 +433,7 @@ static MACHINE_CONFIG_START( supertnk, supertnk_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_UPDATE_DRIVER(supertnk_state, screen_update_supertnk)
MCFG_SCREEN_ORIENTATION(ROT90)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")

View File

@ -960,6 +960,7 @@ static MACHINE_CONFIG_START( ballbros, taitox_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(taitox_state, screen_update_seta_no_layers)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ORIENTATION(ROT180)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ballbros)
MCFG_PALETTE_ADD("palette", 2048)

View File

@ -1797,6 +1797,10 @@ static MACHINE_CONFIG_START( nomcu, taitosj_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( nomcu180, nomcu )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_ORIENTATION(ROT180)
MACHINE_CONFIG_END
/* same as above, but with additional 68705 MCU */
static MACHINE_CONFIG_DERIVED( mcu, nomcu )
@ -2754,13 +2758,13 @@ DRIVER_INIT_MEMBER(taitosj_state,junglhbr)
GAME( 1981, spaceskr, 0, nomcu, spaceskr, taitosj_state, taitosj, ROT0, "Taito Corporation", "Space Seeker", MACHINE_SUPPORTS_SAVE )
GAME( 1981, spacecr, 0, nomcu, spacecr, taitosj_state, spacecr, ROT90, "Taito Corporation", "Space Cruiser", MACHINE_SUPPORTS_SAVE )
GAME( 1982, junglek, 0, nomcu, junglek, taitosj_state, taitosj, ROT180, "Taito Corporation", "Jungle King (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, junglekas,junglek, nomcu, junglek, taitosj_state, taitosj, ROT180, "Taito Corporation", "Jungle King (alternate sound)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, junglekj2,junglek, nomcu, junglek, taitosj_state, taitosj, ROT180, "Taito Corporation", "Jungle King (Japan, earlier)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, jungleh, junglek, nomcu, junglek, taitosj_state, taitosj, ROT180, "Taito America Corporation", "Jungle Hunt (US)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, junglehbr,junglek, nomcu, junglek, taitosj_state, junglhbr,ROT180, "Taito do Brasil", "Jungle Hunt (Brazil)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, piratpet, junglek, nomcu, piratpet, taitosj_state, taitosj, ROT180, "Taito America Corporation", "Pirate Pete", MACHINE_SUPPORTS_SAVE )
GAME( 1982, jungleby, junglek, nomcu, junglek, taitosj_state, taitosj, ROT180, "bootleg", "Jungle Boy (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, junglek, 0, nomcu180, junglek, taitosj_state, taitosj, ROT180, "Taito Corporation", "Jungle King (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, junglekas,junglek, nomcu180, junglek, taitosj_state, taitosj, ROT180, "Taito Corporation", "Jungle King (alternate sound)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, junglekj2,junglek, nomcu180, junglek, taitosj_state, taitosj, ROT180, "Taito Corporation", "Jungle King (Japan, earlier)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, jungleh, junglek, nomcu180, junglek, taitosj_state, taitosj, ROT180, "Taito America Corporation", "Jungle Hunt (US)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, junglehbr,junglek, nomcu180, junglek, taitosj_state, junglhbr,ROT180, "Taito do Brasil", "Jungle Hunt (Brazil)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, piratpet, junglek, nomcu180, piratpet, taitosj_state, taitosj, ROT180, "Taito America Corporation", "Pirate Pete", MACHINE_SUPPORTS_SAVE )
GAME( 1982, jungleby, junglek, nomcu180, junglek, taitosj_state, taitosj, ROT180, "bootleg", "Jungle Boy (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, alpine, 0, nomcu, alpine, taitosj_state, alpine, ROT270, "Taito Corporation", "Alpine Ski (set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, alpinea, alpine, nomcu, alpinea, taitosj_state, alpinea, ROT270, "Taito Corporation", "Alpine Ski (set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, timetunl, 0, nomcu, timetunl, taitosj_state, taitosj, ROT0, "Taito Corporation", "Time Tunnel", MACHINE_SUPPORTS_SAVE )

View File

@ -30,67 +30,55 @@
/* Memory Banking */
READ8_MEMBER( tiki100_state::gfxram_r )
READ8_MEMBER( tiki100_state::read )
{
UINT16 addr = (offset + (m_scroll << 7)) & TIKI100_VIDEORAM_MASK;
int mdis = 1;
offs_t prom_addr = mdis << 5 | m_vire << 4 | m_rome << 3 | (offset >> 13);
UINT8 prom = m_prom->base()[prom_addr] ^ 0xff;
return m_video_ram[addr];
}
UINT8 data = 0xff;
WRITE8_MEMBER( tiki100_state::gfxram_w )
{
UINT16 addr = (offset + (m_scroll << 7)) & TIKI100_VIDEORAM_MASK;
m_video_ram[addr] = data;
}
void tiki100_state::bankswitch()
{
address_space &program = m_maincpu->space(AS_PROGRAM);
if (m_vire)
if (prom & ROM0)
{
if (!m_rome)
{
/* reserved */
program.unmap_readwrite(0x0000, 0xffff);
}
else
{
/* GFXRAM, GFXRAM, RAM */
program.install_readwrite_handler(0x0000, 0x7fff, READ8_DELEGATE(tiki100_state, gfxram_r), WRITE8_DELEGATE(tiki100_state, gfxram_w));
program.install_readwrite_bank(0x8000, 0xffff, "bank3");
membank("bank1")->set_entry(BANK_VIDEO_RAM);
membank("bank2")->set_entry(BANK_VIDEO_RAM);
membank("bank3")->set_entry(BANK_RAM);
}
data = m_rom->base()[offset & 0x3fff];
}
else
if (prom & ROM1)
{
if (!m_rome)
{
/* ROM, RAM, RAM */
program.install_read_bank(0x0000, 0x3fff, "bank1");
program.unmap_write(0x0000, 0x3fff);
program.install_readwrite_bank(0x4000, 0x7fff, "bank2");
program.install_readwrite_bank(0x8000, 0xffff, "bank3");
data = m_rom->base()[0x2000 | (offset & 0x3fff)];
}
membank("bank1")->set_entry(BANK_ROM);
membank("bank2")->set_entry(BANK_RAM);
membank("bank3")->set_entry(BANK_RAM);
}
else
{
/* RAM, RAM, RAM */
program.install_readwrite_bank(0x0000, 0x3fff, "bank1");
program.install_readwrite_bank(0x4000, 0x7fff, "bank2");
program.install_readwrite_bank(0x8000, 0xffff, "bank3");
if (prom & VIR)
{
UINT16 addr = (offset + (m_scroll << 7)) & TIKI100_VIDEORAM_MASK;
membank("bank1")->set_entry(BANK_RAM);
membank("bank2")->set_entry(BANK_RAM);
membank("bank3")->set_entry(BANK_RAM);
}
data = m_video_ram[addr];
}
if (prom & RAM)
{
data = m_ram->pointer()[offset];
}
return data;
}
WRITE8_MEMBER( tiki100_state::write )
{
int mdis = 1;
offs_t prom_addr = mdis << 5 | m_vire << 4 | m_rome << 3 | (offset >> 13);
UINT8 prom = m_prom->base()[prom_addr] ^ 0xff;
if (prom & VIR)
{
UINT16 addr = (offset + (m_scroll << 7)) & TIKI100_VIDEORAM_MASK;
m_video_ram[addr] = data;
}
if (prom & RAM)
{
m_ram->pointer()[offset] = data;
}
}
@ -215,17 +203,13 @@ WRITE8_MEMBER( tiki100_state::system_w )
/* bankswitch */
m_rome = BIT(data, 2);
m_vire = BIT(data, 3);
bankswitch();
}
/* Memory Maps */
static ADDRESS_MAP_START( tiki100_mem, AS_PROGRAM, 8, tiki100_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1")
AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank3")
AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
ADDRESS_MAP_END
static ADDRESS_MAP_START( tiki100_io, AS_IO, 8, tiki100_state )
@ -601,20 +585,6 @@ void tiki100_state::machine_start()
/* allocate video RAM */
m_video_ram.allocate(TIKI100_VIDEORAM_SIZE);
/* setup memory banking */
UINT8 *ram = m_ram->pointer();
membank("bank1")->configure_entry(BANK_ROM, m_rom->base());
membank("bank1")->configure_entry(BANK_RAM, ram);
membank("bank1")->configure_entry(BANK_VIDEO_RAM, m_video_ram);
membank("bank2")->configure_entry(BANK_RAM, ram + 0x4000);
membank("bank2")->configure_entry(BANK_VIDEO_RAM, m_video_ram + 0x4000);
membank("bank3")->configure_entry(BANK_RAM, ram + 0x8000);
bankswitch();
/* register for state saving */
save_item(NAME(m_rome));
save_item(NAME(m_vire));
@ -718,15 +688,15 @@ MACHINE_CONFIG_END
/* ROMs */
ROM_START( kontiki )
ROM_REGION( 0x10000, Z80_TAG, ROMREGION_ERASEFF )
ROM_REGION( 0x4000, Z80_TAG, ROMREGION_ERASEFF )
ROM_LOAD( "tikirom-1.30.u10", 0x0000, 0x2000, CRC(c482dcaf) SHA1(d140706bb7fc8b1fbb37180d98921f5bdda73cf9) )
ROM_REGION( 0x100, "proms", 0 )
ROM_LOAD( "63ls140.u4", 0x000, 0x100, NO_DUMP )
ROM_REGION( 0x100, "u4", 0 )
ROM_LOAD( "53ls140.u4", 0x000, 0x100, CRC(894b756f) SHA1(429e10de0e0e749246895801b18186ff514c12bc) )
ROM_END
ROM_START( tiki100 )
ROM_REGION( 0x10000, Z80_TAG, ROMREGION_ERASEFF )
ROM_REGION( 0x4000, Z80_TAG, ROMREGION_ERASEFF )
ROM_DEFAULT_BIOS( "v203w" )
ROM_SYSTEM_BIOS( 0, "v135", "TIKI ROM v1.35" )
@ -734,8 +704,14 @@ ROM_START( tiki100 )
ROM_SYSTEM_BIOS( 1, "v203w", "TIKI ROM v2.03 W" )
ROMX_LOAD( "tikirom-2.03w.u10", 0x0000, 0x2000, CRC(79662476) SHA1(96336633ecaf1b2190c36c43295ac9f785d1f83a), ROM_BIOS(2) )
ROM_REGION( 0x100, "proms", 0 )
ROM_LOAD( "63ls140.u4", 0x000, 0x100, NO_DUMP )
ROM_REGION( 0x100, "u4", 0 )
ROM_LOAD( "53ls140.u4", 0x000, 0x100, CRC(894b756f) SHA1(429e10de0e0e749246895801b18186ff514c12bc) )
ROM_REGION( 0x1000, "8088", 0 )
ROM_LOAD( "boot 1.0.u3", 0x0000, 0x1000, CRC(436974aa) SHA1(837087b3ab982d047e4f15799fef3daa37dd6c01) )
ROM_REGION( 0x100, "8088_proms", 0 )
ROM_LOAD( "53ls140.u26", 0x000, 0x100, CRC(fc5902e1) SHA1(afb9cb54ab6fc449e7544ddb3cbebc3770c4f937) )
ROM_END
/* System Drivers */

View File

@ -409,6 +409,8 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( tokic, toki )
SEIBU_SOUND_SYSTEM_ENCRYPTED_CUSTOM()
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_ORIENTATION(ROT180)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( tokib, toki_state )

View File

@ -589,6 +589,10 @@ static MACHINE_CONFIG_START( zodiack, zodiack_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bounty, zodiack )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_ORIENTATION(ROT180)
MACHINE_CONFIG_END
/***************************************************************************
@ -711,4 +715,4 @@ GAME( 1983, zodiack, 0, zodiack, zodiack, zodiack_state, zodiack, ROT270, "Orc
GAME( 1983, dogfight, 0, zodiack, dogfight, zodiack_state, zodiack, ROT270, "Orca / Thunderbolt", "Dog Fight (Thunderbolt)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) /* bullet color needs to be verified */
GAME( 1982, moguchan, 0, zodiack, moguchan, zodiack_state, percuss, ROT270, "Orca (Eastern Commerce Inc. license)", "Mogu Chan (bootleg?)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) /* license copyright taken from ROM string at $0b5c */
GAME( 1981, percuss, 0, zodiack, percuss, zodiack_state, percuss, ROT270, "Orca", "The Percussor", MACHINE_SUPPORTS_SAVE )
GAME( 1982, bounty, 0, zodiack, bounty, zodiack_state, percuss, ROT180, "Orca", "The Bounty", MACHINE_SUPPORTS_SAVE )
GAME( 1982, bounty, 0, bounty, bounty, zodiack_state, percuss, ROT180, "Orca", "The Bounty", MACHINE_SUPPORTS_SAVE )

View File

@ -669,6 +669,6 @@ public:
NV2A_COLOR_FORMAT_X1A7R8G8B8 = 0x0007,
NV2A_COLOR_FORMAT_A8R8G8B8 = 0x0008,
NV2A_COLOR_FORMAT_B8 = 0x0009,
NV2A_COLOR_FORMAT_G8B8 = 0x000a,
NV2A_COLOR_FORMAT_G8B8 = 0x000a
};
};

View File

@ -8,6 +8,7 @@
#include "emu.h"
#include "cpu/cosmac/cosmac.h"
#include "imagedev/cassette.h"
#include "imagedev/snapquik.h"
#include "machine/ram.h"
#include "machine/6821pia.h"
#include "machine/rescap.h"
@ -28,28 +29,16 @@ class eti660_state : public driver_device
{
public:
eti660_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, CDP1802_TAG),
m_cti(*this, CDP1864_TAG),
m_pia(*this, MC6821_TAG),
m_cassette(*this, "cassette"),
m_pa0(*this, "PA0"),
m_pa1(*this, "PA1"),
m_pa2(*this, "PA2"),
m_pa3(*this, "PA3"),
m_special(*this, "SPECIAL")
: driver_device(mconfig, type, tag)
, m_p_videoram(*this, "videoram")
, m_maincpu(*this, CDP1802_TAG)
, m_cti(*this, CDP1864_TAG)
, m_pia(*this, MC6821_TAG)
, m_cassette(*this, "cassette")
, m_io_keyboard(*this, "KEY")
, m_special(*this, "SPECIAL")
{ }
required_device<cosmac_device> m_maincpu;
required_device<cdp1864_device> m_cti;
required_device<pia6821_device> m_pia;
required_device<cassette_image_device> m_cassette;
required_ioport m_pa0;
required_ioport m_pa1;
required_ioport m_pa2;
required_ioport m_pa3;
required_ioport m_special;
DECLARE_READ8_MEMBER( pia_r );
DECLARE_WRITE8_MEMBER( pia_w );
DECLARE_WRITE8_MEMBER( colorram_w );
@ -63,13 +52,28 @@ public:
DECLARE_WRITE8_MEMBER( dma_w );
DECLARE_READ8_MEMBER( pia_pa_r );
DECLARE_WRITE8_MEMBER( pia_pa_w );
DECLARE_QUICKLOAD_LOAD_MEMBER( eti660 );
required_shared_ptr<UINT8> m_p_videoram;
private:
required_device<cosmac_device> m_maincpu;
required_device<cdp1864_device> m_cti;
required_device<pia6821_device> m_pia;
required_device<cassette_image_device> m_cassette;
required_ioport_array<4> m_io_keyboard;
required_ioport m_special;
virtual void machine_start();
virtual void machine_reset();
UINT16 m_resetcnt;
/* keyboard state */
UINT8 m_keylatch;
/* video state */
UINT8 m_color_ram[0x100];
UINT8 m_color_ram[0xc0];
UINT8 m_color;
bool m_color_on;
};
#endif

View File

@ -41,8 +41,8 @@
class tiki100_state : public driver_device
{
public:
tiki100_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
tiki100_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, Z80_TAG),
m_ctc(*this, Z80CTC_TAG),
m_fdc(*this, FD1797_TAG),
@ -54,6 +54,7 @@ public:
m_cassette(*this, CASSETTE_TAG),
m_centronics(*this, CENTRONICS_TAG),
m_rom(*this, Z80_TAG),
m_prom(*this, "u4"),
m_video_ram(*this, "video_ram"),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
@ -67,7 +68,9 @@ public:
m_y10(*this, "Y10"),
m_y11(*this, "Y11"),
m_y12(*this, "Y12"),
m_palette(*this, "palette")
m_palette(*this, "palette"),
m_rome(1),
m_vire(1)
{ }
required_device<cpu_device> m_maincpu;
@ -81,6 +84,7 @@ public:
required_device<cassette_image_device> m_cassette;
required_device<centronics_device> m_centronics;
required_memory_region m_rom;
required_memory_region m_prom;
optional_shared_ptr<UINT8> m_video_ram;
required_ioport m_y1;
required_ioport m_y2;
@ -101,8 +105,9 @@ public:
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
DECLARE_READ8_MEMBER( gfxram_r );
DECLARE_WRITE8_MEMBER( gfxram_w );
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ8_MEMBER( keyboard_r );
DECLARE_WRITE8_MEMBER( keyboard_w );
DECLARE_WRITE8_MEMBER( video_mode_w );
@ -117,7 +122,13 @@ public:
DECLARE_FLOPPY_FORMATS( floppy_formats );
void bankswitch();
enum
{
ROM0 = 0x01,
ROM1 = 0x02,
VIR = 0x04,
RAM = 0x08
};
/* memory state */
int m_rome;

View File

@ -345,25 +345,30 @@ WRITE16_MEMBER(m72_state::videoram2_w)
WRITE16_MEMBER(m72_state::irq_line_w)
{
COMBINE_DATA(&m_raster_irq_position);
// printf("m_raster_irq_position %04x\n", m_raster_irq_position);
}
WRITE16_MEMBER(m72_state::scrollx1_w)
{
m_screen->update_partial(m_screen->vpos());
COMBINE_DATA(&m_scrollx1);
}
WRITE16_MEMBER(m72_state::scrollx2_w)
{
m_screen->update_partial(m_screen->vpos());
COMBINE_DATA(&m_scrollx2);
}
WRITE16_MEMBER(m72_state::scrolly1_w)
{
m_screen->update_partial(m_screen->vpos());
COMBINE_DATA(&m_scrolly1);
}
WRITE16_MEMBER(m72_state::scrolly2_w)
{
m_screen->update_partial(m_screen->vpos());
COMBINE_DATA(&m_scrolly2);
}
@ -437,7 +442,7 @@ WRITE16_MEMBER(m72_state::m82_gfx_ctrl_w)
WRITE16_MEMBER(m72_state::m82_tm_ctrl_w)
{
COMBINE_DATA(&m_m82_tmcontrol);
printf("tmcontrol %04x\n", m_m82_tmcontrol);
// printf("tmcontrol %04x\n", m_m82_tmcontrol);
}