diff --git a/docs/source/initialsetup/compilingmame.rst b/docs/source/initialsetup/compilingmame.rst index 7acedb69ff0..beb61294ab9 100644 --- a/docs/source/initialsetup/compilingmame.rst +++ b/docs/source/initialsetup/compilingmame.rst @@ -48,7 +48,7 @@ Fedora Linux You'll need a few prerequisites from your distro. Make sure you get SDL2 2.0.3 or 2.0.4 as earlier versions are buggy. -**sudo yum install gcc gcc-c++ SDL2-devel SDL2_ttf-devel libXinerama-devel qt5-qtbase-devel qt5-qttools expat-devel fontconfig-devel** +**sudo dnf install gcc gcc-c++ SDL2-devel SDL2_ttf-devel libXinerama-devel qt5-qtbase-devel qt5-qttools expat-devel fontconfig-devel alsa-lib-devel** Compilation is exactly as described above in All Platforms. diff --git a/docs/source/techspecs/device_memory_interface.rst b/docs/source/techspecs/device_memory_interface.rst index 9a7ce333514..d38faf8c996 100644 --- a/docs/source/techspecs/device_memory_interface.rst +++ b/docs/source/techspecs/device_memory_interface.rst @@ -9,40 +9,57 @@ creating address spaces, to which address maps can be associated. It's used for any device that provides a (logically) address/data bus other devices can be connected to. It's mainly, but not only, cpus. -The interface allows for up to four address spaces, numbered 0-3, with -symbolic names associated to them in emumem.h for historical reasons. +The interface allows for an unlimited set of address spaces, numbered +with small positive values. The IDs should stay small because they +index vectors to keep the lookup fast. Spaces number 0-3 have an +associated constant name: -+------------+-------------+----------------------+ -| Numeric ID | Symbolic ID | Symbolic name | -+============+=============+======================+ -| 0 | AS_0 | AS_PROGRAM | -+------------+-------------+----------------------+ -| 1 | AS_1 | AS_DATA | -+------------+-------------+----------------------+ -| 2 | AS_2 | AS_IO | -+------------+-------------+----------------------+ -| 3 | AS_3 | AS_DECRYPTED_OPCODES | -+------------+-------------+----------------------+ ++----+---------------+ +| ID | Name | ++====+===============+ +| 0 | AS_PROGRAM | ++----+---------------+ +| 1 | AS_DATA | ++----+---------------+ +| 2 | AS_IO | ++----+---------------+ +| 3 | AS_OPCODES | ++----+---------------+ + +Spaces 0 and 3, e.g. AS_PROGRAM and AS_OPCODE, are special for the +debugger and some CPUs. AS_PROGRAM is use by the debugger and the +cpus as the space from with the cpu reads its instructions for the +disassembler. When present, AS_OPCODE is used by the debugger and +some cpus to read the opcode part of the instruction. What opcode +means is device-dependant, for instance for the z80 it's the initial +byte(s) which are read with the M1 signal asserted. For the 68000 is +means every instruction word plus the PC-relative accesses. The main, +but not only, use of AS_OPCODE is to implement hardware decrypting +instructions separately from the data. 2. Setup -------- -| const address_space_config *\ **memory_space_config**\ (address_spacenum spacenum) const +| std::vector>\ **memory_space_config**\ (int spacenum) const + +The device must override that method to provide a vector of pairs +comprising of a space number and its associated +**address_space_config** describing its configuration. Some examples +to look up when needed: +* Standard two-space vector: v60_device +* Conditional AS_OPCODE: z80_device +* Inherit config and add a space: m6801_device +* Inherit config and patch a space: tmpz84c011_device -The device must override that method to provide, for each of the four -address spaces, either an **address_space_config** describing the -space's configucation or **nullptr** if the space is not to be -created. | bool **has_configured_map**\ () const | bool **has_configured_map**\ (int index) const -| bool **has_configured_map**\ (address_spacenum index) const The **has_configured_map** method allows to test in the **memory_space_config** method whether an **address_map** has been associated with a given space. That allows to implement optional -memory spaces, such as AS_DECRYPTED_OPCODES in certain cpu cores. The -parameterless version tests for AS_PROGRAM/AS_0. +memory spaces, such as AS_OPCODES in certain cpu cores. The +parameterless version tests for space 0. 3. Associating maps to spaces ----------------------------- @@ -71,29 +88,28 @@ derivative. | address_space &\ **space**\ () const | address_space &\ **space**\ (int index) const -| address_space &\ **space**\ (address_spacenum index) const Returns a given address space post-initialization. The parameterless version tests for AS_PROGRAM/AS_0. Aborts if the space doesn't exist. | bool **has_space**\ () const | bool **has_space**\ (int index) const -| bool **has_space**\ (address_spacenum index) const Indicates whether a given space actually exists. The parameterless version tests for AS_PROGRAM/AS_0. -5. Weird/to deprecate stuff ---------------------------- +5. MMU support for disassembler +------------------------------- -| bool **translate**\ (address_spacenum spacenum, int intention, offs_t &address) -| bool **read**\ (address_spacenum spacenum, offs_t offset, int size, UINT64 &value) -| bool **write**\ (address_spacenum spacenum, offs_t offset, int size, UINT64 value) -| bool **readop**\ (offs_t offset, int size, UINT64 &value) +| bool **translate**\ (int spacenum, int intention, offs_t &address) -These methods override how the debugger accesses memory for a cpu. -Avoid them if you can. Otherwise, prepare for heavy-duty spelunking in -complicated code. +Does a logical to physical address translation through the device's +MMU. spacenum gives the space number, intention the type of the +future access (TRANSLATE_(READ|WRITE|FETCH)(|_USER|_DEBUG)) and +address is an inout parameter with the address to translate and its +translated version. Should return true if the translation went +correctly, false if the address is unmapped. -If really required, should probably be part of cpu_device directly. +Note that for some historical reason the device itself must override +the virtual method **memory_translate** with the same signature. diff --git a/hash/ibm5150.xml b/hash/ibm5150.xml index 25c33a9526b..af78d6822c4 100644 --- a/hash/ibm5150.xml +++ b/hash/ibm5150.xml @@ -5344,6 +5344,22 @@ has been replaced with an all-zero block. --> + + Battle Chess + 1988 + Interplay + + + + + + + + + + + + Bivouac @@ -5356,6 +5372,28 @@ has been replaced with an all-zero block. --> + + Blades of Steel + 1990 + Konami + + + + + + + + + Boulder Dash Construction Kit + 1987 + Epyx + + + + + + + Bubble Bobble 1989 @@ -5414,6 +5452,17 @@ has been replaced with an all-zero block. --> + + Castlevania + 1990 + Konami + + + + + + + Caveman Ugh-Lympics 1988 @@ -5583,6 +5632,17 @@ has been replaced with an all-zero block. --> + + The Cycles + 1989 + Accolade + + + + + + + Demon's Tomb - The Awakening 1989 @@ -5682,6 +5742,31 @@ has been replaced with an all-zero block. --> + + Double Dribble + 1990 + Konami + + + + + + + + + Earl Weaver Baseball + 1989 + Electronic Arts + + + + + + + + + + Ferrari Formula One 1989 @@ -5710,6 +5795,38 @@ has been replaced with an all-zero block. --> + + Future Wars - Adventures in Time + 1990 + Interplay + + + + + + + + + + + + + + + + + + + Gamer's Edge Sampler - Catacomb and Dangerous Dave + 1991 + Softdisk + + + + + + + Gold Rush (Version 2.01, 5.25") 1988 @@ -5806,14 +5923,43 @@ has been replaced with an all-zero block. --> - - Les 8 Conquêtes d'Armorik le Viking - 1988 - Infogrames - + + Hardball 2 + 1989 + Accolade + - + + + + + + + + + + + + + + + + + + + Heroes of the Lance + 1991 + SSI + + + + + + + + + @@ -5831,6 +5977,18 @@ has been replaced with an all-zero block. --> + + Les 8 Conquêtes d'Armorik le Viking + 1988 + Infogrames + + + + + + + + The Hunt for Red October @@ -5946,6 +6104,18 @@ has been replaced with an all-zero block. --> + + John Madden Football + 1989 + Electronic Arts + + + + + + + + Jordan vs. Bird: One on One 1988 @@ -5985,6 +6155,18 @@ has been replaced with an all-zero block. --> + + + King's Bounty + 1991 + New World Computing + + + + + + + King's Quest IV: The Perils of Rosella (Version #2.2, 3.5") @@ -6082,6 +6264,18 @@ has been replaced with an all-zero block. --> + + Lakers vs Celtics and the NBA Playoffs + 1989 + Electronic Arts + + + + + + + + Laser Surgeon - The Microscopic Mission 1987 @@ -6173,6 +6367,54 @@ has been replaced with an all-zero block. --> + + Links - The Challenge of Golf v1.10 + 1990 + Access Software + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Links - Championship Course - Bountiful Golf Course + 1991 + Access Software + + + + + + + + + + + + The Lurking Horror 1987 @@ -6184,6 +6426,53 @@ has been replaced with an all-zero block. --> + + Le Manoir de Mortevielle + 1988 + Lankhor + + + + + + + + + Mean Streets + 1989 + Access Software + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mega Man 1990 @@ -6250,6 +6539,80 @@ has been replaced with an all-zero block. --> + + Monopoly v2.00 (Shareware) + 1989 + TEGL Systems Corporation + + + + + + + + + Monty Python's Flying Circus + 1990 + Virgin Games + + + + + + + + + + + + + + Ninja Gaiden II - The Dark Sword of Chaos + 1991 + GameTek + + + + + + + + + Nova 9 - Return of Gir Draxon + 1991 + Sierra + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Operation Wolf 1989 @@ -6267,6 +6630,28 @@ has been replaced with an all-zero block. --> + + Over the Net + 1991 + Genias + + + + + + + + + Pharaoh's Pursuit + 1990 + Lone Star Micro + + + + + + + Pharaoh's Tomb 1990 @@ -6515,6 +6900,17 @@ has been replaced with an all-zero block. --> + + Secret of the Silver Blades + 1990 + SSI + + + + + + + Sierra Demo 1987 @@ -6586,6 +6982,22 @@ has been replaced with an all-zero block. --> + + Speedball II - Brutal Deluxe + 1990 + Imageworks + + + + + + + + + + + + Star Goose! 1989 @@ -6652,6 +7064,38 @@ has been replaced with an all-zero block. --> + + Street Fighting Man + 1989 + Mastertronic + + + + + + + + + + + + + + Super C + 1990 + Konami + + + + + + + + + + + + Superman - The Man of Steel 1989 @@ -6669,6 +7113,55 @@ has been replaced with an all-zero block. --> + + Superstar Ice Hockey + 1987 + Mindscape + + + + + + + + + Superstar Indoor Soccer + 1991 + Mindscape + + + + + + + + + Superstar Indoor Sports + 1987 + Mindscape + + + + + + + + + + + + + + Superstar Outdoor Soccer + 1991 + Mindscape + + + + + + + Terminator 2: Judgment Day 1991 @@ -6697,7 +7190,7 @@ has been replaced with an all-zero block. --> - + Tetris (3.5") 1987 Spectrum Holobyte @@ -6708,6 +7201,32 @@ has been replaced with an all-zero block. --> + + Top 10 Solid Gold Volume II + 1991 + US Gold + + + + + + + + + + + + + + + + + + + + + + Turbo Driver 1987 @@ -6768,6 +7287,17 @@ has been replaced with an all-zero block. --> + + Wings of Fury + 1989 + Brøderbund Software + + + + + + + World Class Leader Board 1988 @@ -6834,6 +7364,17 @@ has been replaced with an all-zero block. --> + + Zool + 1993 + Gremlin Graphics + + + + + + + diff --git a/hash/ibm5170.xml b/hash/ibm5170.xml index 778245fd389..f8a359c8b22 100644 --- a/hash/ibm5170.xml +++ b/hash/ibm5170.xml @@ -1188,6 +1188,49 @@ Missing files come here + + IBM Personal Computer DOS (Version J4.05/V) (Japanese) + 1990 + IBM + + + + + + + + + + IBM Personal Computer DOS (Version J5.00/V) (Japanese) + 1991 + IBM + + + + + + + + + + + + + + + + + + + + + + + + + + + IBM DOS (Version 6.1) 1993 @@ -1576,6 +1619,67 @@ Missing files come here + + PC DOS 7.00A/V Update (Japanese) + 1995 + IBM + + + + + + + + + + + + + + + PC DOS 7.00B/V Update (Japanese) + 1995 + IBM + + + + + + + + + + + + + + + + + + + + PC DOS 7.00C/V Update (Japanese) + 1995 + IBM + + + + + + + + + + + + + + + + + + IBM PC DOS 2000 1998 @@ -1970,6 +2074,43 @@ Missing files come here + + MS-DOS (Version 6.2/V) (Japanese) + 1993 + Microsoft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MS-DOS (Version 6.21) 1994 @@ -2029,29 +2170,6 @@ Missing files come here - - - MS-DOS (Version 6.22, German) - 1994 - Microsoft - - - - - - - - - - - - - - - - - - MS-DOS (Version 6.22, Alt) @@ -2151,6 +2269,60 @@ Missing files come here + + + MS-DOS (Version 6.22, German) + 1994 + Microsoft + + + + + + + + + + + + + + + + + + + + MS-DOS (Version 6.22, Brazilian Portuguese) + 1994 + Microsoft + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5443,6 +5615,32 @@ Missing files come here + + B-17 Flying Fortress + 1992 + MicroProse + + + + + + + + + + + + + + + + + + + + + + Bible Adventures 1992 @@ -5482,6 +5680,17 @@ Missing files come here + + Body Blows + 1993 + Team 17 + + + + + + + Boppin' (Super Ultimate, v1.1) 1994 @@ -5660,6 +5869,17 @@ Missing files come here + + Corncob Deluxe + 1992 + Personal Companion Software + + + + + + + Cosmo's Cosmic Adventure - Forbidden Planet 1992 @@ -6070,6 +6290,22 @@ Missing files come here + + Dune + 1992 + Virgin Games + + + + + + + + + + + + Dune II - The Battle for Arrakis 1993 @@ -6185,7 +6421,7 @@ Missing files come here Escape From Hell 1990 - Electronic Arts, Inc. + Electronic Arts @@ -6219,10 +6455,37 @@ Missing files come here + + Global Conquest + 1992 + Microplay + + + + + + + + + + + + + + Global Conquest Official Strategy Guide + 1992 + Microplay + + + + + + + Gobliiins (US - VGA release) 1992 - Sierra On-Line, Inc. + Sierra @@ -6240,7 +6503,7 @@ Missing files come here Gobliins 2: The Prince Buffoon 1993 - Sierra On-Line, Inc. + Sierra @@ -6258,7 +6521,7 @@ Missing files come here Goblins Quest 3 1993 - Sierra On-Line, Inc. + Sierra @@ -6556,14 +6819,117 @@ Missing files come here - - - King's Bounty - 1991 - New World Computing + + King's Quest V - Absence Makes the Heart Go Yonder! + 1990 + Sierra - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + King's Quest V - Absence Makes the Heart Go Yonder! (Re-release) + 1990 + Sierra + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6624,6 +6990,30 @@ Missing files come here + + Lightspeed + 1990 + MicroProse + + + + + + + + + + + + + + + + + + + + The Lost Episodes of Doom (Companion Disk) 1995 @@ -7392,6 +7782,37 @@ Missing files come here + + Star Trek - 25th Anniversary + 1992 + Interplay + + + + + + + + + + + + + + + + + + + + + + + + + + + Star Wars - X-Wing - Space Combat Simulator 1993 diff --git a/hash/x68k_flop.xml b/hash/x68k_flop.xml index d63efaf9d2b..8d42baeeac3 100644 --- a/hash/x68k_flop.xml +++ b/hash/x68k_flop.xml @@ -22838,6 +22838,7 @@ a contest among doujin programmers... --> Chourensha 68k (v1.01) 1995 <doujin> + @@ -22846,10 +22847,24 @@ a contest among doujin programmers... --> + + Chourensha 68k (v1.00) + 1995 + <doujin> + + + + + + + + + Chourensha 68k (v0.45) 1995 <doujin> + @@ -22862,6 +22877,7 @@ a contest among doujin programmers... --> Chourensha 68k (v0.35) 1995 <doujin> + @@ -22874,6 +22890,7 @@ a contest among doujin programmers... --> Chourensha 68k (v0.10) 1995 <doujin> + diff --git a/plugins/cheat/cheat_simple.lua b/plugins/cheat/cheat_simple.lua index 316a3b8e9d4..36067b846c6 100644 --- a/plugins/cheat/cheat_simple.lua +++ b/plugins/cheat/cheat_simple.lua @@ -1,5 +1,5 @@ -- converter for simple cheats --- simple cheats are single address every frame ram, rom or gg,ar cheats in one file called cheat.simple +-- simple cheats are single/linked address every frame ram, rom or gg,ar cheats in one file called cheat.simple -- -- ram/rom cheat format: ,,,,, -- only program address space is supported, comments are prepended with ; @@ -9,6 +9,7 @@ -- gg for game genie -- nes, snes, megadriv, gamegear, gameboy -- ar for action replay -- nes, snes, megadriv, gamegear, sms -- +-- use "^" as description to link to previous cheat -- set name is / like "nes/smb" for softlist items -- Don't use commas in the description @@ -22,10 +23,30 @@ function simple.filename(name) end local codefuncs = {} +local currcheat local function prepare_rom_cheat(desc, region, addr, val, size, banksize, comp) - local cheat = { desc = desc, region = { rom = region } } - cheat.script = { off = "if on then rom:write_u" .. size .. "(addr, save) end" } + local cheat + if desc:sub(1,1) ~= "^" then + currcheat = { desc = desc, region = { rom = region } } + currcheat.script = { off = string.format([[ + if on then + for k, v in pairs(addrs) do + rom:write_u%d(v.addr, v.save) + end + end]], size), + on = string.format([[ + addrs = { + --flag + } + on = true + for k, v in pairs(addrs) do + v.save = rom:read_u%d(v.addr) + rom:write_u%d(v.addr, v.val) + end]], size, size) } + cheat = currcheat + + end if banksize and comp then local rom = manager:machine():memory().regions[region] local bankaddr = addr & (banksize - 1) @@ -43,17 +64,17 @@ local function prepare_rom_cheat(desc, region, addr, val, size, banksize, comp) error("rom cheat compare value not found " .. desc) end end - cheat.script.on = string.format([[ - on = true - addr = %d - save = rom:read_u%d(addr) - rom:write_u%d(addr, %d)]], addr, size, size, val) + currcheat.script.on = currcheat.script.on:gsub("%-%-flag", string.format("{addr = %d, val = %d},\n--flag", addr, val), 1) return cheat end local function prepare_ram_cheat(desc, tag, addr, val, size) - local cheat = { desc = desc, space = { cpup = { tag = tag, type = "program" } } } - cheat.script = { run = "cpup:write_u" .. size .. "(" .. addr .. "," .. val .. ", true)" } + local cheat + if desc:sub(1,1) ~= "^" then + currcheat = { desc = desc, space = { cpup = { tag = tag, type = "program" } }, script = { run = "" } } + cheat = currcheat + end + currcheat.script.run = currcheat.script.run .. " cpup:write_u" .. size .. "(" .. addr .. "," .. val .. ", true)" return cheat end @@ -75,7 +96,7 @@ function codefuncs.nes_gg(desc, code) elseif #code == 8 then addr = ((value >> 12) & 7) | ((value >> 16) & 0x78) | ((value >> 20) & 0x80) | (value & 0x700) | ((value >> 4) & 0x7800) newval = ((value >> 28) & 7) | (value & 8) | ((value >> 20) & 0x70) | ((value >> 24) & 0x80) - comp = ((value >> 4) & 7) | ((value >> 8) & 8) | ((value << 4) & 0x70) | ((value << 1) & 0x80) + comp = ((value >> 4) & 7) | ((value >> 8) & 8) | ((value << 4) & 0x70) | (value & 0x80) -- assume 8K banks, 32K also common but is an easy multiple of 8K return prepare_rom_cheat(desc, ":nes_slot:cart:prg_rom", addr, newval, 8, 8192, comp) else @@ -292,6 +313,7 @@ function simple.conv_cheat(data) end end end + currcheat = nil return cheats end diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index fcc279fee3d..b4eb4f52400 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -847,6 +847,19 @@ if (BUSES["IMI7000"]~=null) then end +--------------------------------------------------- +-- +--@src/devices/bus/intellec4/intellec4.h,BUSES["INTELLEC4"] = true +--------------------------------------------------- + +if (BUSES["INTELLEC4"]~=null) then + files { + MAME_DIR .. "src/devices/bus/intellec4/intellec4.cpp", + MAME_DIR .. "src/devices/bus/intellec4/intellec4.h", + } +end + + --------------------------------------------------- -- --@src/devices/bus/intv/slot.h,BUSES["INTV"] = true diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 6ca1ab3fdb2..f0d33963f02 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -3148,6 +3148,7 @@ files { MAME_DIR .. "src/mame/includes/kopunch.h", MAME_DIR .. "src/mame/video/kopunch.cpp", MAME_DIR .. "src/mame/drivers/lindbergh.cpp", + MAME_DIR .. "src/mame/drivers/sderby2.cpp", MAME_DIR .. "src/mame/machine/segabb.cpp", MAME_DIR .. "src/mame/machine/segabb.h", MAME_DIR .. "src/mame/machine/megadriv.cpp", diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 2cedb3c22ab..74c73c806b5 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -663,6 +663,7 @@ BUSES["HPHIL"] = true BUSES["HPDIO"] = true BUSES["IEEE488"] = true BUSES["IMI7000"] = true +BUSES["INTELLEC4"] = true BUSES["INTV"] = true BUSES["INTV_CTRL"] = true BUSES["IQ151"] = true diff --git a/scripts/target/mame/tiny.lua b/scripts/target/mame/tiny.lua index 129e276e208..db3cb2525f6 100644 --- a/scripts/target/mame/tiny.lua +++ b/scripts/target/mame/tiny.lua @@ -60,6 +60,7 @@ MACHINES["TTL7474"] = true MACHINES["RIOT6532"] = true MACHINES["PIT8253"] = true MACHINES["Z80CTC"] = true +MACHINES["Z80PIO"] = true MACHINES["68681"] = true MACHINES["BANKDEV"] = true MACHINES["GEN_LATCH"] = true diff --git a/src/devices/bus/cbm2/hrg.cpp b/src/devices/bus/cbm2/hrg.cpp index dacb75cbaa5..0439759d928 100644 --- a/src/devices/bus/cbm2/hrg.cpp +++ b/src/devices/bus/cbm2/hrg.cpp @@ -66,7 +66,7 @@ const tiny_rom_entry *cbm2_hrg_device::device_rom_region() const // ADDRESS_MAP( hrg_a_map ) //------------------------------------------------- -static ADDRESS_MAP_START( hrg_a_map, AS_0, 8, cbm2_hrg_a_device ) +static ADDRESS_MAP_START( hrg_a_map, 0, 8, cbm2_hrg_a_device ) ADDRESS_MAP_GLOBAL_MASK(0x7fff) AM_RANGE(0x0000, 0x7fff) AM_RAM ADDRESS_MAP_END @@ -76,7 +76,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( hrg_b_map ) //------------------------------------------------- -static ADDRESS_MAP_START( hrg_b_map, AS_0, 8, cbm2_hrg_b_device ) +static ADDRESS_MAP_START( hrg_b_map, 0, 8, cbm2_hrg_b_device ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x3fff) AM_RAM ADDRESS_MAP_END @@ -96,7 +96,7 @@ MACHINE_CONFIG_MEMBER( cbm2_hrg_a_device::device_add_mconfig ) MCFG_DEVICE_ADD(EF9365_TAG, EF9365, 1750000) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_a_map) + MCFG_DEVICE_ADDRESS_MAP(0, hrg_a_map) MCFG_EF936X_PALETTE("palette") MCFG_EF936X_BITPLANES_CNT(1); MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_512x512); @@ -112,7 +112,7 @@ MACHINE_CONFIG_MEMBER( cbm2_hrg_b_device::device_add_mconfig ) MCFG_DEVICE_ADD(EF9366_TAG, EF9365, 1750000) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_b_map) + MCFG_DEVICE_ADDRESS_MAP(0, hrg_b_map) MCFG_EF936X_PALETTE("palette") MCFG_EF936X_BITPLANES_CNT(1); MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_512x256); diff --git a/src/devices/bus/compis/hrg.cpp b/src/devices/bus/compis/hrg.cpp index a28deba73d1..bdfe930dc5c 100644 --- a/src/devices/bus/compis/hrg.cpp +++ b/src/devices/bus/compis/hrg.cpp @@ -32,12 +32,12 @@ DEFINE_DEVICE_TYPE(COMPIS_UHRG, compis_uhrg_device, "compis_uhrg", "Compis UHRG" // ADDRESS_MAP( upd7220_map ) //------------------------------------------------- -static ADDRESS_MAP_START( hrg_map, AS_0, 16, compis_hrg_device ) +static ADDRESS_MAP_START( hrg_map, 0, 16, compis_hrg_device ) ADDRESS_MAP_GLOBAL_MASK(0x7fff) AM_RANGE(0x00000, 0x7fff) AM_RAM AM_SHARE("video_ram") ADDRESS_MAP_END -static ADDRESS_MAP_START( uhrg_map, AS_0, 16, compis_uhrg_device ) +static ADDRESS_MAP_START( uhrg_map, 0, 16, compis_uhrg_device ) ADDRESS_MAP_GLOBAL_MASK(0x1ffff) AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram") ADDRESS_MAP_END @@ -85,7 +85,7 @@ MACHINE_CONFIG_MEMBER( compis_hrg_device::device_add_mconfig ) MCFG_SCREEN_UPDATE_DEVICE(UPD7220_TAG, upd7220_device, screen_update) MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, 2252500) // unknown clock - MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_map) + MCFG_DEVICE_ADDRESS_MAP(0, hrg_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(compis_hrg_device, display_pixels) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) @@ -103,7 +103,7 @@ MACHINE_CONFIG_MEMBER( compis_uhrg_device::device_add_mconfig ) MCFG_SCREEN_UPDATE_DEVICE(UPD7220_TAG, upd7220_device, screen_update) MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, 2252500*2) // unknown clock - MCFG_DEVICE_ADDRESS_MAP(AS_0, uhrg_map) + MCFG_DEVICE_ADDRESS_MAP(0, uhrg_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(compis_uhrg_device, display_pixels) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) diff --git a/src/devices/bus/hp_dio/hp_dio.h b/src/devices/bus/hp_dio/hp_dio.h index 1c3c1fc6b7b..483815ab4bb 100644 --- a/src/devices/bus/hp_dio/hp_dio.h +++ b/src/devices/bus/hp_dio/hp_dio.h @@ -113,7 +113,7 @@ public: protected: dio16_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - void install_space(address_spacenum spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler); + void install_space(int spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler); // device-level overrides virtual void device_start() override; diff --git a/src/devices/bus/intellec4/intellec4.cpp b/src/devices/bus/intellec4/intellec4.cpp new file mode 100644 index 00000000000..d45ba58a76f --- /dev/null +++ b/src/devices/bus/intellec4/intellec4.cpp @@ -0,0 +1,105 @@ +// license:BSD-3-Clause +// copyright-holders:Vas Crabb + +#include "emu.h" +#include "intellec4.h" + +#include + + +DEFINE_DEVICE_TYPE_NS(INTELLEC4_UNIV_SLOT, bus::intellec4, univ_slot_device, "intlc4univslot", "INTELLEC 4/MOD 40 Universal Slot") +DEFINE_DEVICE_TYPE_NS(INTELLEC4_UNIV_BUS, bus::intellec4, univ_bus_device, "intlc4univbus", "INTELLEC 4/MOD 40 Universal Bus") + + +namespace bus { namespace intellec4 { + +univ_slot_device::univ_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, INTELLEC4_UNIV_SLOT, tag, owner, clock) + , device_slot_interface(mconfig, *this) +{ +} + + +void univ_slot_device::set_bus_tag(device_t &device, char const *tag) +{ +} + + +void univ_slot_device::device_start() +{ +} + + + +univ_bus_device::univ_bus_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, INTELLEC4_UNIV_BUS, tag, owner, clock) + , m_stop_out_cb(*this) + , m_test_out_cb(*this) + , m_reset_4002_out_cb(*this) + , m_user_reset_out_cb(*this) + , m_stop(0U) + , m_test(0U) + , m_reset_4002(0U) + , m_user_reset(0U) +{ + std::fill(std::begin(m_cards), std::end(m_cards), nullptr); +} + + +WRITE_LINE_MEMBER(univ_bus_device::sync_in) +{ + // FIXME: distribute to cards +} + +WRITE_LINE_MEMBER(univ_bus_device::test_in) +{ + if (state) + m_test &= ~u16(1U); + else + m_test |= 1U; + // FIXME: distribute to cards +} + +WRITE_LINE_MEMBER(univ_bus_device::stop_in) +{ + if (state) + m_stop &= ~u16(1U); + else + m_stop |= 1U; + // FIXME: distribute to cards +} + +WRITE_LINE_MEMBER(univ_bus_device::stop_acknowledge_in) +{ + // FIXME: distribute to cards +} + +WRITE_LINE_MEMBER(univ_bus_device::cpu_reset_in) +{ + // FIXME: distribute to cards +} + +WRITE_LINE_MEMBER(univ_bus_device::reset_4002_in) +{ + if (state) + m_reset_4002 &= ~u16(1U); + else + m_reset_4002 |= 1U; + // FIXME: distribute to cards +} + + +void univ_bus_device::device_start() +{ + m_stop_out_cb.resolve_safe(); + m_test_out_cb.resolve_safe(); + m_reset_4002_out_cb.resolve_safe(); + m_user_reset_out_cb.resolve_safe(); +} + +} } // namespace bus::intellec4 + + + +SLOT_INTERFACE_START(intellec4_univ_cards) +SLOT_INTERFACE_END diff --git a/src/devices/bus/intellec4/intellec4.h b/src/devices/bus/intellec4/intellec4.h new file mode 100644 index 00000000000..ee63b7a3b55 --- /dev/null +++ b/src/devices/bus/intellec4/intellec4.h @@ -0,0 +1,195 @@ +// license:BSD-3-Clause +// copyright-holders:Vas Crabb +/* +INTELLEC® 4/MOD 40 Universal Slot + + 1 2 /TEST + GND 3 4 GND + NC 5 6 NC + NC 7 8 NC + NC 9 10 NC + MA0 11 12 MA1 + MA2 13 14 MA3 + MA4 15 16 MA5 + MA6 17 18 MA7 + C0 19 20 C1 + 21 22 NC + /MDI0 23 24 NC + /MDI1 25 26 + /MDI3 27 28 + /MDI2 29 30 + /MDI5 31 32 + /MDI4 33 34 + /MDI7 35 36 + /MDI6 37 38 + 39 40 + /OUT 41 42 /ENABLE MON PROM + -10V 43 44 -10V + /CPU RESET 45 46 /USER RESET + /CM-RAM2 47 48 /CM-RAM3 + /CM-RAM0 49 50 /CM-RAM1 + I/O 1 51 52 I/O 0 + I/O 2 53 54 /IN + F/L 55 56 I/O 3 + 57 58 + 59 60 + 61 62 + 63 64 + 65 66 + 67 68 + 69 70 + 71 72 /D3 + /STOP ACKNOWLEDGE 73 74 /STOP + 75 76 /D2 + 77 78 + /SYNC 79 80 /D1 + 81 82 /PROM SEL + /D0 83 84 + 85 86 + 87 88 /RESET-4002 + 89 90 + 91 92 + /CM-ROM 93 94 C3 + W 95 96 C2 + PHASE 2 97 98 PHASE 1 + +5V 99 100 +5V + +NC Not connected on backplane +GND Common ground ++5V Power supply +-10V Power supply +PHASE1 5.185MHz/7 clock phase 1 +PHASE2 5.185MHz/7 clock phase 2 +/SYNC CPU /SYNC output (instruction cycle synchronisation) +/TEST CPU /TEST input, wired-or (cards should pull low to assert) +/STOP CPU /STP input, wired-or (cards should pull low to assert) +/STOP ACKNOWLEDGE CPU /STP ACK output (stop/halt acknowledge) +/CM-ROM CPU /CM-ROM0 output (ROM chip select) +/CM-RAM0.../CM-RAM3 CPU /CM-RAM outputs (RAM chip select) +/D0.../D3 CPU data bus +MA0...MA7 A outputs from 4289 on CPU board (low ROM address/SRC address) +C0...C3 C outputs from 4289 on CPU board (high ROM address/I/O chip select) +W PM output from 4289 on CPU board (program memory enable) +F/L FL output from 4289 on CPU board (program memory nybble select) +I/O 0...I/O 3 I/O lines to 4289 on CPU board (bidirectional I/O data) +/MDI0.../MDI7 OPR/OPA multiplexer inputs on CPU board (ROM data when onboard monitor PROM is not selected) +/IN IN output from 4289 on CPU board (I/O read strobe) +/OUT OUT output from 4289 on CPU board (I/O write strobe) +/CPU RESET CPU/4289 reset output from control board +/RESET-4002 Open collector output from control board +/ENABLE MON PROM Output from control board +/PROM SEL Output from control board +/USER RESET Input to control board, edge sensitive, wired or (cards should pull low to assert) + +other pins connected between universal slots but not connected to CPU or control cards +*/ +#ifndef MAME_BUS_INTELLEC4_INTELLEC4_H +#define MAME_BUS_INTELLEC4_INTELLEC4_H + +#pragma once + + +#define MCFG_INTELLEC4_UNIV_SLOT_ADD(bus_tag, slot_tag, clock, slot_intf, def_slot) \ + MCFG_DEVICE_ADD(slot_tag, INTELLEC4_UNIV_SLOT, clock) \ + MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false) \ + bus::intellec4::univ_slot_device::set_bus_tag(*device, bus_tag); + +#define MCFG_INTELLEC4_UNIV_SLOT_REMOVE(slot_tag) \ + MCFG_DEVICE_REMOVE(slot_tag) + + +#define MCFG_INTELLEC4_UNIV_BUS_STOP_CB(obj) \ + bus::intellec4::univ_bus_device::set_stop_out_cb(*device, DEVCB_##obj); + +#define MCFG_INTELLEC4_UNIV_BUS_TEST_CB(obj) \ + bus::intellec4::univ_bus_device::set_test_out_cb(*device, DEVCB_##obj); + +#define MCFG_INTELLEC4_UNIV_BUS_RESET_4002_CB(obj) \ + bus::intellec4::univ_bus_device::set_reset_4002_out_cb(*device, DEVCB_##obj); + +#define MCFG_INTELLEC4_UNIV_BUS_USER_RESET_CB(obj) \ + bus::intellec4::univ_bus_device::set_user_reset_out_cb(*device, DEVCB_##obj); + + +namespace bus { namespace intellec4 { + +class univ_slot_device; +class univ_bus_device; +class device_univ_card_interface; + + +class univ_slot_device : public device_t, public device_slot_interface +{ +public: + // configuration helpers + static void set_bus_tag(device_t &device, char const *bus_tag); + + univ_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); + +protected: + // device_t implementation + virtual void device_start() override; +}; + + +class univ_bus_device : public device_t +{ +public: + // configuration helpers + template static devcb_base &set_stop_out_cb(device_t &device, Obj &&cb) + { return downcast(device).m_stop_out_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_test_out_cb(device_t &device, Obj &&cb) + { return downcast(device).m_test_out_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_reset_4002_out_cb(device_t &device, Obj &&cb) + { return downcast(device).m_reset_4002_out_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_user_reset_out_cb(device_t &device, Obj &&cb) + { return downcast(device).m_user_reset_out_cb.set_callback(std::forward(cb)); } + + univ_bus_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); + + // input lines + DECLARE_WRITE_LINE_MEMBER(sync_in); + DECLARE_WRITE_LINE_MEMBER(test_in); + DECLARE_WRITE_LINE_MEMBER(stop_in); + DECLARE_WRITE_LINE_MEMBER(stop_acknowledge_in); + DECLARE_WRITE_LINE_MEMBER(cpu_reset_in); + DECLARE_WRITE_LINE_MEMBER(reset_4002_in); + + // output lines + DECLARE_READ_LINE_MEMBER(stop_out) const { return (m_stop & ~u16(1U)) ? 0 : 1; } + DECLARE_READ_LINE_MEMBER(test_out) const { return (m_test & ~u16(1U)) ? 0 : 1; } + DECLARE_READ_LINE_MEMBER(reset_4002_out) const { return (m_reset_4002 & ~u16(1U)) ? 0 : 1; } + DECLARE_READ_LINE_MEMBER(user_reset_out) const { return (m_user_reset & ~u16(1U)) ? 0 : 1; } + +protected: + // device_t implementation + virtual void device_start() override; + +private: + // output line callbacks + devcb_write_line m_stop_out_cb; + devcb_write_line m_test_out_cb; + devcb_write_line m_reset_4002_out_cb; + devcb_write_line m_user_reset_out_cb; + + // cards + device_univ_card_interface *m_cards[15]; + + // packed line states + u16 m_stop, m_test, m_reset_4002, m_user_reset; +}; + + +class device_univ_card_interface : public device_slot_card_interface +{ +}; + +} } // namespace bus::intellec4 + + +DECLARE_DEVICE_TYPE_NS(INTELLEC4_UNIV_SLOT, bus::intellec4, univ_slot_device) +DECLARE_DEVICE_TYPE_NS(INTELLEC4_UNIV_BUS, bus::intellec4, univ_bus_device) + +SLOT_INTERFACE_EXTERN( intellec4_univ_cards ); + +#endif // MAME_BUS_INTELLEC4_INTELLEC4_H diff --git a/src/devices/bus/isa/isa.cpp b/src/devices/bus/isa/isa.cpp index 263d4452f98..88822b1f78e 100644 --- a/src/devices/bus/isa/isa.cpp +++ b/src/devices/bus/isa/isa.cpp @@ -129,13 +129,13 @@ isa8_device::isa8_device(const machine_config &mconfig, const char *tag, device_ isa8_device::isa8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock), device_memory_interface(mconfig, *this), - m_program_config("ISA 8-bit program", ENDIANNESS_LITTLE, 8, 24, 0, nullptr), + m_mem_config("ISA 8-bit mem", ENDIANNESS_LITTLE, 8, 24, 0, nullptr), m_io_config("ISA 8-bit I/O", ENDIANNESS_LITTLE, 8, 16, 0, nullptr), - m_program16_config("ISA 16-bit program", ENDIANNESS_LITTLE, 16, 24, 0, nullptr), + m_mem16_config("ISA 16-bit mem", ENDIANNESS_LITTLE, 16, 24, 0, nullptr), m_io16_config("ISA 16-bit I/O", ENDIANNESS_LITTLE, 16, 16, 0, nullptr), m_maincpu(nullptr), m_iospace(nullptr), - m_prgspace(nullptr), + m_memspace(nullptr), m_out_irq2_cb(*this), m_out_irq3_cb(*this), m_out_irq4_cb(*this), @@ -153,18 +153,38 @@ isa8_device::isa8_device(const machine_config &mconfig, device_type type, const m_dma_eop[i] = false; } m_nmi_enabled = false; - m_iowidth = m_prgwidth = 0; + m_iowidth = m_memwidth = 0; m_allocspaces = false; } -READ8_MEMBER(isa8_device::prog_r) +std::vector> isa8_device::memory_space_config() const { - return m_prgspace->read_byte(offset); + return std::vector> { + std::make_pair(AS_ISA_MEM, &m_mem_config), + std::make_pair(AS_ISA_IO, &m_io_config), + std::make_pair(AS_ISA_MEMALT, &m_mem16_config), + std::make_pair(AS_ISA_IOALT, &m_io16_config) + }; } -WRITE8_MEMBER(isa8_device::prog_w) +std::vector> isa16_device::memory_space_config() const { - m_prgspace->write_byte(offset, data); + return std::vector> { + std::make_pair(AS_ISA_MEM, &m_mem16_config), + std::make_pair(AS_ISA_IO, &m_io16_config), + std::make_pair(AS_ISA_MEMALT, &m_mem_config), + std::make_pair(AS_ISA_IOALT, &m_io_config) + }; +} + +READ8_MEMBER(isa8_device::mem_r) +{ + return m_memspace->read_byte(offset); +} + +WRITE8_MEMBER(isa8_device::mem_w) +{ + m_memspace->write_byte(offset, data); } READ8_MEMBER(isa8_device::io_r) @@ -206,17 +226,17 @@ void isa8_device::device_start() if (m_allocspaces) { - m_iospace = &space(AS_IO); - m_prgspace = &space(AS_PROGRAM); + m_iospace = &space(AS_ISA_IO); + m_memspace = &space(AS_ISA_MEM); m_iowidth = m_iospace->data_width(); - m_prgwidth = m_prgspace->data_width(); + m_memwidth = m_memspace->data_width(); } else // use host CPU's program and I/O spaces directly { m_iospace = &m_maincpu->space(AS_IO); m_iowidth = m_maincpu->space_config(AS_IO)->m_databus_width; - m_prgspace = &m_maincpu->space(AS_PROGRAM); - m_prgwidth = m_maincpu->space_config(AS_PROGRAM)->m_databus_width; + m_memspace = &m_maincpu->space(AS_PROGRAM); + m_memwidth = m_maincpu->space_config(AS_PROGRAM)->m_databus_width; } } @@ -229,20 +249,20 @@ void isa8_device::device_reset() } -void isa8_device::install_space(address_spacenum spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler) +void isa8_device::install_space(int spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler) { int buswidth; address_space *space; - if (spacenum == AS_IO) + if (spacenum == AS_ISA_IO) { space = m_iospace; buswidth = m_iowidth; } - else if (spacenum == AS_PROGRAM) + else if (spacenum == AS_ISA_MEM) { - space = m_prgspace; - buswidth = m_prgwidth; + space = m_memspace; + buswidth = m_memwidth; } else { @@ -277,24 +297,24 @@ void isa8_device::install_space(address_spacenum spacenum, offs_t start, offs_t void isa8_device::install_memory(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler) { - install_space(AS_PROGRAM, start, end, rhandler, whandler); + install_space(AS_ISA_MEM, start, end, rhandler, whandler); } void isa8_device::install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler) { - install_space(AS_IO, start, end, rhandler, whandler); + install_space(AS_ISA_IO, start, end, rhandler, whandler); } void isa8_device::install_bank(offs_t start, offs_t end, const char *tag, uint8_t *data) { - m_prgspace->install_readwrite_bank(start, end, 0, tag ); - machine().root_device().membank(m_prgspace->device().siblingtag(tag).c_str())->set_base(data); + m_memspace->install_readwrite_bank(start, end, 0, tag ); + machine().root_device().membank(m_memspace->device().siblingtag(tag).c_str())->set_base(data); } void isa8_device::unmap_bank(offs_t start, offs_t end) { - m_prgspace->unmap_readwrite(start, end); + m_memspace->unmap_readwrite(start, end); } void isa8_device::install_rom(device_t *dev, offs_t start, offs_t end, const char *tag, const char *region) @@ -304,22 +324,22 @@ void isa8_device::install_rom(device_t *dev, offs_t start, offs_t end, const cha uint8_t *dest = machine().root_device().memregion("isa")->base() + start - 0xc0000; memcpy(dest,src, end - start + 1); } else { - m_prgspace->install_read_bank(start, end, 0, tag); - m_prgspace->unmap_write(start, end); - machine().root_device().membank(m_prgspace->device().siblingtag(tag).c_str())->set_base(machine().root_device().memregion(dev->subtag(region).c_str())->base()); + m_memspace->install_read_bank(start, end, 0, tag); + m_memspace->unmap_write(start, end); + machine().root_device().membank(m_memspace->device().siblingtag(tag).c_str())->set_base(machine().root_device().memregion(dev->subtag(region).c_str())->base()); } } void isa8_device::unmap_rom(offs_t start, offs_t end) { - m_prgspace->unmap_read(start, end); + m_memspace->unmap_read(start, end); } bool isa8_device::is_option_rom_space_available(offs_t start, int size) { m_maincpu = machine().device(m_cputag); for(int i = 0; i < size; i += 4096) // 4KB granularity should be enough - if(m_prgspace->get_read_ptr(start + i)) return false; + if(m_memspace->get_read_ptr(start + i)) return false; return true; } @@ -465,7 +485,7 @@ void isa16_device::device_start() void isa16_device::install16_device(offs_t start, offs_t end, read16_delegate rhandler, write16_delegate whandler) { - int buswidth = m_prgwidth; + int buswidth = m_iowidth; switch(buswidth) { case 16: @@ -490,14 +510,14 @@ void isa16_device::install16_device(offs_t start, offs_t end, read16_delegate rh } } -READ16_MEMBER(isa16_device::prog16_r) +READ16_MEMBER(isa16_device::mem16_r) { - return m_prgspace->read_word(offset<<1, mem_mask); + return m_memspace->read_word(offset<<1, mem_mask); } -WRITE16_MEMBER(isa16_device::prog16_w) +WRITE16_MEMBER(isa16_device::mem16_w) { - m_prgspace->write_word(offset<<1, data, mem_mask); + m_memspace->write_word(offset<<1, data, mem_mask); } READ16_MEMBER(isa16_device::io16_r) @@ -510,21 +530,21 @@ WRITE16_MEMBER(isa16_device::io16_w) m_iospace->write_word(offset<<1, data, mem_mask); } -READ16_MEMBER(isa16_device::prog16_swap_r) +READ16_MEMBER(isa16_device::mem16_swap_r) { uint16_t rv; mem_mask = (mem_mask<<8) | (mem_mask>>8); - rv = m_prgspace->read_word(offset<<1, mem_mask); + rv = m_memspace->read_word(offset<<1, mem_mask); return (rv<<8) | (rv>>8); } -WRITE16_MEMBER(isa16_device::prog16_swap_w) +WRITE16_MEMBER(isa16_device::mem16_swap_w) { mem_mask = (mem_mask<<8) | (mem_mask>>8); data = (data<<8) | (data>>8); - m_prgspace->write_word(offset<<1, data, mem_mask); + m_memspace->write_word(offset<<1, data, mem_mask); } READ16_MEMBER(isa16_device::io16_swap_r) diff --git a/src/devices/bus/isa/isa.h b/src/devices/bus/isa/isa.h index 36e949fc76f..2675d660b24 100644 --- a/src/devices/bus/isa/isa.h +++ b/src/devices/bus/isa/isa.h @@ -186,6 +186,14 @@ class isa8_device : public device_t, public device_memory_interface { public: + enum + { + AS_ISA_MEM = 0, + AS_ISA_IO = 1, + AS_ISA_MEMALT = 2, + AS_ISA_IOALT = 3 + }; + // construction/destruction isa8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration @@ -203,17 +211,7 @@ public: template static devcb_base &set_out_drq3_callback(device_t &device, Object &&cb) { return downcast(device).m_out_drq3_cb.set_callback(std::forward(cb)); } // for ISA8, put the 8-bit configs in the primary slots and the 16-bit configs in the secondary - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - switch (spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_IO: return &m_io_config; - case AS_DATA: return &m_program16_config; - case AS_3: return &m_io16_config; - default: fatalerror("isa: invalid memory space!\n"); - } - } + virtual std::vector> memory_space_config() const override; void install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler); template void install_device(offs_t addrstart, offs_t addrend, T &device, void (T::*map)(class address_map &map), int bits = 8) @@ -228,6 +226,7 @@ public: void install_rom(device_t *dev, offs_t start, offs_t end, const char *tag, const char *region); void install_memory(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler); + void unmap_device(offs_t start, offs_t end) const { m_iospace->unmap_readwrite(start, end); } void unmap_bank(offs_t start, offs_t end); void unmap_rom(offs_t start, offs_t end); bool is_option_rom_space_available(offs_t start, int size); @@ -244,8 +243,8 @@ public: DECLARE_WRITE_LINE_MEMBER( drq3_w ); // 8 bit accessors for ISA-defined address spaces - DECLARE_READ8_MEMBER(prog_r); - DECLARE_WRITE8_MEMBER(prog_w); + DECLARE_READ8_MEMBER(mem_r); + DECLARE_WRITE8_MEMBER(mem_w); DECLARE_READ8_MEMBER(io_r); DECLARE_WRITE8_MEMBER(io_w); @@ -258,12 +257,12 @@ public: virtual void set_dma_channel(uint8_t channel, device_isa8_card_interface *dev, bool do_eop); - const address_space_config m_program_config, m_io_config, m_program16_config, m_io16_config; + const address_space_config m_mem_config, m_io_config, m_mem16_config, m_io16_config; protected: isa8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - void install_space(address_spacenum spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler); + void install_space(int spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler); // device-level overrides virtual void device_start() override; @@ -273,8 +272,8 @@ protected: cpu_device *m_maincpu; // address spaces - address_space *m_iospace, *m_prgspace; - int m_iowidth, m_prgwidth; + address_space *m_iospace, *m_memspace; + int m_iowidth, m_memwidth; bool m_allocspaces; devcb_write_line m_out_irq2_cb; @@ -370,17 +369,7 @@ public: void install16_device(offs_t start, offs_t end, read16_delegate rhandler, write16_delegate whandler); // for ISA16, put the 16-bit configs in the primary slots and the 8-bit configs in the secondary - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - switch (spacenum) - { - case AS_PROGRAM: return &m_program16_config; - case AS_IO: return &m_io16_config; - case AS_DATA: return &m_program_config; - case AS_3: return &m_io_config; - default: fatalerror("isa: invalid memory space!\n"); - } - } + virtual std::vector> memory_space_config() const override; DECLARE_WRITE_LINE_MEMBER( irq10_w ); DECLARE_WRITE_LINE_MEMBER( irq11_w ); @@ -397,13 +386,13 @@ public: void dack16_w(int line,uint16_t data); // 16 bit accessors for ISA-defined address spaces - DECLARE_READ16_MEMBER(prog16_r); - DECLARE_WRITE16_MEMBER(prog16_w); + DECLARE_READ16_MEMBER(mem16_r); + DECLARE_WRITE16_MEMBER(mem16_w); DECLARE_READ16_MEMBER(io16_r); DECLARE_WRITE16_MEMBER(io16_w); // byte-swapped versions of 16-bit accessors - DECLARE_READ16_MEMBER(prog16_swap_r); - DECLARE_WRITE16_MEMBER(prog16_swap_w); + DECLARE_READ16_MEMBER(mem16_swap_r); + DECLARE_WRITE16_MEMBER(mem16_swap_w); DECLARE_READ16_MEMBER(io16_swap_r); DECLARE_WRITE16_MEMBER(io16_swap_w); diff --git a/src/devices/bus/isa/num9rev.cpp b/src/devices/bus/isa/num9rev.cpp index 61176c4a7ec..3cb8078c864 100644 --- a/src/devices/bus/isa/num9rev.cpp +++ b/src/devices/bus/isa/num9rev.cpp @@ -14,7 +14,7 @@ DEFINE_DEVICE_TYPE(ISA8_NUM_9_REV, isa8_number_9_rev_device, "number_9_rev", "Number Nine Revolution 512x32/1024x8") -static ADDRESS_MAP_START( upd7220_map, AS_0, 16, isa8_number_9_rev_device ) +static ADDRESS_MAP_START( upd7220_map, 0, 16, isa8_number_9_rev_device ) AM_RANGE(0x00000, 0x3ffff) AM_NOP ADDRESS_MAP_END @@ -61,7 +61,7 @@ MACHINE_CONFIG_MEMBER( isa8_number_9_rev_device::device_add_mconfig ) MCFG_PALETTE_ADD("palette", 4096) MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL_4_433619MHz/2) // unknown clock - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(isa8_number_9_rev_device, hgdc_display_pixels) MCFG_VIDEO_SET_SCREEN("screen") MACHINE_CONFIG_END diff --git a/src/devices/bus/lpci/southbridge.cpp b/src/devices/bus/lpci/southbridge.cpp index 70bff510211..3bc4108b28e 100644 --- a/src/devices/bus/lpci/southbridge.cpp +++ b/src/devices/bus/lpci/southbridge.cpp @@ -182,7 +182,8 @@ void southbridge_device::device_start() spaceio.install_readwrite_handler(0x0000, 0x001f, read8_delegate(FUNC(am9517a_device::read),&(*m_dma8237_1)), write8_delegate(FUNC(am9517a_device::write),&(*m_dma8237_1)), 0xffffffff); spaceio.install_readwrite_handler(0x0020, 0x003f, read8_delegate(FUNC(pic8259_device::read),&(*m_pic8259_master)), write8_delegate(FUNC(pic8259_device::write),&(*m_pic8259_master)), 0xffffffff); spaceio.install_readwrite_handler(0x0040, 0x005f, read8_delegate(FUNC(pit8254_device::read),&(*m_pit8254)), write8_delegate(FUNC(pit8254_device::write),&(*m_pit8254)), 0xffffffff); - spaceio.install_readwrite_handler(0x0060, 0x0063, read8_delegate(FUNC(southbridge_device::at_keybc_r),this), write8_delegate(FUNC(southbridge_device::at_keybc_w),this), 0xffffffff); + spaceio.install_readwrite_handler(0x0060, 0x0063, read8_delegate(FUNC(at_keyboard_controller_device::data_r), &(*m_keybc)), write8_delegate(FUNC(at_keyboard_controller_device::data_w), &(*m_keybc)), 0x000000ff); + spaceio.install_readwrite_handler(0x0060, 0x0063, read8_delegate(FUNC(southbridge_device::at_portb_r), this), write8_delegate(FUNC(southbridge_device::at_portb_w), this), 0x0000ff00); spaceio.install_readwrite_handler(0x0064, 0x0067, read8_delegate(FUNC(at_keyboard_controller_device::status_r),&(*m_keybc)), write8_delegate(FUNC(at_keyboard_controller_device::command_w),&(*m_keybc)), 0xffffffff); spaceio.install_readwrite_handler(0x0070, 0x007f, read8_delegate(FUNC(ds12885_device::read),&(*m_ds12885)), write8_delegate(FUNC(ds12885_device::write),&(*m_ds12885)), 0xffffffff); spaceio.install_readwrite_handler(0x0080, 0x009f, read8_delegate(FUNC(southbridge_device::at_page8_r),this), write8_delegate(FUNC(southbridge_device::at_page8_w),this), 0xffffffff); @@ -458,27 +459,6 @@ WRITE8_MEMBER( southbridge_device::at_dma8237_2_w ) m_dma8237_2->write( space, offset / 2, data); } -READ8_MEMBER( southbridge_device::at_keybc_r ) -{ - switch (offset) - { - case 0: return m_keybc->data_r(space, 0); - case 1: return at_portb_r(space, 0); - } - - return 0xff; -} - -WRITE8_MEMBER( southbridge_device::at_keybc_w ) -{ - switch (offset) - { - case 0: m_keybc->data_w(space, 0, data); break; - case 1: at_portb_w(space, 0, data); break; - } -} - - WRITE8_MEMBER( southbridge_device::write_rtc ) { if (offset==0) { diff --git a/src/devices/bus/lpci/southbridge.h b/src/devices/bus/lpci/southbridge.h index 142fcc0f98b..93d116c442b 100644 --- a/src/devices/bus/lpci/southbridge.h +++ b/src/devices/bus/lpci/southbridge.h @@ -121,8 +121,6 @@ private: DECLARE_WRITE8_MEMBER(ide2_write_cs1_w); DECLARE_READ8_MEMBER(at_dma8237_2_r); DECLARE_WRITE8_MEMBER(at_dma8237_2_w); - DECLARE_READ8_MEMBER(at_keybc_r); - DECLARE_WRITE8_MEMBER(at_keybc_w); DECLARE_WRITE8_MEMBER(write_rtc); DECLARE_READ8_MEMBER(pc_dma_read_byte); DECLARE_WRITE8_MEMBER(pc_dma_write_byte); diff --git a/src/devices/bus/msx_cart/konami.cpp b/src/devices/bus/msx_cart/konami.cpp index a6606333767..46633807d9c 100644 --- a/src/devices/bus/msx_cart/konami.cpp +++ b/src/devices/bus/msx_cart/konami.cpp @@ -866,7 +866,7 @@ msx_cart_keyboard_master_device::msx_cart_keyboard_master_device(const machine_c } -static ADDRESS_MAP_START( vlm_map, AS_0, 8, msx_cart_keyboard_master_device ) +static ADDRESS_MAP_START( vlm_map, 0, 8, msx_cart_keyboard_master_device ) AM_RANGE(0x0000, 0xffff) AM_READ(read_vlm) ADDRESS_MAP_END @@ -876,7 +876,7 @@ MACHINE_CONFIG_MEMBER( msx_cart_keyboard_master_device::device_add_mconfig ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("vlm5030", VLM5030, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, vlm_map) MACHINE_CONFIG_END diff --git a/src/devices/bus/msx_cart/moonsound.cpp b/src/devices/bus/msx_cart/moonsound.cpp index ddcd072e281..6debc9e5e84 100644 --- a/src/devices/bus/msx_cart/moonsound.cpp +++ b/src/devices/bus/msx_cart/moonsound.cpp @@ -29,7 +29,7 @@ msx_cart_moonsound_device::msx_cart_moonsound_device(const machine_config &mconf } -static ADDRESS_MAP_START( ymf278b_map, AS_0, 8, msx_cart_moonsound_device ) +static ADDRESS_MAP_START( ymf278b_map, 0, 8, msx_cart_moonsound_device ) AM_RANGE(0x000000, 0x1fffff) AM_ROM AM_RANGE(0x200000, 0x3fffff) AM_RAM // 2MB sram for testing ADDRESS_MAP_END @@ -39,7 +39,7 @@ MACHINE_CONFIG_MEMBER( msx_cart_moonsound_device::device_add_mconfig ) // The moonsound cartridge has a separate stereo output. MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD("ymf278b", YMF278B, YMF278B_STD_CLOCK) - MCFG_DEVICE_ADDRESS_MAP(AS_0, ymf278b_map) + MCFG_DEVICE_ADDRESS_MAP(0, ymf278b_map) MCFG_YMF278B_IRQ_HANDLER(WRITELINE(msx_cart_moonsound_device, irq_w)) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) diff --git a/src/devices/bus/pet/hsg.cpp b/src/devices/bus/pet/hsg.cpp index c77246dc65b..a12e9adec0c 100644 --- a/src/devices/bus/pet/hsg.cpp +++ b/src/devices/bus/pet/hsg.cpp @@ -69,7 +69,7 @@ const tiny_rom_entry *cbm8000_hsg_device::device_rom_region() const // ADDRESS_MAP( hsg_a_map ) //------------------------------------------------- -static ADDRESS_MAP_START( hsg_a_map, AS_0, 8, cbm8000_hsg_a_device ) +static ADDRESS_MAP_START( hsg_a_map, 0, 8, cbm8000_hsg_a_device ) ADDRESS_MAP_GLOBAL_MASK(0x7fff) AM_RANGE(0x0000, 0x7fff) AM_RAM ADDRESS_MAP_END @@ -79,7 +79,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( hsg_b_map ) //------------------------------------------------- -static ADDRESS_MAP_START( hsg_b_map, AS_0, 8, cbm8000_hsg_b_device ) +static ADDRESS_MAP_START( hsg_b_map, 0, 8, cbm8000_hsg_b_device ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x3fff) AM_RAM ADDRESS_MAP_END @@ -99,7 +99,7 @@ MACHINE_CONFIG_MEMBER( cbm8000_hsg_a_device::device_add_mconfig ) MCFG_DEVICE_ADD(EF9365_TAG, EF9365, 1750000) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - MCFG_DEVICE_ADDRESS_MAP(AS_0, hsg_a_map) + MCFG_DEVICE_ADDRESS_MAP(0, hsg_a_map) MCFG_EF936X_PALETTE("palette") MCFG_EF936X_BITPLANES_CNT(1); MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_512x512); @@ -115,7 +115,7 @@ MACHINE_CONFIG_MEMBER( cbm8000_hsg_b_device::device_add_mconfig ) MCFG_DEVICE_ADD(EF9366_TAG, EF9365, 1750000) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - MCFG_DEVICE_ADDRESS_MAP(AS_0, hsg_b_map) + MCFG_DEVICE_ADDRESS_MAP(0, hsg_b_map) MCFG_EF936X_PALETTE("palette") MCFG_EF936X_BITPLANES_CNT(1); MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_512x256); diff --git a/src/devices/bus/vme/vme.cpp b/src/devices/bus/vme/vme.cpp index d397d45789f..7c79fc99cf3 100644 --- a/src/devices/bus/vme/vme.cpp +++ b/src/devices/bus/vme/vme.cpp @@ -205,6 +205,13 @@ SLOT_INTERFACE_END DEFINE_DEVICE_TYPE(VME, vme_device, "vme", "VME bus") +std::vector> vme_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_a32_config) + }; +} + // static_set_cputag - used to be able to lookup the CPU owning this VME bus void vme_device::static_set_cputag(device_t &device, const char *tag) { diff --git a/src/devices/bus/vme/vme.h b/src/devices/bus/vme/vme.h index ed4bd7efd5f..0352bc8c2f9 100644 --- a/src/devices/bus/vme/vme.h +++ b/src/devices/bus/vme/vme.h @@ -142,14 +142,8 @@ public: static void static_set_cputag(device_t &device, const char *tag); static void static_use_owner_spaces(device_t &device); - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - switch (spacenum) - { - case AS_PROGRAM: return &m_a32_config; - default: return nullptr; - } - } + virtual std::vector> memory_space_config() const override; + const address_space_config m_a32_config; void add_vme_card(device_vme_card_interface *card); diff --git a/src/devices/bus/wangpc/tig.cpp b/src/devices/bus/wangpc/tig.cpp index 94c84cfa8e1..d1549eeb15d 100644 --- a/src/devices/bus/wangpc/tig.cpp +++ b/src/devices/bus/wangpc/tig.cpp @@ -83,7 +83,7 @@ const tiny_rom_entry *wangpc_tig_device::device_rom_region() const // UPD7220_INTERFACE( hgdc0_intf ) //------------------------------------------------- -static ADDRESS_MAP_START( upd7220_0_map, AS_0, 16, wangpc_tig_device ) +static ADDRESS_MAP_START( upd7220_0_map, 0, 16, wangpc_tig_device ) ADDRESS_MAP_GLOBAL_MASK(0x7fff) AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x1000) AM_RAM // frame buffer AM_RANGE(0x4000, 0x7fff) AM_RAM // font memory @@ -98,7 +98,7 @@ UPD7220_DRAW_TEXT_LINE_MEMBER( wangpc_tig_device::hgdc_draw_text ) // UPD7220_INTERFACE( hgdc1_intf ) //------------------------------------------------- -static ADDRESS_MAP_START( upd7220_1_map, AS_0, 16, wangpc_tig_device ) +static ADDRESS_MAP_START( upd7220_1_map, 0, 16, wangpc_tig_device ) ADDRESS_MAP_GLOBAL_MASK(0xffff) AM_RANGE(0x0000, 0xffff) AM_RAM // graphics memory ADDRESS_MAP_END @@ -123,12 +123,12 @@ MACHINE_CONFIG_MEMBER( wangpc_tig_device::device_add_mconfig ) MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette") MCFG_DEVICE_ADD(UPD7720_0_TAG, UPD7220, XTAL_52_832MHz/28) - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_0_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_0_map) MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(wangpc_tig_device, hgdc_draw_text) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) MCFG_DEVICE_ADD(UPD7720_1_TAG, UPD7220, XTAL_52_832MHz/28) - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_1_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_1_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(wangpc_tig_device, hgdc_display_pixels) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) MACHINE_CONFIG_END diff --git a/src/devices/cpu/8x300/8x300.cpp b/src/devices/cpu/8x300/8x300.cpp index c3929144aa3..63259adb8ae 100644 --- a/src/devices/cpu/8x300/8x300.cpp +++ b/src/devices/cpu/8x300/8x300.cpp @@ -47,6 +47,14 @@ n8x300_cpu_device::n8x300_cpu_device(const machine_config &mconfig, const char * { } +std::vector> n8x300_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + void n8x300_cpu_device::set_reg(uint8_t reg, uint8_t val) { switch(reg) diff --git a/src/devices/cpu/8x300/8x300.h b/src/devices/cpu/8x300/8x300.h index 532fc58a6c1..86910fdccca 100644 --- a/src/devices/cpu/8x300/8x300.h +++ b/src/devices/cpu/8x300/8x300.h @@ -60,15 +60,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override - { - switch (spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_IO: return &m_io_config; - default: return nullptr; - } - } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } diff --git a/src/devices/cpu/adsp2100/adsp2100.cpp b/src/devices/cpu/adsp2100/adsp2100.cpp index a3c7f26abdb..c9a049991b7 100644 --- a/src/devices/cpu/adsp2100/adsp2100.cpp +++ b/src/devices/cpu/adsp2100/adsp2100.cpp @@ -649,26 +649,29 @@ void adsp21xx_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *adsp2100_device::memory_space_config(address_spacenum spacenum) const +std::vector> adsp2100_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_config : - (spacenum == AS_DATA) ? &m_data_config : - nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; } -const address_space_config *adsp2101_device::memory_space_config(address_spacenum spacenum) const +std::vector> adsp2101_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_config : - (spacenum == AS_DATA) ? &m_data_config : - nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; } -const address_space_config *adsp2181_device::memory_space_config(address_spacenum spacenum) const +std::vector> adsp2181_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_config : - (spacenum == AS_DATA) ? &m_data_config : - (spacenum == AS_IO) ? &m_io_config : - nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config) + }; } diff --git a/src/devices/cpu/adsp2100/adsp2100.h b/src/devices/cpu/adsp2100/adsp2100.h index 661879a576b..df8bb9f1bc8 100644 --- a/src/devices/cpu/adsp2100/adsp2100.h +++ b/src/devices/cpu/adsp2100/adsp2100.h @@ -494,7 +494,7 @@ protected: virtual uint32_t execute_input_lines() const override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // interrupts virtual bool generate_irq(int which, int indx) override; @@ -517,7 +517,7 @@ protected: virtual uint32_t execute_input_lines() const override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // interrupts virtual bool generate_irq(int which, int indx) override; @@ -538,7 +538,7 @@ protected: virtual uint32_t execute_input_lines() const override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // interrupts virtual bool generate_irq(int which, int indx) override; diff --git a/src/devices/cpu/alph8201/alph8201.cpp b/src/devices/cpu/alph8201/alph8201.cpp index ea7bf566657..2a0e76ddbe4 100644 --- a/src/devices/cpu/alph8201/alph8201.cpp +++ b/src/devices/cpu/alph8201/alph8201.cpp @@ -203,6 +203,13 @@ alpha8301_cpu_device::alpha8301_cpu_device(const machine_config &mconfig, const { } +std::vector> alpha8201_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} /* Get next opcode argument and increment program counter */ unsigned alpha8201_cpu_device::M_RDMEM_OPCODE() diff --git a/src/devices/cpu/alph8201/alph8201.h b/src/devices/cpu/alph8201/alph8201.h index e5c3151d341..b355c6f514b 100644 --- a/src/devices/cpu/alph8201/alph8201.h +++ b/src/devices/cpu/alph8201/alph8201.h @@ -75,7 +75,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/alto2/alto2cpu.cpp b/src/devices/cpu/alto2/alto2cpu.cpp index ad6fae3c282..b6ea55047e4 100644 --- a/src/devices/cpu/alto2/alto2cpu.cpp +++ b/src/devices/cpu/alto2/alto2cpu.cpp @@ -794,15 +794,13 @@ static const prom_load_t pl_madr_a91 = // device_memory_interface overrides //------------------------------------------------- -const address_space_config*alto2_cpu_device::memory_space_config(address_spacenum spacenum) const +std::vector> alto2_cpu_device::memory_space_config() const { - if (AS_0 == spacenum) - return &m_ucode_config; - if (AS_1 == spacenum) - return &m_const_config; - if (AS_2 == spacenum) - return &m_iomem_config; - return nullptr; + return std::vector> { + std::make_pair(0, &m_ucode_config), + std::make_pair(1, &m_const_config), + std::make_pair(2, &m_iomem_config) + }; } //------------------------------------------------- @@ -812,7 +810,7 @@ const address_space_config*alto2_cpu_device::memory_space_config(address_spacenu void alto2_cpu_device::device_start() { // get a pointer to the IO address space - m_iomem = &space(AS_2); + m_iomem = &space(2); // Decode 2 pages of micro code PROMs to CROM // If m_cram_config == 1 or 3, only the first page will be used diff --git a/src/devices/cpu/alto2/alto2cpu.h b/src/devices/cpu/alto2/alto2cpu.h index 440a8f972ba..04d37363ec4 100644 --- a/src/devices/cpu/alto2/alto2cpu.h +++ b/src/devices/cpu/alto2/alto2cpu.h @@ -230,7 +230,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; //! device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; //! device (P)ROMs virtual const tiny_rom_entry *device_rom_region() const override; diff --git a/src/devices/cpu/am29000/am29000.cpp b/src/devices/cpu/am29000/am29000.cpp index 691b23edfb3..d3826de0c17 100644 --- a/src/devices/cpu/am29000/am29000.cpp +++ b/src/devices/cpu/am29000/am29000.cpp @@ -118,6 +118,14 @@ am29000_cpu_device::am29000_cpu_device(const machine_config &mconfig, const char m_next_pc = 0; } +std::vector> am29000_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config) + }; +} void am29000_cpu_device::device_start() { diff --git a/src/devices/cpu/am29000/am29000.h b/src/devices/cpu/am29000/am29000.h index 16b8ebccd67..4a58d5d4adb 100644 --- a/src/devices/cpu/am29000/am29000.h +++ b/src/devices/cpu/am29000/am29000.h @@ -451,16 +451,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override - { - switch (spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_IO: return &m_io_config; - case AS_DATA: return &m_data_config; - default: return nullptr; - } - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/amis2000/amis2000.cpp b/src/devices/cpu/amis2000/amis2000.cpp index e1bdc09970e..16f490d2453 100644 --- a/src/devices/cpu/amis2000/amis2000.cpp +++ b/src/devices/cpu/amis2000/amis2000.cpp @@ -68,6 +68,14 @@ amis2152_cpu_device::amis2152_cpu_device(const machine_config &mconfig, const ch : amis2000_base_device(mconfig, AMI_S2152, tag, owner, clock, 3, 11, 3, 13, ADDRESS_MAP_NAME(program_1_5k), 7, ADDRESS_MAP_NAME(data_80x4)) { } +std::vector> amis2000_base_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} + //------------------------------------------------- // state_string_export - export state as a string diff --git a/src/devices/cpu/amis2000/amis2000.h b/src/devices/cpu/amis2000/amis2000.h index dc4b6d8e832..1d90f1c64f1 100644 --- a/src/devices/cpu/amis2000/amis2000.h +++ b/src/devices/cpu/amis2000/amis2000.h @@ -84,7 +84,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual u32 disasm_min_opcode_bytes() const override { return 1; } diff --git a/src/devices/cpu/apexc/apexc.cpp b/src/devices/cpu/apexc/apexc.cpp index aad7126433d..c0e7a99364f 100644 --- a/src/devices/cpu/apexc/apexc.cpp +++ b/src/devices/cpu/apexc/apexc.cpp @@ -351,6 +351,14 @@ apexc_cpu_device::apexc_cpu_device(const machine_config &mconfig, const char *ta { } +std::vector> apexc_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + /* word accessor functions diff --git a/src/devices/cpu/apexc/apexc.h b/src/devices/cpu/apexc/apexc.h index bf753180dd8..9175ca92333 100644 --- a/src/devices/cpu/apexc/apexc.h +++ b/src/devices/cpu/apexc/apexc.h @@ -34,7 +34,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/arc/arc.h b/src/devices/cpu/arc/arc.h index 78975cdad87..b240027716a 100644 --- a/src/devices/cpu/arc/arc.h +++ b/src/devices/cpu/arc/arc.h @@ -36,7 +36,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/arcompact/arcompact.cpp b/src/devices/cpu/arcompact/arcompact.cpp index 3aa939be868..01cf3746e38 100644 --- a/src/devices/cpu/arcompact/arcompact.cpp +++ b/src/devices/cpu/arcompact/arcompact.cpp @@ -56,6 +56,13 @@ arcompact_device::arcompact_device(const machine_config &mconfig, const char *ta { } +std::vector> arcompact_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} offs_t arcompact_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/arcompact/arcompact.h b/src/devices/cpu/arcompact/arcompact.h index f061091a341..26868114a20 100644 --- a/src/devices/cpu/arcompact/arcompact.h +++ b/src/devices/cpu/arcompact/arcompact.h @@ -95,7 +95,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/arm/arm.cpp b/src/devices/cpu/arm/arm.cpp index ab8dff26921..8b0fe10351a 100644 --- a/src/devices/cpu/arm/arm.cpp +++ b/src/devices/cpu/arm/arm.cpp @@ -228,6 +228,13 @@ DEFINE_DEVICE_TYPE(ARM, arm_cpu_device, "arm_le", "ARM (little)") DEFINE_DEVICE_TYPE(ARM_BE, arm_be_cpu_device, "arm_be", "ARM (big)") +std::vector> arm_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + arm_cpu_device::arm_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : arm_cpu_device(mconfig, ARM, tag, owner, clock, ENDIANNESS_LITTLE) { diff --git a/src/devices/cpu/arm/arm.h b/src/devices/cpu/arm/arm.h index e3d1e77dfec..37f11f5fb9b 100644 --- a/src/devices/cpu/arm/arm.h +++ b/src/devices/cpu/arm/arm.h @@ -58,7 +58,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/arm7/arm7.cpp b/src/devices/cpu/arm7/arm7.cpp index eaeb3052393..362fd95819c 100644 --- a/src/devices/cpu/arm7/arm7.cpp +++ b/src/devices/cpu/arm7/arm7.cpp @@ -118,6 +118,13 @@ sa1110_cpu_device::sa1110_cpu_device(const machine_config &mconfig, const char * { } +std::vector> arm7_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + void arm7_cpu_device::update_reg_ptr() { m_reg_group = sRegisterTable[GET_MODE]; @@ -436,7 +443,7 @@ bool arm7_cpu_device::arm7_tlb_translate(offs_t &addr, int flags) } -bool arm7_cpu_device::memory_translate(address_spacenum spacenum, int intention, offs_t &address) +bool arm7_cpu_device::memory_translate(int spacenum, int intention, offs_t &address) { /* only applies to the program address space and only does something if the MMU's enabled */ if( spacenum == AS_PROGRAM && ( m_control & COPRO_CTRL_MMU_EN ) ) diff --git a/src/devices/cpu/arm7/arm7.h b/src/devices/cpu/arm7/arm7.h index ca994db6a32..49379f4df6c 100644 --- a/src/devices/cpu/arm7/arm7.h +++ b/src/devices/cpu/arm7/arm7.h @@ -67,8 +67,8 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } - virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override; + virtual std::vector> memory_space_config() const override; + virtual bool memory_translate(int spacenum, int intention, offs_t &address) override; // device_state_interface overrides virtual void state_export(const device_state_entry &entry) override; diff --git a/src/devices/cpu/arm7/lpc210x.cpp b/src/devices/cpu/arm7/lpc210x.cpp index 67238a6b987..87ad3310ed3 100644 --- a/src/devices/cpu/arm7/lpc210x.cpp +++ b/src/devices/cpu/arm7/lpc210x.cpp @@ -66,13 +66,11 @@ WRITE32_MEMBER(lpc210x_device::flash_w) } -const address_space_config *lpc210x_device::memory_space_config(address_spacenum spacenum) const +std::vector> lpc210x_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &m_program_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; } diff --git a/src/devices/cpu/arm7/lpc210x.h b/src/devices/cpu/arm7/lpc210x.h index e566256890f..1b52af81f60 100644 --- a/src/devices/cpu/arm7/lpc210x.h +++ b/src/devices/cpu/arm7/lpc210x.h @@ -77,7 +77,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; uint32_t m_TxPR[2]; diff --git a/src/devices/cpu/asap/asap.cpp b/src/devices/cpu/asap/asap.cpp index 17d00735a7a..c235f45d5b5 100644 --- a/src/devices/cpu/asap/asap.cpp +++ b/src/devices/cpu/asap/asap.cpp @@ -235,9 +235,11 @@ void asap_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *asap_device::memory_space_config(address_spacenum spacenum) const +std::vector> asap_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; } diff --git a/src/devices/cpu/asap/asap.h b/src/devices/cpu/asap/asap.h index 1f4c3a6e070..0ddbf286d8c 100644 --- a/src/devices/cpu/asap/asap.h +++ b/src/devices/cpu/asap/asap.h @@ -81,7 +81,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/avr8/avr8.cpp b/src/devices/cpu/avr8/avr8.cpp index 01193dfa289..e047e2c16c3 100644 --- a/src/devices/cpu/avr8/avr8.cpp +++ b/src/devices/cpu/avr8/avr8.cpp @@ -876,21 +876,13 @@ void avr8_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *avr8_device::memory_space_config(address_spacenum spacenum) const +std::vector> avr8_device::memory_space_config() const { - if (spacenum == AS_PROGRAM) - { - return &m_program_config; - } - else if (spacenum == AS_DATA) - { - return &m_data_config; - } - else if (spacenum == AS_IO) - { - return &m_io_config; - } - return nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config) + }; } diff --git a/src/devices/cpu/avr8/avr8.h b/src/devices/cpu/avr8/avr8.h index cfcaec7ae45..02d64216c87 100644 --- a/src/devices/cpu/avr8/avr8.h +++ b/src/devices/cpu/avr8/avr8.h @@ -120,7 +120,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; diff --git a/src/devices/cpu/ccpu/ccpu.cpp b/src/devices/cpu/ccpu/ccpu.cpp index 5ec2ae0a7c8..bbace924e05 100644 --- a/src/devices/cpu/ccpu/ccpu.cpp +++ b/src/devices/cpu/ccpu/ccpu.cpp @@ -72,6 +72,14 @@ ccpu_cpu_device::ccpu_cpu_device(const machine_config &mconfig, const char *tag, { } +std::vector> ccpu_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config) + }; +} READ8_MEMBER( ccpu_cpu_device::read_jmi ) { diff --git a/src/devices/cpu/ccpu/ccpu.h b/src/devices/cpu/ccpu/ccpu.h index f08936e190a..4b5753c9547 100644 --- a/src/devices/cpu/ccpu/ccpu.h +++ b/src/devices/cpu/ccpu/ccpu.h @@ -72,16 +72,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override - { - switch (spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_IO: return &m_io_config; - case AS_DATA: return &m_data_config; - default: return nullptr; - } - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/clipper/clipper.cpp b/src/devices/cpu/clipper/clipper.cpp index 357cd4b3f08..ab98d1c8007 100644 --- a/src/devices/cpu/clipper/clipper.cpp +++ b/src/devices/cpu/clipper/clipper.cpp @@ -262,16 +262,12 @@ void clipper_device::execute_set_input(int inputnum, int state) * The CLIPPER has a true Harvard architecture. In the InterPro, these are tied back together * again by the MMU, which then directs the access to one of 3 address spaces: main, i/o or boot. */ -const address_space_config *clipper_device::memory_space_config(address_spacenum spacenum) const +std::vector> clipper_device::memory_space_config() const { - switch (spacenum) - { - case AS_PROGRAM: return &m_insn_config; - case AS_DATA: return &m_data_config; - default: break; - } - - return nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_insn_config), + std::make_pair(AS_DATA, &m_data_config) + }; } /* diff --git a/src/devices/cpu/clipper/clipper.h b/src/devices/cpu/clipper/clipper.h index 07f81dc8685..a3756a5b7e1 100644 --- a/src/devices/cpu/clipper/clipper.h +++ b/src/devices/cpu/clipper/clipper.h @@ -195,7 +195,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides #if 0 diff --git a/src/devices/cpu/cop400/cop400.cpp b/src/devices/cpu/cop400/cop400.cpp index 7c04e615e2a..71e7b910444 100644 --- a/src/devices/cpu/cop400/cop400.cpp +++ b/src/devices/cpu/cop400/cop400.cpp @@ -314,6 +314,14 @@ cop446c_cpu_device::cop446c_cpu_device(const machine_config &mconfig, const char { } +std::vector> cop400_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} + /*************************************************************************** diff --git a/src/devices/cpu/cop400/cop400.h b/src/devices/cpu/cop400/cop400.h index 8802df460b9..1d7b665291d 100644 --- a/src/devices/cpu/cop400/cop400.h +++ b/src/devices/cpu/cop400/cop400.h @@ -157,10 +157,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override - { - return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ); - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/cosmac/cosmac.cpp b/src/devices/cpu/cosmac/cosmac.cpp index e1b5e728c23..6fe11bf4228 100644 --- a/src/devices/cpu/cosmac/cosmac.cpp +++ b/src/devices/cpu/cosmac/cosmac.cpp @@ -408,19 +408,12 @@ void cosmac_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *cosmac_device::memory_space_config(address_spacenum spacenum) const +std::vector> cosmac_device::memory_space_config() const { - switch (spacenum) - { - case AS_PROGRAM: - return &m_program_config; - - case AS_IO: - return &m_io_config; - - default: - return nullptr; - } + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } diff --git a/src/devices/cpu/cosmac/cosmac.h b/src/devices/cpu/cosmac/cosmac.h index 9adb9e1ec4d..32c396e5a0b 100644 --- a/src/devices/cpu/cosmac/cosmac.h +++ b/src/devices/cpu/cosmac/cosmac.h @@ -229,7 +229,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/cp1610/cp1610.cpp b/src/devices/cpu/cp1610/cp1610.cpp index edaa32795e8..3b9be656b32 100644 --- a/src/devices/cpu/cp1610/cp1610.cpp +++ b/src/devices/cpu/cp1610/cp1610.cpp @@ -3401,6 +3401,12 @@ cp1610_cpu_device::cp1610_cpu_device(const machine_config &mconfig, const char * { } +std::vector> cp1610_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} void cp1610_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const { diff --git a/src/devices/cpu/cp1610/cp1610.h b/src/devices/cpu/cp1610/cp1610.h index 677e86ae0ab..22e9b06375b 100644 --- a/src/devices/cpu/cp1610/cp1610.h +++ b/src/devices/cpu/cp1610/cp1610.h @@ -54,7 +54,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.cpp b/src/devices/cpu/cubeqcpu/cubeqcpu.cpp index 46b5e871a08..cc137ff5273 100644 --- a/src/devices/cpu/cubeqcpu/cubeqcpu.cpp +++ b/src/devices/cpu/cubeqcpu/cubeqcpu.cpp @@ -83,6 +83,13 @@ cquestsnd_cpu_device::cquestsnd_cpu_device(const machine_config &mconfig, const { } +std::vector> cquestsnd_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + offs_t cquestsnd_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { @@ -121,6 +128,12 @@ cquestlin_cpu_device::cquestlin_cpu_device(const machine_config &mconfig, const { } +std::vector> cquestlin_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} offs_t cquestlin_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { @@ -362,6 +375,12 @@ void cquestrot_cpu_device::state_string_export(const device_state_entry &entry, } } +std::vector> cquestrot_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} /*************************************************************************** LINE DRAWER INITIALIZATION AND SHUTDOWN diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.h b/src/devices/cpu/cubeqcpu/cubeqcpu.h index c63893a0a42..0f1ddc56b76 100644 --- a/src/devices/cpu/cubeqcpu/cubeqcpu.h +++ b/src/devices/cpu/cubeqcpu/cubeqcpu.h @@ -84,7 +84,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 8; } @@ -184,7 +184,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; @@ -298,7 +298,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/drcuml.cpp b/src/devices/cpu/drcuml.cpp index b017b6a64c8..6bc65ef8c3e 100644 --- a/src/devices/cpu/drcuml.cpp +++ b/src/devices/cpu/drcuml.cpp @@ -88,21 +88,27 @@ drcbe_interface::drcbe_interface(drcuml_state &drcuml, drc_cache &cache, device_ m_cache(cache), m_device(device), m_state(*(drcuml_machine_state *)cache.alloc_near(sizeof(m_state))), - m_accessors((data_accessors *)cache.alloc_near(sizeof(*m_accessors) * ADDRESS_SPACES)) + m_accessors(nullptr) { // reset the machine state - memset(m_accessors, 0, sizeof(*m_accessors) * ADDRESS_SPACES); memset(&m_state, 0, sizeof(m_state)); // find the spaces and fetch memory accessors device_memory_interface *memory; if (device.interface(memory)) - for (address_spacenum spacenum = AS_0; spacenum < ARRAY_LENGTH(m_space); ++spacenum) + { + int count = memory->max_space_count(); + m_accessors = ((data_accessors *)cache.alloc_near(sizeof(*m_accessors) * count)); + memset(m_accessors, 0, sizeof(*m_accessors) * count); + m_space.resize(count, nullptr); + + for (int spacenum = 0; spacenum < count; ++spacenum) if (memory->has_space(spacenum)) { m_space[spacenum] = &memory->space(spacenum); m_space[spacenum]->accessors(m_accessors[spacenum]); } + } } diff --git a/src/devices/cpu/drcuml.h b/src/devices/cpu/drcuml.h index 0d90c9412aa..ce808595e57 100644 --- a/src/devices/cpu/drcuml.h +++ b/src/devices/cpu/drcuml.h @@ -141,12 +141,12 @@ public: protected: // internal state - drcuml_state & m_drcuml; // pointer back to our owner - drc_cache & m_cache; // pointer to the cache - device_t & m_device; // CPU device we are associated with - address_space * m_space[ADDRESS_SPACES];// pointers to CPU's address space - drcuml_machine_state & m_state; // state of the machine (in near cache) - data_accessors * m_accessors; // memory accessors (in near cache) + drcuml_state & m_drcuml; // pointer back to our owner + drc_cache & m_cache; // pointer to the cache + device_t & m_device; // CPU device we are associated with + std::vector m_space; // pointers to CPU's address space + drcuml_machine_state & m_state; // state of the machine (in near cache) + data_accessors * m_accessors; // memory accessors (in near cache) }; diff --git a/src/devices/cpu/dsp16/dsp16.cpp b/src/devices/cpu/dsp16/dsp16.cpp index fc210f818d1..fa8c3cb1d2e 100644 --- a/src/devices/cpu/dsp16/dsp16.cpp +++ b/src/devices/cpu/dsp16/dsp16.cpp @@ -201,11 +201,12 @@ void dsp16_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *dsp16_device::memory_space_config(address_spacenum spacenum) const +std::vector> dsp16_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_config : - (spacenum == AS_DATA) ? &m_data_config : - nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; } diff --git a/src/devices/cpu/dsp16/dsp16.h b/src/devices/cpu/dsp16/dsp16.h index 26768a4a862..75cda324cbc 100644 --- a/src/devices/cpu/dsp16/dsp16.h +++ b/src/devices/cpu/dsp16/dsp16.h @@ -77,7 +77,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/dsp32/dsp32.cpp b/src/devices/cpu/dsp32/dsp32.cpp index f87fa710fb8..abfdcee2953 100644 --- a/src/devices/cpu/dsp32/dsp32.cpp +++ b/src/devices/cpu/dsp32/dsp32.cpp @@ -305,9 +305,11 @@ void dsp32c_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *dsp32c_device::memory_space_config(address_spacenum spacenum) const +std::vector> dsp32c_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; } diff --git a/src/devices/cpu/dsp32/dsp32.h b/src/devices/cpu/dsp32/dsp32.h index 6efdebdbf21..1c27014a6d5 100644 --- a/src/devices/cpu/dsp32/dsp32.h +++ b/src/devices/cpu/dsp32/dsp32.h @@ -118,7 +118,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/dsp56k/dsp56k.cpp b/src/devices/cpu/dsp56k/dsp56k.cpp index e7ac94434e9..e5df7bec204 100644 --- a/src/devices/cpu/dsp56k/dsp56k.cpp +++ b/src/devices/cpu/dsp56k/dsp56k.cpp @@ -127,6 +127,14 @@ dsp56k_device::dsp56k_device(const machine_config &mconfig, const char *tag, dev { } +std::vector> dsp56k_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} + /*************************************************************************** MEMORY ACCESSORS ***************************************************************************/ diff --git a/src/devices/cpu/dsp56k/dsp56k.h b/src/devices/cpu/dsp56k/dsp56k.h index fe186684655..1cacdd75d2d 100644 --- a/src/devices/cpu/dsp56k/dsp56k.h +++ b/src/devices/cpu/dsp56k/dsp56k.h @@ -229,7 +229,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/e0c6200/e0c6200.cpp b/src/devices/cpu/e0c6200/e0c6200.cpp index 7e20728f549..2a50105187d 100644 --- a/src/devices/cpu/e0c6200/e0c6200.cpp +++ b/src/devices/cpu/e0c6200/e0c6200.cpp @@ -173,6 +173,14 @@ void e0c6200_cpu_device::do_interrupt() standard_irq_callback(m_irq_id); } +std::vector> e0c6200_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} + void e0c6200_cpu_device::execute_run() { while (m_icount > 0) diff --git a/src/devices/cpu/e0c6200/e0c6200.h b/src/devices/cpu/e0c6200/e0c6200.h index 6539abfda88..64b2d2974b6 100644 --- a/src/devices/cpu/e0c6200/e0c6200.h +++ b/src/devices/cpu/e0c6200/e0c6200.h @@ -31,7 +31,7 @@ protected: virtual void do_interrupt(); // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual u32 disasm_min_opcode_bytes() const override { return 2; } diff --git a/src/devices/cpu/e132xs/e132xs.cpp b/src/devices/cpu/e132xs/e132xs.cpp index 56ab898685b..a6ec074ce28 100644 --- a/src/devices/cpu/e132xs/e132xs.cpp +++ b/src/devices/cpu/e132xs/e132xs.cpp @@ -1880,21 +1880,15 @@ void hyperstone_device::device_stop() //------------------------------------------------- // memory_space_config - return the configuration -// of the specified address space, or nullptr if -// the space doesn't exist +// of the address spaces //------------------------------------------------- -const address_space_config *hyperstone_device::memory_space_config(address_spacenum spacenum) const +std::vector> hyperstone_device::memory_space_config() const { - if (spacenum == AS_PROGRAM) - { - return &m_program_config; - } - else if (spacenum == AS_IO) - { - return &m_io_config; - } - return nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } diff --git a/src/devices/cpu/e132xs/e132xs.h b/src/devices/cpu/e132xs/e132xs.h index 436d462fe11..23c62f70e6f 100644 --- a/src/devices/cpu/e132xs/e132xs.h +++ b/src/devices/cpu/e132xs/e132xs.h @@ -115,7 +115,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; diff --git a/src/devices/cpu/es5510/es5510.cpp b/src/devices/cpu/es5510/es5510.cpp index 204975d0abf..71150b7974b 100644 --- a/src/devices/cpu/es5510/es5510.cpp +++ b/src/devices/cpu/es5510/es5510.cpp @@ -569,8 +569,10 @@ void es5510_device::device_reset() { memset(&ram_pp, 0, sizeof(ram_t)); } -const address_space_config *es5510_device::memory_space_config(address_spacenum spacenum) const { - return nullptr; +std::vector> es5510_device::memory_space_config() const +{ + return std::vector> { + }; } uint64_t es5510_device::execute_clocks_to_cycles(uint64_t clocks) const { diff --git a/src/devices/cpu/es5510/es5510.h b/src/devices/cpu/es5510/es5510.h index d3524aa5324..acdb8f0ea05 100644 --- a/src/devices/cpu/es5510/es5510.h +++ b/src/devices/cpu/es5510/es5510.h @@ -124,7 +124,7 @@ public: protected: virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override; virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override; virtual uint32_t execute_min_cycles() const override; diff --git a/src/devices/cpu/esrip/esrip.cpp b/src/devices/cpu/esrip/esrip.cpp index 77f2401200d..ae939ffe414 100644 --- a/src/devices/cpu/esrip/esrip.cpp +++ b/src/devices/cpu/esrip/esrip.cpp @@ -338,13 +338,11 @@ void esrip_device::device_stop() // the space doesn't exist //------------------------------------------------- -const address_space_config *esrip_device::memory_space_config(address_spacenum spacenum) const +std::vector> esrip_device::memory_space_config() const { - if (spacenum == AS_PROGRAM) - { - return &m_program_config; - } - return nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + }; } diff --git a/src/devices/cpu/esrip/esrip.h b/src/devices/cpu/esrip/esrip.h index 873a8bf1580..086c2facafe 100644 --- a/src/devices/cpu/esrip/esrip.h +++ b/src/devices/cpu/esrip/esrip.h @@ -133,7 +133,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; diff --git a/src/devices/cpu/f8/f8.cpp b/src/devices/cpu/f8/f8.cpp index 1b26b4ab638..6c34cde8c6c 100644 --- a/src/devices/cpu/f8/f8.cpp +++ b/src/devices/cpu/f8/f8.cpp @@ -75,6 +75,14 @@ f8_cpu_device::f8_cpu_device(const machine_config &mconfig, const char *tag, dev memset(m_r, 0x00, sizeof(m_r)); } +std::vector> f8_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + /****************************************************************************** * ROMC (ROM cycles) diff --git a/src/devices/cpu/f8/f8.h b/src/devices/cpu/f8/f8.h index 558c0b2a468..336a86a124e 100644 --- a/src/devices/cpu/f8/f8.h +++ b/src/devices/cpu/f8/f8.h @@ -48,7 +48,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/g65816/g65816.cpp b/src/devices/cpu/g65816/g65816.cpp index b68fccce743..6eb6e0a568d 100644 --- a/src/devices/cpu/g65816/g65816.cpp +++ b/src/devices/cpu/g65816/g65816.cpp @@ -117,6 +117,14 @@ g65816_device::g65816_device(const machine_config &mconfig, device_type type, co } +std::vector> g65816_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + + static ADDRESS_MAP_START(_5a22_map, AS_PROGRAM, 8, _5a22_device) AM_RANGE(0x4202, 0x4202) AM_MIRROR(0xbf0000) AM_WRITE(wrmpya_w) AM_RANGE(0x4203, 0x4203) AM_MIRROR(0xbf0000) AM_WRITE(wrmpyb_w) diff --git a/src/devices/cpu/g65816/g65816.h b/src/devices/cpu/g65816/g65816.h index ab85e1513fc..a9a48197155 100644 --- a/src/devices/cpu/g65816/g65816.h +++ b/src/devices/cpu/g65816/g65816.h @@ -77,7 +77,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/g65816/g65816cm.h b/src/devices/cpu/g65816/g65816cm.h index d28ae770b20..11804987d86 100644 --- a/src/devices/cpu/g65816/g65816cm.h +++ b/src/devices/cpu/g65816/g65816cm.h @@ -235,7 +235,7 @@ #define NFLAG_8(A) (A) #define NFLAG_16(A) ((A)>>8) -#define CFLAG_AS_1() ((FLAG_C>>8)&1) +#define CFLAG_1() ((FLAG_C>>8)&1) diff --git a/src/devices/cpu/g65816/g65816op.h b/src/devices/cpu/g65816/g65816op.h index 9def2ae4287..dc6d86366a9 100644 --- a/src/devices/cpu/g65816/g65816op.h +++ b/src/devices/cpu/g65816/g65816op.h @@ -240,7 +240,7 @@ int32_t result, r0, r1, carry; \ r0 = REGISTER_A; \ r1 = SRC; \ - carry = CFLAG_AS_1(); \ + carry = CFLAG_1(); \ result = (r0 & 0x0f) + (r1 & 0x0f) + (carry << 0); \ if (result > 0x09) result += 0x06; \ carry = result > 0x0f; \ @@ -253,7 +253,7 @@ } \ else \ { \ - FLAG_C = tmp16 = REGISTER_A + SRC + CFLAG_AS_1(); \ + FLAG_C = tmp16 = REGISTER_A + SRC + CFLAG_1(); \ FLAG_V = VFLAG_ADD_8(SRC, REGISTER_A, FLAG_C); \ FLAG_N = FLAG_Z = REGISTER_A = MAKE_UINT_8(tmp16); \ } \ @@ -266,7 +266,7 @@ int32_t result, r0, r1, carry; \ r0 = REGISTER_A; \ r1 = SRC; \ - carry = CFLAG_AS_1(); \ + carry = CFLAG_1(); \ if (!FLAG_D) \ { \ result = r0 + r1 + carry; \ @@ -994,12 +994,12 @@ #if FLAG_SET_M #define OP_ROL() \ CLK(CLK_OP + CLK_IMPLIED); \ - FLAG_C = (REGISTER_A<<1) | CFLAG_AS_1(); \ + FLAG_C = (REGISTER_A<<1) | CFLAG_1(); \ FLAG_N = FLAG_Z = REGISTER_A = MAKE_UINT_8(FLAG_C) #else #define OP_ROL() \ CLK(CLK_OP + CLK_IMPLIED); \ - FLAG_C = (REGISTER_A<<1) | CFLAG_AS_1(); \ + FLAG_C = (REGISTER_A<<1) | CFLAG_1(); \ FLAG_Z = REGISTER_A = MAKE_UINT_16(FLAG_C); \ FLAG_N = NFLAG_16(FLAG_C); \ FLAG_C = CFLAG_16(FLAG_C) @@ -1011,14 +1011,14 @@ #define OP_ROLM(MODE) \ CLK(CLK_OP + CLK_RMW8 + CLK_W_##MODE); \ DST = EA_##MODE(); \ - FLAG_C = (read_8_##MODE(DST)<<1) | CFLAG_AS_1(); \ + FLAG_C = (read_8_##MODE(DST)<<1) | CFLAG_1(); \ FLAG_N = FLAG_Z = MAKE_UINT_8(FLAG_C); \ write_8_##MODE(DST, FLAG_Z) #else #define OP_ROLM(MODE) \ CLK(CLK_OP + CLK_RMW16 + CLK_W_##MODE); \ DST = EA_##MODE(); \ - FLAG_C = (read_16_##MODE(DST)<<1) | CFLAG_AS_1(); \ + FLAG_C = (read_16_##MODE(DST)<<1) | CFLAG_1(); \ FLAG_Z = MAKE_UINT_16(FLAG_C); \ FLAG_N = NFLAG_16(FLAG_C); \ FLAG_C = CFLAG_16(FLAG_C); \ @@ -1102,7 +1102,7 @@ if(!FLAG_D) \ { \ FLAG_C = ~FLAG_C; \ - FLAG_C = REGISTER_A - SRC - CFLAG_AS_1(); \ + FLAG_C = REGISTER_A - SRC - CFLAG_1(); \ FLAG_V = VFLAG_SUB_8(SRC, REGISTER_A, FLAG_C); \ FLAG_N = FLAG_Z = REGISTER_A = MAKE_UINT_8(FLAG_C); \ FLAG_C = ~FLAG_C; \ @@ -1114,7 +1114,7 @@ r0 = REGISTER_A; \ r1 = SRC; \ r1 ^= 0xff; \ - carry = CFLAG_AS_1(); \ + carry = CFLAG_1(); \ result = (r0 & 0x0f) + (r1 & 0x0f) + (carry << 0); \ if (result <= 0x0f) result -= 0x06; \ carry = result > 0x0f; \ @@ -1133,7 +1133,7 @@ r0 = REGISTER_A; \ r1 = SRC; \ r1 ^= 0xffff; \ - carry = CFLAG_AS_1(); \ + carry = CFLAG_1(); \ if (!FLAG_D) \ { \ result = r0 + r1 + carry; \ @@ -1450,7 +1450,7 @@ #undef OP_XCE #define OP_XCE() \ CLK(CLK_OP + CLK_IMPLIED); \ - SRC = CFLAG_AS_1(); \ + SRC = CFLAG_1(); \ FLAG_C = FLAG_E<<8; \ g65816i_set_flag_e(SRC) diff --git a/src/devices/cpu/h6280/h6280.cpp b/src/devices/cpu/h6280/h6280.cpp index fb0d2dc70a7..39d2f2d5b5a 100644 --- a/src/devices/cpu/h6280/h6280.cpp +++ b/src/devices/cpu/h6280/h6280.cpp @@ -169,6 +169,13 @@ h6280_device::h6280_device(const machine_config &mconfig, const char *tag, devic m_opcode[op] = s_opcodetable[op]; } +std::vector> h6280_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} const h6280_device::ophandler h6280_device::s_opcodetable[256] = { @@ -2564,7 +2571,7 @@ WRITE8_MEMBER( h6280_device::timer_w ) } } -bool h6280_device::memory_translate(address_spacenum spacenum, int intention, offs_t &address) +bool h6280_device::memory_translate(int spacenum, int intention, offs_t &address) { if (spacenum == AS_PROGRAM) address = translated(address); diff --git a/src/devices/cpu/h6280/h6280.h b/src/devices/cpu/h6280/h6280.h index 92bb9ca8bec..f2f1be5d86f 100644 --- a/src/devices/cpu/h6280/h6280.h +++ b/src/devices/cpu/h6280/h6280.h @@ -85,8 +85,8 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); } - virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override; + virtual std::vector> memory_space_config() const override; + virtual bool memory_translate(int spacenum, int intention, offs_t &address) override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; diff --git a/src/devices/cpu/h8/h8.cpp b/src/devices/cpu/h8/h8.cpp index 1416b4c19b5..2631e7522e8 100644 --- a/src/devices/cpu/h8/h8.cpp +++ b/src/devices/cpu/h8/h8.cpp @@ -236,11 +236,12 @@ void h8_device::internal_update() internal_update(total_cycles()); } -const address_space_config *h8_device::memory_space_config(address_spacenum spacenum) const +std::vector> h8_device::memory_space_config() const { - return - spacenum == AS_PROGRAM ? &program_config : - spacenum == AS_IO ? &io_config : nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &program_config), + std::make_pair(AS_IO, &io_config) + }; } diff --git a/src/devices/cpu/h8/h8.h b/src/devices/cpu/h8/h8.h index ac1cb6dd2fe..8cc858109f2 100644 --- a/src/devices/cpu/h8/h8.h +++ b/src/devices/cpu/h8/h8.h @@ -167,7 +167,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/hcd62121/hcd62121.cpp b/src/devices/cpu/hcd62121/hcd62121.cpp index 7d7ee5fa62e..34a5f0cc768 100644 --- a/src/devices/cpu/hcd62121/hcd62121.cpp +++ b/src/devices/cpu/hcd62121/hcd62121.cpp @@ -73,6 +73,12 @@ hcd62121_cpu_device::hcd62121_cpu_device(const machine_config &mconfig, const ch { } +std::vector> hcd62121_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} u8 hcd62121_cpu_device::read_op() { diff --git a/src/devices/cpu/hcd62121/hcd62121.h b/src/devices/cpu/hcd62121/hcd62121.h index 65f67e90bda..8b96502a6f3 100644 --- a/src/devices/cpu/hcd62121/hcd62121.h +++ b/src/devices/cpu/hcd62121/hcd62121.h @@ -54,7 +54,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_export(const device_state_entry &entry) override; diff --git a/src/devices/cpu/hd61700/hd61700.cpp b/src/devices/cpu/hd61700/hd61700.cpp index 2fc84f0eb15..110366d4268 100644 --- a/src/devices/cpu/hd61700/hd61700.cpp +++ b/src/devices/cpu/hd61700/hd61700.cpp @@ -120,6 +120,13 @@ hd61700_cpu_device::hd61700_cpu_device(const machine_config &mconfig, const char { } +std::vector> hd61700_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + //------------------------------------------------- // device_start - start up the device diff --git a/src/devices/cpu/hd61700/hd61700.h b/src/devices/cpu/hd61700/hd61700.h index 559cda51dab..dd7f78cfe37 100644 --- a/src/devices/cpu/hd61700/hd61700.h +++ b/src/devices/cpu/hd61700/hd61700.h @@ -87,7 +87,7 @@ protected: virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } diff --git a/src/devices/cpu/hmcs40/hmcs40.cpp b/src/devices/cpu/hmcs40/hmcs40.cpp index 092a6417c32..265ca25b97d 100644 --- a/src/devices/cpu/hmcs40/hmcs40.cpp +++ b/src/devices/cpu/hmcs40/hmcs40.cpp @@ -149,6 +149,13 @@ hd44828_device::hd44828_device(const machine_config &mconfig, const char *tag, d : hmcs45_cpu_device(mconfig, HD44828, tag, owner, clock, IS_CMOS) { } +std::vector> hmcs40_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} // disasm void hmcs40_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const diff --git a/src/devices/cpu/hmcs40/hmcs40.h b/src/devices/cpu/hmcs40/hmcs40.h index af933a999a7..77004de1e24 100644 --- a/src/devices/cpu/hmcs40/hmcs40.h +++ b/src/devices/cpu/hmcs40/hmcs40.h @@ -155,7 +155,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual u32 disasm_min_opcode_bytes() const override { return 2; } diff --git a/src/devices/cpu/hphybrid/hphybrid.cpp b/src/devices/cpu/hphybrid/hphybrid.cpp index c00ba6e6471..6cdfcaf945d 100644 --- a/src/devices/cpu/hphybrid/hphybrid.cpp +++ b/src/devices/cpu/hphybrid/hphybrid.cpp @@ -152,6 +152,14 @@ hp_hybrid_cpu_device::hp_hybrid_cpu_device(const machine_config &mconfig, device { } +std::vector> hp_hybrid_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + void hp_hybrid_cpu_device::device_start() { m_reg_A = 0; diff --git a/src/devices/cpu/hphybrid/hphybrid.h b/src/devices/cpu/hphybrid/hphybrid.h index 57960e01d2c..bdc096f90e7 100644 --- a/src/devices/cpu/hphybrid/hphybrid.h +++ b/src/devices/cpu/hphybrid/hphybrid.h @@ -79,7 +79,7 @@ protected: virtual uint16_t execute_no_bpc_ioc(uint16_t opcode) = 0; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/i386/i386.cpp b/src/devices/cpu/i386/i386.cpp index 69ed56d46fc..10019d0c57b 100644 --- a/src/devices/cpu/i386/i386.cpp +++ b/src/devices/cpu/i386/i386.cpp @@ -131,6 +131,13 @@ pentium4_device::pentium4_device(const machine_config &mconfig, const char *tag, set_vtlb_dynamic_entries(196); } +std::vector> i386_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} int i386_parity_table[256]; MODRM_TABLE i386_MODRM_table[256]; @@ -4005,7 +4012,7 @@ void i386_device::execute_run() /*************************************************************************/ -bool i386_device::memory_translate(address_spacenum spacenum, int intention, offs_t &address) +bool i386_device::memory_translate(int spacenum, int intention, offs_t &address) { bool ret = true; if(spacenum == AS_PROGRAM) diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h index 401619e9602..6c8ba85f6eb 100644 --- a/src/devices/cpu/i386/i386.h +++ b/src/devices/cpu/i386/i386.h @@ -59,8 +59,8 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_IO) ? &m_io_config : nullptr; } - virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override; + virtual std::vector> memory_space_config() const override; + virtual bool memory_translate(int spacenum, int intention, offs_t &address) override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/i8008/i8008.cpp b/src/devices/cpu/i8008/i8008.cpp index f5e6aa4b62e..5a17622b3e0 100644 --- a/src/devices/cpu/i8008/i8008.cpp +++ b/src/devices/cpu/i8008/i8008.cpp @@ -139,11 +139,12 @@ void i8008_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *i8008_device::memory_space_config(address_spacenum spacenum) const +std::vector> i8008_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_config : - (spacenum == AS_IO) ? &m_io_config : - nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } //------------------------------------------------- diff --git a/src/devices/cpu/i8008/i8008.h b/src/devices/cpu/i8008/i8008.h index 60b2414d61d..80d4934f460 100644 --- a/src/devices/cpu/i8008/i8008.h +++ b/src/devices/cpu/i8008/i8008.h @@ -35,7 +35,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/i8085/i8085.cpp b/src/devices/cpu/i8085/i8085.cpp index 23362ba1242..dcd27b68c39 100644 --- a/src/devices/cpu/i8085/i8085.cpp +++ b/src/devices/cpu/i8085/i8085.cpp @@ -211,6 +211,14 @@ i8080a_cpu_device::i8080a_cpu_device(const machine_config &mconfig, const char * { } +std::vector> i8085a_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + void i8085a_cpu_device::device_config_complete() { diff --git a/src/devices/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h index 96f49d9e107..6cc71ca65e5 100644 --- a/src/devices/cpu/i8085/i8085.h +++ b/src/devices/cpu/i8085/i8085.h @@ -91,7 +91,7 @@ protected: virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 2); } // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/i8089/i8089.cpp b/src/devices/cpu/i8089/i8089.cpp index 681eb630444..0be01115b6e 100644 --- a/src/devices/cpu/i8089/i8089.cpp +++ b/src/devices/cpu/i8089/i8089.cpp @@ -135,14 +135,12 @@ void i8089_device::device_reset() // space configurations //------------------------------------------------- -const address_space_config *i8089_device::memory_space_config(address_spacenum spacenum) const +std::vector> i8089_device::memory_space_config() const { - switch (spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_IO: return &m_io_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } //------------------------------------------------- diff --git a/src/devices/cpu/i8089/i8089.h b/src/devices/cpu/i8089/i8089.h index eae74ca1cb2..0bb83c5d66d 100644 --- a/src/devices/cpu/i8089/i8089.h +++ b/src/devices/cpu/i8089/i8089.h @@ -76,7 +76,7 @@ protected: int m_icount; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; address_space_config m_program_config; address_space_config m_io_config; diff --git a/src/devices/cpu/i86/i186.cpp b/src/devices/cpu/i86/i186.cpp index 0f3edc7a801..0ef1e83d732 100644 --- a/src/devices/cpu/i86/i186.cpp +++ b/src/devices/cpu/i86/i186.cpp @@ -149,16 +149,19 @@ i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, device_type { } - -const address_space_config *i80186_cpu_device::memory_space_config(address_spacenum spacenum) const +std::vector> i80186_cpu_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_IO: return &m_io_config; - case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &m_opcodes_config : nullptr; - default: return nullptr; - } + if(has_configured_map(AS_OPCODES)) + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_OPCODES, &m_opcodes_config), + std::make_pair(AS_IO, &m_io_config) + }; + else + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } uint8_t i80186_cpu_device::fetch_op() diff --git a/src/devices/cpu/i86/i186.h b/src/devices/cpu/i86/i186.h index 54ab1d20fae..91d5f1c27bc 100644 --- a/src/devices/cpu/i86/i186.h +++ b/src/devices/cpu/i86/i186.h @@ -32,7 +32,7 @@ public: DECLARE_WRITE_LINE_MEMBER(int3_w) { external_int(3, state); } // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; protected: i80186_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size); diff --git a/src/devices/cpu/i86/i286.cpp b/src/devices/cpu/i86/i286.cpp index f871a8c17cd..9d78bfc21e9 100644 --- a/src/devices/cpu/i86/i286.cpp +++ b/src/devices/cpu/i86/i286.cpp @@ -282,15 +282,19 @@ void i80286_cpu_device::device_start() m_out_shutdown_func.resolve_safe(); } -const address_space_config *i80286_cpu_device::memory_space_config(address_spacenum spacenum) const +std::vector> i80286_cpu_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_IO: return &m_io_config; - case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &m_opcodes_config : nullptr; - default: return nullptr; - } + if(has_configured_map(AS_OPCODES)) + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_OPCODES, &m_opcodes_config), + std::make_pair(AS_IO, &m_io_config) + }; + else + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } @@ -367,7 +371,7 @@ void i80286_cpu_device::state_string_export(const device_state_entry &entry, std } } -bool i80286_cpu_device::memory_translate(address_spacenum spacenum, int intention, offs_t &address) +bool i80286_cpu_device::memory_translate(int spacenum, int intention, offs_t &address) { if(spacenum == AS_PROGRAM) address &= m_amask; diff --git a/src/devices/cpu/i86/i286.h b/src/devices/cpu/i86/i286.h index e0a2c1600ed..50aa61ec293 100644 --- a/src/devices/cpu/i86/i286.h +++ b/src/devices/cpu/i86/i286.h @@ -69,7 +69,7 @@ public: i80286_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; typedef delegate a20_cb; static void static_set_a20_callback(device_t &device, a20_cb object) { downcast(device).m_a20_callback = object; } @@ -86,7 +86,7 @@ protected: virtual uint32_t execute_input_lines() const override { return 1; } virtual void execute_set_input(int inputnum, int state) override; - bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override; + bool memory_translate(int spacenum, int intention, offs_t &address) override; virtual void interrupt(int int_num, int trap = 1) override { if(trap) throw TRAP(int_num, (uint16_t)-1); else interrupt_descriptor(int_num, 0, 0); } virtual uint8_t read_port_byte(uint16_t port) override; diff --git a/src/devices/cpu/i86/i86.cpp b/src/devices/cpu/i86/i86.cpp index 2288ab63194..aa0e2ab4266 100644 --- a/src/devices/cpu/i86/i86.cpp +++ b/src/devices/cpu/i86/i86.cpp @@ -112,15 +112,19 @@ i8086_cpu_device::i8086_cpu_device(const machine_config &mconfig, device_type ty { } -const address_space_config *i8086_cpu_device::memory_space_config(address_spacenum spacenum) const +std::vector> i8086_cpu_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_IO: return &m_io_config; - case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &m_opcodes_config : nullptr; - default: return nullptr; - } + if(has_configured_map(AS_OPCODES)) + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_OPCODES, &m_opcodes_config), + std::make_pair(AS_IO, &m_io_config) + }; + else + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } uint8_t i8086_cpu_device::fetch_op() @@ -392,7 +396,7 @@ void i8086_common_cpu_device::state_string_export(const device_state_entry &entr void i8086_common_cpu_device::device_start() { m_program = &space(AS_PROGRAM); - m_opcodes = has_space(AS_DECRYPTED_OPCODES) ? &space(AS_DECRYPTED_OPCODES) : m_program; + m_opcodes = has_space(AS_OPCODES) ? &space(AS_OPCODES) : m_program; m_direct = &m_program->direct(); m_direct_opcodes = &m_opcodes->direct(); m_io = &space(AS_IO); diff --git a/src/devices/cpu/i86/i86.h b/src/devices/cpu/i86/i86.h index 626246c8dde..38b0db568ab 100644 --- a/src/devices/cpu/i86/i86.h +++ b/src/devices/cpu/i86/i86.h @@ -344,7 +344,7 @@ public: i8086_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; protected: i8086_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size); diff --git a/src/devices/cpu/i860/i860.cpp b/src/devices/cpu/i860/i860.cpp index f33eaf37fae..458b38389da 100644 --- a/src/devices/cpu/i860/i860.cpp +++ b/src/devices/cpu/i860/i860.cpp @@ -41,6 +41,12 @@ i860_cpu_device::i860_cpu_device(const machine_config &mconfig, const char *tag, { } +std::vector> i860_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} void i860_cpu_device::device_start() { diff --git a/src/devices/cpu/i860/i860.h b/src/devices/cpu/i860/i860.h index e0b86665bf2..a796723051b 100644 --- a/src/devices/cpu/i860/i860.h +++ b/src/devices/cpu/i860/i860.h @@ -73,7 +73,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_export(const device_state_entry &entry) override; diff --git a/src/devices/cpu/i960/i960.cpp b/src/devices/cpu/i960/i960.cpp index 6eedf8206a9..946c5690ca5 100644 --- a/src/devices/cpu/i960/i960.cpp +++ b/src/devices/cpu/i960/i960.cpp @@ -25,6 +25,14 @@ i960_cpu_device::i960_cpu_device(const machine_config &mconfig, const char *tag, } +std::vector> i960_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + + uint32_t i960_cpu_device::i960_read_dword_unaligned(uint32_t address) { if (!DWORD_ALIGNED(address)) diff --git a/src/devices/cpu/i960/i960.h b/src/devices/cpu/i960/i960.h index 1bc29a7c6f9..0ac065fbb68 100644 --- a/src/devices/cpu/i960/i960.h +++ b/src/devices/cpu/i960/i960.h @@ -91,7 +91,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/ie15/ie15.cpp b/src/devices/cpu/ie15/ie15.cpp index 322d2b5753d..1a70df26a49 100644 --- a/src/devices/cpu/ie15/ie15.cpp +++ b/src/devices/cpu/ie15/ie15.cpp @@ -88,11 +88,12 @@ void ie15_cpu_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *ie15_cpu_device::memory_space_config(address_spacenum spacenum) const +std::vector> ie15_cpu_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_config : - (spacenum == AS_IO) ? &m_io_config : - nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } //------------------------------------------------- diff --git a/src/devices/cpu/ie15/ie15.h b/src/devices/cpu/ie15/ie15.h index 0b4d6fbdf8f..50fbcb40f79 100644 --- a/src/devices/cpu/ie15/ie15.h +++ b/src/devices/cpu/ie15/ie15.h @@ -36,7 +36,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/jaguar/jaguar.cpp b/src/devices/cpu/jaguar/jaguar.cpp index f76bd49f1db..00055ffa6be 100644 --- a/src/devices/cpu/jaguar/jaguar.cpp +++ b/src/devices/cpu/jaguar/jaguar.cpp @@ -173,6 +173,13 @@ jaguardsp_cpu_device::jaguardsp_cpu_device(const machine_config &mconfig, const { } +std::vector> jaguar_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + void jaguar_cpu_device::update_register_banks() { diff --git a/src/devices/cpu/jaguar/jaguar.h b/src/devices/cpu/jaguar/jaguar.h index de5f296a936..6d91160edb4 100644 --- a/src/devices/cpu/jaguar/jaguar.h +++ b/src/devices/cpu/jaguar/jaguar.h @@ -115,7 +115,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/lc8670/lc8670.cpp b/src/devices/cpu/lc8670/lc8670.cpp index f35cce529c5..9b43643b4d6 100644 --- a/src/devices/cpu/lc8670/lc8670.cpp +++ b/src/devices/cpu/lc8670/lc8670.cpp @@ -392,12 +392,13 @@ void lc8670_cpu_device::state_string_export(const device_state_entry &entry, std // the space doesn't exist //------------------------------------------------- -const address_space_config * lc8670_cpu_device::memory_space_config(address_spacenum spacenum) const +std::vector> lc8670_cpu_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_config : - (spacenum == AS_DATA) ? &m_data_config : - (spacenum == AS_IO) ? &m_io_config : - nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config) + }; } //------------------------------------------------- diff --git a/src/devices/cpu/lc8670/lc8670.h b/src/devices/cpu/lc8670/lc8670.h index cec7274a567..10b4b155bc5 100644 --- a/src/devices/cpu/lc8670/lc8670.h +++ b/src/devices/cpu/lc8670/lc8670.h @@ -112,7 +112,7 @@ protected: virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } diff --git a/src/devices/cpu/lh5801/lh5801.cpp b/src/devices/cpu/lh5801/lh5801.cpp index 3ab8bd38a35..21d324474de 100644 --- a/src/devices/cpu/lh5801/lh5801.cpp +++ b/src/devices/cpu/lh5801/lh5801.cpp @@ -74,6 +74,13 @@ lh5801_cpu_device::lh5801_cpu_device(const machine_config &mconfig, const char * { } +std::vector> lh5801_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} /*************************************************************** * include the opcode macros, functions and tables diff --git a/src/devices/cpu/lh5801/lh5801.h b/src/devices/cpu/lh5801/lh5801.h index 4e7433dfb5d..50e5775de21 100644 --- a/src/devices/cpu/lh5801/lh5801.h +++ b/src/devices/cpu/lh5801/lh5801.h @@ -87,7 +87,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_IO) ? &m_io_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/lr35902/lr35902.cpp b/src/devices/cpu/lr35902/lr35902.cpp index c4b454c8719..dcfa1f34fa8 100644 --- a/src/devices/cpu/lr35902/lr35902.cpp +++ b/src/devices/cpu/lr35902/lr35902.cpp @@ -86,6 +86,12 @@ lr35902_cpu_device::lr35902_cpu_device(const machine_config &mconfig, const char { } +std::vector> lr35902_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} /****************************************************************************/ /* Memory functions */ diff --git a/src/devices/cpu/lr35902/lr35902.h b/src/devices/cpu/lr35902/lr35902.h index 120cf6836b7..9d6cc8c7149 100644 --- a/src/devices/cpu/lr35902/lr35902.h +++ b/src/devices/cpu/lr35902/lr35902.h @@ -83,7 +83,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/m37710/m37710.cpp b/src/devices/cpu/m37710/m37710.cpp index b17e9d5e2e5..754f1f0c2e9 100644 --- a/src/devices/cpu/m37710/m37710.cpp +++ b/src/devices/cpu/m37710/m37710.cpp @@ -125,6 +125,13 @@ m37710s4_device::m37710s4_device(const machine_config &mconfig, const char *tag, { } +std::vector> m37710_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} /* interrupt control mapping */ diff --git a/src/devices/cpu/m37710/m37710.h b/src/devices/cpu/m37710/m37710.h index 64a9c21b692..745f08fb42d 100644 --- a/src/devices/cpu/m37710/m37710.h +++ b/src/devices/cpu/m37710/m37710.h @@ -112,7 +112,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/m37710/m37710cm.h b/src/devices/cpu/m37710/m37710cm.h index 9924a4ee3f0..90f35d7ba4e 100644 --- a/src/devices/cpu/m37710/m37710cm.h +++ b/src/devices/cpu/m37710/m37710cm.h @@ -233,7 +233,7 @@ static inline int MAKE_INT_8(int A) {return (A & 0x80) ? A | ~0xff : A & 0xff;} #define NFLAG_8(A) (A) #define NFLAG_16(A) ((A)>>8) -#define CFLAG_AS_1() ((FLAG_C>>8)&1) +#define CFLAG_1() ((FLAG_C>>8)&1) /* ======================================================================== */ /* ========================== EFFECTIVE ADDRESSES ========================= */ diff --git a/src/devices/cpu/m37710/m37710op.h b/src/devices/cpu/m37710/m37710op.h index 268ef277f18..2e7d9c2d6d5 100644 --- a/src/devices/cpu/m37710/m37710op.h +++ b/src/devices/cpu/m37710/m37710op.h @@ -281,7 +281,7 @@ void m37710_cpu_device::m37710i_set_reg_p(uint32_t value) #define OP_ADC(MODE) \ CLK(CLK_OP + CLK_R8 + CLK_##MODE); \ SRC = OPER_8_##MODE(); \ - FLAG_C = REG_A + SRC + CFLAG_AS_1(); \ + FLAG_C = REG_A + SRC + CFLAG_1(); \ if(FLAG_D) \ { \ if((FLAG_C & 0xf) > 9) \ @@ -297,21 +297,21 @@ void m37710_cpu_device::m37710i_set_reg_p(uint32_t value) SRC = OPER_16_##MODE(); \ if(!FLAG_D) \ { \ - FLAG_C = REG_A + SRC + CFLAG_AS_1(); \ + FLAG_C = REG_A + SRC + CFLAG_1(); \ FLAG_V = VFLAG_ADD_16(SRC, REG_A, FLAG_C); \ FLAG_Z = REG_A = MAKE_UINT_16(FLAG_C); \ FLAG_N = NFLAG_16(REG_A); \ FLAG_C = CFLAG_16(FLAG_C); \ BREAKOUT; \ } \ - FLAG_C = MAKE_UINT_8(REG_A) + MAKE_UINT_8(SRC) + CFLAG_AS_1(); \ + FLAG_C = MAKE_UINT_8(REG_A) + MAKE_UINT_8(SRC) + CFLAG_1(); \ if((FLAG_C & 0xf) > 9) \ FLAG_C+=6; \ if((FLAG_C & 0xf0) > 0x90) \ FLAG_C+=0x60; \ FLAG_Z = MAKE_UINT_8(FLAG_C); \ \ - FLAG_C = MAKE_UINT_8(REG_A>>8) + MAKE_UINT_8(SRC>>8) + CFLAG_AS_1(); \ + FLAG_C = MAKE_UINT_8(REG_A>>8) + MAKE_UINT_8(SRC>>8) + CFLAG_1(); \ if((FLAG_C & 0xf) > 9) \ FLAG_C+=6; \ if((FLAG_C & 0xf0) > 0x90) \ @@ -328,7 +328,7 @@ void m37710_cpu_device::m37710i_set_reg_p(uint32_t value) #define OP_ADCB(MODE) \ CLK(CLK_OP + CLK_R8 + CLK_##MODE); \ SRC = OPER_8_##MODE(); \ - FLAG_C = REG_BA + SRC + CFLAG_AS_1(); \ + FLAG_C = REG_BA + SRC + CFLAG_1(); \ if(FLAG_D) \ { \ if((FLAG_C & 0xf) > 9) \ @@ -344,21 +344,21 @@ void m37710_cpu_device::m37710i_set_reg_p(uint32_t value) SRC = OPER_16_##MODE(); \ if(!FLAG_D) \ { \ - FLAG_C = REG_BA + SRC + CFLAG_AS_1(); \ + FLAG_C = REG_BA + SRC + CFLAG_1(); \ FLAG_V = VFLAG_ADD_16(SRC, REG_BA, FLAG_C); \ FLAG_Z = REG_BA = MAKE_UINT_16(FLAG_C); \ FLAG_N = NFLAG_16(REG_BA); \ FLAG_C = CFLAG_16(FLAG_C); \ BREAKOUT; \ } \ - FLAG_C = MAKE_UINT_8(REG_BA) + MAKE_UINT_8(SRC) + CFLAG_AS_1(); \ + FLAG_C = MAKE_UINT_8(REG_BA) + MAKE_UINT_8(SRC) + CFLAG_1(); \ if((FLAG_C & 0xf) > 9) \ FLAG_C+=6; \ if((FLAG_C & 0xf0) > 0x90) \ FLAG_C+=0x60; \ FLAG_Z = MAKE_UINT_8(FLAG_C); \ \ - FLAG_C = MAKE_UINT_8(REG_BA>>8) + MAKE_UINT_8(SRC>>8) + CFLAG_AS_1(); \ + FLAG_C = MAKE_UINT_8(REG_BA>>8) + MAKE_UINT_8(SRC>>8) + CFLAG_1(); \ if((FLAG_C & 0xf) > 9) \ FLAG_C+=6; \ if((FLAG_C & 0xf0) > 0x90) \ @@ -1244,12 +1244,12 @@ void m37710_cpu_device::m37710i_set_reg_p(uint32_t value) #if FLAG_SET_M #define OP_ROL() \ CLK(CLK_OP + CLK_IMPLIED); \ - FLAG_C = (REG_A<<1) | CFLAG_AS_1(); \ + FLAG_C = (REG_A<<1) | CFLAG_1(); \ FLAG_N = FLAG_Z = REG_A = MAKE_UINT_8(FLAG_C) #else #define OP_ROL() \ CLK(CLK_OP + CLK_IMPLIED); \ - FLAG_C = (REG_A<<1) | CFLAG_AS_1(); \ + FLAG_C = (REG_A<<1) | CFLAG_1(); \ FLAG_Z = REG_A = MAKE_UINT_16(FLAG_C); \ FLAG_N = NFLAG_16(FLAG_C); \ FLAG_C = CFLAG_16(FLAG_C) @@ -1260,12 +1260,12 @@ void m37710_cpu_device::m37710i_set_reg_p(uint32_t value) #if FLAG_SET_M #define OP_ROLB() \ CLK(CLK_OP + CLK_IMPLIED); \ - FLAG_C = (REG_BA<<1) | CFLAG_AS_1(); \ + FLAG_C = (REG_BA<<1) | CFLAG_1(); \ FLAG_N = FLAG_Z = REG_BA = MAKE_UINT_8(FLAG_C) #else #define OP_ROLB() \ CLK(CLK_OP + CLK_IMPLIED); \ - FLAG_C = (REG_BA<<1) | CFLAG_AS_1(); \ + FLAG_C = (REG_BA<<1) | CFLAG_1(); \ FLAG_Z = REG_BA = MAKE_UINT_16(FLAG_C); \ FLAG_N = NFLAG_16(FLAG_C); \ FLAG_C = CFLAG_16(FLAG_C) @@ -1287,14 +1287,14 @@ void m37710_cpu_device::m37710i_set_reg_p(uint32_t value) #define OP_ROLM(MODE) \ CLK(CLK_OP + CLK_RMW8 + CLK_W_##MODE); \ DST = EA_##MODE(); \ - FLAG_C = (read_8_##MODE(DST)<<1) | CFLAG_AS_1(); \ + FLAG_C = (read_8_##MODE(DST)<<1) | CFLAG_1(); \ FLAG_N = FLAG_Z = MAKE_UINT_8(FLAG_C); \ write_8_##MODE(DST, FLAG_Z) #else #define OP_ROLM(MODE) \ CLK(CLK_OP + CLK_RMW16 + CLK_W_##MODE); \ DST = EA_##MODE(); \ - FLAG_C = (read_16_##MODE(DST)<<1) | CFLAG_AS_1(); \ + FLAG_C = (read_16_##MODE(DST)<<1) | CFLAG_1(); \ FLAG_Z = MAKE_UINT_16(FLAG_C); \ FLAG_N = NFLAG_16(FLAG_C); \ FLAG_C = CFLAG_16(FLAG_C); \ @@ -1389,13 +1389,13 @@ void m37710_cpu_device::m37710i_set_reg_p(uint32_t value) FLAG_C = ~FLAG_C; \ if(!FLAG_D) \ { \ - FLAG_C = REG_A - SRC - CFLAG_AS_1(); \ + FLAG_C = REG_A - SRC - CFLAG_1(); \ FLAG_V = VFLAG_SUB_8(SRC, REG_A, FLAG_C); \ FLAG_N = FLAG_Z = REG_A = MAKE_UINT_8(FLAG_C); \ FLAG_C = ~FLAG_C; \ BREAKOUT; \ } \ - DST = CFLAG_AS_1(); \ + DST = CFLAG_1(); \ FLAG_C = REG_A - SRC - DST; \ FLAG_V = VFLAG_SUB_8(SRC, REG_A, FLAG_C); \ if((FLAG_C & 0xf) > 9) \ @@ -1411,21 +1411,21 @@ void m37710_cpu_device::m37710i_set_reg_p(uint32_t value) FLAG_C = ~FLAG_C; \ if(!FLAG_D) \ { \ - FLAG_C = REG_A - SRC - CFLAG_AS_1(); \ + FLAG_C = REG_A - SRC - CFLAG_1(); \ FLAG_V = VFLAG_SUB_16(SRC, REG_A, FLAG_C); \ FLAG_Z = REG_A = MAKE_UINT_16(FLAG_C); \ FLAG_N = NFLAG_16(REG_A); \ FLAG_C = ~CFLAG_16(FLAG_C); \ BREAKOUT; \ } \ - DST = CFLAG_AS_1(); \ + DST = CFLAG_1(); \ FLAG_C = MAKE_UINT_8(REG_A) - MAKE_UINT_8(SRC) - DST; \ if((FLAG_C & 0xf) > 9) \ FLAG_C-=6; \ if((FLAG_C & 0xf0) > 0x90) \ FLAG_C-=0x60; \ FLAG_Z = MAKE_UINT_8(FLAG_C); \ - DST = CFLAG_AS_1(); \ + DST = CFLAG_1(); \ FLAG_C = MAKE_UINT_8(REG_A>>8) - MAKE_UINT_8(SRC>>8) - DST; \ if((FLAG_C & 0xf) > 9) \ FLAG_C-=6; \ @@ -1448,13 +1448,13 @@ void m37710_cpu_device::m37710i_set_reg_p(uint32_t value) FLAG_C = ~FLAG_C; \ if(!FLAG_D) \ { \ - FLAG_C = REG_BA - SRC - CFLAG_AS_1(); \ + FLAG_C = REG_BA - SRC - CFLAG_1(); \ FLAG_V = VFLAG_SUB_8(SRC, REG_BA, FLAG_C); \ FLAG_N = FLAG_Z = REG_BA = MAKE_UINT_8(FLAG_C); \ FLAG_C = ~FLAG_C; \ BREAKOUT; \ } \ - DST = CFLAG_AS_1(); \ + DST = CFLAG_1(); \ FLAG_C = REG_BA - SRC - DST; \ FLAG_V = VFLAG_SUB_8(SRC, REG_BA, FLAG_C); \ if((FLAG_C & 0xf) > 9) \ @@ -1470,21 +1470,21 @@ void m37710_cpu_device::m37710i_set_reg_p(uint32_t value) FLAG_C = ~FLAG_C; \ if(!FLAG_D) \ { \ - FLAG_C = REG_BA - SRC - CFLAG_AS_1(); \ + FLAG_C = REG_BA - SRC - CFLAG_1(); \ FLAG_V = VFLAG_SUB_16(SRC, REG_BA, FLAG_C); \ FLAG_Z = REG_BA = MAKE_UINT_16(FLAG_C); \ FLAG_N = NFLAG_16(REG_BA); \ FLAG_C = ~CFLAG_16(FLAG_C); \ BREAKOUT; \ } \ - DST = CFLAG_AS_1(); \ + DST = CFLAG_1(); \ FLAG_C = MAKE_UINT_8(REG_BA) - MAKE_UINT_8(SRC) - DST; \ if((FLAG_C & 0xf) > 9) \ FLAG_C-=6; \ if((FLAG_C & 0xf0) > 0x90) \ FLAG_C-=0x60; \ FLAG_Z = MAKE_UINT_8(FLAG_C); \ - DST = CFLAG_AS_1(); \ + DST = CFLAG_1(); \ FLAG_C = MAKE_UINT_8(REG_A>>8) - MAKE_UINT_8(SRC>>8) - DST; \ if((FLAG_C & 0xf) > 9) \ FLAG_C-=6; \ diff --git a/src/devices/cpu/m6502/deco16.cpp b/src/devices/cpu/m6502/deco16.cpp index 66404758eb5..6d80bb6b5ab 100644 --- a/src/devices/cpu/m6502/deco16.cpp +++ b/src/devices/cpu/m6502/deco16.cpp @@ -40,15 +40,19 @@ void deco16_device::device_start() io = &space(AS_IO); } -const address_space_config *deco16_device::memory_space_config(address_spacenum spacenum) const +std::vector> deco16_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &program_config; - case AS_IO: return &io_config; - case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &sprogram_config : nullptr; - default: return nullptr; - } + if(has_configured_map(AS_OPCODES)) + return std::vector> { + std::make_pair(AS_PROGRAM, &program_config), + std::make_pair(AS_OPCODES, &sprogram_config), + std::make_pair(AS_IO, &io_config) + }; + else + return std::vector> { + std::make_pair(AS_PROGRAM, &program_config), + std::make_pair(AS_IO, &io_config) + }; } #include "cpu/m6502/deco16.hxx" diff --git a/src/devices/cpu/m6502/deco16.h b/src/devices/cpu/m6502/deco16.h index 73c2314d945..065937ea331 100644 --- a/src/devices/cpu/m6502/deco16.h +++ b/src/devices/cpu/m6502/deco16.h @@ -27,7 +27,7 @@ protected: address_space *io; address_space_config io_config; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; virtual void device_start() override; #define O(o) void o ## _full(); void o ## _partial() diff --git a/src/devices/cpu/m6502/m3745x.cpp b/src/devices/cpu/m6502/m3745x.cpp index d92e2835e57..62a4c3f655c 100644 --- a/src/devices/cpu/m6502/m3745x.cpp +++ b/src/devices/cpu/m6502/m3745x.cpp @@ -112,6 +112,12 @@ void m3745x_device::device_start() m_last_all_ints = 0; } +std::vector> m3745x_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} //------------------------------------------------- // device_reset - device-specific reset diff --git a/src/devices/cpu/m6502/m3745x.h b/src/devices/cpu/m6502/m3745x.h index 2b592ae4e9e..a9be38254f2 100644 --- a/src/devices/cpu/m6502/m3745x.h +++ b/src/devices/cpu/m6502/m3745x.h @@ -125,7 +125,7 @@ protected: virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void execute_set_input(int inputnum, int state) override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; void send_port(address_space &space, uint8_t offset, uint8_t data); uint8_t read_port(uint8_t offset); diff --git a/src/devices/cpu/m6502/m4510.cpp b/src/devices/cpu/m6502/m4510.cpp index fb84a15112a..852d3e5807a 100644 --- a/src/devices/cpu/m6502/m4510.cpp +++ b/src/devices/cpu/m6502/m4510.cpp @@ -56,7 +56,7 @@ void m4510_device::device_reset() m65ce02_device::device_reset(); } -bool m4510_device::memory_translate(address_spacenum spacenum, int intention, offs_t &address) +bool m4510_device::memory_translate(int spacenum, int intention, offs_t &address) { if (spacenum == AS_PROGRAM) { diff --git a/src/devices/cpu/m6502/m4510.h b/src/devices/cpu/m6502/m4510.h index 4b25f0c9c26..b093c8aeb56 100644 --- a/src/devices/cpu/m6502/m4510.h +++ b/src/devices/cpu/m6502/m4510.h @@ -54,7 +54,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; - virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override; + virtual bool memory_translate(int spacenum, int intention, offs_t &address) override; inline uint32_t map(uint16_t adr) { if(map_enable & (1 << (adr >> 13))) { diff --git a/src/devices/cpu/m6502/m5074x.h b/src/devices/cpu/m6502/m5074x.h index 635c0d9f552..3947cb6d6f8 100644 --- a/src/devices/cpu/m6502/m5074x.h +++ b/src/devices/cpu/m6502/m5074x.h @@ -101,7 +101,7 @@ protected: virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void execute_set_input(int inputnum, int state) override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; void send_port(address_space &space, uint8_t offset, uint8_t data); uint8_t read_port(uint8_t offset); diff --git a/src/devices/cpu/m6502/m6502.cpp b/src/devices/cpu/m6502/m6502.cpp index ea3f2662fca..3e00e8b53da 100644 --- a/src/devices/cpu/m6502/m6502.cpp +++ b/src/devices/cpu/m6502/m6502.cpp @@ -42,7 +42,7 @@ void m6502_device::device_start() void m6502_device::init() { mintf->program = &space(AS_PROGRAM); - mintf->sprogram = has_space(AS_DECRYPTED_OPCODES) ? &space(AS_DECRYPTED_OPCODES) : mintf->program; + mintf->sprogram = has_space(AS_OPCODES) ? &space(AS_OPCODES) : mintf->program; mintf->direct = &mintf->program->direct(); mintf->sdirect = &mintf->sprogram->direct(); @@ -402,14 +402,17 @@ void m6502_device::execute_set_input(int inputnum, int state) } -const address_space_config *m6502_device::memory_space_config(address_spacenum spacenum) const +std::vector> m6502_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &program_config; - case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &sprogram_config : nullptr; - default: return nullptr; - } + if(has_configured_map(AS_OPCODES)) + return std::vector> { + std::make_pair(AS_PROGRAM, &program_config), + std::make_pair(AS_OPCODES, &sprogram_config) + }; + else + return std::vector> { + std::make_pair(AS_PROGRAM, &program_config) + }; } diff --git a/src/devices/cpu/m6502/m6502.h b/src/devices/cpu/m6502/m6502.h index d764e906ab8..d636d5e9765 100644 --- a/src/devices/cpu/m6502/m6502.h +++ b/src/devices/cpu/m6502/m6502.h @@ -137,7 +137,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/m6502/n2a03.cpp b/src/devices/cpu/m6502/n2a03.cpp index 40cdba9f44a..7548089cc15 100644 --- a/src/devices/cpu/m6502/n2a03.cpp +++ b/src/devices/cpu/m6502/n2a03.cpp @@ -119,14 +119,17 @@ void n2a03_device::device_clock_changed() m_apu->set_unscaled_clock(clock()); } -const address_space_config *n2a03_device::memory_space_config(address_spacenum spacenum) const +std::vector> n2a03_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &sprogram_config : nullptr; - default: return nullptr; - } + if(has_configured_map(AS_OPCODES)) + return std::vector> { + std::make_pair(AS_PROGRAM, &program_config), + std::make_pair(AS_OPCODES, &sprogram_config) + }; + else + return std::vector> { + std::make_pair(AS_PROGRAM, &program_config) + }; } diff --git a/src/devices/cpu/m6502/n2a03.h b/src/devices/cpu/m6502/n2a03.h index d27b0904d5d..da378fc3dbd 100644 --- a/src/devices/cpu/m6502/n2a03.h +++ b/src/devices/cpu/m6502/n2a03.h @@ -66,7 +66,7 @@ protected: #undef O virtual void device_add_mconfig(machine_config &config) override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; private: address_space_config m_program_config; diff --git a/src/devices/cpu/m6800/m6800.cpp b/src/devices/cpu/m6800/m6800.cpp index fd7242b0d16..f84423939fa 100644 --- a/src/devices/cpu/m6800/m6800.cpp +++ b/src/devices/cpu/m6800/m6800.cpp @@ -358,17 +358,19 @@ nsc8105_cpu_device::nsc8105_cpu_device(const machine_config &mconfig, const char { } -const address_space_config *m6800_cpu_device::memory_space_config(address_spacenum spacenum) const +std::vector> m6800_cpu_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &m_decrypted_opcodes_config : nullptr; - default: return nullptr; - } + if(has_configured_map(AS_OPCODES)) + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_OPCODES, &m_decrypted_opcodes_config) + }; + else + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; } - uint32_t m6800_cpu_device::RM16(uint32_t Addr ) { uint32_t result = RM(Addr) << 8; @@ -459,7 +461,7 @@ void m6800_cpu_device::device_start() { m_program = &space(AS_PROGRAM); m_direct = &m_program->direct(); - m_decrypted_opcodes = has_space(AS_DECRYPTED_OPCODES) ? &space(AS_DECRYPTED_OPCODES) : m_program; + m_decrypted_opcodes = has_space(AS_OPCODES) ? &space(AS_OPCODES) : m_program; m_decrypted_opcodes_direct = &m_decrypted_opcodes->direct(); m_pc.d = 0; diff --git a/src/devices/cpu/m6800/m6800.h b/src/devices/cpu/m6800/m6800.h index 902f6bc2932..09ac5b86c98 100644 --- a/src/devices/cpu/m6800/m6800.h +++ b/src/devices/cpu/m6800/m6800.h @@ -59,7 +59,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/m6800/m6801.cpp b/src/devices/cpu/m6800/m6801.cpp index 0ef6439cb83..0f806c448fa 100644 --- a/src/devices/cpu/m6800/m6801.cpp +++ b/src/devices/cpu/m6800/m6801.cpp @@ -294,16 +294,13 @@ hd6303y_cpu_device::hd6303y_cpu_device(const machine_config &mconfig, const char { } -const address_space_config *m6801_cpu_device::memory_space_config(address_spacenum spacenum) const +std::vector> m6801_cpu_device::memory_space_config() const { - switch (spacenum) - { - case AS_IO: return &m_io_config; - default: return m6800_cpu_device::memory_space_config(spacenum); - } + auto r = m6800_cpu_device::memory_space_config(); + r.emplace_back(std::make_pair(AS_IO, &m_io_config)); + return r; } - void m6801_cpu_device::m6800_check_irq2() { if ((m_tcsr & (TCSR_EICI|TCSR_ICF)) == (TCSR_EICI|TCSR_ICF)) diff --git a/src/devices/cpu/m6800/m6801.h b/src/devices/cpu/m6800/m6801.h index 23bc7b4a28a..2211a4f0421 100644 --- a/src/devices/cpu/m6800/m6801.h +++ b/src/devices/cpu/m6800/m6801.h @@ -84,7 +84,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; diff --git a/src/devices/cpu/m68000/m68000.h b/src/devices/cpu/m68000/m68000.h index c3aae63b454..0ad63651d6a 100644 --- a/src/devices/cpu/m68000/m68000.h +++ b/src/devices/cpu/m68000/m68000.h @@ -149,7 +149,7 @@ public: virtual void device_stop() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // address spaces const address_space_config m_program_config, m_oprogram_config; @@ -395,7 +395,7 @@ public: virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; // device_memory_interface overrides - virtual bool memory_translate(address_spacenum space, int intention, offs_t &address) override; + virtual bool memory_translate(int space, int intention, offs_t &address) override; }; @@ -596,7 +596,7 @@ public: virtual uint32_t execute_default_irq_vector() const override { return -1; }; - virtual bool memory_translate(address_spacenum space, int intention, offs_t &address) override; + virtual bool memory_translate(int space, int intention, offs_t &address) override; // device-level overrides virtual void device_start() override; diff --git a/src/devices/cpu/m68000/m68k_in.cpp b/src/devices/cpu/m68000/m68k_in.cpp index 835054753fa..dd58233b747 100644 --- a/src/devices/cpu/m68000/m68k_in.cpp +++ b/src/devices/cpu/m68000/m68k_in.cpp @@ -928,7 +928,7 @@ M68KMAKE_OP(abcd, 8, rr, .) uint32_t* r_dst = &DX(mc68kcpu); uint32_t src = DY(mc68kcpu); uint32_t dst = *r_dst; - uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu); + uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1(mc68kcpu); (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */ @@ -954,7 +954,7 @@ M68KMAKE_OP(abcd, 8, mm, ax7) uint32_t src = OPER_AY_PD_8(mc68kcpu); uint32_t ea = EA_A7_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu); + uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1(mc68kcpu); (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */ @@ -980,7 +980,7 @@ M68KMAKE_OP(abcd, 8, mm, ay7) uint32_t src = OPER_A7_PD_8(mc68kcpu); uint32_t ea = EA_AX_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu); + uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1(mc68kcpu); (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */ @@ -1006,7 +1006,7 @@ M68KMAKE_OP(abcd, 8, mm, axy7) uint32_t src = OPER_A7_PD_8(mc68kcpu); uint32_t ea = EA_A7_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu); + uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1(mc68kcpu); (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */ @@ -1032,7 +1032,7 @@ M68KMAKE_OP(abcd, 8, mm, .) uint32_t src = OPER_AY_PD_8(mc68kcpu); uint32_t ea = EA_AX_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu); + uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1(mc68kcpu); (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */ @@ -1493,7 +1493,7 @@ M68KMAKE_OP(addx, 8, rr, .) uint32_t* r_dst = &DX(mc68kcpu); uint32_t src = MASK_OUT_ABOVE_8(DY(mc68kcpu)); uint32_t dst = MASK_OUT_ABOVE_8(*r_dst); - uint32_t res = src + dst + XFLAG_AS_1(mc68kcpu); + uint32_t res = src + dst + XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_8(res); (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res); @@ -1511,7 +1511,7 @@ M68KMAKE_OP(addx, 16, rr, .) uint32_t* r_dst = &DX(mc68kcpu); uint32_t src = MASK_OUT_ABOVE_16(DY(mc68kcpu)); uint32_t dst = MASK_OUT_ABOVE_16(*r_dst); - uint32_t res = src + dst + XFLAG_AS_1(mc68kcpu); + uint32_t res = src + dst + XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_16(res); (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res); @@ -1529,7 +1529,7 @@ M68KMAKE_OP(addx, 32, rr, .) uint32_t* r_dst = &DX(mc68kcpu); uint32_t src = DY(mc68kcpu); uint32_t dst = *r_dst; - uint32_t res = src + dst + XFLAG_AS_1(mc68kcpu); + uint32_t res = src + dst + XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_32(res); (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res); @@ -1547,7 +1547,7 @@ M68KMAKE_OP(addx, 8, mm, ax7) uint32_t src = OPER_AY_PD_8(mc68kcpu); uint32_t ea = EA_A7_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = src + dst + XFLAG_AS_1(mc68kcpu); + uint32_t res = src + dst + XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_8(res); (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res); @@ -1565,7 +1565,7 @@ M68KMAKE_OP(addx, 8, mm, ay7) uint32_t src = OPER_A7_PD_8(mc68kcpu); uint32_t ea = EA_AX_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = src + dst + XFLAG_AS_1(mc68kcpu); + uint32_t res = src + dst + XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_8(res); (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res); @@ -1583,7 +1583,7 @@ M68KMAKE_OP(addx, 8, mm, axy7) uint32_t src = OPER_A7_PD_8(mc68kcpu); uint32_t ea = EA_A7_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = src + dst + XFLAG_AS_1(mc68kcpu); + uint32_t res = src + dst + XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_8(res); (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res); @@ -1601,7 +1601,7 @@ M68KMAKE_OP(addx, 8, mm, .) uint32_t src = OPER_AY_PD_8(mc68kcpu); uint32_t ea = EA_AX_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = src + dst + XFLAG_AS_1(mc68kcpu); + uint32_t res = src + dst + XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_8(res); (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res); @@ -1619,7 +1619,7 @@ M68KMAKE_OP(addx, 16, mm, .) uint32_t src = OPER_AY_PD_16(mc68kcpu); uint32_t ea = EA_AX_PD_16(mc68kcpu); uint32_t dst = m68ki_read_16((mc68kcpu), ea); - uint32_t res = src + dst + XFLAG_AS_1(mc68kcpu); + uint32_t res = src + dst + XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_16(res); (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res); @@ -1637,7 +1637,7 @@ M68KMAKE_OP(addx, 32, mm, .) uint32_t src = OPER_AY_PD_32(mc68kcpu); uint32_t ea = EA_AX_PD_32(mc68kcpu); uint32_t dst = m68ki_read_32((mc68kcpu), ea); - uint32_t res = src + dst + XFLAG_AS_1(mc68kcpu); + uint32_t res = src + dst + XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_32(res); (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res); @@ -7606,7 +7606,7 @@ M68KMAKE_OP(nbcd, 8, ., d) { uint32_t* r_dst = &DY(mc68kcpu); uint32_t dst = *r_dst; - uint32_t res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu)); + uint32_t res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_1(mc68kcpu)); if(res != 0x9a) { @@ -7639,7 +7639,7 @@ M68KMAKE_OP(nbcd, 8, ., .) { uint32_t ea = M68KMAKE_GET_EA_AY_8; uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu)); + uint32_t res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_1(mc68kcpu)); if(res != 0x9a) { @@ -7758,7 +7758,7 @@ M68KMAKE_OP(neg, 32, ., .) M68KMAKE_OP(negx, 8, ., d) { uint32_t* r_dst = &DY(mc68kcpu); - uint32_t res = 0 - MASK_OUT_ABOVE_8(*r_dst) - XFLAG_AS_1(mc68kcpu); + uint32_t res = 0 - MASK_OUT_ABOVE_8(*r_dst) - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_8(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res); @@ -7775,7 +7775,7 @@ M68KMAKE_OP(negx, 8, ., .) { uint32_t ea = M68KMAKE_GET_EA_AY_8; uint32_t src = m68ki_read_8((mc68kcpu), ea); - uint32_t res = 0 - src - XFLAG_AS_1(mc68kcpu); + uint32_t res = 0 - src - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_8(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res); @@ -7791,7 +7791,7 @@ M68KMAKE_OP(negx, 8, ., .) M68KMAKE_OP(negx, 16, ., d) { uint32_t* r_dst = &DY(mc68kcpu); - uint32_t res = 0 - MASK_OUT_ABOVE_16(*r_dst) - XFLAG_AS_1(mc68kcpu); + uint32_t res = 0 - MASK_OUT_ABOVE_16(*r_dst) - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_16(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res); @@ -7808,7 +7808,7 @@ M68KMAKE_OP(negx, 16, ., .) { uint32_t ea = M68KMAKE_GET_EA_AY_16; uint32_t src = m68ki_read_16((mc68kcpu), ea); - uint32_t res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu); + uint32_t res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_16(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res); @@ -7824,7 +7824,7 @@ M68KMAKE_OP(negx, 16, ., .) M68KMAKE_OP(negx, 32, ., d) { uint32_t* r_dst = &DY(mc68kcpu); - uint32_t res = 0 - MASK_OUT_ABOVE_32(*r_dst) - XFLAG_AS_1(mc68kcpu); + uint32_t res = 0 - MASK_OUT_ABOVE_32(*r_dst) - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_32(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(*r_dst, 0, res); @@ -7841,7 +7841,7 @@ M68KMAKE_OP(negx, 32, ., .) { uint32_t ea = M68KMAKE_GET_EA_AY_32; uint32_t src = m68ki_read_32((mc68kcpu), ea); - uint32_t res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu); + uint32_t res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_32(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res); @@ -8624,7 +8624,7 @@ M68KMAKE_OP(roxr, 8, s, .) uint32_t* r_dst = &DY(mc68kcpu); uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1; uint32_t src = MASK_OUT_ABOVE_8(*r_dst); - uint32_t res = ROR_9(src | (XFLAG_AS_1(mc68kcpu) << 8), shift); + uint32_t res = ROR_9(src | (XFLAG_1(mc68kcpu) << 8), shift); if(shift != 0) (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift; @@ -8645,7 +8645,7 @@ M68KMAKE_OP(roxr, 16, s, .) uint32_t* r_dst = &DY(mc68kcpu); uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1; uint32_t src = MASK_OUT_ABOVE_16(*r_dst); - uint32_t res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), shift); + uint32_t res = ROR_17(src | (XFLAG_1(mc68kcpu) << 16), shift); if(shift != 0) (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift; @@ -8666,7 +8666,7 @@ M68KMAKE_OP(roxr, 32, s, .) uint32_t* r_dst = &DY(mc68kcpu); uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1; uint64_t src = *r_dst; - uint64_t res = src | (((uint64_t)XFLAG_AS_1(mc68kcpu)) << 32); + uint64_t res = src | (((uint64_t)XFLAG_1(mc68kcpu)) << 32); if(shift != 0) (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift; @@ -8693,7 +8693,7 @@ M68KMAKE_OP(roxr, 8, r, .) { uint32_t shift = orig_shift % 9; uint32_t src = MASK_OUT_ABOVE_8(*r_dst); - uint32_t res = ROR_9(src | (XFLAG_AS_1(mc68kcpu) << 8), shift); + uint32_t res = ROR_9(src | (XFLAG_1(mc68kcpu) << 8), shift); (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift; @@ -8723,7 +8723,7 @@ M68KMAKE_OP(roxr, 16, r, .) { uint32_t shift = orig_shift % 17; uint32_t src = MASK_OUT_ABOVE_16(*r_dst); - uint32_t res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), shift); + uint32_t res = ROR_17(src | (XFLAG_1(mc68kcpu) << 16), shift); (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift; @@ -8753,7 +8753,7 @@ M68KMAKE_OP(roxr, 32, r, .) { uint32_t shift = orig_shift % 33; uint64_t src = *r_dst; - uint64_t res = src | (((uint64_t)XFLAG_AS_1(mc68kcpu)) << 32); + uint64_t res = src | (((uint64_t)XFLAG_1(mc68kcpu)) << 32); res = ROR_33_64(res, shift); @@ -8780,7 +8780,7 @@ M68KMAKE_OP(roxr, 16, ., .) { uint32_t ea = M68KMAKE_GET_EA_AY_16; uint32_t src = m68ki_read_16((mc68kcpu), ea); - uint32_t res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1); + uint32_t res = ROR_17(src | (XFLAG_1(mc68kcpu) << 16), 1); (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8; res = MASK_OUT_ABOVE_16(res); @@ -8798,7 +8798,7 @@ M68KMAKE_OP(roxl, 8, s, .) uint32_t* r_dst = &DY(mc68kcpu); uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1; uint32_t src = MASK_OUT_ABOVE_8(*r_dst); - uint32_t res = ROL_9(src | (XFLAG_AS_1(mc68kcpu) << 8), shift); + uint32_t res = ROL_9(src | (XFLAG_1(mc68kcpu) << 8), shift); if(shift != 0) (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift; @@ -8819,7 +8819,7 @@ M68KMAKE_OP(roxl, 16, s, .) uint32_t* r_dst = &DY(mc68kcpu); uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1; uint32_t src = MASK_OUT_ABOVE_16(*r_dst); - uint32_t res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), shift); + uint32_t res = ROL_17(src | (XFLAG_1(mc68kcpu) << 16), shift); if(shift != 0) (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift; @@ -8840,7 +8840,7 @@ M68KMAKE_OP(roxl, 32, s, .) uint32_t* r_dst = &DY(mc68kcpu); uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1; uint64_t src = *r_dst; - uint64_t res = src | (((uint64_t)XFLAG_AS_1(mc68kcpu)) << 32); + uint64_t res = src | (((uint64_t)XFLAG_1(mc68kcpu)) << 32); if(shift != 0) (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift; @@ -8868,7 +8868,7 @@ M68KMAKE_OP(roxl, 8, r, .) { uint32_t shift = orig_shift % 9; uint32_t src = MASK_OUT_ABOVE_8(*r_dst); - uint32_t res = ROL_9(src | (XFLAG_AS_1(mc68kcpu) << 8), shift); + uint32_t res = ROL_9(src | (XFLAG_1(mc68kcpu) << 8), shift); (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift; @@ -8898,7 +8898,7 @@ M68KMAKE_OP(roxl, 16, r, .) { uint32_t shift = orig_shift % 17; uint32_t src = MASK_OUT_ABOVE_16(*r_dst); - uint32_t res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), shift); + uint32_t res = ROL_17(src | (XFLAG_1(mc68kcpu) << 16), shift); (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift; @@ -8928,7 +8928,7 @@ M68KMAKE_OP(roxl, 32, r, .) { uint32_t shift = orig_shift % 33; uint64_t src = *r_dst; - uint64_t res = src | (((uint64_t)XFLAG_AS_1(mc68kcpu)) << 32); + uint64_t res = src | (((uint64_t)XFLAG_1(mc68kcpu)) << 32); res = ROL_33_64(res, shift); @@ -8955,7 +8955,7 @@ M68KMAKE_OP(roxl, 16, ., .) { uint32_t ea = M68KMAKE_GET_EA_AY_16; uint32_t src = m68ki_read_16((mc68kcpu), ea); - uint32_t res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1); + uint32_t res = ROL_17(src | (XFLAG_1(mc68kcpu) << 16), 1); (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8; res = MASK_OUT_ABOVE_16(res); @@ -9180,7 +9180,7 @@ M68KMAKE_OP(sbcd, 8, rr, .) uint32_t* r_dst = &DX(mc68kcpu); uint32_t src = DY(mc68kcpu); uint32_t dst = *r_dst; - uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu); + uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1(mc68kcpu); // (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */ (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to assume cleared. */ @@ -9212,7 +9212,7 @@ M68KMAKE_OP(sbcd, 8, mm, ax7) uint32_t src = OPER_AY_PD_8(mc68kcpu); uint32_t ea = EA_A7_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu); + uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1(mc68kcpu); // (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */ (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */ @@ -9244,7 +9244,7 @@ M68KMAKE_OP(sbcd, 8, mm, ay7) uint32_t src = OPER_A7_PD_8(mc68kcpu); uint32_t ea = EA_AX_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu); + uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1(mc68kcpu); // (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */ (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */ @@ -9276,7 +9276,7 @@ M68KMAKE_OP(sbcd, 8, mm, axy7) uint32_t src = OPER_A7_PD_8(mc68kcpu); uint32_t ea = EA_A7_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu); + uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1(mc68kcpu); // (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */ (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */ @@ -9308,7 +9308,7 @@ M68KMAKE_OP(sbcd, 8, mm, .) uint32_t src = OPER_AY_PD_8(mc68kcpu); uint32_t ea = EA_AX_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu); + uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1(mc68kcpu); // (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */ (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */ @@ -9831,7 +9831,7 @@ M68KMAKE_OP(subx, 8, rr, .) uint32_t* r_dst = &DX(mc68kcpu); uint32_t src = MASK_OUT_ABOVE_8(DY(mc68kcpu)); uint32_t dst = MASK_OUT_ABOVE_8(*r_dst); - uint32_t res = dst - src - XFLAG_AS_1(mc68kcpu); + uint32_t res = dst - src - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_8(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res); @@ -9849,7 +9849,7 @@ M68KMAKE_OP(subx, 16, rr, .) uint32_t* r_dst = &DX(mc68kcpu); uint32_t src = MASK_OUT_ABOVE_16(DY(mc68kcpu)); uint32_t dst = MASK_OUT_ABOVE_16(*r_dst); - uint32_t res = dst - src - XFLAG_AS_1(mc68kcpu); + uint32_t res = dst - src - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_16(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res); @@ -9867,7 +9867,7 @@ M68KMAKE_OP(subx, 32, rr, .) uint32_t* r_dst = &DX(mc68kcpu); uint32_t src = DY(mc68kcpu); uint32_t dst = *r_dst; - uint32_t res = dst - src - XFLAG_AS_1(mc68kcpu); + uint32_t res = dst - src - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_32(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res); @@ -9885,7 +9885,7 @@ M68KMAKE_OP(subx, 8, mm, ax7) uint32_t src = OPER_AY_PD_8(mc68kcpu); uint32_t ea = EA_A7_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = dst - src - XFLAG_AS_1(mc68kcpu); + uint32_t res = dst - src - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_8(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res); @@ -9903,7 +9903,7 @@ M68KMAKE_OP(subx, 8, mm, ay7) uint32_t src = OPER_A7_PD_8(mc68kcpu); uint32_t ea = EA_AX_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = dst - src - XFLAG_AS_1(mc68kcpu); + uint32_t res = dst - src - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_8(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res); @@ -9921,7 +9921,7 @@ M68KMAKE_OP(subx, 8, mm, axy7) uint32_t src = OPER_A7_PD_8(mc68kcpu); uint32_t ea = EA_A7_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = dst - src - XFLAG_AS_1(mc68kcpu); + uint32_t res = dst - src - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_8(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res); @@ -9939,7 +9939,7 @@ M68KMAKE_OP(subx, 8, mm, .) uint32_t src = OPER_AY_PD_8(mc68kcpu); uint32_t ea = EA_AX_PD_8(mc68kcpu); uint32_t dst = m68ki_read_8((mc68kcpu), ea); - uint32_t res = dst - src - XFLAG_AS_1(mc68kcpu); + uint32_t res = dst - src - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_8(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res); @@ -9957,7 +9957,7 @@ M68KMAKE_OP(subx, 16, mm, .) uint32_t src = OPER_AY_PD_16(mc68kcpu); uint32_t ea = EA_AX_PD_16(mc68kcpu); uint32_t dst = m68ki_read_16((mc68kcpu), ea); - uint32_t res = dst - src - XFLAG_AS_1(mc68kcpu); + uint32_t res = dst - src - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_16(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res); @@ -9975,7 +9975,7 @@ M68KMAKE_OP(subx, 32, mm, .) uint32_t src = OPER_AY_PD_32(mc68kcpu); uint32_t ea = EA_AX_PD_32(mc68kcpu); uint32_t dst = m68ki_read_32((mc68kcpu), ea); - uint32_t res = dst - src - XFLAG_AS_1(mc68kcpu); + uint32_t res = dst - src - XFLAG_1(mc68kcpu); (mc68kcpu)->n_flag = NFLAG_32(res); (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res); diff --git a/src/devices/cpu/m68000/m68kcpu.cpp b/src/devices/cpu/m68000/m68kcpu.cpp index 0de7af11c00..0c03bb615fb 100644 --- a/src/devices/cpu/m68000/m68kcpu.cpp +++ b/src/devices/cpu/m68000/m68kcpu.cpp @@ -704,7 +704,7 @@ static void m68k_cause_bus_error(m68000_base_device *m68k) m68ki_jump_vector(m68k, EXCEPTION_BUS_ERROR); } -bool m68000_base_device::memory_translate(address_spacenum space, int intention, offs_t &address) +bool m68000_base_device::memory_translate(int space, int intention, offs_t &address) { /* only applies to the program address space and only does something if the MMU's enabled */ { @@ -920,7 +920,7 @@ void m68000_base_device::init_cpu_common(void) //this = device;//deviceparam; program = &space(AS_PROGRAM); - oprogram = has_space(AS_DECRYPTED_OPCODES) ? &space(AS_DECRYPTED_OPCODES) : program; + oprogram = has_space(AS_OPCODES) ? &space(AS_OPCODES) : program; int_ack_callback = device_irq_acknowledge_delegate(FUNC(m68000_base_device::standard_irq_callback_member), this); /* disable all MMUs */ @@ -2483,14 +2483,17 @@ void m68000_base_device::execute_set_input(int inputnum, int state) } -const address_space_config *m68000_base_device::memory_space_config(address_spacenum spacenum) const +std::vector> m68000_base_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &m_oprogram_config : nullptr; - default: return nullptr; - } + if(has_configured_map(AS_OPCODES)) + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_OPCODES, &m_oprogram_config) + }; + else + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; } @@ -2624,7 +2627,7 @@ void m68020pmmu_device::device_start() init_cpu_m68020pmmu(); } -bool m68020hmmu_device::memory_translate(address_spacenum space, int intention, offs_t &address) +bool m68020hmmu_device::memory_translate(int space, int intention, offs_t &address) { /* only applies to the program address space and only does something if the MMU's enabled */ { diff --git a/src/devices/cpu/m68000/m68kcpu.h b/src/devices/cpu/m68000/m68kcpu.h index 41d9e93c883..df2a754a13f 100644 --- a/src/devices/cpu/m68000/m68kcpu.h +++ b/src/devices/cpu/m68000/m68kcpu.h @@ -375,11 +375,11 @@ class m68000_base_device; #define MFLAG_CLEAR 0 /* Turn flag values into 1 or 0 */ -#define XFLAG_AS_1(M) (((M)->x_flag>>8)&1) -#define NFLAG_AS_1(M) (((M)->n_flag>>7)&1) -#define VFLAG_AS_1(M) (((M)->v_flag>>7)&1) -#define ZFLAG_AS_1(M) (!(M)->not_z_flag) -#define CFLAG_AS_1(M) (((M)->c_flag>>8)&1) +#define XFLAG_1(M) (((M)->x_flag>>8)&1) +#define NFLAG_1(M) (((M)->n_flag>>7)&1) +#define VFLAG_1(M) (((M)->v_flag>>7)&1) +#define ZFLAG_1(M) (!(M)->not_z_flag) +#define CFLAG_1(M) (((M)->c_flag>>8)&1) /* Conditions */ diff --git a/src/devices/cpu/m6805/m6805.cpp b/src/devices/cpu/m6805/m6805.cpp index a4b8a1c10e9..4d3009b0c8c 100644 --- a/src/devices/cpu/m6805/m6805.cpp +++ b/src/devices/cpu/m6805/m6805.cpp @@ -319,12 +319,11 @@ void m6805_base_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *m6805_base_device::memory_space_config(address_spacenum spacenum) const +std::vector> m6805_base_device::memory_space_config() const { - if (spacenum == AS_PROGRAM) - return &m_program_config; - else - return nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; } diff --git a/src/devices/cpu/m6805/m6805.h b/src/devices/cpu/m6805/m6805.h index aad9b371751..b71aabb105a 100644 --- a/src/devices/cpu/m6805/m6805.h +++ b/src/devices/cpu/m6805/m6805.h @@ -116,7 +116,7 @@ protected: virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; diff --git a/src/devices/cpu/m6809/m6809.cpp b/src/devices/cpu/m6809/m6809.cpp index f1f8e387ca2..573da2d477f 100644 --- a/src/devices/cpu/m6809/m6809.cpp +++ b/src/devices/cpu/m6809/m6809.cpp @@ -131,7 +131,7 @@ void m6809_base_device::device_start() m_mintf = new mi_default; m_mintf->m_program = &space(AS_PROGRAM); - m_mintf->m_sprogram = has_space(AS_DECRYPTED_OPCODES) ? &space(AS_DECRYPTED_OPCODES) : m_mintf->m_program; + m_mintf->m_sprogram = has_space(AS_OPCODES) ? &space(AS_OPCODES) : m_mintf->m_program; m_mintf->m_direct = &m_mintf->m_program->direct(); m_mintf->m_sdirect = &m_mintf->m_sprogram->direct(); @@ -292,14 +292,17 @@ void m6809_base_device::device_post_load() // the space doesn't exist //------------------------------------------------- -const address_space_config *m6809_base_device::memory_space_config(address_spacenum spacenum) const +std::vector> m6809_base_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &m_sprogram_config : nullptr; - default: return nullptr; - } + if(has_configured_map(AS_OPCODES)) + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_OPCODES, &m_sprogram_config) + }; + else + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; } diff --git a/src/devices/cpu/m6809/m6809.h b/src/devices/cpu/m6809/m6809.h index bfe82224b4d..4d67d7977a2 100644 --- a/src/devices/cpu/m6809/m6809.h +++ b/src/devices/cpu/m6809/m6809.h @@ -68,7 +68,7 @@ protected: virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; diff --git a/src/devices/cpu/mb86233/mb86233.cpp b/src/devices/cpu/mb86233/mb86233.cpp index 3d7a4be3155..b071a964c51 100644 --- a/src/devices/cpu/mb86233/mb86233.cpp +++ b/src/devices/cpu/mb86233/mb86233.cpp @@ -37,6 +37,14 @@ mb86233_cpu_device::mb86233_cpu_device(const machine_config &mconfig, const char { } +std::vector> mb86233_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} + offs_t mb86233_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/mb86233/mb86233.h b/src/devices/cpu/mb86233/mb86233.h index d95fbd9b1f5..3d1383e874d 100644 --- a/src/devices/cpu/mb86233/mb86233.h +++ b/src/devices/cpu/mb86233/mb86233.h @@ -71,7 +71,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/mb86235/mb86235.cpp b/src/devices/cpu/mb86235/mb86235.cpp index e1f6c6ec41f..781a848f712 100644 --- a/src/devices/cpu/mb86235/mb86235.cpp +++ b/src/devices/cpu/mb86235/mb86235.cpp @@ -215,6 +215,14 @@ mb86235_device::mb86235_device(const machine_config &mconfig, const char *tag, d { } +std::vector> mb86235_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_dataa_config), + std::make_pair(AS_IO, &m_datab_config) + }; +} void mb86235_device::state_string_export(const device_state_entry &entry, std::string &str) const { diff --git a/src/devices/cpu/mb86235/mb86235.h b/src/devices/cpu/mb86235/mb86235.h index c5826ea8960..99864e9aec5 100644 --- a/src/devices/cpu/mb86235/mb86235.h +++ b/src/devices/cpu/mb86235/mb86235.h @@ -65,7 +65,7 @@ protected: //virtual void execute_set_input(int inputnum, int state); // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_dataa_config : (spacenum == AS_IO) ? &m_datab_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/mb88xx/mb88xx.cpp b/src/devices/cpu/mb88xx/mb88xx.cpp index 864ac02d184..eb0e3ebc422 100644 --- a/src/devices/cpu/mb88xx/mb88xx.cpp +++ b/src/devices/cpu/mb88xx/mb88xx.cpp @@ -154,6 +154,13 @@ mb8844_cpu_device::mb8844_cpu_device(const machine_config &mconfig, const char * { } +std::vector> mb88_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} offs_t mb88_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/mb88xx/mb88xx.h b/src/devices/cpu/mb88xx/mb88xx.h index 25264d3db5d..d3c5be393cc 100644 --- a/src/devices/cpu/mb88xx/mb88xx.h +++ b/src/devices/cpu/mb88xx/mb88xx.h @@ -157,7 +157,7 @@ protected: virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 6); } // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_DATA) ? &m_data_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/mc68hc11/mc68hc11.cpp b/src/devices/cpu/mc68hc11/mc68hc11.cpp index 3bac6f74f14..098d7c18c4d 100644 --- a/src/devices/cpu/mc68hc11/mc68hc11.cpp +++ b/src/devices/cpu/mc68hc11/mc68hc11.cpp @@ -53,6 +53,13 @@ mc68hc11_cpu_device::mc68hc11_cpu_device(const machine_config &mconfig, const ch { } +std::vector> mc68hc11_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} offs_t mc68hc11_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/mc68hc11/mc68hc11.h b/src/devices/cpu/mc68hc11/mc68hc11.h index 1156eed45c3..15d148cc6d5 100644 --- a/src/devices/cpu/mc68hc11/mc68hc11.h +++ b/src/devices/cpu/mc68hc11/mc68hc11.h @@ -64,10 +64,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override - { - return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/mcs40/mcs40.cpp b/src/devices/cpu/mcs40/mcs40.cpp index 23a939f4d5d..a2090eb4c20 100644 --- a/src/devices/cpu/mcs40/mcs40.cpp +++ b/src/devices/cpu/mcs40/mcs40.cpp @@ -9,6 +9,7 @@ *****************************************************************************/ #include "emu.h" #include "mcs40.h" + #include "debugger.h" @@ -132,7 +133,7 @@ void mcs40_cpu_device_base::device_start() m_program = &space(AS_PROGRAM); m_data = &space(AS_DATA); m_io = &space(AS_IO); - m_opcodes = &space(AS_DECRYPTED_OPCODES); + m_opcodes = &space(AS_OPCODES); m_direct = &m_opcodes->direct(); m_sync_cb.resolve_safe(); @@ -179,7 +180,7 @@ void mcs40_cpu_device_base::device_start() state_add(STATE_GENPC, "PC", m_pc).mask(m_pc_mask).callimport().callexport(); state_add(STATE_GENPCBASE, "CURPC", m_pcbase).mask(m_pc_mask).noshow(); - state_add(STATE_GENFLAGS, "GENFLAGS", m_genflags).mask(0x07U).noshow().callimport().callexport().formatstr("%3s"); + state_add(STATE_GENFLAGS, "GENFLAGS", m_genflags).mask(0x07U).noshow().callimport().callexport().formatstr("%4s"); state_add(I4004_A, "A", m_a).mask(0x0fU); for (unsigned i = 0; (m_index_reg_cnt >> 1) > i; ++i) { @@ -322,16 +323,14 @@ void mcs40_cpu_device_base::execute_run() device_memory_interface implementation ***********************************************************************/ -address_space_config const *mcs40_cpu_device_base::memory_space_config(address_spacenum spacenum) const +std::vector> mcs40_cpu_device_base::memory_space_config() const { - switch (spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_DATA: return &m_data_config; - case AS_IO: return &m_io_config; - case AS_DECRYPTED_OPCODES: return &m_opcodes_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config), + std::make_pair(AS_OPCODES, &m_opcodes_config) + }; } @@ -362,6 +361,7 @@ void mcs40_cpu_device_base::state_import(device_state_entry const &entry) } break; case STATE_GENFLAGS: + m_stop_ff = BIT(m_genflags, 3); m_c = BIT(m_genflags, 1); m_test = BIT(m_genflags, 0) ? ASSERT_LINE : CLEAR_LINE; break; @@ -381,7 +381,11 @@ void mcs40_cpu_device_base::state_export(device_state_entry const &entry) m_pc = rom_bank() | pc(); break; case STATE_GENFLAGS: - m_genflags = (m_a ? 0x00 : 0x04) | (m_c ? 0x02 : 0x00) | ((CLEAR_LINE != m_test) ? 0x01 : 0x00); + m_genflags = + (m_stop_ff ? 0x08 : 0x00) | + (m_a ? 0x00 : 0x04) | + (m_c ? 0x02 : 0x00) | + ((CLEAR_LINE != m_test) ? 0x01 : 0x00); break; } } @@ -391,7 +395,12 @@ void mcs40_cpu_device_base::state_string_export(device_state_entry const &entry, switch (entry.index()) { case STATE_GENFLAGS: - str = util::string_format("%c%c%c", m_a ? '.' : 'Z', m_c ? 'C' : '.', (CLEAR_LINE != m_test) ? 'T' : '.'); + str = util::string_format( + "%c%c%c%c", + m_stop_ff ? 'S' : '.', + m_a ? '.' : 'Z', + m_c ? 'C' : '.', + (CLEAR_LINE != m_test) ? 'T' : '.'); break; } } diff --git a/src/devices/cpu/mcs40/mcs40.h b/src/devices/cpu/mcs40/mcs40.h index e38cb98a23c..40838d40fd4 100644 --- a/src/devices/cpu/mcs40/mcs40.h +++ b/src/devices/cpu/mcs40/mcs40.h @@ -94,9 +94,9 @@ class mcs40_cpu_device_base : public cpu_device public: // configuration helpers template static devcb_base &set_4289_pm_cb(device_t &device, Obj &&cb) - { return downcast(device).set_4289_pm_cb(std::forward(cb)); } + { return downcast(device).m_4289_pm_cb.set_callback(std::forward(cb)); } template static devcb_base &set_4289_f_l_cb(device_t &device, Obj &&cb) - { return downcast(device).set_4289_f_l_cb(std::forward(cb)); } + { return downcast(device).m_4289_f_l_cb.set_callback(std::forward(cb)); } // 4008/4009 or 4289 outputs u8 get_4289_a() const { return m_4289_a; } // 8-bit address @@ -128,7 +128,7 @@ protected: virtual void execute_run() override; // device_memory_interface configuration - virtual address_space_config const *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface implementation virtual void state_import(device_state_entry const &entry) override; diff --git a/src/devices/cpu/mcs48/mcs48.cpp b/src/devices/cpu/mcs48/mcs48.cpp index 0a1bf4432cb..35072a38589 100644 --- a/src/devices/cpu/mcs48/mcs48.cpp +++ b/src/devices/cpu/mcs48/mcs48.cpp @@ -332,6 +332,14 @@ i8742_device::i8742_device(const machine_config &mconfig, const char *tag, devic { } +std::vector> mcs48_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config) + }; +} offs_t mcs48_cpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h index 274224099e9..dd1693558a2 100644 --- a/src/devices/cpu/mcs48/mcs48.h +++ b/src/devices/cpu/mcs48/mcs48.h @@ -172,10 +172,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override - { - return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ) ); - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/mcs51/mcs51.cpp b/src/devices/cpu/mcs51/mcs51.cpp index 997f475ccbc..99ccb6774dc 100644 --- a/src/devices/cpu/mcs51/mcs51.cpp +++ b/src/devices/cpu/mcs51/mcs51.cpp @@ -374,6 +374,15 @@ ds5002fp_device::ds5002fp_device(const machine_config &mconfig, const char *tag, { } +std::vector> mcs51_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + /*************************************************************************** MACROS diff --git a/src/devices/cpu/mcs51/mcs51.h b/src/devices/cpu/mcs51/mcs51.h index e9c9109c860..62f9840cec0 100644 --- a/src/devices/cpu/mcs51/mcs51.h +++ b/src/devices/cpu/mcs51/mcs51.h @@ -107,10 +107,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override - { - return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ) ); - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/mcs96/i8x9x.cpp b/src/devices/cpu/mcs96/i8x9x.cpp index 1118ef80c36..4266aaf2a1f 100644 --- a/src/devices/cpu/mcs96/i8x9x.cpp +++ b/src/devices/cpu/mcs96/i8x9x.cpp @@ -23,9 +23,12 @@ offs_t i8x9x_device::disasm_disassemble(std::ostream &stream, offs_t pc, const u return disasm_generic(stream, pc, oprom, opram, options, disasm_entries); } -const address_space_config *i8x9x_device::memory_space_config(address_spacenum spacenum) const +std::vector> i8x9x_device::memory_space_config() const { - return spacenum == AS_PROGRAM ? &program_config : spacenum == AS_IO ? &io_config : nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &program_config), + std::make_pair(AS_IO, &io_config) + }; } void i8x9x_device::device_start() diff --git a/src/devices/cpu/mcs96/i8x9x.h b/src/devices/cpu/mcs96/i8x9x.h index 1951f672ada..ef9c8b0ab74 100644 --- a/src/devices/cpu/mcs96/i8x9x.h +++ b/src/devices/cpu/mcs96/i8x9x.h @@ -28,7 +28,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; static const disasm_entry disasm_entries[0x100]; diff --git a/src/devices/cpu/mcs96/mcs96.cpp b/src/devices/cpu/mcs96/mcs96.cpp index 11d9cf23f30..ff229b231ce 100644 --- a/src/devices/cpu/mcs96/mcs96.cpp +++ b/src/devices/cpu/mcs96/mcs96.cpp @@ -116,9 +116,11 @@ void mcs96_device::execute_set_input(int inputnum, int state) } } -const address_space_config *mcs96_device::memory_space_config(address_spacenum spacenum) const +std::vector> mcs96_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &program_config : nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &program_config) + }; } void mcs96_device::state_import(const device_state_entry &entry) diff --git a/src/devices/cpu/mcs96/mcs96.h b/src/devices/cpu/mcs96/mcs96.h index 57c4e2cedd4..1023b794e27 100644 --- a/src/devices/cpu/mcs96/mcs96.h +++ b/src/devices/cpu/mcs96/mcs96.h @@ -88,7 +88,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/melps4/melps4.cpp b/src/devices/cpu/melps4/melps4.cpp index 4205851634b..6a888e5165d 100644 --- a/src/devices/cpu/melps4/melps4.cpp +++ b/src/devices/cpu/melps4/melps4.cpp @@ -234,7 +234,13 @@ void melps4_cpu_device::device_start() m_icountptr = &m_icount; } - +std::vector> melps4_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} //------------------------------------------------- // device_reset - device-specific reset diff --git a/src/devices/cpu/melps4/melps4.h b/src/devices/cpu/melps4/melps4.h index 627bca9042d..f90c6f4bfa5 100644 --- a/src/devices/cpu/melps4/melps4.h +++ b/src/devices/cpu/melps4/melps4.h @@ -132,7 +132,7 @@ protected: virtual void execute_one(); // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } diff --git a/src/devices/cpu/minx/minx.cpp b/src/devices/cpu/minx/minx.cpp index 2b91305d28d..0fa38b5db73 100644 --- a/src/devices/cpu/minx/minx.cpp +++ b/src/devices/cpu/minx/minx.cpp @@ -81,6 +81,12 @@ minx_cpu_device::minx_cpu_device(const machine_config &mconfig, const char *tag, { } +std::vector> minx_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} uint16_t minx_cpu_device::rd16( uint32_t offset ) { diff --git a/src/devices/cpu/minx/minx.h b/src/devices/cpu/minx/minx.h index a9640ecd132..0c146fb95da 100644 --- a/src/devices/cpu/minx/minx.h +++ b/src/devices/cpu/minx/minx.h @@ -33,7 +33,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/mips/mips3.cpp b/src/devices/cpu/mips/mips3.cpp index 544bcb5c86c..ca46c8a00ae 100644 --- a/src/devices/cpu/mips/mips3.cpp +++ b/src/devices/cpu/mips/mips3.cpp @@ -195,6 +195,13 @@ mips3_device::mips3_device(const machine_config &mconfig, device_type type, cons set_vtlb_fixed_entries(2 * m_tlbentries + 2); } +std::vector> mips3_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + void mips3_device::device_stop() { @@ -945,7 +952,7 @@ void mips3_device::device_reset() } -bool mips3_device::memory_translate(address_spacenum spacenum, int intention, offs_t &address) +bool mips3_device::memory_translate(int spacenum, int intention, offs_t &address) { /* only applies to the program address space */ if (spacenum == AS_PROGRAM) diff --git a/src/devices/cpu/mips/mips3.h b/src/devices/cpu/mips/mips3.h index c8b5657f481..ea157c398b7 100644 --- a/src/devices/cpu/mips/mips3.h +++ b/src/devices/cpu/mips/mips3.h @@ -304,8 +304,8 @@ protected: virtual void execute_burn(int32_t cycles) override { m_totalcycles += cycles; } // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } - virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override; + virtual std::vector> memory_space_config() const override; + virtual bool memory_translate(int spacenum, int intention, offs_t &address) override; // device_state_interface overrides virtual void state_export(const device_state_entry &entry) override; diff --git a/src/devices/cpu/mips/r3000.cpp b/src/devices/cpu/mips/r3000.cpp index b8fbfa26b91..f60cb7bc9f0 100644 --- a/src/devices/cpu/mips/r3000.cpp +++ b/src/devices/cpu/mips/r3000.cpp @@ -394,12 +394,11 @@ void r3000_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *r3000_device::memory_space_config(address_spacenum spacenum) const +std::vector> r3000_device::memory_space_config() const { - if (spacenum == AS_PROGRAM) - return (m_endianness == ENDIANNESS_BIG) ? &m_program_config_be : &m_program_config_le; - else - return nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, (m_endianness == ENDIANNESS_BIG) ? &m_program_config_be : &m_program_config_le) + }; } diff --git a/src/devices/cpu/mips/r3000.h b/src/devices/cpu/mips/r3000.h index 8274202c0e9..b4a339dc584 100644 --- a/src/devices/cpu/mips/r3000.h +++ b/src/devices/cpu/mips/r3000.h @@ -123,7 +123,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/mn10200/mn10200.cpp b/src/devices/cpu/mn10200/mn10200.cpp index 07fc55a3723..c4ec36ba5d7 100644 --- a/src/devices/cpu/mn10200/mn10200.cpp +++ b/src/devices/cpu/mn10200/mn10200.cpp @@ -58,6 +58,14 @@ mn1020012a_device::mn1020012a_device(const machine_config &mconfig, const char * { } +std::vector> mn10200_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + + // disasm void mn10200_device::state_string_export(const device_state_entry &entry, std::string &str) const { diff --git a/src/devices/cpu/mn10200/mn10200.h b/src/devices/cpu/mn10200/mn10200.h index 7831d5cfeb1..71d00f7eb01 100644 --- a/src/devices/cpu/mn10200/mn10200.h +++ b/src/devices/cpu/mn10200/mn10200.h @@ -81,7 +81,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/nanoprocessor/nanoprocessor.cpp b/src/devices/cpu/nanoprocessor/nanoprocessor.cpp index 47d9091b46e..a210a531da1 100644 --- a/src/devices/cpu/nanoprocessor/nanoprocessor.cpp +++ b/src/devices/cpu/nanoprocessor/nanoprocessor.cpp @@ -108,6 +108,14 @@ void hp_nanoprocessor_device::device_reset() dc_update(); } +std::vector> hp_nanoprocessor_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + void hp_nanoprocessor_device::execute_run() { do { diff --git a/src/devices/cpu/nanoprocessor/nanoprocessor.h b/src/devices/cpu/nanoprocessor/nanoprocessor.h index acdb40cb862..6d489896354 100644 --- a/src/devices/cpu/nanoprocessor/nanoprocessor.h +++ b/src/devices/cpu/nanoprocessor/nanoprocessor.h @@ -85,9 +85,7 @@ public: virtual uint32_t execute_default_irq_vector() const override { return 0xff; } // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { - return (spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_IO) ? &m_io_config : nullptr); - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/nec/nec.cpp b/src/devices/cpu/nec/nec.cpp index 3b61283ce41..18dded0cdb4 100644 --- a/src/devices/cpu/nec/nec.cpp +++ b/src/devices/cpu/nec/nec.cpp @@ -145,6 +145,14 @@ v30_device::v30_device(const machine_config &mconfig, const char *tag, device_t { } +std::vector> nec_common_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + /* FIXME: Need information about prefetch size and cycles for V33. * complete guess below, nbbatman will not work diff --git a/src/devices/cpu/nec/nec.h b/src/devices/cpu/nec/nec.h index f4f95ad6788..90e96b84f4d 100644 --- a/src/devices/cpu/nec/nec.h +++ b/src/devices/cpu/nec/nec.h @@ -40,7 +40,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/nec/v25.cpp b/src/devices/cpu/nec/v25.cpp index 66d4e6885e8..9c3a8ad007a 100644 --- a/src/devices/cpu/nec/v25.cpp +++ b/src/devices/cpu/nec/v25.cpp @@ -82,6 +82,13 @@ v35_device::v35_device(const machine_config &mconfig, const char *tag, device_t { } +std::vector> v25_common_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} TIMER_CALLBACK_MEMBER(v25_common_device::v25_timer_callback) { diff --git a/src/devices/cpu/nec/v25.h b/src/devices/cpu/nec/v25.h index 00bf192f22f..9ebbffe57e4 100644 --- a/src/devices/cpu/nec/v25.h +++ b/src/devices/cpu/nec/v25.h @@ -84,7 +84,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/nec/v53.cpp b/src/devices/cpu/nec/v53.cpp index 4d6aa65b08c..cb4ff9cd84b 100644 --- a/src/devices/cpu/nec/v53.cpp +++ b/src/devices/cpu/nec/v53.cpp @@ -172,6 +172,13 @@ m_DST = 0x00; m_DMK = 0x0f; */ +std::vector> v53_base_device::memory_space_config() const +{ + auto r = nec_common_device::memory_space_config(); + r.emplace_back(std::make_pair(AS_IO, &m_io_space_config)); + return r; +} + void v53_base_device::device_reset() { nec_common_device::device_reset(); diff --git a/src/devices/cpu/nec/v53.h b/src/devices/cpu/nec/v53.h index 86dfab2b829..49fa66e5134 100644 --- a/src/devices/cpu/nec/v53.h +++ b/src/devices/cpu/nec/v53.h @@ -205,15 +205,7 @@ protected: const address_space_config m_io_space_config; - const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - switch (spacenum) - { - case AS_IO: return &m_io_space_config; - default: return nec_common_device::memory_space_config(spacenum); - } - } - + virtual std::vector> memory_space_config() const override; uint8_t m_SCTL; uint8_t m_OPSEL; diff --git a/src/devices/cpu/patinhofeio/patinho_feio.cpp b/src/devices/cpu/patinhofeio/patinho_feio.cpp index f482e2d3b19..48cd8b3494c 100644 --- a/src/devices/cpu/patinhofeio/patinho_feio.cpp +++ b/src/devices/cpu/patinhofeio/patinho_feio.cpp @@ -69,6 +69,13 @@ patinho_feio_cpu_device::patinho_feio_cpu_device(const machine_config &mconfig, { } +std::vector> patinho_feio_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + uint16_t patinho_feio_cpu_device::read_panel_keys_register(){ if (!m_rc_read_cb.isnull()) m_rc = m_rc_read_cb(0); diff --git a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h index 1f7de74638a..065a21daec9 100644 --- a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h +++ b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h @@ -119,7 +119,7 @@ protected: virtual uint32_t execute_max_cycles() const override { return 2; } // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 1; } diff --git a/src/devices/cpu/pdp1/pdp1.cpp b/src/devices/cpu/pdp1/pdp1.cpp index c79e612191d..56f6fb25c90 100644 --- a/src/devices/cpu/pdp1/pdp1.cpp +++ b/src/devices/cpu/pdp1/pdp1.cpp @@ -387,6 +387,12 @@ pdp1_device::pdp1_device(const machine_config &mconfig, const char *tag, device_ m_program_config.m_is_octal = true; } +std::vector> pdp1_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} void pdp1_device::device_config_complete() { diff --git a/src/devices/cpu/pdp1/pdp1.h b/src/devices/cpu/pdp1/pdp1.h index 4604069d33b..546735f425b 100644 --- a/src/devices/cpu/pdp1/pdp1.h +++ b/src/devices/cpu/pdp1/pdp1.h @@ -106,7 +106,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/pdp1/tx0.cpp b/src/devices/cpu/pdp1/tx0.cpp index b3ae8567d3a..3d3be72838e 100644 --- a/src/devices/cpu/pdp1/tx0.cpp +++ b/src/devices/cpu/pdp1/tx0.cpp @@ -75,6 +75,13 @@ tx0_64kw_device::tx0_64kw_device(const machine_config &mconfig, const char *tag, { } +std::vector> tx0_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + int tx0_device::tx0_read(offs_t address) { diff --git a/src/devices/cpu/pdp1/tx0.h b/src/devices/cpu/pdp1/tx0.h index 7f4a094521a..8272fe478b4 100644 --- a/src/devices/cpu/pdp1/tx0.h +++ b/src/devices/cpu/pdp1/tx0.h @@ -65,7 +65,7 @@ protected: virtual uint32_t execute_max_cycles() const override { return 3; } // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 4; } diff --git a/src/devices/cpu/pdp8/pdp8.cpp b/src/devices/cpu/pdp8/pdp8.cpp index 52141e9d1ac..1a9150a236d 100644 --- a/src/devices/cpu/pdp8/pdp8.cpp +++ b/src/devices/cpu/pdp8/pdp8.cpp @@ -121,7 +121,7 @@ void pdp8_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *pdp8_device::memory_space_config(address_spacenum spacenum) const +const address_space_config *pdp8_device::memory_space_config(int spacenum) const { if (spacenum == AS_PROGRAM) { diff --git a/src/devices/cpu/pdp8/pdp8.h b/src/devices/cpu/pdp8/pdp8.h index 2184d965099..21d5a25a0cf 100644 --- a/src/devices/cpu/pdp8/pdp8.h +++ b/src/devices/cpu/pdp8/pdp8.h @@ -37,7 +37,7 @@ public: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; diff --git a/src/devices/cpu/pic16c5x/pic16c5x.cpp b/src/devices/cpu/pic16c5x/pic16c5x.cpp index 9c21dd2c737..cb162c58c09 100644 --- a/src/devices/cpu/pic16c5x/pic16c5x.cpp +++ b/src/devices/cpu/pic16c5x/pic16c5x.cpp @@ -175,6 +175,13 @@ pic1655_device::pic1655_device(const machine_config &mconfig, const char *tag, d { } +std::vector> pic16c5x_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} offs_t pic16c5x_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/pic16c5x/pic16c5x.h b/src/devices/cpu/pic16c5x/pic16c5x.h index 8642ae8da43..bbf9bb84486 100644 --- a/src/devices/cpu/pic16c5x/pic16c5x.h +++ b/src/devices/cpu/pic16c5x/pic16c5x.h @@ -125,10 +125,7 @@ protected: virtual void execute_set_input(int line, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ); - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/pic16c62x/pic16c62x.h b/src/devices/cpu/pic16c62x/pic16c62x.h index b873d5e19b6..35104d4e994 100644 --- a/src/devices/cpu/pic16c62x/pic16c62x.h +++ b/src/devices/cpu/pic16c62x/pic16c62x.h @@ -71,10 +71,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ) ); - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h index 8a31bc5c5f6..558f702b376 100644 --- a/src/devices/cpu/powerpc/ppc.h +++ b/src/devices/cpu/powerpc/ppc.h @@ -259,8 +259,8 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } - virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override; + virtual std::vector> memory_space_config() const override; + virtual bool memory_translate(int spacenum, int intention, offs_t &address) override; // device_state_interface overrides virtual void state_export(const device_state_entry &entry) override; diff --git a/src/devices/cpu/powerpc/ppccom.cpp b/src/devices/cpu/powerpc/ppccom.cpp index ef24a09fc45..50f69f0f035 100644 --- a/src/devices/cpu/powerpc/ppccom.cpp +++ b/src/devices/cpu/powerpc/ppccom.cpp @@ -300,6 +300,13 @@ ppc405gp_device::ppc405gp_device(const machine_config &mconfig, const char *tag, { } +std::vector> ppc_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + /*************************************************************************** INLINE FUNCTIONS @@ -1460,7 +1467,7 @@ uint32_t ppc_device::ppccom_translate_address_internal(int intention, offs_t &ad from logical to physical -------------------------------------------------*/ -bool ppc_device::memory_translate(address_spacenum spacenum, int intention, offs_t &address) +bool ppc_device::memory_translate(int spacenum, int intention, offs_t &address) { /* only applies to the program address space */ if (spacenum != AS_PROGRAM) diff --git a/src/devices/cpu/pps4/pps4.cpp b/src/devices/cpu/pps4/pps4.cpp index 57865f58659..7b9a9a6e52e 100644 --- a/src/devices/cpu/pps4/pps4.cpp +++ b/src/devices/cpu/pps4/pps4.cpp @@ -108,6 +108,15 @@ pps4_2_device::pps4_2_device(const machine_config &mconfig, const char *tag, dev { } +std::vector> pps4_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + /** * @brief pps4_device::M Return the memory at address B * @return ROM/RAM(B) diff --git a/src/devices/cpu/pps4/pps4.h b/src/devices/cpu/pps4/pps4.h index 59493f89c7b..72100fb358b 100644 --- a/src/devices/cpu/pps4/pps4.h +++ b/src/devices/cpu/pps4/pps4.h @@ -76,10 +76,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ) ); - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/psx/psx.cpp b/src/devices/cpu/psx/psx.cpp index d436572cf08..b03c57c3a5e 100644 --- a/src/devices/cpu/psx/psx.cpp +++ b/src/devices/cpu/psx/psx.cpp @@ -3385,6 +3385,12 @@ void psxcpu_device::set_disable_rom_berr(bool mode) m_disable_rom_berr = mode; } +std::vector> psxcpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + }; +} //------------------------------------------------- // device_add_mconfig - add device configuration diff --git a/src/devices/cpu/psx/psx.h b/src/devices/cpu/psx/psx.h index 05bc0266940..d05495481a0 100644 --- a/src/devices/cpu/psx/psx.h +++ b/src/devices/cpu/psx/psx.h @@ -211,7 +211,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/rsp/rsp.cpp b/src/devices/cpu/rsp/rsp.cpp index 5bdf36fd046..2f781344800 100644 --- a/src/devices/cpu/rsp/rsp.cpp +++ b/src/devices/cpu/rsp/rsp.cpp @@ -143,6 +143,13 @@ rsp_device::rsp_device(const machine_config &mconfig, const char *tag, device_t { } +std::vector> rsp_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + offs_t rsp_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( rsp ); diff --git a/src/devices/cpu/rsp/rsp.h b/src/devices/cpu/rsp/rsp.h index 170315ec69f..3c55ed00265 100644 --- a/src/devices/cpu/rsp/rsp.h +++ b/src/devices/cpu/rsp/rsp.h @@ -152,7 +152,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override { } // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/s2650/s2650.cpp b/src/devices/cpu/s2650/s2650.cpp index 50492b36069..e342f570b74 100644 --- a/src/devices/cpu/s2650/s2650.cpp +++ b/src/devices/cpu/s2650/s2650.cpp @@ -50,23 +50,20 @@ offs_t s2650_device::disasm_disassemble(std::ostream &stream, offs_t pc, const u } -const address_space_config *s2650_device::memory_space_config(address_spacenum spacenum) const +std::vector> s2650_device::memory_space_config() const { - switch (spacenum) - { + return std::vector> { // Memory-mapped: M/~IO=1 - case AS_PROGRAM: return &m_program_config; - - // Extended I/O: M/~IO=0 ADR13(E)=1 ADR14=Don't Care - case AS_IO: return &m_io_config; + std::make_pair(AS_PROGRAM, &m_program_config), // Non-extended I/O: M/~IO=0 ADR13(~NE)=0 ADR14=D/~C // "The D/~C line can be used as a 1-bit device address in simple systems." // -- Signetics 2650 Microprocessor databook, page 41 - case AS_DATA: return &m_data_config; + std::make_pair(AS_DATA, &m_data_config), - default: return nullptr; - } + // Extended I/O: M/~IO=0 ADR13(E)=1 ADR14=Don't Care + std::make_pair(AS_IO, &m_io_config) + }; } diff --git a/src/devices/cpu/s2650/s2650.h b/src/devices/cpu/s2650/s2650.h index 119f7f9b38f..bd7838a94cc 100644 --- a/src/devices/cpu/s2650/s2650.h +++ b/src/devices/cpu/s2650/s2650.h @@ -60,7 +60,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/saturn/satops.hxx b/src/devices/cpu/saturn/satops.hxx index 28e94ae8dfa..a42d9745cd2 100644 --- a/src/devices/cpu/saturn/satops.hxx +++ b/src/devices/cpu/saturn/satops.hxx @@ -506,7 +506,7 @@ void saturn_device::saturn_equals_zero(int reg, int begin, int count) { int i, t; saturn_assert(reg>=0 && reg<9); - saturn_assert(begin>=0 && count>0 && begin+count<=16); + saturn_assert(begin>=0 && begin<16 && count>0 && begin+count<=16); m_carry=1; for (i=0; i> saturn_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + offs_t saturn_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/saturn/saturn.h b/src/devices/cpu/saturn/saturn.h index a8a221995b6..f291506d18a 100644 --- a/src/devices/cpu/saturn/saturn.h +++ b/src/devices/cpu/saturn/saturn.h @@ -101,7 +101,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/sc61860/sc61860.cpp b/src/devices/cpu/sc61860/sc61860.cpp index 5b636dcfb94..fabda561b1e 100644 --- a/src/devices/cpu/sc61860/sc61860.cpp +++ b/src/devices/cpu/sc61860/sc61860.cpp @@ -62,6 +62,13 @@ sc61860_device::sc61860_device(const machine_config &mconfig, const char *tag, d { } +std::vector> sc61860_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + offs_t sc61860_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/sc61860/sc61860.h b/src/devices/cpu/sc61860/sc61860.h index 2131673616b..8bd1473102b 100644 --- a/src/devices/cpu/sc61860/sc61860.h +++ b/src/devices/cpu/sc61860/sc61860.h @@ -101,7 +101,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/scmp/scmp.cpp b/src/devices/cpu/scmp/scmp.cpp index 6cb366ae97f..0e270e0360b 100644 --- a/src/devices/cpu/scmp/scmp.cpp +++ b/src/devices/cpu/scmp/scmp.cpp @@ -40,6 +40,13 @@ scmp_device::scmp_device(const machine_config &mconfig, device_type type, const { } +std::vector> scmp_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + ins8060_device::ins8060_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : scmp_device(mconfig, INS8060, tag, owner, clock) diff --git a/src/devices/cpu/scmp/scmp.h b/src/devices/cpu/scmp/scmp.h index fcfc3bb01cc..acdbff5af1b 100644 --- a/src/devices/cpu/scmp/scmp.h +++ b/src/devices/cpu/scmp/scmp.h @@ -48,7 +48,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/score/score.cpp b/src/devices/cpu/score/score.cpp index e8f049fb53f..031c76afaf9 100644 --- a/src/devices/cpu/score/score.cpp +++ b/src/devices/cpu/score/score.cpp @@ -153,9 +153,11 @@ void score7_cpu_device::state_string_export(const device_state_entry &entry, std // the space doesn't exist //------------------------------------------------- -const address_space_config * score7_cpu_device::memory_space_config(address_spacenum spacenum) const +std::vector> score7_cpu_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_config: nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; } diff --git a/src/devices/cpu/score/score.h b/src/devices/cpu/score/score.h index 797a2bedf3d..de03eda5498 100644 --- a/src/devices/cpu/score/score.h +++ b/src/devices/cpu/score/score.h @@ -51,7 +51,7 @@ protected: virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } diff --git a/src/devices/cpu/scudsp/scudsp.cpp b/src/devices/cpu/scudsp/scudsp.cpp index 8898dd5fa34..f0d64863b4c 100644 --- a/src/devices/cpu/scudsp/scudsp.cpp +++ b/src/devices/cpu/scudsp/scudsp.cpp @@ -897,6 +897,14 @@ void scudsp_cpu_device::execute_run() } while( m_icount > 0 ); } +std::vector> scudsp_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} + void scudsp_cpu_device::device_start() { m_pc = 0; diff --git a/src/devices/cpu/scudsp/scudsp.h b/src/devices/cpu/scudsp/scudsp.h index 6012748257c..98af1ad9cd0 100644 --- a/src/devices/cpu/scudsp/scudsp.h +++ b/src/devices/cpu/scudsp/scudsp.h @@ -82,7 +82,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/se3208/se3208.cpp b/src/devices/cpu/se3208/se3208.cpp index 13b0ec92f22..d2af5871258 100644 --- a/src/devices/cpu/se3208/se3208.cpp +++ b/src/devices/cpu/se3208/se3208.cpp @@ -53,6 +53,12 @@ se3208_device::se3208_device(const machine_config &mconfig, const char *tag, dev , m_PC(0), m_SR(0), m_SP(0), m_ER(0), m_PPC(0), m_program(nullptr), m_direct(nullptr), m_IRQ(0), m_NMI(0), m_icount(0) { } +std::vector> se3208_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} uint32_t se3208_device::read_dword_unaligned(address_space &space, uint32_t address) diff --git a/src/devices/cpu/se3208/se3208.h b/src/devices/cpu/se3208/se3208.h index bb00f3f06ad..af40bf6d8d5 100644 --- a/src/devices/cpu/se3208/se3208.h +++ b/src/devices/cpu/se3208/se3208.h @@ -33,7 +33,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/sh2/sh2.cpp b/src/devices/cpu/sh2/sh2.cpp index 1877196a013..a0de2a0b966 100644 --- a/src/devices/cpu/sh2/sh2.cpp +++ b/src/devices/cpu/sh2/sh2.cpp @@ -219,14 +219,17 @@ sh1_device::sh1_device(const machine_config &mconfig, const char *tag, device_t { } -const address_space_config *sh2_device::memory_space_config(address_spacenum spacenum) const +std::vector> sh2_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &m_decrypted_program_config : nullptr; - default: return nullptr; - } + if(has_configured_map(AS_OPCODES)) + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_OPCODES, &m_decrypted_program_config) + }; + else + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; } offs_t sh2_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) @@ -2347,7 +2350,7 @@ void sh2_device::device_start() m_ftcsr_read_cb.bind_relative_to(*owner()); m_program = &space(AS_PROGRAM); - m_decrypted_program = has_space(AS_DECRYPTED_OPCODES) ? &space(AS_DECRYPTED_OPCODES) : &space(AS_PROGRAM); + m_decrypted_program = has_space(AS_OPCODES) ? &space(AS_OPCODES) : &space(AS_PROGRAM); m_direct = &m_decrypted_program->direct(); m_internal = &space(AS_PROGRAM); diff --git a/src/devices/cpu/sh2/sh2.h b/src/devices/cpu/sh2/sh2.h index 77095149254..decec04c6ea 100644 --- a/src/devices/cpu/sh2/sh2.h +++ b/src/devices/cpu/sh2/sh2.h @@ -128,7 +128,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/sh2/sh7604_bus.cpp b/src/devices/cpu/sh2/sh7604_bus.cpp index 596172879e4..f4000a46300 100644 --- a/src/devices/cpu/sh2/sh7604_bus.cpp +++ b/src/devices/cpu/sh2/sh7604_bus.cpp @@ -93,7 +93,7 @@ WRITE16_MEMBER(sh7604_bus_device::refresh_timer_constant_w) COMBINE_DATA(&m_rtcor); } -static ADDRESS_MAP_START( bus_regs, AS_0, 16, sh7604_bus_device ) +DEVICE_ADDRESS_MAP_START( bus_regs, 16, sh7604_bus_device ) AM_RANGE(0x00, 0x01) AM_READWRITE(bus_control_1_r, bus_control_1_w) AM_RANGE(0x02, 0x03) AM_READWRITE(bus_control_2_r, bus_control_2_w) AM_RANGE(0x04, 0x05) AM_READWRITE(wait_control_r, wait_control_w) @@ -110,17 +110,9 @@ ADDRESS_MAP_END sh7604_bus_device::sh7604_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SH7604_BUS, tag, owner, clock) - , device_memory_interface(mconfig, *this) - , m_space_config("regs", ENDIANNESS_BIG, 16, 4, 0, nullptr, *ADDRESS_MAP_NAME(bus_regs)) { } - -const address_space_config *sh7604_bus_device::memory_space_config(address_spacenum spacenum) const -{ - return (spacenum == AS_0) ? &m_space_config : nullptr; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/cpu/sh2/sh7604_bus.h b/src/devices/cpu/sh2/sh7604_bus.h index 8c907a13e06..486ff93558f 100644 --- a/src/devices/cpu/sh2/sh7604_bus.h +++ b/src/devices/cpu/sh2/sh7604_bus.h @@ -26,14 +26,15 @@ // ======================> sh7604_bus_device -class sh7604_bus_device : public device_t, - public device_memory_interface +class sh7604_bus_device : public device_t { public: // construction/destruction sh7604_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // I/O operations + DECLARE_ADDRESS_MAP( bus_regs, 16 ); + DECLARE_WRITE32_MEMBER( write ); DECLARE_READ32_MEMBER( read ); DECLARE_READ16_MEMBER( bus_control_1_r ); @@ -50,7 +51,6 @@ public: DECLARE_WRITE16_MEMBER( refresh_timer_counter_w ); DECLARE_READ16_MEMBER( refresh_timer_constant_r ); DECLARE_WRITE16_MEMBER( refresh_timer_constant_w ); - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; protected: // device-level overrides diff --git a/src/devices/cpu/sh2/sh7604_sci.cpp b/src/devices/cpu/sh2/sh7604_sci.cpp index e49c7d988e6..248e0112622 100644 --- a/src/devices/cpu/sh2/sh7604_sci.cpp +++ b/src/devices/cpu/sh2/sh7604_sci.cpp @@ -99,7 +99,7 @@ READ8_MEMBER(sh7604_sci_device::receive_data_r) return 0; } -static ADDRESS_MAP_START( sci_regs, AS_0, 8, sh7604_sci_device ) +DEVICE_ADDRESS_MAP_START( sci_regs, 8, sh7604_sci_device ) AM_RANGE(0x00, 0x00) AM_READWRITE(serial_mode_r, serial_mode_w) AM_RANGE(0x01, 0x01) AM_READWRITE(bitrate_r, bitrate_w) AM_RANGE(0x02, 0x02) AM_READWRITE(serial_control_r,serial_control_w) @@ -114,18 +114,11 @@ ADDRESS_MAP_END sh7604_sci_device::sh7604_sci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SH7604_SCI, tag, owner, clock) - , device_memory_interface(mconfig, *this) - , m_space_config("regs", ENDIANNESS_BIG, 8, 4, 0, nullptr, *ADDRESS_MAP_NAME(sci_regs)) { } -const address_space_config *sh7604_sci_device::memory_space_config(address_spacenum spacenum) const -{ - return (spacenum == AS_0) ? &m_space_config : nullptr; -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/cpu/sh2/sh7604_sci.h b/src/devices/cpu/sh2/sh7604_sci.h index 082e8c37ae9..d7a290f6946 100644 --- a/src/devices/cpu/sh2/sh7604_sci.h +++ b/src/devices/cpu/sh2/sh7604_sci.h @@ -26,14 +26,15 @@ // ======================> sh7604_sci_device -class sh7604_sci_device : public device_t, - public device_memory_interface +class sh7604_sci_device : public device_t { public: // construction/destruction sh7604_sci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // I/O operations + DECLARE_ADDRESS_MAP( sci_regs, 8 ); + DECLARE_WRITE8_MEMBER( write ); DECLARE_READ8_MEMBER( read ); @@ -50,8 +51,6 @@ public: DECLARE_WRITE8_MEMBER( serial_ack_w ); DECLARE_READ8_MEMBER( receive_data_r ); - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; - protected: enum { STATUS_MPBT = 1 << 0, diff --git a/src/devices/cpu/sh2/sh7604_wdt.cpp b/src/devices/cpu/sh2/sh7604_wdt.cpp index 9db87131378..16b40f30768 100644 --- a/src/devices/cpu/sh2/sh7604_wdt.cpp +++ b/src/devices/cpu/sh2/sh7604_wdt.cpp @@ -27,7 +27,7 @@ DEFINE_DEVICE_TYPE(SH7604_WDT, sh7604_wdt_device, "sh7604wdt", "SH7604 Watchdog // LIVE DEVICE //************************************************************************** -static ADDRESS_MAP_START( wdt_regs, AS_0, 8, sh7604_wdt_device ) +DEVICE_ADDRESS_MAP_START( wdt_regs, 8, sh7604_wdt_device ) // AM_RANGE(0x00, 0x00) timer control/status // AM_RANGE(0x01, 0x01) timer counter // AM_RANGE(0x02, 0x02) write only, reset control register @@ -40,19 +40,10 @@ ADDRESS_MAP_END sh7604_wdt_device::sh7604_wdt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SH7604_WDT, tag, owner, clock) - , device_memory_interface(mconfig, *this) - , m_space_config("regs", ENDIANNESS_BIG, 8, 4, 0, nullptr, *ADDRESS_MAP_NAME(wdt_regs)) - { } -const address_space_config *sh7604_wdt_device::memory_space_config(address_spacenum spacenum) const -{ - return &m_space_config; -} - - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/cpu/sh2/sh7604_wdt.h b/src/devices/cpu/sh2/sh7604_wdt.h index 352b94e3190..7e014745f19 100644 --- a/src/devices/cpu/sh2/sh7604_wdt.h +++ b/src/devices/cpu/sh2/sh7604_wdt.h @@ -26,18 +26,18 @@ // ======================> sh7604_wdt_device -class sh7604_wdt_device : public device_t, - public device_memory_interface +class sh7604_wdt_device : public device_t { public: // construction/destruction sh7604_wdt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // I/O operations + DECLARE_ADDRESS_MAP( wdt_regs, 8 ); + DECLARE_WRITE16_MEMBER( write ); DECLARE_READ8_MEMBER( read ); - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; protected: // device-level overrides // virtual void device_validity_check(validity_checker &valid) const; diff --git a/src/devices/cpu/sh4/sh4.cpp b/src/devices/cpu/sh4/sh4.cpp index c9741c19ac5..6c2271ddfea 100644 --- a/src/devices/cpu/sh4/sh4.cpp +++ b/src/devices/cpu/sh4/sh4.cpp @@ -119,6 +119,14 @@ sh34_base_device::sh34_base_device(const machine_config &mconfig, device_type ty #endif } +std::vector> sh34_base_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + sh3_base_device::sh3_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, endianness_t endianness) : sh34_base_device(mconfig, type, tag, owner, clock, endianness, ADDRESS_MAP_NAME(sh3_internal_map)) diff --git a/src/devices/cpu/sh4/sh4.h b/src/devices/cpu/sh4/sh4.h index 29977b286dd..bb24712f7d1 100644 --- a/src/devices/cpu/sh4/sh4.h +++ b/src/devices/cpu/sh4/sh4.h @@ -243,7 +243,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_IO) ? &m_io_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/sharc/sharc.cpp b/src/devices/cpu/sharc/sharc.cpp index c6faeb367ef..1b37cd1273f 100644 --- a/src/devices/cpu/sharc/sharc.cpp +++ b/src/devices/cpu/sharc/sharc.cpp @@ -88,6 +88,13 @@ adsp21062_device::adsp21062_device(const machine_config &mconfig, const char *ta { } +std::vector> adsp21062_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} offs_t adsp21062_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/sharc/sharc.h b/src/devices/cpu/sharc/sharc.h index a55fa5facf7..0eedd1e9297 100644 --- a/src/devices/cpu/sharc/sharc.h +++ b/src/devices/cpu/sharc/sharc.h @@ -217,7 +217,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides static constexpr uint32_t OPCODE_BYTES = 8; // actually 6, but emulation requires padding to 64 bits diff --git a/src/devices/cpu/sm510/sm510.h b/src/devices/cpu/sm510/sm510.h index 9e86ad75cf1..be2c3bb16c0 100644 --- a/src/devices/cpu/sm510/sm510.h +++ b/src/devices/cpu/sm510/sm510.h @@ -145,7 +145,7 @@ protected: virtual void execute_one() { } // -> child class // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual u32 disasm_min_opcode_bytes() const override { return 1; } diff --git a/src/devices/cpu/sm510/sm510base.cpp b/src/devices/cpu/sm510/sm510base.cpp index 0a52759be02..4df1118db8a 100644 --- a/src/devices/cpu/sm510/sm510base.cpp +++ b/src/devices/cpu/sm510/sm510base.cpp @@ -183,6 +183,14 @@ inline u16 sm510_base_device::get_lcd_row(int column, u8* ram) return rowdata; } +std::vector> sm510_base_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} + void sm510_base_device::lcd_update() { // 4 columns diff --git a/src/devices/cpu/sm8500/sm8500.cpp b/src/devices/cpu/sm8500/sm8500.cpp index d7fecc10d31..1c7111a39f7 100644 --- a/src/devices/cpu/sm8500/sm8500.cpp +++ b/src/devices/cpu/sm8500/sm8500.cpp @@ -45,6 +45,13 @@ sm8500_cpu_device::sm8500_cpu_device(const machine_config &mconfig, const char * { } +std::vector> sm8500_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + }; +} + void sm8500_cpu_device::get_sp() { diff --git a/src/devices/cpu/sm8500/sm8500.h b/src/devices/cpu/sm8500/sm8500.h index b8889ce51e1..ee2d4b3f2f2 100644 --- a/src/devices/cpu/sm8500/sm8500.h +++ b/src/devices/cpu/sm8500/sm8500.h @@ -68,7 +68,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/sparc/mb86901.cpp b/src/devices/cpu/sparc/mb86901.cpp index cc18ae551de..b86f010062d 100644 --- a/src/devices/cpu/sparc/mb86901.cpp +++ b/src/devices/cpu/sparc/mb86901.cpp @@ -433,15 +433,11 @@ void mb86901_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *mb86901_device::memory_space_config(address_spacenum spacenum) const +std::vector> mb86901_device::memory_space_config() const { - switch (spacenum) - { - case AS_PROGRAM: - return &m_program_config; - default: - return nullptr; - } + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; } diff --git a/src/devices/cpu/sparc/sparc.h b/src/devices/cpu/sparc/sparc.h index 3eef8c29170..f3274833fc2 100644 --- a/src/devices/cpu/sparc/sparc.h +++ b/src/devices/cpu/sparc/sparc.h @@ -40,7 +40,7 @@ public: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; diff --git a/src/devices/cpu/spc700/spc700.cpp b/src/devices/cpu/spc700/spc700.cpp index 0d4ed75098e..14c72f28c5c 100644 --- a/src/devices/cpu/spc700/spc700.cpp +++ b/src/devices/cpu/spc700/spc700.cpp @@ -193,7 +193,7 @@ static inline int MAKE_INT_8(int A) {return (A & 0x80) ? A | ~0xff : A & 0xff;} #define VFLAG_SUB_8(S, D, R) ((S^D) & (R^D)) #define VFLAG_SUB_16(S, D, R) (((S^D) & (R^D))>>8) -#define CFLAG_AS_1() ((FLAG_C>>8)&1) +#define CFLAG_1() ((FLAG_C>>8)&1) #define CFLAG_AS_NOT_1() (!(FLAG_C&CFLAG_SET)) #define NZFLAG_16(A) (((A)&0x7f) | (((A)>>1)&0x40) | (((A)>>8)&0xff)) @@ -234,6 +234,13 @@ spc700_device::spc700_device(const machine_config &mconfig, const char *tag, dev { } +std::vector> spc700_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + /* ======================================================================== */ /* ============================ UTILITY MACROS ============================ */ @@ -449,7 +456,7 @@ void spc700_device::SET_REG_YA(uint32_t value) (FLAG_H& HFLAG_SET) | \ FLAG_I | \ ((!FLAG_Z) << 1) | \ - CFLAG_AS_1()) + CFLAG_1()) /* Set the Process Status Register */ void spc700_device::SET_REG_P(uint32_t value) @@ -514,8 +521,8 @@ void spc700_device::SET_FLAG_I(uint32_t value) /* ======================================================================== */ #define SUBOP_ADC(A, B) \ - m_spc_int16 = (A) + (B) + CFLAG_AS_1(); \ - TMP1 = ((A) & 0x0f) + (CFLAG_AS_1()); \ + m_spc_int16 = (A) + (B) + CFLAG_1(); \ + TMP1 = ((A) & 0x0f) + (CFLAG_1()); \ FLAG_C = (m_spc_int16 > 0xff) ? CFLAG_SET : 0; \ FLAG_V = (~((A) ^ (B))) & (((A) ^ m_spc_int16) & 0x80); \ FLAG_H = (((m_spc_int16 & 0x0f) - TMP1) & 0x10) >> 1; \ @@ -1069,14 +1076,14 @@ void spc700_device::SET_FLAG_I(uint32_t value) /* Rotate Left the accumulator */ #define OP_ROL(BCLK) \ CLK(BCLK); \ - FLAG_C = (REG_A<<1) | CFLAG_AS_1(); \ + FLAG_C = (REG_A<<1) | CFLAG_1(); \ FLAG_NZ = REG_A = MAKE_UINT_8(FLAG_C) /* Rotate Left an operand */ #define OP_ROLM(BCLK, MODE) \ CLK(BCLK); \ DST = EA_##MODE(); \ - FLAG_C = (read_8_##MODE(DST)<<1) | CFLAG_AS_1(); \ + FLAG_C = (read_8_##MODE(DST)<<1) | CFLAG_1(); \ FLAG_NZ = MAKE_UINT_8(FLAG_C); \ write_8_##MODE(DST, FLAG_NZ) @@ -1100,7 +1107,7 @@ void spc700_device::SET_FLAG_I(uint32_t value) #define OP_SBC(BCLK, MODE) \ CLK(BCLK); \ SRC = OPER_8_##MODE(); \ - TMP2 = REG_A - SRC - (CFLAG_AS_1() ^ 1); \ + TMP2 = REG_A - SRC - (CFLAG_1() ^ 1); \ SUBOP_ADC(REG_A, ~SRC); \ FLAG_C = (TMP2 <= 0xff) ? CFLAG_SET : 0; \ REG_A = (uint8_t)m_spc_int16; @@ -1111,7 +1118,7 @@ void spc700_device::SET_FLAG_I(uint32_t value) SRC = OPER_8_##SMODE(); \ DST = EA_##DMODE(); \ TMP3 = read_8_##DMODE(DST); \ - TMP2 = TMP3 - SRC - (CFLAG_AS_1() ^ 1); \ + TMP2 = TMP3 - SRC - (CFLAG_1() ^ 1); \ SUBOP_ADC(~SRC, TMP3); \ FLAG_C = (TMP2 <= 0xff) ? CFLAG_SET : 0; \ write_8_##DMODE(DST, (uint8_t)m_spc_int16) diff --git a/src/devices/cpu/spc700/spc700.h b/src/devices/cpu/spc700/spc700.h index bef136b2815..52802d99e15 100644 --- a/src/devices/cpu/spc700/spc700.h +++ b/src/devices/cpu/spc700/spc700.h @@ -25,7 +25,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/ssem/ssem.cpp b/src/devices/cpu/ssem/ssem.cpp index c15b984c546..b441ff926d2 100644 --- a/src/devices/cpu/ssem/ssem.cpp +++ b/src/devices/cpu/ssem/ssem.cpp @@ -135,13 +135,11 @@ void ssem_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *ssem_device::memory_space_config(address_spacenum spacenum) const +std::vector> ssem_device::memory_space_config() const { - if (spacenum == AS_PROGRAM) - { - return &m_program_config; - } - return nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; } diff --git a/src/devices/cpu/ssem/ssem.h b/src/devices/cpu/ssem/ssem.h index a62d8bb79c9..233a9ead024 100644 --- a/src/devices/cpu/ssem/ssem.h +++ b/src/devices/cpu/ssem/ssem.h @@ -38,7 +38,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override; diff --git a/src/devices/cpu/ssp1601/ssp1601.cpp b/src/devices/cpu/ssp1601/ssp1601.cpp index c50e75a1886..7468e131040 100644 --- a/src/devices/cpu/ssp1601/ssp1601.cpp +++ b/src/devices/cpu/ssp1601/ssp1601.cpp @@ -200,6 +200,14 @@ ssp1601_device::ssp1601_device(const machine_config &mconfig, const char *tag, d { } +std::vector> ssp1601_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + offs_t ssp1601_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/ssp1601/ssp1601.h b/src/devices/cpu/ssp1601/ssp1601.h index 7f241a83067..51aed1f04b1 100644 --- a/src/devices/cpu/ssp1601/ssp1601.h +++ b/src/devices/cpu/ssp1601/ssp1601.h @@ -37,7 +37,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_IO) ? &m_io_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/superfx/superfx.cpp b/src/devices/cpu/superfx/superfx.cpp index a44d8bd7781..b39e4a98cc3 100644 --- a/src/devices/cpu/superfx/superfx.cpp +++ b/src/devices/cpu/superfx/superfx.cpp @@ -16,6 +16,13 @@ superfx_device::superfx_device(const machine_config &mconfig, const char *tag, d { } +std::vector> superfx_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + #define SUPERFX_SFR_OV_SET ((m_sfr & SUPERFX_SFR_OV) ? 1 : 0) #define SUPERFX_SFR_OV_CLEAR ((m_sfr & SUPERFX_SFR_OV) ? 0 : 1) diff --git a/src/devices/cpu/superfx/superfx.h b/src/devices/cpu/superfx/superfx.h index f17c0e8349e..724d588f3ae 100644 --- a/src/devices/cpu/superfx/superfx.h +++ b/src/devices/cpu/superfx/superfx.h @@ -119,7 +119,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/t11/t11.cpp b/src/devices/cpu/t11/t11.cpp index 9ff4654cce7..ceae5d9354d 100644 --- a/src/devices/cpu/t11/t11.cpp +++ b/src/devices/cpu/t11/t11.cpp @@ -60,6 +60,13 @@ t11_device::t11_device(const machine_config &mconfig, const char *tag, device_t { } +std::vector> t11_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + /************************************* * diff --git a/src/devices/cpu/t11/t11.h b/src/devices/cpu/t11/t11.h index dbf62e6f5e5..31e05c34464 100644 --- a/src/devices/cpu/t11/t11.h +++ b/src/devices/cpu/t11/t11.h @@ -60,7 +60,7 @@ protected: virtual uint32_t execute_default_irq_vector() const override { return -1; }; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/tlcs870/tlcs870.cpp b/src/devices/cpu/tlcs870/tlcs870.cpp index 62f7a8de450..591ef004b8b 100644 --- a/src/devices/cpu/tlcs870/tlcs870.cpp +++ b/src/devices/cpu/tlcs870/tlcs870.cpp @@ -247,6 +247,14 @@ tmp87ph40an_device::tmp87ph40an_device(const machine_config &mconfig, const char { } +std::vector> tlcs870_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + uint8_t tlcs870_device::RM8 (uint32_t a) { return m_program->read_byte( a ); } uint16_t tlcs870_device::RM16(uint32_t a) { return RM8(a) | (RM8( (a+1) & 0xffff ) << 8); } diff --git a/src/devices/cpu/tlcs870/tlcs870.h b/src/devices/cpu/tlcs870/tlcs870.h index 7d93d2abf22..ca4e98ad6d5 100644 --- a/src/devices/cpu/tlcs870/tlcs870.h +++ b/src/devices/cpu/tlcs870/tlcs870.h @@ -98,7 +98,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/tlcs90/tlcs90.cpp b/src/devices/cpu/tlcs90/tlcs90.cpp index c80aaa1195f..c6a21d96c0b 100644 --- a/src/devices/cpu/tlcs90/tlcs90.cpp +++ b/src/devices/cpu/tlcs90/tlcs90.cpp @@ -103,6 +103,13 @@ tmp90ph44_device::tmp90ph44_device(const machine_config &mconfig, const char *ta { } +std::vector> tlcs90_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + enum { T90_B, T90_C, T90_D, T90_E, T90_H, T90_L, T90_A, diff --git a/src/devices/cpu/tlcs90/tlcs90.h b/src/devices/cpu/tlcs90/tlcs90.h index ea0c90917e7..a9b610b79cd 100644 --- a/src/devices/cpu/tlcs90/tlcs90.h +++ b/src/devices/cpu/tlcs90/tlcs90.h @@ -125,7 +125,7 @@ protected: virtual void execute_burn(int32_t cycles) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/tlcs900/tlcs900.cpp b/src/devices/cpu/tlcs900/tlcs900.cpp index d627fcf044e..b5f6141cc5c 100644 --- a/src/devices/cpu/tlcs900/tlcs900.cpp +++ b/src/devices/cpu/tlcs900/tlcs900.cpp @@ -69,6 +69,13 @@ tmp95c061_device::tmp95c061_device(const machine_config &mconfig, const char *ta { } +std::vector> tlcs900h_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + //------------------------------------------------- // device_config_complete - perform any // operations now that the configuration is diff --git a/src/devices/cpu/tlcs900/tlcs900.h b/src/devices/cpu/tlcs900/tlcs900.h index 197b11f1398..ff3ad4b66ae 100644 --- a/src/devices/cpu/tlcs900/tlcs900.h +++ b/src/devices/cpu/tlcs900/tlcs900.h @@ -66,10 +66,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override - { - return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/tms1000/tms1k_base.cpp b/src/devices/cpu/tms1000/tms1k_base.cpp index ba526ad9367..da10efd063c 100644 --- a/src/devices/cpu/tms1000/tms1k_base.cpp +++ b/src/devices/cpu/tms1000/tms1k_base.cpp @@ -260,6 +260,13 @@ void tms1k_base_device::device_reset() m_power_off(0); } +std::vector> tms1k_base_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} //------------------------------------------------- diff --git a/src/devices/cpu/tms1000/tms1k_base.h b/src/devices/cpu/tms1000/tms1k_base.h index 16e095744c9..aab5e9407c1 100644 --- a/src/devices/cpu/tms1000/tms1k_base.h +++ b/src/devices/cpu/tms1000/tms1k_base.h @@ -166,7 +166,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual u32 disasm_min_opcode_bytes() const override { return 1; } diff --git a/src/devices/cpu/tms32010/tms32010.cpp b/src/devices/cpu/tms32010/tms32010.cpp index da23e95eb76..c757ed91fc5 100644 --- a/src/devices/cpu/tms32010/tms32010.cpp +++ b/src/devices/cpu/tms32010/tms32010.cpp @@ -125,6 +125,14 @@ tms32016_device::tms32016_device(const machine_config &mconfig, const char *tag, { } +std::vector> tms32010_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config) + }; +} offs_t tms32010_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/tms32010/tms32010.h b/src/devices/cpu/tms32010/tms32010.h index e6728ec165e..95fa2ce5c9c 100644 --- a/src/devices/cpu/tms32010/tms32010.h +++ b/src/devices/cpu/tms32010/tms32010.h @@ -64,7 +64,7 @@ protected: virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 4); } // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_IO) ? &m_io_config : (spacenum == AS_DATA) ? &m_data_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/tms32025/tms32025.cpp b/src/devices/cpu/tms32025/tms32025.cpp index 119ffaa6d96..209d9ed368a 100644 --- a/src/devices/cpu/tms32025/tms32025.cpp +++ b/src/devices/cpu/tms32025/tms32025.cpp @@ -244,6 +244,15 @@ tms32026_device::tms32026_device(const machine_config &mconfig, const char *tag, m_fixed_STR1 = 0x0100; } +std::vector> tms32025_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + offs_t tms32025_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/tms32025/tms32025.h b/src/devices/cpu/tms32025/tms32025.h index 1abd9f107ef..7a6df9e680b 100644 --- a/src/devices/cpu/tms32025/tms32025.h +++ b/src/devices/cpu/tms32025/tms32025.h @@ -119,7 +119,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_IO) ? &m_io_config : (spacenum == AS_DATA) ? &m_data_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/tms32031/tms32031.cpp b/src/devices/cpu/tms32031/tms32031.cpp index 944af23df89..b9b674c51e8 100644 --- a/src/devices/cpu/tms32031/tms32031.cpp +++ b/src/devices/cpu/tms32031/tms32031.cpp @@ -456,9 +456,11 @@ void tms3203x_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *tms3203x_device::memory_space_config(address_spacenum spacenum) const +std::vector> tms3203x_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; } diff --git a/src/devices/cpu/tms32031/tms32031.h b/src/devices/cpu/tms32031/tms32031.h index b2d38dae11b..7cbdf9cf9ce 100644 --- a/src/devices/cpu/tms32031/tms32031.h +++ b/src/devices/cpu/tms32031/tms32031.h @@ -174,7 +174,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/tms32051/tms32051.cpp b/src/devices/cpu/tms32051/tms32051.cpp index f88dc0fc69d..c5c198ff1ba 100644 --- a/src/devices/cpu/tms32051/tms32051.cpp +++ b/src/devices/cpu/tms32051/tms32051.cpp @@ -82,6 +82,15 @@ tms32051_device::tms32051_device(const machine_config &mconfig, const char *tag, { } +std::vector> tms32051_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + /************************************************************************** * TMS32053 Internal memory map diff --git a/src/devices/cpu/tms32051/tms32051.h b/src/devices/cpu/tms32051/tms32051.h index 43553203dc2..bb678871db6 100644 --- a/src/devices/cpu/tms32051/tms32051.h +++ b/src/devices/cpu/tms32051/tms32051.h @@ -77,7 +77,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ) ); } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_min_opcode_bytes() const override { return 2; } diff --git a/src/devices/cpu/tms32082/tms32082.cpp b/src/devices/cpu/tms32082/tms32082.cpp index 749a8657d6e..a405dd3da6a 100644 --- a/src/devices/cpu/tms32082/tms32082.cpp +++ b/src/devices/cpu/tms32082/tms32082.cpp @@ -50,6 +50,19 @@ tms32082_mp_device::tms32082_mp_device(const machine_config &mconfig, const char { } +std::vector> tms32082_mp_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + +std::vector> tms32082_pp_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} offs_t tms32082_mp_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/tms32082/tms32082.h b/src/devices/cpu/tms32082/tms32082.h index 852f3833363..384327c0fb6 100644 --- a/src/devices/cpu/tms32082/tms32082.h +++ b/src/devices/cpu/tms32082/tms32082.h @@ -87,14 +87,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override - { - switch (spacenum) - { - case AS_PROGRAM: return &m_program_config; - default: return nullptr; - } - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; @@ -182,14 +175,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override - { - switch (spacenum) - { - case AS_PROGRAM: return &m_program_config; - default: return nullptr; - } - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/tms34010/tms34010.cpp b/src/devices/cpu/tms34010/tms34010.cpp index e437af461c5..0b7fd81df60 100644 --- a/src/devices/cpu/tms34010/tms34010.cpp +++ b/src/devices/cpu/tms34010/tms34010.cpp @@ -59,6 +59,12 @@ tms34020_device::tms34020_device(const machine_config &mconfig, const char *tag, m_is_34020 = 1; } +std::vector> tms340x0_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} #include "34010ops.h" diff --git a/src/devices/cpu/tms34010/tms34010.h b/src/devices/cpu/tms34010/tms34010.h index 32b445629a9..67efacdc008 100644 --- a/src/devices/cpu/tms34010/tms34010.h +++ b/src/devices/cpu/tms34010/tms34010.h @@ -271,7 +271,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/tms57002/tms57002.cpp b/src/devices/cpu/tms57002/tms57002.cpp index 92da5cd8c72..5152cef06fd 100644 --- a/src/devices/cpu/tms57002/tms57002.cpp +++ b/src/devices/cpu/tms57002/tms57002.cpp @@ -908,11 +908,10 @@ offs_t tms57002_device::disasm_disassemble(std::ostream &stream, offs_t pc, cons return CPU_DISASSEMBLE_NAME(tms57002)(this, stream, pc, oprom, opram, options); } -const address_space_config *tms57002_device::memory_space_config(address_spacenum spacenum) const +std::vector> tms57002_device::memory_space_config() const { - switch(spacenum) { - case AS_PROGRAM: return &program_config; - case AS_DATA: return &data_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(AS_PROGRAM, &program_config), + std::make_pair(AS_DATA, &data_config) + }; } diff --git a/src/devices/cpu/tms57002/tms57002.h b/src/devices/cpu/tms57002/tms57002.h index 97fec1739c2..833728adef0 100644 --- a/src/devices/cpu/tms57002/tms57002.h +++ b/src/devices/cpu/tms57002/tms57002.h @@ -30,7 +30,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; virtual uint32_t execute_min_cycles() const override; virtual uint32_t execute_max_cycles() const override; virtual uint32_t execute_input_lines() const override; diff --git a/src/devices/cpu/tms7000/tms7000.cpp b/src/devices/cpu/tms7000/tms7000.cpp index dbeeec2ac5e..2610a129bcb 100644 --- a/src/devices/cpu/tms7000/tms7000.cpp +++ b/src/devices/cpu/tms7000/tms7000.cpp @@ -174,6 +174,14 @@ tms70c46_device::tms70c46_device(const machine_config &mconfig, const char *tag, { } +std::vector> tms7000_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + //------------------------------------------------- // device_start - device-specific startup diff --git a/src/devices/cpu/tms7000/tms7000.h b/src/devices/cpu/tms7000/tms7000.h index c6553e51c4c..2e9380226c2 100644 --- a/src/devices/cpu/tms7000/tms7000.h +++ b/src/devices/cpu/tms7000/tms7000.h @@ -76,7 +76,7 @@ protected: virtual void execute_set_input(int extline, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/tms9900/ti990_10.cpp b/src/devices/cpu/tms9900/ti990_10.cpp index 9b724533a55..1b715deaa1c 100644 --- a/src/devices/cpu/tms9900/ti990_10.cpp +++ b/src/devices/cpu/tms9900/ti990_10.cpp @@ -83,19 +83,12 @@ void ti990_10_device::device_reset() if (TRACE_EMU) logerror("ti990_10: Device reset by emulator\n"); } -const address_space_config *ti990_10_device::memory_space_config(address_spacenum spacenum) const +std::vector> ti990_10_device::memory_space_config() const { - switch (spacenum) - { - case AS_PROGRAM: - return &m_program_config; - - case AS_IO: - return &m_io_config; - - default: - return nullptr; - } + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } void ti990_10_device::execute_run() diff --git a/src/devices/cpu/tms9900/ti990_10.h b/src/devices/cpu/tms9900/ti990_10.h index f1c27d809d6..832b1d5dd86 100644 --- a/src/devices/cpu/tms9900/ti990_10.h +++ b/src/devices/cpu/tms9900/ti990_10.h @@ -38,7 +38,7 @@ protected: uint32_t disasm_max_opcode_bytes() const override; offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; - const address_space_config* memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; const address_space_config m_program_config; const address_space_config m_io_config; diff --git a/src/devices/cpu/tms9900/tms9900.cpp b/src/devices/cpu/tms9900/tms9900.cpp index 7cc7552c502..4860c0a172e 100644 --- a/src/devices/cpu/tms9900/tms9900.cpp +++ b/src/devices/cpu/tms9900/tms9900.cpp @@ -434,19 +434,12 @@ void tms99xx_device::write_workspace_register_debug(int reg, uint16_t data) m_icount = temp; } -const address_space_config *tms99xx_device::memory_space_config(address_spacenum spacenum) const +std::vector> tms99xx_device::memory_space_config() const { - switch (spacenum) - { - case AS_PROGRAM: - return &m_program_config; - - case AS_IO: - return &m_io_config; - - default: - return nullptr; - } + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } /************************************************************************** diff --git a/src/devices/cpu/tms9900/tms9900.h b/src/devices/cpu/tms9900/tms9900.h index 57d6bdfe5be..386a5af85f8 100644 --- a/src/devices/cpu/tms9900/tms9900.h +++ b/src/devices/cpu/tms9900/tms9900.h @@ -86,7 +86,7 @@ protected: virtual uint32_t disasm_max_opcode_bytes() const override; virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; - const address_space_config* memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; // Let these methods be overloaded by the TMS9980. virtual void mem_read(void); diff --git a/src/devices/cpu/tms9900/tms9995.cpp b/src/devices/cpu/tms9900/tms9995.cpp index 70deeb97026..c9fd8ca4616 100644 --- a/src/devices/cpu/tms9900/tms9995.cpp +++ b/src/devices/cpu/tms9900/tms9995.cpp @@ -484,19 +484,12 @@ void tms9995_device::write_workspace_register_debug(int reg, uint16_t data) m_icount = temp; } -const address_space_config *tms9995_device::memory_space_config(address_spacenum spacenum) const +std::vector> tms9995_device::memory_space_config() const { - switch (spacenum) - { - case AS_PROGRAM: - return &m_program_config; - - case AS_IO: - return &m_io_config; - - default: - return nullptr; - } + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } /************************************************************************** diff --git a/src/devices/cpu/tms9900/tms9995.h b/src/devices/cpu/tms9900/tms9995.h index f9e63051b4c..e6916c5bd41 100644 --- a/src/devices/cpu/tms9900/tms9995.h +++ b/src/devices/cpu/tms9900/tms9995.h @@ -98,7 +98,7 @@ protected: virtual uint32_t disasm_max_opcode_bytes() const override; virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; - const address_space_config* memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return clocks / 4.0; } uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return cycles * 4.0; } diff --git a/src/devices/cpu/ucom4/ucom4.cpp b/src/devices/cpu/ucom4/ucom4.cpp index 0f3529c9bb9..381f779586f 100644 --- a/src/devices/cpu/ucom4/ucom4.cpp +++ b/src/devices/cpu/ucom4/ucom4.cpp @@ -107,6 +107,14 @@ upd552_cpu_device::upd552_cpu_device(const machine_config &mconfig, const char * { } +std::vector> ucom4_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} + // disasm void ucom4_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const diff --git a/src/devices/cpu/ucom4/ucom4.h b/src/devices/cpu/ucom4/ucom4.h index eb505917906..1a9e5bc5dd5 100644 --- a/src/devices/cpu/ucom4/ucom4.h +++ b/src/devices/cpu/ucom4/ucom4.h @@ -131,7 +131,7 @@ protected: virtual void execute_run() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return(spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual u32 disasm_min_opcode_bytes() const override { return 1; } diff --git a/src/devices/cpu/unsp/unsp.cpp b/src/devices/cpu/unsp/unsp.cpp index 302642d941d..70f12060f9e 100644 --- a/src/devices/cpu/unsp/unsp.cpp +++ b/src/devices/cpu/unsp/unsp.cpp @@ -23,6 +23,12 @@ unsp_device::unsp_device(const machine_config &mconfig, const char *tag, device_ { } +std::vector> unsp_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} offs_t unsp_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/unsp/unsp.h b/src/devices/cpu/unsp/unsp.h index 85e46a44292..4ed412c6973 100644 --- a/src/devices/cpu/unsp/unsp.h +++ b/src/devices/cpu/unsp/unsp.h @@ -68,7 +68,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/upd7725/upd7725.cpp b/src/devices/cpu/upd7725/upd7725.cpp index 4164ced9dd0..a49ee9e9a96 100644 --- a/src/devices/cpu/upd7725/upd7725.cpp +++ b/src/devices/cpu/upd7725/upd7725.cpp @@ -206,11 +206,12 @@ void necdsp_device::device_reset() // the space doesn't exist //------------------------------------------------- -const address_space_config *necdsp_device::memory_space_config(address_spacenum spacenum) const +std::vector> necdsp_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_config : - (spacenum == AS_DATA) ? &m_data_config : - nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; } diff --git a/src/devices/cpu/upd7725/upd7725.h b/src/devices/cpu/upd7725/upd7725.h index ac4270729df..a1e3f55aa98 100644 --- a/src/devices/cpu/upd7725/upd7725.h +++ b/src/devices/cpu/upd7725/upd7725.h @@ -99,7 +99,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/upd7810/upd7810.cpp b/src/devices/cpu/upd7810/upd7810.cpp index 8509b133d63..c2136cf9bd4 100644 --- a/src/devices/cpu/upd7810/upd7810.cpp +++ b/src/devices/cpu/upd7810/upd7810.cpp @@ -483,6 +483,13 @@ upd78c06_device::upd78c06_device(const machine_config &mconfig, const char *tag, m_opXX = s_opXX_78c06; } +std::vector> upd7810_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + offs_t upd7810_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { extern CPU_DISASSEMBLE( upd7810 ); diff --git a/src/devices/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h index 1f49ba3cad0..0db2c77313b 100644 --- a/src/devices/cpu/upd7810/upd7810.h +++ b/src/devices/cpu/upd7810/upd7810.h @@ -221,7 +221,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/v30mz/v30mz.cpp b/src/devices/cpu/v30mz/v30mz.cpp index ad20e1349d4..af89c09144b 100644 --- a/src/devices/cpu/v30mz/v30mz.cpp +++ b/src/devices/cpu/v30mz/v30mz.cpp @@ -134,6 +134,14 @@ v30mz_cpu_device::v30mz_cpu_device(const machine_config &mconfig, const char *ta memset(&m_regs, 0x00, sizeof(m_regs)); } +std::vector> v30mz_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + void v30mz_cpu_device::device_start() { diff --git a/src/devices/cpu/v30mz/v30mz.h b/src/devices/cpu/v30mz/v30mz.h index bd7019757a1..b9949878d68 100644 --- a/src/devices/cpu/v30mz/v30mz.h +++ b/src/devices/cpu/v30mz/v30mz.h @@ -41,7 +41,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/v60/v60.cpp b/src/devices/cpu/v60/v60.cpp index a445f8c7dac..1950b64c788 100644 --- a/src/devices/cpu/v60/v60.cpp +++ b/src/devices/cpu/v60/v60.cpp @@ -106,6 +106,14 @@ v70_device::v70_device(const machine_config &mconfig, const char *tag, device_t { } +std::vector> v60_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + offs_t v60_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/v60/v60.h b/src/devices/cpu/v60/v60.h index 3348262624e..b69f15dbe90 100644 --- a/src/devices/cpu/v60/v60.h +++ b/src/devices/cpu/v60/v60.h @@ -103,7 +103,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/v810/v810.cpp b/src/devices/cpu/v810/v810.cpp index f7cd28bc44d..eb162d3af93 100644 --- a/src/devices/cpu/v810/v810.cpp +++ b/src/devices/cpu/v810/v810.cpp @@ -45,6 +45,14 @@ v810_device::v810_device(const machine_config &mconfig, const char *tag, device_ { } +std::vector> v810_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + offs_t v810_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { diff --git a/src/devices/cpu/v810/v810.h b/src/devices/cpu/v810/v810.h index 04dd7e68327..04c8c8882ea 100644 --- a/src/devices/cpu/v810/v810.h +++ b/src/devices/cpu/v810/v810.h @@ -98,7 +98,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_IO) ? &m_io_config : nullptr); } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/z180/z180.cpp b/src/devices/cpu/z180/z180.cpp index 2c54402ce1e..d28b9f45337 100644 --- a/src/devices/cpu/z180/z180.cpp +++ b/src/devices/cpu/z180/z180.cpp @@ -779,15 +779,19 @@ static std::unique_ptr SZHVC_sub; #include "z180op.hxx" -const address_space_config *z180_device::memory_space_config(address_spacenum spacenum) const +std::vector> z180_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_IO: return &m_io_config; - case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &m_decrypted_opcodes_config : nullptr; - default: return nullptr; - } + if(has_configured_map(AS_OPCODES)) + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_OPCODES, &m_decrypted_opcodes_config), + std::make_pair(AS_IO, &m_io_config) + }; + else + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } uint8_t z180_device::z180_readcontrol(offs_t port) @@ -1998,7 +2002,7 @@ void z180_device::device_start() m_program = &space(AS_PROGRAM); m_direct = &m_program->direct(); - m_oprogram = has_space(AS_DECRYPTED_OPCODES) ? &space(AS_DECRYPTED_OPCODES) : m_program; + m_oprogram = has_space(AS_OPCODES) ? &space(AS_OPCODES) : m_program; m_odirect = &m_oprogram->direct(); m_iospace = &space(AS_IO); @@ -2548,7 +2552,7 @@ void z180_device::execute_set_input(int irqline, int state) } /* logical to physical address translation */ -bool z180_device::memory_translate(address_spacenum spacenum, int intention, offs_t &address) +bool z180_device::memory_translate(int spacenum, int intention, offs_t &address) { if (spacenum == AS_PROGRAM) { diff --git a/src/devices/cpu/z180/z180.h b/src/devices/cpu/z180/z180.h index 13d558f0425..96c0d812fad 100644 --- a/src/devices/cpu/z180/z180.h +++ b/src/devices/cpu/z180/z180.h @@ -149,8 +149,8 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; - virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override; + virtual std::vector> memory_space_config() const override; + virtual bool memory_translate(int spacenum, int intention, offs_t &address) override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/z8/z8.cpp b/src/devices/cpu/z8/z8.cpp index 5d4b63f1096..b75f651cff1 100644 --- a/src/devices/cpu/z8/z8.cpp +++ b/src/devices/cpu/z8/z8.cpp @@ -204,6 +204,13 @@ offs_t z8_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint return CPU_DISASSEMBLE_NAME(z8)(this, stream, pc, oprom, opram, options); } +std::vector> z8_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} /*************************************************************************** INLINE FUNCTIONS diff --git a/src/devices/cpu/z8/z8.h b/src/devices/cpu/z8/z8.h index e8485a65b12..17ec3525d82 100644 --- a/src/devices/cpu/z8/z8.h +++ b/src/devices/cpu/z8/z8.h @@ -83,16 +83,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - switch ( spacenum ) - { - case AS_PROGRAM: return &m_program_config; - case AS_DATA: return &m_data_config; - default: return nullptr; - } - return nullptr; - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/z80/tmpz84c011.cpp b/src/devices/cpu/z80/tmpz84c011.cpp index 17d71eab222..d2e0a749a4a 100644 --- a/src/devices/cpu/z80/tmpz84c011.cpp +++ b/src/devices/cpu/z80/tmpz84c011.cpp @@ -53,6 +53,12 @@ tmpz84c011_device::tmpz84c011_device(const machine_config &mconfig, const char * memset(m_pio_latch, 0, 5); } +std::vector> tmpz84c011_device::memory_space_config() const +{ + auto r = z80_device::memory_space_config(); + r.back().second = &m_io_space_config; + return r; +} //------------------------------------------------- // device_start - device-specific startup diff --git a/src/devices/cpu/z80/tmpz84c011.h b/src/devices/cpu/z80/tmpz84c011.h index a713657f194..c614ac2bc78 100644 --- a/src/devices/cpu/z80/tmpz84c011.h +++ b/src/devices/cpu/z80/tmpz84c011.h @@ -131,14 +131,7 @@ protected: const address_space_config m_io_space_config; - const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - switch (spacenum) - { - case AS_IO: return &m_io_space_config; - default: return z80_device::memory_space_config(spacenum); - } - } + virtual std::vector> memory_space_config() const override; private: // devices/pointers diff --git a/src/devices/cpu/z80/tmpz84c015.cpp b/src/devices/cpu/z80/tmpz84c015.cpp index f80a690f706..1af7fbedf16 100644 --- a/src/devices/cpu/z80/tmpz84c015.cpp +++ b/src/devices/cpu/z80/tmpz84c015.cpp @@ -64,6 +64,13 @@ tmpz84c015_device::tmpz84c015_device(const machine_config &mconfig, const char * { } +std::vector> tmpz84c015_device::memory_space_config() const +{ + auto r = z80_device::memory_space_config(); + r.back().second = &m_io_space_config; + return r; +} + //------------------------------------------------- // device_start - device-specific startup diff --git a/src/devices/cpu/z80/tmpz84c015.h b/src/devices/cpu/z80/tmpz84c015.h index b9230c6a09b..e24ab6d33ec 100644 --- a/src/devices/cpu/z80/tmpz84c015.h +++ b/src/devices/cpu/z80/tmpz84c015.h @@ -183,14 +183,7 @@ protected: const address_space_config m_io_space_config; - const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - switch (spacenum) - { - case AS_IO: return &m_io_space_config; - default: return z80_device::memory_space_config(spacenum); - } - } + virtual std::vector> memory_space_config() const override; private: // devices/pointers diff --git a/src/devices/cpu/z80/z80.cpp b/src/devices/cpu/z80/z80.cpp index e1a04daf7db..55c9f33c729 100644 --- a/src/devices/cpu/z80/z80.cpp +++ b/src/devices/cpu/z80/z80.cpp @@ -3406,7 +3406,7 @@ void z80_device::device_start() m_ea = 0; m_program = &space(AS_PROGRAM); - m_decrypted_opcodes = has_space(AS_DECRYPTED_OPCODES) ? &space(AS_DECRYPTED_OPCODES) : m_program; + m_decrypted_opcodes = has_space(AS_OPCODES) ? &space(AS_OPCODES) : m_program; m_direct = &m_program->direct(); m_decrypted_opcodes_direct = &m_decrypted_opcodes->direct(); m_io = &space(AS_IO); @@ -3707,15 +3707,19 @@ z80_device::z80_device(const machine_config &mconfig, device_type type, const ch { } -const address_space_config *z80_device::memory_space_config(address_spacenum spacenum) const +std::vector> z80_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_IO: return &m_io_config; - case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &m_decrypted_opcodes_config : nullptr; - default: return nullptr; - } + if(has_configured_map(AS_OPCODES)) + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_OPCODES, &m_decrypted_opcodes_config), + std::make_pair(AS_IO, &m_io_config) + }; + else + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; } DEFINE_DEVICE_TYPE(Z80, z80_device, "z80", "Z80") diff --git a/src/devices/cpu/z80/z80.h b/src/devices/cpu/z80/z80.h index 80e3bdabcbd..85020b9a054 100644 --- a/src/devices/cpu/z80/z80.h +++ b/src/devices/cpu/z80/z80.h @@ -58,7 +58,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; diff --git a/src/devices/cpu/z8000/z8000.cpp b/src/devices/cpu/z8000/z8000.cpp index b3edc18ada2..5d006b5274b 100644 --- a/src/devices/cpu/z8000/z8000.cpp +++ b/src/devices/cpu/z8000/z8000.cpp @@ -61,6 +61,22 @@ offs_t z8002_device::disasm_disassemble(std::ostream &stream, offs_t pc, const u return CPU_DISASSEMBLE_NAME(z8000)(this, stream, pc, oprom, opram, options); } +std::vector> z8002_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_IO, &m_io_config) + }; +} + +std::vector> z8001_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config), + std::make_pair(AS_IO, &m_io_config) + }; +} /* opcode execution table */ std::unique_ptr z8002_device::z8000_exec; @@ -194,7 +210,7 @@ uint32_t z8001_device::adjust_addr_for_nonseg_mode(uint32_t addr) } } -uint8_t z8002_device::RDMEM_B(address_spacenum spacenum, uint32_t addr) +uint8_t z8002_device::RDMEM_B(int spacenum, uint32_t addr) { addr = adjust_addr_for_nonseg_mode(addr); if (spacenum == AS_PROGRAM) @@ -203,7 +219,7 @@ uint8_t z8002_device::RDMEM_B(address_spacenum spacenum, uint32_t addr) return m_data->read_byte(addr); } -uint16_t z8002_device::RDMEM_W(address_spacenum spacenum, uint32_t addr) +uint16_t z8002_device::RDMEM_W(int spacenum, uint32_t addr) { addr = adjust_addr_for_nonseg_mode(addr); addr &= ~1; @@ -218,7 +234,7 @@ uint16_t z8002_device::RDMEM_W(address_spacenum spacenum, uint32_t addr) return m_data->read_word(addr); } -uint32_t z8002_device::RDMEM_L(address_spacenum spacenum, uint32_t addr) +uint32_t z8002_device::RDMEM_L(int spacenum, uint32_t addr) { uint32_t result; addr = adjust_addr_for_nonseg_mode(addr); @@ -235,7 +251,7 @@ uint32_t z8002_device::RDMEM_L(address_spacenum spacenum, uint32_t addr) } } -void z8002_device::WRMEM_B(address_spacenum spacenum, uint32_t addr, uint8_t value) +void z8002_device::WRMEM_B(int spacenum, uint32_t addr, uint8_t value) { addr = adjust_addr_for_nonseg_mode(addr); if (spacenum == AS_PROGRAM) @@ -244,7 +260,7 @@ void z8002_device::WRMEM_B(address_spacenum spacenum, uint32_t addr, uint8_t val m_data->write_byte(addr, value); } -void z8002_device::WRMEM_W(address_spacenum spacenum, uint32_t addr, uint16_t value) +void z8002_device::WRMEM_W(int spacenum, uint32_t addr, uint16_t value) { addr = adjust_addr_for_nonseg_mode(addr); addr &= ~1; @@ -254,7 +270,7 @@ void z8002_device::WRMEM_W(address_spacenum spacenum, uint32_t addr, uint16_t va m_data->write_word(addr, value); } -void z8002_device::WRMEM_L(address_spacenum spacenum, uint32_t addr, uint32_t value) +void z8002_device::WRMEM_L(int spacenum, uint32_t addr, uint32_t value) { addr = adjust_addr_for_nonseg_mode(addr); addr &= ~1; diff --git a/src/devices/cpu/z8000/z8000.h b/src/devices/cpu/z8000/z8000.h index 8186a0d57cc..1feb973e2b4 100644 --- a/src/devices/cpu/z8000/z8000.h +++ b/src/devices/cpu/z8000/z8000.h @@ -65,15 +65,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override - { - switch (spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_IO: return &m_io_config; - default: return nullptr; - } - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; @@ -126,12 +118,12 @@ protected: inline uint32_t get_addr_operand(int opnum); inline uint32_t get_raw_addr_operand(int opnum); virtual uint32_t adjust_addr_for_nonseg_mode(uint32_t addr); - inline uint8_t RDMEM_B(address_spacenum spacenum, uint32_t addr); - inline uint16_t RDMEM_W(address_spacenum spacenum, uint32_t addr); - inline uint32_t RDMEM_L(address_spacenum spacenum, uint32_t addr); - inline void WRMEM_B(address_spacenum spacenum, uint32_t addr, uint8_t value); - inline void WRMEM_W(address_spacenum spacenum, uint32_t addr, uint16_t value); - inline void WRMEM_L(address_spacenum spacenum, uint32_t addr, uint32_t value); + inline uint8_t RDMEM_B(int spacenum, uint32_t addr); + inline uint16_t RDMEM_W(int spacenum, uint32_t addr); + inline uint32_t RDMEM_L(int spacenum, uint32_t addr); + inline void WRMEM_B(int spacenum, uint32_t addr, uint8_t value); + inline void WRMEM_W(int spacenum, uint32_t addr, uint16_t value); + inline void WRMEM_L(int spacenum, uint32_t addr, uint32_t value); inline uint8_t RDPORT_B(int mode, uint16_t addr); virtual uint16_t RDPORT_W(int mode, uint16_t addr); inline void WRPORT_B(int mode, uint16_t addr, uint8_t value); @@ -669,16 +661,7 @@ protected: virtual void device_reset() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - switch (spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_DATA: return &m_data_config; - case AS_IO: return &m_io_config; - default: return nullptr; - } - } + virtual std::vector> memory_space_config() const override; // device_disasm_interface overrides virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } diff --git a/src/devices/machine/at28c16.cpp b/src/devices/machine/at28c16.cpp index 06188c190be..7ebc30943f9 100644 --- a/src/devices/machine/at28c16.cpp +++ b/src/devices/machine/at28c16.cpp @@ -57,9 +57,11 @@ at28c16_device::at28c16_device(const machine_config &mconfig, const char *tag, d // any address spaces owned by this device //------------------------------------------------- -const address_space_config *at28c16_device::memory_space_config(address_spacenum spacenum) const +std::vector> at28c16_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/machine/at28c16.h b/src/devices/machine/at28c16.h index 1339a7ce85c..4edd2a00a46 100644 --- a/src/devices/machine/at28c16.h +++ b/src/devices/machine/at28c16.h @@ -49,7 +49,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; // device_nvram_interface overrides virtual void nvram_default() override; diff --git a/src/devices/machine/bankdev.cpp b/src/devices/machine/bankdev.cpp index 50000e8942f..7a0e158d92b 100644 --- a/src/devices/machine/bankdev.cpp +++ b/src/devices/machine/bankdev.cpp @@ -18,6 +18,13 @@ address_map_bank_device::address_map_bank_device( const machine_config &mconfig, { } +std::vector> address_map_bank_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + DEVICE_ADDRESS_MAP_START(amap8, 8, address_map_bank_device) AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(read8, write8) ADDRESS_MAP_END diff --git a/src/devices/machine/bankdev.h b/src/devices/machine/bankdev.h index 5fb049fd3af..11a90e33639 100644 --- a/src/devices/machine/bankdev.h +++ b/src/devices/machine/bankdev.h @@ -54,7 +54,7 @@ protected: virtual void device_config_complete() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; private: // internal state diff --git a/src/devices/machine/er2055.cpp b/src/devices/machine/er2055.cpp index 4504a7e07c9..0053a13759e 100644 --- a/src/devices/machine/er2055.cpp +++ b/src/devices/machine/er2055.cpp @@ -65,9 +65,11 @@ void er2055_device::device_start() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *er2055_device::memory_space_config(address_spacenum spacenum) const +std::vector> er2055_device::memory_space_config() const { - return (spacenum == 0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/machine/er2055.h b/src/devices/machine/er2055.h index 6dae6d1d424..eef642e5c29 100644 --- a/src/devices/machine/er2055.h +++ b/src/devices/machine/er2055.h @@ -51,7 +51,7 @@ protected: virtual void device_start() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_nvram_interface overrides virtual void nvram_default() override; diff --git a/src/devices/machine/gt64xxx.cpp b/src/devices/machine/gt64xxx.cpp index b163a9ef99f..e54aaa7c55a 100644 --- a/src/devices/machine/gt64xxx.cpp +++ b/src/devices/machine/gt64xxx.cpp @@ -32,10 +32,10 @@ /* Galileo registers - 0x000-0x3ff */ #define GREG_CPU_CONFIG (0x000/4) -#define GREG_RAS_1_0_LO (0x008/4) -#define GREG_RAS_1_0_HI (0x010/4) -#define GREG_RAS_3_2_LO (0x018/4) -#define GREG_RAS_3_2_HI (0x020/4) +#define GREG_R1_0_LO (0x008/4) +#define GREG_R1_0_HI (0x010/4) +#define GREG_R3_2_LO (0x018/4) +#define GREG_R3_2_HI (0x020/4) #define GREG_CS_2_0_LO (0x028/4) #define GREG_CS_2_0_HI (0x030/4) #define GREG_CS_3_BOOT_LO (0x038/4) @@ -113,8 +113,8 @@ /* Galileo registers - 0xc00-0xfff */ #define GREG_PCI_COMMAND (0xc00/4) #define GREG_PCI_TIMEOUT (0xc04/4) -#define GREG_PCI_RAS_1_0 (0xc08/4) -#define GREG_PCI_RAS_3_2 (0xc0c/4) +#define GREG_PCI_R1_0 (0xc08/4) +#define GREG_PCI_R3_2 (0xc0c/4) #define GREG_PCI_CS_2_0 (0xc10/4) #define GREG_PCI_CS_3_BOOT (0xc14/4) #define GREG_INT_STATE (0xc18/4) @@ -181,18 +181,21 @@ void gt64xxx_device::set_map(int id, const address_map_delegate &map, device_t * m_cs_devices[id] = device; } -const address_space_config *gt64xxx_device::memory_space_config(address_spacenum spacenum) const +std::vector> gt64xxx_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? pci_bridge_device::memory_space_config(spacenum) : (spacenum == AS_DATA) ? &m_mem_config : (spacenum == AS_IO) ? &m_io_config : nullptr; + auto r = pci_bridge_device::memory_space_config(); + r.emplace_back(std::make_pair(AS_PCI_MEM, &m_mem_config)); + r.emplace_back(std::make_pair(AS_PCI_IO, &m_io_config)); + return r; } void gt64xxx_device::device_start() { pci_host_device::device_start(); m_cpu = machine().device(cpu_tag); - m_cpu_space = &m_cpu->space(AS_PROGRAM); - memory_space = &space(AS_DATA); - io_space = &space(AS_IO); + m_cpu_space = &m_cpu->space(AS_PCI_CONFIG); + memory_space = &space(AS_PCI_MEM); + io_space = &space(AS_PCI_IO); memory_window_start = 0; memory_window_end = 0xffffffff; @@ -266,10 +269,10 @@ void gt64xxx_device::device_reset() // Configuration register defaults m_reg[GREG_CPU_CONFIG] = m_be ? 0 : (1<<12); - m_reg[GREG_RAS_1_0_LO] = 0x0; - m_reg[GREG_RAS_1_0_HI] = 0x7; - m_reg[GREG_RAS_3_2_LO] = 0x8; - m_reg[GREG_RAS_3_2_HI] = 0xf; + m_reg[GREG_R1_0_LO] = 0x0; + m_reg[GREG_R1_0_HI] = 0x7; + m_reg[GREG_R3_2_LO] = 0x8; + m_reg[GREG_R3_2_HI] = 0xf; m_reg[GREG_CS_2_0_LO] = 0xe0; m_reg[GREG_CS_2_0_HI] = 0x70; m_reg[GREG_CS_3_BOOT_LO] = 0xf8; @@ -340,8 +343,8 @@ void gt64xxx_device::map_cpu_space() // RAS[0:3] for (int ramIndex = 0; ramIndex < 4; ++ramIndex) { - winStart = (m_reg[GREG_RAS_1_0_LO + 0x10 / 4 * (ramIndex/2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); - winEnd = (m_reg[GREG_RAS_1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; + winStart = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex/2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); + winEnd = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; // Cap window end at physical memory bounds uint32_t winSize = winEnd - winStart + 1; if (winSize > m_ram[ramIndex].size() * 4) @@ -389,8 +392,8 @@ void gt64xxx_device::map_cpu_space() for (size_t index = 0; index < proc_addr_bank::ADDR_NUM; ++index) { if (index < proc_addr_bank::ADDR_PCI_MEM1) { - dma_addr_map[index].low_addr = (m_reg[GREG_RAS_1_0_LO + 0x10 / 4 * index] << 21); - dma_addr_map[index].high_addr = (dma_addr_map[index].low_addr & 0xf0000000) | (m_reg[GREG_RAS_1_0_HI + 0x10 / 4 * index] << 21) | 0x1fffff; + dma_addr_map[index].low_addr = (m_reg[GREG_R1_0_LO + 0x10 / 4 * index] << 21); + dma_addr_map[index].high_addr = (dma_addr_map[index].low_addr & 0xf0000000) | (m_reg[GREG_R1_0_HI + 0x10 / 4 * index] << 21) | 0x1fffff; } else { dma_addr_map[index].low_addr = (m_reg[GREG_PCI_MEM1_LO] << 21); @@ -399,11 +402,11 @@ void gt64xxx_device::map_cpu_space() switch (index) { case proc_addr_bank::ADDR_PCI_IO: - dma_addr_map[index].space = &this->space(AS_IO); + dma_addr_map[index].space = &this->space(AS_PCI_IO); break; case proc_addr_bank::ADDR_PCI_MEM0: case proc_addr_bank::ADDR_PCI_MEM1: - dma_addr_map[index].space = &this->space(AS_DATA); + dma_addr_map[index].space = &this->space(AS_PCI_MEM); break; default: dma_addr_map[index].space = m_cpu_space; @@ -418,11 +421,11 @@ void gt64xxx_device::map_extra(uint64_t memory_window_start, uint64_t memory_win int ramIndex; uint32_t winStart, winEnd, winSize; - // Not sure if GREG_RAS_1_0_LO should be added on PCI address map side. + // Not sure if GREG_R1_0_LO should be added on PCI address map side. // RAS0 ramIndex = 0; - winStart = (m_reg[GREG_RAS_1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); - winEnd = (m_reg[GREG_RAS_1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; + winStart = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); + winEnd = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; winSize = winEnd - winStart + 1; memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::ras_0_r), this)); memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::ras_0_w), this)); @@ -430,8 +433,8 @@ void gt64xxx_device::map_extra(uint64_t memory_window_start, uint64_t memory_win // RAS1 ramIndex = 1; - winStart = (m_reg[GREG_RAS_1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); - winEnd = (m_reg[GREG_RAS_1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; + winStart = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); + winEnd = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; winSize = winEnd - winStart + 1; memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::ras_1_r), this)); memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::ras_1_w), this)); @@ -439,8 +442,8 @@ void gt64xxx_device::map_extra(uint64_t memory_window_start, uint64_t memory_win // RAS2 ramIndex = 2; - winStart = (m_reg[GREG_RAS_1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); - winEnd = (m_reg[GREG_RAS_1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; + winStart = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); + winEnd = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; winSize = winEnd - winStart + 1; memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::ras_2_r), this)); memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::ras_2_w), this)); @@ -448,8 +451,8 @@ void gt64xxx_device::map_extra(uint64_t memory_window_start, uint64_t memory_win // RAS3 ramIndex = 3; - winStart = (m_reg[GREG_RAS_1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); - winEnd = (m_reg[GREG_RAS_1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; + winStart = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); + winEnd = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; winSize = winEnd - winStart + 1; memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::ras_3_r), this)); memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::ras_3_w), this)); @@ -471,7 +474,7 @@ WRITE_LINE_MEMBER(gt64xxx_device::pci_stall) if (m_pci_cpu_stalled) { m_pci_cpu_stalled = 0; // master_mem0_w -- Should actually be checking for master_mem1_w as well - this->space(AS_DATA).write_dword((m_reg[GREG_PCI_MEM0_LO] << 21) | (m_cpu_stalled_offset * 4), m_cpu_stalled_data, m_cpu_stalled_mem_mask); + this->space(AS_PCI_MEM).write_dword((m_reg[GREG_PCI_MEM0_LO] << 21) | (m_cpu_stalled_offset * 4), m_cpu_stalled_data, m_cpu_stalled_mem_mask); /* resume CPU execution */ machine().scheduler().trigger(45678); LOGGALILEO("Resuming CPU on PCI Stall offset=0x%08X data=0x%08X\n", m_cpu_stalled_offset * 4, m_cpu_stalled_data); @@ -496,7 +499,7 @@ WRITE32_MEMBER (gt64xxx_device::pci_config_w) // PCI Master Window 0 READ32_MEMBER (gt64xxx_device::master_mem0_r) { - uint32_t result = this->space(AS_DATA).read_dword((m_reg[GREG_PCI_MEM0_LO]<<21) | (offset*4), mem_mask); + uint32_t result = this->space(AS_PCI_MEM).read_dword((m_reg[GREG_PCI_MEM0_LO]<<21) | (offset*4), mem_mask); LOGPCI("%06X:galileo pci mem0 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_MEM0_LO]<<21) | (offset*4), result, mem_mask); return result; } @@ -513,27 +516,27 @@ WRITE32_MEMBER (gt64xxx_device::master_mem0_w) LOGMASKED(LOG_GALILEO | LOG_PCI, "%08X:Stalling CPU on PCI Stall\n", m_cpu_space->device().safe_pc()); return; } - this->space(AS_DATA).write_dword((m_reg[GREG_PCI_MEM0_LO]<<21) | (offset*4), data, mem_mask); + this->space(AS_PCI_MEM).write_dword((m_reg[GREG_PCI_MEM0_LO]<<21) | (offset*4), data, mem_mask); LOGPCI("%06X:galileo pci mem0 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_MEM0_LO]<<21) | (offset*4), data, mem_mask); } // PCI Master Window 1 READ32_MEMBER (gt64xxx_device::master_mem1_r) { - uint32_t result = this->space(AS_DATA).read_dword((m_reg[GREG_PCI_MEM1_LO]<<21) | (offset*4), mem_mask); + uint32_t result = this->space(AS_PCI_MEM).read_dword((m_reg[GREG_PCI_MEM1_LO]<<21) | (offset*4), mem_mask); LOGPCI("%06X:galileo pci mem1 read from offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_MEM1_LO]<<21) | (offset*4), result, mem_mask); return result; } WRITE32_MEMBER (gt64xxx_device::master_mem1_w) { - this->space(AS_DATA).write_dword((m_reg[GREG_PCI_MEM1_LO]<<21) | (offset*4), data, mem_mask); + this->space(AS_PCI_MEM).write_dword((m_reg[GREG_PCI_MEM1_LO]<<21) | (offset*4), data, mem_mask); LOGPCI("%06X:galileo pci mem1 write to offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_MEM1_LO]<<21) | (offset*4), data, mem_mask); } // PCI Master IO READ32_MEMBER (gt64xxx_device::master_io_r) { - uint32_t result = this->space(AS_IO).read_dword((m_reg[GREG_PCI_IO_LO] << 21) | (offset * 4), mem_mask); + uint32_t result = this->space(AS_PCI_IO).read_dword((m_reg[GREG_PCI_IO_LO] << 21) | (offset * 4), mem_mask); if (m_prev_addr != offset) { m_prev_addr = offset; LOGPCI("%06X:galileo pci io read from offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_IO_LO] << 21) | (offset * 4), result, mem_mask); @@ -542,7 +545,7 @@ READ32_MEMBER (gt64xxx_device::master_io_r) } WRITE32_MEMBER (gt64xxx_device::master_io_w) { - this->space(AS_IO).write_dword((m_reg[GREG_PCI_IO_LO] << 21) | (offset * 4), data, mem_mask); + this->space(AS_PCI_IO).write_dword((m_reg[GREG_PCI_IO_LO] << 21) | (offset * 4), data, mem_mask); if (m_prev_addr != offset) { m_prev_addr = offset; LOGPCI("%06X:galileo pci io write to offset %08X = %08X & %08X\n", space.device().safe_pc(), (m_reg[GREG_PCI_IO_LO] << 21) | (offset * 4), data, mem_mask); @@ -678,10 +681,10 @@ WRITE32_MEMBER(gt64xxx_device::cpu_if_w) /* switch off the offset for special cases */ switch (offset) { - case GREG_RAS_1_0_LO: - case GREG_RAS_1_0_HI: - case GREG_RAS_3_2_LO: - case GREG_RAS_3_2_HI: + case GREG_R1_0_LO: + case GREG_R1_0_HI: + case GREG_R3_2_LO: + case GREG_R3_2_HI: case GREG_CS_2_0_LO: case GREG_CS_2_0_HI: case GREG_CS_3_BOOT_LO: diff --git a/src/devices/machine/gt64xxx.h b/src/devices/machine/gt64xxx.h index 192672b8c3a..49daa47c35c 100644 --- a/src/devices/machine/gt64xxx.h +++ b/src/devices/machine/gt64xxx.h @@ -107,12 +107,18 @@ public: protected: address_space *m_cpu_space; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; virtual void device_start() override; virtual void device_reset() override; private: + enum + { + AS_PCI_MEM = 1, + AS_PCI_IO = 2 + }; + struct galileo_timer { emu_timer * timer; diff --git a/src/devices/machine/i8155.cpp b/src/devices/machine/i8155.cpp index c1bc13f3568..bc25d416878 100644 --- a/src/devices/machine/i8155.cpp +++ b/src/devices/machine/i8155.cpp @@ -98,7 +98,7 @@ enum //************************************************************************** // default address map -static ADDRESS_MAP_START( i8155, AS_0, 8, i8155_device ) +static ADDRESS_MAP_START( i8155, 0, 8, i8155_device ) AM_RANGE(0x00, 0xff) AM_RAM ADDRESS_MAP_END @@ -344,9 +344,11 @@ void i8155_device::device_timer(emu_timer &timer, device_timer_id id, int param, // any address spaces owned by this device //------------------------------------------------- -const address_space_config *i8155_device::memory_space_config(address_spacenum spacenum) const +std::vector> i8155_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/machine/i8155.h b/src/devices/machine/i8155.h index 09bcb1d93b5..b96527f629f 100644 --- a/src/devices/machine/i8155.h +++ b/src/devices/machine/i8155.h @@ -100,7 +100,7 @@ protected: virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; inline uint8_t get_timer_mode(); inline void timer_output(); diff --git a/src/devices/machine/intelfsh.cpp b/src/devices/machine/intelfsh.cpp index 83e88b42dd7..ee69f2d2b19 100644 --- a/src/devices/machine/intelfsh.cpp +++ b/src/devices/machine/intelfsh.cpp @@ -109,9 +109,9 @@ DEFINE_DEVICE_TYPE(SHARP_UNK128MBIT, sharp_unk128mbit_device, "sharp_u DEFINE_DEVICE_TYPE(INTEL_28F320J3D, intel_28f320j3d_device, "intel_28f320j3d", "Intel 28F320J3D Flash") DEFINE_DEVICE_TYPE(INTEL_28F320J5, intel_28f320j5_device, "intel_28f320j5", "Intel 28F320J5 Flash") -DEFINE_DEVICE_TYPE(SST_39VF400A, sst_39vf400a_device, "atmel_49f4096", "Atmel AT49F4096 Flash") +DEFINE_DEVICE_TYPE(SST_39VF400A, sst_39vf400a_device, "sst_39vf400a", "SST 39VF400A Flash") -DEFINE_DEVICE_TYPE(ATMEL_49F4096, atmel_49f4096_device, "sst_39vf400a", "SST 39VF400A Flash") +DEFINE_DEVICE_TYPE(ATMEL_49F4096, atmel_49f4096_device, "atmel_49f4096", "Atmel AT49F4096 Flash") //************************************************************************** diff --git a/src/devices/machine/linflash.cpp b/src/devices/machine/linflash.cpp index cb808616eb2..3c99d9297dc 100644 --- a/src/devices/machine/linflash.cpp +++ b/src/devices/machine/linflash.cpp @@ -18,12 +18,14 @@ linear_flash_pccard_device::linear_flash_pccard_device(const machine_config &mco void linear_flash_pccard_device::device_start() { - m_space = &space(AS_0); + m_space = &space(0); } -const address_space_config *linear_flash_pccard_device::memory_space_config(address_spacenum spacenum) const +std::vector> linear_flash_pccard_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } READ16_MEMBER( linear_flash_pccard_device::read_memory ) @@ -40,7 +42,7 @@ WRITE16_MEMBER( linear_flash_pccard_device::write_memory ) } -static ADDRESS_MAP_START(linear_flash_pccard_16mb, AS_0, 16, linear_flash_pccard_16mb_device) +static ADDRESS_MAP_START(linear_flash_pccard_16mb, 0, 16, linear_flash_pccard_16mb_device) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1l", intelfsh8_device, read, write, 0x00ff) AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1u", intelfsh8_device, read, write, 0xff00) @@ -70,7 +72,7 @@ MACHINE_CONFIG_MEMBER( linear_flash_pccard_16mb_device::device_add_mconfig ) MACHINE_CONFIG_END -static ADDRESS_MAP_START(linear_flash_pccard_32mb, AS_0, 16, linear_flash_pccard_32mb_device) +static ADDRESS_MAP_START(linear_flash_pccard_32mb, 0, 16, linear_flash_pccard_32mb_device) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1l", intelfsh8_device, read, write, 0x00ff) AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1u", intelfsh8_device, read, write, 0xff00) @@ -116,7 +118,7 @@ MACHINE_CONFIG_MEMBER( linear_flash_pccard_32mb_device::device_add_mconfig ) MACHINE_CONFIG_END -static ADDRESS_MAP_START(linear_flash_pccard_64mb, AS_0, 16, linear_flash_pccard_64mb_device) +static ADDRESS_MAP_START(linear_flash_pccard_64mb, 0, 16, linear_flash_pccard_64mb_device) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1l", intelfsh8_device, read, write, 0x00ff) AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1u", intelfsh8_device, read, write, 0xff00) diff --git a/src/devices/machine/linflash.h b/src/devices/machine/linflash.h index 969ea7fbf02..39d6abd21c9 100644 --- a/src/devices/machine/linflash.h +++ b/src/devices/machine/linflash.h @@ -24,7 +24,7 @@ protected: virtual void device_start() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; address_space_config m_space_config; address_space *m_space; diff --git a/src/devices/machine/mcf5206e.cpp b/src/devices/machine/mcf5206e.cpp index e3b0b669257..b0b8254017d 100644 --- a/src/devices/machine/mcf5206e.cpp +++ b/src/devices/machine/mcf5206e.cpp @@ -19,7 +19,7 @@ static void CLIB_DECL ATTR_PRINTF(1,2) nolog(const char *format, ...) {} //#define debuglogtimer logerror #define debuglogtimer nolog -static ADDRESS_MAP_START( coldfire_regs_map, AS_0, 32, mcf5206e_peripheral_device ) +static ADDRESS_MAP_START( coldfire_regs_map, 0, 32, mcf5206e_peripheral_device ) AM_RANGE(0x014, 0x017) AM_READWRITE8(ICR1_ICR2_ICR3_ICR4_r, ICR1_ICR2_ICR3_ICR4_w, 0xffffffff) @@ -836,9 +836,11 @@ mcf5206e_peripheral_device::mcf5206e_peripheral_device(const machine_config &mco { } -const address_space_config *mcf5206e_peripheral_device::memory_space_config(address_spacenum spacenum) const +std::vector> mcf5206e_peripheral_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } //------------------------------------------------- diff --git a/src/devices/machine/mcf5206e.h b/src/devices/machine/mcf5206e.h index b6fbd55a6aa..36781c1c827 100644 --- a/src/devices/machine/mcf5206e.h +++ b/src/devices/machine/mcf5206e.h @@ -161,7 +161,7 @@ protected: virtual void device_reset() override; virtual void device_post_load() override { } virtual void device_clock_changed() override { } - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; private: TIMER_CALLBACK_MEMBER(timer1_callback); diff --git a/src/devices/machine/netlist.cpp b/src/devices/machine/netlist.cpp index 5029b6a973c..b4f6b18fa1a 100644 --- a/src/devices/machine/netlist.cpp +++ b/src/devices/machine/netlist.cpp @@ -486,6 +486,12 @@ void netlist_mame_ram_pointer_device::device_timer(emu_timer &timer, device_time m_data = (*m_param)(); } +std::vector> netlist_mame_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} void netlist_mame_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const { diff --git a/src/devices/machine/netlist.h b/src/devices/machine/netlist.h index 55af64ecd8e..c83e10fb6a9 100644 --- a/src/devices/machine/netlist.h +++ b/src/devices/machine/netlist.h @@ -180,10 +180,7 @@ protected: ATTR_COLD virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - return (AS_PROGRAM == spacenum) ? &m_program_config : nullptr; - } + virtual std::vector> memory_space_config() const override; // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/machine/pci.cpp b/src/devices/machine/pci.cpp index fec52315a23..3f2dc2ff4bb 100644 --- a/src/devices/machine/pci.cpp +++ b/src/devices/machine/pci.cpp @@ -448,9 +448,11 @@ READ8_MEMBER(pci_bridge_device::header_type_r) return 0x01; } -const address_space_config *pci_bridge_device::memory_space_config(address_spacenum spacenum) const +std::vector> pci_bridge_device::memory_space_config() const { - return spacenum == AS_PROGRAM ? &configure_space_config : nullptr; + return std::vector> { + std::make_pair(AS_PCI_CONFIG, &configure_space_config) + }; } device_t *pci_bridge_device::bus_root() @@ -548,7 +550,7 @@ void pci_bridge_device::map_device(uint64_t memory_window_start, uint64_t memory void pci_bridge_device::regenerate_config_mapping() { - address_space *config_space = &space(AS_PROGRAM); + address_space *config_space = &space(AS_PCI_CONFIG); config_space->unmap_readwrite(0x00000, 0xfffff); for(int i=0; i<32*8; i++) if(sub_devices[i]) @@ -558,7 +560,7 @@ void pci_bridge_device::regenerate_config_mapping() uint32_t pci_bridge_device::do_config_read(uint8_t bus, uint8_t device, uint16_t reg, uint32_t mem_mask) { if(sub_devices[device]) { - uint32_t data = space(AS_PROGRAM).read_dword((device << 12) | reg, mem_mask); + uint32_t data = space(AS_PCI_CONFIG).read_dword((device << 12) | reg, mem_mask); logerror("config_read %02x:%02x.%x:%02x %08x @ %08x\n", bus, device >> 3, device & 7, reg, data, mem_mask); return data; } else @@ -587,7 +589,7 @@ uint32_t pci_bridge_device::config_read(uint8_t bus, uint8_t device, uint16_t re void pci_bridge_device::do_config_write(uint8_t bus, uint8_t device, uint16_t reg, uint32_t data, uint32_t mem_mask) { if(sub_devices[device]) { - space(AS_PROGRAM).write_dword((device << 12) | reg, data, mem_mask); + space(AS_PCI_CONFIG).write_dword((device << 12) | reg, data, mem_mask); logerror("config_write %02x:%02x.%x:%02x %08x @ %08x\n", bus, device >> 3, device & 7, reg, data, mem_mask); } } diff --git a/src/devices/machine/pci.h b/src/devices/machine/pci.h index d1f16287043..53a171cbb21 100644 --- a/src/devices/machine/pci.h +++ b/src/devices/machine/pci.h @@ -200,11 +200,16 @@ public: DECLARE_WRITE16_MEMBER(bridge_control_w); protected: + enum + { + AS_PCI_CONFIG = 0 + }; + pci_bridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; virtual device_t *bus_root(); virtual void regenerate_config_mapping(); diff --git a/src/devices/machine/tc009xlvc.cpp b/src/devices/machine/tc009xlvc.cpp index b5022a342eb..96ca73a463e 100644 --- a/src/devices/machine/tc009xlvc.cpp +++ b/src/devices/machine/tc009xlvc.cpp @@ -156,7 +156,7 @@ WRITE8_MEMBER(tc0091lvc_device::tc0091lvc_spr_w) tx_tilemap->mark_all_dirty(); } -static ADDRESS_MAP_START( tc0091lvc_map8, AS_0, 8, tc0091lvc_device ) +static ADDRESS_MAP_START( tc0091lvc_map8, 0, 8, tc0091lvc_device ) AM_RANGE(0x014000, 0x017fff) AM_READWRITE(tc0091lvc_pcg1_r, tc0091lvc_pcg1_w) AM_RANGE(0x018000, 0x018fff) AM_READWRITE(tc0091lvc_vram0_r, tc0091lvc_vram0_w) AM_RANGE(0x019000, 0x019fff) AM_READWRITE(tc0091lvc_vram1_r, tc0091lvc_vram1_w) @@ -281,9 +281,11 @@ void tc0091lvc_device::device_start() m_gfxdecode->set_gfx(m_gfx_index, std::make_unique(&palette, char_layout, (uint8_t *)m_pcg_ram, 0, palette.entries() / 16, 0)); } -const address_space_config *tc0091lvc_device::memory_space_config(address_spacenum spacenum) const +std::vector> tc0091lvc_device::memory_space_config() const { - return (spacenum == 0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/machine/tc009xlvc.h b/src/devices/machine/tc009xlvc.h index 2a4cb000c27..e3388bf177c 100644 --- a/src/devices/machine/tc009xlvc.h +++ b/src/devices/machine/tc009xlvc.h @@ -49,7 +49,7 @@ public: protected: virtual void device_start() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t global_flip); diff --git a/src/devices/machine/tmp68301.cpp b/src/devices/machine/tmp68301.cpp index 3f5b22e8bf7..c2abfcdc018 100644 --- a/src/devices/machine/tmp68301.cpp +++ b/src/devices/machine/tmp68301.cpp @@ -21,7 +21,7 @@ DEFINE_DEVICE_TYPE(TMP68301, tmp68301_device, "tmp68301", "Toshiba TMP68301") -static ADDRESS_MAP_START( tmp68301_regs, AS_0, 16, tmp68301_device ) +static ADDRESS_MAP_START( tmp68301_regs, 0, 16, tmp68301_device ) // AM_RANGE(0x000,0x3ff) AM_RAM AM_RANGE(0x094,0x095) AM_READWRITE(imr_r,imr_w) AM_RANGE(0x098,0x099) AM_READWRITE(iisr_r,iisr_w) @@ -159,9 +159,11 @@ void tmp68301_device::device_reset() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *tmp68301_device::memory_space_config(address_spacenum spacenum) const +std::vector> tmp68301_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } //************************************************************************** @@ -174,7 +176,7 @@ const address_space_config *tmp68301_device::memory_space_config(address_spacenu inline uint16_t tmp68301_device::read_word(offs_t address) { - return space(AS_0).read_word(address << 1); + return space(0).read_word(address << 1); } //------------------------------------------------- @@ -183,7 +185,7 @@ inline uint16_t tmp68301_device::read_word(offs_t address) inline void tmp68301_device::write_word(offs_t address, uint16_t data) { - space(AS_0).write_word(address << 1, data); + space(0).write_word(address << 1, data); } IRQ_CALLBACK_MEMBER(tmp68301_device::irq_callback) diff --git a/src/devices/machine/tmp68301.h b/src/devices/machine/tmp68301.h index facb06a9e65..0471db112f5 100644 --- a/src/devices/machine/tmp68301.h +++ b/src/devices/machine/tmp68301.h @@ -58,7 +58,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; private: TIMER_CALLBACK_MEMBER( timer_callback ); diff --git a/src/devices/machine/vrc4373.cpp b/src/devices/machine/vrc4373.cpp index 9c480244c5c..ac10b41a567 100644 --- a/src/devices/machine/vrc4373.cpp +++ b/src/devices/machine/vrc4373.cpp @@ -99,18 +99,21 @@ vrc4373_device::vrc4373_device(const machine_config &mconfig, const char *tag, d { } -const address_space_config *vrc4373_device::memory_space_config(address_spacenum spacenum) const +std::vector> vrc4373_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? pci_bridge_device::memory_space_config(spacenum) : (spacenum == AS_DATA) ? &m_mem_config : (spacenum == AS_IO) ? &m_io_config : nullptr; + auto r = pci_bridge_device::memory_space_config(); + r.emplace_back(std::make_pair(AS_PCI_MEM, &m_mem_config)); + r.emplace_back(std::make_pair(AS_PCI_IO, &m_io_config)); + return r; } void vrc4373_device::device_start() { pci_host_device::device_start(); m_cpu = machine().device(cpu_tag); - m_cpu_space = &m_cpu->space(AS_PROGRAM); - memory_space = &space(AS_DATA); - io_space = &space(AS_IO); + m_cpu_space = &m_cpu->space(AS_PCI_CONFIG); + memory_space = &space(AS_PCI_MEM); + io_space = &space(AS_PCI_IO); memset(m_cpu_regs, 0, sizeof(m_cpu_regs)); @@ -297,65 +300,65 @@ WRITE32_MEMBER (vrc4373_device::pcictrl_w) // PCI Master Window 1 READ32_MEMBER (vrc4373_device::master1_r) { - uint32_t result = this->space(AS_DATA).read_dword(m_pci1_laddr | (offset*4), mem_mask); + uint32_t result = this->space(AS_PCI_MEM).read_dword(m_pci1_laddr | (offset*4), mem_mask); LOGNILEMASTER("%06X:nile master1 read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask); return result; } WRITE32_MEMBER (vrc4373_device::master1_w) { - this->space(AS_DATA).write_dword(m_pci1_laddr | (offset*4), data, mem_mask); + this->space(AS_PCI_MEM).write_dword(m_pci1_laddr | (offset*4), data, mem_mask); LOGNILEMASTER("%06X:nile master1 write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask); } // PCI Master Window 2 READ32_MEMBER (vrc4373_device::master2_r) { - uint32_t result = this->space(AS_DATA).read_dword(m_pci2_laddr | (offset*4), mem_mask); + uint32_t result = this->space(AS_PCI_MEM).read_dword(m_pci2_laddr | (offset*4), mem_mask); LOGNILEMASTER("%06X:nile master2 read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask); return result; } WRITE32_MEMBER (vrc4373_device::master2_w) { - this->space(AS_DATA).write_dword(m_pci2_laddr | (offset*4), data, mem_mask); + this->space(AS_PCI_MEM).write_dword(m_pci2_laddr | (offset*4), data, mem_mask); LOGNILEMASTER("%06X:nile master2 write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask); } // PCI Master IO Window READ32_MEMBER (vrc4373_device::master_io_r) { - uint32_t result = this->space(AS_IO).read_dword(m_pci_io_laddr | (offset*4), mem_mask); + uint32_t result = this->space(AS_PCI_IO).read_dword(m_pci_io_laddr | (offset*4), mem_mask); LOGNILEMASTER("%06X:nile master io read from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask); return result; } WRITE32_MEMBER (vrc4373_device::master_io_w) { - this->space(AS_IO).write_dword(m_pci_io_laddr | (offset*4), data, mem_mask); + this->space(AS_PCI_IO).write_dword(m_pci_io_laddr | (offset*4), data, mem_mask); LOGNILEMASTER("%06X:nile master io write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask); } // PCI Target Window 1 READ32_MEMBER (vrc4373_device::target1_r) { - uint32_t result = m_cpu->space(AS_PROGRAM).read_dword(m_target1_laddr | (offset*4), mem_mask); + uint32_t result = m_cpu->space(AS_PCI_CONFIG).read_dword(m_target1_laddr | (offset*4), mem_mask); LOGNILETARGET("%08X:nile target1 read from offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, result, mem_mask); return result; } WRITE32_MEMBER (vrc4373_device::target1_w) { - m_cpu->space(AS_PROGRAM).write_dword(m_target1_laddr | (offset*4), data, mem_mask); + m_cpu->space(AS_PCI_CONFIG).write_dword(m_target1_laddr | (offset*4), data, mem_mask); LOGNILETARGET("%08X:nile target1 write to offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, data, mem_mask); } // PCI Target Window 2 READ32_MEMBER (vrc4373_device::target2_r) { - uint32_t result = m_cpu->space(AS_PROGRAM).read_dword(m_target2_laddr | (offset*4), mem_mask); + uint32_t result = m_cpu->space(AS_PCI_CONFIG).read_dword(m_target2_laddr | (offset*4), mem_mask); LOGNILETARGET("%08X:nile target2 read from offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, result, mem_mask); return result; } WRITE32_MEMBER (vrc4373_device::target2_w) { - m_cpu->space(AS_PROGRAM).write_dword(m_target2_laddr | (offset*4), data, mem_mask); + m_cpu->space(AS_PCI_CONFIG).write_dword(m_target2_laddr | (offset*4), data, mem_mask); LOGNILETARGET("%08X:nile target2 write to offset %02X = %08X & %08X\n", m_cpu->device_t::safe_pc(), offset*4, data, mem_mask); } @@ -366,23 +369,23 @@ TIMER_CALLBACK_MEMBER (vrc4373_device::dma_transfer) // Check for dma suspension if (m_cpu_regs[NREG_DMACR1 + which * 0xc] & DMA_SUS) { - LOGNILE("%08X:nile DMA Suspended PCI: %08X MEM: %08X Words: %X\n", m_cpu->space(AS_PROGRAM).device().safe_pc(), m_cpu_regs[NREG_DMA_CPAR], m_cpu_regs[NREG_DMA_CMAR], m_cpu_regs[NREG_DMA_REM]); + LOGNILE("%08X:nile DMA Suspended PCI: %08X MEM: %08X Words: %X\n", m_cpu->space(AS_PCI_CONFIG).device().safe_pc(), m_cpu_regs[NREG_DMA_CPAR], m_cpu_regs[NREG_DMA_CMAR], m_cpu_regs[NREG_DMA_REM]); return; } - int pciSel = (m_cpu_regs[NREG_DMACR1+which*0xC] & DMA_MIO) ? AS_DATA : AS_IO; + int pciSel = (m_cpu_regs[NREG_DMACR1+which*0xC] & DMA_MIO) ? AS_PCI_MEM : AS_PCI_IO; address_space *src, *dst; uint32_t srcAddr, dstAddr; if (m_cpu_regs[NREG_DMACR1+which*0xC]&DMA_RW) { // Read data from PCI and write to cpu src = &this->space(pciSel); - dst = &m_cpu->space(AS_PROGRAM); + dst = &m_cpu->space(AS_PCI_CONFIG); srcAddr = m_cpu_regs[NREG_DMA_CPAR]; dstAddr = m_cpu_regs[NREG_DMA_CMAR]; } else { // Read data from cpu and write to PCI - src = &m_cpu->space(AS_PROGRAM); + src = &m_cpu->space(AS_PCI_CONFIG); dst = &this->space(pciSel); srcAddr = m_cpu_regs[NREG_DMA_CMAR]; dstAddr = m_cpu_regs[NREG_DMA_CPAR]; @@ -508,7 +511,7 @@ WRITE32_MEMBER(vrc4373_device::cpu_if_w) // Start the transfer m_dma_timer->set_param(which); m_dma_timer->adjust(attotime::zero, 0, DMA_TIMER_PERIOD); - LOGNILE("%08X:nile Start DMA Lane %i PCI: %08X MEM: %08X Words: %X\n", m_cpu->space(AS_PROGRAM).device().safe_pc(), which, m_cpu_regs[NREG_DMA_CPAR], m_cpu_regs[NREG_DMA_CMAR], m_cpu_regs[NREG_DMA_REM]); + LOGNILE("%08X:nile Start DMA Lane %i PCI: %08X MEM: %08X Words: %X\n", m_cpu->space(AS_PCI_CONFIG).device().safe_pc(), which, m_cpu_regs[NREG_DMA_CPAR], m_cpu_regs[NREG_DMA_CMAR], m_cpu_regs[NREG_DMA_REM]); } break; case NREG_BMCR: diff --git a/src/devices/machine/vrc4373.h b/src/devices/machine/vrc4373.h index 9555ee777ba..5e14ee335a1 100644 --- a/src/devices/machine/vrc4373.h +++ b/src/devices/machine/vrc4373.h @@ -63,13 +63,19 @@ protected: virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; TIMER_CALLBACK_MEMBER(dma_transfer); address_space *m_cpu_space; private: + enum + { + AS_PCI_MEM = 1, + AS_PCI_IO = 2 + }; + DECLARE_ADDRESS_MAP(cpu_map, 32); void map_cpu_space(); diff --git a/src/devices/machine/vrc5074.cpp b/src/devices/machine/vrc5074.cpp index b427d25c97c..2936f696fd7 100644 --- a/src/devices/machine/vrc5074.cpp +++ b/src/devices/machine/vrc5074.cpp @@ -163,9 +163,12 @@ void vrc5074_device::set_map(int id, const address_map_delegate &map, device_t * m_cs_devices[id - 2] = device; } -const address_space_config *vrc5074_device::memory_space_config(address_spacenum spacenum) const +std::vector> vrc5074_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? pci_bridge_device::memory_space_config(spacenum) : (spacenum == AS_DATA) ? &m_mem_config : (spacenum == AS_IO) ? &m_io_config : nullptr; + auto r = pci_bridge_device::memory_space_config(); + r.emplace_back(std::make_pair(AS_PCI_MEM, &m_mem_config)); + r.emplace_back(std::make_pair(AS_PCI_IO, &m_io_config)); + return r; } void vrc5074_device::device_start() diff --git a/src/devices/machine/vrc5074.h b/src/devices/machine/vrc5074.h index 8b31e2c4f54..dcb1487de00 100644 --- a/src/devices/machine/vrc5074.h +++ b/src/devices/machine/vrc5074.h @@ -67,11 +67,17 @@ public: protected: address_space *m_cpu_space; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; virtual void device_start() override; virtual void device_reset() override; private: + enum + { + AS_PCI_MEM = 1, + AS_PCI_IO = 2 + }; + mips3_device *m_cpu; const char *cpu_tag; int m_sdram_size[2]; diff --git a/src/devices/machine/x2212.cpp b/src/devices/machine/x2212.cpp index a78e5992246..a13edde1824 100644 --- a/src/devices/machine/x2212.cpp +++ b/src/devices/machine/x2212.cpp @@ -16,11 +16,11 @@ // GLOBAL VARIABLES //************************************************************************** -static ADDRESS_MAP_START( x2212_sram_map, AS_0, 8, x2212_device ) +static ADDRESS_MAP_START( x2212_sram_map, 0, 8, x2212_device ) AM_RANGE(0x0000, 0x00ff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( x2212_e2prom_map, AS_1, 8, x2212_device ) +static ADDRESS_MAP_START( x2212_e2prom_map, 1, 8, x2212_device ) AM_RANGE(0x0000, 0x00ff) AM_RAM ADDRESS_MAP_END @@ -76,8 +76,8 @@ void x2212_device::device_start() { save_item(NAME(m_store)); save_item(NAME(m_array_recall)); - m_sram = &space(AS_0); - m_e2prom = &space(AS_1); + m_sram = &space(0); + m_e2prom = &space(1); } @@ -86,9 +86,12 @@ void x2212_device::device_start() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *x2212_device::memory_space_config(address_spacenum spacenum) const +std::vector> x2212_device::memory_space_config() const { - return (spacenum == 0) ? &m_sram_space_config : (spacenum == 1) ? &m_e2prom_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_sram_space_config), + std::make_pair(1, &m_e2prom_space_config) + }; } diff --git a/src/devices/machine/x2212.h b/src/devices/machine/x2212.h index f819cb350b1..8a3581a3308 100644 --- a/src/devices/machine/x2212.h +++ b/src/devices/machine/x2212.h @@ -71,7 +71,7 @@ protected: virtual void device_start() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_nvram_interface overrides virtual void nvram_default() override; diff --git a/src/devices/sound/ay8910.cpp b/src/devices/sound/ay8910.cpp index 8fc807939d5..f5456163398 100644 --- a/src/devices/sound/ay8910.cpp +++ b/src/devices/sound/ay8910.cpp @@ -1147,7 +1147,7 @@ void ay8910_device::build_mixer_table() */ else { - build_3D_table(m_res_load[0], m_par, m_par_env, normalize, 3, m_zero_is_off, m_vol3d_table); + build_3D_table(m_res_load[0], m_par, m_par_env, normalize, 3, m_zero_is_off, m_vol3d_table.get()); } } @@ -1200,6 +1200,8 @@ void ay8910_device::device_start() m_streams = 1; } + m_vol3d_table = make_unique_clear(8*32*32*32); + build_mixer_table(); /* The envelope is pacing twice as fast for the YM2149 as for the AY-3-8910, */ @@ -1512,7 +1514,6 @@ ay8910_device::ay8910_device(const machine_config &mconfig, device_type type, co memset(&m_vol_enabled,0,sizeof(m_vol_enabled)); memset(&m_vol_table,0,sizeof(m_vol_table)); memset(&m_env_table,0,sizeof(m_env_table)); - memset(&m_vol3d_table,0,sizeof(m_vol3d_table)); m_res_load[0] = m_res_load[1] = m_res_load[2] = 1000; //Default values for resistor loads set_type(psg_type); diff --git a/src/devices/sound/ay8910.h b/src/devices/sound/ay8910.h index d62d838e14a..ef796ee7071 100644 --- a/src/devices/sound/ay8910.h +++ b/src/devices/sound/ay8910.h @@ -190,7 +190,7 @@ private: const ay_ym_param *m_par_env; int32_t m_vol_table[NUM_CHANNELS][16]; int32_t m_env_table[NUM_CHANNELS][32]; - int32_t m_vol3d_table[8*32*32*32]; + std::unique_ptr m_vol3d_table; int m_flags; /* Flags */ int m_res_load[3]; /* Load on channel in ohms */ devcb_read8 m_port_a_read_cb; diff --git a/src/devices/sound/cdp1869.cpp b/src/devices/sound/cdp1869.cpp index de927b2795c..da5ade9d6a3 100644 --- a/src/devices/sound/cdp1869.cpp +++ b/src/devices/sound/cdp1869.cpp @@ -78,7 +78,7 @@ DEVICE_ADDRESS_MAP_START( page_map, 8, cdp1869_device ) ADDRESS_MAP_END // default address map -static ADDRESS_MAP_START( cdp1869, AS_0, 8, cdp1869_device ) +static ADDRESS_MAP_START( cdp1869, 0, 8, cdp1869_device ) AM_RANGE(0x000, 0x7ff) AM_RAM ADDRESS_MAP_END @@ -460,9 +460,11 @@ void cdp1869_device::device_timer(emu_timer &timer, device_timer_id id, int para // any address spaces owned by this device //------------------------------------------------- -const address_space_config *cdp1869_device::memory_space_config(address_spacenum spacenum) const +std::vector> cdp1869_device::memory_space_config() const { - return (spacenum == 0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/sound/cdp1869.h b/src/devices/sound/cdp1869.h index 8023da30d61..998a69dfa5c 100644 --- a/src/devices/sound/cdp1869.h +++ b/src/devices/sound/cdp1869.h @@ -88,7 +88,7 @@ #define MCFG_CDP1869_ADD(_tag, _pixclock, _map) \ MCFG_DEVICE_ADD(_tag, CDP1869, _pixclock) \ - MCFG_DEVICE_ADDRESS_MAP(AS_0, _map) + MCFG_DEVICE_ADDRESS_MAP(0, _map) #define MCFG_CDP1869_SCREEN_PAL_ADD(_cdptag, _tag, _clock) \ MCFG_SCREEN_ADD(_tag, RASTER) \ @@ -224,7 +224,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // device_sound_interface callbacks virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; diff --git a/src/devices/sound/dave.cpp b/src/devices/sound/dave.cpp index c67385cef71..2cc9cfc25a3 100644 --- a/src/devices/sound/dave.cpp +++ b/src/devices/sound/dave.cpp @@ -173,14 +173,12 @@ void dave_device::device_timer(emu_timer &timer, device_timer_id id, int param, // any address spaces owned by this device //------------------------------------------------- -const address_space_config *dave_device::memory_space_config(address_spacenum spacenum) const +std::vector> dave_device::memory_space_config() const { - switch (spacenum) - { - case AS_PROGRAM: return &m_program_space_config; - case AS_IO: return &m_io_space_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_space_config), + std::make_pair(AS_IO, &m_io_space_config) + }; } diff --git a/src/devices/sound/dave.h b/src/devices/sound/dave.h index 6630ff27115..90d4ec52f14 100644 --- a/src/devices/sound/dave.h +++ b/src/devices/sound/dave.h @@ -72,7 +72,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; diff --git a/src/devices/sound/mos6560.cpp b/src/devices/sound/mos6560.cpp index 8738fbc58ea..b8b7af6cc9b 100644 --- a/src/devices/sound/mos6560.cpp +++ b/src/devices/sound/mos6560.cpp @@ -157,14 +157,14 @@ static const rgb_t PALETTE_MOS[] = inline uint8_t mos6560_device::read_videoram(offs_t offset) { - m_last_data = space(AS_0).read_byte(offset & 0x3fff); + m_last_data = space(0).read_byte(offset & 0x3fff); return m_last_data; } inline uint8_t mos6560_device::read_colorram(offs_t offset) { - return space(AS_1).read_byte(offset & 0x3ff); + return space(1).read_byte(offset & 0x3ff); } /*------------------------------------------------- @@ -680,11 +680,11 @@ DEFINE_DEVICE_TYPE(MOS6561, mos6561_device, "mos6561", DEFINE_DEVICE_TYPE(MOS656X_ATTACK_UFO, mos656x_attack_ufo_device, "mos656x_attack_ufo", "MOS 656X VIC (Attack UFO)") // default address maps -static ADDRESS_MAP_START( mos6560_videoram_map, AS_0, 8, mos6560_device ) +static ADDRESS_MAP_START( mos6560_videoram_map, 0, 8, mos6560_device ) AM_RANGE(0x0000, 0x3fff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( mos6560_colorram_map, AS_1, 8, mos6560_device ) +static ADDRESS_MAP_START( mos6560_colorram_map, 1, 8, mos6560_device ) AM_RANGE(0x000, 0x3ff) AM_RAM ADDRESS_MAP_END @@ -722,14 +722,12 @@ mos656x_attack_ufo_device::mos656x_attack_ufo_device(const machine_config &mconf // any address spaces owned by this device //------------------------------------------------- -const address_space_config *mos6560_device::memory_space_config(address_spacenum spacenum) const +std::vector> mos6560_device::memory_space_config() const { - switch (spacenum) - { - case AS_0: return &m_videoram_space_config; - case AS_1: return &m_colorram_space_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(0, &m_videoram_space_config), + std::make_pair(1, &m_colorram_space_config) + }; } diff --git a/src/devices/sound/mos6560.h b/src/devices/sound/mos6560.h index 761017b55b5..8d652204d3f 100644 --- a/src/devices/sound/mos6560.h +++ b/src/devices/sound/mos6560.h @@ -50,8 +50,8 @@ MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6560_device, screen_update) \ MCFG_SOUND_ADD(_tag, MOS6560, _clock) \ MCFG_VIDEO_SET_SCREEN(_screen_tag) \ - MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \ - MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map) + MCFG_DEVICE_ADDRESS_MAP(0, _videoram_map) \ + MCFG_DEVICE_ADDRESS_MAP(1, _colorram_map) #define MCFG_MOS6561_ADD(_tag, _screen_tag, _clock, _videoram_map, _colorram_map) \ MCFG_SCREEN_ADD(_screen_tag, RASTER) \ @@ -62,8 +62,8 @@ MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6560_device, screen_update) \ MCFG_SOUND_ADD(_tag, MOS6561, _clock) \ MCFG_VIDEO_SET_SCREEN(_screen_tag) \ - MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \ - MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map) + MCFG_DEVICE_ADDRESS_MAP(0, _videoram_map) \ + MCFG_DEVICE_ADDRESS_MAP(1, _colorram_map) #define MCFG_MOS656X_ATTACK_UFO_ADD(_tag, _screen_tag, _clock, _videoram_map, _colorram_map) \ MCFG_SCREEN_ADD(_screen_tag, RASTER) \ @@ -74,8 +74,8 @@ MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6560_device, screen_update) \ MCFG_SOUND_ADD(_tag, MOS656X_ATTACK_UFO, _clock) \ MCFG_VIDEO_SET_SCREEN(_screen_tag) \ - MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \ - MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map) + MCFG_DEVICE_ADDRESS_MAP(0, _videoram_map) \ + MCFG_DEVICE_ADDRESS_MAP(1, _colorram_map) #define MCFG_MOS6560_POTX_CALLBACK(_read) \ @@ -139,7 +139,7 @@ public: template static devcb_base &set_potx_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_potx.set_callback(std::forward(cb)); } template static devcb_base &set_poty_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_poty.set_callback(std::forward(cb)); } - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/sound/mos7360.cpp b/src/devices/sound/mos7360.cpp index 37799e1830e..a312263bf36 100644 --- a/src/devices/sound/mos7360.cpp +++ b/src/devices/sound/mos7360.cpp @@ -170,7 +170,7 @@ DEFINE_DEVICE_TYPE(MOS7360, mos7360_device, "mos7360", "MOS 7360 TED") // default address maps -static ADDRESS_MAP_START( mos7360_videoram_map, AS_0, 8, mos7360_device ) +static ADDRESS_MAP_START( mos7360_videoram_map, 0, 8, mos7360_device ) AM_RANGE(0x0000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -180,13 +180,11 @@ ADDRESS_MAP_END // any address spaces owned by this device //------------------------------------------------- -const address_space_config *mos7360_device::memory_space_config(address_spacenum spacenum) const +std::vector> mos7360_device::memory_space_config() const { - switch (spacenum) - { - case AS_0: return &m_videoram_space_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(0, &m_videoram_space_config) + }; } @@ -232,7 +230,7 @@ inline uint8_t mos7360_device::read_ram(offs_t offset) int rom = m_rom; m_rom = 0; - m_last_data = space(AS_0).read_byte(offset); + m_last_data = space(0).read_byte(offset); m_rom = rom; @@ -244,7 +242,7 @@ inline uint8_t mos7360_device::read_rom(offs_t offset) int rom = m_rom; m_rom = 1; - m_last_data = space(AS_0).read_byte(offset); + m_last_data = space(0).read_byte(offset); m_rom = rom; diff --git a/src/devices/sound/mos7360.h b/src/devices/sound/mos7360.h index 3cdeb6fb368..48353bca33a 100644 --- a/src/devices/sound/mos7360.h +++ b/src/devices/sound/mos7360.h @@ -49,7 +49,7 @@ MCFG_SCREEN_VISIBLE_AREA(0, 336 - 1, 0, 216 - 1) \ MCFG_SCREEN_UPDATE_DEVICE(_tag, mos7360_device, screen_update) \ MCFG_DEVICE_ADD(_tag, MOS7360, _clock) \ - MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \ + MCFG_DEVICE_ADDRESS_MAP(0, _videoram_map) \ MCFG_VIDEO_SET_SCREEN(_screen_tag) \ downcast(device)->set_callbacks(_cpu_tag, DEVCB_##_irq, DEVCB_##_k); @@ -102,7 +102,7 @@ public: m_read_k.set_callback(std::forward(k)); } - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; uint8_t read(address_space &space, offs_t offset, int &cs0, int &cs1); void write(address_space &space, offs_t offset, uint8_t data, int &cs0, int &cs1); diff --git a/src/devices/sound/upd7752.cpp b/src/devices/sound/upd7752.cpp index 1e368a0db1a..250b4645257 100644 --- a/src/devices/sound/upd7752.cpp +++ b/src/devices/sound/upd7752.cpp @@ -29,7 +29,7 @@ DEFINE_DEVICE_TYPE(UPD7752, upd7752_device, "upd7752", "NEC uPD7752") /* TODO: unknown exact size */ -static ADDRESS_MAP_START( upd7752_ram, AS_0, 8, upd7752_device ) +static ADDRESS_MAP_START( upd7752_ram, 0, 8, upd7752_device ) // AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -56,9 +56,11 @@ upd7752_device::upd7752_device(const machine_config &mconfig, const char *tag, d // any address spaces owned by this device //------------------------------------------------- -const address_space_config *upd7752_device::memory_space_config(address_spacenum spacenum) const +std::vector> upd7752_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/sound/upd7752.h b/src/devices/sound/upd7752.h index af3988bd46c..f25dc53a764 100644 --- a/src/devices/sound/upd7752.h +++ b/src/devices/sound/upd7752.h @@ -36,7 +36,7 @@ protected: virtual void device_reset() override; virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; private: sound_stream *m_stream; diff --git a/src/devices/sound/ymf278b.cpp b/src/devices/sound/ymf278b.cpp index ab76ffa4a90..d44f8cdaf00 100644 --- a/src/devices/sound/ymf278b.cpp +++ b/src/devices/sound/ymf278b.cpp @@ -640,7 +640,7 @@ void ymf278b_device::C_w(uint8_t reg, uint8_t data) case 0x06: // memory data - space(AS_0).write_byte(m_memadr, data); + space(0).write_byte(m_memadr, data); m_memadr = (m_memadr + 1) & 0x3fffff; break; diff --git a/src/devices/video/315_5124.cpp b/src/devices/video/315_5124.cpp index 21473f6d018..2a1f684ad88 100644 --- a/src/devices/video/315_5124.cpp +++ b/src/devices/video/315_5124.cpp @@ -160,7 +160,7 @@ PALETTE_INIT_MEMBER(sega315_5378_device, sega315_5378) // default address map -static ADDRESS_MAP_START( sega315_5124, AS_0, 8, sega315_5124_device ) +static ADDRESS_MAP_START( sega315_5124, 0, 8, sega315_5124_device ) AM_RANGE(0x0000, VRAM_SIZE-1) AM_RAM ADDRESS_MAP_END @@ -200,6 +200,14 @@ sega315_5378_device::sega315_5378_device(const machine_config &mconfig, const ch } +std::vector> sega315_5124_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(0, &m_space_config) + }; +} + + void sega315_5124_device::set_display_settings() { const bool M1 = m_reg[0x01] & 0x10; diff --git a/src/devices/video/315_5124.h b/src/devices/video/315_5124.h index 8038abdcd7c..cf0646987fa 100644 --- a/src/devices/video/315_5124.h +++ b/src/devices/video/315_5124.h @@ -92,7 +92,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void device_add_mconfig(machine_config &config) override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_0) ? &m_space_config : nullptr; } + virtual std::vector> memory_space_config() const override; void set_display_settings(); void set_frame_timing(); diff --git a/src/devices/video/cesblit.cpp b/src/devices/video/cesblit.cpp index e25b4cb56c5..6acd772fb4c 100644 --- a/src/devices/video/cesblit.cpp +++ b/src/devices/video/cesblit.cpp @@ -79,6 +79,13 @@ cesblit_device::cesblit_device(const machine_config &mconfig, const char *tag, d { } +std::vector> cesblit_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_space_config) + }; +} + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/video/cesblit.h b/src/devices/video/cesblit.h index 93b0598c830..8125ec6eadd 100644 --- a/src/devices/video/cesblit.h +++ b/src/devices/video/cesblit.h @@ -59,7 +59,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_stop() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_space_config : nullptr; } + virtual std::vector> memory_space_config() const override; void do_blit(); diff --git a/src/devices/video/crt9007.cpp b/src/devices/video/crt9007.cpp index bf018d821f7..a8d37392034 100644 --- a/src/devices/video/crt9007.cpp +++ b/src/devices/video/crt9007.cpp @@ -222,7 +222,7 @@ const int STATUS_LIGHT_PEN_UPDATE = 0x20; //************************************************************************** // default address map -static ADDRESS_MAP_START( crt9007, AS_0, 8, crt9007_device ) +static ADDRESS_MAP_START( crt9007, 0, 8, crt9007_device ) AM_RANGE(0x0000, 0x3fff) AM_RAM ADDRESS_MAP_END @@ -656,9 +656,11 @@ void crt9007_device::device_timer(emu_timer &timer, device_timer_id id, int para // any address spaces owned by this device //------------------------------------------------- -const address_space_config *crt9007_device::memory_space_config(address_spacenum spacenum) const +std::vector> crt9007_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/video/crt9007.h b/src/devices/video/crt9007.h index 0618a62853e..d7d80900d4f 100644 --- a/src/devices/video/crt9007.h +++ b/src/devices/video/crt9007.h @@ -122,7 +122,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; private: enum diff --git a/src/devices/video/ef9345.cpp b/src/devices/video/ef9345.cpp index e0385007b7b..d3c58fb5670 100644 --- a/src/devices/video/ef9345.cpp +++ b/src/devices/video/ef9345.cpp @@ -33,7 +33,7 @@ DEFINE_DEVICE_TYPE(EF9345, ef9345_device, "ef9345", "EF9345") DEFINE_DEVICE_TYPE(TS9347, ts9347_device, "ts9347", "TS9347") // default address map -static ADDRESS_MAP_START( ef9345, AS_0, 8, ef9345_device ) +static ADDRESS_MAP_START( ef9345, 0, 8, ef9345_device ) AM_RANGE(0x0000, 0x3fff) AM_RAM ADDRESS_MAP_END @@ -42,9 +42,11 @@ ADDRESS_MAP_END // any address spaces owned by this device //------------------------------------------------- -const address_space_config *ef9345_device::memory_space_config(address_spacenum spacenum) const +std::vector> ef9345_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } //************************************************************************** diff --git a/src/devices/video/ef9345.h b/src/devices/video/ef9345.h index 8f58eb2c4a6..beece436015 100644 --- a/src/devices/video/ef9345.h +++ b/src/devices/video/ef9345.h @@ -56,7 +56,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_config_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; // address space configurations const address_space_config m_space_config; diff --git a/src/devices/video/ef9364.cpp b/src/devices/video/ef9364.cpp index 5be327900f4..6ac4c8008ad 100644 --- a/src/devices/video/ef9364.cpp +++ b/src/devices/video/ef9364.cpp @@ -33,7 +33,7 @@ DEFINE_DEVICE_TYPE(EF9364, ef9364_device, "ef9364", "Thomson EF9364") //------------------------------------------------- // default address map //------------------------------------------------- -static ADDRESS_MAP_START( ef9364, AS_0, 8, ef9364_device ) +static ADDRESS_MAP_START( ef9364, 0, 8, ef9364_device ) AM_RANGE(0x00000, ( ( ef9364_device::TXTPLANE_MAX_SIZE * ef9364_device::MAX_TXTPLANES ) - 1 ) ) AM_RAM ADDRESS_MAP_END @@ -42,9 +42,11 @@ ADDRESS_MAP_END // any address spaces owned by this device //------------------------------------------------- -const address_space_config *ef9364_device::memory_space_config(address_spacenum spacenum) const +std::vector> ef9364_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } //************************************************************************** diff --git a/src/devices/video/ef9364.h b/src/devices/video/ef9364.h index 2a6f20c0f48..b33e19f6e93 100644 --- a/src/devices/video/ef9364.h +++ b/src/devices/video/ef9364.h @@ -60,7 +60,7 @@ protected: virtual void device_reset() override; // device_config_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // address space configurations const address_space_config m_space_config; diff --git a/src/devices/video/ef9365.cpp b/src/devices/video/ef9365.cpp index 5e62a34c369..3fc83abbf8b 100644 --- a/src/devices/video/ef9365.cpp +++ b/src/devices/video/ef9365.cpp @@ -166,7 +166,7 @@ const tiny_rom_entry *ef9365_device::device_rom_region() const // default address map // Up to 512*512 per bitplane, 8 bitplanes max. //------------------------------------------------- -static ADDRESS_MAP_START( ef9365, AS_0, 8, ef9365_device ) +static ADDRESS_MAP_START( ef9365, 0, 8, ef9365_device ) AM_RANGE(0x00000, ( ( ef9365_device::BITPLANE_MAX_SIZE * ef9365_device::MAX_BITPLANES ) - 1 ) ) AM_RAM ADDRESS_MAP_END @@ -175,9 +175,11 @@ ADDRESS_MAP_END // any address spaces owned by this device //------------------------------------------------- -const address_space_config *ef9365_device::memory_space_config(address_spacenum spacenum) const +std::vector> ef9365_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } //************************************************************************** diff --git a/src/devices/video/ef9365.h b/src/devices/video/ef9365.h index 5593c743552..fdf084ffd7b 100644 --- a/src/devices/video/ef9365.h +++ b/src/devices/video/ef9365.h @@ -74,7 +74,7 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; // device_config_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // address space configurations const address_space_config m_space_config; diff --git a/src/devices/video/hd61830.cpp b/src/devices/video/hd61830.cpp index f235b1b3d12..fcde5279b28 100644 --- a/src/devices/video/hd61830.cpp +++ b/src/devices/video/hd61830.cpp @@ -25,7 +25,7 @@ const device_type HD61830B = HD61830; // default address map -static ADDRESS_MAP_START( hd61830, AS_0, 8, hd61830_device ) +static ADDRESS_MAP_START( hd61830, 0, 8, hd61830_device ) AM_RANGE(0x0000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -148,9 +148,11 @@ void hd61830_device::device_timer(emu_timer &timer, device_timer_id id, int para // any address spaces owned by this device //------------------------------------------------- -const address_space_config *hd61830_device::memory_space_config(address_spacenum spacenum) const +std::vector> hd61830_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/video/hd61830.h b/src/devices/video/hd61830.h index e454ec79a97..60d6cee9fd0 100644 --- a/src/devices/video/hd61830.h +++ b/src/devices/video/hd61830.h @@ -55,7 +55,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; uint8_t readbyte(offs_t address) { return space().read_byte(address); } void writebyte(offs_t address, uint8_t data) { space().write_byte(address, data); } diff --git a/src/devices/video/hd63484.cpp b/src/devices/video/hd63484.cpp index 0345362ebd6..b781000c9d6 100644 --- a/src/devices/video/hd63484.cpp +++ b/src/devices/video/hd63484.cpp @@ -344,9 +344,11 @@ ROM_END // any address spaces owned by this device //------------------------------------------------- -const address_space_config *hd63484_device::memory_space_config(address_spacenum spacenum) const +std::vector> hd63484_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/video/hd63484.h b/src/devices/video/hd63484.h index 0bdb703f388..22c3ddbbb1a 100644 --- a/src/devices/video/hd63484.h +++ b/src/devices/video/hd63484.h @@ -20,10 +20,10 @@ #define MCFG_HD63484_ADD(_tag, _clock, _map) \ MCFG_DEVICE_ADD(_tag, HD63484, _clock) \ - MCFG_DEVICE_ADDRESS_MAP(AS_0, _map) + MCFG_DEVICE_ADDRESS_MAP(0, _map) #define MCFG_HD63484_ADDRESS_MAP(_map) \ - MCFG_DEVICE_ADDRESS_MAP(AS_0, _map) + MCFG_DEVICE_ADDRESS_MAP(0, _map) #define MCFG_HD63484_DISPLAY_CALLBACK_OWNER(_class, _method) \ hd63484_device::static_set_display_callback(*device, hd63484_device::display_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); @@ -61,7 +61,7 @@ public: uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); virtual const tiny_rom_entry *device_rom_region() const override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; protected: // device-level overrides diff --git a/src/devices/video/hd66421.cpp b/src/devices/video/hd66421.cpp index ad6349f999a..937bebd3996 100644 --- a/src/devices/video/hd66421.cpp +++ b/src/devices/video/hd66421.cpp @@ -72,7 +72,7 @@ DEFINE_DEVICE_TYPE(HD66421, hd66421_device, "hd66421", "Hitachi HD66421 LCD Cont // default address map -static ADDRESS_MAP_START( hd66421, AS_0, 8, hd66421_device ) +static ADDRESS_MAP_START( hd66421, 0, 8, hd66421_device ) AM_RANGE(0x0000, HD66421_RAM_SIZE) AM_RAM ADDRESS_MAP_END @@ -81,9 +81,11 @@ ADDRESS_MAP_END // any address spaces owned by this device //------------------------------------------------- -const address_space_config *hd66421_device::memory_space_config(address_spacenum spacenum) const +std::vector> hd66421_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/video/hd66421.h b/src/devices/video/hd66421.h index 331f91e12e2..23c65501c03 100644 --- a/src/devices/video/hd66421.h +++ b/src/devices/video/hd66421.h @@ -50,7 +50,7 @@ protected: virtual void device_add_mconfig(machine_config &config) override; // device_config_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // address space configurations const address_space_config m_space_config; diff --git a/src/devices/video/huc6271.cpp b/src/devices/video/huc6271.cpp index a17d85f9679..c44d47cf3eb 100644 --- a/src/devices/video/huc6271.cpp +++ b/src/devices/video/huc6271.cpp @@ -66,14 +66,11 @@ void huc6271_device::device_reset() { } -const address_space_config *huc6271_device::memory_space_config(address_spacenum spacenum) const +std::vector> huc6271_device::memory_space_config() const { - switch(spacenum) - { -// case AS_PROGRAM: return &m_program_space_config; - case AS_DATA: return &m_data_space_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(AS_DATA, &m_data_space_config) + }; } //************************************************************************** diff --git a/src/devices/video/huc6271.h b/src/devices/video/huc6271.h index eba09821ff0..64311033520 100644 --- a/src/devices/video/huc6271.h +++ b/src/devices/video/huc6271.h @@ -41,7 +41,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; private: const address_space_config m_data_space_config; diff --git a/src/devices/video/huc6272.cpp b/src/devices/video/huc6272.cpp index 12e5cfb3046..bd28aa0baee 100644 --- a/src/devices/video/huc6272.cpp +++ b/src/devices/video/huc6272.cpp @@ -95,14 +95,12 @@ void huc6272_device::device_reset() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *huc6272_device::memory_space_config(address_spacenum spacenum) const +std::vector> huc6272_device::memory_space_config() const { - switch(spacenum) - { - case AS_PROGRAM: return &m_program_space_config; - case AS_DATA: return &m_data_space_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_space_config), + std::make_pair(AS_DATA, &m_data_space_config) + }; } //************************************************************************** diff --git a/src/devices/video/huc6272.h b/src/devices/video/huc6272.h index c6f372e9fcf..638aebdf0d6 100644 --- a/src/devices/video/huc6272.h +++ b/src/devices/video/huc6272.h @@ -56,7 +56,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void device_add_mconfig(machine_config &config) override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_PROGRAM) const override; + virtual std::vector> memory_space_config() const override; private: const char *m_huc6271_tag; diff --git a/src/devices/video/m50458.cpp b/src/devices/video/m50458.cpp index 1b34b718c8e..bb79ba1faaa 100644 --- a/src/devices/video/m50458.cpp +++ b/src/devices/video/m50458.cpp @@ -29,7 +29,7 @@ // device type definition DEFINE_DEVICE_TYPE(M50458, m50458_device, "m50458", "Mitsubishi M50458 OSD") -static ADDRESS_MAP_START( m50458_vram, AS_0, 16, m50458_device ) +static ADDRESS_MAP_START( m50458_vram, 0, 16, m50458_device ) AM_RANGE(0x0000, 0x023f) AM_RAM // vram AM_RANGE(0x0240, 0x0241) AM_WRITE(vreg_120_w) AM_RANGE(0x0242, 0x0243) AM_WRITE(vreg_121_w) @@ -137,9 +137,11 @@ const tiny_rom_entry *m50458_device::device_rom_region() const // any address spaces owned by this device //------------------------------------------------- -const address_space_config *m50458_device::memory_space_config(address_spacenum spacenum) const +std::vector> m50458_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } //************************************************************************** diff --git a/src/devices/video/m50458.h b/src/devices/video/m50458.h index d4eebc4e9a8..dc2c7d7d70a 100644 --- a/src/devices/video/m50458.h +++ b/src/devices/video/m50458.h @@ -63,7 +63,7 @@ protected: virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; int m_latch; int m_reset_line; diff --git a/src/devices/video/mb90082.cpp b/src/devices/video/mb90082.cpp index ef668a91732..8007f283e2f 100644 --- a/src/devices/video/mb90082.cpp +++ b/src/devices/video/mb90082.cpp @@ -23,7 +23,7 @@ // device type definition DEFINE_DEVICE_TYPE(MB90082, mb90082_device, "mb90082", "Fujitsu MB90082 OSD") -static ADDRESS_MAP_START( mb90082_vram, AS_0, 16, mb90082_device ) +static ADDRESS_MAP_START( mb90082_vram, 0, 16, mb90082_device ) AM_RANGE(0x0000, 0x023f) AM_RAM // main screen vram AM_RANGE(0x0400, 0x063f) AM_RAM // main screen attr // AM_RANGE(0x0800, 0x0a3f) AM_RAM // sub screen vram @@ -50,9 +50,11 @@ const tiny_rom_entry *mb90082_device::device_rom_region() const // any address spaces owned by this device //------------------------------------------------- -const address_space_config *mb90082_device::memory_space_config(address_spacenum spacenum) const +std::vector> mb90082_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } //************************************************************************** diff --git a/src/devices/video/mb90082.h b/src/devices/video/mb90082.h index 9014b14a79e..0bdeae355d2 100644 --- a/src/devices/video/mb90082.h +++ b/src/devices/video/mb90082.h @@ -46,7 +46,7 @@ protected: virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; private: enum diff --git a/src/devices/video/mb_vcu.cpp b/src/devices/video/mb_vcu.cpp index d149d5880a0..08f082fa920 100644 --- a/src/devices/video/mb_vcu.cpp +++ b/src/devices/video/mb_vcu.cpp @@ -43,12 +43,12 @@ void mb_vcu_device::static_set_palette_tag(device_t &device, const char *tag) } -static ADDRESS_MAP_START( mb_vcu_vram, AS_0, 8, mb_vcu_device ) +static ADDRESS_MAP_START( mb_vcu_vram, 0, 8, mb_vcu_device ) AM_RANGE(0x00000,0x7ffff) AM_RAM // enough for a 256x256x4 x 2 pages of framebuffer with 4 layers (TODO: doubled for simplicity) ADDRESS_MAP_END -static ADDRESS_MAP_START( mb_vcu_pal_ram, AS_1, 8, mb_vcu_device ) +static ADDRESS_MAP_START( mb_vcu_pal_ram, 1, 8, mb_vcu_device ) AM_RANGE(0x0000, 0x00ff) AM_RAM AM_RANGE(0x0200, 0x02ff) AM_RAM AM_RANGE(0x0400, 0x04ff) AM_RAM @@ -91,14 +91,12 @@ WRITE8_MEMBER( mb_vcu_device::mb_vcu_paletteram_w ) // any address spaces owned by this device //------------------------------------------------- -const address_space_config *mb_vcu_device::memory_space_config(address_spacenum spacenum) const +std::vector> mb_vcu_device::memory_space_config() const { - switch (spacenum) - { - case AS_0: return &m_videoram_space_config; - case AS_1: return &m_paletteram_space_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(0, &m_videoram_space_config), + std::make_pair(1, &m_paletteram_space_config) + }; } //************************************************************************** @@ -111,7 +109,7 @@ const address_space_config *mb_vcu_device::memory_space_config(address_spacenum inline uint8_t mb_vcu_device::read_byte(offs_t address) { - return space(AS_0).read_byte(address); + return space(0).read_byte(address); } //------------------------------------------------- @@ -120,7 +118,7 @@ inline uint8_t mb_vcu_device::read_byte(offs_t address) inline void mb_vcu_device::write_byte(offs_t address, uint8_t data) { - space(AS_0).write_byte(address, data); + space(0).write_byte(address, data); } //------------------------------------------------- @@ -129,7 +127,7 @@ inline void mb_vcu_device::write_byte(offs_t address, uint8_t data) inline uint8_t mb_vcu_device::read_io(offs_t address) { - return space(AS_1).read_byte(address); + return space(1).read_byte(address); } //------------------------------------------------- @@ -138,7 +136,7 @@ inline uint8_t mb_vcu_device::read_io(offs_t address) inline void mb_vcu_device::write_io(offs_t address, uint8_t data) { - space(AS_1).write_byte(address, data); + space(1).write_byte(address, data); } diff --git a/src/devices/video/mb_vcu.h b/src/devices/video/mb_vcu.h index 4171f14b03b..2c2d820e238 100644 --- a/src/devices/video/mb_vcu.h +++ b/src/devices/video/mb_vcu.h @@ -45,7 +45,7 @@ protected: virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; private: inline uint8_t read_byte(offs_t address); diff --git a/src/devices/video/mc6845.cpp b/src/devices/video/mc6845.cpp index e99a53c24d5..ee3b2ae291d 100644 --- a/src/devices/video/mc6845.cpp +++ b/src/devices/video/mc6845.cpp @@ -464,12 +464,12 @@ WRITE8_MEMBER( hd6345_device::register_w ) inline uint8_t mos8563_device::read_videoram(offs_t offset) { - return space(AS_0).read_byte(offset); + return space(0).read_byte(offset); } inline void mos8563_device::write_videoram(offs_t offset, uint8_t data) { - space(AS_0).write_byte(offset, data); + space(0).write_byte(offset, data); } @@ -1425,17 +1425,15 @@ void mos8568_device::device_reset() { mos8563_device::device_reset(); } // any address spaces owned by this device //------------------------------------------------- -const address_space_config *mos8563_device::memory_space_config(address_spacenum spacenum) const +std::vector> mos8563_device::memory_space_config() const { - switch (spacenum) - { - case AS_0: return &m_videoram_space_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(0, &m_videoram_space_config), + }; } // default address maps -static ADDRESS_MAP_START( mos8563_videoram_map, AS_0, 8, mos8563_device ) +static ADDRESS_MAP_START( mos8563_videoram_map, 0, 8, mos8563_device ) AM_RANGE(0x0000, 0xffff) AM_RAM ADDRESS_MAP_END diff --git a/src/devices/video/mc6845.h b/src/devices/video/mc6845.h index e6927bb7ed7..2d6f9761b2f 100644 --- a/src/devices/video/mc6845.h +++ b/src/devices/video/mc6845.h @@ -19,12 +19,12 @@ #define MCFG_MOS8563_ADD(_tag, _screen_tag, _clock, _map) \ MCFG_DEVICE_ADD(_tag, MOS8563, _clock) \ MCFG_VIDEO_SET_SCREEN(_screen_tag) \ - MCFG_DEVICE_ADDRESS_MAP(AS_0, _map) + MCFG_DEVICE_ADDRESS_MAP(0, _map) #define MCFG_MOS8568_ADD(_tag, _screen_tag, _clock, _map) \ MCFG_DEVICE_ADD(_tag, MOS8568, _clock) \ MCFG_VIDEO_SET_SCREEN(_screen_tag) \ - MCFG_DEVICE_ADDRESS_MAP(AS_0, _map) + MCFG_DEVICE_ADDRESS_MAP(0, _map) #define MCFG_MC6845_SHOW_BORDER_AREA(_show) \ @@ -429,7 +429,7 @@ class mos8563_device : public mc6845_device, public: mos8563_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; DECLARE_WRITE8_MEMBER( address_w ); DECLARE_READ8_MEMBER( status_r ); diff --git a/src/devices/video/mos6566.cpp b/src/devices/video/mos6566.cpp index a521238515e..81082d5a8c8 100644 --- a/src/devices/video/mos6566.cpp +++ b/src/devices/video/mos6566.cpp @@ -225,11 +225,11 @@ DEFINE_DEVICE_TYPE(MOS8566, mos8566_device, "mos8566", "MOS 8566 VIC-II") // default address maps -static ADDRESS_MAP_START( mos6566_videoram_map, AS_0, 8, mos6566_device ) +static ADDRESS_MAP_START( mos6566_videoram_map, 0, 8, mos6566_device ) AM_RANGE(0x0000, 0x3fff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( mos6566_colorram_map, AS_1, 8, mos6566_device ) +static ADDRESS_MAP_START( mos6566_colorram_map, 1, 8, mos6566_device ) AM_RANGE(0x000, 0x3ff) AM_RAM ADDRESS_MAP_END @@ -239,14 +239,12 @@ ADDRESS_MAP_END // any address spaces owned by this device //------------------------------------------------- -const address_space_config *mos6566_device::memory_space_config(address_spacenum spacenum) const +std::vector> mos6566_device::memory_space_config() const { - switch (spacenum) - { - case AS_0: return &m_videoram_space_config; - case AS_1: return &m_colorram_space_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(0, &m_videoram_space_config), + std::make_pair(1, &m_colorram_space_config) + }; } @@ -283,14 +281,14 @@ inline void mos6566_device::clear_interrupt( int mask ) inline uint8_t mos6566_device::read_videoram(offs_t offset) { //logerror("cycle %u VRAM %04x BA %u AEC %u\n", m_cycle, offset & 0x3fff, m_ba, m_aec); - m_last_data = space(AS_0).read_byte(offset & 0x3fff); + m_last_data = space(0).read_byte(offset & 0x3fff); return m_last_data; } inline uint8_t mos6566_device::read_colorram(offs_t offset) { - return space(AS_1).read_byte(offset & 0x3ff); + return space(1).read_byte(offset & 0x3ff); } // Idle access diff --git a/src/devices/video/mos6566.h b/src/devices/video/mos6566.h index b045286f1cf..18e03743738 100644 --- a/src/devices/video/mos6566.h +++ b/src/devices/video/mos6566.h @@ -218,7 +218,7 @@ public: template static devcb_base &set_aec_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_aec.set_callback(std::forward(cb)); } template static devcb_base &set_k_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_k.set_callback(std::forward(cb)); } - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/video/msm6255.cpp b/src/devices/video/msm6255.cpp index d7ee5ce7903..25618a69b10 100644 --- a/src/devices/video/msm6255.cpp +++ b/src/devices/video/msm6255.cpp @@ -60,7 +60,7 @@ DEVICE_ADDRESS_MAP_START( map, 8, msm6255_device ) ADDRESS_MAP_END // default address map -static ADDRESS_MAP_START( msm6255, AS_0, 8, msm6255_device ) +static ADDRESS_MAP_START( msm6255, 0, 8, msm6255_device ) AM_RANGE(0x00000, 0xfffff) AM_RAM ADDRESS_MAP_END @@ -121,9 +121,11 @@ void msm6255_device::device_reset() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *msm6255_device::memory_space_config(address_spacenum spacenum) const +std::vector> msm6255_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/video/msm6255.h b/src/devices/video/msm6255.h index 8028d69f86c..583b6da2b55 100644 --- a/src/devices/video/msm6255.h +++ b/src/devices/video/msm6255.h @@ -43,7 +43,7 @@ protected: virtual void device_reset() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; private: // registers diff --git a/src/devices/video/ppu2c0x.cpp b/src/devices/video/ppu2c0x.cpp index bf0f74549eb..ff294c6f968 100644 --- a/src/devices/video/ppu2c0x.cpp +++ b/src/devices/video/ppu2c0x.cpp @@ -87,7 +87,7 @@ DEFINE_DEVICE_TYPE(PPU_2C05_04, ppu2c05_04_device, "ppu2c05_04", "2C05_04 PPU") // default address map -static ADDRESS_MAP_START( ppu2c0x, AS_0, 8, ppu2c0x_device ) +static ADDRESS_MAP_START( ppu2c0x, 0, 8, ppu2c0x_device ) AM_RANGE(0x0000, 0x3eff) AM_RAM AM_RANGE(0x3f00, 0x3fff) AM_READWRITE(palette_read, palette_write) // AM_RANGE(0x0000, 0x3fff) AM_RAM @@ -98,9 +98,11 @@ ADDRESS_MAP_END // any address spaces owned by this device //------------------------------------------------- -const address_space_config *ppu2c0x_device::memory_space_config(address_spacenum spacenum) const +std::vector> ppu2c0x_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/video/ppu2c0x.h b/src/devices/video/ppu2c0x.h index 321b2ecaeb0..1dad69741e4 100644 --- a/src/devices/video/ppu2c0x.h +++ b/src/devices/video/ppu2c0x.h @@ -203,7 +203,7 @@ protected: virtual void device_config_complete() override; // device_config_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; // address space configurations const address_space_config m_space_config; diff --git a/src/devices/video/ramdac.cpp b/src/devices/video/ramdac.cpp index af8423b9179..7b9da1c54af 100644 --- a/src/devices/video/ramdac.cpp +++ b/src/devices/video/ramdac.cpp @@ -17,7 +17,7 @@ #include "video/ramdac.h" // default address map -static ADDRESS_MAP_START( ramdac_palram, AS_0, 8, ramdac_device ) +static ADDRESS_MAP_START( ramdac_palram, 0, 8, ramdac_device ) AM_RANGE(0x000, 0x0ff) AM_RAM // R bank AM_RANGE(0x100, 0x1ff) AM_RAM // G bank AM_RANGE(0x200, 0x2ff) AM_RAM // B bank @@ -65,9 +65,11 @@ void ramdac_device::static_set_palette_tag(device_t &device, const char *tag) // any address spaces owned by this device //------------------------------------------------- -const address_space_config *ramdac_device::memory_space_config(address_spacenum spacenum) const +std::vector> ramdac_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } //------------------------------------------------- diff --git a/src/devices/video/ramdac.h b/src/devices/video/ramdac.h index 92b739e7cff..4705f491089 100644 --- a/src/devices/video/ramdac.h +++ b/src/devices/video/ramdac.h @@ -19,7 +19,7 @@ #define MCFG_RAMDAC_ADD(_tag, _map, _palette_tag) \ MCFG_DEVICE_ADD(_tag, RAMDAC, 0) \ - MCFG_DEVICE_ADDRESS_MAP(AS_0, _map) \ + MCFG_DEVICE_ADDRESS_MAP(0, _map) \ ramdac_device::static_set_palette_tag(*device, "^" _palette_tag); #define MCFG_RAMDAC_COLOR_BASE(_color_base) \ @@ -60,7 +60,7 @@ public: DECLARE_WRITE8_MEMBER( ramdac_rgb666_w ); DECLARE_WRITE8_MEMBER( ramdac_rgb888_w ); - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; protected: // device-level overrides diff --git a/src/devices/video/scn2674.cpp b/src/devices/video/scn2674.cpp index e5058e3a90c..78df5d1f939 100644 --- a/src/devices/video/scn2674.cpp +++ b/src/devices/video/scn2674.cpp @@ -17,7 +17,7 @@ DEFINE_DEVICE_TYPE(SCN2674_VIDEO, scn2674_device, "scn2674", "Signetics SCN2674 // default address map -static ADDRESS_MAP_START( scn2674_vram, AS_0, 8, scn2674_device ) +static ADDRESS_MAP_START( scn2674_vram, 0, 8, scn2674_device ) AM_RANGE(0x0000, 0xffff) AM_NOP ADDRESS_MAP_END @@ -53,6 +53,13 @@ scn2674_device::scn2674_device(const machine_config &mconfig, const char *tag, d { } +std::vector> scn2674_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(0, &m_space_config) + }; +} + void scn2674_device::device_start() { // resolve callbacks diff --git a/src/devices/video/scn2674.h b/src/devices/video/scn2674.h index 1c7c724a399..e1580e0a0b6 100644 --- a/src/devices/video/scn2674.h +++ b/src/devices/video/scn2674.h @@ -42,7 +42,7 @@ public: DECLARE_WRITE8_MEMBER( buffer_w ) { m_buffer = data; } uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_0) ? &m_space_config : nullptr; } + virtual std::vector> memory_space_config() const override; protected: virtual void device_start() override; diff --git a/src/devices/video/sed1330.cpp b/src/devices/video/sed1330.cpp index 0336205784a..689ce522ad0 100644 --- a/src/devices/video/sed1330.cpp +++ b/src/devices/video/sed1330.cpp @@ -66,7 +66,7 @@ DEFINE_DEVICE_TYPE(SED1330, sed1330_device, "sed1330", "Epson SED1330") // default address map -static ADDRESS_MAP_START( sed1330, AS_0, 8, sed1330_device ) +static ADDRESS_MAP_START( sed1330, 0, 8, sed1330_device ) AM_RANGE(0x0000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -219,9 +219,11 @@ void sed1330_device::device_reset() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *sed1330_device::memory_space_config(address_spacenum spacenum) const +std::vector> sed1330_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/video/sed1330.h b/src/devices/video/sed1330.h index fd38f03e689..73b6da22be4 100644 --- a/src/devices/video/sed1330.h +++ b/src/devices/video/sed1330.h @@ -20,7 +20,7 @@ #define MCFG_SED1330_ADD(_tag, _clock, _screen_tag, _map) \ MCFG_DEVICE_ADD(_tag, SED1330, _clock) \ - MCFG_DEVICE_ADDRESS_MAP(AS_0, _map) \ + MCFG_DEVICE_ADDRESS_MAP(0, _map) \ MCFG_VIDEO_SET_SCREEN(_screen_tag) @@ -56,7 +56,7 @@ protected: virtual void device_reset() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; inline uint8_t readbyte(offs_t address); inline void writebyte(offs_t address, uint8_t m_data); diff --git a/src/devices/video/tms3556.cpp b/src/devices/video/tms3556.cpp index ce110948f3e..c2043076204 100644 --- a/src/devices/video/tms3556.cpp +++ b/src/devices/video/tms3556.cpp @@ -57,7 +57,7 @@ DEFINE_DEVICE_TYPE(TMS3556, tms3556_device, "tms3556", "Texas Instruments TMS355 // default address map -static ADDRESS_MAP_START( tms3556, AS_0, 8, tms3556_device ) +static ADDRESS_MAP_START( tms3556, 0, 8, tms3556_device ) AM_RANGE(0x0000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -66,9 +66,11 @@ ADDRESS_MAP_END // any address spaces owned by this device //------------------------------------------------- -const address_space_config *tms3556_device::memory_space_config(address_spacenum spacenum) const +std::vector> tms3556_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/video/tms3556.h b/src/devices/video/tms3556.h index 8788225ec62..bcdbc008d13 100644 --- a/src/devices/video/tms3556.h +++ b/src/devices/video/tms3556.h @@ -62,7 +62,7 @@ protected: virtual void device_start() override; // device_config_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; // address space configurations const address_space_config m_space_config; diff --git a/src/devices/video/tms9928a.cpp b/src/devices/video/tms9928a.cpp index a225d0db181..bbc543335eb 100644 --- a/src/devices/video/tms9928a.cpp +++ b/src/devices/video/tms9928a.cpp @@ -110,6 +110,13 @@ tms9929a_device::tms9929a_device(const machine_config &mconfig, const char *tag, { } +std::vector> tms9928a_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_DATA, &m_space_config) + }; +} + READ8_MEMBER( tms9928a_device::read ) { uint8_t value = 0; diff --git a/src/devices/video/tms9928a.h b/src/devices/video/tms9928a.h index 7db5991b5a5..06b53962625 100644 --- a/src/devices/video/tms9928a.h +++ b/src/devices/video/tms9928a.h @@ -116,7 +116,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_DATA) const override { return (spacenum == AS_DATA) ? &m_space_config : nullptr; } + virtual std::vector> memory_space_config() const override; private: void change_register(uint8_t reg, uint8_t val); diff --git a/src/devices/video/upd7220.cpp b/src/devices/video/upd7220.cpp index c4b5650cf76..f1444738296 100644 --- a/src/devices/video/upd7220.cpp +++ b/src/devices/video/upd7220.cpp @@ -149,7 +149,7 @@ DEFINE_DEVICE_TYPE(UPD7220, upd7220_device, "upd7220", "NEC uPD7220") // default address map -static ADDRESS_MAP_START( upd7220_vram, AS_0, 16, upd7220_device ) +static ADDRESS_MAP_START( upd7220_vram, 0, 16, upd7220_device ) AM_RANGE(0x00000, 0x3ffff) AM_RAM ADDRESS_MAP_END @@ -167,9 +167,11 @@ ROM_END // any address spaces owned by this device //------------------------------------------------- -const address_space_config *upd7220_device::memory_space_config(address_spacenum spacenum) const +std::vector> upd7220_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/video/upd7220.h b/src/devices/video/upd7220.h index df99a7556aa..087789bdb58 100644 --- a/src/devices/video/upd7220.h +++ b/src/devices/video/upd7220.h @@ -101,7 +101,7 @@ public: uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); virtual const tiny_rom_entry *device_rom_region() const override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; protected: // device-level overrides diff --git a/src/devices/video/upd7227.cpp b/src/devices/video/upd7227.cpp index 864d1a23935..88e9ac2d9ac 100644 --- a/src/devices/video/upd7227.cpp +++ b/src/devices/video/upd7227.cpp @@ -91,9 +91,11 @@ void upd7227_device::device_reset() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *upd7227_device::memory_space_config(address_spacenum spacenum) const +std::vector> upd7227_device::memory_space_config() const { - return (spacenum == 0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/devices/video/upd7227.h b/src/devices/video/upd7227.h index 725137bc376..73405b57818 100644 --- a/src/devices/video/upd7227.h +++ b/src/devices/video/upd7227.h @@ -53,7 +53,7 @@ protected: virtual void device_reset() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; address_space_config m_space_config; diff --git a/src/devices/video/v9938.cpp b/src/devices/video/v9938.cpp index ac7fd4575dc..ee69b1f26fc 100644 --- a/src/devices/video/v9938.cpp +++ b/src/devices/video/v9938.cpp @@ -132,6 +132,13 @@ v9958_device::v9958_device(const machine_config &mconfig, const char *tag, devic { } +std::vector> v99x8_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_DATA, &m_space_config) + }; +} + void v99x8_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { diff --git a/src/devices/video/v9938.h b/src/devices/video/v9938.h index ff8e4d27b28..0cc6eb9a4cd 100644 --- a/src/devices/video/v9938.h +++ b/src/devices/video/v9938.h @@ -129,7 +129,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_DATA) ? &m_space_config : nullptr; } + virtual std::vector> memory_space_config() const override; virtual void palette_init() = 0; diff --git a/src/emu/addrmap.cpp b/src/emu/addrmap.cpp index abcc2799025..0616947af03 100644 --- a/src/emu/addrmap.cpp +++ b/src/emu/addrmap.cpp @@ -335,7 +335,7 @@ bool address_map_entry::unitmask_is_appropriate(u8 width, u64 unitmask, const ch // address_map - constructor //------------------------------------------------- -address_map::address_map(device_t &device, address_spacenum spacenum) +address_map::address_map(device_t &device, int spacenum) : m_spacenum(spacenum), m_device(&device), m_databits(0xff), @@ -425,7 +425,7 @@ address_map::~address_map() // values //------------------------------------------------- -void address_map::configure(address_spacenum, u8 databits) +void address_map::configure(int, u8 databits) { if (m_databits == 0xff) m_databits = databits; @@ -605,7 +605,7 @@ void address_map::uplift_submaps(running_machine &machine, device_t &owner, endi // one of the device's address maps //------------------------------------------------- -void address_map::map_validity_check(validity_checker &valid, address_spacenum spacenum) const +void address_map::map_validity_check(validity_checker &valid, int spacenum) const { // it's safe to assume here that the device has a memory interface and a config for this space const address_space_config &spaceconfig = *m_device->memory().space_config(spacenum); diff --git a/src/emu/addrmap.h b/src/emu/addrmap.h index 675b90ff2ff..441273f1950 100644 --- a/src/emu/addrmap.h +++ b/src/emu/addrmap.h @@ -191,13 +191,13 @@ class address_map { public: // construction/destruction - address_map(device_t &device, address_spacenum spacenum); + address_map(device_t &device, int spacenum); address_map(device_t &device, address_map_entry *entry); address_map(const address_space &space, offs_t start, offs_t end, int bits, u64 unitmask, device_t &device, address_map_delegate submap_delegate); ~address_map(); // configuration - void configure(address_spacenum _spacenum, u8 _databits); + void configure(int _spacenum, u8 _databits); // setters void global_mask(offs_t mask); @@ -209,7 +209,7 @@ public: address_map_entry &range(offs_t start, offs_t end); // public data - address_spacenum m_spacenum; // space number of the map + int m_spacenum; // space number of the map device_t * m_device; // associated device u8 m_databits; // data bits represented by the map u8 m_unmapval; // unmapped memory value @@ -217,7 +217,7 @@ public: simple_list m_entrylist; // list of entries void uplift_submaps(running_machine &machine, device_t &owner, endianness_t endian); - void map_validity_check(validity_checker &valid, address_spacenum spacenum) const; + void map_validity_check(validity_checker &valid, int spacenum) const; }; diff --git a/src/emu/debug/debugcmd.cpp b/src/emu/debug/debugcmd.cpp index 145aaa0ac3f..415d9056324 100644 --- a/src/emu/debug/debugcmd.cpp +++ b/src/emu/debug/debugcmd.cpp @@ -180,8 +180,8 @@ debugger_commands::debugger_commands(running_machine& machine, debugger_cpu& cpu m_console.register_command("wpd", CMDFLAG_NONE, AS_DATA, 3, 5, std::bind(&debugger_commands::execute_wpset, this, _1, _2)); m_console.register_command("wpiset", CMDFLAG_NONE, AS_IO, 3, 5, std::bind(&debugger_commands::execute_wpset, this, _1, _2)); m_console.register_command("wpi", CMDFLAG_NONE, AS_IO, 3, 5, std::bind(&debugger_commands::execute_wpset, this, _1, _2)); - m_console.register_command("wposet", CMDFLAG_NONE, AS_DECRYPTED_OPCODES, 3, 5, std::bind(&debugger_commands::execute_wpset, this, _1, _2)); - m_console.register_command("wpo", CMDFLAG_NONE, AS_DECRYPTED_OPCODES, 3, 5, std::bind(&debugger_commands::execute_wpset, this, _1, _2)); + m_console.register_command("wposet", CMDFLAG_NONE, AS_OPCODES, 3, 5, std::bind(&debugger_commands::execute_wpset, this, _1, _2)); + m_console.register_command("wpo", CMDFLAG_NONE, AS_OPCODES, 3, 5, std::bind(&debugger_commands::execute_wpset, this, _1, _2)); m_console.register_command("wpclear", CMDFLAG_NONE, 0, 0, 1, std::bind(&debugger_commands::execute_wpclear, this, _1, _2)); m_console.register_command("wpdisable", CMDFLAG_NONE, 0, 0, 1, std::bind(&debugger_commands::execute_wpdisenable, this, _1, _2)); m_console.register_command("wpenable", CMDFLAG_NONE, 1, 0, 1, std::bind(&debugger_commands::execute_wpdisenable, this, _1, _2)); @@ -204,17 +204,17 @@ debugger_commands::debugger_commands(running_machine& machine, debugger_cpu& cpu m_console.register_command("save", CMDFLAG_NONE, AS_PROGRAM, 3, 4, std::bind(&debugger_commands::execute_save, this, _1, _2)); m_console.register_command("saved", CMDFLAG_NONE, AS_DATA, 3, 4, std::bind(&debugger_commands::execute_save, this, _1, _2)); m_console.register_command("savei", CMDFLAG_NONE, AS_IO, 3, 4, std::bind(&debugger_commands::execute_save, this, _1, _2)); - m_console.register_command("saveo", CMDFLAG_NONE, AS_DECRYPTED_OPCODES, 3, 4, std::bind(&debugger_commands::execute_save, this, _1, _2)); + m_console.register_command("saveo", CMDFLAG_NONE, AS_OPCODES, 3, 4, std::bind(&debugger_commands::execute_save, this, _1, _2)); m_console.register_command("load", CMDFLAG_NONE, AS_PROGRAM, 3, 4, std::bind(&debugger_commands::execute_load, this, _1, _2)); m_console.register_command("loadd", CMDFLAG_NONE, AS_DATA, 3, 4, std::bind(&debugger_commands::execute_load, this, _1, _2)); m_console.register_command("loadi", CMDFLAG_NONE, AS_IO, 3, 4, std::bind(&debugger_commands::execute_load, this, _1, _2)); - m_console.register_command("loado", CMDFLAG_NONE, AS_DECRYPTED_OPCODES, 3, 4, std::bind(&debugger_commands::execute_load, this, _1, _2)); + m_console.register_command("loado", CMDFLAG_NONE, AS_OPCODES, 3, 4, std::bind(&debugger_commands::execute_load, this, _1, _2)); m_console.register_command("dump", CMDFLAG_NONE, AS_PROGRAM, 3, 7, std::bind(&debugger_commands::execute_dump, this, _1, _2)); m_console.register_command("dumpd", CMDFLAG_NONE, AS_DATA, 3, 7, std::bind(&debugger_commands::execute_dump, this, _1, _2)); m_console.register_command("dumpi", CMDFLAG_NONE, AS_IO, 3, 7, std::bind(&debugger_commands::execute_dump, this, _1, _2)); - m_console.register_command("dumpo", CMDFLAG_NONE, AS_DECRYPTED_OPCODES, 3, 7, std::bind(&debugger_commands::execute_dump, this, _1, _2)); + m_console.register_command("dumpo", CMDFLAG_NONE, AS_OPCODES, 3, 7, std::bind(&debugger_commands::execute_dump, this, _1, _2)); m_console.register_command("cheatinit", CMDFLAG_NONE, 0, 0, 4, std::bind(&debugger_commands::execute_cheatinit, this, _1, _2)); m_console.register_command("ci", CMDFLAG_NONE, 0, 0, 4, std::bind(&debugger_commands::execute_cheatinit, this, _1, _2)); @@ -239,8 +239,8 @@ debugger_commands::debugger_commands(running_machine& machine, debugger_cpu& cpu m_console.register_command("findd", CMDFLAG_KEEP_QUOTES, AS_DATA, 3, MAX_COMMAND_PARAMS, std::bind(&debugger_commands::execute_find, this, _1, _2)); m_console.register_command("fi", CMDFLAG_KEEP_QUOTES, AS_IO, 3, MAX_COMMAND_PARAMS, std::bind(&debugger_commands::execute_find, this, _1, _2)); m_console.register_command("findi", CMDFLAG_KEEP_QUOTES, AS_IO, 3, MAX_COMMAND_PARAMS, std::bind(&debugger_commands::execute_find, this, _1, _2)); - m_console.register_command("fo", CMDFLAG_KEEP_QUOTES, AS_DECRYPTED_OPCODES, 3, MAX_COMMAND_PARAMS, std::bind(&debugger_commands::execute_find, this, _1, _2)); - m_console.register_command("findo", CMDFLAG_KEEP_QUOTES, AS_DECRYPTED_OPCODES, 3, MAX_COMMAND_PARAMS, std::bind(&debugger_commands::execute_find, this, _1, _2)); + m_console.register_command("fo", CMDFLAG_KEEP_QUOTES, AS_OPCODES, 3, MAX_COMMAND_PARAMS, std::bind(&debugger_commands::execute_find, this, _1, _2)); + m_console.register_command("findo", CMDFLAG_KEEP_QUOTES, AS_OPCODES, 3, MAX_COMMAND_PARAMS, std::bind(&debugger_commands::execute_find, this, _1, _2)); m_console.register_command("dasm", CMDFLAG_NONE, 0, 3, 5, std::bind(&debugger_commands::execute_dasm, this, _1, _2)); @@ -255,7 +255,7 @@ debugger_commands::debugger_commands(running_machine& machine, debugger_cpu& cpu m_console.register_command("pcatmemp", CMDFLAG_NONE, AS_PROGRAM, 1, 2, std::bind(&debugger_commands::execute_pcatmem, this, _1, _2)); m_console.register_command("pcatmemd", CMDFLAG_NONE, AS_DATA, 1, 2, std::bind(&debugger_commands::execute_pcatmem, this, _1, _2)); m_console.register_command("pcatmemi", CMDFLAG_NONE, AS_IO, 1, 2, std::bind(&debugger_commands::execute_pcatmem, this, _1, _2)); - m_console.register_command("pcatmemo", CMDFLAG_NONE, AS_DECRYPTED_OPCODES, 1, 2, std::bind(&debugger_commands::execute_pcatmem, this, _1, _2)); + m_console.register_command("pcatmemo", CMDFLAG_NONE, AS_OPCODES, 1, 2, std::bind(&debugger_commands::execute_pcatmem, this, _1, _2)); m_console.register_command("snap", CMDFLAG_NONE, 0, 0, 1, std::bind(&debugger_commands::execute_snap, this, _1, _2)); @@ -264,7 +264,7 @@ debugger_commands::debugger_commands(running_machine& machine, debugger_cpu& cpu m_console.register_command("map", CMDFLAG_NONE, AS_PROGRAM, 1, 1, std::bind(&debugger_commands::execute_map, this, _1, _2)); m_console.register_command("mapd", CMDFLAG_NONE, AS_DATA, 1, 1, std::bind(&debugger_commands::execute_map, this, _1, _2)); m_console.register_command("mapi", CMDFLAG_NONE, AS_IO, 1, 1, std::bind(&debugger_commands::execute_map, this, _1, _2)); - m_console.register_command("mapo", CMDFLAG_NONE, AS_DECRYPTED_OPCODES, 1, 1, std::bind(&debugger_commands::execute_map, this, _1, _2)); + m_console.register_command("mapo", CMDFLAG_NONE, AS_OPCODES, 1, 1, std::bind(&debugger_commands::execute_map, this, _1, _2)); m_console.register_command("memdump", CMDFLAG_NONE, 0, 0, 1, std::bind(&debugger_commands::execute_memdump, this, _1, _2)); m_console.register_command("symlist", CMDFLAG_NONE, 0, 0, 1, std::bind(&debugger_commands::execute_symlist, this, _1, _2)); @@ -1398,7 +1398,7 @@ void debugger_commands::execute_wplist(int ref, const std::vector & /* loop over all CPUs */ for (device_t &device : device_iterator(m_machine.root_device())) - for (address_spacenum spacenum = AS_0; spacenum < ADDRESS_SPACES; ++spacenum) + for (int spacenum = 0; spacenum < device.debug()->watchpoint_space_count(); ++spacenum) if (device.debug()->watchpoint_first(spacenum) != nullptr) { static const char *const types[] = { "unkn ", "read ", "write", "r/w " }; @@ -2206,7 +2206,7 @@ void debugger_commands::execute_cheatlist(int ref, const std::vector &pa return; if (!validate_cpu_space_parameter(params.size() > 4 ? params[4].c_str() : nullptr, AS_PROGRAM, space)) return; - if (space->device().memory().has_space(AS_DECRYPTED_OPCODES)) - decrypted_space = &space->device().memory().space(AS_DECRYPTED_OPCODES); + if (space->device().memory().has_space(AS_OPCODES)) + decrypted_space = &space->device().memory().space(AS_OPCODES); else decrypted_space = space; @@ -2635,8 +2635,8 @@ void debugger_commands::execute_history(int ref, const std::vector address_space *space, *decrypted_space; if (!validate_cpu_space_parameter(!params.empty() ? params[0].c_str() : nullptr, AS_PROGRAM, space)) return; - if (space->device().memory().has_space(AS_DECRYPTED_OPCODES)) - decrypted_space = &space->device().memory().space(AS_DECRYPTED_OPCODES); + if (space->device().memory().has_space(AS_OPCODES)) + decrypted_space = &space->device().memory().space(AS_OPCODES); else decrypted_space = space; @@ -2786,7 +2786,7 @@ void debugger_commands::execute_pcatmem(int ref, const std::vector const u64 data = m_cpu.read_memory(*space, space->address_to_byte(address), native_data_width, true); // Recover the pc & print - const address_spacenum space_num = (address_spacenum)ref; + const int space_num = (int)ref; const offs_t result = space->device().debug()->track_mem_pc_from_space_address_data(space_num, address, data); if (result != (offs_t)(-1)) m_console.printf("%02x\n", result); diff --git a/src/emu/debug/debugcpu.cpp b/src/emu/debug/debugcpu.cpp index 012dd917a40..dfc581d478b 100644 --- a/src/emu/debug/debugcpu.cpp +++ b/src/emu/debug/debugcpu.cpp @@ -767,7 +767,8 @@ u64 debugger_cpu::read_opcode(address_space &space, offs_t address, int size) void debugger_cpu::on_vblank(screen_device &device, bool vblank_state) { /* just set a global flag to be consumed later */ - m_vblank_occurred = true; + if (vblank_state) + m_vblank_occurred = true; } @@ -928,7 +929,7 @@ u64 debugger_cpu::expression_read_memory(void *param, const char *name, expressi memory = &device->memory(); } auto dis = m_machine.disable_side_effect(disable_se); - return expression_read_program_direct(memory->space(AS_DECRYPTED_OPCODES), (spacenum == EXPSPACE_OPCODE), address, size); + return expression_read_program_direct(memory->space(AS_OPCODES), (spacenum == EXPSPACE_OPCODE), address, size); break; } @@ -1119,7 +1120,7 @@ void debugger_cpu::expression_write_memory(void *param, const char *name, expres memory = &device->memory(); } auto dis = m_machine.disable_side_effect(disable_se); - expression_write_program_direct(memory->space(AS_DECRYPTED_OPCODES), (spacenum == EXPSPACE_OPCODE), address, size, data); + expression_write_program_direct(memory->space(AS_OPCODES), (spacenum == EXPSPACE_OPCODE), address, size, data); break; } @@ -1317,7 +1318,7 @@ expression_error::error_code debugger_cpu::expression_validate(void *param, cons } if (!device) device = get_visible_cpu(); - if (!device->interface(memory) || !memory->has_space(AS_DECRYPTED_OPCODES)) + if (!device->interface(memory) || !memory->has_space(AS_OPCODES)) return expression_error::NO_SUCH_MEMORY_SPACE; break; @@ -1528,7 +1529,6 @@ device_debug::device_debug(device_t &device) , m_track_mem(false) { memset(m_pc_history, 0, sizeof(m_pc_history)); - memset(m_wplist, 0, sizeof(m_wplist)); // find out which interfaces we have to work with device.interface(m_exec); @@ -1556,8 +1556,8 @@ device_debug::device_debug(device_t &device) m_symtable.add("logunmapd", (void *)&m_memory->space(AS_DATA), get_logunmap, set_logunmap); if (m_memory->has_space(AS_IO)) m_symtable.add("logunmapi", (void *)&m_memory->space(AS_IO), get_logunmap, set_logunmap); - if (m_memory->has_space(AS_DECRYPTED_OPCODES)) - m_symtable.add("logunmapo", (void *)&m_memory->space(AS_DECRYPTED_OPCODES), get_logunmap, set_logunmap); + if (m_memory->has_space(AS_OPCODES)) + m_symtable.add("logunmapo", (void *)&m_memory->space(AS_OPCODES), get_logunmap, set_logunmap); } // add all registers into it @@ -2113,7 +2113,8 @@ void device_debug::breakpoint_enable_all(bool enable) int device_debug::watchpoint_set(address_space &space, int type, offs_t address, offs_t length, const char *condition, const char *action) { - assert(space.spacenum() < ARRAY_LENGTH(m_wplist)); + if (space.spacenum() >= int(m_wplist.size())) + m_wplist.resize(space.spacenum()+1, nullptr); // allocate a new one u32 id = m_device.machine().debugger().cpu().get_watchpoint_index(); @@ -2137,7 +2138,7 @@ int device_debug::watchpoint_set(address_space &space, int type, offs_t address, bool device_debug::watchpoint_clear(int index) { // scan the list to see if we own this breakpoint - for (address_spacenum spacenum = AS_0; spacenum < ARRAY_LENGTH(m_wplist); ++spacenum) + for (int spacenum = 0; spacenum < int(m_wplist.size()); ++spacenum) for (watchpoint **wp = &m_wplist[spacenum]; *wp != nullptr; wp = &(*wp)->m_next) if ((*wp)->m_index == index) { @@ -2161,7 +2162,7 @@ bool device_debug::watchpoint_clear(int index) void device_debug::watchpoint_clear_all() { // clear the head until we run out - for (address_spacenum spacenum = AS_0; spacenum < ARRAY_LENGTH(m_wplist); ++spacenum) + for (int spacenum = 0; spacenum < int(m_wplist.size()); ++spacenum) while (m_wplist[spacenum] != nullptr) watchpoint_clear(m_wplist[spacenum]->index()); } @@ -2175,7 +2176,7 @@ void device_debug::watchpoint_clear_all() bool device_debug::watchpoint_enable(int index, bool enable) { // scan the list to see if we own this watchpoint - for (address_spacenum spacenum = AS_0; spacenum < ARRAY_LENGTH(m_wplist); ++spacenum) + for (int spacenum = 0; spacenum < int(m_wplist.size()); ++spacenum) for (watchpoint *wp = m_wplist[spacenum]; wp != nullptr; wp = wp->next()) if (wp->m_index == index) { @@ -2197,7 +2198,7 @@ bool device_debug::watchpoint_enable(int index, bool enable) void device_debug::watchpoint_enable_all(bool enable) { // apply the enable to all watchpoints we own - for (address_spacenum spacenum = AS_0; spacenum < ARRAY_LENGTH(m_wplist); ++spacenum) + for (int spacenum = 0; spacenum < int(m_wplist.size()); ++spacenum) for (watchpoint *wp = m_wplist[spacenum]; wp != nullptr; wp = wp->next()) watchpoint_enable(wp->index(), enable); } @@ -2369,7 +2370,7 @@ void device_debug::set_track_pc_visited(const offs_t& pc) // 'not available'. //------------------------------------------------- -offs_t device_debug::track_mem_pc_from_space_address_data(const address_spacenum& space, +offs_t device_debug::track_mem_pc_from_space_address_data(const int& space, const offs_t& address, const u64& data) const { @@ -2491,7 +2492,7 @@ u32 device_debug::compute_opcode_crc32(offs_t pc) const assert(m_memory != nullptr); // determine the adjusted PC - address_space &decrypted_space = m_memory->has_space(AS_DECRYPTED_OPCODES) ? m_memory->space(AS_DECRYPTED_OPCODES) : m_memory->space(AS_PROGRAM); + address_space &decrypted_space = m_memory->has_space(AS_OPCODES) ? m_memory->space(AS_OPCODES) : m_memory->space(AS_PROGRAM); address_space &space = m_memory->space(AS_PROGRAM); offs_t pcbyte = space.address_to_byte(pc) & space.bytemask(); @@ -2744,7 +2745,7 @@ void device_debug::watchpoint_check(address_space& space, int type, offs_t addre space.machine().debugger().cpu().watchpoint_check(space, type, address, value_to_write, mem_mask, m_wplist); } -void debugger_cpu::watchpoint_check(address_space& space, int type, offs_t address, u64 value_to_write, u64 mem_mask, device_debug::watchpoint** wplist) +void debugger_cpu::watchpoint_check(address_space& space, int type, offs_t address, u64 value_to_write, u64 mem_mask, std::vector &wplist) { // if we're within debugger code, don't stop if (m_within_instruction_hook || m_machine.side_effect_disabled()) @@ -2893,7 +2894,7 @@ u32 device_debug::dasm_wrapped(std::string &buffer, offs_t pc) assert(m_memory != nullptr && m_disasm != nullptr); // determine the adjusted PC - address_space &decrypted_space = m_memory->has_space(AS_DECRYPTED_OPCODES) ? m_memory->space(AS_DECRYPTED_OPCODES) : m_memory->space(AS_PROGRAM); + address_space &decrypted_space = m_memory->has_space(AS_OPCODES) ? m_memory->space(AS_OPCODES) : m_memory->space(AS_PROGRAM); address_space &space = m_memory->space(AS_PROGRAM); offs_t pcbyte = space.address_to_byte(pc) & space.bytemask(); @@ -3332,7 +3333,7 @@ device_debug::dasm_pc_tag::dasm_pc_tag(const offs_t& address, const u32& crc) // dasm_memory_access - constructor //------------------------------------------------- -device_debug::dasm_memory_access::dasm_memory_access(const address_spacenum& address_space, +device_debug::dasm_memory_access::dasm_memory_access(const int& address_space, const offs_t& address, const u64& data, const offs_t& pc) diff --git a/src/emu/debug/debugcpu.h b/src/emu/debug/debugcpu.h index 1cc50740249..2ea78c3fe20 100644 --- a/src/emu/debug/debugcpu.h +++ b/src/emu/debug/debugcpu.h @@ -215,7 +215,8 @@ public: void breakpoint_enable_all(bool enable = true); // watchpoints - watchpoint *watchpoint_first(address_spacenum spacenum) const { return m_wplist[spacenum]; } + int watchpoint_space_count() const { return m_wplist.size(); } + watchpoint *watchpoint_first(int spacenum) const { return m_wplist[spacenum]; } int watchpoint_set(address_space &space, int type, offs_t address, offs_t length, const char *condition, const char *action); bool watchpoint_clear(int wpnum); void watchpoint_clear_all(); @@ -255,7 +256,7 @@ public: // memory tracking void set_track_mem(bool value) { m_track_mem = value; } - offs_t track_mem_pc_from_space_address_data(const address_spacenum& space, + offs_t track_mem_pc_from_space_address_data(const int& space, const offs_t& address, const u64& data) const; void track_mem_data_clear() { m_track_mem_set.clear(); } @@ -328,7 +329,7 @@ private: // breakpoints and watchpoints breakpoint * m_bplist; // list of breakpoints - watchpoint * m_wplist[ADDRESS_SPACES]; // watchpoint lists for each address space + std::vector m_wplist; // watchpoint lists for each address space registerpoint * m_rplist; // list of registerpoints // tracing @@ -408,7 +409,7 @@ private: class dasm_memory_access { public: - dasm_memory_access(const address_spacenum& address_space, + dasm_memory_access(const int& address_space, const offs_t& address, const u64& data, const offs_t& pc); @@ -425,7 +426,7 @@ private: } // Stores the PC for a given address, memory region, and data value - address_spacenum m_address_space; + int m_address_space; offs_t m_address; u64 m_data; mutable offs_t m_pc; @@ -569,7 +570,7 @@ public: void ensure_comments_loaded(); void reset_transient_flags(); void process_source_file(); - void watchpoint_check(address_space& space, int type, offs_t address, u64 value_to_write, u64 mem_mask, device_debug::watchpoint** wplist); + void watchpoint_check(address_space& space, int type, offs_t address, u64 value_to_write, u64 mem_mask, std::vector &wplist); private: static const size_t NUM_TEMP_VARIABLES; diff --git a/src/emu/debug/dvdisasm.cpp b/src/emu/debug/dvdisasm.cpp index 1a8331f28aa..5c18a66e313 100644 --- a/src/emu/debug/dvdisasm.cpp +++ b/src/emu/debug/dvdisasm.cpp @@ -27,7 +27,7 @@ debug_view_disasm_source::debug_view_disasm_source(const char *name, device_t &d : debug_view_source(name, &device), m_disasmintf(dynamic_cast(&device)), m_space(device.memory().space(AS_PROGRAM)), - m_decrypted_space(device.memory().has_space(AS_DECRYPTED_OPCODES) ? device.memory().space(AS_DECRYPTED_OPCODES) : device.memory().space(AS_PROGRAM)) + m_decrypted_space(device.memory().has_space(AS_OPCODES) ? device.memory().space(AS_OPCODES) : device.memory().space(AS_PROGRAM)) { } diff --git a/src/emu/debug/dvmemory.cpp b/src/emu/debug/dvmemory.cpp index 7505e68222e..a5de89adb30 100644 --- a/src/emu/debug/dvmemory.cpp +++ b/src/emu/debug/dvmemory.cpp @@ -137,7 +137,7 @@ void debug_view_memory::enumerate_sources() // first add all the devices' address spaces for (device_memory_interface &memintf : memory_interface_iterator(machine().root_device())) - for (address_spacenum spacenum = AS_0; spacenum < ADDRESS_SPACES; ++spacenum) + for (int spacenum = 0; spacenum < memintf.max_space_count(); ++spacenum) if (memintf.has_space(spacenum)) { address_space &space = memintf.space(spacenum); diff --git a/src/emu/debug/dvwpoints.cpp b/src/emu/debug/dvwpoints.cpp index 5609d3559b5..138bfc8fac4 100644 --- a/src/emu/debug/dvwpoints.cpp +++ b/src/emu/debug/dvwpoints.cpp @@ -227,7 +227,7 @@ void debug_view_watchpoints::gather_watchpoints() { // Collect device_debug &debugInterface = *source.device()->debug(); - for (address_spacenum spacenum = AS_0; spacenum < ADDRESS_SPACES; ++spacenum) + for (int spacenum = 0; spacenum < debugInterface.watchpoint_space_count(); ++spacenum) { for (device_debug::watchpoint *wp = debugInterface.watchpoint_first(spacenum); wp != nullptr; wp = wp->next()) m_buffer.push_back(wp); diff --git a/src/emu/devcb.cpp b/src/emu/devcb.cpp index a3655cf8e87..f6b0e090830 100644 --- a/src/emu/devcb.cpp +++ b/src/emu/devcb.cpp @@ -26,7 +26,7 @@ devcb_base::devcb_base(device_t &device, u64 defmask) m_target_tag(nullptr), m_target_int(0), m_space_tag(nullptr), - m_space_num(AS_0), + m_space_num(0), m_space(nullptr), m_rshift(0), m_mask(defmask), @@ -56,7 +56,7 @@ void devcb_base::reset(callback_type type) m_target_tag = nullptr; m_target_int = 0; m_space_tag = nullptr; - m_space_num = AS_0; + m_space_num = 0; m_space = nullptr; m_target.ptr = nullptr; m_rshift = 0; diff --git a/src/emu/devcb.h b/src/emu/devcb.h index 8c6a5781d8e..13f83275c25 100644 --- a/src/emu/devcb.h +++ b/src/emu/devcb.h @@ -118,7 +118,7 @@ public: bool isnull() const { return (m_type == CALLBACK_NONE); } // additional configuration - devcb_base &set_space(const char *device, address_spacenum space = AS_0) { m_space_tag = device; m_space_num = space; return *this; } + devcb_base &set_space(const char *device, int space = 0) { m_space_tag = device; m_space_num = space; return *this; } devcb_base &set_rshift(int rshift) { m_rshift = rshift; return *this; } devcb_base &set_mask(u64 mask) { m_mask = mask; return *this; } devcb_base &set_xor(u64 xorval) { m_xor = xorval; return *this; } @@ -226,7 +226,7 @@ protected: const char * m_target_tag; // tag of target object u64 m_target_int; // integer value of target object const char * m_space_tag; // tag of address space device - address_spacenum m_space_num; // address space number of space device + int m_space_num; // address space number of space device // derived state address_space * m_space; // target address space diff --git a/src/emu/device.h b/src/emu/device.h index aa492d0e442..0f56adbe36d 100644 --- a/src/emu/device.h +++ b/src/emu/device.h @@ -166,8 +166,6 @@ private: char const *const m_source; device_type_impl *m_next; - device_type_impl *m_parent = nullptr, *m_left = nullptr, *m_right = nullptr; - bool m_colour = false; public: device_type_impl(std::nullptr_t) diff --git a/src/emu/dimemory.cpp b/src/emu/dimemory.cpp index cdb234cde79..03549cd876d 100644 --- a/src/emu/dimemory.cpp +++ b/src/emu/dimemory.cpp @@ -122,9 +122,6 @@ address_space_config::address_space_config(const char *name, endianness_t endian device_memory_interface::device_memory_interface(const machine_config &mconfig, device_t &device) : device_interface(device, "memory") { - memset(m_address_map, 0, sizeof(m_address_map)); - memset(m_addrspace, 0, sizeof(m_addrspace)); - // configure the fast accessor device.interfaces().m_memory = this; } @@ -144,14 +141,24 @@ device_memory_interface::~device_memory_interface() // to connect an address map to a device //------------------------------------------------- -void device_memory_interface::static_set_addrmap(device_t &device, address_spacenum spacenum, address_map_constructor map) +void device_memory_interface::static_set_addrmap(device_t &device, int spacenum, address_map_constructor map) { device_memory_interface *memory; if (!device.interface(memory)) throw emu_fatalerror("MCFG_DEVICE_ADDRESS_MAP called on device '%s' with no memory interface", device.tag()); - if (spacenum >= ARRAY_LENGTH(memory->m_address_map)) - throw emu_fatalerror("MCFG_DEVICE_ADDRESS_MAP called on device '%s' with out-of-range space number %d", device.tag(), spacenum); - memory->m_address_map[spacenum] = map; + memory->set_addrmap(spacenum, map); +} + + +//------------------------------------------------- +// set_addrmap - connect an address map to a device +//------------------------------------------------- + +void device_memory_interface::set_addrmap(int spacenum, address_map_constructor map) +{ + if (spacenum >= int(m_address_map.size())) + m_address_map.resize(spacenum+1, nullptr); + m_address_map[spacenum] = map; } @@ -160,13 +167,29 @@ void device_memory_interface::static_set_addrmap(device_t &device, address_space // to a device //------------------------------------------------- -void device_memory_interface::set_address_space(address_spacenum spacenum, address_space &space) +void device_memory_interface::set_address_space(int spacenum, address_space &space) { - assert(spacenum < ARRAY_LENGTH(m_addrspace)); + if (spacenum >= int(m_addrspace.size())) + m_addrspace.resize(spacenum+1, nullptr); m_addrspace[spacenum] = &space; } +//------------------------------------------------- +// load_configs - retrieve the space configs +//------------------------------------------------- + +void device_memory_interface::load_configs() +{ + auto r = memory_space_config(); + for (const auto &entry : r) { + if (entry.first >= int(m_address_config.size())) + m_address_config.resize(entry.first + 1); + m_address_config[entry.first] = entry.second; + } +} + + //------------------------------------------------- // memory_translate - translate from logical to // phyiscal addresses; designed to be overridden @@ -174,7 +197,7 @@ void device_memory_interface::set_address_space(address_spacenum spacenum, addre // translation is supported //------------------------------------------------- -bool device_memory_interface::memory_translate(address_spacenum spacenum, int intention, offs_t &address) +bool device_memory_interface::memory_translate(int spacenum, int intention, offs_t &address) { // by default it maps directly return true; @@ -188,10 +211,12 @@ bool device_memory_interface::memory_translate(address_spacenum spacenum, int in void device_memory_interface::interface_validity_check(validity_checker &valid) const { + const_cast(this)->load_configs(); + // loop over all address spaces - for (address_spacenum spacenum = AS_0; spacenum < ADDRESS_SPACES; ++spacenum) + for (int spacenum = 0; spacenum < int(m_address_config.size()); ++spacenum) { - if (space_config(spacenum) != nullptr) + if (space_config(spacenum)) { // construct the map ::address_map addrmap(const_cast(device()), spacenum); diff --git a/src/emu/dimemory.h b/src/emu/dimemory.h index 342c1f02cb1..40e123e2fb8 100644 --- a/src/emu/dimemory.h +++ b/src/emu/dimemory.h @@ -59,7 +59,7 @@ constexpr int TRANSLATE_FETCH_DEBUG = (TRANSLATE_FETCH | TRANSLATE_DEBUG_MAS MCFG_DEVICE_ADDRESS_MAP(AS_IO, _map) #define MCFG_DEVICE_DECRYPTED_OPCODES_MAP(_map) \ - MCFG_DEVICE_ADDRESS_MAP(AS_DECRYPTED_OPCODES, _map) + MCFG_DEVICE_ADDRESS_MAP(AS_OPCODES, _map) @@ -79,46 +79,48 @@ public: virtual ~device_memory_interface(); // configuration access - address_map_constructor address_map(address_spacenum spacenum = AS_0) const { return (spacenum < ARRAY_LENGTH(m_address_map)) ? m_address_map[spacenum] : nullptr; } - const address_space_config *space_config(address_spacenum spacenum = AS_0) const { return memory_space_config(spacenum); } + address_map_constructor address_map(int spacenum = 0) const { return spacenum >= 0 && spacenum < int(m_address_map.size()) ? m_address_map[spacenum] : nullptr; } + const address_space_config *space_config(int spacenum = 0) const { return spacenum >= 0 && spacenum < int(m_address_config.size()) ? m_address_config[spacenum] : nullptr; } + int max_space_count() const { return m_address_config.size(); } // static inline configuration helpers - static void static_set_addrmap(device_t &device, address_spacenum spacenum, address_map_constructor map); + static void static_set_addrmap(device_t &device, int spacenum, address_map_constructor map); + void set_addrmap(int spacenum, address_map_constructor map); // basic information getters - bool has_space(int index = 0) const { return (m_addrspace[index] != nullptr); } - bool has_space(address_spacenum index) const { return (m_addrspace[int(index)] != nullptr); } - bool has_configured_map(int index = 0) const { return (m_address_map[index] != nullptr); } - bool has_configured_map(address_spacenum index) const { return (m_address_map[int(index)] != nullptr); } - address_space &space(int index = 0) const { assert(m_addrspace[index] != nullptr); return *m_addrspace[index]; } - address_space &space(address_spacenum index) const { assert(m_addrspace[int(index)] != nullptr); return *m_addrspace[int(index)]; } + bool has_space(int index = 0) const { return index >= 0 && index < int(m_addrspace.size()) && m_addrspace[index]; } + bool has_configured_map(int index = 0) const { return index >= 0 && index < int(m_address_map.size()) && m_address_map[index]; } + address_space &space(int index = 0) const { assert(index >= 0 && index < int(m_addrspace.size()) && m_addrspace[index]); return *m_addrspace[index]; } // address space accessors - void set_address_space(address_spacenum spacenum, address_space &space); + void set_address_space(int spacenum, address_space &space); // address translation - bool translate(address_spacenum spacenum, int intention, offs_t &address) { return memory_translate(spacenum, intention, address); } + bool translate(int spacenum, int intention, offs_t &address) { return memory_translate(spacenum, intention, address); } // deliberately ambiguous functions; if you have the memory interface // just use it device_memory_interface &memory() { return *this; } + void load_configs(); + protected: // required overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const = 0; + virtual std::vector> memory_space_config() const = 0; // optional operation overrides - virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address); + virtual bool memory_translate(int spacenum, int intention, offs_t &address); // interface-level overrides virtual void interface_validity_check(validity_checker &valid) const override; // configuration - address_map_constructor m_address_map[ADDRESS_SPACES]; // address maps for each address space + std::vector m_address_map; // address maps for each address space private: // internal state - address_space * m_addrspace[ADDRESS_SPACES]; // reported address spaces + std::vector m_address_config; // configuration for each space + std::vector m_addrspace; // reported address spaces }; // iterator diff --git a/src/emu/dirom.cpp b/src/emu/dirom.cpp index 5351534ec06..b0caedc721a 100644 --- a/src/emu/dirom.cpp +++ b/src/emu/dirom.cpp @@ -21,9 +21,11 @@ void device_rom_interface::static_set_device_rom_tag(device_t &device, const cha romintf->m_rom_tag = tag; } -const address_space_config *device_rom_interface::memory_space_config(address_spacenum spacenum) const +std::vector> device_rom_interface::memory_space_config() const { - return spacenum ? nullptr : &m_rom_config; + return std::vector> { + std::make_pair(0, &m_rom_config) + }; } void device_rom_interface::rom_bank_updated() diff --git a/src/emu/dirom.h b/src/emu/dirom.h index 96cb7688634..345c58dbd5c 100644 --- a/src/emu/dirom.h +++ b/src/emu/dirom.h @@ -47,7 +47,7 @@ private: memory_bank *m_bank; int m_cur_bank, m_bank_count; - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; virtual void interface_pre_start() override; DECLARE_READ8_MEMBER(z8_r); diff --git a/src/emu/divtlb.cpp b/src/emu/divtlb.cpp index b629ec81007..0689bb9c68a 100644 --- a/src/emu/divtlb.cpp +++ b/src/emu/divtlb.cpp @@ -29,7 +29,7 @@ // device_vtlb_interface - constructor //------------------------------------------------- -device_vtlb_interface::device_vtlb_interface(const machine_config &mconfig, device_t &device, address_spacenum space) +device_vtlb_interface::device_vtlb_interface(const machine_config &mconfig, device_t &device, int space) : device_interface(device, "vtlb"), m_space(space), m_dynamic(0), diff --git a/src/emu/divtlb.h b/src/emu/divtlb.h index 56b874e3915..3acfec4f215 100644 --- a/src/emu/divtlb.h +++ b/src/emu/divtlb.h @@ -46,7 +46,7 @@ class device_vtlb_interface : public device_interface { public: // construction/destruction - device_vtlb_interface(const machine_config &mconfig, device_t &device, address_spacenum space); + device_vtlb_interface(const machine_config &mconfig, device_t &device, int space); virtual ~device_vtlb_interface(); // configuration helpers @@ -74,7 +74,7 @@ protected: private: // private state - address_spacenum m_space; // address space + int m_space; // address space int m_dynamic; // number of dynamic entries int m_fixed; // number of fixed entries int m_dynindex; // index of next dynamic entry diff --git a/src/emu/emumem.cpp b/src/emu/emumem.cpp index a6aaa1d86cb..08e0bc3e02a 100644 --- a/src/emu/emumem.cpp +++ b/src/emu/emumem.cpp @@ -892,7 +892,7 @@ class address_space_specific : public address_space public: // construction/destruction - address_space_specific(memory_manager &manager, device_memory_interface &memory, address_spacenum spacenum) + address_space_specific(memory_manager &manager, device_memory_interface &memory, int spacenum) : address_space(manager, memory, spacenum, _Large), m_read(*this, _Large), m_write(*this, _Large), @@ -1559,7 +1559,7 @@ memory_manager::memory_manager(running_machine &machine) void memory_manager::allocate(device_memory_interface &memory) { - for (address_spacenum spacenum = AS_0; spacenum < ADDRESS_SPACES; ++spacenum) + for (int spacenum = 0; spacenum < memory.max_space_count(); ++spacenum) { // if there is a configuration for this space, we need an address space const address_space_config *spaceconfig = memory.space_config(spacenum); @@ -1568,6 +1568,19 @@ void memory_manager::allocate(device_memory_interface &memory) } } +//------------------------------------------------- +// configure - configure the address spaces +//------------------------------------------------- + +void memory_manager::configure() +{ + // loop over devices to configure the address spaces + memory_interface_iterator iter(machine().root_device()); + for (device_memory_interface &memory : iter) + memory.load_configs(); + m_machine.m_dummy_space.load_configs(); +} + //------------------------------------------------- // initialize - initialize the memory system //------------------------------------------------- @@ -1730,7 +1743,7 @@ void memory_manager::bank_reattach() // address_space - constructor //------------------------------------------------- -address_space::address_space(memory_manager &manager, device_memory_interface &memory, address_spacenum spacenum, bool large) +address_space::address_space(memory_manager &manager, device_memory_interface &memory, int spacenum, bool large) : m_config(*memory.space_config(spacenum)), m_device(memory.device()), m_addrmask(0xffffffffUL >> (32 - m_config.m_addrbus_width)), @@ -1765,7 +1778,7 @@ address_space::~address_space() // allocate - static smart allocator of subtypes //------------------------------------------------- -void address_space::allocate(std::vector> &space_list,memory_manager &manager, const address_space_config &config, device_memory_interface &memory, address_spacenum spacenum) +void address_space::allocate(std::vector> &space_list,memory_manager &manager, const address_space_config &config, device_memory_interface &memory, int spacenum) { // allocate one of the appropriate type bool large = (config.addr2byte_end(0xffffffffUL >> (32 - config.m_addrbus_width)) >= (1 << 18)); @@ -2000,7 +2013,7 @@ void address_space::check_address(const char *function, offs_t addrstart, offs_t void address_space::prepare_map() { - memory_region *devregion = (m_spacenum == AS_0) ? machine().root_device().memregion(m_device.tag()) : nullptr; + memory_region *devregion = (m_spacenum == 0) ? machine().root_device().memregion(m_device.tag()) : nullptr; u32 devregionsize = (devregion != nullptr) ? devregion->bytes() : 0; // allocate the address map @@ -2040,7 +2053,7 @@ void address_space::prepare_map() } // if this is a ROM handler without a specified region, attach it to the implicit region - if (m_spacenum == AS_0 && entry.m_read.m_type == AMH_ROM && entry.m_region == nullptr) + if (m_spacenum == 0 && entry.m_read.m_type == AMH_ROM && entry.m_region == nullptr) { // make sure it fits within the memory region before doing so, however if (entry.m_byteend < devregionsize) @@ -2830,7 +2843,7 @@ bool address_space::needs_backing_store(const address_map_entry &entry) // if we're reading from RAM or from ROM outside of address space 0 or its region, then yes, we do need backing memory_region *region = machine().root_device().memregion(m_device.tag()); if (entry.m_read.m_type == AMH_RAM || - (entry.m_read.m_type == AMH_ROM && (m_spacenum != AS_0 || region == nullptr || entry.m_addrstart >= region->bytes()))) + (entry.m_read.m_type == AMH_ROM && (m_spacenum != 0 || region == nullptr || entry.m_addrstart >= region->bytes()))) return true; // all other cases don't need backing diff --git a/src/emu/emumem.h b/src/emu/emumem.h index 752e1287e30..8b28aab8cfe 100644 --- a/src/emu/emumem.h +++ b/src/emu/emumem.h @@ -25,22 +25,11 @@ enum { TOTAL_MEMORY_BANKS = 512 }; -// address spaces -enum address_spacenum -{ - AS_0, // first address space - AS_1, // second address space - AS_2, // third address space - AS_3, // fourth address space - ADDRESS_SPACES, // maximum number of address spaces - - // alternate address space names for common use - AS_PROGRAM = AS_0, // program address space - AS_DATA = AS_1, // data address space - AS_IO = AS_2, // I/O address space - AS_DECRYPTED_OPCODES = AS_3 // decrypted opcodes, when separate from data accesses -}; -DECLARE_ENUM_OPERATORS(address_spacenum) +// address space names for common use +constexpr int AS_PROGRAM = 0; // program address space +constexpr int AS_DATA = 1; // data address space +constexpr int AS_IO = 2; // I/O address space +constexpr int AS_OPCODES = 3; // (decrypted) opcodes, when separate from data accesses // read or write constants enum class read_or_write @@ -233,19 +222,19 @@ class address_space protected: // construction/destruction - address_space(memory_manager &manager, device_memory_interface &memory, address_spacenum spacenum, bool large); + address_space(memory_manager &manager, device_memory_interface &memory, int spacenum, bool large); public: virtual ~address_space(); // public allocator - static void allocate(std::vector> &space_list, memory_manager &manager, const address_space_config &config, device_memory_interface &memory, address_spacenum spacenum); + static void allocate(std::vector> &space_list, memory_manager &manager, const address_space_config &config, device_memory_interface &memory, int spacenum); // getters memory_manager &manager() const { return m_manager; } device_t &device() const { return m_device; } running_machine &machine() const { return m_machine; } const char *name() const { return m_name; } - address_spacenum spacenum() const { return m_spacenum; } + int spacenum() const { return m_spacenum; } address_map *map() const { return m_map.get(); } direct_read_data &direct() const { return *m_direct; } @@ -431,7 +420,7 @@ protected: offs_t m_logaddrmask; // logical address mask offs_t m_logbytemask; // byte-converted logical address mask u64 m_unmap; // unmapped value - address_spacenum m_spacenum; // address space index + int m_spacenum; // address space index bool m_log_unmap; // log unmapped accesses in this space? std::unique_ptr m_direct; // fast direct-access read info const char * m_name; // friendly name of the address space @@ -654,6 +643,7 @@ class memory_manager public: // construction/destruction memory_manager(running_machine &machine); + void configure(); void initialize(); // getters diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp index 6712951b0ae..36e107e838d 100644 --- a/src/emu/machine.cpp +++ b/src/emu/machine.cpp @@ -233,8 +233,12 @@ void running_machine::start() // initialize the streams engine before the sound devices start m_sound = std::make_unique(*this); - // first load ROMs, then populate memory, and finally initialize CPUs - // these operations must proceed in this order + // configure the address spaces, load ROMs (which needs + // width/endianess of the spaces), then populate memory (which + // needs rom bases), and finally initialize CPUs (which needs + // complete address spaces). These operations must proceed in this + // order + m_memory.configure(); m_rom_load = make_unique_clear(*this); m_memory.initialize(); @@ -1276,7 +1280,7 @@ WRITE8_MEMBER(dummy_space_device::write) throw emu_fatalerror("Attempted to write to generic address space (offs %X = %02X)\n", offset, data); } -static ADDRESS_MAP_START(dummy, AS_0, 8, dummy_space_device) +static ADDRESS_MAP_START(dummy, 0, 8, dummy_space_device) AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(read, write) ADDRESS_MAP_END @@ -1298,9 +1302,11 @@ void dummy_space_device::device_start() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *dummy_space_device::memory_space_config(address_spacenum spacenum) const +std::vector> dummy_space_device::memory_space_config() const { - return (spacenum == 0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/emu/machine.h b/src/emu/machine.h index a9b30425ec3..584d2e419ba 100644 --- a/src/emu/machine.h +++ b/src/emu/machine.h @@ -127,7 +127,7 @@ protected: virtual void device_start() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; private: const address_space_config m_space_config; diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp index 6b62cfe726b..67d6cfecf17 100644 --- a/src/frontend/mame/luaengine.cpp +++ b/src/frontend/mame/luaengine.cpp @@ -1202,7 +1202,7 @@ void lua_engine::initialize() sol::table sp_table = sol().create_table(); if(!memdev) return sp_table; - for(address_spacenum sp = AS_0; sp < ADDRESS_SPACES; ++sp) + for(int sp = 0; sp < memdev->max_space_count(); ++sp) { if(memdev->has_space(sp)) sp_table[memdev->space(sp).name()] = addr_space(memdev->space(sp), *memdev); diff --git a/src/frontend/mame/mameopts.cpp b/src/frontend/mame/mameopts.cpp index fc73c36a9f7..029c5c601a6 100644 --- a/src/frontend/mame/mameopts.cpp +++ b/src/frontend/mame/mameopts.cpp @@ -160,6 +160,10 @@ void mame_options::populate_hashpath_from_args_and_inis(emu_options &options, co // parse the command line emu_options temp_options(emu_options::option_support::GENERAL_AND_SYSTEM); + + // pick up whatever changes the osd did to the default inipath + temp_options.set_default_value(OPTION_INIPATH, options.ini_path()); + try { temp_options.parse_command_line(args, OPTION_PRIORITY_CMDLINE, true); diff --git a/src/lib/netlist/nl_errstr.h b/src/lib/netlist/nl_errstr.h index 947103b6948..35b1e4f6c60 100644 --- a/src/lib/netlist/nl_errstr.h +++ b/src/lib/netlist/nl_errstr.h @@ -58,7 +58,7 @@ //#define MF_1_CLASS_1_NOT_FOUND "Class {1} not found!" #define MF_1_UNABLE_TO_PARSE_MODEL_1 "Unable to parse model: {1}" #define MF_1_MODEL_ALREADY_EXISTS_1 "Model already exists: {1}" -#define MF_1_ADDING_ALIAS_1_TO_ALIAS_LIST "Error adding alias {1} to alias list" +#define MF_1_ADDING_ALI1_TO_ALIAS_LIST "Error adding alias {1} to alias list" #define MF_1_DIP_PINS_MUST_BE_AN_EQUAL_NUMBER_OF_PINS_1 "You must pass an equal number of pins to DIPPINS {1}" #define MF_1_UNKNOWN_OBJECT_TYPE_1 "Unknown object type {1}" #define MF_2_INVALID_NUMBER_CONVERSION_1_2 "Invalid number conversion {1} : {2}" diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index 616502dedeb..df761bc3f88 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -106,7 +106,7 @@ void setup_t::register_model(const pstring &model_in) void setup_t::register_alias_nofqn(const pstring &alias, const pstring &out) { if (!m_alias.insert({alias, out}).second) - log().fatal(MF_1_ADDING_ALIAS_1_TO_ALIAS_LIST, alias); + log().fatal(MF_1_ADDING_ALI1_TO_ALIAS_LIST, alias); } void setup_t::register_alias(const pstring &alias, const pstring &out) diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt index 14e6c959372..9897c67474f 100644 --- a/src/mame/arcade.flt +++ b/src/mame/arcade.flt @@ -1003,6 +1003,7 @@ scramble.cpp scregg.cpp scyclone.cpp sderby.cpp +sderby2.cpp seabattl.cpp sealy.cpp seattle.cpp diff --git a/src/mame/audio/atarijsa.cpp b/src/mame/audio/atarijsa.cpp index eeef37392a5..9b6f54ebe3b 100644 --- a/src/mame/audio/atarijsa.cpp +++ b/src/mame/audio/atarijsa.cpp @@ -145,13 +145,13 @@ static ADDRESS_MAP_START( atarijsa3_map, AS_PROGRAM, 8, atari_jsa_iii_device ) ADDRESS_MAP_END -static ADDRESS_MAP_START( jsa3_oki1_map, AS_0, 8, atari_jsa_iii_device ) +static ADDRESS_MAP_START( jsa3_oki1_map, 0, 8, atari_jsa_iii_device ) AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("oki1lo") AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki1hi") ADDRESS_MAP_END -static ADDRESS_MAP_START( jsa3_oki2_map, AS_0, 8, atari_jsa_iiis_device ) +static ADDRESS_MAP_START( jsa3_oki2_map, 0, 8, atari_jsa_iiis_device ) AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("oki2lo") AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki2hi") ADDRESS_MAP_END @@ -921,7 +921,7 @@ MACHINE_CONFIG_MEMBER( atari_jsa_iii_device::device_add_mconfig ) MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.60, 0) MCFG_OKIM6295_ADD("oki1", JSA_MASTER_CLOCK/3, PIN7_HIGH) - MCFG_DEVICE_ADDRESS_MAP(AS_0, jsa3_oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, jsa3_oki1_map) MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.75, 0) MACHINE_CONFIG_END @@ -966,5 +966,5 @@ MACHINE_CONFIG_MEMBER( atari_jsa_iiis_device::device_add_mconfig ) MCFG_OKIM6295_ADD("oki2", JSA_MASTER_CLOCK/3, PIN7_HIGH) MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.75, 1) - MCFG_DEVICE_ADDRESS_MAP(AS_0, jsa3_oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, jsa3_oki2_map) MACHINE_CONFIG_END diff --git a/src/mame/audio/decobsmt.cpp b/src/mame/audio/decobsmt.cpp index 56a290bf440..4f44be9987a 100644 --- a/src/mame/audio/decobsmt.cpp +++ b/src/mame/audio/decobsmt.cpp @@ -26,7 +26,7 @@ static ADDRESS_MAP_START( decobsmt_map, AS_PROGRAM, 8, decobsmt_device ) AM_RANGE(0x2000, 0xffff) AM_ROM AM_REGION(":soundcpu", 0x2000) ADDRESS_MAP_END -static ADDRESS_MAP_START( bsmt_map, AS_0, 8, decobsmt_device ) +static ADDRESS_MAP_START( bsmt_map, 0, 8, decobsmt_device ) AM_RANGE(0x000000, 0xffffff) AM_ROM AM_REGION(":bsmt", 0) ADDRESS_MAP_END @@ -53,7 +53,7 @@ MACHINE_CONFIG_MEMBER( decobsmt_device::device_add_mconfig ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_BSMT2000_ADD(BSMT_TAG, 24000000) - MCFG_DEVICE_ADDRESS_MAP(AS_0, bsmt_map) + MCFG_DEVICE_ADDRESS_MAP(0, bsmt_map) MCFG_BSMT2000_READY_CALLBACK(decobsmt_device, bsmt_ready_callback) MCFG_SOUND_ROUTE(0, "lspeaker", 2.0) MCFG_SOUND_ROUTE(1, "rspeaker", 2.0) diff --git a/src/mame/audio/segam1audio.cpp b/src/mame/audio/segam1audio.cpp index 0926b080195..c9724c21f55 100644 --- a/src/mame/audio/segam1audio.cpp +++ b/src/mame/audio/segam1audio.cpp @@ -34,11 +34,11 @@ static ADDRESS_MAP_START( segam1audio_map, AS_PROGRAM, 16, segam1audio_device ) AM_RANGE(0xf00000, 0xf0ffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( mpcm1_map, AS_0, 8, segam1audio_device ) +static ADDRESS_MAP_START( mpcm1_map, 0, 8, segam1audio_device ) AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION(":m1pcm1", 0) ADDRESS_MAP_END -static ADDRESS_MAP_START( mpcm2_map, AS_0, 8, segam1audio_device ) +static ADDRESS_MAP_START( mpcm2_map, 0, 8, segam1audio_device ) AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION(":m1pcm2", 0) ADDRESS_MAP_END @@ -63,12 +63,12 @@ MACHINE_CONFIG_MEMBER( segam1audio_device::device_add_mconfig ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) MCFG_SOUND_ADD(MULTIPCM_1_TAG, MULTIPCM, 8000000) - MCFG_DEVICE_ADDRESS_MAP(AS_0, mpcm1_map) + MCFG_DEVICE_ADDRESS_MAP(0, mpcm1_map) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MCFG_SOUND_ADD(MULTIPCM_2_TAG, MULTIPCM, 8000000) - MCFG_DEVICE_ADDRESS_MAP(AS_0, mpcm2_map) + MCFG_DEVICE_ADDRESS_MAP(0, mpcm2_map) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) diff --git a/src/mame/audio/taito_en.cpp b/src/mame/audio/taito_en.cpp index 9c93d26d784..2cc1ac987e2 100644 --- a/src/mame/audio/taito_en.cpp +++ b/src/mame/audio/taito_en.cpp @@ -39,9 +39,12 @@ taito_en_device::taito_en_device(const machine_config &mconfig, const char *tag, void taito_en_device::device_start() { + // TODO: 16Mx32? Not likely! + m_es5510_dram = std::make_unique(1<<24); + + save_pointer(NAME(m_es5510_dram.get()), 1<<24); save_item(NAME(m_es5510_dsp_ram)); save_item(NAME(m_es5510_gpr)); - save_item(NAME(m_es5510_dram)); save_item(NAME(m_es5510_dol_latch)); save_item(NAME(m_es5510_dil_latch)); save_item(NAME(m_es5510_dadr_latch)); diff --git a/src/mame/audio/taito_en.h b/src/mame/audio/taito_en.h index f4a1ae3824a..8f71884484b 100644 --- a/src/mame/audio/taito_en.h +++ b/src/mame/audio/taito_en.h @@ -43,9 +43,9 @@ private: required_device m_mb87078; //todo: hook up cpu/es5510 + std::unique_ptr m_es5510_dram; uint16_t m_es5510_dsp_ram[0x200]; uint32_t m_es5510_gpr[0xc0]; - uint32_t m_es5510_dram[1<<24]; uint32_t m_es5510_dol_latch; uint32_t m_es5510_dil_latch; uint32_t m_es5510_dadr_latch; diff --git a/src/mame/audio/turrett.cpp b/src/mame/audio/turrett.cpp index 8fa19efdb72..4f4e402e7a6 100644 --- a/src/mame/audio/turrett.cpp +++ b/src/mame/audio/turrett.cpp @@ -29,9 +29,11 @@ turrett_device::turrett_device(const machine_config &mconfig, const char *tag, d // memory_space_config - configure address space //------------------------------------------------- -const address_space_config *turrett_device::memory_space_config(address_spacenum spacenum) const +std::vector> turrett_device::memory_space_config() const { - return (spacenum == 0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/mame/audio/williams.cpp b/src/mame/audio/williams.cpp index 349743b5a37..f9174d44105 100644 --- a/src/mame/audio/williams.cpp +++ b/src/mame/audio/williams.cpp @@ -735,7 +735,7 @@ ADDRESS_MAP_END // OKI6295 map //------------------------------------------------- -static ADDRESS_MAP_START( williams_adpcm_oki_map, AS_0, 8, williams_adpcm_sound_device ) +static ADDRESS_MAP_START( williams_adpcm_oki_map, 0, 8, williams_adpcm_sound_device ) AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("okibank") AM_RANGE(0x20000, 0x3ffff) AM_ROM AM_REGION("oki", 0x60000) ADDRESS_MAP_END @@ -758,7 +758,7 @@ MACHINE_CONFIG_MEMBER( williams_adpcm_sound_device::device_add_mconfig ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MCFG_OKIM6295_ADD("oki", ADPCM_MASTER_CLOCK/8, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, williams_adpcm_oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, williams_adpcm_oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.5) MACHINE_CONFIG_END diff --git a/src/mame/drivers/4004clk.cpp b/src/mame/drivers/4004clk.cpp index 9b93f0217d4..201e597eb63 100644 --- a/src/mame/drivers/4004clk.cpp +++ b/src/mame/drivers/4004clk.cpp @@ -77,7 +77,7 @@ WRITE8_MEMBER(nixieclock_state::neon_w) output_set_neon_value(3, BIT(data,0)); } -static ADDRESS_MAP_START(4004clk_rom, AS_DECRYPTED_OPCODES, 8, nixieclock_state) +static ADDRESS_MAP_START(4004clk_rom, AS_OPCODES, 8, nixieclock_state) AM_RANGE(0x0000, 0x0FFF) AM_ROM AM_REGION("maincpu", 0) ADDRESS_MAP_END diff --git a/src/mame/drivers/a5105.cpp b/src/mame/drivers/a5105.cpp index 39389733bf7..3deccb7e4c7 100644 --- a/src/mame/drivers/a5105.cpp +++ b/src/mame/drivers/a5105.cpp @@ -536,7 +536,7 @@ void a5105_state::video_start() m_char_ram = memregion("pcg")->base(); } -static ADDRESS_MAP_START( upd7220_map, AS_0, 16, a5105_state) +static ADDRESS_MAP_START( upd7220_map, 0, 16, a5105_state) ADDRESS_MAP_GLOBAL_MASK(0x1ffff) AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram") ADDRESS_MAP_END @@ -583,7 +583,7 @@ static MACHINE_CONFIG_START( a5105 ) /* Devices */ MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL_15MHz / 16) // unk clock - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(a5105_state, hgdc_display_pixels) MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(a5105_state, hgdc_draw_text) diff --git a/src/mame/drivers/adp.cpp b/src/mame/drivers/adp.cpp index e12f46bec30..682938053f4 100644 --- a/src/mame/drivers/adp.cpp +++ b/src/mame/drivers/adp.cpp @@ -518,17 +518,17 @@ INTERRUPT_GEN_MEMBER(adp_state::adp_int) } */ -static ADDRESS_MAP_START( adp_hd63484_map, AS_0, 16, adp_state ) +static ADDRESS_MAP_START( adp_hd63484_map, 0, 16, adp_state ) AM_RANGE(0x00000, 0x1ffff) AM_MIRROR(0x60000) AM_RAM AM_RANGE(0x80000, 0x9ffff) AM_MIRROR(0x60000) AM_ROM AM_REGION("gfx1", 0) ADDRESS_MAP_END -static ADDRESS_MAP_START( fashiong_hd63484_map, AS_0, 16, adp_state ) +static ADDRESS_MAP_START( fashiong_hd63484_map, 0, 16, adp_state ) AM_RANGE(0x00000, 0x1ffff) AM_MIRROR(0x60000) AM_RAM AM_RANGE(0x80000, 0xfffff) AM_ROM AM_REGION("gfx1", 0) ADDRESS_MAP_END -static ADDRESS_MAP_START( fstation_hd63484_map, AS_0, 16, adp_state ) +static ADDRESS_MAP_START( fstation_hd63484_map, 0, 16, adp_state ) AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_REGION("gfx1", 0) AM_RANGE(0x80000, 0xfffff) AM_RAM ADDRESS_MAP_END @@ -601,7 +601,7 @@ static MACHINE_CONFIG_DERIVED( fashiong, skattv ) MCFG_HD63484_ADDRESS_MAP(fashiong_hd63484_map) MACHINE_CONFIG_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, adp_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, adp_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/aerofgt.cpp b/src/mame/drivers/aerofgt.cpp index 65d4991ca1c..3c4c8575375 100644 --- a/src/mame/drivers/aerofgt.cpp +++ b/src/mame/drivers/aerofgt.cpp @@ -452,7 +452,7 @@ static ADDRESS_MAP_START( karatblzbl_sound_portmap, AS_IO, 8, aerofgt_state ) AM_RANGE(0x80, 0x80) AM_WRITE(karatblzbl_d7759_reset_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, aerofgt_state ) //only for aerfboot for now +static ADDRESS_MAP_START( oki_map, 0, 8, aerofgt_state ) //only for aerfboot for now AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -1906,7 +1906,7 @@ static MACHINE_CONFIG_START( aerfboot ) MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(false) MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/airraid.cpp b/src/mame/drivers/airraid.cpp index 12b53b1a789..08217636465 100644 --- a/src/mame/drivers/airraid.cpp +++ b/src/mame/drivers/airraid.cpp @@ -277,7 +277,7 @@ static ADDRESS_MAP_START( airraid_map, AS_PROGRAM, 8, airraid_state ) AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("sprite_ram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, airraid_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, airraid_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END @@ -298,7 +298,7 @@ static ADDRESS_MAP_START( airraid_sound_map, AS_PROGRAM, 8, airraid_state ) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( airraid_sound_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, airraid_state ) +static ADDRESS_MAP_START( airraid_sound_decrypted_opcodes_map, AS_OPCODES, 8, airraid_state ) AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x8000) ADDRESS_MAP_END diff --git a/src/mame/drivers/alto2.cpp b/src/mame/drivers/alto2.cpp index 8ec29569952..d7d6cff55d5 100644 --- a/src/mame/drivers/alto2.cpp +++ b/src/mame/drivers/alto2.cpp @@ -260,15 +260,15 @@ ROM_END // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START( alto2_ucode_map, AS_0, 32, alto2_state ) +ADDRESS_MAP_START( alto2_ucode_map, 0, 32, alto2_state ) AM_RANGE(0, 4*ALTO2_UCODE_PAGE_SIZE-1) AM_DEVICE32( "maincpu", alto2_cpu_device, ucode_map, 0xffffffffUL ) ADDRESS_MAP_END -ADDRESS_MAP_START( alto2_const_map, AS_1, 16, alto2_state ) +ADDRESS_MAP_START( alto2_const_map, 1, 16, alto2_state ) AM_RANGE(0, ALTO2_CONST_SIZE-1) AM_DEVICE16( "maincpu", alto2_cpu_device, const_map, 0xffffU ) ADDRESS_MAP_END -ADDRESS_MAP_START( alto2_iomem_map, AS_2, 16, alto2_state ) +ADDRESS_MAP_START( alto2_iomem_map, 2, 16, alto2_state ) AM_RANGE(0, 2*ALTO2_RAM_SIZE-1) AM_DEVICE16( "maincpu", alto2_cpu_device, iomem_map, 0xffffU ) ADDRESS_MAP_END diff --git a/src/mame/drivers/angelkds.cpp b/src/mame/drivers/angelkds.cpp index 4088bc2ceb6..a544e2358ca 100644 --- a/src/mame/drivers/angelkds.cpp +++ b/src/mame/drivers/angelkds.cpp @@ -184,7 +184,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, angelkds_state ) AM_RANGE(0xf005, 0xf005) AM_WRITE(angelkds_layer_ctrl_write) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, angelkds_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, angelkds_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") ADDRESS_MAP_END diff --git a/src/mame/drivers/apc.cpp b/src/mame/drivers/apc.cpp index 91f27c3d382..9f49de1e0f0 100644 --- a/src/mame/drivers/apc.cpp +++ b/src/mame/drivers/apc.cpp @@ -785,11 +785,11 @@ GFXDECODE_END -static ADDRESS_MAP_START( upd7220_1_map, AS_0, 16, apc_state) +static ADDRESS_MAP_START( upd7220_1_map, 0, 16, apc_state) AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram_1") ADDRESS_MAP_END -static ADDRESS_MAP_START( upd7220_2_map, AS_0, 16, apc_state ) +static ADDRESS_MAP_START( upd7220_2_map, 0, 16, apc_state ) AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram_2") ADDRESS_MAP_END @@ -960,11 +960,11 @@ static MACHINE_CONFIG_START( apc ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", apc) MCFG_DEVICE_ADD("upd7220_chr", UPD7220, 3579545) // unk clock - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_1_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_1_map) MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(apc_state, hgdc_draw_text) MCFG_DEVICE_ADD("upd7220_btm", UPD7220, 3579545) // unk clock - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_2_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_2_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(apc_state, hgdc_display_pixels) /* sound hardware */ diff --git a/src/mame/drivers/apollo.cpp b/src/mame/drivers/apollo.cpp index 8e75ef15ece..ce9ec5b76ad 100644 --- a/src/mame/drivers/apollo.cpp +++ b/src/mame/drivers/apollo.cpp @@ -562,7 +562,7 @@ READ16_MEMBER(apollo_state::apollo_atbus_memory_r) uint16_t data; // Motorola CPU is MSB first, ISA Bus is LSB first - data = m_isa->prog16_swap_r(space, offset, mem_mask); + data = m_isa->mem16_swap_r(space, offset, mem_mask); SLOG2(("apollo_atbus_memory_r at %08x = %04x & %04x", ATBUS_MEMORY_BASE + offset * 2, data, mem_mask)); return data; @@ -573,7 +573,7 @@ WRITE16_MEMBER(apollo_state::apollo_atbus_memory_w) SLOG2(("apollo_atbus_memory_w at %08x = %04x & %04x", ATBUS_MEMORY_BASE + offset*2, data, mem_mask)); // Motorola CPU is MSB first, ISA Bus is LSB first - m_isa->prog16_swap_w(space, offset, data, mem_mask); + m_isa->mem16_swap_w(space, offset, data, mem_mask); } /*************************************************************************** diff --git a/src/mame/drivers/appoooh.cpp b/src/mame/drivers/appoooh.cpp index 15c24d0ca34..2c35c9f2bba 100644 --- a/src/mame/drivers/appoooh.cpp +++ b/src/mame/drivers/appoooh.cpp @@ -229,7 +229,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, appoooh_state ) AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, appoooh_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, appoooh_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8000, 0x9fff) AM_ROM AM_REGION("maincpu", 0x8000) AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank1") diff --git a/src/mame/drivers/atm.cpp b/src/mame/drivers/atm.cpp index 91742ec9a7f..9d0fe3c319c 100644 --- a/src/mame/drivers/atm.cpp +++ b/src/mame/drivers/atm.cpp @@ -119,7 +119,7 @@ static ADDRESS_MAP_START (atm_io, AS_IO, 8, atm_state ) AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd) ADDRESS_MAP_END -static ADDRESS_MAP_START (atm_switch, AS_DECRYPTED_OPCODES, 8, atm_state) +static ADDRESS_MAP_START (atm_switch, AS_OPCODES, 8, atm_state) AM_RANGE(0x3d00, 0x3dff) AM_READ(beta_enable_r) AM_RANGE(0x0000, 0x3fff) AM_READ(beta_neutral_r) // Overlap with previous because we want real addresses on the 3e00-3fff range AM_RANGE(0x4000, 0xffff) AM_READ(beta_disable_r) diff --git a/src/mame/drivers/attckufo.cpp b/src/mame/drivers/attckufo.cpp index 6fc3635ccd4..5d4eac1be22 100644 --- a/src/mame/drivers/attckufo.cpp +++ b/src/mame/drivers/attckufo.cpp @@ -50,11 +50,11 @@ static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 8, attckufo_state ) AM_RANGE(0x2000, 0x3fff) AM_ROM AM_REGION("maincpu", 0) ADDRESS_MAP_END -static ADDRESS_MAP_START( vic_videoram_map, AS_0, 8, attckufo_state ) +static ADDRESS_MAP_START( vic_videoram_map, 0, 8, attckufo_state ) AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( vic_colorram_map, AS_1, 8, attckufo_state ) +static ADDRESS_MAP_START( vic_colorram_map, 1, 8, attckufo_state ) AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/bfcobra.cpp b/src/mame/drivers/bfcobra.cpp index f97a735a284..c67b8af85e0 100644 --- a/src/mame/drivers/bfcobra.cpp +++ b/src/mame/drivers/bfcobra.cpp @@ -1276,7 +1276,7 @@ ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, bfcobra_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, bfcobra_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/blitz68k.cpp b/src/mame/drivers/blitz68k.cpp index 632a5d1d812..601f8900c93 100644 --- a/src/mame/drivers/blitz68k.cpp +++ b/src/mame/drivers/blitz68k.cpp @@ -1669,7 +1669,7 @@ MC6845_ON_UPDATE_ADDR_CHANGED(blitz68k_state::crtc_addr) { } -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, blitz68k_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, blitz68k_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/blmbycar.cpp b/src/mame/drivers/blmbycar.cpp index 98a47c95fc5..69a3028c46d 100644 --- a/src/mame/drivers/blmbycar.cpp +++ b/src/mame/drivers/blmbycar.cpp @@ -144,7 +144,7 @@ static ADDRESS_MAP_START( watrball_map, AS_PROGRAM, 16, blmbycar_state ) AM_RANGE(0x70000a, 0x70000b) AM_WRITEONLY // ?? busy ADDRESS_MAP_END -static ADDRESS_MAP_START( blmbycar_oki_map, AS_0, 8, blmbycar_state ) +static ADDRESS_MAP_START( blmbycar_oki_map, 0, 8, blmbycar_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -371,7 +371,7 @@ static MACHINE_CONFIG_START( blmbycar ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, blmbycar_oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, blmbycar_oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/bmcbowl.cpp b/src/mame/drivers/bmcbowl.cpp index 6bff1856186..1a1c8093422 100644 --- a/src/mame/drivers/bmcbowl.cpp +++ b/src/mame/drivers/bmcbowl.cpp @@ -446,7 +446,7 @@ WRITE8_MEMBER(bmcbowl_state::input_mux_w) m_bmc_input=data; } -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, bmcbowl_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, bmcbowl_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/bmcpokr.cpp b/src/mame/drivers/bmcpokr.cpp index a4565f91f3a..ad69cf5634f 100644 --- a/src/mame/drivers/bmcpokr.cpp +++ b/src/mame/drivers/bmcpokr.cpp @@ -795,7 +795,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(bmcpokr_state::interrupt) if (m_irq_enable & (1<<6)) m_maincpu->set_input_line(6, ASSERT_LINE); } -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, bmcpokr_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, bmcpokr_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/boogwing.cpp b/src/mame/drivers/boogwing.cpp index fd4ceab8a50..eedc7fcd2dc 100644 --- a/src/mame/drivers/boogwing.cpp +++ b/src/mame/drivers/boogwing.cpp @@ -149,7 +149,7 @@ static ADDRESS_MAP_START( boogwing_map, AS_PROGRAM, 16, boogwing_state ) AM_RANGE(0x3c0000, 0x3c004f) AM_RAM // ? ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, boogwing_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, boogwing_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/busicom.cpp b/src/mame/drivers/busicom.cpp index f0c1396e01f..51d4fc69b8b 100644 --- a/src/mame/drivers/busicom.cpp +++ b/src/mame/drivers/busicom.cpp @@ -99,7 +99,7 @@ WRITE8_MEMBER(busicom_state::printer_ctrl_w) { } -static ADDRESS_MAP_START(busicom_rom, AS_DECRYPTED_OPCODES, 8, busicom_state ) +static ADDRESS_MAP_START(busicom_rom, AS_OPCODES, 8, busicom_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x04FF) AM_ROM AM_REGION("maincpu", 0) ADDRESS_MAP_END diff --git a/src/mame/drivers/bw2.cpp b/src/mame/drivers/bw2.cpp index 7af11dd172d..a5d7853aae3 100644 --- a/src/mame/drivers/bw2.cpp +++ b/src/mame/drivers/bw2.cpp @@ -231,7 +231,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( lcdc_map ) //------------------------------------------------- -static ADDRESS_MAP_START( lcdc_map, AS_0, 8, bw2_state ) +static ADDRESS_MAP_START( lcdc_map, 0, 8, bw2_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("videoram") ADDRESS_MAP_END @@ -608,7 +608,7 @@ static MACHINE_CONFIG_START( bw2 ) MCFG_I8255_OUT_PORTC_CB(WRITE8(bw2_state, ppi_pc_w)) MCFG_DEVICE_ADD(MSM6255_TAG, MSM6255, XTAL_16MHz) - MCFG_DEVICE_ADDRESS_MAP(AS_0, lcdc_map) + MCFG_DEVICE_ADDRESS_MAP(0, lcdc_map) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer") diff --git a/src/mame/drivers/c128.cpp b/src/mame/drivers/c128.cpp index b61047dfef3..c1d9b288db2 100644 --- a/src/mame/drivers/c128.cpp +++ b/src/mame/drivers/c128.cpp @@ -684,7 +684,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( vic_videoram_map ) //------------------------------------------------- -static ADDRESS_MAP_START( vic_videoram_map, AS_0, 8, c128_state ) +static ADDRESS_MAP_START( vic_videoram_map, 0, 8, c128_state ) AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r) ADDRESS_MAP_END @@ -693,7 +693,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( vic_colorram_map ) //------------------------------------------------- -static ADDRESS_MAP_START( vic_colorram_map, AS_1, 8, c128_state ) +static ADDRESS_MAP_START( vic_colorram_map, 1, 8, c128_state ) AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r) ADDRESS_MAP_END @@ -702,7 +702,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( vdc_videoram_map ) //------------------------------------------------- -static ADDRESS_MAP_START( vdc_videoram_map, AS_0, 8, c128_state ) +static ADDRESS_MAP_START( vdc_videoram_map, 0, 8, c128_state ) AM_RANGE(0x0000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -1701,8 +1701,8 @@ static MACHINE_CONFIG_START( ntsc ) MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(c128_state, vic_irq_w)) MCFG_MOS8564_K_CALLBACK(WRITE8(c128_state, vic_k_w)) MCFG_VIDEO_SET_SCREEN(SCREEN_VIC_TAG) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map) - MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map) + MCFG_DEVICE_ADDRESS_MAP(0, vic_videoram_map) + MCFG_DEVICE_ADDRESS_MAP(1, vic_colorram_map) MCFG_SCREEN_ADD(SCREEN_VIC_TAG, RASTER) MCFG_SCREEN_REFRESH_RATE(VIC6567_VRETRACERATE) MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES) @@ -1872,8 +1872,8 @@ static MACHINE_CONFIG_START( pal ) MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(c128_state, vic_irq_w)) MCFG_MOS8564_K_CALLBACK(WRITE8(c128_state, vic_k_w)) MCFG_VIDEO_SET_SCREEN(SCREEN_VIC_TAG) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map) - MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map) + MCFG_DEVICE_ADDRESS_MAP(0, vic_videoram_map) + MCFG_DEVICE_ADDRESS_MAP(1, vic_colorram_map) MCFG_SCREEN_ADD(SCREEN_VIC_TAG, RASTER) MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE) MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES) diff --git a/src/mame/drivers/c64.cpp b/src/mame/drivers/c64.cpp index 6f4dfc5955b..e9f3f1ee2c5 100644 --- a/src/mame/drivers/c64.cpp +++ b/src/mame/drivers/c64.cpp @@ -533,7 +533,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( vic_videoram_map ) //------------------------------------------------- -static ADDRESS_MAP_START( vic_videoram_map, AS_0, 8, c64_state ) +static ADDRESS_MAP_START( vic_videoram_map, 0, 8, c64_state ) AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r) ADDRESS_MAP_END @@ -542,7 +542,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( vic_colorram_map ) //------------------------------------------------- -static ADDRESS_MAP_START( vic_colorram_map, AS_1, 8, c64_state ) +static ADDRESS_MAP_START( vic_colorram_map, 1, 8, c64_state ) AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r) ADDRESS_MAP_END @@ -1325,8 +1325,8 @@ static MACHINE_CONFIG_START( ntsc ) MCFG_MOS6566_CPU(M6510_TAG) MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(c64_state, vic_irq_w)) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map) - MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map) + MCFG_DEVICE_ADDRESS_MAP(0, vic_videoram_map) + MCFG_DEVICE_ADDRESS_MAP(1, vic_colorram_map) MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) MCFG_SCREEN_REFRESH_RATE(VIC6567_VRETRACERATE) MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES) @@ -1481,8 +1481,8 @@ static MACHINE_CONFIG_START( pal ) MCFG_MOS6566_CPU(M6510_TAG) MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(c64_state, vic_irq_w)) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map) - MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map) + MCFG_DEVICE_ADDRESS_MAP(0, vic_videoram_map) + MCFG_DEVICE_ADDRESS_MAP(1, vic_colorram_map) MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE) MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES) @@ -1616,8 +1616,8 @@ static MACHINE_CONFIG_START( pal_gs ) MCFG_MOS6566_CPU(M6510_TAG) MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(c64_state, vic_irq_w)) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map) - MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map) + MCFG_DEVICE_ADDRESS_MAP(0, vic_videoram_map) + MCFG_DEVICE_ADDRESS_MAP(1, vic_colorram_map) MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE) MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES) diff --git a/src/mame/drivers/cabal.cpp b/src/mame/drivers/cabal.cpp index 6e15812725c..3c613f82d1e 100644 --- a/src/mame/drivers/cabal.cpp +++ b/src/mame/drivers/cabal.cpp @@ -190,7 +190,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, cabal_state ) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( sound_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, cabal_state ) +static ADDRESS_MAP_START( sound_decrypted_opcodes_map, AS_OPCODES, 8, cabal_state ) AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x8000) ADDRESS_MAP_END @@ -229,7 +229,7 @@ static ADDRESS_MAP_START( cabalbl2_sound_map, AS_PROGRAM, 8, cabal_state ) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( cabalbl2_predecrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, cabal_state ) +static ADDRESS_MAP_START( cabalbl2_predecrypted_opcodes_map, AS_OPCODES, 8, cabal_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("audiocpu", 0x2000) AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x8000) ADDRESS_MAP_END diff --git a/src/mame/drivers/calorie.cpp b/src/mame/drivers/calorie.cpp index adf4d4bfd21..74af78d759f 100644 --- a/src/mame/drivers/calorie.cpp +++ b/src/mame/drivers/calorie.cpp @@ -274,7 +274,7 @@ static ADDRESS_MAP_START( calorie_map, AS_PROGRAM, 8, calorie_state ) AM_RANGE(0xf800, 0xf800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, calorie_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, calorie_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8000, 0xbfff) AM_ROM AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram") diff --git a/src/mame/drivers/cave.cpp b/src/mame/drivers/cave.cpp index e184b0edcab..9a443a17bb9 100644 --- a/src/mame/drivers/cave.cpp +++ b/src/mame/drivers/cave.cpp @@ -1161,12 +1161,12 @@ ADDRESS_MAP_END ***************************************************************************/ -static ADDRESS_MAP_START( oki_map, AS_0, 8, cave_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, cave_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("okibank1") AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank2") ADDRESS_MAP_END -static ADDRESS_MAP_START( oki2_map, AS_0, 8, cave_state ) +static ADDRESS_MAP_START( oki2_map, 0, 8, cave_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("oki2bank1") AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki2bank2") ADDRESS_MAP_END @@ -2307,7 +2307,7 @@ static MACHINE_CONFIG_START( hotdogst ) MCFG_OKIM6295_ADD("oki", XTAL_32MHz/16, PIN7_HIGH) // pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END @@ -2410,7 +2410,7 @@ static MACHINE_CONFIG_START( mazinger ) MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END @@ -2463,11 +2463,11 @@ static MACHINE_CONFIG_START( metmqstr ) MCFG_OKIM6295_ADD("oki1", XTAL_32MHz / 16 , PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_OKIM6295_ADD("oki2", XTAL_32MHz / 16 , PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MACHINE_CONFIG_END @@ -2713,11 +2713,11 @@ static MACHINE_CONFIG_START( sailormn ) MCFG_OKIM6295_ADD("oki1", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_OKIM6295_ADD("oki2", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MACHINE_CONFIG_END diff --git a/src/mame/drivers/cbasebal.cpp b/src/mame/drivers/cbasebal.cpp index c3ef33e1d61..a99b7d22139 100644 --- a/src/mame/drivers/cbasebal.cpp +++ b/src/mame/drivers/cbasebal.cpp @@ -102,7 +102,7 @@ static ADDRESS_MAP_START( cbasebal_map, AS_PROGRAM, 8, cbasebal_state ) AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, cbasebal_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, cbasebal_state ) AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") ADDRESS_MAP_END diff --git a/src/mame/drivers/cbm2.cpp b/src/mame/drivers/cbm2.cpp index 092d3cfb262..14dd1adcd86 100644 --- a/src/mame/drivers/cbm2.cpp +++ b/src/mame/drivers/cbm2.cpp @@ -1172,7 +1172,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( vic_videoram_map ) //------------------------------------------------- -static ADDRESS_MAP_START( vic_videoram_map, AS_0, 8, p500_state ) +static ADDRESS_MAP_START( vic_videoram_map, 0, 8, p500_state ) AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r) ADDRESS_MAP_END @@ -1181,7 +1181,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( vic_colorram_map ) //------------------------------------------------- -static ADDRESS_MAP_START( vic_colorram_map, AS_1, 8, p500_state ) +static ADDRESS_MAP_START( vic_colorram_map, 1, 8, p500_state ) AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r) ADDRESS_MAP_END @@ -2294,8 +2294,8 @@ static MACHINE_CONFIG_START( p500_ntsc ) MCFG_MOS6566_CPU(M6509_TAG) MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(p500_state, vic_irq_w)) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map) - MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map) + MCFG_DEVICE_ADDRESS_MAP(0, vic_videoram_map) + MCFG_DEVICE_ADDRESS_MAP(1, vic_colorram_map) MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) MCFG_SCREEN_REFRESH_RATE(VIC6567_VRETRACERATE) MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES) @@ -2410,8 +2410,8 @@ static MACHINE_CONFIG_START( p500_pal ) MCFG_MOS6566_CPU(M6509_TAG) MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(p500_state, vic_irq_w)) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map) - MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map) + MCFG_DEVICE_ADDRESS_MAP(0, vic_videoram_map) + MCFG_DEVICE_ADDRESS_MAP(1, vic_colorram_map) MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE) MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES) diff --git a/src/mame/drivers/cclimber.cpp b/src/mame/drivers/cclimber.cpp index 44adb8029f5..f9327dce9ad 100644 --- a/src/mame/drivers/cclimber.cpp +++ b/src/mame/drivers/cclimber.cpp @@ -344,7 +344,7 @@ static ADDRESS_MAP_START( cclimber_map, AS_PROGRAM, 8, cclimber_state ) AM_RANGE(0xb800, 0xb800) AM_READ_PORT("SYSTEM") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, cclimber_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, cclimber_state ) AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END @@ -418,7 +418,7 @@ static ADDRESS_MAP_START( yamato_map, AS_PROGRAM, 8, cclimber_state ) AM_RANGE(0xba00, 0xba00) AM_READ_PORT("START") /* maybe a mirror of b800 */ ADDRESS_MAP_END -static ADDRESS_MAP_START( yamato_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, cclimber_state ) +static ADDRESS_MAP_START( yamato_decrypted_opcodes_map, AS_OPCODES, 8, cclimber_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END @@ -465,7 +465,7 @@ static ADDRESS_MAP_START( bagmanf_map, AS_PROGRAM, 8, cclimber_state ) AM_RANGE(0xb800, 0xb800) AM_READNOP ADDRESS_MAP_END -static ADDRESS_MAP_START( toprollr_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, cclimber_state ) +static ADDRESS_MAP_START( toprollr_decrypted_opcodes_map, AS_OPCODES, 8, cclimber_state ) AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1d") AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("maincpu", 0xc000) ADDRESS_MAP_END diff --git a/src/mame/drivers/chinsan.cpp b/src/mame/drivers/chinsan.cpp index 902cc57e9a3..a7570fc479c 100644 --- a/src/mame/drivers/chinsan.cpp +++ b/src/mame/drivers/chinsan.cpp @@ -107,7 +107,7 @@ static ADDRESS_MAP_START( chinsan_map, AS_PROGRAM, 8, chinsan_state ) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("color_ram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, chinsan_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, chinsan_state ) AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") ADDRESS_MAP_END diff --git a/src/mame/drivers/chsuper.cpp b/src/mame/drivers/chsuper.cpp index c5919845220..801d490ff8e 100644 --- a/src/mame/drivers/chsuper.cpp +++ b/src/mame/drivers/chsuper.cpp @@ -342,7 +342,7 @@ static GFXDECODE_START( chsuper ) GFXDECODE_ENTRY( "gfx1", 0x00000, charlayout, 0, 1 ) GFXDECODE_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, chsuper_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, chsuper_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/cischeat.cpp b/src/mame/drivers/cischeat.cpp index 55367f347e0..22cdefce06a 100644 --- a/src/mame/drivers/cischeat.cpp +++ b/src/mame/drivers/cischeat.cpp @@ -820,12 +820,12 @@ static ADDRESS_MAP_START( captflag_map, AS_PROGRAM, 16, cischeat_state ) AM_RANGE(0x100060, 0x10007d) AM_RAM // 7-seg? NVRAM? ADDRESS_MAP_END -static ADDRESS_MAP_START( captflag_oki1_map, AS_0, 8, cischeat_state ) +static ADDRESS_MAP_START( captflag_oki1_map, 0, 8, cischeat_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki1_bank") ADDRESS_MAP_END -static ADDRESS_MAP_START( captflag_oki2_map, AS_0, 8, cischeat_state ) +static ADDRESS_MAP_START( captflag_oki2_map, 0, 8, cischeat_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki2_bank") ADDRESS_MAP_END @@ -2214,12 +2214,12 @@ static MACHINE_CONFIG_START( captflag ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_OKIM6295_ADD("oki1", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, captflag_oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, captflag_oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) MCFG_OKIM6295_ADD("oki2", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, captflag_oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, captflag_oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) MACHINE_CONFIG_END diff --git a/src/mame/drivers/clpoker.cpp b/src/mame/drivers/clpoker.cpp index 561bb2ef758..2a9410d4f58 100644 --- a/src/mame/drivers/clpoker.cpp +++ b/src/mame/drivers/clpoker.cpp @@ -94,7 +94,7 @@ static ADDRESS_MAP_START( io_map, AS_IO, 8, clpoker_state ) AM_RANGE(0xc0, 0xc0) AM_READNOP // mystery read at startup ADDRESS_MAP_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, clpoker_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, clpoker_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/coinmvga.cpp b/src/mame/drivers/coinmvga.cpp index bf1d3671855..48d8f8b6dc4 100644 --- a/src/mame/drivers/coinmvga.cpp +++ b/src/mame/drivers/coinmvga.cpp @@ -617,11 +617,11 @@ INTERRUPT_GEN_MEMBER(coinmvga_state::vblank_irq) * Machine Drivers * *************************/ -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, coinmvga_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, coinmvga_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( ramdac2_map, AS_0, 8, coinmvga_state ) +static ADDRESS_MAP_START( ramdac2_map, 0, 8, coinmvga_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac2",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/commando.cpp b/src/mame/drivers/commando.cpp index d4983d4c695..be2fffa983a 100644 --- a/src/mame/drivers/commando.cpp +++ b/src/mame/drivers/commando.cpp @@ -76,7 +76,7 @@ static ADDRESS_MAP_START( commando_map, AS_PROGRAM, 8, commando_state ) AM_RANGE(0xff80, 0xffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, commando_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, commando_state ) AM_RANGE(0x0000, 0xbfff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp index 8d7bcf9b4d9..6e5fddcb745 100644 --- a/src/mame/drivers/cps1.cpp +++ b/src/mame/drivers/cps1.cpp @@ -627,7 +627,7 @@ ADDRESS_MAP_START( qsound_sub_map, AS_PROGRAM, 8, cps_state ) // used by cps2. AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("qsound_ram2") ADDRESS_MAP_END -ADDRESS_MAP_START( qsound_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, cps_state ) +ADDRESS_MAP_START( qsound_decrypted_opcodes_map, AS_OPCODES, 8, cps_state ) AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("decrypted") ADDRESS_MAP_END diff --git a/src/mame/drivers/cps2.cpp b/src/mame/drivers/cps2.cpp index 6b608b988bd..bae702d1d62 100644 --- a/src/mame/drivers/cps2.cpp +++ b/src/mame/drivers/cps2.cpp @@ -953,7 +953,7 @@ static ADDRESS_MAP_START( cps2_map, AS_PROGRAM, 16, cps_state ) AM_RANGE(0xff0000, 0xffffff) AM_RAM /* RAM */ ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, cps_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, cps_state ) AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_SHARE("decrypted_opcodes") /* 68000 ROM */ ADDRESS_MAP_END diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp index a27ddb555f1..e6e03478df9 100644 --- a/src/mame/drivers/cps3.cpp +++ b/src/mame/drivers/cps3.cpp @@ -2213,7 +2213,7 @@ static ADDRESS_MAP_START( cps3_map, AS_PROGRAM, 32, cps3_state ) AM_RANGE(0xc0000000, 0xc00003ff) AM_RAM_WRITE(cps3_0xc0000000_ram_w ) AM_SHARE("0xc0000000_ram") /* Executes code from here */ ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 32, cps3_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 32, cps3_state ) AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_REGION("bios", 0) // Bios ROM AM_RANGE(0x06000000, 0x06ffffff) AM_ROM AM_SHARE("decrypted_gamerom") AM_RANGE(0xc0000000, 0xc00003ff) AM_ROM AM_SHARE("0xc0000000_ram_decrypted") diff --git a/src/mame/drivers/crystal.cpp b/src/mame/drivers/crystal.cpp index 93fe482e5b0..5c14f7b81ea 100644 --- a/src/mame/drivers/crystal.cpp +++ b/src/mame/drivers/crystal.cpp @@ -119,18 +119,18 @@ Notes: P's Attack (c) 2004 Uniana Co., Ltd -+----------1||||---1|||||--1|||||---------------------------+ ++----------54321---654321--654321---------------------------+ |VOL TICKET GUN_1P GUN_2P +---------| | | | +-+ | 256MB | | CC-DAC | Compact | +-+ EMUL* | Flash | | | | -|J +---+ +---------| -|A | | | -|M | R | 25.1750MHz +--------------+| -|M | A | | 42Pin* || -|A | M | +--------------+| +|5 +---+ +---------| +|6 | | | +|P | R | 25.1750MHz +--------------+| +|I | A | | 42Pin* || +|N | M | +--------------+| | | | +--------------+| |C +---+ +------------+ | SYS || |O | | +--------------+| @@ -161,24 +161,69 @@ EMUL is an unpopulated 8 pin connector EEPROM is a 93C86 16K 5.0v Serial EEPROM (2048x8-bit or 1024x16-bit) CC-DAC is a TDA1311A Stereo Continuous Calibration DAC + + P's Attack non JAMMA standard 56pin Edge Connector Pinout: + + 56pin Edge Connector + Solder Side | Parts Side +------------------------------------------------------------------ + GND | A | 1 | GND + GND | B | 2 | GND + +5 | C | 3 | +5 + +5 | D | 4 | +5 + Player 1 Start Lamp | E | 5 | Coin Lamp + +12 | F | 6 | +12 +------------ KEY ------------| G | 7 |------------ KEY ----------- + Player 1 Start Lamp | H | 8 | Coin Counter + L Speaker (-) | J | 9 | L Speaker (+) + R Speaker (-) | K | 10| R Speaker (+) + Video VSync | L | 11| + Video Green | M | 12| Video Red + Video Sync | N | 13| Video Blue + Service Switch | P | 14| Video GND + Video HSync | R | 15| Test Switch + | S | 16| Coin Switch + Start Player 2 | T | 17| Start Player 1 + | U | 18| + | V | 19| + | W | 20| + | X | 21| + | Y | 22| + | a | 23| + | b | 24| + | d | 25| + | e | 26| + GND | f | 27| GND + GND | g | 28| GND + + TICKET is a 5 pin connector: - 1| +12v - 2| IN + 1| LED + 2| GND 3| OUT - 4| GND - 5| LED + 4| IN + 5| +12v -GUN_xP are 6 pin gun connectors (pins 1-4 match the UNICO sytle guns): +GUN_xP are 6 pin gun connectors (pins 3-6 match the UNICO sytle guns): + + GUN-1P: Left (Blue) Gun Connector Pinout 1| GND - 2| SW - 3| +5v - 4| SENS - 5| SOL + 2| Solenoid + 3| Sensor + 4| +5V + 5| Switch (Trigger) 6| GND + GUN-2P: Right (Pink) Gun Connector Pinout + 1| GND + 2| Solenoid + 3| Sensor + 4| +5V + 5| Switch (Trigger) + 6| GND */ diff --git a/src/mame/drivers/cultures.cpp b/src/mame/drivers/cultures.cpp index 47cfadc907e..0cf708fa830 100644 --- a/src/mame/drivers/cultures.cpp +++ b/src/mame/drivers/cultures.cpp @@ -183,7 +183,7 @@ WRITE8_MEMBER(cultures_state::bg_bank_w) } -static ADDRESS_MAP_START( oki_map, AS_0, 8, cultures_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, cultures_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -428,7 +428,7 @@ static MACHINE_CONFIG_START( cultures ) MCFG_OKIM6295_ADD("oki", MCLK/8, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END diff --git a/src/mame/drivers/darkmist.cpp b/src/mame/drivers/darkmist.cpp index e2b454a7513..de4202807d2 100644 --- a/src/mame/drivers/darkmist.cpp +++ b/src/mame/drivers/darkmist.cpp @@ -68,7 +68,7 @@ static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, darkmist_state ) AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, darkmist_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, darkmist_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") ADDRESS_MAP_END diff --git a/src/mame/drivers/dblewing.cpp b/src/mame/drivers/dblewing.cpp index afb2c969b95..fc65892b079 100644 --- a/src/mame/drivers/dblewing.cpp +++ b/src/mame/drivers/dblewing.cpp @@ -185,7 +185,7 @@ static ADDRESS_MAP_START( dblewing_map, AS_PROGRAM, 16, dblewing_state ) AM_RANGE(0xff0000, 0xff3fff) AM_MIRROR(0xc000) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, dblewing_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, dblewing_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/ddribble.cpp b/src/mame/drivers/ddribble.cpp index 51c6d41ba90..89e9e55e985 100644 --- a/src/mame/drivers/ddribble.cpp +++ b/src/mame/drivers/ddribble.cpp @@ -143,7 +143,7 @@ static ADDRESS_MAP_START( cpu2_map, AS_PROGRAM, 8, ddribble_state ) AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ ADDRESS_MAP_END -static ADDRESS_MAP_START( vlm_map, AS_0, 8, ddribble_state ) +static ADDRESS_MAP_START( vlm_map, 0, 8, ddribble_state ) AM_RANGE(0x0000, 0xffff) AM_ROMBANK("vlmbank") ADDRESS_MAP_END @@ -304,7 +304,7 @@ static MACHINE_CONFIG_START( ddribble ) MCFG_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, vlm_map) MCFG_FILTER_RC_ADD("filter1", 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) diff --git a/src/mame/drivers/deadang.cpp b/src/mame/drivers/deadang.cpp index 8a2ba28b320..b371c141c5d 100644 --- a/src/mame/drivers/deadang.cpp +++ b/src/mame/drivers/deadang.cpp @@ -113,7 +113,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, deadang_state ) AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") ADDRESS_MAP_END -static ADDRESS_MAP_START( sound_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, deadang_state ) +static ADDRESS_MAP_START( sound_decrypted_opcodes_map, AS_OPCODES, 8, deadang_state ) AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") ADDRESS_MAP_END diff --git a/src/mame/drivers/decocass.cpp b/src/mame/drivers/decocass.cpp index a32f2f44efd..d45bc293a3b 100644 --- a/src/mame/drivers/decocass.cpp +++ b/src/mame/drivers/decocass.cpp @@ -1014,260 +1014,214 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( ctsttape, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,ctsttape) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,ctsttape) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cprogolfj, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cprogolfj) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cprogolfj) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cdsteljn, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cdsteljn) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cdsteljn) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cmanhat, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cmanhat) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cmanhat) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cfishing, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cfishing) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cfishing) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( chwy, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,chwy) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,chwy) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cterrani, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cterrani) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cterrani) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( castfant, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,castfant) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,castfant) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( csuperas, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,csuperas) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,csuperas) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cocean1a, decocass ) /* 10 */ /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cocean1a) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cocean1a) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( clocknch, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,clocknch) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,clocknch) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( clocknchj, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,clocknchj) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,clocknchj) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cfboy0a1, decocass ) /* 12 */ /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cfboy0a1) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cfboy0a1) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cprogolf, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cprogolf) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cprogolf) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cluckypo, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cluckypo) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cluckypo) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( ctisland, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,ctisland) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,ctisland) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( ctisland3, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,ctisland3) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,ctisland3) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cexplore, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cexplore) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type1_state,cexplore) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( cdiscon1, decocass ) - - /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cdiscon1) -MACHINE_CONFIG_END - - -static MACHINE_CONFIG_DERIVED( ctornado, decocass ) - - /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,ctornado) -MACHINE_CONFIG_END - - -static MACHINE_CONFIG_DERIVED( cmissnx, decocass ) - - /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cmissnx) -MACHINE_CONFIG_END - - -static MACHINE_CONFIG_DERIVED( cptennis, decocass ) - - /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cptennis) -MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cbtime, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cbtime) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cbtime) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cburnrub, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cburnrub) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cburnrub) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cgraplop, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cgraplop) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cgraplop) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cgraplop2, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cgraplop2) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cgraplop2) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( clapapa, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,clapapa) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,clapapa) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cskater, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cskater) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cskater) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cprobowl, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cprobowl) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cprobowl) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cnightst, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cnightst) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cnightst) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cpsoccer, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cpsoccer) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cpsoccer) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( csdtenis, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,csdtenis) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,csdtenis) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( czeroize, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,czeroize) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,czeroize) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cppicf, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cppicf) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cppicf) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cfghtice, decocass ) /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cfghtice) + MCFG_MACHINE_RESET_OVERRIDE(decocass_type3_state,cfghtice) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( type4, decocass ) - - /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,type4) -MACHINE_CONFIG_END - - -static MACHINE_CONFIG_DERIVED( cbdash, decocass ) - - /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cbdash) -MACHINE_CONFIG_END - - -static MACHINE_CONFIG_DERIVED( cflyball, decocass ) - - /* basic machine hardware */ - MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cflyball) -MACHINE_CONFIG_END - #define ROM_LOAD_BIOS(bios,name,offset,length,hash) \ ROMX_LOAD(name, offset, length, hash, ROM_BIOS(bios+1)) /* Note '+1' */ @@ -1579,7 +1533,7 @@ ROM_START( ctisland ) ROM_REGION( 0x10000, "cassette", 0 ) /* (max) 64k for cassette image */ ROM_LOAD( "ctisland.cas", 0x0000, 0x8000, CRC(3f63b8f8) SHA1(2fd0679ef9750a228ebb098672ab6091fda75804) ) - ROM_REGION( 0x4000, "user3", 0 ) /* roms from the overlay pcb */ + ROM_REGION( 0xa000, "user3", ROMREGION_ERASEFF ) /* roms from the overlay pcb */ ROM_LOAD( "deco-ti.x1", 0x0000, 0x1000, CRC(a7f8aeba) SHA1(0c9ba1a46d0636b36f40fad31638db89f374f778) ) ROM_LOAD( "deco-ti.x2", 0x1000, 0x1000, CRC(2a0d3c91) SHA1(552d08fcddddbea5b52fa1e8decd188ae49c86ea) ) ROM_LOAD( "deco-ti.x3", 0x2000, 0x1000, CRC(3a26b97c) SHA1(f57e76077806e149a9e455c85e5431eac2d42bc3) ) @@ -1595,7 +1549,7 @@ ROM_START( ctisland2 ) ROM_REGION( 0x10000, "cassette", 0 ) /* (max) 64k for cassette image */ ROM_LOAD( "ctislnd2.cas", 0x0000, 0x8000, CRC(2854b4c0) SHA1(d3b4e0031dbb2340fbbe396a1ff9b8fbfd63663e) ) - ROM_REGION( 0x4000, "user3", 0 ) /* roms from the overlay pcb */ + ROM_REGION( 0xa000, "user3", ROMREGION_ERASEFF ) /* roms from the overlay pcb */ ROM_LOAD( "deco-ti.x1", 0x0000, 0x1000, CRC(a7f8aeba) SHA1(0c9ba1a46d0636b36f40fad31638db89f374f778) ) ROM_LOAD( "deco-ti.x2", 0x1000, 0x1000, CRC(2a0d3c91) SHA1(552d08fcddddbea5b52fa1e8decd188ae49c86ea) ) ROM_LOAD( "deco-ti.x3", 0x2000, 0x1000, CRC(3a26b97c) SHA1(f57e76077806e149a9e455c85e5431eac2d42bc3) ) @@ -1611,7 +1565,7 @@ ROM_START( ctisland3 ) ROM_REGION( 0x10000, "cassette", 0 ) /* (max) 64k for cassette image */ ROM_LOAD( "ctislnd3.cas", 0x0000, 0x8000, CRC(45464e1e) SHA1(03275694d963c7ab0e0f5525e248e69da5f9b591) ) - ROM_REGION( 0x4000, "user3", 0 ) /* roms from the overlay pcb */ + ROM_REGION( 0xa000, "user3", ROMREGION_ERASEFF ) /* roms from the overlay pcb */ ROM_LOAD( "deco-ti.x1", 0x0000, 0x1000, CRC(a7f8aeba) SHA1(0c9ba1a46d0636b36f40fad31638db89f374f778) ) ROM_LOAD( "deco-ti.x2", 0x1000, 0x1000, CRC(2a0d3c91) SHA1(552d08fcddddbea5b52fa1e8decd188ae49c86ea) ) ROM_LOAD( "deco-ti.x3", 0x2000, 0x1000, CRC(3a26b97c) SHA1(f57e76077806e149a9e455c85e5431eac2d42bc3) ) @@ -1630,8 +1584,17 @@ ROM_START( cexplore ) ROM_REGION( 0x10000, "cassette", 0 ) /* (max) 64k for cassette image */ ROM_LOAD( "cexplore.cas", 0x0000, 0x8000, CRC(fae49c66) SHA1(4ae69e2f706fdf30204f0aa1277619395cacc21b) ) - ROM_REGION( 0x4000, "user3", 0 ) /* roms from the overlay pcb */ - ROM_LOAD( "cexplore_overlay_roms", 0x0000, 0x4000, NO_DUMP ) + ROM_REGION( 0xa000, "user3", ROMREGION_ERASEFF ) /* roms from the DECO GRO DE-0091C-1 overlay pcb */ + ROM_LOAD( "x1_made_in_japan_18.x1", 0x0000, 0x1000, CRC(f2ca58f0) SHA1(5c9faeca6247b70586dc2a3765805ac96960ac79) ) + ROM_LOAD( "x2_made_in_japan_18.x2", 0x1000, 0x1000, CRC(75d999bf) SHA1(7c257285d5b69642ec542dc56defdbb1f2072454) ) + ROM_LOAD( "x3_made_in_japan_18.x3", 0x2000, 0x1000, CRC(941539c6) SHA1(2e879107f56bf258ad90fb83c2ab278027acb0bb) ) // FIXED BITS (1xxxxxxx) (but correct?) + ROM_LOAD( "x4_made_in_japan_18.x4", 0x3000, 0x1000, CRC(73388544) SHA1(9c98f79e431d0881e20eac4c6c4177db8973ce20) ) // FIXED BITS (1xxxxxxx) (but correct?) + ROM_LOAD( "x5_made_in_japan_18.x5", 0x4000, 0x1000, CRC(b40699c5) SHA1(4934283d2845dbd3ea9a7fa349f663a34fcdfdf8) ) + ROM_LOAD( "y1_made_in_japan_18.y1", 0x5000, 0x1000, CRC(d887dc50) SHA1(9321e40d208bd029657ab87eaf815f8a09e49b48) ) + ROM_LOAD( "y2_made_in_japan_18.y2", 0x6000, 0x1000, CRC(fe325d0d) SHA1(3e4aaba87e2aa656346169d512d70083605692c6) ) + ROM_LOAD( "y3_made_in_japan_18.y3", 0x7000, 0x1000, CRC(7a787ecf) SHA1(5261747823b58be3fabb8d1a8cb4069082f95b30) ) + ROM_LOAD( "y4_made_in_japan_18.y4", 0x8000, 0x1000, CRC(ac30e8c7) SHA1(f8f53b982df356e5bf2624afe0f8a72635b3b4b3) ) + ROM_LOAD( "y5_made_in_japan_18.y5", 0x9000, 0x1000, CRC(0a6b8f03) SHA1(09b477579a5fed4c45299b6366141ef4a8c9a410) ) ROM_END /* The Following use Dongle Type 2 (CS82-007) @@ -2022,6 +1985,26 @@ ROM_START( cflyball ) ROM_LOAD( "cflyball.cas", 0x0000, 0x10000, CRC(cb40d043) SHA1(57698bac7e0d552167efa99d08116bf19a3b29c9) ) ROM_END +ROM_START( decomult ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "WIDLBIOS.V0B", 0xf800, 0x0800, CRC(9ad7c451) SHA1(cda3513ca9904cd9f097a4a79226e3e30f83bb1c) ) + + ROM_REGION( 0x100000, "dongle", 0 ) + ROM_LOAD( "WIDLDECO.LOW", 0x00000, 0x80000, CRC(fd4dc36c) SHA1(1ef7f9e1dd333a1adc7b94e2b20eda41fe73a9f8) ) + ROM_LOAD( "WIDLDECO.HGH", 0x80000, 0x80000, CRC(a8a30112) SHA1(b4feaa3e68c5d347c97958bc3c06472dd66df2f7) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "v1-.5a", 0xf800, 0x0800, CRC(b66b2c2a) SHA1(0097f38beb4872e735e560148052e258a26b08fd) ) + + ROM_REGION( 0x00060, "proms", 0 ) + ROM_LOAD( "v2.3m", 0x0000, 0x0020, CRC(238fdb40) SHA1(b88e8fabb82092105c3828154608ea067acbf2e5) ) + ROM_LOAD( "v4.10d", 0x0020, 0x0020, CRC(3b5836b4) SHA1(b630bb277d9ec09d46ef26b944014dd6165b35d8) ) + ROM_LOAD( "v3.3j", 0x0040, 0x0020, CRC(51eef657) SHA1(eaedce5caf55624ad6ae706aedf82c5717c60f1f) ) + + ROM_REGION( 0x10000, "mcu", 0 ) + ROM_LOAD( "cassmcu.1c", 0x0000, 0x0400, CRC(a6df18fd) SHA1(1f9ea47e372d31767c936c15852b43df2b0ee8ff) ) +ROM_END + DRIVER_INIT_MEMBER(decocass_state,decocass) { @@ -2041,6 +2024,7 @@ DRIVER_INIT_MEMBER(decocass_state,decocrom) m_maincpu->space(AS_PROGRAM).install_write_handler(0x6000, 0xafff, write8_delegate(FUNC(decocass_state::decocass_de0091_w),this)); membank("bank1")->configure_entry(0, m_charram); membank("bank1")->configure_entry(1, memregion("user3")->base()); + membank("bank1")->configure_entry(2, memregion("user3")->base()+0x5000); membank("bank1")->set_entry(0); /* install the bank selector */ @@ -2081,72 +2065,75 @@ DRIVER_INIT_MEMBER(decocass_state,cdsteljn) m_maincpu->space(AS_PROGRAM).install_read_handler(0xe600, 0xe6ff, read8_delegate(FUNC(decocass_state::cdsteljn_input_r), this)); } -/* -- */ GAME( 1981, decocass, 0, decocass, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "DECO Cassette System", MACHINE_IS_BIOS_ROOT ) -/* -- */ GAME( 1981, ctsttape, decocass, ctsttape, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Test Tape (DECO Cassette) (US)", 0 ) -/* 01 */ GAME( 1980, chwy, decocass, chwy, chwy, decocass_state, decocass, ROT270, "Data East Corporation", "Highway Chase (DECO Cassette) (US)", 0 ) +/* -- */ GAME( 1981, decocass, 0, decocass, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "DECO Cassette System", MACHINE_IS_BIOS_ROOT ) +/* -- */ GAME( 1981, ctsttape, decocass, ctsttape, decocass, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Test Tape (DECO Cassette) (US)", 0 ) +/* 01 */ GAME( 1980, chwy, decocass, chwy, chwy, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Highway Chase (DECO Cassette) (US)", 0 ) /* 02 */ // 1980.12 Sengoku Ninjatai -/* 03 */ GAME( 1981, cmanhat, decocass, cmanhat, cmanhat, decocass_state, decocass, ROT270, "Data East Corporation", "Manhattan (DECO Cassette) (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -/* 04 */ GAME( 1981, cterrani, decocass, cterrani, cterrani, decocass_state, decocass, ROT270, "Data East Corporation", "Terranean (DECO Cassette) (US)", 0 ) +/* 03 */ GAME( 1981, cmanhat, decocass, cmanhat, cmanhat, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Manhattan (DECO Cassette) (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +/* 04 */ GAME( 1981, cterrani, decocass, cterrani, cterrani, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Terranean (DECO Cassette) (US)", 0 ) /* 05 */ // 1981.?? Missile Sprinter /* 06 */ // 1980.12 Nebula -/* 07 */ GAME( 1981, castfant, decocass, castfant, castfant, decocass_state, decocass, ROT270, "Data East Corporation", "Astro Fantasia (DECO Cassette) (US)", 0 ) +/* 07 */ GAME( 1981, castfant, decocass, castfant, castfant, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Astro Fantasia (DECO Cassette) (US)", 0 ) /* 08 */ // 1981.03 The Tower -/* 09 */ GAME( 1981, csuperas, decocass, csuperas, csuperas, decocass_state, decocass, ROT270, "Data East Corporation", "Super Astro Fighter (DECO Cassette) (US)", 0 ) -/* 10 */ GAME( 1981, cocean1a, decocass, cocean1a, cocean1a, decocass_state, decocass, ROT270, "Data East Corporation", "Ocean to Ocean (Medal) (DECO Cassette MD) (No.10/Ver.1,Japan)", 0 ) /* no lever, 1P/2P buttons used to switch player, cocktail mode not emulated */ -/* */ GAME( 1981, cocean6b, cocean1a, cocean1a, cocean1a, decocass_state, decocass, ROT270, "Data East Corporation", "Ocean to Ocean (Medal) (DECO Cassette MD) (No.10/Ver.6,US)", 0 ) /* lever, 1P/2P buttons used to switch player, cocktail mode not emulated */ -/* 11 */ GAME( 1981, clocknch, decocass, clocknch, clocknch, decocass_state, decocass, ROT270, "Data East Corporation", "Lock'n'Chase (DECO Cassette) (US)", 0 ) -/* */ GAME( 1981, clocknchj, clocknch, clocknchj,clocknchj,decocass_state, decocass, ROT270, "Data East Corporation", "Lock'n'Chase (DECO Cassette) (Japan)", 0 ) -/* 12 */ GAME( 1981, cfboy0a1, decocass, cfboy0a1, cfboy0a1, decocass_state, decocass, ROT270, "Data East Corporation", "Flash Boy (vertical) (DECO Cassette MD) (No.12/Ver.0/Set.1,Japan)", 0 ) -/* 13 */ GAME( 1981, cprogolf, decocass, cprogolf, cprogolf, decocass_state, decocass, ROT270, "Data East Corporation", "Tournament Pro Golf (DECO Cassette) (US)", 0 ) -/* */ GAME( 1981, cprogolfj, cprogolf, cprogolfj,cprogolf, decocass_state, decocass, ROT270, "Data East Corporation", "Tournament Pro Golf (DECO Cassette) (Japan)", 0 ) -/* 14 */ GAME( 1981, cdsteljn, decocass, cdsteljn, cdsteljn, decocass_state, cdsteljn, ROT270, "Data East Corporation", "DS Telejan (DECO Cassette) (Japan)", 0 ) -/* 15 */ GAME( 1981, cluckypo, decocass, cluckypo, cluckypo, decocass_state, decocass, ROT270, "Data East Corporation", "Lucky Poker (DECO Cassette) (US)", 0 ) -/* 16 */ GAME( 1981, ctisland, decocass, ctisland, ctisland, decocass_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette) (US) (set 1)", 0 ) -/* */ GAME( 1981, ctisland2, ctisland, ctisland, ctisland, decocass_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette) (US) (set 2)", 0 ) /* newer? has instructions in attract */ -/* */ GAME( 1981, ctisland3, ctisland, ctisland3,ctisland, decocass_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette) (Region D)", 0 ) /* region code 'D' unknown region */ +/* 09 */ GAME( 1981, csuperas, decocass, csuperas, csuperas, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Super Astro Fighter (DECO Cassette) (US)", 0 ) +/* 10 */ GAME( 1981, cocean1a, decocass, cocean1a, cocean1a, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Ocean to Ocean (Medal) (DECO Cassette MD) (No.10/Ver.1,Japan)", 0 ) /* no lever, 1P/2P buttons used to switch player, cocktail mode not emulated */ +/* */ GAME( 1981, cocean6b, cocean1a, cocean1a, cocean1a, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Ocean to Ocean (Medal) (DECO Cassette MD) (No.10/Ver.6,US)", 0 ) /* lever, 1P/2P buttons used to switch player, cocktail mode not emulated */ +/* 11 */ GAME( 1981, clocknch, decocass, clocknch, clocknch, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Lock'n'Chase (DECO Cassette) (US)", 0 ) +/* */ GAME( 1981, clocknchj, clocknch, clocknchj,clocknchj,decocass_type1_state, decocass, ROT270, "Data East Corporation", "Lock'n'Chase (DECO Cassette) (Japan)", 0 ) +/* 12 */ GAME( 1981, cfboy0a1, decocass, cfboy0a1, cfboy0a1, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Flash Boy (vertical) (DECO Cassette MD) (No.12/Ver.0/Set.1,Japan)", 0 ) +/* 13 */ GAME( 1981, cprogolf, decocass, cprogolf, cprogolf, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Tournament Pro Golf (DECO Cassette) (US)", 0 ) +/* */ GAME( 1981, cprogolfj, cprogolf, cprogolfj,cprogolf, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Tournament Pro Golf (DECO Cassette) (Japan)", 0 ) +/* 14 */ GAME( 1981, cdsteljn, decocass, cdsteljn, cdsteljn, decocass_type1_state, cdsteljn, ROT270, "Data East Corporation", "DS Telejan (DECO Cassette) (Japan)", 0 ) +/* 15 */ GAME( 1981, cluckypo, decocass, cluckypo, cluckypo, decocass_type1_state, decocass, ROT270, "Data East Corporation", "Lucky Poker (DECO Cassette) (US)", 0 ) +/* 16 */ GAME( 1981, ctisland, decocass, ctisland, ctisland, decocass_type1_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette) (US) (set 1)", 0 ) +/* */ GAME( 1981, ctisland2, ctisland, ctisland, ctisland, decocass_type1_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette) (US) (set 2)", 0 ) /* newer? has instructions in attract */ +/* */ GAME( 1981, ctisland3, ctisland, ctisland3,ctisland, decocass_type1_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette) (Region D)", 0 ) /* region code 'D' unknown region */ /* 17 */ // 1981.10 Bobbitto -/* 18 */ GAME( 1982, cexplore, decocass, cexplore, cexplore, decocass_state, decocass, ROT270, "Data East Corporation", "Explorer (DECO Cassette) (US)", MACHINE_NOT_WORKING ) -/* 19 */ GAME( 1982, cdiscon1, decocass, cdiscon1, cdiscon1, decocass_state, decocass, ROT270, "Data East Corporation", "Disco No.1 (DECO Cassette) (US)", 0 ) -/* */ GAME( 1982, csweetht, cdiscon1, cdiscon1, csweetht, decocass_state, decocass, ROT270, "Data East Corporation", "Sweet Heart (DECO Cassette) (US)", 0 ) -/* 20 */ GAME( 1982, ctornado, decocass, ctornado, ctornado, decocass_state, decocass, ROT270, "Data East Corporation", "Tornado (DECO Cassette) (US)", 0 ) -/* 21 */ GAME( 1982, cmissnx, decocass, cmissnx, cmissnx, decocass_state, decocass, ROT270, "Data East Corporation", "Mission-X (DECO Cassette) (US)", 0 ) -/* 22 */ GAME( 1982, cptennis, decocass, cptennis, cptennis, decocass_state, decocass, ROT270, "Data East Corporation", "Pro Tennis (DECO Cassette) (US)", 0 ) -/* */ GAME( 1982, cptennisj, cptennis, cptennis, cptennis, decocass_state, decocass, ROT270, "Data East Corporation", "Pro Tennis (DECO Cassette) (Japan)", 0 ) -/* 23 */ GAME( 1982, cprogolf18,cprogolf, cprogolfj,cprogolf, decocass_state, decocass, ROT270, "Data East Corporation", "18 Challenge Pro Golf (DECO Cassette) (Japan)", 0 ) // 1982.?? 18 Hole Pro Golf +/* 18 */ GAME( 1982, cexplore, decocass, cexplore, cexplore, decocass_type1_state, decocrom, ROT270, "Data East Corporation", "Explorer (DECO Cassette) (US)", 0 ) +/* 19 */ GAME( 1982, cdiscon1, decocass, decocass, cdiscon1, decocass_type2_state, decocass, ROT270, "Data East Corporation", "Disco No.1 (DECO Cassette) (US)", 0 ) +/* */ GAME( 1982, csweetht, cdiscon1, decocass, csweetht, decocass_type2_state, decocass, ROT270, "Data East Corporation", "Sweet Heart (DECO Cassette) (US)", 0 ) +/* 20 */ GAME( 1982, ctornado, decocass, decocass, ctornado, decocass_type2_state, decocass, ROT270, "Data East Corporation", "Tornado (DECO Cassette) (US)", 0 ) +/* 21 */ GAME( 1982, cmissnx, decocass, decocass, cmissnx, decocass_type2_state, decocass, ROT270, "Data East Corporation", "Mission-X (DECO Cassette) (US)", 0 ) +/* 22 */ GAME( 1982, cptennis, decocass, decocass, cptennis, decocass_type2_state, decocass, ROT270, "Data East Corporation", "Pro Tennis (DECO Cassette) (US)", 0 ) +/* */ GAME( 1982, cptennisj, cptennis, decocass, cptennis, decocass_type2_state, decocass, ROT270, "Data East Corporation", "Pro Tennis (DECO Cassette) (Japan)", 0 ) +/* 23 */ GAME( 1982, cprogolf18,cprogolf, cprogolfj,cprogolf, decocass_type1_state, decocass, ROT270, "Data East Corporation", "18 Challenge Pro Golf (DECO Cassette) (Japan)", 0 ) // 1982.?? 18 Hole Pro Golf /* 24 */ // 1982.07 Tsumego Kaisyou -/* 25 */ GAME( 1982, cadanglr, decocass, cfishing, cfishing, decocass_state, decocass, ROT270, "Data East Corporation", "Angler Dangler (DECO Cassette) (US)", 0 ) -/* 25 */ GAME( 1982, cfishing, cadanglr, cfishing, cfishing, decocass_state, decocass, ROT270, "Data East Corporation", "Fishing (DECO Cassette) (Japan)", 0 ) -/* 26 */ GAME( 1983, cbtime, decocass, cbtime, cbtime, decocass_state, decocass, ROT270, "Data East Corporation", "Burger Time (DECO Cassette) (US)", 0 ) -/* */ GAME( 1982, chamburger,cbtime, cbtime, cbtime, decocass_state, decocass, ROT270, "Data East Corporation", "Hamburger (DECO Cassette) (Japan)", 0 ) -/* 27 */ GAME( 1982, cburnrub, decocass, cburnrub, cburnrub, decocass_state, decocass, ROT270, "Data East Corporation", "Burnin' Rubber (DECO Cassette) (US) (set 1)", 0 ) /* large stylized red title (newer release?) */ -/* */ GAME( 1982, cburnrub2, cburnrub, cburnrub, cburnrub, decocass_state, decocass, ROT270, "Data East Corporation", "Burnin' Rubber (DECO Cassette) (US) (set 2)", 0 ) /* large monochrome title (original release?) */ -/* */ GAME( 1982, cburnrubj, cburnrub, cburnrub, cburnrub, decocass_state, decocass, ROT270, "Data East Corporation", "Burnin' Rubber (DECO Cassette) (Japan)", 0 ) /* large monochrome title (original release?) */ -/* */ GAME( 1982, cbnj, cburnrub, cburnrub, cburnrub, decocass_state, decocass, ROT270, "Data East Corporation", "Bump 'n' Jump (DECO Cassette) (US)", 0 ) /* name was changed from Burnin' Rubber to Bump 'n' Jump (newest release?) */ -/* 28 */ GAME( 1983, cgraplop, decocass, cgraplop, cgraplop, decocass_state, decocass, ROT270, "Data East Corporation", "Cluster Buster (DECO Cassette) (US)", 0 ) -/* */ GAME( 1983, cgraplopj, cgraplop, cgraplop, cgraplop, decocass_state, decocass, ROT270, "Data East Corporation", "Graplop (DECO Cassette) (Japan)", 0 ) -/* */ GAME( 1983, cgraplop2, cgraplop, cgraplop2,cgraplop, decocass_state, decocass, ROT270, "Data East Corporation", "Graplop (no title screen) (DECO Cassette) (US)", 0 ) /* before name was changed to Cluster Buster? */ -/* 29 */ GAME( 1983, clapapa, decocass, clapapa, clapapa, decocass_state, decocass, ROT270, "Data East Corporation", "Rootin' Tootin' / La-Pa-Pa (DECO Cassette) (US)" , 0) /* Displays 'La-Pa-Pa during attract */ -/* */ GAME( 1983, clapapa2, clapapa, clapapa, clapapa, decocass_state, decocass, ROT270, "Data East Corporation", "Rootin' Tootin' (DECO Cassette) (US)" , 0) /* Displays 'Rootin' Tootin' during attract */ -/* 30 */ GAME( 1983, cskater, decocass, cskater, cskater, decocass_state, decocass, ROT270, "Data East Corporation", "Skater (DECO Cassette) (Japan)", 0 ) -/* 31 */ GAME( 1983, cprobowl, decocass, cprobowl, cprobowl, decocass_state, decocass, ROT270, "Data East Corporation", "Pro Bowling (DECO Cassette) (US)", 0 ) -/* 32 */ GAME( 1983, cnightst, decocass, cnightst, cnightst, decocass_state, decocass, ROT270, "Data East Corporation", "Night Star (DECO Cassette) (US) (set 1)", 0 ) -/* */ GAME( 1983, cnightst2, cnightst, cnightst, cnightst, decocass_state, decocass, ROT270, "Data East Corporation", "Night Star (DECO Cassette) (US) (set 2)", 0 ) -/* 33 */ GAME( 1983, cpsoccer, decocass, cpsoccer, cpsoccer, decocass_state, decocass, ROT270, "Data East Corporation", "Pro Soccer (DECO Cassette) (US)", 0 ) -/* */ GAME( 1983, cpsoccerj, cpsoccer, cpsoccer, cpsoccer, decocass_state, decocass, ROT270, "Data East Corporation", "Pro Soccer (DECO Cassette) (Japan)", 0 ) -/* 34 */ GAME( 1983, csdtenis, decocass, csdtenis, csdtenis, decocass_state, decocass, ROT270, "Data East Corporation", "Super Doubles Tennis (DECO Cassette) (Japan)", MACHINE_WRONG_COLORS ) -/* 35 */ GAME( 1985, cflyball, decocass, cflyball, cflyball, decocass_state, decocass, ROT270, "Data East Corporation", "Flying Ball (DECO Cassette) (US)", 0 ) +/* 25 */ GAME( 1982, cadanglr, decocass, cfishing, cfishing, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Angler Dangler (DECO Cassette) (US)", 0 ) +/* 25 */ GAME( 1982, cfishing, cadanglr, cfishing, cfishing, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Fishing (DECO Cassette) (Japan)", 0 ) +/* 26 */ GAME( 1983, cbtime, decocass, cbtime, cbtime, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Burger Time (DECO Cassette) (US)", 0 ) +/* */ GAME( 1982, chamburger,cbtime, cbtime, cbtime, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Hamburger (DECO Cassette) (Japan)", 0 ) +/* 27 */ GAME( 1982, cburnrub, decocass, cburnrub, cburnrub, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Burnin' Rubber (DECO Cassette) (US) (set 1)", 0 ) /* large stylized red title (newer release?) */ +/* */ GAME( 1982, cburnrub2, cburnrub, cburnrub, cburnrub, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Burnin' Rubber (DECO Cassette) (US) (set 2)", 0 ) /* large monochrome title (original release?) */ +/* */ GAME( 1982, cburnrubj, cburnrub, cburnrub, cburnrub, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Burnin' Rubber (DECO Cassette) (Japan)", 0 ) /* large monochrome title (original release?) */ +/* */ GAME( 1982, cbnj, cburnrub, cburnrub, cburnrub, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Bump 'n' Jump (DECO Cassette) (US)", 0 ) /* name was changed from Burnin' Rubber to Bump 'n' Jump (newest release?) */ +/* 28 */ GAME( 1983, cgraplop, decocass, cgraplop, cgraplop, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Cluster Buster (DECO Cassette) (US)", 0 ) +/* */ GAME( 1983, cgraplopj, cgraplop, cgraplop, cgraplop, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Graplop (DECO Cassette) (Japan)", 0 ) +/* */ GAME( 1983, cgraplop2, cgraplop, cgraplop2,cgraplop, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Graplop (no title screen) (DECO Cassette) (US)", 0 ) /* before name was changed to Cluster Buster? */ +/* 29 */ GAME( 1983, clapapa, decocass, clapapa, clapapa, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Rootin' Tootin' / La-Pa-Pa (DECO Cassette) (US)" , 0) /* Displays 'La-Pa-Pa during attract */ +/* */ GAME( 1983, clapapa2, clapapa, clapapa, clapapa, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Rootin' Tootin' (DECO Cassette) (US)" , 0) /* Displays 'Rootin' Tootin' during attract */ +/* 30 */ GAME( 1983, cskater, decocass, cskater, cskater, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Skater (DECO Cassette) (Japan)", 0 ) +/* 31 */ GAME( 1983, cprobowl, decocass, cprobowl, cprobowl, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Pro Bowling (DECO Cassette) (US)", 0 ) +/* 32 */ GAME( 1983, cnightst, decocass, cnightst, cnightst, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Night Star (DECO Cassette) (US) (set 1)", 0 ) +/* */ GAME( 1983, cnightst2, cnightst, cnightst, cnightst, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Night Star (DECO Cassette) (US) (set 2)", 0 ) +/* 33 */ GAME( 1983, cpsoccer, decocass, cpsoccer, cpsoccer, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Pro Soccer (DECO Cassette) (US)", 0 ) +/* */ GAME( 1983, cpsoccerj, cpsoccer, cpsoccer, cpsoccer, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Pro Soccer (DECO Cassette) (Japan)", 0 ) +/* 34 */ GAME( 1983, csdtenis, decocass, csdtenis, csdtenis, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Super Doubles Tennis (DECO Cassette) (Japan)", MACHINE_WRONG_COLORS ) +/* 35 */ GAME( 1985, cflyball, decocass, decocass, cflyball, decocass_nodong_state,decocass, ROT270, "Data East Corporation", "Flying Ball (DECO Cassette) (US)", 0 ) /* 36 */ // 1984.04 Genesis/Boomer Rang'r -/* 37 */ GAME( 1983, czeroize, decocass, czeroize, czeroize, decocass_state, decocass, ROT270, "Data East Corporation", "Zeroize (DECO Cassette) (US)", 0 ) -/* 38 */ GAME( 1984, cscrtry, decocass, type4, cscrtry, decocass_state, decocass, ROT270, "Data East Corporation", "Scrum Try (DECO Cassette) (US) (set 1)", 0 ) -/* */ GAME( 1984, cscrtry2, cscrtry, type4, cscrtry, decocass_state, decocass, ROT270, "Data East Corporation", "Scrum Try (DECO Cassette) (US) (set 2)", 0 ) -/* 39 */ GAME( 1984, cppicf, decocass, cppicf, cppicf, decocass_state, decocass, ROT270, "Data East Corporation", "Peter Pepper's Ice Cream Factory (DECO Cassette) (US) (set 1)", 0 ) -/* */ GAME( 1984, cppicf2, cppicf, cppicf, cppicf, decocass_state, decocass, ROT270, "Data East Corporation", "Peter Pepper's Ice Cream Factory (DECO Cassette) (US) (set 2)", 0 ) -/* 40 */ GAME( 1984, cfghtice, decocass, cfghtice, cfghtice, decocass_state, decocass, ROT270, "Data East Corporation", "Fighting Ice Hockey (DECO Cassette) (US)", 0 ) -/* 41 */ GAME( 1984, coozumou, decocass, type4, cscrtry, decocass_state, decocass, ROT270, "Data East Corporation", "Oozumou - The Grand Sumo (DECO Cassette) (Japan)", 0 ) +/* 37 */ GAME( 1983, czeroize, decocass, czeroize, czeroize, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Zeroize (DECO Cassette) (US)", 0 ) +/* 38 */ GAME( 1984, cscrtry, decocass, decocass, cscrtry, decocass_type4_state, decocass, ROT270, "Data East Corporation", "Scrum Try (DECO Cassette) (US) (set 1)", 0 ) +/* */ GAME( 1984, cscrtry2, cscrtry, decocass, cscrtry, decocass_type4_state, decocass, ROT270, "Data East Corporation", "Scrum Try (DECO Cassette) (US) (set 2)", 0 ) +/* 39 */ GAME( 1984, cppicf, decocass, cppicf, cppicf, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Peter Pepper's Ice Cream Factory (DECO Cassette) (US) (set 1)", 0 ) +/* */ GAME( 1984, cppicf2, cppicf, cppicf, cppicf, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Peter Pepper's Ice Cream Factory (DECO Cassette) (US) (set 2)", 0 ) +/* 40 */ GAME( 1984, cfghtice, decocass, cfghtice, cfghtice, decocass_type3_state, decocass, ROT270, "Data East Corporation", "Fighting Ice Hockey (DECO Cassette) (US)", 0 ) +/* 41 */ GAME( 1984, coozumou, decocass, decocass, cscrtry, decocass_type4_state, decocass, ROT270, "Data East Corporation", "Oozumou - The Grand Sumo (DECO Cassette) (Japan)", 0 ) /* 42 */ // 1984.08 Hellow Gateball // not a typo, this is official spelling /* 43 */ // 1984.08 Yellow Cab -/* 44 */ GAME( 1985, cbdash, decocass, cbdash, cbdash, decocass_state, decocass, ROT270, "Data East Corporation", "Boulder Dash (DECO Cassette) (US)", 0 ) +/* 44 */ GAME( 1985, cbdash, decocass, decocass, cbdash, decocass_type5_state, decocass, ROT270, "Data East Corporation", "Boulder Dash (DECO Cassette) (US)", 0 ) /* UX7 */ // 1984.12 Tokyo MIE Clinic/Tokyo MIE Shinryoujo /* UX8 */ // 1985.01 Tokyo MIE Clinic/Tokyo MIE Shinryoujo Part 2 /* UX9 */ // 1985.05 Geinoujin Shikaku Shiken + +/* xx */ GAME( 2008, decomult, decocass, decocass, decocass, decocass_widel_state, decocass, ROT270, "bootleg (David Widel)", "Deco Cassette System Multigame (ROM based)", 0 ) + diff --git a/src/mame/drivers/decwritr.cpp b/src/mame/drivers/decwritr.cpp index 9b881fff4e7..c38178a1cdc 100644 --- a/src/mame/drivers/decwritr.cpp +++ b/src/mame/drivers/decwritr.cpp @@ -439,4 +439,4 @@ ROM_END // DRIVERS //************************************************************************** /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, la120, 0, 0, la120, la120, decwriter_state, 0, "Digital Equipment Corporation", "DECwriter III (LA120)", MACHINE_NO_SOUND | MACHINE_IS_SKELETON | MACHINE_NOT_WORKING ) +COMP( 1978, la120, 0, 0, la120, la120, decwriter_state, 0, "Digital Equipment Corporation", "DECwriter III (LA120)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/dietgo.cpp b/src/mame/drivers/dietgo.cpp index 263cf340431..7afb407d721 100644 --- a/src/mame/drivers/dietgo.cpp +++ b/src/mame/drivers/dietgo.cpp @@ -65,7 +65,7 @@ static ADDRESS_MAP_START( dietgo_map, AS_PROGRAM, 16, dietgo_state ) AM_RANGE(0x380000, 0x38ffff) AM_RAM // mainram ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, dietgo_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, dietgo_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/dmv.cpp b/src/mame/drivers/dmv.cpp index 2d0e62d98ed..169a292c672 100644 --- a/src/mame/drivers/dmv.cpp +++ b/src/mame/drivers/dmv.cpp @@ -554,7 +554,7 @@ WRITE8_MEMBER(dmv_state::kb_mcu_port2_w) m_slot7->keyint_w(BIT(data, 4)); } -static ADDRESS_MAP_START( upd7220_map, AS_0, 16, dmv_state ) +static ADDRESS_MAP_START( upd7220_map, 0, 16, dmv_state ) ADDRESS_MAP_GLOBAL_MASK(0x1ffff) AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram") ADDRESS_MAP_END @@ -740,7 +740,7 @@ static MACHINE_CONFIG_START( dmv ) // devices MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL_5MHz/2) // unk clock - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(dmv_state, hgdc_display_pixels) MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(dmv_state, hgdc_draw_text) diff --git a/src/mame/drivers/dreamwld.cpp b/src/mame/drivers/dreamwld.cpp index d63e70cd1de..c5e19c19f72 100644 --- a/src/mame/drivers/dreamwld.cpp +++ b/src/mame/drivers/dreamwld.cpp @@ -425,12 +425,12 @@ READ32_MEMBER(dreamwld_state::dreamwld_protdata_r) return dat << 24; } -static ADDRESS_MAP_START( oki1_map, AS_0, 8, dreamwld_state ) +static ADDRESS_MAP_START( oki1_map, 0, 8, dreamwld_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("oki1bank") ADDRESS_MAP_END -static ADDRESS_MAP_START( oki2_map, AS_0, 8, dreamwld_state ) +static ADDRESS_MAP_START( oki2_map, 0, 8, dreamwld_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("oki2bank") ADDRESS_MAP_END @@ -819,7 +819,7 @@ static MACHINE_CONFIG_START( baryon ) MCFG_OKIM6295_ADD("oki1", XTAL_32MHz/32, PIN7_LOW) /* 1MHz verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MACHINE_CONFIG_END @@ -833,7 +833,7 @@ static MACHINE_CONFIG_DERIVED( dreamwld, baryon ) MCFG_OKIM6295_ADD("oki2", XTAL_32MHz/32, PIN7_LOW) /* 1MHz verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MACHINE_CONFIG_END diff --git a/src/mame/drivers/dunhuang.cpp b/src/mame/drivers/dunhuang.cpp index 3c9744ea225..aac431e18a4 100644 --- a/src/mame/drivers/dunhuang.cpp +++ b/src/mame/drivers/dunhuang.cpp @@ -523,7 +523,7 @@ static ADDRESS_MAP_START( dunhuang_io_map, AS_IO, 8, dunhuang_state ) AM_RANGE( 0x0098, 0x0098 ) AM_DEVWRITE("ay8910", ay8910_device, address_w ) ADDRESS_MAP_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, dunhuang_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, dunhuang_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/dynduke.cpp b/src/mame/drivers/dynduke.cpp index cd33836e22a..3cf395b3706 100644 --- a/src/mame/drivers/dynduke.cpp +++ b/src/mame/drivers/dynduke.cpp @@ -137,7 +137,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dynduke_state ) AM_RANGE(0x0000, 0xffff) AM_DEVREAD("sei80bu", sei80bu_device, data_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( sound_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, dynduke_state ) +static ADDRESS_MAP_START( sound_decrypted_opcodes_map, AS_OPCODES, 8, dynduke_state ) AM_RANGE(0x0000, 0xffff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/elwro800.cpp b/src/mame/drivers/elwro800.cpp index 57eb89e1666..78fdeb8f573 100644 --- a/src/mame/drivers/elwro800.cpp +++ b/src/mame/drivers/elwro800.cpp @@ -373,7 +373,7 @@ static ADDRESS_MAP_START(elwro800_io, AS_IO, 8, elwro800_state) AM_RANGE(0x0000, 0xffff) AM_READWRITE(elwro800jr_io_r, elwro800jr_io_w) ADDRESS_MAP_END -static ADDRESS_MAP_START(elwro800_m1, AS_DECRYPTED_OPCODES, 8, elwro800_state) +static ADDRESS_MAP_START(elwro800_m1, AS_OPCODES, 8, elwro800_state) AM_RANGE(0x0066, 0x0066) AM_READ(nmi_r) AM_RANGE(0x0000, 0x1fff) AM_DEVICE("bank1", address_map_bank_device, amap8) AM_RANGE(0x2000, 0x3fff) AM_DEVICE("bank2", address_map_bank_device, amap8) diff --git a/src/mame/drivers/expro02.cpp b/src/mame/drivers/expro02.cpp index 691fcd9b5d1..c52b2673535 100644 --- a/src/mame/drivers/expro02.cpp +++ b/src/mame/drivers/expro02.cpp @@ -798,7 +798,7 @@ static ADDRESS_MAP_START( smissw_map, AS_PROGRAM, 16, expro02_state ) AM_RANGE(0xf00000, 0xf00001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) /* fantasia, missw96 */ ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, expro02_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, expro02_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -922,7 +922,7 @@ static MACHINE_CONFIG_START( expro02 ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", 12000000/6, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -961,7 +961,7 @@ static MACHINE_CONFIG_DERIVED( supmodel, comad_noview2 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(supmodel_map) MCFG_OKIM6295_REPLACE("oki", 1584000, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -979,7 +979,7 @@ static MACHINE_CONFIG_DERIVED( galhustl, comad_noview2 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(galhustl_map) MCFG_OKIM6295_REPLACE("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SCREEN_MODIFY("screen") @@ -991,7 +991,7 @@ static MACHINE_CONFIG_DERIVED( zipzap, comad_noview2 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(zipzap_map) MCFG_OKIM6295_REPLACE("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SCREEN_MODIFY("screen") // doesn't work with original kaneko_spr implementation diff --git a/src/mame/drivers/flicker.cpp b/src/mame/drivers/flicker.cpp index 6a776a3bc21..7abe2d784f2 100644 --- a/src/mame/drivers/flicker.cpp +++ b/src/mame/drivers/flicker.cpp @@ -48,7 +48,7 @@ private: }; -static ADDRESS_MAP_START( flicker_rom, AS_DECRYPTED_OPCODES, 8, flicker_state ) +static ADDRESS_MAP_START( flicker_rom, AS_OPCODES, 8, flicker_state ) AM_RANGE(0x0000, 0x03FF) AM_ROM AM_REGION("maincpu", 0) ADDRESS_MAP_END diff --git a/src/mame/drivers/freekick.cpp b/src/mame/drivers/freekick.cpp index 0b2631af29a..c46b871b910 100644 --- a/src/mame/drivers/freekick.cpp +++ b/src/mame/drivers/freekick.cpp @@ -217,7 +217,7 @@ static ADDRESS_MAP_START( pbillrd_map, AS_PROGRAM, 8, freekick_state ) AM_RANGE(0xfc03, 0xfc03) AM_DEVWRITE("sn4", sn76489a_device, write) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, freekick_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, freekick_state ) AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") ADDRESS_MAP_END diff --git a/src/mame/drivers/gaelco.cpp b/src/mame/drivers/gaelco.cpp index fee5dc06cc1..b316ed27026 100644 --- a/src/mame/drivers/gaelco.cpp +++ b/src/mame/drivers/gaelco.cpp @@ -186,7 +186,7 @@ static ADDRESS_MAP_START( thoop_map, AS_PROGRAM, 16, gaelco_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, gaelco_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, gaelco_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -565,7 +565,7 @@ static MACHINE_CONFIG_START( maniacsq ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -598,7 +598,7 @@ static MACHINE_CONFIG_START( squash ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -631,7 +631,7 @@ static MACHINE_CONFIG_START( thoop ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp index c66dbccbd86..64b3d9816ef 100644 --- a/src/mame/drivers/galaxian.cpp +++ b/src/mame/drivers/galaxian.cpp @@ -1611,7 +1611,7 @@ static ADDRESS_MAP_START( mooncrst_map_base, AS_PROGRAM, 8, galaxian_state ) AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( moonqsr_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, galaxian_state ) +static ADDRESS_MAP_START( moonqsr_decrypted_opcodes_map, AS_OPCODES, 8, galaxian_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END @@ -2026,7 +2026,7 @@ static ADDRESS_MAP_START( mshuttle_map, AS_PROGRAM, 8, galaxian_state ) AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( mshuttle_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, galaxian_state ) +static ADDRESS_MAP_START( mshuttle_decrypted_opcodes_map, AS_OPCODES, 8, galaxian_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END @@ -4347,10 +4347,7 @@ static INPUT_PORTS_START( froggeram ) PORT_DIPSETTING( 0x00, "A 1/1 B 1/1" ) PORT_DIPSETTING( 0x08, "A 2/1 B 2/1" ) PORT_DIPSETTING( 0x04, "A 1/1 B 2/1" ) - PORT_DIPUNKNOWN( 0x10, 0x00 ) - PORT_DIPUNKNOWN( 0x20, 0x00 ) - PORT_DIPUNKNOWN( 0x40, 0x00 ) - PORT_DIPUNKNOWN( 0x80, 0x00 ) + PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN3") /* need for some PPI accesses */ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) diff --git a/src/mame/drivers/galgames.cpp b/src/mame/drivers/galgames.cpp index 4e9801eea50..f915a2eb2e8 100644 --- a/src/mame/drivers/galgames.cpp +++ b/src/mame/drivers/galgames.cpp @@ -277,7 +277,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_PROGRAM) const override { return (spacenum == AS_PROGRAM) ? &m_space_config: nullptr; } + virtual std::vector> memory_space_config() const override; address_space_config m_space_config; address_space *m_space; @@ -300,6 +300,13 @@ protected: bool m_is_ram_active; }; +std::vector> galgames_slot_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_space_config) + }; +} + // device type definition DEFINE_DEVICE_TYPE(GALGAMES_SLOT, galgames_slot_device, "starpak_slot", "Galaxy Games Slot") diff --git a/src/mame/drivers/galpanic.cpp b/src/mame/drivers/galpanic.cpp index 155a36a3cfe..82442e0ca0d 100644 --- a/src/mame/drivers/galpanic.cpp +++ b/src/mame/drivers/galpanic.cpp @@ -157,7 +157,7 @@ static ADDRESS_MAP_START( galpanica_map, AS_PROGRAM, 16, galpanic_state ) AM_RANGE(0xe00000, 0xe00015) AM_DEVREADWRITE("calc1_mcu", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( galpanic_oki_map, AS_0, 8, galpanic_state ) +static ADDRESS_MAP_START( galpanic_oki_map, 0, 8, galpanic_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -262,7 +262,7 @@ static MACHINE_CONFIG_START( galpanic ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", XTAL_12MHz/6, PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, galpanic_oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, galpanic_oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/gimix.cpp b/src/mame/drivers/gimix.cpp index 73ed134221f..a73c4cdabb8 100644 --- a/src/mame/drivers/gimix.cpp +++ b/src/mame/drivers/gimix.cpp @@ -684,4 +684,4 @@ ROM_START( gimix ) ROM_LOAD( "gimixhd.h11", 0x000000, 0x001000, CRC(35c12201) SHA1(51ac9052f9757d79c7f5bd3aa5d8421e98cfcc37) ) ROM_END -COMP( 1980, gimix, 0, 0, gimix, gimix, gimix_state, 0, "Gimix", "Gimix 6809 System", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1980, gimix, 0, 0, gimix, gimix, gimix_state, 0, "Gimix", "Gimix 6809 System", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/glass.cpp b/src/mame/drivers/glass.cpp index a20990f28de..7ff320ec5f8 100644 --- a/src/mame/drivers/glass.cpp +++ b/src/mame/drivers/glass.cpp @@ -100,7 +100,7 @@ static ADDRESS_MAP_START( glass_map, AS_PROGRAM, 16, glass_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, glass_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, glass_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -224,7 +224,7 @@ static MACHINE_CONFIG_START( glass ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) /* 1MHz Resonator & pin 7 high verified on PCB */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp index eb429ce4450..358bbd6f7be 100644 --- a/src/mame/drivers/goldstar.cpp +++ b/src/mame/drivers/goldstar.cpp @@ -479,7 +479,7 @@ ADDRESS_MAP_END E1: W Reels enable/disable register */ -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, goldstar_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, goldstar_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp index 35f2ef92094..85a84f8c2e1 100644 --- a/src/mame/drivers/hh_sm510.cpp +++ b/src/mame/drivers/hh_sm510.cpp @@ -1,14 +1,14 @@ // license:BSD-3-Clause // copyright-holders:hap, Sean Riddle -// thanks-to:Igor +// thanks-to:Igor, ChoccyHobNob, RColtrane /*************************************************************************** Sharp SM5xx family handhelds. TODO: - - improve svg screen for gnw_mc25, gnw_eg26, gnw_jr55, gnw_mw56, exospace - - svg lcd screen background/foreground (not supported in core), - or should it be for external artwork only? + - improve LCD segments in SVGs for: gnw_mc25, gnw_eg26, exospace + - SVG background/foreground vector graphics where possible. Doesn't apply to eg. the + Konami games where MAME's SVG renderer needs to add support for embedded images. - confirm gnw_mc25/gnw_eg26 rom (dumped from Soviet clone, but pretty confident that it's same) ***************************************************************************/ @@ -853,13 +853,13 @@ static MACHINE_CONFIG_START( jr55 ) /* video hardware */ MCFG_SCREEN_SVG_ADD("screen_top", "svg_top") MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_SIZE(1920/2, 1225/2) - MCFG_SCREEN_VISIBLE_AREA(0, 1920/2-1, 0, 1225/2-1) + MCFG_SCREEN_SIZE(1920/2, 1229/2) + MCFG_SCREEN_VISIBLE_AREA(0, 1920/2-1, 0, 1229/2-1) MCFG_SCREEN_SVG_ADD("screen_bottom", "svg_bottom") MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_SIZE(1920/2, 1261/2) - MCFG_SCREEN_VISIBLE_AREA(0, 1920/2-1, 0, 1261/2-1) + MCFG_SCREEN_SIZE(1920/2, 1238/2) + MCFG_SCREEN_VISIBLE_AREA(0, 1920/2-1, 0, 1238/2-1) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1)) MCFG_DEFAULT_LAYOUT(layout_gnw_dualv) @@ -935,13 +935,13 @@ static MACHINE_CONFIG_START( mw56 ) /* video hardware */ MCFG_SCREEN_SVG_ADD("screen_left", "svg_left") MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_SIZE(2087/2, 1440/2) - MCFG_SCREEN_VISIBLE_AREA(0, 2087/2-1, 0, 1440/2-1) + MCFG_SCREEN_SIZE(2258/2, 1440/2) + MCFG_SCREEN_VISIBLE_AREA(0, 2258/2-1, 0, 1440/2-1) MCFG_SCREEN_SVG_ADD("screen_right", "svg_right") MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_SIZE(2079/2, 1440/2) - MCFG_SCREEN_VISIBLE_AREA(0, 2079/2-1, 0, 1440/2-1) + MCFG_SCREEN_SIZE(2261/2, 1440/2) + MCFG_SCREEN_VISIBLE_AREA(0, 2261/2-1, 0, 1440/2-1) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1)) MCFG_DEFAULT_LAYOUT(layout_gnw_dualh) @@ -1101,8 +1101,8 @@ static MACHINE_CONFIG_START( ml102 ) /* video hardware */ MCFG_SCREEN_SVG_ADD("screen", "svg") MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_SIZE(1759, 1080) - MCFG_SCREEN_VISIBLE_AREA(0, 1759-1, 0, 1080-1) + MCFG_SCREEN_SIZE(1647, 1080) + MCFG_SCREEN_VISIBLE_AREA(0, 1647-1, 0, 1080-1) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1)) MCFG_DEFAULT_LAYOUT(layout_svg) @@ -1227,8 +1227,8 @@ ROM_START( ktopgun ) // except for filler/unused bytes, ROM listing in patent US ROM_REGION( 0x1000, "maincpu", 0 ) ROM_LOAD( "cms54c_kms598", 0x0000, 0x1000, CRC(50870b35) SHA1(cda1260c2e1c180995eced04b7d7ff51616dcef5) ) - ROM_REGION( 423317, "svg", 0) - ROM_LOAD( "ktopgun.svg", 0, 423317, CRC(1e341717) SHA1(74f4ae3fa0e4aacfda76d46753a5a06f115d221f) ) + ROM_REGION( 423308, "svg", 0) + ROM_LOAD( "ktopgun.svg", 0, 423308, CRC(1beb2f6c) SHA1(0802dc10b7a28ab1143dde083816e5cea6879a6b) ) ROM_END @@ -1239,8 +1239,8 @@ ROM_START( kcontra ) // except for filler/unused bytes, ROM listing in patent US ROM_REGION( 0x100, "maincpu:melody", 0 ) ROM_LOAD( "kms73b_kms773.melody", 0x000, 0x100, CRC(23d02b99) SHA1(703938e496db0eeacd14fe7605d4b5c39e0a5bc8) ) - ROM_REGION( 710430, "svg", 0) - ROM_LOAD( "kcontra.svg", 0, 710430, CRC(66cfc3a2) SHA1(bd38d62bb14321dfec2f99c1cd9346fb5f1fd856) ) + ROM_REGION( 710421, "svg", 0) + ROM_LOAD( "kcontra.svg", 0, 710421, CRC(7926115d) SHA1(5ed98f2a39f43b06e9670b85b7e788466c5b9f36) ) ROM_END @@ -1251,8 +1251,8 @@ ROM_START( ktmnt ) // except for filler/unused bytes, ROM listing in patent US51 ROM_REGION( 0x100, "maincpu:melody", 0 ) ROM_LOAD( "kms73b_kms774.melody", 0x000, 0x100, CRC(8270d626) SHA1(bd91ca1d5cd7e2a62eef05c0033b19dcdbe441ca) ) - ROM_REGION( 607424, "svg", 0) - ROM_LOAD( "ktmnt.svg", 0, 607424, CRC(54ce0f2e) SHA1(1cd2d4c3026e8693f234ddfbbbe5f24311e5981d) ) + ROM_REGION( 607415, "svg", 0) + ROM_LOAD( "ktmnt.svg", 0, 607415, CRC(508cca0d) SHA1(e295abf39a33a5d4d6a41ad8f294d73857262494) ) ROM_END @@ -1263,8 +1263,8 @@ ROM_START( kgradius ) ROM_REGION( 0x100, "maincpu:melody", 0 ) ROM_LOAD( "kms73b_kms771.melody", 0x000, 0x100, CRC(4c586b73) SHA1(14c5ab2898013a577f678970a648c374749cc66d) ) - ROM_REGION( 628695, "svg", 0) - ROM_LOAD( "kgradius.svg", 0, 628695, CRC(56ac8ee8) SHA1(c47190e7aaebbe84ed1ad55a8e88f5ebb18f939b) ) + ROM_REGION( 628686, "svg", 0) + ROM_LOAD( "kgradius.svg", 0, 628686, CRC(eb0c8778) SHA1(f58e206c443f0514dad988dc04a011f3e4b3ecf5) ) ROM_END @@ -1275,8 +1275,8 @@ ROM_START( kloneran ) ROM_REGION( 0x100, "maincpu:melody", 0 ) ROM_LOAD( "kms73b_kms781.melody", 0x000, 0x100, CRC(a393de36) SHA1(55089f04833ccb318524ab2b584c4817505f4019) ) - ROM_REGION( 630184, "svg", 0) - ROM_LOAD( "kloneran.svg", 0, 630184, CRC(9b254520) SHA1(c9c85df44cc16f59f25df418b2e1aeba9f2f470c) ) + ROM_REGION( 630174, "svg", 0) + ROM_LOAD( "kloneran.svg", 0, 630174, CRC(39254bd1) SHA1(c00605e818e9327cee63d2438be011510ec8ec73) ) ROM_END @@ -1284,16 +1284,16 @@ ROM_START( gnw_mc25 ) ROM_REGION( 0x1000, "maincpu", 0 ) ROM_LOAD( "mc-25", 0x0000, 0x0740, BAD_DUMP CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) // dumped from Soviet clone - ROM_REGION( 100018, "svg", 0) - ROM_LOAD( "gnw_mc25.svg", 0, 100018, CRC(bcd01de3) SHA1(2c7a9da248f96ac11e794a46942a3e420d1e854b) ) + ROM_REGION( 99701, "svg", 0) + ROM_LOAD( "gnw_mc25.svg", 0, 99701, CRC(390f53fb) SHA1(8eba84b7b084c3a1b26840a93030eeaf7ee89227) ) ROM_END ROM_START( gnw_eg26 ) ROM_REGION( 0x1000, "maincpu", 0 ) ROM_LOAD( "eg-26", 0x0000, 0x0740, BAD_DUMP CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) // dumped from Soviet clone - ROM_REGION( 100529, "svg", 0) - ROM_LOAD( "gnw_eg26.svg", 0, 100529, CRC(055c6b47) SHA1(66f78cd705bc982e92c950a7bd685c681c52a5e7) ) + ROM_REGION( 100220, "svg", 0) + ROM_LOAD( "gnw_eg26.svg", 0, 100220, CRC(b53664a3) SHA1(4d45f4f78a9c6d3ee1e6bdac64cbb1fbea5ba4ba) ) ROM_END ROM_START( nupogodi ) @@ -1301,15 +1301,15 @@ ROM_START( nupogodi ) ROM_LOAD( "nupogodi.bin", 0x0000, 0x0740, CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) ROM_REGION( 123824, "svg", 0) - ROM_LOAD( "nupogodi.svg", 0, 123824, CRC(fc1ccab0) SHA1(ef81b5119a62dc68486db85a19ac9db5ef01778e) ) + ROM_LOAD( "nupogodi.svg", 0, 123824, CRC(fb227607) SHA1(7b41c83a4b1494d76db18ff649541629de9bdc18) ) ROM_END ROM_START( exospace ) ROM_REGION( 0x1000, "maincpu", 0 ) ROM_LOAD( "exospace.bin", 0x0000, 0x0740, CRC(553e2b09) SHA1(2b74f8437b881fbb62b61f25435a5bfc66872a9a) ) - ROM_REGION( 63114, "svg", 0) - ROM_LOAD( "exospace.svg", 0, 63114, CRC(64a24c67) SHA1(54c77615a748e44c8c6217583c7567a152dcf21f) ) + ROM_REGION( 63138, "svg", 0) + ROM_LOAD( "exospace.svg", 0, 63138, CRC(a17dad7e) SHA1(714bc200b81c8e6bf0c07c0eabf85442a1791e58) ) ROM_END @@ -1317,11 +1317,11 @@ ROM_START( gnw_dm53 ) ROM_REGION( 0x1000, "maincpu", 0 ) ROM_LOAD( "dm-53_cms54c_cms565", 0x0000, 0x1000, CRC(e21fc0f5) SHA1(3b65ccf9f98813319410414e11a3231b787cdee6) ) - ROM_REGION( 124249, "svg_top", 0) - ROM_LOAD( "gnw_dm53_top.svg", 0, 124249, CRC(d85ec1cc) SHA1(19828945c09defa3efc47eea8fa6128a0e5e9a2a) ) + ROM_REGION( 124103, "svg_top", 0) + ROM_LOAD( "gnw_dm53_top.svg", 0, 124103, CRC(53741c86) SHA1(01aa0e97b2ad1bed66a71aeef4426e3f1a42da84) ) - ROM_REGION( 108485, "svg_bottom", 0) - ROM_LOAD( "gnw_dm53_bottom.svg", 0, 108485, CRC(c5649701) SHA1(b5bd436015927503a8e647a5d02bd9c87acd1e55) ) + ROM_REGION( 108339, "svg_bottom", 0) + ROM_LOAD( "gnw_dm53_bottom.svg", 0, 108339, CRC(b88bf17d) SHA1(105c978722c00c14301661e5ef5051fdfc33e878) ) ROM_END @@ -1329,11 +1329,11 @@ ROM_START( gnw_jr55 ) ROM_REGION( 0x1000, "maincpu", 0 ) ROM_LOAD( "jr-55_cms54c_kms560", 0x0000, 0x1000, CRC(46aed0ae) SHA1(72f75ccbd84aea094148c872fc7cc1683619a18a) ) - ROM_REGION( 207510, "svg_top", 0) - ROM_LOAD( "gnw_jr55_top.svg", 0, 207510, CRC(598cc4b1) SHA1(ec485b73b8dcd521c236803d50c80203e0f29330) ) + ROM_REGION( 261499, "svg_top", 0) + ROM_LOAD( "gnw_jr55_top.svg", 0, 261499, CRC(3e48708f) SHA1(fc35bd4022327f2061d054c23316d2d6412b25b7) ) - ROM_REGION( 200145, "svg_bottom", 0) - ROM_LOAD( "gnw_jr55_bottom.svg", 0, 200145, CRC(07285db4) SHA1(49e1fc394750457cab0fb3297b12957af685ac2d) ) + ROM_REGION( 389658, "svg_bottom", 0) + ROM_LOAD( "gnw_jr55_bottom.svg", 0, 389658, CRC(0a5eb4b2) SHA1(498aded148401a624a4ed215126e0d0b27d25d44) ) ROM_END @@ -1341,11 +1341,11 @@ ROM_START( gnw_mw56 ) ROM_REGION( 0x1000, "maincpu", 0 ) ROM_LOAD( "mw-56", 0x0000, 0x1000, CRC(385e59da) SHA1(2f79281bdf2f2afca2fb5bd7b9a3beeffc9c4eb7) ) - ROM_REGION( 100251, "svg_left", 0) - ROM_LOAD( "gnw_mw56_left.svg", 0, 100251, CRC(316b2516) SHA1(41b5a1e9ceb919bc8b0b1dfb0f8f21cda6fee665) ) + ROM_REGION( 165537, "svg_left", 0) + ROM_LOAD( "gnw_mw56_left.svg", 0, 165537, CRC(42fe7fb8) SHA1(91bfb64a1a9f84696acc5cc8c6e7faced5301016) ) - ROM_REGION( 85767, "svg_right", 0) - ROM_LOAD( "gnw_mw56_right.svg", 0, 85767, CRC(8210e6e0) SHA1(d42d47cea5a5a4d6c979ba7b06b646320a458290) ) + ROM_REGION( 224535, "svg_right", 0) + ROM_LOAD( "gnw_mw56_right.svg", 0, 224535, CRC(c87fbf47) SHA1(07c3676aaec42ddfd73d3331de415627bd8d0093) ) ROM_END @@ -1353,8 +1353,8 @@ ROM_START( gnw_dj101 ) ROM_REGION( 0x1000, "maincpu", 0 ) ROM_LOAD( "dj-101", 0x0000, 0x1000, CRC(8dcfb5d1) SHA1(e0ef578e9362eb9a3cab631376df3cf55978f2de) ) - ROM_REGION( 277252, "svg", 0) - ROM_LOAD( "gnw_dj101.svg", 0, 277252, CRC(d7a3832d) SHA1(59e603d9a3ba503ebbf94574d6544cb5095a0df4) ) + ROM_REGION( 276947, "svg", 0) + ROM_LOAD( "gnw_dj101.svg", 0, 276947, CRC(9e1eb311) SHA1(f5004626549ea1f60fae87751bcad375580b7423) ) ROM_END @@ -1362,8 +1362,8 @@ ROM_START( gnw_ml102 ) ROM_REGION( 0x1000, "maincpu", 0 ) ROM_LOAD( "ml-102_cms54c_kms577", 0x0000, 0x1000, CRC(c1128dea) SHA1(8647e36f43a0e37756a3c7b6a3f08d4c8243f1cc) ) - ROM_REGION( 300571, "svg", 0) - ROM_LOAD( "gnw_ml102.svg", 0, 300571, CRC(8d8be5a9) SHA1(ee3a761ee956b86c064c83a15e4b833f83c23520) ) + ROM_REGION( 359508, "svg", 0) + ROM_LOAD( "gnw_ml102.svg", 0, 359508, CRC(04d42f75) SHA1(06d0dd5a6c65eda581746379ccdcf4bc02e26f83) ) ROM_END @@ -1374,8 +1374,8 @@ ROM_START( gnw_bx301 ) ROM_REGION( 0x100, "maincpu:melody", 0 ) ROM_LOAD( "bx-301_kms73b_kms744.melody", 0x000, 0x100, CRC(439d943d) SHA1(52880df15ec7513f96482f455ef3d9778aa24750) ) - ROM_REGION( 258514, "svg", 0) - ROM_LOAD( "gnw_bx301.svg", 0, 258514, CRC(7b251101) SHA1(002e41374517f1fd8cecd66a2b2338aac736f319) ) + ROM_REGION( 258505, "svg", 0) + ROM_LOAD( "gnw_bx301.svg", 0, 258505, CRC(b2416cf9) SHA1(c31789e86baad1e2f6b070865d08d9298cf54f69) ) ROM_END diff --git a/src/mame/drivers/highvdeo.cpp b/src/mame/drivers/highvdeo.cpp index 6fa7329ea31..11a49be7062 100644 --- a/src/mame/drivers/highvdeo.cpp +++ b/src/mame/drivers/highvdeo.cpp @@ -1119,7 +1119,7 @@ INTERRUPT_GEN_MEMBER(highvdeo_state::vblank_irq_80186) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, highvdeo_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, highvdeo_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/homelab.cpp b/src/mame/drivers/homelab.cpp index 383a0db1cfe..dfbd2eebb63 100644 --- a/src/mame/drivers/homelab.cpp +++ b/src/mame/drivers/homelab.cpp @@ -915,4 +915,4 @@ COMP( 1982, homelab2, 0, 0, homelab, homelab, homelab_state, COMP( 1983, homelab3, homelab2, 0, homelab3, homelab3, homelab_state, 0, "Jozsef and Endre Lukacs", "Homelab 3", MACHINE_NOT_WORKING ) COMP( 1984, homelab4, homelab2, 0, homelab3, homelab3, homelab_state, 0, "Jozsef and Endre Lukacs", "Homelab 4", MACHINE_NOT_WORKING ) COMP( 1984, brailab4, homelab2, 0, brailab4, brailab4, homelab_state, brailab4, "Jozsef and Endre Lukacs", "Brailab 4", MACHINE_NOT_WORKING ) -COMP( 1988, braiplus, homelab2, 0, brailab4, brailab4, homelab_state, brailab4, "Jozsef and Endre Lukacs", "Brailab Plus", MACHINE_NOT_WORKING | MACHINE_IS_SKELETON ) +COMP( 1988, braiplus, homelab2, 0, brailab4, brailab4, homelab_state, brailab4, "Jozsef and Endre Lukacs", "Brailab Plus", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/hp9845.cpp b/src/mame/drivers/hp9845.cpp index dc6eb00109d..4b3f5717b63 100644 --- a/src/mame/drivers/hp9845.cpp +++ b/src/mame/drivers/hp9845.cpp @@ -4004,10 +4004,10 @@ ROM_START( hp9845t_de ) ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS -COMP( 1977, hp9845a, 0, 0, hp9845a, hp9845, hp9845_state, 0, "Hewlett-Packard", "9845A", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1977, hp9845s, hp9845a, 0, hp9845a, hp9845, hp9845_state, 0, "Hewlett-Packard", "9845S", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1979, hp9835a, 0, 0, hp9835a, hp9845, hp9845_state, 0, "Hewlett-Packard", "9835A", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1979, hp9835b, hp9835a, 0, hp9835a, hp9845, hp9845_state, 0, "Hewlett-Packard", "9835B", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1977, hp9845a, 0, 0, hp9845a, hp9845, hp9845_state, 0, "Hewlett-Packard", "9845A", MACHINE_IS_SKELETON ) +COMP( 1977, hp9845s, hp9845a, 0, hp9845a, hp9845, hp9845_state, 0, "Hewlett-Packard", "9845S", MACHINE_IS_SKELETON ) +COMP( 1979, hp9835a, 0, 0, hp9835a, hp9845, hp9845_state, 0, "Hewlett-Packard", "9835A", MACHINE_IS_SKELETON ) +COMP( 1979, hp9835b, hp9835a, 0, hp9835a, hp9845, hp9845_state, 0, "Hewlett-Packard", "9835B", MACHINE_IS_SKELETON ) COMP( 1979, hp9845b, 0, 0, hp9845b, hp9845_base, hp9845b_state, 0, "Hewlett-Packard", "9845B", 0 ) COMP( 1982, hp9845t, 0, 0, hp9845t, hp9845ct, hp9845t_state, 0, "Hewlett-Packard", "9845T", 0 ) COMP( 1980, hp9845c, 0, 0, hp9845c, hp9845ct, hp9845c_state, 0, "Hewlett-Packard", "9845C", 0 ) diff --git a/src/mame/drivers/if800.cpp b/src/mame/drivers/if800.cpp index cd747ad7597..bbb4cff5895 100644 --- a/src/mame/drivers/if800.cpp +++ b/src/mame/drivers/if800.cpp @@ -76,7 +76,7 @@ void if800_state::machine_reset() { } -static ADDRESS_MAP_START( upd7220_map, AS_0, 16, if800_state ) +static ADDRESS_MAP_START( upd7220_map, 0, 16, if800_state ) AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram") ADDRESS_MAP_END @@ -89,7 +89,7 @@ static MACHINE_CONFIG_START( if800 ) // MCFG_PIC8259_ADD( "pic8259", if800_pic8259_config ) MCFG_DEVICE_ADD("upd7220", UPD7220, 8000000/4) - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(if800_state, hgdc_display_pixels) /* video hardware */ diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp index 6395e52441a..5269791fd4d 100644 --- a/src/mame/drivers/igs017.cpp +++ b/src/mame/drivers/igs017.cpp @@ -1125,7 +1125,7 @@ static ADDRESS_MAP_START( iqblocka_map, AS_PROGRAM, 8, igs017_state ) AM_RANGE( 0x10000, 0x3ffff ) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, igs017_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, igs017_state ) AM_RANGE( 0x00000, 0x3ffff ) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/imds2.cpp b/src/mame/drivers/imds2.cpp index 147c71eeea9..89d8e87dada 100644 --- a/src/mame/drivers/imds2.cpp +++ b/src/mame/drivers/imds2.cpp @@ -903,7 +903,7 @@ ROM_START(imds2) // For the time being a specially developed PIO firmware is used until a dump of the original PIO is // available. ROM_REGION(0x400 , "iocpio" , 0) - ROM_LOAD("pio_a72.bin" , 0 , 0x400 , BAD_DUMP CRC(8c8e740b)) + ROM_LOAD("pio_a72.bin" , 0 , 0x400 , BAD_DUMP CRC(8c8e740b) SHA1(9b9333a9dc9585aa8f630721d13e551a5c87defc)) // ROM definition of keyboard controller (8741) ROM_REGION(0x400 , "kbcpu" , 0) diff --git a/src/mame/drivers/indiana.cpp b/src/mame/drivers/indiana.cpp index 693aa262e87..8b7e6df2600 100644 --- a/src/mame/drivers/indiana.cpp +++ b/src/mame/drivers/indiana.cpp @@ -47,9 +47,9 @@ static ADDRESS_MAP_START(indiana_mem, AS_PROGRAM, 32, indiana_state) AM_RANGE(0x00100000, 0x00107fff) AM_MIRROR(0x7f8f8000) AM_RAM // SRAM 32Kb of SRAM AM_RANGE(0x00200000, 0x002fffff) AM_DEVREADWRITE8(MFP_TAG, mc68901_device, read, write, 0xffffffff) AM_MIRROR(0x7f800000) // MFP AM_RANGE(0x00400000, 0x004fffff) AM_DEVREADWRITE16(ISABUS_TAG, isa16_device, io16_swap_r, io16_swap_w, 0xffffffff) AM_MIRROR(0x7f800000) // 16 bit PC IO - AM_RANGE(0x00500000, 0x005fffff) AM_DEVREADWRITE16(ISABUS_TAG, isa16_device, prog16_swap_r, prog16_swap_w, 0xffffffff) AM_MIRROR(0x7f800000) // 16 bit PC MEM + AM_RANGE(0x00500000, 0x005fffff) AM_DEVREADWRITE16(ISABUS_TAG, isa16_device, mem16_swap_r, mem16_swap_w, 0xffffffff) AM_MIRROR(0x7f800000) // 16 bit PC MEM AM_RANGE(0x00600000, 0x006fffff) AM_DEVREADWRITE8(ISABUS_TAG, isa16_device, io_r, io_w, 0xffffffff) AM_MIRROR(0x7f800000) // 8 bit PC IO - AM_RANGE(0x00700000, 0x007fffff) AM_DEVREADWRITE8(ISABUS_TAG, isa16_device, prog_r, prog_w, 0xffffffff) AM_MIRROR(0x7f800000) // 8 bit PC MEM + AM_RANGE(0x00700000, 0x007fffff) AM_DEVREADWRITE8(ISABUS_TAG, isa16_device, mem_r, mem_w, 0xffffffff) AM_MIRROR(0x7f800000) // 8 bit PC MEM AM_RANGE(0x80000000, 0x803fffff) AM_RAM // 4 MB RAM AM_RANGE(0xfffe0000, 0xfffe7fff) AM_RAM // SRAM mirror? ADDRESS_MAP_END diff --git a/src/mame/drivers/intellec4.cpp b/src/mame/drivers/intellec4.cpp index 2690ea3d8c6..8451e8f270d 100644 --- a/src/mame/drivers/intellec4.cpp +++ b/src/mame/drivers/intellec4.cpp @@ -4,12 +4,15 @@ Intel INTELLEC® 4/MOD 40 Set the terminal for 110 1/8/N/2 to talk to the monitor. - It only likes to see uppercase letters, digits, comman and carriage return. + It only likes to see uppercase letters, digits, comma, and carriage return. + Paper tape reader run/stop is sent to RTS on the serial port. */ #include "emu.h" +#include "bus/intellec4/intellec4.h" #include "bus/rs232/rs232.h" #include "cpu/mcs40/mcs40.h" +#include "machine/bankdev.h" namespace { @@ -20,14 +23,12 @@ public: intellec4_40_state(machine_config const &mconfig, device_type type, char const *tag) : driver_device(mconfig, type, tag) , m_cpu(*this, "maincpu") + , m_program_banks(*this, "prgbank") + , m_io_banks(*this, "iobank") + , m_bus(*this, "bus") , m_tty(*this, "tty") - , m_mon_rom(*this, "monitor", 0x0400) , m_ram(*this, "ram") - , m_banks(*this, "bank%u", 0) - , m_mode_sw(*this, "MODE") - , m_single_step_timer(nullptr) - , m_stp_ack(false), m_single_step(false) - , m_ram_page(0U), m_ram_data(0U), m_ram_write(false) + , m_sw_mode(*this, "MODE") { } @@ -46,30 +47,85 @@ public: DECLARE_WRITE_LINE_MEMBER(stp_ack); - DECLARE_INPUT_CHANGED_MEMBER(stop_sw); - DECLARE_INPUT_CHANGED_MEMBER(single_step_sw); + // universal slot outputs + DECLARE_WRITE_LINE_MEMBER(bus_stop); + DECLARE_WRITE_LINE_MEMBER(bus_test); + DECLARE_WRITE_LINE_MEMBER(bus_reset_4002); + DECLARE_WRITE_LINE_MEMBER(bus_user_reset); + + // edge-sensitive front-panel switches + DECLARE_INPUT_CHANGED_MEMBER(sw_stop); + DECLARE_INPUT_CHANGED_MEMBER(sw_single_step); + DECLARE_INPUT_CHANGED_MEMBER(sw_reset); + DECLARE_INPUT_CHANGED_MEMBER(sw_mon); + DECLARE_INPUT_CHANGED_MEMBER(sw_ram); + DECLARE_INPUT_CHANGED_MEMBER(sw_prom); protected: virtual void driver_start() override; + virtual void driver_reset() override; private: + enum + { + BANK_PRG_MON = 0, + BANK_PRG_RAM, + BANK_PRG_PROM, + BANK_PRG_NONE, + + BANK_IO_MON = 0, + BANK_IO_NEITHER, + BANK_IO_PROM, + + BIT_SW_STOP = 0, + BIT_SW_SINGLE_STEP, + BIT_SW_RESET, + BIT_SW_MON, + BIT_SW_RAM, + BIT_SW_PROM + }; + enum : ioport_value + { + MASK_SW_STOP = 1U << BIT_SW_STOP, + MASK_SW_SINGLE_STEP = 1U << BIT_SW_SINGLE_STEP, + MASK_SW_RESET = 1U << BIT_SW_RESET, + MASK_SW_MON = 1U << BIT_SW_MON, + MASK_SW_RAM = 1U << BIT_SW_RAM, + MASK_SW_PROM = 1U << BIT_SW_PROM + }; + TIMER_CALLBACK_MEMBER(single_step_expired); + TIMER_CALLBACK_MEMBER(reset_expired); - bool get_stop_sw() { return BIT(~m_mode_sw->read(), 0); } + void trigger_reset(); - required_device m_cpu; - required_device m_tty; - required_region_ptr m_mon_rom; - required_shared_ptr m_ram; - required_memory_bank_array<4> m_banks; + required_device m_cpu; + required_device m_program_banks, m_io_banks; + required_device m_bus; + required_device m_tty; - required_ioport m_mode_sw; + required_shared_ptr m_ram; - emu_timer *m_single_step_timer; + required_ioport m_sw_mode; - bool m_stp_ack, m_single_step; - u8 m_ram_page, m_ram_data; - bool m_ram_write; + emu_timer *m_single_step_timer = nullptr; + emu_timer *m_reset_timer = nullptr; + + // program memory access + u8 m_ram_page = false, m_ram_data = false; + bool m_ram_write = false; + + // control board state + bool m_stp_ack = false, m_single_step = false; + bool m_ff_mon = true, m_ff_ram = false, m_ff_prom = false; + + // current state of signals from bus + bool m_bus_stop = false, m_bus_reset_4002 = false, m_bus_user_reset = false; + + // current state of mode switches + bool m_sw_stop = false; + bool m_sw_reset = false; + bool m_sw_mon = false, m_sw_ram = false, m_sw_prom = false; }; @@ -147,102 +203,370 @@ WRITE_LINE_MEMBER(intellec4_40_state::stp_ack) { m_single_step_timer->reset(); m_single_step = false; - m_cpu->set_input_line(I4040_STP_LINE, get_stop_sw() ? ASSERT_LINE : CLEAR_LINE); + if (m_sw_stop) + { + m_bus->stop_in(0); + if (!m_bus_stop) + m_cpu->set_input_line(I4040_STP_LINE, ASSERT_LINE); + } } - m_stp_ack = !state; + m_stp_ack = 0 == state; + machine().output().set_value("led_status_run", !m_stp_ack); + m_bus->stop_acknowledge_in(state); } -INPUT_CHANGED_MEMBER(intellec4_40_state::stop_sw) +WRITE_LINE_MEMBER(intellec4_40_state::bus_stop) { - m_cpu->set_input_line(I4040_STP_LINE, (newval || m_single_step) ? CLEAR_LINE : ASSERT_LINE); + // will not allow the CPU to step/run + if (m_single_step || !m_sw_stop) + m_cpu->set_input_line(I4040_STP_LINE, state ? CLEAR_LINE : ASSERT_LINE); + m_bus_stop = 0 == state; } -INPUT_CHANGED_MEMBER(intellec4_40_state::single_step_sw) +WRITE_LINE_MEMBER(intellec4_40_state::bus_test) +{ + m_cpu->set_input_line(I4040_TEST_LINE, state ? CLEAR_LINE : ASSERT_LINE); +} + +WRITE_LINE_MEMBER(intellec4_40_state::bus_reset_4002) +{ + // FIXME: this will clear 4002 RAMs (data space) +} + +WRITE_LINE_MEMBER(intellec4_40_state::bus_user_reset) +{ + if (!state) + trigger_reset(); + m_bus_user_reset = 0 == state; +} + + +INPUT_CHANGED_MEMBER(intellec4_40_state::sw_stop) +{ + // overridden by the single-step monostable and the bus stop signal + if (!m_single_step && !m_bus_stop) + { + m_cpu->set_input_line(I4040_STP_LINE, newval ? CLEAR_LINE : ASSERT_LINE); + m_bus->stop_in(newval ? 1 : 0); + } + m_sw_stop = !bool(newval); +} + +INPUT_CHANGED_MEMBER(intellec4_40_state::sw_single_step) { // (re-)triggers the single-step monostable - if (newval && !oldval) + if (m_stp_ack && newval && !oldval) { // 9602 with Rx = 20kΩ, Cx = 0.005µF - // K * Rx(kΩ) * (1 + (1 / Rx(kΩ))) = 0.34 * 20 * 5000 * (1 + (1 / 20)) = 35700ns + // K * Rx(kΩ) * Cx(pF) * (1 + (1 / Rx(kΩ))) = 0.34 * 20 * 5000 * (1 + (1 / 20)) = 35700ns m_single_step_timer->adjust(attotime::from_nsec(35700)); m_single_step = true; - m_cpu->set_input_line(I4040_STP_LINE, CLEAR_LINE); + if (m_sw_stop) + { + m_bus->stop_in(1); + if (!m_bus_stop) + m_cpu->set_input_line(I4040_STP_LINE, CLEAR_LINE); + } } } +INPUT_CHANGED_MEMBER(intellec4_40_state::sw_reset) +{ + if (!newval && oldval) + trigger_reset(); + m_sw_reset = !bool(newval); +} + +INPUT_CHANGED_MEMBER(intellec4_40_state::sw_mon) +{ + if (oldval && !newval) + { + if (!m_sw_ram && !m_sw_prom) + { + if (!m_ff_mon) + { + m_program_banks->set_bank(BANK_PRG_MON); + m_io_banks->set_bank(BANK_IO_MON); + machine().output().set_value("led_mode_mon", m_ff_mon = true); + } + trigger_reset(); + } + else + { + m_program_banks->set_bank(BANK_PRG_NONE); + m_io_banks->set_bank(BANK_IO_NEITHER); + } + if (m_ff_ram) + machine().output().set_value("led_mode_ram", m_ff_ram = false); + if (m_ff_prom) + machine().output().set_value("led_mode_prom", m_ff_prom = false); + } + m_sw_mon = !bool(newval); +} + +INPUT_CHANGED_MEMBER(intellec4_40_state::sw_ram) +{ + if (oldval && !newval) + { + if (!m_sw_mon && !m_sw_prom) + { + if (!m_ff_ram) + { + m_program_banks->set_bank(BANK_PRG_RAM); + m_io_banks->set_bank(BANK_IO_NEITHER); + machine().output().set_value("led_mode_ram", m_ff_ram = true); + } + trigger_reset(); + } + else + { + m_program_banks->set_bank(BANK_PRG_NONE); + m_io_banks->set_bank(BANK_IO_NEITHER); + } + if (m_ff_mon) + machine().output().set_value("led_mode_mon", m_ff_mon = false); + if (m_ff_prom) + machine().output().set_value("led_mode_prom", m_ff_prom = false); + } + m_sw_ram = !bool(newval); +} + +INPUT_CHANGED_MEMBER(intellec4_40_state::sw_prom) +{ + if (oldval && !newval) + { + if (!m_sw_mon && !m_sw_ram) + { + if (!m_ff_prom) + { + m_program_banks->set_bank(BANK_PRG_PROM); + m_io_banks->set_bank(BANK_IO_PROM); + machine().output().set_value("led_mode_prom", m_ff_prom = true); + } + trigger_reset(); + } + else + { + m_program_banks->set_bank(BANK_PRG_NONE); + m_io_banks->set_bank(BANK_IO_NEITHER); + } + if (m_ff_mon) + machine().output().set_value("led_mode_mon", m_ff_mon = false); + if (m_ff_ram) + machine().output().set_value("led_mode_ram", m_ff_ram = false); + } + m_sw_prom = !bool(newval); +} + void intellec4_40_state::driver_start() { - for (unsigned i = 0; m_banks.size() > i; ++i) - { - m_banks[i]->configure_entry(0, &m_mon_rom[i << 8]); - m_banks[i]->configure_entry(1, &m_ram[i << 8]); - m_banks[i]->set_entry(0); - } - m_single_step_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(intellec4_40_state::single_step_expired), this)); + m_reset_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(intellec4_40_state::reset_expired), this)); - save_item(NAME(m_stp_ack)); - save_item(NAME(m_single_step)); save_item(NAME(m_ram_page)); save_item(NAME(m_ram_data)); save_item(NAME(m_ram_write)); + + save_item(NAME(m_stp_ack)); + save_item(NAME(m_single_step)); + save_item(NAME(m_ff_mon)); + save_item(NAME(m_ff_ram)); + save_item(NAME(m_ff_prom)); + + save_item(NAME(m_bus_stop)); + save_item(NAME(m_bus_reset_4002)); + save_item(NAME(m_bus_user_reset)); + + save_item(NAME(m_sw_stop)); + save_item(NAME(m_sw_reset)); + save_item(NAME(m_sw_mon)); + save_item(NAME(m_sw_ram)); + + m_stp_ack = m_single_step = false; + m_ff_mon = true; + m_ff_ram = m_ff_prom = false; +} + +void intellec4_40_state::driver_reset() +{ + // set stuff according to initial state of front panel + ioport_value const sw_mode(m_sw_mode->read()); + m_sw_stop = BIT(~sw_mode, BIT_SW_STOP); + m_sw_reset = BIT(~sw_mode, BIT_SW_RESET); + m_sw_mon = BIT(~sw_mode, BIT_SW_MON); + m_sw_ram = BIT(~sw_mode, BIT_SW_RAM); + m_sw_prom = BIT(~sw_mode, BIT_SW_PROM); + m_ff_mon = m_ff_mon && !m_sw_ram && !m_sw_prom; + m_ff_ram = m_ff_ram && !m_sw_mon && !m_sw_prom; + m_ff_prom = m_ff_prom && !m_sw_mon && !m_sw_ram; + + // ensure we're consistent with the state of the bus + m_bus_stop = 0 == m_bus->stop_out(); + m_bus_reset_4002 = 0 == m_bus->reset_4002_out(); + m_bus_user_reset = 0 == m_bus->user_reset_out(); + + // ensure device inputs are all in the correct state + m_cpu->set_input_line(I4040_TEST_LINE, m_bus->test_out() ? CLEAR_LINE : ASSERT_LINE); + m_cpu->set_input_line(I4040_STP_LINE, ((m_sw_stop && !m_single_step) || m_bus_stop) ? ASSERT_LINE : CLEAR_LINE); + m_bus->test_in(1); + m_bus->stop_in((m_sw_stop && !m_single_step) ? 0 : 1); + + // set front panel LEDs + machine().output().set_value("led_status_run", !m_stp_ack); + machine().output().set_value("led_mode_mon", m_ff_mon); + machine().output().set_value("led_mode_ram", m_ff_ram); + machine().output().set_value("led_mode_prom", m_ff_prom); } TIMER_CALLBACK_MEMBER(intellec4_40_state::single_step_expired) { m_single_step = false; - m_cpu->set_input_line(I4040_STP_LINE, get_stop_sw() ? ASSERT_LINE : CLEAR_LINE); + if (m_sw_stop) + { + m_bus->stop_in(0); + if (!m_bus_stop) + m_cpu->set_input_line(I4040_STP_LINE, ASSERT_LINE); + } +} + +TIMER_CALLBACK_MEMBER(intellec4_40_state::reset_expired) +{ + m_cpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE); + m_bus->cpu_reset_in(1); + // FIXME: can cause 4002 reset as well +} + +void intellec4_40_state::trigger_reset() +{ + // (re-)trigger the reset monostable + if (!m_sw_reset && !m_sw_mon && !m_sw_ram && !m_sw_prom && !m_bus_user_reset) + { + // 9602 with Rx = 27kΩ, Cx = 0.1µF + // K * Rx(kΩ) * Cx(pF) * (1 + (1 / Rx(kΩ))) = 0.34 * 27 * 100000 * (1 + (1 / 27)) = 952000ns + m_reset_timer->adjust(attotime::from_usec(952)); + m_cpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); + m_bus->cpu_reset_in(0); + // FIXME: can cause 4002 reset as well + } } +ADDRESS_MAP_START(mod40_program_banks, AS_OPCODES, 8, intellec4_40_state) + ADDRESS_MAP_UNMAP_LOW + + // 0x0000...0x0fff MON + AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION("monitor", 0x0000) + + // 0x1000...0x1fff RAM + AM_RANGE(0x1000, 0x1fff) AM_READONLY AM_SHARE("ram") + + // 0x2000...0x2fff PROM + + // 0x3000...0x3fff unmapped in case someone presses two mode switches at once +ADDRESS_MAP_END + +ADDRESS_MAP_START(mod40_io_banks, AS_PROGRAM, 8, intellec4_40_state) + ADDRESS_MAP_UNMAP_LOW + + // 0x0000...0x0fff ROM ports - MON + AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x6700) AM_READ(rom0_in) + AM_RANGE(0x00e0, 0x00ef) AM_MIRROR(0x6700) AM_READWRITE(rome_in, rome_out) + AM_RANGE(0x00f0, 0x00ff) AM_MIRROR(0x6700) AM_READWRITE(romf_in, romf_out) + + // 0x1000...0x1fff RAM ports - MON + AM_RANGE(0x1000, 0x103f) AM_MIRROR(0x6800) AM_WRITE(ram0_out) + AM_RANGE(0x1040, 0x107f) AM_MIRROR(0x6800) AM_WRITE(ram1_out) + + // 0x2000...0x2fff ROM ports - neither + + // 0x3000...0x3fff RAM ports - neither + + // 0x4000...0x4fff ROM ports - PROM + + // 0x5000...0x5fff RAM ports - PROM + + // 0x6000...0x7fff unused +ADDRESS_MAP_END + + ADDRESS_MAP_START(mod40_program, AS_PROGRAM, 8, intellec4_40_state) - ADDRESS_MAP_UNMAP_HIGH + ADDRESS_MAP_UNMAP_LOW AM_RANGE(0x0000, 0x01ff) AM_READWRITE(pm_read, pm_write) ADDRESS_MAP_END ADDRESS_MAP_START(mod40_data, AS_DATA, 8, intellec4_40_state) - ADDRESS_MAP_UNMAP_HIGH + ADDRESS_MAP_UNMAP_LOW AM_RANGE(0x0000, 0x00ff) AM_RAM // 4 * 4002 ADDRESS_MAP_END ADDRESS_MAP_START(mod40_io, AS_IO, 8, intellec4_40_state) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x0700) AM_READ(rom0_in) - AM_RANGE(0x00e0, 0x00ef) AM_MIRROR(0x0700) AM_READWRITE(rome_in, rome_out) - AM_RANGE(0x00f0, 0x00ff) AM_MIRROR(0x0700) AM_READWRITE(romf_in, romf_out) - AM_RANGE(0x1000, 0x103f) AM_MIRROR(0x0800) AM_WRITE(ram0_out) - AM_RANGE(0x1040, 0x107f) AM_MIRROR(0x0800) AM_WRITE(ram1_out) + ADDRESS_MAP_UNMAP_LOW + AM_RANGE(0x0000, 0x1fff) AM_DEVICE("iobank", address_map_bank_device, amap8) ADDRESS_MAP_END -ADDRESS_MAP_START(mod40_opcodes, AS_DECRYPTED_OPCODES, 8, intellec4_40_state) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_READ_BANK("bank0") - AM_RANGE(0x0100, 0x01ff) AM_READ_BANK("bank1") - AM_RANGE(0x0200, 0x02ff) AM_READ_BANK("bank2") - AM_RANGE(0x0300, 0x03ff) AM_READ_BANK("bank3") - AM_RANGE(0x0000, 0x0fff) AM_READONLY AM_SHARE("ram") +ADDRESS_MAP_START(mod40_opcodes, AS_OPCODES, 8, intellec4_40_state) + ADDRESS_MAP_UNMAP_LOW + AM_RANGE(0x0000, 0x0fff) AM_DEVICE("prgbank", address_map_bank_device, amap8) ADDRESS_MAP_END MACHINE_CONFIG_START(intlc440) - MCFG_CPU_ADD("maincpu", I4040, 5185000./7) + MCFG_CPU_ADD("maincpu", I4040, 5185000. / 7) MCFG_CPU_PROGRAM_MAP(mod40_program) MCFG_CPU_DATA_MAP(mod40_data) MCFG_CPU_IO_MAP(mod40_io) MCFG_CPU_DECRYPTED_OPCODES_MAP(mod40_opcodes) + MCFG_I4040_SYNC_CB(DEVWRITELINE("bus", bus::intellec4::univ_bus_device, sync_in)) MCFG_I4040_STP_ACK_CB(WRITELINE(intellec4_40_state, stp_ack)) + MCFG_DEVICE_ADD("prgbank", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(mod40_program_banks) + MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(14) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x1000) + + MCFG_DEVICE_ADD("iobank", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(mod40_io_banks) + MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(15) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000) + MCFG_RS232_PORT_ADD("tty", default_rs232_devices, "terminal") + + MCFG_DEVICE_ADD("bus", INTELLEC4_UNIV_BUS, 518000. / 7) + MCFG_INTELLEC4_UNIV_BUS_STOP_CB(WRITELINE(intellec4_40_state, bus_stop)) + MCFG_INTELLEC4_UNIV_BUS_TEST_CB(WRITELINE(intellec4_40_state, bus_test)) + MCFG_INTELLEC4_UNIV_BUS_RESET_4002_CB(WRITELINE(intellec4_40_state, bus_reset_4002)) + MCFG_INTELLEC4_UNIV_BUS_USER_RESET_CB(WRITELINE(intellec4_40_state, bus_user_reset)) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j7", 518000. / 7, intellec4_univ_cards, nullptr) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j8", 518000. / 7, intellec4_univ_cards, nullptr) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j9", 518000. / 7, intellec4_univ_cards, nullptr) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j10", 518000. / 7, intellec4_univ_cards, nullptr) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j11", 518000. / 7, intellec4_univ_cards, nullptr) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j12", 518000. / 7, intellec4_univ_cards, nullptr) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j13", 518000. / 7, intellec4_univ_cards, nullptr) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j14", 518000. / 7, intellec4_univ_cards, nullptr) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j15", 518000. / 7, intellec4_univ_cards, nullptr) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j16", 518000. / 7, intellec4_univ_cards, nullptr) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j17", 518000. / 7, intellec4_univ_cards, nullptr) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j18", 518000. / 7, intellec4_univ_cards, nullptr) + MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j19", 518000. / 7, intellec4_univ_cards, nullptr) MACHINE_CONFIG_END INPUT_PORTS_START(intlc440) PORT_START("MODE") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_TOGGLE PORT_NAME("STOP") PORT_CHANGED_MEMBER(DEVICE_SELF, intellec4_40_state, stop_sw, 0) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("SINGLE STEP") PORT_CHANGED_MEMBER(DEVICE_SELF, intellec4_40_state, single_step_sw, 0) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_TOGGLE PORT_NAME("STOP") PORT_CHANGED_MEMBER(DEVICE_SELF, intellec4_40_state, sw_stop, 0) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("SINGLE STEP") PORT_CHANGED_MEMBER(DEVICE_SELF, intellec4_40_state, sw_single_step, 0) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("RESET") PORT_CHANGED_MEMBER(DEVICE_SELF, intellec4_40_state, sw_reset, 0) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("MON") PORT_CHANGED_MEMBER(DEVICE_SELF, intellec4_40_state, sw_mon, 0) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("RAM") PORT_CHANGED_MEMBER(DEVICE_SELF, intellec4_40_state, sw_ram, 0) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("PROM") PORT_CHANGED_MEMBER(DEVICE_SELF, intellec4_40_state, sw_prom, 0) INPUT_PORTS_END diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index 794363adacb..1064cadbaa1 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -3,8 +3,6 @@ #include "emu.h" -#define NEW_SCSI 1 - #include "includes/interpro.h" #include "debugger.h" @@ -262,7 +260,6 @@ READ8_MEMBER(interpro_state::rtc_r) READ8_MEMBER(interpro_state::scsi_r) { -#if NEW_SCSI switch (offset >> 6) { case 0x0: return m_scsi->tcounter_lo_r(space, 0); @@ -275,19 +272,14 @@ READ8_MEMBER(interpro_state::scsi_r) case 0x7: return m_scsi->fifo_flags_r(space, 0); case 0x8: return m_scsi->conf_r(space, 0); case 0xb: return m_scsi->conf2_r(space, 0); - case 0xc: return m_scsi->conf3_r(space, 0); } - logerror("read unmapped scsi adapter register 0x%x\n", offset >> 6); - return 0x00; -#else - return m_scsi->read(space, offset >> 6, mem_mask); -#endif + logerror("scsi: read unmapped register 0x%x (%s)\n", offset >> 6, machine().describe_context()); + return space.unmap(); } WRITE8_MEMBER(interpro_state::scsi_w) { -#if NEW_SCSI switch (offset >> 6) { case 0: m_scsi->tcount_lo_w(space, 0, data); return; @@ -302,36 +294,9 @@ WRITE8_MEMBER(interpro_state::scsi_w) case 9: m_scsi->clock_w(space, 0, data); return; case 0xa: m_scsi->test_w(space, 0, data); return; case 0xb: m_scsi->conf2_w(space, 0, data); return; - case 0xc: m_scsi->conf3_w(space, 0, data); return; - case 0xf: m_scsi->fifo_align_w(space, 0, data); return; } - logerror("unmapped scsi register write 0x%02x data 0x%02x\n", offset >> 6, data); -#else - m_scsi->write(space, offset >> 6, data, mem_mask); -#endif -} - -READ8_MEMBER(interpro_state::scsi_dma_r) -{ -#if NEW_SCSI - return m_scsi->dma_r(); -#else - u8 data = 0; - - m_scsi->dma_read_data(1, &data); - - return data; -#endif -} - -WRITE8_MEMBER(interpro_state::scsi_dma_w) -{ -#if NEW_SCSI - m_scsi->dma_w(data); -#else - m_scsi->dma_write_data(1, &data); -#endif + logerror("scsi: unmapped register write 0x%02x data 0x%02x (%s)\n", offset >> 6, data, machine().describe_context()); } DRIVER_INIT_MEMBER(interpro_state, ip2800) @@ -345,25 +310,23 @@ DRIVER_INIT_MEMBER(interpro_state, ip2800) // 256 = reports 256M, 32x8 // grab the main memory space from the mmu - address_space &space = m_mmu->space(AS_0); + address_space &space = m_mmu->space(0); // map the configured ram space.install_ram(0, m_ram->mask(), m_ram->pointer()); } -#if NEW_SCSI static SLOT_INTERFACE_START(interpro_scsi_devices) SLOT_INTERFACE("harddisk", NSCSI_HARDDISK) SLOT_INTERFACE("cdrom", NSCSI_CDROM) - SLOT_INTERFACE_INTERNAL(INTERPRO_SCSI_ADAPTER_TAG, NCR53C94) + SLOT_INTERFACE_INTERNAL(INTERPRO_SCSI_ADAPTER_TAG, NCR53C90A) SLOT_INTERFACE_END static MACHINE_CONFIG_START(interpro_scsi_adapter) - MCFG_DEVICE_CLOCK(XTAL_12_5MHz) + MCFG_DEVICE_CLOCK(XTAL_24MHz) MCFG_NCR5390_IRQ_HANDLER(DEVWRITELINE(":" INTERPRO_IOGA_TAG, interpro_ioga_device, ir0_w)) MCFG_NCR5390_DRQ_HANDLER(DEVWRITELINE(":" INTERPRO_IOGA_TAG, interpro_ioga_device, drq_scsi)) MACHINE_CONFIG_END -#endif // these maps point the cpu virtual addresses to the mmu static ADDRESS_MAP_START(clipper_insn_map, AS_PROGRAM, 32, interpro_state) @@ -374,7 +337,7 @@ static ADDRESS_MAP_START(clipper_data_map, AS_DATA, 32, interpro_state) AM_RANGE(0x00000000, 0xffffffff) AM_DEVREADWRITE32(INTERPRO_MMU_TAG, cammu_device, data_r, data_w, 0xffffffff) ADDRESS_MAP_END -static ADDRESS_MAP_START(interpro_common_map, AS_0, 32, interpro_state) +static ADDRESS_MAP_START(interpro_common_map, 0, 32, interpro_state) AM_RANGE(0x40000000, 0x4000004f) AM_DEVICE(INTERPRO_MCGA_TAG, interpro_fmcc_device, map) AM_RANGE(0x4f007e00, 0x4f007eff) AM_DEVICE(INTERPRO_SGA_TAG, interpro_sga_device, map) @@ -404,7 +367,7 @@ static ADDRESS_MAP_START(interpro_common_map, AS_0, 32, interpro_state) ADDRESS_MAP_END // these maps represent the real main, i/o and boot spaces of the system -static ADDRESS_MAP_START(interpro_main_map, AS_0, 32, interpro_state) +static ADDRESS_MAP_START(interpro_main_map, 0, 32, interpro_state) AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE(RAM_TAG) AM_RANGE(0x7f100000, 0x7f11ffff) AM_ROM AM_REGION(INTERPRO_EPROM_TAG, 0) @@ -413,13 +376,13 @@ static ADDRESS_MAP_START(interpro_main_map, AS_0, 32, interpro_state) AM_IMPORT_FROM(interpro_common_map) ADDRESS_MAP_END -static ADDRESS_MAP_START(interpro_io_map, AS_1, 32, interpro_state) +static ADDRESS_MAP_START(interpro_io_map, 1, 32, interpro_state) AM_RANGE(0x00000000, 0x00001fff) AM_DEVICE(INTERPRO_MMU_TAG, cammu_device, map) AM_IMPORT_FROM(interpro_common_map) ADDRESS_MAP_END -static ADDRESS_MAP_START(interpro_boot_map, AS_2, 32, interpro_state) +static ADDRESS_MAP_START(interpro_boot_map, 2, 32, interpro_state) AM_RANGE(0x00000000, 0x00001fff) AM_RAM ADDRESS_MAP_END @@ -443,9 +406,9 @@ static MACHINE_CONFIG_START(ip2800) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, inta_cb) MCFG_DEVICE_ADD(INTERPRO_MMU_TAG, CAMMU_C4T, 0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, interpro_main_map) - MCFG_DEVICE_ADDRESS_MAP(AS_1, interpro_io_map) - MCFG_DEVICE_ADDRESS_MAP(AS_2, interpro_boot_map) + MCFG_DEVICE_ADDRESS_MAP(0, interpro_main_map) + MCFG_DEVICE_ADDRESS_MAP(1, interpro_io_map) + MCFG_DEVICE_ADDRESS_MAP(2, interpro_boot_map) MCFG_CAMMU_SSW_CB(DEVREAD32(INTERPRO_CPU_TAG, clipper_device, ssw)) MCFG_RAM_ADD(RAM_TAG) @@ -503,7 +466,6 @@ static MACHINE_CONFIG_START(ip2800) MCFG_FLOPPY_DRIVE_SOUND(false) // scsi -#if NEW_SCSI MCFG_NSCSI_BUS_ADD(INTERPRO_SCSI_TAG) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":0", interpro_scsi_devices, "harddisk", false) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":1", interpro_scsi_devices, nullptr, false) @@ -514,16 +476,6 @@ static MACHINE_CONFIG_START(ip2800) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":6", interpro_scsi_devices, nullptr, false) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":7", interpro_scsi_devices, INTERPRO_SCSI_ADAPTER_TAG, true) MCFG_DEVICE_CARD_MACHINE_CONFIG(INTERPRO_SCSI_ADAPTER_TAG, interpro_scsi_adapter) -#else - MCFG_DEVICE_ADD(INTERPRO_SCSI_TAG, SCSI_PORT, 0) - MCFG_SCSIDEV_ADD(INTERPRO_SCSI_TAG ":" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0) - MCFG_SCSIDEV_ADD(INTERPRO_SCSI_TAG ":" SCSI_PORT_DEVICE3, "cdrom", SCSICD, SCSI_ID_3) - - MCFG_DEVICE_ADD(INTERPRO_SCSI_ADAPTER_TAG, NCR539X, XTAL_12_5MHz) - MCFG_LEGACY_SCSI_PORT(INTERPRO_SCSI_TAG) - MCFG_NCR539X_OUT_IRQ_CB(DEVWRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir0_w)) - MCFG_NCR539X_OUT_DRQ_CB(DEVWRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, drq_scsi)) -#endif // i/o gate array MCFG_INTERPRO_IOGA_ADD(INTERPRO_IOGA_TAG) @@ -531,13 +483,11 @@ static MACHINE_CONFIG_START(ip2800) MCFG_INTERPRO_IOGA_IRQ_CB(INPUTLINE(INTERPRO_CPU_TAG, INPUT_LINE_IRQ0)) //MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_CHANNEL_PLOTTER, unknown) - // use driver helper functions to wrap scsi adapter dma read/write - MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_SCSI, DEVREAD8("", interpro_state, scsi_dma_r), DEVWRITE8("", interpro_state, scsi_dma_w)) - + MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_SCSI, DEVREAD8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, mdma_r), DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, mdma_w)) MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_FLOPPY, DEVREAD8(INTERPRO_FDC_TAG, n82077aa_device, mdma_r), DEVWRITE8(INTERPRO_FDC_TAG, n82077aa_device, mdma_w)) MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_SERIAL, DEVREAD8(INTERPRO_SCC1_TAG, z80scc_device, da_r), DEVWRITE8(INTERPRO_SCC1_TAG, z80scc_device, da_w)) MCFG_INTERPRO_IOGA_FDCTC_CB(DEVWRITELINE(INTERPRO_FDC_TAG, n82077aa_device, tc_line_w)) - MCFG_INTERPRO_IOGA_DMA_BUS(INTERPRO_CAMMU_TAG, AS_0) + MCFG_INTERPRO_IOGA_DMA_BUS(INTERPRO_CAMMU_TAG, 0) // memory control gate array MCFG_DEVICE_ADD(INTERPRO_MCGA_TAG, INTERPRO_FMCC, 0) diff --git a/src/mame/drivers/jack.cpp b/src/mame/drivers/jack.cpp index 47ae411ad08..eccc17deb26 100644 --- a/src/mame/drivers/jack.cpp +++ b/src/mame/drivers/jack.cpp @@ -195,7 +195,7 @@ static ADDRESS_MAP_START( jack_map, AS_PROGRAM, 8, jack_state ) AM_RANGE(0xc000, 0xffff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, jack_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, jack_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/jailbrek.cpp b/src/mame/drivers/jailbrek.cpp index 96e5171613e..47da5cd5807 100644 --- a/src/mame/drivers/jailbrek.cpp +++ b/src/mame/drivers/jailbrek.cpp @@ -161,7 +161,7 @@ static ADDRESS_MAP_START( jailbrek_map, AS_PROGRAM, 8, jailbrek_state ) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( vlm_map, AS_0, 8, jailbrek_state ) +static ADDRESS_MAP_START( vlm_map, 0, 8, jailbrek_state ) ADDRESS_MAP_GLOBAL_MASK(0x1fff) AM_RANGE(0x0000, 0x1fff) AM_ROM ADDRESS_MAP_END @@ -288,7 +288,7 @@ static MACHINE_CONFIG_START( jailbrek ) MCFG_SOUND_ADD("vlm", VLM5030, VOICE_CLOCK) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, vlm_map) MACHINE_CONFIG_END diff --git a/src/mame/drivers/joctronic.cpp b/src/mame/drivers/joctronic.cpp index 3e86395b574..e63ef294bfc 100644 --- a/src/mame/drivers/joctronic.cpp +++ b/src/mame/drivers/joctronic.cpp @@ -53,7 +53,7 @@ public: DECLARE_READ8_MEMBER(soundlatch_nmi_r); DECLARE_WRITE8_MEMBER(resint_w); DECLARE_WRITE8_MEMBER(slalom03_oki_bank_w); - DECLARE_WRITE_LINE_MEMBER(vclk_w); + DECLARE_WRITE_LINE_MEMBER(vck_w); virtual void machine_start() override; virtual void machine_reset() override; @@ -240,12 +240,15 @@ WRITE8_MEMBER(joctronic_state::slalom03_oki_bank_w) m_oki->reset_w(BIT(data, 0)); } -WRITE_LINE_MEMBER(joctronic_state::vclk_w) +WRITE_LINE_MEMBER(joctronic_state::vck_w) { - m_adpcm_toggle = !m_adpcm_toggle; - m_adpcm_select->select_w(m_adpcm_toggle); - if (m_adpcm_toggle) - m_soundcpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); + if (state) + { + m_adpcm_toggle = !m_adpcm_toggle; + m_adpcm_select->select_w(m_adpcm_toggle); + if (m_adpcm_toggle) + m_soundcpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); + } } static ADDRESS_MAP_START( joctronic_sound_map, AS_PROGRAM, 8, joctronic_state ) @@ -383,7 +386,7 @@ static MACHINE_CONFIG_START( slalom03 ) MCFG_SOUND_ADD("oki", MSM5205, XTAL_12MHz/2/16) // 375 kHz MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) // frequency modifiable during operation - MCFG_MSM5205_VCLK_CB(WRITELINE(joctronic_state, vclk_w)) + MCFG_MSM5205_VCK_CALLBACK(WRITELINE(joctronic_state, vck_w)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END diff --git a/src/mame/drivers/jongkyo.cpp b/src/mame/drivers/jongkyo.cpp index 49783c3b31a..6e0eb848ba5 100644 --- a/src/mame/drivers/jongkyo.cpp +++ b/src/mame/drivers/jongkyo.cpp @@ -246,7 +246,7 @@ static ADDRESS_MAP_START( jongkyo_memmap, AS_PROGRAM, 8, jongkyo_state ) AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, jongkyo_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, jongkyo_state ) AM_RANGE(0x0000, 0x6bff) AM_ROMBANK("bank0d") AM_RANGE(0x6c00, 0x6fff) AM_ROMBANK("bank1d") ADDRESS_MAP_END diff --git a/src/mame/drivers/kaneko16.cpp b/src/mame/drivers/kaneko16.cpp index 26804b6c377..69ebe05cb9b 100644 --- a/src/mame/drivers/kaneko16.cpp +++ b/src/mame/drivers/kaneko16.cpp @@ -2359,12 +2359,12 @@ static const uint16_t shogwarr_default_eeprom[64] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0000, 0x0000, 0xFFFF }; -static ADDRESS_MAP_START( shogwarr_oki1_map, AS_0, 8, kaneko16_shogwarr_state ) +static ADDRESS_MAP_START( shogwarr_oki1_map, 0, 8, kaneko16_shogwarr_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("bank10") ADDRESS_MAP_END -static ADDRESS_MAP_START( shogwarr_oki2_map, AS_0, 8, kaneko16_shogwarr_state ) +static ADDRESS_MAP_START( shogwarr_oki2_map, 0, 8, kaneko16_shogwarr_state ) AM_RANGE(0x00000, 0x3ffff) AM_ROMBANK("bank11") ADDRESS_MAP_END @@ -2420,11 +2420,11 @@ static MACHINE_CONFIG_START( shogwarr ) MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/8, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, shogwarr_oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, shogwarr_oki1_map) MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/8, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, shogwarr_oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, shogwarr_oki2_map) MACHINE_CONFIG_END @@ -2439,14 +2439,14 @@ static const uint16_t brapboys_default_eeprom[64] = { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0035, 0xFFFF, 0xFFFF, 0xFFFF }; -static ADDRESS_MAP_START( brapboys_oki2_map, AS_0, 8, kaneko16_shogwarr_state ) +static ADDRESS_MAP_START( brapboys_oki2_map, 0, 8, kaneko16_shogwarr_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("bank11") ADDRESS_MAP_END static MACHINE_CONFIG_DERIVED( brapboys, shogwarr ) MCFG_SOUND_MODIFY("oki2") - MCFG_DEVICE_ADDRESS_MAP(AS_0, brapboys_oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, brapboys_oki2_map) MCFG_DEVICE_MODIFY("kan_hit") kaneko_hit_device::set_type(*device, 2); diff --git a/src/mame/drivers/kchamp.cpp b/src/mame/drivers/kchamp.cpp index 88f9d611c2e..648373d5c6c 100644 --- a/src/mame/drivers/kchamp.cpp +++ b/src/mame/drivers/kchamp.cpp @@ -109,7 +109,7 @@ static ADDRESS_MAP_START( kchampvs_map, AS_PROGRAM, 8, kchamp_state ) AM_RANGE(0xe000, 0xffff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, kchamp_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, kchamp_state ) AM_RANGE(0x0000, 0xffff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/kinst.cpp b/src/mame/drivers/kinst.cpp index b4cc699301c..d3a6f558d0f 100644 --- a/src/mame/drivers/kinst.cpp +++ b/src/mame/drivers/kinst.cpp @@ -18,8 +18,6 @@ **************************************************************************** -**************************************************************************** - Guru-Readme for Killer Instinct 1 / Killer Instinct 2 Rare/Nintendo, 1994/1995 @@ -216,17 +214,17 @@ public: uint32_t *m_video_base; const uint8_t *m_control_map; emu_timer *m_irq0_stop_timer; - DECLARE_READ32_MEMBER(kinst_control_r); - DECLARE_WRITE32_MEMBER(kinst_control_w); - DECLARE_READ32_MEMBER(kinst_ide_r); - DECLARE_WRITE32_MEMBER(kinst_ide_w); - DECLARE_READ32_MEMBER(kinst_ide_extra_r); - DECLARE_WRITE32_MEMBER(kinst_ide_extra_w); + DECLARE_READ32_MEMBER(control_r); + DECLARE_WRITE32_MEMBER(control_w); + DECLARE_READ32_MEMBER(ide_r); + DECLARE_WRITE32_MEMBER(ide_w); + DECLARE_READ32_MEMBER(ide_extra_r); + DECLARE_WRITE32_MEMBER(ide_extra_w); DECLARE_DRIVER_INIT(kinst); DECLARE_DRIVER_INIT(kinst2); virtual void machine_start() override; virtual void machine_reset() override; - uint32_t screen_update_kinst(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(irq0_start); required_device m_maincpu; required_device m_ata; @@ -272,28 +270,6 @@ void kinst_state::machine_start() void kinst_state::machine_reset() { - ide_hdd_device *hdd = m_ata->subdevice("0")->subdevice("hdd"); - uint16_t *identify_device = hdd->identify_device_buffer(); - - if (strncmp(machine().system().name, "kinst2", 6) != 0) - { - /* kinst: tweak the model number so we pass the check */ - identify_device[27] = ('S' << 8) | 'T'; - identify_device[28] = ('9' << 8) | '1'; - identify_device[29] = ('5' << 8) | '0'; - identify_device[30] = ('A' << 8) | 'G'; - identify_device[31] = (' ' << 8) | ' '; - } - else - { - /* kinst2: tweak the model number so we pass the check */ - identify_device[10] = ('0' << 8) | '0'; - identify_device[11] = ('S' << 8) | 'T'; - identify_device[12] = ('9' << 8) | '1'; - identify_device[13] = ('5' << 8) | '0'; - identify_device[14] = ('A' << 8) | 'G'; - } - /* set a safe base location for video */ m_video_base = &m_rambase[0x30000/4]; } @@ -306,7 +282,7 @@ void kinst_state::machine_reset() * *************************************/ -uint32_t kinst_state::screen_update_kinst(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t kinst_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int y; @@ -364,25 +340,25 @@ INTERRUPT_GEN_MEMBER(kinst_state::irq0_start) * *************************************/ -READ32_MEMBER(kinst_state::kinst_ide_r) +READ32_MEMBER(kinst_state::ide_r) { return m_ata->read_cs0(space, offset / 2, mem_mask); } -WRITE32_MEMBER(kinst_state::kinst_ide_w) +WRITE32_MEMBER(kinst_state::ide_w) { m_ata->write_cs0(space, offset / 2, data, mem_mask); } -READ32_MEMBER(kinst_state::kinst_ide_extra_r) +READ32_MEMBER(kinst_state::ide_extra_r) { return m_ata->read_cs1(space, 6, 0xff); } -WRITE32_MEMBER(kinst_state::kinst_ide_extra_w) +WRITE32_MEMBER(kinst_state::ide_extra_w) { m_ata->write_cs1(space, 6, data, 0xff); } @@ -395,7 +371,7 @@ WRITE32_MEMBER(kinst_state::kinst_ide_extra_w) * *************************************/ -READ32_MEMBER(kinst_state::kinst_control_r) +READ32_MEMBER(kinst_state::control_r) { uint32_t result; static const char *const portnames[] = { "P1", "P2", "VOLUME", "UNUSED", "DSW" }; @@ -430,7 +406,7 @@ READ32_MEMBER(kinst_state::kinst_control_r) } -WRITE32_MEMBER(kinst_state::kinst_control_w) +WRITE32_MEMBER(kinst_state::control_w) { uint32_t olddata; @@ -474,9 +450,9 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, kinst_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("rambase") AM_RANGE(0x08000000, 0x087fffff) AM_RAM AM_SHARE("rambase2") - AM_RANGE(0x10000080, 0x100000ff) AM_READWRITE(kinst_control_r, kinst_control_w) AM_SHARE("control") - AM_RANGE(0x10000100, 0x1000013f) AM_READWRITE(kinst_ide_r, kinst_ide_w) - AM_RANGE(0x10000170, 0x10000173) AM_READWRITE(kinst_ide_extra_r, kinst_ide_extra_w) + AM_RANGE(0x10000080, 0x100000ff) AM_READWRITE(control_r, control_w) AM_SHARE("control") + AM_RANGE(0x10000100, 0x1000013f) AM_READWRITE(ide_r, ide_w) + AM_RANGE(0x10000170, 0x10000173) AM_READWRITE(ide_extra_r, ide_extra_w) AM_RANGE(0x1fc00000, 0x1fc7ffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("rombase") ADDRESS_MAP_END @@ -735,7 +711,7 @@ static MACHINE_CONFIG_START( kinst ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(320, 240) MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) - MCFG_SCREEN_UPDATE_DRIVER(kinst_state, screen_update_kinst) + MCFG_SCREEN_UPDATE_DRIVER(kinst_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD_BBBBBGGGGGRRRRR("palette") @@ -754,64 +730,17 @@ MACHINE_CONFIG_END ROM_START( kinst ) ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ + ROM_DEFAULT_BIOS("v1.5d") + ROM_SYSTEM_BIOS(0, "v1.5d", "Killer Instinct (v1.5d)") ROM_LOAD( "ki-l15d.u98", 0x00000, 0x80000, CRC(7b65ca3d) SHA1(607394d4ba1713f38c2cb5159303cace9cde991e) ) - - ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ - ROM_LOAD16_BYTE( "u10-l1", 0x000000, 0x80000, CRC(b6cc155f) SHA1(810d455df8f385d76143e9d7d048f2b555ff8bf0) ) - ROM_LOAD16_BYTE( "u11-l1", 0x200000, 0x80000, CRC(0b5e05df) SHA1(0595909cb667c38ac7c8c7bd0646b28899e27777) ) - ROM_LOAD16_BYTE( "u12-l1", 0x400000, 0x80000, CRC(d05ce6ad) SHA1(7a8ee405c118fd176b66353fa7bfab888cc63cd2) ) - ROM_LOAD16_BYTE( "u13-l1", 0x600000, 0x80000, CRC(7d0954ea) SHA1(ea4d1f153eb284f1bcfc5295fbce316bba6083f4) ) - ROM_LOAD16_BYTE( "u33-l1", 0x800000, 0x80000, CRC(8bbe4f0c) SHA1(b22e365bc8d58a80eaac226be14b4bb8d9a04844) ) - ROM_LOAD16_BYTE( "u34-l1", 0xa00000, 0x80000, CRC(b2e73603) SHA1(ee439f5162a2b3379d3f802328017bb3c68547d2) ) - ROM_LOAD16_BYTE( "u35-l1", 0xc00000, 0x80000, CRC(0aaef4fc) SHA1(48c4c954ac9db648f28ad64f9845e19ec432eec3) ) - ROM_LOAD16_BYTE( "u36-l1", 0xe00000, 0x80000, CRC(0577bb60) SHA1(cc78070cc41701e9a91fde5cfbdc7e1e83354854) ) - - DISK_REGION( "ata:0:hdd:image" ) - DISK_IMAGE( "kinst", 0, SHA1(81d833236e994528d1482979261401b198d1ca53) ) -ROM_END - - -ROM_START( kinst14 ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ + ROM_SYSTEM_BIOS(1, "v1.4", "Killer Instinct (v1.4)") ROM_LOAD( "ki-l14.u98", 0x00000, 0x80000, CRC(afedb75f) SHA1(07254f20707377f7195e64675eb6458e663c1a9a) ) - - ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ - ROM_LOAD16_BYTE( "u10-l1", 0x000000, 0x80000, CRC(b6cc155f) SHA1(810d455df8f385d76143e9d7d048f2b555ff8bf0) ) - ROM_LOAD16_BYTE( "u11-l1", 0x200000, 0x80000, CRC(0b5e05df) SHA1(0595909cb667c38ac7c8c7bd0646b28899e27777) ) - ROM_LOAD16_BYTE( "u12-l1", 0x400000, 0x80000, CRC(d05ce6ad) SHA1(7a8ee405c118fd176b66353fa7bfab888cc63cd2) ) - ROM_LOAD16_BYTE( "u13-l1", 0x600000, 0x80000, CRC(7d0954ea) SHA1(ea4d1f153eb284f1bcfc5295fbce316bba6083f4) ) - ROM_LOAD16_BYTE( "u33-l1", 0x800000, 0x80000, CRC(8bbe4f0c) SHA1(b22e365bc8d58a80eaac226be14b4bb8d9a04844) ) - ROM_LOAD16_BYTE( "u34-l1", 0xa00000, 0x80000, CRC(b2e73603) SHA1(ee439f5162a2b3379d3f802328017bb3c68547d2) ) - ROM_LOAD16_BYTE( "u35-l1", 0xc00000, 0x80000, CRC(0aaef4fc) SHA1(48c4c954ac9db648f28ad64f9845e19ec432eec3) ) - ROM_LOAD16_BYTE( "u36-l1", 0xe00000, 0x80000, CRC(0577bb60) SHA1(cc78070cc41701e9a91fde5cfbdc7e1e83354854) ) - - DISK_REGION( "ata:0:hdd:image" ) - DISK_IMAGE( "kinst", 0, SHA1(81d833236e994528d1482979261401b198d1ca53) ) -ROM_END - - -ROM_START( kinst13 ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ + ROM_SYSTEM_BIOS(2, "v1.3", "Killer Instinct (v1.3)") ROM_LOAD( "ki-l13.u98", 0x00000, 0x80000, CRC(65f7ea31) SHA1(7f21620a512549db6821a0b4fa53681a767b7974) ) - - ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ - ROM_LOAD16_BYTE( "u10-l1", 0x000000, 0x80000, CRC(b6cc155f) SHA1(810d455df8f385d76143e9d7d048f2b555ff8bf0) ) - ROM_LOAD16_BYTE( "u11-l1", 0x200000, 0x80000, CRC(0b5e05df) SHA1(0595909cb667c38ac7c8c7bd0646b28899e27777) ) - ROM_LOAD16_BYTE( "u12-l1", 0x400000, 0x80000, CRC(d05ce6ad) SHA1(7a8ee405c118fd176b66353fa7bfab888cc63cd2) ) - ROM_LOAD16_BYTE( "u13-l1", 0x600000, 0x80000, CRC(7d0954ea) SHA1(ea4d1f153eb284f1bcfc5295fbce316bba6083f4) ) - ROM_LOAD16_BYTE( "u33-l1", 0x800000, 0x80000, CRC(8bbe4f0c) SHA1(b22e365bc8d58a80eaac226be14b4bb8d9a04844) ) - ROM_LOAD16_BYTE( "u34-l1", 0xa00000, 0x80000, CRC(b2e73603) SHA1(ee439f5162a2b3379d3f802328017bb3c68547d2) ) - ROM_LOAD16_BYTE( "u35-l1", 0xc00000, 0x80000, CRC(0aaef4fc) SHA1(48c4c954ac9db648f28ad64f9845e19ec432eec3) ) - ROM_LOAD16_BYTE( "u36-l1", 0xe00000, 0x80000, CRC(0577bb60) SHA1(cc78070cc41701e9a91fde5cfbdc7e1e83354854) ) - - DISK_REGION( "ata:0:hdd:image" ) - DISK_IMAGE( "kinst", 0, SHA1(81d833236e994528d1482979261401b198d1ca53) ) -ROM_END - - -ROM_START( kinstp ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ + ROM_SYSTEM_BIOS(3, "proto v4.7", "Killer Instinct (proto v4.7)") ROM_LOAD( "ki-p47.u98", 0x00000, 0x80000, CRC(05e67bcb) SHA1(501e69b3026394f69229a6e9866c1037502b86bb) ) + ROM_SYSTEM_BIOS(4, "v1.5d AnyIDE", "Killer Instinct (v1.5d AnyIDE)") // unofficial version, allows use of alternate hard drives or CF cards + ROM_LOAD( "ki_l15di.u98", 0x00000, 0x80000, CRC(230f55fb) SHA1(f5f12311aae922d12f98d72ac8fdd77b7b084af2) ) ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ ROM_LOAD16_BYTE( "u10-l1", 0x000000, 0x80000, CRC(b6cc155f) SHA1(810d455df8f385d76143e9d7d048f2b555ff8bf0) ) @@ -830,102 +759,17 @@ ROM_END ROM_START( kinst2 ) ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ + ROM_DEFAULT_BIOS("v1.4") + ROM_SYSTEM_BIOS(0, "v1.4", "Killer Instinct 2 (v1.4)") ROM_LOAD( "ki2-l14.u98", 0x00000, 0x80000, CRC(27d0285e) SHA1(aa7a2a9d72a47dd0ea2ee7b2776b79288060b179) ) - - ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ - ROM_LOAD16_BYTE( "ki2_l1.u10", 0x000000, 0x80000, CRC(fdf6ed51) SHA1(acfc9460cd5df01403b7f00b2f68c2a8734ad6d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u11", 0x200000, 0x80000, CRC(f9e70024) SHA1(fe7fc78f1c60b15f2bbdc4c455f55cdf30f48ed4) ) - ROM_LOAD16_BYTE( "ki2_l1.u12", 0x400000, 0x80000, CRC(2994c199) SHA1(9997a83432cb720f65b40a8af46f31a5d0d16d8e) ) - ROM_LOAD16_BYTE( "ki2_l1.u13", 0x600000, 0x80000, CRC(3fe6327b) SHA1(7ff164fc2f079d039921594be92208973d43aa03) ) - ROM_LOAD16_BYTE( "ki2_l1.u33", 0x800000, 0x80000, CRC(6f4dcdcf) SHA1(0ab6dbfb76e9fa2db072e287864ad1f9d514dd9b) ) - ROM_LOAD16_BYTE( "ki2_l1.u34", 0xa00000, 0x80000, CRC(5db48206) SHA1(48456a7b6592c40bc9c664dcd2ee2cfd91942811) ) - ROM_LOAD16_BYTE( "ki2_l1.u35", 0xc00000, 0x80000, CRC(7245ce69) SHA1(24a3ff009c8a7f5a0bfcb198b8dcb5df365770d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u36", 0xe00000, 0x80000, CRC(8920acbb) SHA1(0fca72c40067034939b984b4bf32972a5a6c26af) ) - - DISK_REGION( "ata:0:hdd:image" ) - DISK_IMAGE( "kinst2", 0, SHA1(e7c9291b4648eae0012ea0cc230731ed4987d1d5) ) -ROM_END - - -ROM_START( kinst2k4 ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ - ROM_LOAD( "ki2-l14k.u98", 0x00000, 0x80000, CRC(9cbd00a8) SHA1(926dce4bb9016331ea40d3c337a9ace896f07493) ) - - ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ - ROM_LOAD16_BYTE( "ki2_l1.u10", 0x000000, 0x80000, CRC(fdf6ed51) SHA1(acfc9460cd5df01403b7f00b2f68c2a8734ad6d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u11", 0x200000, 0x80000, CRC(f9e70024) SHA1(fe7fc78f1c60b15f2bbdc4c455f55cdf30f48ed4) ) - ROM_LOAD16_BYTE( "ki2_l1.u12", 0x400000, 0x80000, CRC(2994c199) SHA1(9997a83432cb720f65b40a8af46f31a5d0d16d8e) ) - ROM_LOAD16_BYTE( "ki2_l1.u13", 0x600000, 0x80000, CRC(3fe6327b) SHA1(7ff164fc2f079d039921594be92208973d43aa03) ) - ROM_LOAD16_BYTE( "ki2_l1.u33", 0x800000, 0x80000, CRC(6f4dcdcf) SHA1(0ab6dbfb76e9fa2db072e287864ad1f9d514dd9b) ) - ROM_LOAD16_BYTE( "ki2_l1.u34", 0xa00000, 0x80000, CRC(5db48206) SHA1(48456a7b6592c40bc9c664dcd2ee2cfd91942811) ) - ROM_LOAD16_BYTE( "ki2_l1.u35", 0xc00000, 0x80000, CRC(7245ce69) SHA1(24a3ff009c8a7f5a0bfcb198b8dcb5df365770d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u36", 0xe00000, 0x80000, CRC(8920acbb) SHA1(0fca72c40067034939b984b4bf32972a5a6c26af) ) - - DISK_REGION( "ata:0:hdd:image" ) - DISK_IMAGE( "kinst2", 0, SHA1(e7c9291b4648eae0012ea0cc230731ed4987d1d5) ) -ROM_END - - -ROM_START( kinst213 ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ + ROM_SYSTEM_BIOS(1, "v1.3", "Killer Instinct 2 (v1.3)") ROM_LOAD( "ki2-l13.u98", 0x00000, 0x80000, CRC(25ebde3b) SHA1(771d150fb4de0a2ceb279954b9545458e93e2405) ) - - ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ - ROM_LOAD16_BYTE( "ki2_l1.u10", 0x000000, 0x80000, CRC(fdf6ed51) SHA1(acfc9460cd5df01403b7f00b2f68c2a8734ad6d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u11", 0x200000, 0x80000, CRC(f9e70024) SHA1(fe7fc78f1c60b15f2bbdc4c455f55cdf30f48ed4) ) - ROM_LOAD16_BYTE( "ki2_l1.u12", 0x400000, 0x80000, CRC(2994c199) SHA1(9997a83432cb720f65b40a8af46f31a5d0d16d8e) ) - ROM_LOAD16_BYTE( "ki2_l1.u13", 0x600000, 0x80000, CRC(3fe6327b) SHA1(7ff164fc2f079d039921594be92208973d43aa03) ) - ROM_LOAD16_BYTE( "ki2_l1.u33", 0x800000, 0x80000, CRC(6f4dcdcf) SHA1(0ab6dbfb76e9fa2db072e287864ad1f9d514dd9b) ) - ROM_LOAD16_BYTE( "ki2_l1.u34", 0xa00000, 0x80000, CRC(5db48206) SHA1(48456a7b6592c40bc9c664dcd2ee2cfd91942811) ) - ROM_LOAD16_BYTE( "ki2_l1.u35", 0xc00000, 0x80000, CRC(7245ce69) SHA1(24a3ff009c8a7f5a0bfcb198b8dcb5df365770d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u36", 0xe00000, 0x80000, CRC(8920acbb) SHA1(0fca72c40067034939b984b4bf32972a5a6c26af) ) - - DISK_REGION( "ata:0:hdd:image" ) - DISK_IMAGE( "kinst2", 0, SHA1(e7c9291b4648eae0012ea0cc230731ed4987d1d5) ) -ROM_END - - -ROM_START( kinst2k3 ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ - ROM_LOAD( "ki2-l13k.u98", 0x00000, 0x80000, CRC(3b4f16fc) SHA1(c28416f94453fd1f73ba01025276a04610569d12) ) - - ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ - ROM_LOAD16_BYTE( "ki2_l1.u10", 0x000000, 0x80000, CRC(fdf6ed51) SHA1(acfc9460cd5df01403b7f00b2f68c2a8734ad6d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u11", 0x200000, 0x80000, CRC(f9e70024) SHA1(fe7fc78f1c60b15f2bbdc4c455f55cdf30f48ed4) ) - ROM_LOAD16_BYTE( "ki2_l1.u12", 0x400000, 0x80000, CRC(2994c199) SHA1(9997a83432cb720f65b40a8af46f31a5d0d16d8e) ) - ROM_LOAD16_BYTE( "ki2_l1.u13", 0x600000, 0x80000, CRC(3fe6327b) SHA1(7ff164fc2f079d039921594be92208973d43aa03) ) - ROM_LOAD16_BYTE( "ki2_l1.u33", 0x800000, 0x80000, CRC(6f4dcdcf) SHA1(0ab6dbfb76e9fa2db072e287864ad1f9d514dd9b) ) - ROM_LOAD16_BYTE( "ki2_l1.u34", 0xa00000, 0x80000, CRC(5db48206) SHA1(48456a7b6592c40bc9c664dcd2ee2cfd91942811) ) - ROM_LOAD16_BYTE( "ki2_l1.u35", 0xc00000, 0x80000, CRC(7245ce69) SHA1(24a3ff009c8a7f5a0bfcb198b8dcb5df365770d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u36", 0xe00000, 0x80000, CRC(8920acbb) SHA1(0fca72c40067034939b984b4bf32972a5a6c26af) ) - - DISK_REGION( "ata:0:hdd:image" ) - DISK_IMAGE( "kinst2", 0, SHA1(e7c9291b4648eae0012ea0cc230731ed4987d1d5) ) -ROM_END - - -ROM_START( kinst211 ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ + ROM_SYSTEM_BIOS(2, "v1.1", "Killer Instinct 2 (v1.1)") ROM_LOAD( "ki2-l11.u98", 0x00000, 0x80000, CRC(0cb8de1e) SHA1(fe447f4b1d29b524f57c5ba1890652ef6afff88a) ) - - ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ - ROM_LOAD16_BYTE( "ki2_l1.u10", 0x000000, 0x80000, CRC(fdf6ed51) SHA1(acfc9460cd5df01403b7f00b2f68c2a8734ad6d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u11", 0x200000, 0x80000, CRC(f9e70024) SHA1(fe7fc78f1c60b15f2bbdc4c455f55cdf30f48ed4) ) - ROM_LOAD16_BYTE( "ki2_l1.u12", 0x400000, 0x80000, CRC(2994c199) SHA1(9997a83432cb720f65b40a8af46f31a5d0d16d8e) ) - ROM_LOAD16_BYTE( "ki2_l1.u13", 0x600000, 0x80000, CRC(3fe6327b) SHA1(7ff164fc2f079d039921594be92208973d43aa03) ) - ROM_LOAD16_BYTE( "ki2_l1.u33", 0x800000, 0x80000, CRC(6f4dcdcf) SHA1(0ab6dbfb76e9fa2db072e287864ad1f9d514dd9b) ) - ROM_LOAD16_BYTE( "ki2_l1.u34", 0xa00000, 0x80000, CRC(5db48206) SHA1(48456a7b6592c40bc9c664dcd2ee2cfd91942811) ) - ROM_LOAD16_BYTE( "ki2_l1.u35", 0xc00000, 0x80000, CRC(7245ce69) SHA1(24a3ff009c8a7f5a0bfcb198b8dcb5df365770d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u36", 0xe00000, 0x80000, CRC(8920acbb) SHA1(0fca72c40067034939b984b4bf32972a5a6c26af) ) - - DISK_REGION( "ata:0:hdd:image" ) - DISK_IMAGE( "kinst2", 0, SHA1(e7c9291b4648eae0012ea0cc230731ed4987d1d5) ) -ROM_END - - -ROM_START( kinst210 ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ + ROM_SYSTEM_BIOS(3, "v1.0", "Killer Instinct 2 (v1.0)") ROM_LOAD( "ki2-l10.u98", 0x00000, 0x80000, CRC(b17b4b3d) SHA1(756629cd1b51ae50f2b9818765dd3d277c3019b3) ) + ROM_SYSTEM_BIOS(4, "v1.4 AnyIDE", "Killer Instinct 2 (v1.4 AnyIDE)") + ROM_LOAD( "ki2_l14p.u98", 0x00000, 0x80000, CRC(d80c937a) SHA1(85a009638f2eada4c63240fc30a9e7be59afab7f) ) ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ ROM_LOAD16_BYTE( "ki2_l1.u10", 0x000000, 0x80000, CRC(fdf6ed51) SHA1(acfc9460cd5df01403b7f00b2f68c2a8734ad6d3) ) @@ -942,6 +786,29 @@ ROM_START( kinst210 ) ROM_END +ROM_START( kinst2uk ) + ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ + ROM_DEFAULT_BIOS("v1.4k") + ROM_SYSTEM_BIOS(0, "v1.4k", "Killer Instinct 2 (v1.4k, upgrade kit)") + ROM_LOAD( "ki2-l14k.u98", 0x00000, 0x80000, CRC(9cbd00a8) SHA1(926dce4bb9016331ea40d3c337a9ace896f07493) ) + ROM_SYSTEM_BIOS(1, "v1.3k", "Killer Instinct 2 (v1.3k, upgrade kit)") + ROM_LOAD( "ki2-l13k.u98", 0x00000, 0x80000, CRC(3b4f16fc) SHA1(c28416f94453fd1f73ba01025276a04610569d12) ) + ROM_SYSTEM_BIOS(2, "v1.4 AnyIDE", "Killer Instinct 2 (v1.4k, upgrade kit AnyIDE)") + ROM_LOAD( "ki2_d14p.u98", 0x00000, 0x80000, CRC(d716d428) SHA1(1a3b000fdc35b3824a0c8142ba9b496490894543) ) + + ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ + ROM_LOAD16_BYTE( "ki2_l1.u10", 0x000000, 0x80000, CRC(fdf6ed51) SHA1(acfc9460cd5df01403b7f00b2f68c2a8734ad6d3) ) + ROM_LOAD16_BYTE( "ki2_l1.u11", 0x200000, 0x80000, CRC(f9e70024) SHA1(fe7fc78f1c60b15f2bbdc4c455f55cdf30f48ed4) ) + ROM_LOAD16_BYTE( "ki2_l1.u12", 0x400000, 0x80000, CRC(2994c199) SHA1(9997a83432cb720f65b40a8af46f31a5d0d16d8e) ) + ROM_LOAD16_BYTE( "ki2_l1.u13", 0x600000, 0x80000, CRC(3fe6327b) SHA1(7ff164fc2f079d039921594be92208973d43aa03) ) + ROM_LOAD16_BYTE( "ki2_l1.u33", 0x800000, 0x80000, CRC(6f4dcdcf) SHA1(0ab6dbfb76e9fa2db072e287864ad1f9d514dd9b) ) + ROM_LOAD16_BYTE( "ki2_l1.u34", 0xa00000, 0x80000, CRC(5db48206) SHA1(48456a7b6592c40bc9c664dcd2ee2cfd91942811) ) + ROM_LOAD16_BYTE( "ki2_l1.u35", 0xc00000, 0x80000, CRC(7245ce69) SHA1(24a3ff009c8a7f5a0bfcb198b8dcb5df365770d3) ) + ROM_LOAD16_BYTE( "ki2_l1.u36", 0xe00000, 0x80000, CRC(8920acbb) SHA1(0fca72c40067034939b984b4bf32972a5a6c26af) ) + + DISK_REGION( "ata:0:hdd:image" ) + DISK_IMAGE( "kinst2", 0, SHA1(e7c9291b4648eae0012ea0cc230731ed4987d1d5) ) +ROM_END /************************************* * @@ -955,6 +822,16 @@ DRIVER_INIT_MEMBER(kinst_state,kinst) /* set up the control register mapping */ m_control_map = kinst_control_map; + + ide_hdd_device *hdd = m_ata->subdevice("0")->subdevice("hdd"); + uint16_t *identify_device = hdd->identify_device_buffer(); + + /* kinst: tweak the model number so we pass the check */ + identify_device[27] = ('S' << 8) | 'T'; + identify_device[28] = ('9' << 8) | '1'; + identify_device[29] = ('5' << 8) | '0'; + identify_device[30] = ('A' << 8) | 'G'; + identify_device[31] = (' ' << 8) | ' '; } @@ -971,6 +848,16 @@ DRIVER_INIT_MEMBER(kinst_state,kinst2) /* set up the control register mapping */ m_control_map = kinst2_control_map; + + ide_hdd_device *hdd = m_ata->subdevice("0")->subdevice("hdd"); + uint16_t *identify_device = hdd->identify_device_buffer(); + + /* kinst2: tweak the model number so we pass the check */ + identify_device[10] = ('0' << 8) | '0'; + identify_device[11] = ('S' << 8) | 'T'; + identify_device[12] = ('9' << 8) | '1'; + identify_device[13] = ('5' << 8) | '0'; + identify_device[14] = ('A' << 8) | 'G'; } @@ -981,14 +868,10 @@ DRIVER_INIT_MEMBER(kinst_state,kinst2) * *************************************/ -GAME( 1994, kinst, 0, kinst, kinst, kinst_state, kinst, ROT0, "Rare", "Killer Instinct (v1.5d)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, kinst14, kinst, kinst, kinst2, kinst_state, kinst, ROT0, "Rare", "Killer Instinct (v1.4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, kinst13, kinst, kinst, kinst2, kinst_state, kinst, ROT0, "Rare", "Killer Instinct (v1.3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, kinstp, kinst, kinst, kinst2, kinst_state, kinst, ROT0, "Rare", "Killer Instinct (proto v4.7)", MACHINE_SUPPORTS_SAVE ) + // versions selectable by changing bioses -GAME( 1995, kinst2, 0, kinst, kinst2, kinst_state, kinst2, ROT0, "Rare", "Killer Instinct 2 (v1.4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, kinst2k4, kinst2, kinst, kinst2, kinst_state, kinst2, ROT0, "Rare", "Killer Instinct 2 (v1.4k, upgrade kit)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, kinst213, kinst2, kinst, kinst2, kinst_state, kinst2, ROT0, "Rare", "Killer Instinct 2 (v1.3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, kinst2k3, kinst2, kinst, kinst2, kinst_state, kinst2, ROT0, "Rare", "Killer Instinct 2 (v1.3k, upgrade kit)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, kinst211, kinst2, kinst, kinst2, kinst_state, kinst2, ROT0, "Rare", "Killer Instinct 2 (v1.1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, kinst210, kinst2, kinst, kinst2, kinst_state, kinst2, ROT0, "Rare", "Killer Instinct 2 (v1.0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, kinst, 0, kinst, kinst, kinst_state, kinst, ROT0, "Rare", "Killer Instinct", MACHINE_SUPPORTS_SAVE ) + +GAME( 1995, kinst2, 0, kinst, kinst2, kinst_state, kinst2, ROT0, "Rare", "Killer Instinct 2", MACHINE_SUPPORTS_SAVE ) + +GAME( 1995, kinst2uk, kinst2, kinst, kinst2, kinst_state, kinst2, ROT0, "Rare", "Killer Instinct 2 (Upgrade kit)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/koftball.cpp b/src/mame/drivers/koftball.cpp index 2dcd56578bd..9bbd465f80d 100644 --- a/src/mame/drivers/koftball.cpp +++ b/src/mame/drivers/koftball.cpp @@ -172,7 +172,7 @@ static ADDRESS_MAP_START( koftball_mem, AS_PROGRAM, 16, koftball_state ) AM_RANGE(0x360000, 0x360001) AM_WRITE(prot_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, koftball_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, koftball_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/konin.cpp b/src/mame/drivers/konin.cpp index 68c15cf24f3..f8144f3229d 100644 --- a/src/mame/drivers/konin.cpp +++ b/src/mame/drivers/konin.cpp @@ -141,4 +141,4 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS -COMP( 198?, konin, 0, 0, konin, konin, konin_state, 0, "Mera-Elzab", "Konin", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 198?, konin, 0, 0, konin, konin, konin_state, 0, "Mera-Elzab", "Konin", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/ladybug.cpp b/src/mame/drivers/ladybug.cpp index 3dafe6c9d33..f525d94aa79 100644 --- a/src/mame/drivers/ladybug.cpp +++ b/src/mame/drivers/ladybug.cpp @@ -86,7 +86,7 @@ static ADDRESS_MAP_START( ladybug_map, AS_PROGRAM, 8, ladybug_state ) AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN2") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, ladybug_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, ladybug_state ) AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/lastfght.cpp b/src/mame/drivers/lastfght.cpp index 0a86d017155..529176b3b4e 100644 --- a/src/mame/drivers/lastfght.cpp +++ b/src/mame/drivers/lastfght.cpp @@ -435,7 +435,7 @@ static ADDRESS_MAP_START( lastfght_map, AS_PROGRAM, 16, lastfght_state ) AM_RANGE( 0xc00006, 0xc00007 ) AM_READWRITE(c00006_r, c00006_w ) ADDRESS_MAP_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, lastfght_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, lastfght_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/leapster.cpp b/src/mame/drivers/leapster.cpp index e0748d35164..1da556328b0 100644 --- a/src/mame/drivers/leapster.cpp +++ b/src/mame/drivers/leapster.cpp @@ -338,5 +338,5 @@ DRIVER_INIT_MEMBER(leapster_state,leapster) { } -CONS( 2003, leapster, 0, 0, leapster, leapster, leapster_state, leapster, "LeapFrog", "Leapster (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -CONS( 2005, leapstertv, leapster, 0, leapster, leapster, leapster_state, leapster, "LeapFrog", "Leapster TV (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +CONS( 2003, leapster, 0, 0, leapster, leapster, leapster_state, leapster, "LeapFrog", "Leapster (Germany)", MACHINE_IS_SKELETON ) +CONS( 2005, leapstertv, leapster, 0, leapster, leapster, leapster_state, leapster, "LeapFrog", "Leapster TV (Germany)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/liberate.cpp b/src/mame/drivers/liberate.cpp index f3e35ea8b12..fe5190c109c 100644 --- a/src/mame/drivers/liberate.cpp +++ b/src/mame/drivers/liberate.cpp @@ -267,7 +267,7 @@ static ADDRESS_MAP_START( liberate_map, AS_PROGRAM, 8, liberate_state ) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, liberate_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, liberate_state ) AM_RANGE(0x8000, 0xffff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/lordgun.cpp b/src/mame/drivers/lordgun.cpp index 15f60657248..7bb773e8380 100644 --- a/src/mame/drivers/lordgun.cpp +++ b/src/mame/drivers/lordgun.cpp @@ -337,7 +337,7 @@ static ADDRESS_MAP_START( aliencha_map, AS_PROGRAM, 16, lordgun_state ) AM_RANGE(0x50b900, 0x50b9ff) AM_READWRITE(aliencha_protection_r, aliencha_protection_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( ymf278_map, AS_0, 8, lordgun_state) +static ADDRESS_MAP_START( ymf278_map, 0, 8, lordgun_state) AM_RANGE(0x000000, 0x1fffff) AM_ROM ADDRESS_MAP_END @@ -728,7 +728,7 @@ static MACHINE_CONFIG_START( aliencha ) MCFG_GENERIC_LATCH_8_ADD("soundlatch2") MCFG_SOUND_ADD("ymf", YMF278B, 26000000) // ? 26MHz matches video (decrease for faster music tempo) - MCFG_DEVICE_ADDRESS_MAP(AS_0, ymf278_map) + MCFG_DEVICE_ADDRESS_MAP(0, ymf278_map) MCFG_YMF278B_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) diff --git a/src/mame/drivers/lwings.cpp b/src/mame/drivers/lwings.cpp index 0aeb8016876..f7adf5cd16a 100644 --- a/src/mame/drivers/lwings.cpp +++ b/src/mame/drivers/lwings.cpp @@ -398,7 +398,7 @@ WRITE8_MEMBER(lwings_state::fball_oki_bank_w) membank("samplebank")->set_entry((data >> 1) & 0x7); } -static ADDRESS_MAP_START( fball_oki_map, AS_0, 8, lwings_state ) +static ADDRESS_MAP_START( fball_oki_map, 0, 8, lwings_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("samplebank") ADDRESS_MAP_END @@ -1009,7 +1009,7 @@ static MACHINE_CONFIG_START( fball ) MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, fball_oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, fball_oki_map) MACHINE_CONFIG_END diff --git a/src/mame/drivers/m62.cpp b/src/mame/drivers/m62.cpp index acb8f6387f5..4e824a18ddd 100644 --- a/src/mame/drivers/m62.cpp +++ b/src/mame/drivers/m62.cpp @@ -775,20 +775,18 @@ static INPUT_PORTS_START( horizon ) INPUT_PORTS_END -#define TILELAYOUT(NUM) static const gfx_layout tilelayout_##NUM = \ -{ \ - 8,8, /* 8*8 characters */ \ - NUM, /* NUM characters */ \ - 3, /* 3 bits per pixel */ \ - { 2*NUM*8*8, NUM*8*8, 0 }, \ - { 0, 1, 2, 3, 4, 5, 6, 7 }, \ - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, \ - 8*8 /* every char takes 8 consecutive bytes */ \ -} -TILELAYOUT(1024); -TILELAYOUT(2048); -TILELAYOUT(4096); + +static const gfx_layout tile_charlayout = +{ + 8,8, + RGN_FRAC(1,3), + 3, + { RGN_FRAC(2,3), RGN_FRAC(1,3), 0 }, + { 0, 1, 2, 3, 4, 5, 6, 7 }, + { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, + 8*8 +}; static const gfx_layout battroad_charlayout = @@ -864,59 +862,75 @@ static const gfx_layout spritelayout = 32*8 }; -static GFXDECODE_START( ldrun ) - GFXDECODE_ENTRY( "gfx1", 0, tilelayout_1024, 0, 32 ) /* use colors 0-255 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 32 ) /* use colors 256-511 */ +/* standard decodes */ + +static GFXDECODE_START( m62_sprites ) + GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 32 ) GFXDECODE_END -static GFXDECODE_START( battroad ) - GFXDECODE_ENTRY( "gfx1", 0, tilelayout_1024, 0, 32 ) /* use colors 0-255 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 32 ) /* use colors 256-511 */ - GFXDECODE_ENTRY( "gfx3", 0, battroad_charlayout, 512, 32 ) /* use colors 512-543 */ +static GFXDECODE_START( m62_tiles ) + GFXDECODE_ENTRY( "gfx1", 0, tile_charlayout, 0, 32 ) GFXDECODE_END -static GFXDECODE_START( ldrun3 ) - GFXDECODE_ENTRY( "gfx1", 0, tilelayout_2048, 0, 32 ) /* use colors 0-255 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 32 ) /* use colors 256-511 */ +/* per game modified decodes */ + +static GFXDECODE_START( m62_tiles_lotlot ) + GFXDECODE_ENTRY( "gfx1", 0, lotlot_charlayout, 0, 32 ) GFXDECODE_END -static GFXDECODE_START( lotlot ) - GFXDECODE_ENTRY( "gfx1", 0, lotlot_charlayout, 0, 32 ) /* use colors 0-255 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 32 ) /* use colors 256-511 */ - GFXDECODE_ENTRY( "gfx3", 0, lotlot_charlayout, 512, 32 ) /* use colors 512-767 */ +static GFXDECODE_START( m62_tiles_spelunk2 ) + GFXDECODE_ENTRY( "gfx1", 0, tile_charlayout, 0, 64 ) GFXDECODE_END -static GFXDECODE_START( kidniki ) - GFXDECODE_ENTRY( "gfx1", 0, tilelayout_4096, 0, 32 ) /* use colors 0-255 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 32 ) /* use colors 256-511 */ - GFXDECODE_ENTRY( "gfx3", 0, kidniki_charlayout, 0, 32 ) /* use colors 0-255 */ +static GFXDECODE_START( m62_tiles_youjyudn ) + GFXDECODE_ENTRY( "gfx1", 0, youjyudn_tilelayout, 0, 32 ) GFXDECODE_END -static GFXDECODE_START( spelunkr ) - GFXDECODE_ENTRY( "gfx1", 0, tilelayout_4096, 0, 32 ) /* use colors 0-255 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 32 ) /* use colors 256-511 */ - GFXDECODE_ENTRY( "gfx3", 0, spelunk2_charlayout, 0, 32 ) /* use colors 0-255 */ +/* Games with FG layers */ + +static GFXDECODE_START( m62_fg_battroad ) + GFXDECODE_ENTRY( "gfx3", 0, battroad_charlayout, 0, 32 ) GFXDECODE_END -static GFXDECODE_START( spelunk2 ) - GFXDECODE_ENTRY( "gfx1", 0, tilelayout_4096, 0, 64 ) /* use colors 0-511 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 512, 32 ) /* use colors 512-767 */ - GFXDECODE_ENTRY( "gfx3", 0, spelunk2_charlayout, 0, 64 ) /* use colors 0-511 */ +static GFXDECODE_START( m62_fg_lotlot ) + GFXDECODE_ENTRY( "gfx3", 0, lotlot_charlayout, 0, 32 ) GFXDECODE_END -static GFXDECODE_START( youjyudn ) - GFXDECODE_ENTRY( "gfx1", 0, youjyudn_tilelayout, 0, 32 ) /* use colors 0-255 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 32 ) /* use colors 256-511 */ - GFXDECODE_ENTRY( "gfx3", 0, kidniki_charlayout, 128, 16 ) /* use colors 128-255 */ +static GFXDECODE_START( m62_fg_kidniki ) + GFXDECODE_ENTRY( "gfx3", 0, kidniki_charlayout, 0, 32 ) GFXDECODE_END +static GFXDECODE_START( m62_fg_spelunkr ) + GFXDECODE_ENTRY( "gfx3", 0, spelunk2_charlayout, 0, 32 ) +GFXDECODE_END -void m62_state::machine_start() +static GFXDECODE_START( m62_fg_spelunk2 ) + GFXDECODE_ENTRY( "gfx3", 0, spelunk2_charlayout, 0, 64 ) +GFXDECODE_END + +static GFXDECODE_START( m62_fg_youjyudn ) + GFXDECODE_ENTRY( "gfx3", 0, kidniki_charlayout, 128, 16 ) +GFXDECODE_END + +void m62_state::machine_init_save() { save_item(NAME(m_ldrun2_bankswap)); save_item(NAME(m_bankcontrol)); } +void m62_state::machine_start() +{ + machine_init_save(); + // do this here as we no longer have a single palette init call and this happens after all of them + m62_amplify_contrast(1); +} + +MACHINE_START_MEMBER(m62_state, battroad) +{ + machine_init_save(); + m62_amplify_contrast(0); +} + void m62_state::machine_reset() { m_flipscreen = 0; @@ -948,11 +962,15 @@ static MACHINE_CONFIG_START( ldrun ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA((64*8-384)/2, 64*8-(64*8-384)/2-1, 0*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_ldrun) - MCFG_SCREEN_PALETTE("palette") - MCFG_GFXDECODE_ADD("gfxdecode", "palette", ldrun) - MCFG_PALETTE_ADD("palette", 512) - MCFG_PALETTE_INIT_OWNER(m62_state,m62) + MCFG_GFXDECODE_ADD("spr_decode", "spr_palette", m62_sprites) + MCFG_GFXDECODE_ADD("chr_decode", "chr_palette", m62_tiles) + + MCFG_PALETTE_ADD("chr_palette", 256) + MCFG_PALETTE_INIT_OWNER(m62_state,m62_chr) + + MCFG_PALETTE_ADD("spr_palette", 256) + MCFG_PALETTE_INIT_OWNER(m62_state,m62_spr) /* sound hardware */ //MCFG_FRAGMENT_ADD(m62_audio) @@ -986,15 +1004,18 @@ static MACHINE_CONFIG_DERIVED( battroad, ldrun ) MCFG_CPU_PROGRAM_MAP(battroad_map) MCFG_CPU_IO_MAP(battroad_io_map) + MCFG_MACHINE_START_OVERRIDE(m62_state,battroad) + /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_battroad) - MCFG_GFXDECODE_MODIFY("gfxdecode", battroad) - MCFG_PALETTE_MODIFY("palette") - MCFG_PALETTE_ENTRIES(544) + + MCFG_GFXDECODE_ADD("fg_decode", "fg_palette", m62_fg_battroad) + + MCFG_PALETTE_ADD("fg_palette", 32) + MCFG_PALETTE_INIT_OWNER(m62_state,m62_battroad_fg) - MCFG_PALETTE_INIT_OWNER(m62_state,battroad) MCFG_VIDEO_START_OVERRIDE(m62_state,battroad) MACHINE_CONFIG_END @@ -1020,7 +1041,6 @@ static MACHINE_CONFIG_DERIVED( ldrun3, ldrun ) MCFG_CPU_IO_MAP(ldrun3_io_map) /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", ldrun3) MCFG_VIDEO_START_OVERRIDE(m62_state,ldrun2) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_ldrun3) @@ -1035,7 +1055,6 @@ static MACHINE_CONFIG_DERIVED( ldrun4, ldrun ) MCFG_CPU_IO_MAP(ldrun4_io_map) /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", ldrun3) MCFG_VIDEO_START_OVERRIDE(m62_state,ldrun4) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_ldrun4) @@ -1049,12 +1068,14 @@ static MACHINE_CONFIG_DERIVED( lotlot, ldrun ) MCFG_CPU_PROGRAM_MAP(lotlot_map) /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", lotlot) - MCFG_PALETTE_MODIFY("palette") - MCFG_PALETTE_ENTRIES(768) + MCFG_GFXDECODE_ADD("fg_decode", "fg_palette", m62_fg_lotlot) + MCFG_GFXDECODE_MODIFY("chr_decode", m62_tiles_lotlot) - MCFG_PALETTE_INIT_OWNER(m62_state,lotlot) + MCFG_PALETTE_ADD("fg_palette", 256) + MCFG_PALETTE_INIT_OWNER(m62_state,m62_lotlot_fg) + + MCFG_VIDEO_START_OVERRIDE(m62_state,lotlot) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_lotlot) @@ -1069,7 +1090,7 @@ static MACHINE_CONFIG_DERIVED( kidniki, ldrun ) MCFG_CPU_IO_MAP(kidniki_io_map) /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", kidniki) + MCFG_GFXDECODE_ADD("fg_decode", "chr_palette", m62_fg_kidniki) MCFG_VIDEO_START_OVERRIDE(m62_state,kidniki) MCFG_SCREEN_MODIFY("screen") @@ -1084,7 +1105,7 @@ static MACHINE_CONFIG_DERIVED( spelunkr, ldrun ) MCFG_CPU_PROGRAM_MAP(spelunkr_map) /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", spelunkr) + MCFG_GFXDECODE_ADD("fg_decode", "chr_palette", m62_fg_spelunkr) MCFG_VIDEO_START_OVERRIDE(m62_state,spelunkr) MCFG_SCREEN_MODIFY("screen") @@ -1098,12 +1119,15 @@ static MACHINE_CONFIG_DERIVED( spelunk2, ldrun ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(spelunk2_map) - /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", spelunk2) - MCFG_PALETTE_MODIFY("palette") - MCFG_PALETTE_ENTRIES(768) + /* video hardware */ + MCFG_GFXDECODE_MODIFY("chr_decode", m62_tiles_spelunk2) + MCFG_GFXDECODE_ADD("fg_decode", "chr_palette", m62_fg_spelunk2) + + MCFG_PALETTE_MODIFY("chr_palette") + MCFG_PALETTE_ENTRIES(512) MCFG_PALETTE_INIT_OWNER(m62_state,spelunk2) + MCFG_VIDEO_START_OVERRIDE(m62_state,spelunk2) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_spelunk2) @@ -1122,7 +1146,9 @@ static MACHINE_CONFIG_DERIVED( youjyudn, ldrun ) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_youjyudn) - MCFG_GFXDECODE_MODIFY("gfxdecode", youjyudn) + + MCFG_GFXDECODE_MODIFY("chr_decode", m62_tiles_youjyudn) + MCFG_GFXDECODE_ADD("fg_decode", "chr_palette", m62_fg_youjyudn) MCFG_VIDEO_START_OVERRIDE(m62_state,youjyudn) MACHINE_CONFIG_END @@ -1178,16 +1204,21 @@ ROM_START( kungfum ) ROM_LOAD( "b-4d-.bin", 0x14000, 0x2000, CRC(6a70615f) SHA1(f4683dc0a566567e95e85268612bcf0e6297d955) ) ROM_LOAD( "b-4a-.bin", 0x16000, 0x2000, CRC(6189d626) SHA1(ce8e5e95c2684c685481e9c8d921380b20ac0460) ) - ROM_REGION( 0x0720, "proms", 0 ) + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "b-5f-.bin", 0x00, 0x20, CRC(7a601c3d) SHA1(5c5cdf51b2c9fdb2b05402d9c260208ae73fe245) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "b-1m-.bin", 0x0000, 0x0100, CRC(76c05a9c) SHA1(1f46f436a17f8c883bdd6d9804b828a81a76f880) ) /* sprite palette red component */ + ROM_LOAD( "b-1n-.bin", 0x0100, 0x0100, CRC(23f06b99) SHA1(6b3d6349f019aeab33838ae392bc3f3f89906326) ) /* sprite palette green component */ + ROM_LOAD( "b-1l-.bin", 0x0200, 0x0100, CRC(35e45021) SHA1(511b94507f41b377f38184ed9a85f34949b28d26) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "g-1j-.bin", 0x0000, 0x0100, CRC(668e6bca) SHA1(cd5262b1310821ba7b12873e4db35f081d6b9df4) ) /* character palette red component */ - ROM_LOAD( "b-1m-.bin", 0x0100, 0x0100, CRC(76c05a9c) SHA1(1f46f436a17f8c883bdd6d9804b828a81a76f880) ) /* sprite palette red component */ - ROM_LOAD( "g-1f-.bin", 0x0200, 0x0100, CRC(964b6495) SHA1(76f30a65a0ded14babad2006221aa40621fb7ea1) ) /* character palette green component */ - ROM_LOAD( "b-1n-.bin", 0x0300, 0x0100, CRC(23f06b99) SHA1(6b3d6349f019aeab33838ae392bc3f3f89906326) ) /* sprite palette green component */ - ROM_LOAD( "g-1h-.bin", 0x0400, 0x0100, CRC(550563e1) SHA1(11edb45acba8b28a462c49956ebb1ba0a8b2ff26) ) /* character palette blue component */ - ROM_LOAD( "b-1l-.bin", 0x0500, 0x0100, CRC(35e45021) SHA1(511b94507f41b377f38184ed9a85f34949b28d26) ) /* sprite palette blue component */ - ROM_LOAD( "b-5f-.bin", 0x0600, 0x0020, CRC(7a601c3d) SHA1(5c5cdf51b2c9fdb2b05402d9c260208ae73fe245) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "b-6f-.bin", 0x0620, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as battroad */ + ROM_LOAD( "g-1f-.bin", 0x0100, 0x0100, CRC(964b6495) SHA1(76f30a65a0ded14babad2006221aa40621fb7ea1) ) /* character palette green component */ + ROM_LOAD( "g-1h-.bin", 0x0200, 0x0100, CRC(550563e1) SHA1(11edb45acba8b28a462c49956ebb1ba0a8b2ff26) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "b-6f-.bin", 0x000, 0x100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as battroad */ ROM_END ROM_START( kungfumd ) @@ -1212,16 +1243,21 @@ ROM_START( kungfumd ) ROM_LOAD( "snx_b-4c-b", 0x10000, 0x4000, CRC(1df11d81) SHA1(5055f0c8046f57d4c899ecf90a9bfcf0c1a58f59) ) ROM_LOAD( "snx_b-4e-b", 0x14000, 0x4000, CRC(2d3b69dd) SHA1(472e1c06fd3184b91d9b718bb590d45702ed84cd) ) - ROM_REGION( 0x0720, "proms", 0 ) + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "b-5f-.bin", 0x00, 0x20, CRC(7a601c3d) SHA1(5c5cdf51b2c9fdb2b05402d9c260208ae73fe245) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "b-1m-.bin", 0x0000, 0x0100, CRC(76c05a9c) SHA1(1f46f436a17f8c883bdd6d9804b828a81a76f880) ) /* sprite palette red component */ + ROM_LOAD( "b-1n-.bin", 0x0100, 0x0100, CRC(23f06b99) SHA1(6b3d6349f019aeab33838ae392bc3f3f89906326) ) /* sprite palette green component */ + ROM_LOAD( "b-1l-.bin", 0x0200, 0x0100, CRC(35e45021) SHA1(511b94507f41b377f38184ed9a85f34949b28d26) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "g-1j-.bin", 0x0000, 0x0100, CRC(668e6bca) SHA1(cd5262b1310821ba7b12873e4db35f081d6b9df4) ) /* character palette red component */ - ROM_LOAD( "b-1m-.bin", 0x0100, 0x0100, CRC(76c05a9c) SHA1(1f46f436a17f8c883bdd6d9804b828a81a76f880) ) /* sprite palette red component */ - ROM_LOAD( "g-1f-.bin", 0x0200, 0x0100, CRC(964b6495) SHA1(76f30a65a0ded14babad2006221aa40621fb7ea1) ) /* character palette green component */ - ROM_LOAD( "b-1n-.bin", 0x0300, 0x0100, CRC(23f06b99) SHA1(6b3d6349f019aeab33838ae392bc3f3f89906326) ) /* sprite palette green component */ - ROM_LOAD( "g-1h-.bin", 0x0400, 0x0100, CRC(550563e1) SHA1(11edb45acba8b28a462c49956ebb1ba0a8b2ff26) ) /* character palette blue component */ - ROM_LOAD( "b-1l-.bin", 0x0500, 0x0100, CRC(35e45021) SHA1(511b94507f41b377f38184ed9a85f34949b28d26) ) /* sprite palette blue component */ - ROM_LOAD( "b-5f-.bin", 0x0600, 0x0020, CRC(7a601c3d) SHA1(5c5cdf51b2c9fdb2b05402d9c260208ae73fe245) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "b-6f-.bin", 0x0620, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as battroad */ + ROM_LOAD( "g-1f-.bin", 0x0100, 0x0100, CRC(964b6495) SHA1(76f30a65a0ded14babad2006221aa40621fb7ea1) ) /* character palette green component */ + ROM_LOAD( "g-1h-.bin", 0x0200, 0x0100, CRC(550563e1) SHA1(11edb45acba8b28a462c49956ebb1ba0a8b2ff26) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "b-6f-.bin", 0x0000, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as battroad */ ROM_END ROM_START( spartanx ) @@ -1253,16 +1289,21 @@ ROM_START( spartanx ) ROM_LOAD( "b-4d-.bin", 0x14000, 0x2000, CRC(6a70615f) SHA1(f4683dc0a566567e95e85268612bcf0e6297d955) ) ROM_LOAD( "b-4a-.bin", 0x16000, 0x2000, CRC(6189d626) SHA1(ce8e5e95c2684c685481e9c8d921380b20ac0460) ) - ROM_REGION( 0x0720, "proms", 0 ) + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "b-5f-.bin", 0x00, 0x20, CRC(7a601c3d) SHA1(5c5cdf51b2c9fdb2b05402d9c260208ae73fe245) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "b-1m-.bin", 0x0000, 0x0100, CRC(76c05a9c) SHA1(1f46f436a17f8c883bdd6d9804b828a81a76f880) ) /* sprite palette red component */ + ROM_LOAD( "b-1n-.bin", 0x0100, 0x0100, CRC(23f06b99) SHA1(6b3d6349f019aeab33838ae392bc3f3f89906326) ) /* sprite palette green component */ + ROM_LOAD( "b-1l-.bin", 0x0200, 0x0100, CRC(35e45021) SHA1(511b94507f41b377f38184ed9a85f34949b28d26) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "g-1j-.bin", 0x0000, 0x0100, CRC(668e6bca) SHA1(cd5262b1310821ba7b12873e4db35f081d6b9df4) ) /* character palette red component */ - ROM_LOAD( "b-1m-.bin", 0x0100, 0x0100, CRC(76c05a9c) SHA1(1f46f436a17f8c883bdd6d9804b828a81a76f880) ) /* sprite palette red component */ - ROM_LOAD( "g-1f-.bin", 0x0200, 0x0100, CRC(964b6495) SHA1(76f30a65a0ded14babad2006221aa40621fb7ea1) ) /* character palette green component */ - ROM_LOAD( "b-1n-.bin", 0x0300, 0x0100, CRC(23f06b99) SHA1(6b3d6349f019aeab33838ae392bc3f3f89906326) ) /* sprite palette green component */ - ROM_LOAD( "g-1h-.bin", 0x0400, 0x0100, CRC(550563e1) SHA1(11edb45acba8b28a462c49956ebb1ba0a8b2ff26) ) /* character palette blue component */ - ROM_LOAD( "b-1l-.bin", 0x0500, 0x0100, CRC(35e45021) SHA1(511b94507f41b377f38184ed9a85f34949b28d26) ) /* sprite palette blue component */ - ROM_LOAD( "b-5f-.bin", 0x0600, 0x0020, CRC(7a601c3d) SHA1(5c5cdf51b2c9fdb2b05402d9c260208ae73fe245) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "b-6f-.bin", 0x0620, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as battroad */ + ROM_LOAD( "g-1f-.bin", 0x0100, 0x0100, CRC(964b6495) SHA1(76f30a65a0ded14babad2006221aa40621fb7ea1) ) /* character palette green component */ + ROM_LOAD( "g-1h-.bin", 0x0200, 0x0100, CRC(550563e1) SHA1(11edb45acba8b28a462c49956ebb1ba0a8b2ff26) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "b-6f-.bin", 0x0000, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as battroad */ ROM_END ROM_START( kungfub ) @@ -1294,33 +1335,43 @@ ROM_START( kungfub ) ROM_LOAD( "b-4d-.bin", 0x14000, 0x2000, CRC(6a70615f) SHA1(f4683dc0a566567e95e85268612bcf0e6297d955) ) ROM_LOAD( "b-4a-.bin", 0x16000, 0x2000, CRC(6189d626) SHA1(ce8e5e95c2684c685481e9c8d921380b20ac0460) ) - ROM_REGION( 0x14a0, "proms", 0 ) + /* what are these bootleg proms? it already has the ones needed below */ + ROM_REGION( 0x0080, "boot_proms", 0 ) + ROM_LOAD( "18s030-gfx-10a.bin", 0x0000, 0x0020, CRC(3858acd0) SHA1(49c96467c0e7146ed89f5107bcb7908bf4ce721a) ) + ROM_LOAD( "18s030-gfx-5d.bin", 0x0020, 0x0020, CRC(51304fcd) SHA1(be4d659e526f6fa5318b4cd3b6612c5b73f24437) ) + ROM_LOAD( "18s030-gfx-5e.bin", 0x0040, 0x0020, CRC(51304fcd) SHA1(be4d659e526f6fa5318b4cd3b6612c5b73f24437) ) + ROM_LOAD( "18s030-gfx-6l.bin", 0x0060, 0x0020, CRC(3858acd0) SHA1(49c96467c0e7146ed89f5107bcb7908bf4ce721a) ) + + ROM_REGION( 0x0d00, "boot_proms2", 0 ) + ROM_LOAD( "tbp24s10-gfx-3b.bin", 0x0000, 0x0100, CRC(e6506ef4) SHA1(079841da7640b14d94aaaeb572bf018932b58293) ) + ROM_LOAD( "tbp24s10-gfx-4a.bin", 0x0100, 0x0100, CRC(e0aa8869) SHA1(ac8bdfeba69420ba56ec561bf3d0f1229d02cea2) ) + ROM_LOAD( "tbp24s10-gfx-4c.bin", 0x0200, 0x0100, CRC(b43d094f) SHA1(2bed4892d8a91d7faac5a07bf858d9294eb30606) ) + ROM_LOAD( "tbp24s10-gfx-6d.bin", 0x0300, 0x0100, CRC(48bb39c9) SHA1(fbe525cc45c9287ab5f6c02c2bd729a11540d6be) ) + ROM_LOAD( "tbp24s10-gfx-6e.bin", 0x0400, 0x0100, CRC(48bb39c9) SHA1(fbe525cc45c9287ab5f6c02c2bd729a11540d6be) ) + ROM_LOAD( "tbp24s10-gfx-6m.bin", 0x0500, 0x0100, CRC(9f7a1a4d) SHA1(2bc38cbf4d0d65311b60c71073d81ca58ac01a5b) ) + ROM_LOAD( "tbp24s10-gfx-6n.bin", 0x0600, 0x0100, CRC(35e5b39e) SHA1(8889fad8a2c095129e4e50de5e2f66e986a4bedf) ) + ROM_LOAD( "tbp24s10-gfx-8a.bin", 0x0700, 0x0100, CRC(35e5b39e) SHA1(8889fad8a2c095129e4e50de5e2f66e986a4bedf) ) + ROM_LOAD( "tbp24s10-gfx-9a.bin", 0x0800, 0x0100, CRC(9f7a1a4d) SHA1(2bc38cbf4d0d65311b60c71073d81ca58ac01a5b) ) + //ROM_LOAD( "tbp24s10-gfx-9k.bin", 0x0900, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* loaded below */ + ROM_LOAD( "tbp24s10-main-8b.bin", 0x0a00, 0x0100, CRC(180fbc57) SHA1(fe1cede9ec1002d48c4eb055d36f2b74c8dd4af8) ) + ROM_LOAD( "tbp24s10-main-8c.bin", 0x0b00, 0x0100, CRC(3bb32e5a) SHA1(b666e48cb7526b9a38e151cdcc56d298c640bc3f) ) + ROM_LOAD( "tbp24s10-main-8d.bin", 0x0c00, 0x0100, CRC(599c319f) SHA1(1e52e30f3beb2718fc382e3b85af6b6911863a08) ) + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "18s030-gfx-8t.bin", 0x00, 0x20, CRC(7a601c3d) SHA1(5c5cdf51b2c9fdb2b05402d9c260208ae73fe245) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "tbp24s10-gfx-1r.bin", 0x0000, 0x0100, CRC(76c05a9c) SHA1(1f46f436a17f8c883bdd6d9804b828a81a76f880) ) /* sprite palette red component */ + ROM_LOAD( "tbp24s10-gfx-1s.bin", 0x0100, 0x0100, CRC(23f06b99) SHA1(6b3d6349f019aeab33838ae392bc3f3f89906326) ) /* sprite palette green component */ + ROM_LOAD( "tbp24s10-gfx-1p.bin", 0x0200, 0x0100, CRC(35e45021) SHA1(511b94507f41b377f38184ed9a85f34949b28d26) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "tbp24s10-main-1c.bin", 0x0000, 0x0100, CRC(668e6bca) SHA1(cd5262b1310821ba7b12873e4db35f081d6b9df4) ) /* character palette red component */ - ROM_LOAD( "tbp24s10-gfx-1r.bin", 0x0100, 0x0100, CRC(76c05a9c) SHA1(1f46f436a17f8c883bdd6d9804b828a81a76f880) ) /* sprite palette red component */ - ROM_LOAD( "tbp24s10-main-1a.bin", 0x0200, 0x0100, CRC(964b6495) SHA1(76f30a65a0ded14babad2006221aa40621fb7ea1) ) /* character palette green component */ - ROM_LOAD( "tbp24s10-gfx-1s.bin", 0x0300, 0x0100, CRC(23f06b99) SHA1(6b3d6349f019aeab33838ae392bc3f3f89906326) ) /* sprite palette green component */ - ROM_LOAD( "tbp24s10-main-1b.bin", 0x0400, 0x0100, CRC(550563e1) SHA1(11edb45acba8b28a462c49956ebb1ba0a8b2ff26) ) /* character palette blue component */ - ROM_LOAD( "tbp24s10-gfx-1p.bin", 0x0500, 0x0100, CRC(35e45021) SHA1(511b94507f41b377f38184ed9a85f34949b28d26) ) /* sprite palette blue component */ - ROM_LOAD( "18s030-gfx-8t.bin", 0x0600, 0x0020, CRC(7a601c3d) SHA1(5c5cdf51b2c9fdb2b05402d9c260208ae73fe245) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "tbp24s10-gfx-9k.bin", 0x0620, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as battroad */ - ROM_LOAD( "18s030-gfx-10a.bin", 0x0720, 0x0020, CRC(3858acd0) SHA1(49c96467c0e7146ed89f5107bcb7908bf4ce721a) ) - ROM_LOAD( "18s030-gfx-5d.bin", 0x0740, 0x0020, CRC(51304fcd) SHA1(be4d659e526f6fa5318b4cd3b6612c5b73f24437) ) - ROM_LOAD( "18s030-gfx-5e.bin", 0x0760, 0x0020, CRC(51304fcd) SHA1(be4d659e526f6fa5318b4cd3b6612c5b73f24437) ) - ROM_LOAD( "18s030-gfx-6l.bin", 0x0780, 0x0020, CRC(3858acd0) SHA1(49c96467c0e7146ed89f5107bcb7908bf4ce721a) ) - ROM_LOAD( "tbp24s10-gfx-3b.bin", 0x07a0, 0x0100, CRC(e6506ef4) SHA1(079841da7640b14d94aaaeb572bf018932b58293) ) - ROM_LOAD( "tbp24s10-gfx-4a.bin", 0x08a0, 0x0100, CRC(e0aa8869) SHA1(ac8bdfeba69420ba56ec561bf3d0f1229d02cea2) ) - ROM_LOAD( "tbp24s10-gfx-4c.bin", 0x09a0, 0x0100, CRC(b43d094f) SHA1(2bed4892d8a91d7faac5a07bf858d9294eb30606) ) - ROM_LOAD( "tbp24s10-gfx-6d.bin", 0x0aa0, 0x0100, CRC(48bb39c9) SHA1(fbe525cc45c9287ab5f6c02c2bd729a11540d6be) ) - ROM_LOAD( "tbp24s10-gfx-6e.bin", 0x0ba0, 0x0100, CRC(48bb39c9) SHA1(fbe525cc45c9287ab5f6c02c2bd729a11540d6be) ) - ROM_LOAD( "tbp24s10-gfx-6m.bin", 0x0ca0, 0x0100, CRC(9f7a1a4d) SHA1(2bc38cbf4d0d65311b60c71073d81ca58ac01a5b) ) - ROM_LOAD( "tbp24s10-gfx-6n.bin", 0x0da0, 0x0100, CRC(35e5b39e) SHA1(8889fad8a2c095129e4e50de5e2f66e986a4bedf) ) - ROM_LOAD( "tbp24s10-gfx-8a.bin", 0x0ea0, 0x0100, CRC(35e5b39e) SHA1(8889fad8a2c095129e4e50de5e2f66e986a4bedf) ) - ROM_LOAD( "tbp24s10-gfx-9a.bin", 0x0fa0, 0x0100, CRC(9f7a1a4d) SHA1(2bc38cbf4d0d65311b60c71073d81ca58ac01a5b) ) - ROM_LOAD( "tbp24s10-gfx-9k.bin", 0x10a0, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) - ROM_LOAD( "tbp24s10-main-8b.bin", 0x11a0, 0x0100, CRC(180fbc57) SHA1(fe1cede9ec1002d48c4eb055d36f2b74c8dd4af8) ) - ROM_LOAD( "tbp24s10-main-8c.bin", 0x12a0, 0x0100, CRC(3bb32e5a) SHA1(b666e48cb7526b9a38e151cdcc56d298c640bc3f) ) - ROM_LOAD( "tbp24s10-main-8d.bin", 0x13a0, 0x0100, CRC(599c319f) SHA1(1e52e30f3beb2718fc382e3b85af6b6911863a08) ) + ROM_LOAD( "tbp24s10-main-1a.bin", 0x0100, 0x0100, CRC(964b6495) SHA1(76f30a65a0ded14babad2006221aa40621fb7ea1) ) /* character palette green component */ + ROM_LOAD( "tbp24s10-main-1b.bin", 0x0200, 0x0100, CRC(550563e1) SHA1(11edb45acba8b28a462c49956ebb1ba0a8b2ff26) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "tbp24s10-gfx-9k.bin", 0x0000, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as battroad */ ROM_END ROM_START( kungfub2 ) @@ -1352,16 +1403,21 @@ ROM_START( kungfub2 ) ROM_LOAD( "b-4d-.bin", 0x14000, 0x2000, CRC(6a70615f) SHA1(f4683dc0a566567e95e85268612bcf0e6297d955) ) ROM_LOAD( "b-4a-.bin", 0x16000, 0x2000, CRC(6189d626) SHA1(ce8e5e95c2684c685481e9c8d921380b20ac0460) ) - ROM_REGION( 0x0720, "proms", 0 ) + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "b-5f-.bin", 0x00, 0x20, CRC(7a601c3d) SHA1(5c5cdf51b2c9fdb2b05402d9c260208ae73fe245) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "b-1m-.bin", 0x0000, 0x0100, CRC(76c05a9c) SHA1(1f46f436a17f8c883bdd6d9804b828a81a76f880) ) /* sprite palette red component */ + ROM_LOAD( "b-1n-.bin", 0x0100, 0x0100, CRC(23f06b99) SHA1(6b3d6349f019aeab33838ae392bc3f3f89906326) ) /* sprite palette green component */ + ROM_LOAD( "b-1l-.bin", 0x0200, 0x0100, CRC(35e45021) SHA1(511b94507f41b377f38184ed9a85f34949b28d26) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "g-1j-.bin", 0x0000, 0x0100, CRC(668e6bca) SHA1(cd5262b1310821ba7b12873e4db35f081d6b9df4) ) /* character palette red component */ - ROM_LOAD( "b-1m-.bin", 0x0100, 0x0100, CRC(76c05a9c) SHA1(1f46f436a17f8c883bdd6d9804b828a81a76f880) ) /* sprite palette red component */ - ROM_LOAD( "g-1f-.bin", 0x0200, 0x0100, CRC(964b6495) SHA1(76f30a65a0ded14babad2006221aa40621fb7ea1) ) /* character palette green component */ - ROM_LOAD( "b-1n-.bin", 0x0300, 0x0100, CRC(23f06b99) SHA1(6b3d6349f019aeab33838ae392bc3f3f89906326) ) /* sprite palette green component */ - ROM_LOAD( "g-1h-.bin", 0x0400, 0x0100, CRC(550563e1) SHA1(11edb45acba8b28a462c49956ebb1ba0a8b2ff26) ) /* character palette blue component */ - ROM_LOAD( "b-1l-.bin", 0x0500, 0x0100, CRC(35e45021) SHA1(511b94507f41b377f38184ed9a85f34949b28d26) ) /* sprite palette blue component */ - ROM_LOAD( "b-5f-.bin", 0x0600, 0x0020, CRC(7a601c3d) SHA1(5c5cdf51b2c9fdb2b05402d9c260208ae73fe245) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "b-6f-.bin", 0x0620, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as battroad */ + ROM_LOAD( "g-1f-.bin", 0x0100, 0x0100, CRC(964b6495) SHA1(76f30a65a0ded14babad2006221aa40621fb7ea1) ) /* character palette green component */ + ROM_LOAD( "g-1h-.bin", 0x0200, 0x0100, CRC(550563e1) SHA1(11edb45acba8b28a462c49956ebb1ba0a8b2ff26) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "b-6f-.bin", 0x0000, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as battroad */ ROM_END ROM_START( battroad ) @@ -1399,17 +1455,24 @@ ROM_START( battroad ) ROM_LOAD( "br-c-1b", 0x00000, 0x2000, CRC(8088911e) SHA1(d75d0a4ee5e51f14d93c8525486ee2cf2e87be9c) ) /* characters */ ROM_LOAD( "br-c-1c", 0x02000, 0x2000, CRC(3d78b653) SHA1(b693d20ad28fed867ffbc23cda150f3201206d3c) ) - ROM_REGION( 0x0740, "proms", 0 ) + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "br-b-5p", 0x00, 0x20, CRC(ce746937) SHA1(387e73a9ca684ac2e30061fca281970ff20ef0a5) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "br-b-1m", 0x0000, 0x0100, CRC(3bd30c7d) SHA1(ce9812c47321820f144c5a285c15dbb2073c8847) ) /* sprite palette red component */ + ROM_LOAD( "br-b-1n", 0x0100, 0x0100, CRC(b7f3dc3b) SHA1(7bffb6f3ddd0459bd060b0c1ca22a291153672d5) ) /* sprite palette green component */ + ROM_LOAD( "br-b-1l", 0x0200, 0x0100, CRC(5271c7d8) SHA1(1254b61133ed8fd6e032df04482fb775c3f66981) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "br-c-3j", 0x0000, 0x0100, CRC(aceaed79) SHA1(64cf6d012fc8d5163251812b4c2ac80d8f6dd353) ) /* tile palette red component */ - ROM_LOAD( "br-b-1m", 0x0100, 0x0100, CRC(3bd30c7d) SHA1(ce9812c47321820f144c5a285c15dbb2073c8847) ) /* sprite palette red component */ - ROM_LOAD( "br-c-3l", 0x0200, 0x0100, CRC(7cf6f380) SHA1(950a28dcb6e9d3d743c76ce07616ee7d6a0c138c) ) /* tile palette green component */ - ROM_LOAD( "br-b-1n", 0x0300, 0x0100, CRC(b7f3dc3b) SHA1(7bffb6f3ddd0459bd060b0c1ca22a291153672d5) ) /* sprite palette green component */ - ROM_LOAD( "br-c-3k", 0x0400, 0x0100, CRC(d90e4a54) SHA1(498c65773c83dfdb99703811bce7831f9a1af432) ) /* tile palette blue component */ - ROM_LOAD( "br-b-1l", 0x0500, 0x0100, CRC(5271c7d8) SHA1(1254b61133ed8fd6e032df04482fb775c3f66981) ) /* sprite palette blue component */ - ROM_LOAD( "br-c-1j", 0x0600, 0x0020, CRC(78eb5d77) SHA1(dd82f7843bea8c953f491faade6ced17e57ddf3c) ) /* character palette */ - ROM_LOAD( "br-b-5p", 0x0620, 0x0020, CRC(ce746937) SHA1(387e73a9ca684ac2e30061fca281970ff20ef0a5) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "br-b-6f", 0x0640, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as kungfum */ + ROM_LOAD( "br-c-3l", 0x0100, 0x0100, CRC(7cf6f380) SHA1(950a28dcb6e9d3d743c76ce07616ee7d6a0c138c) ) /* tile palette green component */ + ROM_LOAD( "br-c-3k", 0x0200, 0x0100, CRC(d90e4a54) SHA1(498c65773c83dfdb99703811bce7831f9a1af432) ) /* tile palette blue component */ + + ROM_REGION( 0x20, "fg_color_proms", 0 ) + ROM_LOAD( "br-c-1j", 0x00, 0x20, CRC(78eb5d77) SHA1(dd82f7843bea8c953f491faade6ced17e57ddf3c) ) /* character palette */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "br-b-6f", 0x000, 0x100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as kungfum */ ROM_END ROM_START( ldrun ) @@ -1433,16 +1496,21 @@ ROM_START( ldrun ) ROM_LOAD( "lr-b-3n", 0x2000, 0x2000, CRC(55154154) SHA1(35304676e1ab55adccdabdc766a4e0e0901d3cd0) ) ROM_LOAD( "lr-b-4c", 0x4000, 0x2000, CRC(924e34d0) SHA1(6a841419797a129235fc7d0405a5be55e8d703da) ) - ROM_REGION( 0x0720, "proms", 0 ) + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "lr-b-5p", 0x00, 0x20, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "lr-b-1m", 0x0000, 0x0100, CRC(4bae1c25) SHA1(17a9e2567d9d648dca69510bb201f8af0738b068) ) /* sprite palette red component */ + ROM_LOAD( "lr-b-1n", 0x0100, 0x0100, CRC(9cd3db94) SHA1(bff95965f946df0e4af1f99db5b2468bf1d4403f) ) /* sprite palette green component */ + ROM_LOAD( "lr-b-1l", 0x0200, 0x0100, CRC(08d8cf9a) SHA1(a46213e0dc04e44b0544401eb341fd49eef331dd) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "lr-e-3m", 0x0000, 0x0100, CRC(53040416) SHA1(2c6915164d1c31afc60a21b557abdf023d5b3f46) ) /* character palette red component */ - ROM_LOAD( "lr-b-1m", 0x0100, 0x0100, CRC(4bae1c25) SHA1(17a9e2567d9d648dca69510bb201f8af0738b068) ) /* sprite palette red component */ - ROM_LOAD( "lr-e-3l", 0x0200, 0x0100, CRC(67786037) SHA1(cd40dfd94295afe57139733752643cf48b8566b1) ) /* character palette green component */ - ROM_LOAD( "lr-b-1n", 0x0300, 0x0100, CRC(9cd3db94) SHA1(bff95965f946df0e4af1f99db5b2468bf1d4403f) ) /* sprite palette green component */ - ROM_LOAD( "lr-e-3n", 0x0400, 0x0100, CRC(5b716837) SHA1(e3ea250891fec43a97e92ac1c3a4fbb5ee2d4a4d) ) /* character palette blue component */ - ROM_LOAD( "lr-b-1l", 0x0500, 0x0100, CRC(08d8cf9a) SHA1(a46213e0dc04e44b0544401eb341fd49eef331dd) ) /* sprite palette blue component */ - ROM_LOAD( "lr-b-5p", 0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "lr-b-6f", 0x0620, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "lr-e-3l", 0x0100, 0x0100, CRC(67786037) SHA1(cd40dfd94295afe57139733752643cf48b8566b1) ) /* character palette green component */ + ROM_LOAD( "lr-e-3n", 0x0200, 0x0100, CRC(5b716837) SHA1(e3ea250891fec43a97e92ac1c3a4fbb5ee2d4a4d) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "lr-b-6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( ldruna ) @@ -1466,16 +1534,21 @@ ROM_START( ldruna ) ROM_LOAD( "lr-b-3n", 0x2000, 0x2000, CRC(55154154) SHA1(35304676e1ab55adccdabdc766a4e0e0901d3cd0) ) ROM_LOAD( "lr-b-4c", 0x4000, 0x2000, CRC(924e34d0) SHA1(6a841419797a129235fc7d0405a5be55e8d703da) ) - ROM_REGION( 0x0720, "proms", 0 ) + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "lr-b-5p", 0x00, 0x20, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "lr-b-1m", 0x0000, 0x0100, CRC(4bae1c25) SHA1(17a9e2567d9d648dca69510bb201f8af0738b068) ) /* sprite palette red component */ + ROM_LOAD( "lr-b-1n", 0x0100, 0x0100, CRC(9cd3db94) SHA1(bff95965f946df0e4af1f99db5b2468bf1d4403f) ) /* sprite palette green component */ + ROM_LOAD( "lr-b-1l", 0x0200, 0x0100, CRC(08d8cf9a) SHA1(a46213e0dc04e44b0544401eb341fd49eef331dd) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "lr-e-3m", 0x0000, 0x0100, CRC(53040416) SHA1(2c6915164d1c31afc60a21b557abdf023d5b3f46) ) /* character palette red component */ - ROM_LOAD( "lr-b-1m", 0x0100, 0x0100, CRC(4bae1c25) SHA1(17a9e2567d9d648dca69510bb201f8af0738b068) ) /* sprite palette red component */ - ROM_LOAD( "lr-e-3l", 0x0200, 0x0100, CRC(67786037) SHA1(cd40dfd94295afe57139733752643cf48b8566b1) ) /* character palette green component */ - ROM_LOAD( "lr-b-1n", 0x0300, 0x0100, CRC(9cd3db94) SHA1(bff95965f946df0e4af1f99db5b2468bf1d4403f) ) /* sprite palette green component */ - ROM_LOAD( "lr-e-3n", 0x0400, 0x0100, CRC(5b716837) SHA1(e3ea250891fec43a97e92ac1c3a4fbb5ee2d4a4d) ) /* character palette blue component */ - ROM_LOAD( "lr-b-1l", 0x0500, 0x0100, CRC(08d8cf9a) SHA1(a46213e0dc04e44b0544401eb341fd49eef331dd) ) /* sprite palette blue component */ - ROM_LOAD( "lr-b-5p", 0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "lr-b-6f", 0x0620, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "lr-e-3l", 0x0100, 0x0100, CRC(67786037) SHA1(cd40dfd94295afe57139733752643cf48b8566b1) ) /* character palette green component */ + ROM_LOAD( "lr-e-3n", 0x0200, 0x0100, CRC(5b716837) SHA1(e3ea250891fec43a97e92ac1c3a4fbb5ee2d4a4d) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "lr-b-6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( ldrun2 ) @@ -1505,16 +1578,21 @@ ROM_START( ldrun2 ) ROM_LOAD( "lr2-b-4c", 0x08000, 0x2000, CRC(fbe6d24c) SHA1(d4d9bfa5abf7d9b2457543c56bb04edf209157b8) ) ROM_LOAD( "lr2-b-4e", 0x0a000, 0x2000, CRC(75172d1f) SHA1(6771c31ad834ca94a6575e34d781add5bfadce22) ) - ROM_REGION( 0x0720, "proms", 0 ) + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "lr2-b-5p", 0x00, 0x20, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "lr2-b-1m", 0x0000, 0x0100, CRC(4ec9bb3d) SHA1(e36398e0e92525f0c5086cb2b5a4a976d1e4f126) ) /* sprite palette red component */ + ROM_LOAD( "lr2-b-1n", 0x0100, 0x0100, CRC(1daf1fa4) SHA1(5742ceff566e1d9f1148df4e408571aa290996d3) ) /* sprite palette green component */ + ROM_LOAD( "lr2-b-1l", 0x0200, 0x0100, CRC(c8fb708a) SHA1(ed38f36fa7918179c7176c762c0fcc86b5ddb218) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "lr2-h-3m", 0x0000, 0x0100, CRC(2c5d834b) SHA1(4144a566d7eef06e9cd2d4c774e4b1e6f9ef56b1) ) /* character palette red component */ - ROM_LOAD( "lr2-b-1m", 0x0100, 0x0100, CRC(4ec9bb3d) SHA1(e36398e0e92525f0c5086cb2b5a4a976d1e4f126) ) /* sprite palette red component */ - ROM_LOAD( "lr2-h-3l", 0x0200, 0x0100, CRC(3ae69aca) SHA1(683bf617a36952d08bea53ea9c82b12f81c62c53) ) /* character palette green component */ - ROM_LOAD( "lr2-b-1n", 0x0300, 0x0100, CRC(1daf1fa4) SHA1(5742ceff566e1d9f1148df4e408571aa290996d3) ) /* sprite palette green component */ - ROM_LOAD( "lr2-h-3n", 0x0400, 0x0100, CRC(2b28aec5) SHA1(946633bd7203ba1481250f900f3232c18538613b) ) /* character palette blue component */ - ROM_LOAD( "lr2-b-1l", 0x0500, 0x0100, CRC(c8fb708a) SHA1(ed38f36fa7918179c7176c762c0fcc86b5ddb218) ) /* sprite palette blue component */ - ROM_LOAD( "lr2-b-5p", 0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "lr2-b-6f", 0x0620, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "lr2-h-3l", 0x0100, 0x0100, CRC(3ae69aca) SHA1(683bf617a36952d08bea53ea9c82b12f81c62c53) ) /* character palette green component */ + ROM_LOAD( "lr2-h-3n", 0x0200, 0x0100, CRC(2b28aec5) SHA1(946633bd7203ba1481250f900f3232c18538613b) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "lr2-b-6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( ldrun3 ) @@ -1540,17 +1618,24 @@ ROM_START( ldrun3 ) ROM_LOAD( "snxb4cb.bin", 0x10000, 0x4000, CRC(585aa244) SHA1(d90cf29280e5f73b14dc5b33b1a82970e8e1a560) ) ROM_LOAD( "snxb4eb.bin", 0x14000, 0x4000, CRC(2d3b69dd) SHA1(472e1c06fd3184b91d9b718bb590d45702ed84cd) ) - ROM_REGION( 0x0820, "proms", 0 ) + ROM_REGION( 0x100, "proms", 0 ) + ROM_LOAD( "lr3-n-4f", 0x000, 0x100, CRC(df674be9) SHA1(4d8c5378234bc24fac62dc227d8cd72f1ab7a35c) ) /* unknown */ + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "lr3-b-5p", 0x00, 0x20, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "lr3-b-1m", 0x0000, 0x0100, CRC(f02d7167) SHA1(385a9179143e3dcccd7052e70c7cc71473caaaca) ) /* sprite palette red component */ + ROM_LOAD( "lr3-b-1n", 0x0100, 0x0100, CRC(9e37f181) SHA1(8e36eb8f4aefcc6d21dfbb2e86dcb4875bcf82cd) ) /* sprite palette green component */ + ROM_LOAD( "lr3-b-1l", 0x0200, 0x0100, CRC(5b11c41d) SHA1(186ca7bfa2894311fc573f3f5882da677e029f2a) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "lr3-n-2l", 0x0000, 0x0100, CRC(e880b86b) SHA1(3934f37dc45b725af1c7d862086249256366d572) ) /* character palette red component */ - ROM_LOAD( "lr3-b-1m", 0x0100, 0x0100, CRC(f02d7167) SHA1(385a9179143e3dcccd7052e70c7cc71473caaaca) ) /* sprite palette red component */ - ROM_LOAD( "lr3-n-2k", 0x0200, 0x0100, CRC(047ee051) SHA1(7c18a223d37ccc5fea20f8f856fba20335c75ea4) ) /* character palette green component */ - ROM_LOAD( "lr3-b-1n", 0x0300, 0x0100, CRC(9e37f181) SHA1(8e36eb8f4aefcc6d21dfbb2e86dcb4875bcf82cd) ) /* sprite palette green component */ - ROM_LOAD( "lr3-n-2m", 0x0400, 0x0100, CRC(69ad8678) SHA1(96134aa530cb93a5e3b56fffa996aefa08a666a2) ) /* character palette blue component */ - ROM_LOAD( "lr3-b-1l", 0x0500, 0x0100, CRC(5b11c41d) SHA1(186ca7bfa2894311fc573f3f5882da677e029f2a) ) /* sprite palette blue component */ - ROM_LOAD( "lr3-b-5p", 0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "lr3-n-4f", 0x0620, 0x0100, CRC(df674be9) SHA1(4d8c5378234bc24fac62dc227d8cd72f1ab7a35c) ) /* unknown */ - ROM_LOAD( "lr3-b-6f", 0x0720, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "lr3-n-2k", 0x0100, 0x0100, CRC(047ee051) SHA1(7c18a223d37ccc5fea20f8f856fba20335c75ea4) ) /* character palette green component */ + ROM_LOAD( "lr3-n-2m", 0x0200, 0x0100, CRC(69ad8678) SHA1(96134aa530cb93a5e3b56fffa996aefa08a666a2) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "lr3-b-6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( ldrun3j ) @@ -1573,17 +1658,24 @@ ROM_START( ldrun3j ) ROM_LOAD( "lr3-b-3n", 0x04000, 0x4000, CRC(eab7ad91) SHA1(c4e8dec38f6df27c0309172232aa8056be7982c4) ) ROM_LOAD( "lr3-b-4c", 0x08000, 0x4000, CRC(1a460a46) SHA1(2f9e85ab45e8ec7a08edb9c1f82bce694cc2bc99) ) - ROM_REGION( 0x0820, "proms", 0 ) + ROM_REGION( 0x100, "proms", 0 ) + ROM_LOAD( "lr3-n-4f", 0x000, 0x100, CRC(df674be9) SHA1(4d8c5378234bc24fac62dc227d8cd72f1ab7a35c) ) /* unknown */ + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "lr3-b-5p", 0x00, 0x20, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "lr3-b-1m", 0x0000, 0x0100, CRC(f02d7167) SHA1(385a9179143e3dcccd7052e70c7cc71473caaaca) ) /* sprite palette red component */ + ROM_LOAD( "lr3-b-1n", 0x0100, 0x0100, CRC(9e37f181) SHA1(8e36eb8f4aefcc6d21dfbb2e86dcb4875bcf82cd) ) /* sprite palette green component */ + ROM_LOAD( "lr3-b-1l", 0x0200, 0x0100, CRC(5b11c41d) SHA1(186ca7bfa2894311fc573f3f5882da677e029f2a) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "lr3-n-2l", 0x0000, 0x0100, CRC(e880b86b) SHA1(3934f37dc45b725af1c7d862086249256366d572) ) /* character palette red component */ - ROM_LOAD( "lr3-b-1m", 0x0100, 0x0100, CRC(f02d7167) SHA1(385a9179143e3dcccd7052e70c7cc71473caaaca) ) /* sprite palette red component */ - ROM_LOAD( "lr3-n-2k", 0x0200, 0x0100, CRC(047ee051) SHA1(7c18a223d37ccc5fea20f8f856fba20335c75ea4) ) /* character palette green component */ - ROM_LOAD( "lr3-b-1n", 0x0300, 0x0100, CRC(9e37f181) SHA1(8e36eb8f4aefcc6d21dfbb2e86dcb4875bcf82cd) ) /* sprite palette green component */ - ROM_LOAD( "lr3-n-2m", 0x0400, 0x0100, CRC(69ad8678) SHA1(96134aa530cb93a5e3b56fffa996aefa08a666a2) ) /* character palette blue component */ - ROM_LOAD( "lr3-b-1l", 0x0500, 0x0100, CRC(5b11c41d) SHA1(186ca7bfa2894311fc573f3f5882da677e029f2a) ) /* sprite palette blue component */ - ROM_LOAD( "lr3-b-5p", 0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "lr3-n-4f", 0x0620, 0x0100, CRC(df674be9) SHA1(4d8c5378234bc24fac62dc227d8cd72f1ab7a35c) ) /* unknown */ - ROM_LOAD( "lr3-b-6f", 0x0720, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "lr3-n-2k", 0x0100, 0x0100, CRC(047ee051) SHA1(7c18a223d37ccc5fea20f8f856fba20335c75ea4) ) /* character palette green component */ + ROM_LOAD( "lr3-n-2m", 0x0200, 0x0100, CRC(69ad8678) SHA1(96134aa530cb93a5e3b56fffa996aefa08a666a2) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "lr3-b-6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( ldrun4 ) @@ -1609,17 +1701,24 @@ ROM_START( ldrun4 ) ROM_LOAD( "lr4-b-4c", 0x10000, 0x4000, CRC(82c53669) SHA1(5e020e1df81ddc3ca0f0aeff0010ec3cd87ce426) ) ROM_LOAD( "lr4-b-4e", 0x14000, 0x4000, CRC(767a1352) SHA1(675bda83bf46421a37dbfaa9323e5ecc4a3b63dd) ) - ROM_REGION( 0x0820, "proms", 0 ) + ROM_REGION( 0x100, "proms", 0 ) + ROM_LOAD( "lr4-v-4h", 0x000, 0x100, CRC(df674be9) SHA1(4d8c5378234bc24fac62dc227d8cd72f1ab7a35c) ) /* unknown */ + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "lr4-b-5p", 0x00, 0x20, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "lr4-b-1m", 0x0000, 0x0100, CRC(5d8d17d0) SHA1(214f9f7f9fa9c2b616c5b4a3060c4bb96ea9fef4) ) /* sprite palette red component */ + ROM_LOAD( "lr4-b-1n", 0x0100, 0x0100, CRC(da1129d2) SHA1(169e616c7340ab76f931493eba188756da48a8ec) ) /* sprite palette green component */ + ROM_LOAD( "lr4-b-1l", 0x0200, 0x0100, CRC(0d89b692) SHA1(b2854290c46c34934ff91980d72768070ebc8bf3) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "lr4-v-1m", 0x0000, 0x0100, CRC(fe51bf1d) SHA1(92461d6fcbc94bde9639720e8f58b974e5adb2dc) ) /* character palette red component */ - ROM_LOAD( "lr4-b-1m", 0x0100, 0x0100, CRC(5d8d17d0) SHA1(214f9f7f9fa9c2b616c5b4a3060c4bb96ea9fef4) ) /* sprite palette red component */ - ROM_LOAD( "lr4-v-1n", 0x0200, 0x0100, CRC(da0658e5) SHA1(5a7f665e4d63938b4e4415066eb6c986e82bd1a7) ) /* character palette green component */ - ROM_LOAD( "lr4-b-1n", 0x0300, 0x0100, CRC(da1129d2) SHA1(169e616c7340ab76f931493eba188756da48a8ec) ) /* sprite palette green component */ - ROM_LOAD( "lr4-v-1p", 0x0400, 0x0100, CRC(0df23ebe) SHA1(054736b762aa6698c1e6d827f8db62ae0342c83f) ) /* character palette blue component */ - ROM_LOAD( "lr4-b-1l", 0x0500, 0x0100, CRC(0d89b692) SHA1(b2854290c46c34934ff91980d72768070ebc8bf3) ) /* sprite palette blue component */ - ROM_LOAD( "lr4-b-5p", 0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "lr4-v-4h", 0x0620, 0x0100, CRC(df674be9) SHA1(4d8c5378234bc24fac62dc227d8cd72f1ab7a35c) ) /* unknown */ - ROM_LOAD( "lr4-b-6f", 0x0720, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "lr4-v-1n", 0x0100, 0x0100, CRC(da0658e5) SHA1(5a7f665e4d63938b4e4415066eb6c986e82bd1a7) ) /* character palette green component */ + ROM_LOAD( "lr4-v-1p", 0x0200, 0x0100, CRC(0df23ebe) SHA1(054736b762aa6698c1e6d827f8db62ae0342c83f) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "lr4-b-6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( lotlot ) @@ -1645,21 +1744,30 @@ ROM_START( lotlot ) ROM_LOAD( "lot-k-4l", 0x02000, 0x2000, CRC(f98dca1f) SHA1(b88d2b9cb3ac8d5523f3788fca8bae60f8fad6f7) ) ROM_LOAD( "lot-k-4n", 0x04000, 0x2000, CRC(f0cd76a5) SHA1(3f7b1890ca36c190d3fe2571382ada93798a0a51) ) - ROM_REGION( 0x0e20, "proms", 0 ) + ROM_REGION( 0x400, "proms", 0 ) + ROM_LOAD( "lot-k-7e", 0x000, 0x200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ + ROM_LOAD( "lot-k-7h", 0x200, 0x200, CRC(04442bee) SHA1(37d10b605830b9355b00256af479c06cd4b97950) ) /* unknown */ + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "lot-b-5p", 0x00, 0x20, CRC(110b21fd) SHA1(a7a660ff18540e2d73a80f341cd50c5f4d184085) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "lot-b-1m", 0x0000, 0x0100, CRC(c146461d) SHA1(87a5dc3a93a9f9f08e97eef77eb099792fdf70e6) ) /* sprite palette red component */ + ROM_LOAD( "lot-b-1n", 0x0100, 0x0100, CRC(01e07db6) SHA1(3a18a6919b966d429d5ec9cf812768804407f92e) ) /* sprite palette green component */ + ROM_LOAD( "lot-b-1l", 0x0200, 0x0100, CRC(8b6fcde3) SHA1(04e9ce04b77a5f8737f2ec0aaeadaccdbbdda573) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "lot-k-2f", 0x0000, 0x0100, CRC(b820a05e) SHA1(79158f0cd64231c5cd90dc391e492a21aba4c30d) ) /* tile palette red component */ - ROM_LOAD( "lot-b-1m", 0x0100, 0x0100, CRC(c146461d) SHA1(87a5dc3a93a9f9f08e97eef77eb099792fdf70e6) ) /* sprite palette red component */ - ROM_LOAD( "lot-k-2l", 0x0200, 0x0100, CRC(ac3e230d) SHA1(e7d5afc707580a5c1df1201694a4db685af5f986) ) /* character palette red component */ - ROM_LOAD( "lot-k-2e", 0x0300, 0x0100, CRC(9b1fa005) SHA1(076af5d7a30a47b5884fcf33452a10aad91d30ee) ) /* tile palette green component */ - ROM_LOAD( "lot-b-1n", 0x0400, 0x0100, CRC(01e07db6) SHA1(3a18a6919b966d429d5ec9cf812768804407f92e) ) /* sprite palette green component */ - ROM_LOAD( "lot-k-2k", 0x0500, 0x0100, CRC(1811ad2b) SHA1(fb7aa262595010dd0fc1a94d74a37359f20e4cd7) ) /* character palette green component */ - ROM_LOAD( "lot-k-2d", 0x0600, 0x0100, CRC(315ed9a8) SHA1(7bfa91729cce7911a45035e2fa576a2b6b010a65) ) /* tile palette blue component */ - ROM_LOAD( "lot-b-1l", 0x0700, 0x0100, CRC(8b6fcde3) SHA1(04e9ce04b77a5f8737f2ec0aaeadaccdbbdda573) ) /* sprite palette blue component */ - ROM_LOAD( "lot-k-2j", 0x0800, 0x0100, CRC(e791ef2a) SHA1(cb1236630cbbc23e2e684ad3b7f51e52389eea2e) ) /* character palette blue component */ - ROM_LOAD( "lot-b-5p", 0x0900, 0x0020, CRC(110b21fd) SHA1(a7a660ff18540e2d73a80f341cd50c5f4d184085) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "lot-k-7e", 0x0920, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ - ROM_LOAD( "lot-k-7h", 0x0b20, 0x0200, CRC(04442bee) SHA1(37d10b605830b9355b00256af479c06cd4b97950) ) /* unknown */ - ROM_LOAD( "lot-b-6f", 0x0d20, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "lot-k-2e", 0x0100, 0x0100, CRC(9b1fa005) SHA1(076af5d7a30a47b5884fcf33452a10aad91d30ee) ) /* tile palette green component */ + ROM_LOAD( "lot-k-2d", 0x0200, 0x0100, CRC(315ed9a8) SHA1(7bfa91729cce7911a45035e2fa576a2b6b010a65) ) /* tile palette blue component */ + + ROM_REGION( 0x300, "fg_color_proms", 0 ) + ROM_LOAD( "lot-k-2l", 0x0000, 0x0100, CRC(ac3e230d) SHA1(e7d5afc707580a5c1df1201694a4db685af5f986) ) /* character palette red component */ + ROM_LOAD( "lot-k-2k", 0x0100, 0x0100, CRC(1811ad2b) SHA1(fb7aa262595010dd0fc1a94d74a37359f20e4cd7) ) /* character palette green component */ + ROM_LOAD( "lot-k-2j", 0x0200, 0x0100, CRC(e791ef2a) SHA1(cb1236630cbbc23e2e684ad3b7f51e52389eea2e) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "lot-b-6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( kidniki ) @@ -1699,17 +1807,24 @@ ROM_START( kidniki ) ROM_LOAD( "dr09.4m", 0x04000, 0x4000, CRC(17df6f95) SHA1(669a81906dfd81d807cbb2b5827ddb504536cb2c) ) ROM_LOAD( "dr10.4n", 0x08000, 0x4000, CRC(820ce252) SHA1(910dbb910fdfcf9542360c0cd78c58c93d1d0c26) ) - ROM_REGION( 0x0920, "proms", 0 ) + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "dr28.8f", 0x000, 0x200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "dr32.5p", 0x00, 0x20, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "dr30.1m", 0x0000, 0x0100, CRC(28c73263) SHA1(ffeb8d1310759bf20b1624ab92fc91078726679c) ) /* sprite palette red component */ + ROM_LOAD( "dr31.1n", 0x0100, 0x0100, CRC(3529210e) SHA1(3042ec941bdcb873077e77cffe36d4a28298bbbb) ) /* sprite palette green component */ + ROM_LOAD( "dr29.1l", 0x0200, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "dr25.3f", 0x0000, 0x0100, CRC(8e91430b) SHA1(a7a1567a0fd31cd65260f3ddb5280368704378bd) ) /* character palette red component */ - ROM_LOAD( "dr30.1m", 0x0100, 0x0100, CRC(28c73263) SHA1(ffeb8d1310759bf20b1624ab92fc91078726679c) ) /* sprite palette red component */ - ROM_LOAD( "dr26.3h", 0x0200, 0x0100, CRC(b563b93f) SHA1(86aefdaa63b35fe82f9f70eff3e4c14629f7a184) ) /* character palette green component */ - ROM_LOAD( "dr31.1n", 0x0300, 0x0100, CRC(3529210e) SHA1(3042ec941bdcb873077e77cffe36d4a28298bbbb) ) /* sprite palette green component */ - ROM_LOAD( "dr27.3j", 0x0400, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) ) /* character palette blue component */ - ROM_LOAD( "dr29.1l", 0x0500, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) ) /* sprite palette blue component */ - ROM_LOAD( "dr32.5p", 0x0600, 0x0020, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "dr28.8f", 0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ - ROM_LOAD( "dr33.6f", 0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "dr26.3h", 0x0100, 0x0100, CRC(b563b93f) SHA1(86aefdaa63b35fe82f9f70eff3e4c14629f7a184) ) /* character palette green component */ + ROM_LOAD( "dr27.3j", 0x0200, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "dr33.6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( kidnikiu ) @@ -1749,17 +1864,24 @@ ROM_START( kidnikiu ) ROM_LOAD( "dr09.4m", 0x04000, 0x4000, CRC(17df6f95) SHA1(669a81906dfd81d807cbb2b5827ddb504536cb2c) ) ROM_LOAD( "dr10.4n", 0x08000, 0x4000, CRC(820ce252) SHA1(910dbb910fdfcf9542360c0cd78c58c93d1d0c26) ) - ROM_REGION( 0x0920, "proms", 0 ) + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "dr28.8f", 0x000, 0x200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "dr32.5p", 0x00, 0x20, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "dr30.1m", 0x0000, 0x0100, CRC(28c73263) SHA1(ffeb8d1310759bf20b1624ab92fc91078726679c) ) /* sprite palette red component */ + ROM_LOAD( "dr31.1n", 0x0100, 0x0100, CRC(3529210e) SHA1(3042ec941bdcb873077e77cffe36d4a28298bbbb) ) /* sprite palette green component */ + ROM_LOAD( "dr29.1l", 0x0200, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "dr25.3f", 0x0000, 0x0100, CRC(8e91430b) SHA1(a7a1567a0fd31cd65260f3ddb5280368704378bd) ) /* character palette red component */ - ROM_LOAD( "dr30.1m", 0x0100, 0x0100, CRC(28c73263) SHA1(ffeb8d1310759bf20b1624ab92fc91078726679c) ) /* sprite palette red component */ - ROM_LOAD( "dr26.3h", 0x0200, 0x0100, CRC(b563b93f) SHA1(86aefdaa63b35fe82f9f70eff3e4c14629f7a184) ) /* character palette green component */ - ROM_LOAD( "dr31.1n", 0x0300, 0x0100, CRC(3529210e) SHA1(3042ec941bdcb873077e77cffe36d4a28298bbbb) ) /* sprite palette green component */ - ROM_LOAD( "dr27.3j", 0x0400, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) ) /* character palette blue component */ - ROM_LOAD( "dr29.1l", 0x0500, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) ) /* sprite palette blue component */ - ROM_LOAD( "dr32.5p", 0x0600, 0x0020, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "dr28.8f", 0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ - ROM_LOAD( "dr33.6f", 0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "dr26.3h", 0x0100, 0x0100, CRC(b563b93f) SHA1(86aefdaa63b35fe82f9f70eff3e4c14629f7a184) ) /* character palette green component */ + ROM_LOAD( "dr27.3j", 0x0200, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "dr33.6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END @@ -1800,17 +1922,24 @@ ROM_START( yanchamr ) ROM_LOAD( "ky_t-4m-.bin", 0x04000, 0x4000, CRC(4075c396) SHA1(5d1612a89631800693c79dce01fa2494a8b1f49a) ) ROM_LOAD( "ky_t-4n-.bin", 0x08000, 0x4000, CRC(7564f2ff) SHA1(fbf0adf3d8e15d899ece96e34019cfcc56c52ddb) ) - ROM_REGION( 0x0920, "proms", 0 ) + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "dr28.8f", 0x000, 0x200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "dr32.5p", 0x00, 0x20, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "dr30.1m", 0x0000, 0x0100, CRC(28c73263) SHA1(ffeb8d1310759bf20b1624ab92fc91078726679c) ) /* sprite palette red component */ + ROM_LOAD( "dr31.1n", 0x0100, 0x0100, CRC(3529210e) SHA1(3042ec941bdcb873077e77cffe36d4a28298bbbb) ) /* sprite palette green component */ + ROM_LOAD( "dr29.1l", 0x0200, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "dr25.3f", 0x0000, 0x0100, CRC(8e91430b) SHA1(a7a1567a0fd31cd65260f3ddb5280368704378bd) ) /* character palette red component */ - ROM_LOAD( "dr30.1m", 0x0100, 0x0100, CRC(28c73263) SHA1(ffeb8d1310759bf20b1624ab92fc91078726679c) ) /* sprite palette red component */ - ROM_LOAD( "dr26.3h", 0x0200, 0x0100, CRC(b563b93f) SHA1(86aefdaa63b35fe82f9f70eff3e4c14629f7a184) ) /* character palette green component */ - ROM_LOAD( "dr31.1n", 0x0300, 0x0100, CRC(3529210e) SHA1(3042ec941bdcb873077e77cffe36d4a28298bbbb) ) /* sprite palette green component */ - ROM_LOAD( "dr27.3j", 0x0400, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) ) /* character palette blue component */ - ROM_LOAD( "dr29.1l", 0x0500, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) ) /* sprite palette blue component */ - ROM_LOAD( "dr32.5p", 0x0600, 0x0020, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "dr28.8f", 0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ - ROM_LOAD( "dr33.6f", 0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "dr26.3h", 0x0100, 0x0100, CRC(b563b93f) SHA1(86aefdaa63b35fe82f9f70eff3e4c14629f7a184) ) /* character palette green component */ + ROM_LOAD( "dr27.3j", 0x0200, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "dr33.6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( lithero ) @@ -1843,17 +1972,24 @@ ROM_START( lithero ) ROM_LOAD( "9.bin", 0x04000, 0x4000, CRC(daafa2c1) SHA1(e7bd964faac5dfc1546e0ce629dbedf8d4da9ba6) ) ROM_LOAD( "10.bin", 0x08000, 0x4000, CRC(60649d19) SHA1(38590a3d03655a5e1a95afa9279da49b65abfa2c) ) - ROM_REGION( 0x0920, "proms", 0 ) + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "dr28.8f", 0x000, 0x200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "dr32.5p", 0x00, 0x20, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "dr30.1m", 0x0000, 0x0100, CRC(28c73263) SHA1(ffeb8d1310759bf20b1624ab92fc91078726679c) ) /* sprite palette red component */ + ROM_LOAD( "dr31.1n", 0x0100, 0x0100, CRC(3529210e) SHA1(3042ec941bdcb873077e77cffe36d4a28298bbbb) ) /* sprite palette green component */ + ROM_LOAD( "dr29.1l", 0x0200, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "dr25.3f", 0x0000, 0x0100, CRC(8e91430b) SHA1(a7a1567a0fd31cd65260f3ddb5280368704378bd) ) /* character palette red component */ - ROM_LOAD( "dr30.1m", 0x0100, 0x0100, CRC(28c73263) SHA1(ffeb8d1310759bf20b1624ab92fc91078726679c) ) /* sprite palette red component */ - ROM_LOAD( "dr26.3h", 0x0200, 0x0100, CRC(b563b93f) SHA1(86aefdaa63b35fe82f9f70eff3e4c14629f7a184) ) /* character palette green component */ - ROM_LOAD( "dr31.1n", 0x0300, 0x0100, CRC(3529210e) SHA1(3042ec941bdcb873077e77cffe36d4a28298bbbb) ) /* sprite palette green component */ - ROM_LOAD( "dr27.3j", 0x0400, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) ) /* character palette blue component */ - ROM_LOAD( "dr29.1l", 0x0500, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) ) /* sprite palette blue component */ - ROM_LOAD( "dr32.5p", 0x0600, 0x0020, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "dr28.8f", 0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ - ROM_LOAD( "dr33.6f", 0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "dr26.3h", 0x0100, 0x0100, CRC(b563b93f) SHA1(86aefdaa63b35fe82f9f70eff3e4c14629f7a184) ) /* character palette green component */ + ROM_LOAD( "dr27.3j", 0x0200, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "dr33.6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( spelunkr ) @@ -1909,17 +2045,24 @@ ROM_START( spelunkr ) ROM_CONTINUE( 0x09800, 0x0800 ) ROM_CONTINUE( 0x0b800, 0x0800 ) - ROM_REGION( 0x0920, "proms", 0 ) + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "sprm.8h", 0x000, 0x200, CRC(875cc442) SHA1(1117b6ae516c361b4cc4d0b7146ca98472ce2b21) ) /* unknown */ + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "sprb.5p", 0x00, 0x20, CRC(746c6238) SHA1(10b901bb1eca69b274999ad7ada3dd6c58bc5d84) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "sprb.1m", 0x0000, 0x0100, CRC(8d8cccad) SHA1(e984d358b6fac9e3cb4618d11ddb22e9eb422dd0) ) /* sprite palette red component */ + ROM_LOAD( "sprb.1n", 0x0100, 0x0100, CRC(c40e1cb2) SHA1(fb2aac95c852ef67d03fd2c4b5f5f9330405d435) ) /* sprite palette green component */ + ROM_LOAD( "sprb.1l", 0x0200, 0x0100, CRC(3ec46248) SHA1(734fe63b9f6e60cdd3bcc9664521b20ffe2765d9) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "sprm.2k", 0x0000, 0x0100, CRC(fd8fa991) SHA1(6e546a57de10223886a9a7480580b03b759dbd87) ) /* character palette red component */ - ROM_LOAD( "sprb.1m", 0x0100, 0x0100, CRC(8d8cccad) SHA1(e984d358b6fac9e3cb4618d11ddb22e9eb422dd0) ) /* sprite palette red component */ - ROM_LOAD( "sprm.2j", 0x0200, 0x0100, CRC(0e3890b4) SHA1(1b7c858a5729ddd3cbc7329b93082ec588a55131) ) /* character palette green component */ - ROM_LOAD( "sprb.1n", 0x0300, 0x0100, CRC(c40e1cb2) SHA1(fb2aac95c852ef67d03fd2c4b5f5f9330405d435) ) /* sprite palette green component */ - ROM_LOAD( "sprm.2h", 0x0400, 0x0100, CRC(0478082b) SHA1(e831ba7ef71632da2ab0bcc3cebbd6ef9f39a690) ) /* character palette blue component */ - ROM_LOAD( "sprb.1l", 0x0500, 0x0100, CRC(3ec46248) SHA1(734fe63b9f6e60cdd3bcc9664521b20ffe2765d9) ) /* sprite palette blue component */ - ROM_LOAD( "sprb.5p", 0x0600, 0x0020, CRC(746c6238) SHA1(10b901bb1eca69b274999ad7ada3dd6c58bc5d84) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "sprm.8h", 0x0620, 0x0200, CRC(875cc442) SHA1(1117b6ae516c361b4cc4d0b7146ca98472ce2b21) ) /* unknown */ - ROM_LOAD( "sprb.6f", 0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "sprm.2j", 0x0100, 0x0100, CRC(0e3890b4) SHA1(1b7c858a5729ddd3cbc7329b93082ec588a55131) ) /* character palette green component */ + ROM_LOAD( "sprm.2h", 0x0200, 0x0100, CRC(0478082b) SHA1(e831ba7ef71632da2ab0bcc3cebbd6ef9f39a690) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "sprb.6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( spelunkrj ) @@ -1975,17 +2118,24 @@ ROM_START( spelunkrj ) ROM_CONTINUE( 0x09800, 0x0800 ) ROM_CONTINUE( 0x0b800, 0x0800 ) - ROM_REGION( 0x0920, "proms", 0 ) + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "sprm.8h", 0x000, 0x200, CRC(875cc442) SHA1(1117b6ae516c361b4cc4d0b7146ca98472ce2b21) ) /* unknown */ + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "sprb.5p", 0x00, 0x20, CRC(746c6238) SHA1(10b901bb1eca69b274999ad7ada3dd6c58bc5d84) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "sprb.1m", 0x0000, 0x0100, CRC(8d8cccad) SHA1(e984d358b6fac9e3cb4618d11ddb22e9eb422dd0) ) /* sprite palette red component */ + ROM_LOAD( "sprb.1n", 0x0100, 0x0100, CRC(c40e1cb2) SHA1(fb2aac95c852ef67d03fd2c4b5f5f9330405d435) ) /* sprite palette green component */ + ROM_LOAD( "sprb.1l", 0x0200, 0x0100, CRC(3ec46248) SHA1(734fe63b9f6e60cdd3bcc9664521b20ffe2765d9) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "sprm.2k", 0x0000, 0x0100, CRC(fd8fa991) SHA1(6e546a57de10223886a9a7480580b03b759dbd87) ) /* character palette red component */ - ROM_LOAD( "sprb.1m", 0x0100, 0x0100, CRC(8d8cccad) SHA1(e984d358b6fac9e3cb4618d11ddb22e9eb422dd0) ) /* sprite palette red component */ - ROM_LOAD( "sprm.2j", 0x0200, 0x0100, CRC(0e3890b4) SHA1(1b7c858a5729ddd3cbc7329b93082ec588a55131) ) /* character palette green component */ - ROM_LOAD( "sprb.1n", 0x0300, 0x0100, CRC(c40e1cb2) SHA1(fb2aac95c852ef67d03fd2c4b5f5f9330405d435) ) /* sprite palette green component */ - ROM_LOAD( "sprm.2h", 0x0400, 0x0100, CRC(0478082b) SHA1(e831ba7ef71632da2ab0bcc3cebbd6ef9f39a690) ) /* character palette blue component */ - ROM_LOAD( "sprb.1l", 0x0500, 0x0100, CRC(3ec46248) SHA1(734fe63b9f6e60cdd3bcc9664521b20ffe2765d9) ) /* sprite palette blue component */ - ROM_LOAD( "sprb.5p", 0x0600, 0x0020, CRC(746c6238) SHA1(10b901bb1eca69b274999ad7ada3dd6c58bc5d84) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "sprm.8h", 0x0620, 0x0200, CRC(875cc442) SHA1(1117b6ae516c361b4cc4d0b7146ca98472ce2b21) ) /* unknown */ - ROM_LOAD( "sprb.6f", 0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_LOAD( "sprm.2j", 0x0100, 0x0100, CRC(0e3890b4) SHA1(1b7c858a5729ddd3cbc7329b93082ec588a55131) ) /* character palette green component */ + ROM_LOAD( "sprm.2h", 0x0200, 0x0100, CRC(0478082b) SHA1(e831ba7ef71632da2ab0bcc3cebbd6ef9f39a690) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "sprb.6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( spelunk2 ) @@ -2039,20 +2189,27 @@ ROM_START( spelunk2 ) ROM_CONTINUE( 0x09800, 0x0800 ) ROM_CONTINUE( 0x0b800, 0x0800 ) - ROM_REGION( 0x0a20, "proms", 0 ) - ROM_LOAD( "sp2-r.1k", 0x0000, 0x0200, CRC(31c1bcdc) SHA1(6504d5bafad427a1104562f84319d9e29f6c4800) ) /* chars red and green component */ - ROM_LOAD( "sp2-r.2k", 0x0200, 0x0100, CRC(1cf5987e) SHA1(811538304aff683d2a2a925b7e7ac990454d75f4) ) /* chars blue component */ - ROM_LOAD( "sp2-r.2j", 0x0300, 0x0100, CRC(1acbe2a5) SHA1(22b6eb43733eb40c6d2deb8a008e43c651d891e8) ) /* chars blue component */ - ROM_LOAD( "sp2-b.1m", 0x0400, 0x0100, CRC(906104c7) SHA1(e5e656d4da7f9dac32e2a112ce03be5dc3a4c46e) ) /* sprites red component */ - ROM_LOAD( "sp2-b.1n", 0x0500, 0x0100, CRC(5a564c06) SHA1(b9234983ccd69b90ae3aed19b1ac4c6c329d8302) ) /* sprites green component */ - ROM_LOAD( "sp2-b.1l", 0x0600, 0x0100, CRC(8f4a2e3c) SHA1(1d445ce63fb3e043d67f98d158dc7f0fab244248) ) /* sprites blue component */ - ROM_LOAD( "sp2-b.5p", 0x0700, 0x0020, CRC(cd126f6a) SHA1(f5a902bc93dbc98f1c78e08699ed7d1fc5d03481) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "sp2-r.8j", 0x0720, 0x0200, CRC(875cc442) SHA1(1117b6ae516c361b4cc4d0b7146ca98472ce2b21) ) /* unknown */ - ROM_LOAD( "sp2-b.6f", 0x0920, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "sp2-r.8j", 0x000, 0x200, CRC(875cc442) SHA1(1117b6ae516c361b4cc4d0b7146ca98472ce2b21) ) /* unknown */ ROM_REGION( 0x0200, "plds", 0 ) ROM_LOAD( "ampal16r4a-sp2-r-3h.bin", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */ + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "sp2-b.5p", 0x00, 0x20, CRC(cd126f6a) SHA1(f5a902bc93dbc98f1c78e08699ed7d1fc5d03481) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "sp2-b.1m", 0x0000, 0x0100, CRC(906104c7) SHA1(e5e656d4da7f9dac32e2a112ce03be5dc3a4c46e) ) /* sprites red component */ + ROM_LOAD( "sp2-b.1n", 0x0100, 0x0100, CRC(5a564c06) SHA1(b9234983ccd69b90ae3aed19b1ac4c6c329d8302) ) /* sprites green component */ + ROM_LOAD( "sp2-b.1l", 0x0200, 0x0100, CRC(8f4a2e3c) SHA1(1d445ce63fb3e043d67f98d158dc7f0fab244248) ) /* sprites blue component */ + + ROM_REGION( 0x400, "chr_color_proms", 0 ) /* different format to other games */ + ROM_LOAD( "sp2-r.1k", 0x0000, 0x0200, CRC(31c1bcdc) SHA1(6504d5bafad427a1104562f84319d9e29f6c4800) ) /* chars red and green component */ + ROM_LOAD( "sp2-r.2k", 0x0200, 0x0100, CRC(1cf5987e) SHA1(811538304aff683d2a2a925b7e7ac990454d75f4) ) /* chars blue component */ + ROM_LOAD( "sp2-r.2j", 0x0300, 0x0100, CRC(1acbe2a5) SHA1(22b6eb43733eb40c6d2deb8a008e43c651d891e8) ) /* chars blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "sp2-b.6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ ROM_END ROM_START( youjyudn ) @@ -2086,20 +2243,27 @@ ROM_START( youjyudn ) ROM_LOAD( "yju_p4mb.1", 0x04000, 0x4000, CRC(1e1a0d09) SHA1(7a4ef033d962f84e46368a21381456972d10b6dc) ) ROM_LOAD( "yju_p4pb.0", 0x08000, 0x4000, CRC(b4ab520b) SHA1(646f2467e335e527662fec2bbcb771fbb5f1b696) ) - ROM_REGION( 0x0920, "proms", 0 ) - ROM_LOAD( "yju_p2jb.bpr", 0x0000, 0x0100, CRC(a4483631) SHA1(aa8a9fadb0b0624b5784f8e9b31f774c6360b47c) ) /* character palette red component */ - ROM_LOAD( "yju_b1ma.r", 0x0100, 0x0100, CRC(a8340e13) SHA1(258da6946043d9ba7a68402299f87fda26482a1a) ) /* sprite palette red component */ - ROM_LOAD( "yju_p2kb.bpr", 0x0200, 0x0100, CRC(85481103) SHA1(1216e359f9f2057f0c7f303f6e765ec39a316df6) ) /* character palette green component */ - ROM_LOAD( "yju_b1na.g", 0x0300, 0x0100, CRC(f5b4bc41) SHA1(78271b7078a8d485ce38e3a0d647f6c071441e62) ) /* sprite palette green component */ - ROM_LOAD( "yju_p2hb.bpr", 0x0400, 0x0100, CRC(a6fd355c) SHA1(98c25797c0f24cb2df775f18bcf899501d93ca2c) ) /* character palette blue component */ - ROM_LOAD( "yju_b1la.b", 0x0500, 0x0100, CRC(45e10491) SHA1(0ae8918a9854e44970b0d3eddc52867920711f1a) ) /* sprite palette blue component */ - ROM_LOAD( "yju_b-5p.bpr", 0x0600, 0x0020, CRC(2095e6a3) SHA1(32ef8b56d161807b6eff91b88636ffad558742ea) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "yju_p-8d.bpr", 0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ - ROM_LOAD( "yju_b-6f.bpr", 0x0820, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as kungfum */ + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "yju_p-8d.bpr", 0x000, 0x200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ ROM_REGION( 0x200, "plds", 0 ) ROM_LOAD( "yju_b-pal16r4a-8m.pal", 0x0000, 0x0104, CRC(3ece8e61) SHA1(f7b04b80455068123e171a46e79d4b940bc4033d) ) + + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "yju_b-5p.bpr", 0x00, 0x20, CRC(2095e6a3) SHA1(32ef8b56d161807b6eff91b88636ffad558742ea) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "yju_b1ma.r", 0x0000, 0x0100, CRC(a8340e13) SHA1(258da6946043d9ba7a68402299f87fda26482a1a) ) /* sprite palette red component */ + ROM_LOAD( "yju_b1na.g", 0x0100, 0x0100, CRC(f5b4bc41) SHA1(78271b7078a8d485ce38e3a0d647f6c071441e62) ) /* sprite palette green component */ + ROM_LOAD( "yju_b1la.b", 0x0200, 0x0100, CRC(45e10491) SHA1(0ae8918a9854e44970b0d3eddc52867920711f1a) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) + ROM_LOAD( "yju_p2jb.bpr", 0x0000, 0x0100, CRC(a4483631) SHA1(aa8a9fadb0b0624b5784f8e9b31f774c6360b47c) ) /* character palette red component */ + ROM_LOAD( "yju_p2kb.bpr", 0x0100, 0x0100, CRC(85481103) SHA1(1216e359f9f2057f0c7f303f6e765ec39a316df6) ) /* character palette green component */ + ROM_LOAD( "yju_p2hb.bpr", 0x0200, 0x0100, CRC(a6fd355c) SHA1(98c25797c0f24cb2df775f18bcf899501d93ca2c) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "yju_b-6f.bpr", 0x000, 0x100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as kungfum */ ROM_END ROM_START( horizon ) @@ -2124,16 +2288,21 @@ ROM_START( horizon ) ROM_LOAD( "hrzb-4c.20", 0x10000, 0x4000, CRC(90b385e7) SHA1(d7a3698535bb4e9d96dd3e793b8051c74ea36eee) ) ROM_LOAD( "hrzb-4e.21", 0x14000, 0x4000, CRC(d05d77a2) SHA1(b892f690ec4a0ed4e856c677867d6eac98afaa1d) ) - ROM_REGION( 0x0720, "proms", 0 ) + ROM_REGION( 0x20, "spr_height_prom", 0 ) + ROM_LOAD( "hrzb-5p", 0x00, 0x20, CRC(208b49e9) SHA1(065f1e05dd8bb94304969147e5d497931b5ff00a) ) /* sprite height, one entry per 32 */ + + ROM_REGION( 0x300, "spr_color_proms", 0 ) + ROM_LOAD( "hrzb-1m.r", 0x0000, 0x0100, CRC(0871690a) SHA1(8065598c64e44e4fd170632048161705f15c1d7d) ) /* sprite palette red component */ + ROM_LOAD( "hrzb-1n.g", 0x0100, 0x0100, CRC(f247d0a9) SHA1(7a2ae1e9699793fecb0abd84c2ee2b08e819b6f7) ) /* sprite palette green component */ + ROM_LOAD( "hrzb-1l.b", 0x0200, 0x0100, CRC(9ad0a0c8) SHA1(0c03906deafd6cc2247b022881e0190bd59c3c1b) ) /* sprite palette blue component */ + + ROM_REGION( 0x300, "chr_color_proms", 0 ) ROM_LOAD( "hrzd-1d", 0x0000, 0x0100, CRC(b33b08f9) SHA1(00b6c4be93c4d5d5f157d08e91dfea3a0ecdeb4a) ) /* character palette red component */ - ROM_LOAD( "hrzb-1m.r", 0x0100, 0x0100, CRC(0871690a) SHA1(8065598c64e44e4fd170632048161705f15c1d7d) ) /* sprite palette red component */ - ROM_LOAD( "hrzd-1c", 0x0200, 0x0100, CRC(6e696f3a) SHA1(d66ffe0cbc42889d750d9c8b7e57a84e5dacaf3d) ) /* character palette green component */ - ROM_LOAD( "hrzb-1n.g", 0x0300, 0x0100, CRC(f247d0a9) SHA1(7a2ae1e9699793fecb0abd84c2ee2b08e819b6f7) ) /* sprite palette green component */ - ROM_LOAD( "hrzd-1e", 0x0400, 0x0100, CRC(1fa60379) SHA1(4fdcc8d68f61afaae36075919b5bec4d12f7ed8e) ) /* character palette blue component */ - ROM_LOAD( "hrzb-1l.b", 0x0500, 0x0100, CRC(9ad0a0c8) SHA1(0c03906deafd6cc2247b022881e0190bd59c3c1b) ) /* sprite palette blue component */ - ROM_LOAD( "hrzb-5p", 0x0600, 0x0020, CRC(208b49e9) SHA1(065f1e05dd8bb94304969147e5d497931b5ff00a) ) /* sprite height, one entry per 32 */ - /* sprites. Used at run time! */ - ROM_LOAD( "hrzb-6f", 0x0620, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as kungfum */ + ROM_LOAD( "hrzd-1c", 0x0100, 0x0100, CRC(6e696f3a) SHA1(d66ffe0cbc42889d750d9c8b7e57a84e5dacaf3d) ) /* character palette green component */ + ROM_LOAD( "hrzd-1e", 0x0200, 0x0100, CRC(1fa60379) SHA1(4fdcc8d68f61afaae36075919b5bec4d12f7ed8e) ) /* character palette blue component */ + + ROM_REGION( 0x100, "timing", 0 ) + ROM_LOAD( "hrzb-6f", 0x000, 0x100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as kungfum */ ROM_END @@ -2185,20 +2354,31 @@ GAME( 1984, kungfumd, kungfum, kungfum, kungfum, m62_state, 0, ROT0, GAME( 1984, spartanx, kungfum, kungfum, kungfum, m62_state, 0, ROT0, "Irem", "Spartan X (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) GAME( 1984, kungfub, kungfum, kungfum, kungfum, m62_state, 0, ROT0, "bootleg", "Kung-Fu Master (bootleg set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) GAME( 1984, kungfub2, kungfum, kungfum, kungfum, m62_state, 0, ROT0, "bootleg", "Kung-Fu Master (bootleg set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) + GAME( 1984, battroad, 0, battroad, battroad, m62_state, battroad, ROT90, "Irem", "The Battle-Road", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) + GAME( 1984, ldrun, 0, ldrun, ldrun, m62_state, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) GAME( 1984, ldruna, ldrun, ldrun, ldrun, m62_state, 0, ROT0, "Irem (licensed from Broderbund, Digital Controls Inc. license)", "Lode Runner (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) + GAME( 1984, ldrun2, 0, ldrun2, ldrun2, m62_state, ldrun2, ROT0, "Irem (licensed from Broderbund)", "Lode Runner II - The Bungeling Strikes Back", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) /* Japanese version is called Bangeringu Teikoku No Gyakushuu */ + GAME( 1985, ldrun3, 0, ldrun3, ldrun3, m62_state, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner III - The Golden Labyrinth", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) GAME( 1985, ldrun3j, ldrun3, ldrun3, ldrun3, m62_state, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner III - Majin No Fukkatsu (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) + GAME( 1986, ldrun4, 0, ldrun4, ldrun4, m62_state, ldrun4, ROT0, "Irem (licensed from Broderbund)", "Lode Runner IV - Teikoku Karano Dasshutsu (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) + GAME( 1985, lotlot, 0, lotlot, lotlot, m62_state, 0, ROT0, "Irem (licensed from Tokuma Shoten)", "Lot Lot", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) + GAME( 1986, kidniki, 0, kidniki, kidniki, m62_state, kidniki, ROT0, "Irem", "Kid Niki - Radical Ninja (World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) GAME( 1986, kidnikiu, kidniki, kidniki, kidniki, m62_state, kidniki, ROT0, "Irem (Data East USA license)", "Kid Niki - Radical Ninja (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) GAME( 1986, yanchamr, kidniki, kidniki, kidniki, m62_state, kidniki, ROT0, "Irem", "Kaiketsu Yanchamaru (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) GAME( 1987, lithero, kidniki, kidniki, kidniki, m62_state, kidniki, ROT0, "bootleg", "Little Hero", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) + GAME( 1985, spelunkr, 0, spelunkr, spelunkr, m62_state, spelunkr, ROT0, "Irem (licensed from Broderbund)", "Spelunker", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) GAME( 1985, spelunkrj,spelunkr, spelunkr, spelunkr, m62_state, spelunkr, ROT0, "Irem (licensed from Broderbund)", "Spelunker (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) + GAME( 1986, spelunk2, 0, spelunk2, spelunk2, m62_state, spelunk2, ROT0, "Irem (licensed from Broderbund)", "Spelunker II - 23 no Kagi (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) + GAME( 1986, youjyudn, 0, youjyudn, youjyudn, m62_state, youjyudn, ROT270, "Irem", "Youjyuden (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) + GAME( 1985, horizon, 0, horizon, horizon, m62_state, 0, ROT0, "Irem", "Horizon (Irem)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/macp.cpp b/src/mame/drivers/macp.cpp index 9a8e29d0e09..29896574351 100644 --- a/src/mame/drivers/macp.cpp +++ b/src/mame/drivers/macp.cpp @@ -75,6 +75,12 @@ ROM_START(macgalxy) ROM_LOAD("galaxy2.bin", 0x2000, 0x2000, CRC(f0efb723) SHA1(697b3c9f3ebedca1087354eda5dfe9719d497045)) ROM_END +ROM_START(macjungl) + ROM_REGION(0x4000, "maincpu", 0) + ROM_LOAD("jungle1.bin", 0x0000, 0x2000, CRC(461a3e1b) SHA1(96981b4d8db0412c474169eaf5e5386be5006ffe)) + ROM_LOAD("jungle2.bin", 0x2000, 0x2000, CRC(26b53e6e) SHA1(e588787b2381c0e6a42590f0e7d18d2a74ebf5f0)) +ROM_END + ROM_START(spctrain) ROM_REGION(0x8000, "maincpu", 0) ROM_LOAD("mbm27128.25", 0x0000, 0x4000, CRC(d65c5c36) SHA1(6f350b48daaecd36b3086e682ec6ee174f297a34)) @@ -132,6 +138,7 @@ ROM_END // MAC S.A. pinballs GAME( 1986, macgalxy, 0, macp0, macp, macp_state, 0, ROT0, "MAC S.A.", "MAC's Galaxy", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, macjungl, 0, macp0, macp, macp_state, 0, ROT0, "MAC S.A.", "MAC Jungle", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 1987, spctrain, 0, macp, macp, macp_state, 0, ROT0, "MAC S.A.", "Space Train (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 1988, spcpnthr, 0, macpmsm, macp, macp_state, 0, ROT0, "MAC S.A.", "Space Panther", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 19??, mac_1808, 0, macpmsm, macp, macp_state, 0, ROT0, "MAC S.A.", "Unknown Game (MAC #1808)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/magicard.cpp b/src/mame/drivers/magicard.cpp index 01a56c3287b..a3234b46931 100644 --- a/src/mame/drivers/magicard.cpp +++ b/src/mame/drivers/magicard.cpp @@ -978,7 +978,7 @@ INTERRUPT_GEN_MEMBER(magicard_state::magicard_irq) device.execute().set_input_line_and_vector(1, HOLD_LINE, 0xf0 / 4); } -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, magicard_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, magicard_state ) AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/mappy.cpp b/src/mame/drivers/mappy.cpp index 9794e777f65..3a3ec8a7d28 100644 --- a/src/mame/drivers/mappy.cpp +++ b/src/mame/drivers/mappy.cpp @@ -552,6 +552,7 @@ TODO: #include "includes/mappy.h" #include "cpu/m6809/m6809.h" +#include "machine/74157.h" #include "machine/watchdog.h" #include "sound/volt_reg.h" #include "speaker.h" @@ -1282,37 +1283,37 @@ static INPUT_PORTS_START( phozon ) PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) - PORT_START("DSW2") /* 56XX #1 pins 38-41 multiplexed */ - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") - PORT_DIPSETTING( 0x02, "1" ) - PORT_DIPSETTING( 0x03, "3" ) - PORT_DIPSETTING( 0x01, "4" ) + PORT_START("DSW2") /* 56XX #1 pins 38-41 multiplexed and interleaved */ + PORT_DIPNAME( 0x11, 0x11, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:2,1") + PORT_DIPSETTING( 0x01, "1" ) // 1 on, 2 off + PORT_DIPSETTING( 0x11, "3" ) + PORT_DIPSETTING( 0x10, "4" ) // 2 on, 1 off PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:3,4,5") - PORT_DIPSETTING( 0x08, "20k & 80k Only" ) PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00) - PORT_DIPSETTING( 0x10, "20k, 80k & Every 80k" ) PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00) - PORT_DIPSETTING( 0x04, "30k Only" ) PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00) - PORT_DIPSETTING( 0x18, "30k & 60k Only" ) PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00) - PORT_DIPSETTING( 0x1c, "30k & 100k Only" ) PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00) -// PORT_DIPSETTING( 0x14, "30k 100k" ) // repeated PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00) - PORT_DIPSETTING( 0x0c, "30k, 120k & Every 120k" ) PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00) - PORT_DIPSETTING( 0x0c, "20k & 80k Only" ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00) - PORT_DIPSETTING( 0x08, "30k" ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00) - PORT_DIPSETTING( 0x10, "30k, 100k & Every 100k" ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00) - PORT_DIPSETTING( 0x1c, "30k & 100k Only" ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00) -// PORT_DIPSETTING( 0x14, "30k 100k" ) // repeated PORT_CONDITION("DSW2",0x02,EQUALS,0x00) - PORT_DIPSETTING( 0x18, "40k & 80k Only" ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00) - PORT_DIPSETTING( 0x04, "100k Only" ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00) + PORT_DIPNAME( 0x62, 0x62, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:4,3,5") + PORT_DIPSETTING( 0x02, "20k & 80k Only" ) PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00) + PORT_DIPSETTING( 0x40, "20k, 80k & Every 80k" ) PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00) + PORT_DIPSETTING( 0x20, "30k Only" ) PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00) + PORT_DIPSETTING( 0x42, "30k & 60k Only" ) PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00) + PORT_DIPSETTING( 0x62, "30k & 100k Only" ) PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00) +// PORT_DIPSETTING( 0x60, "30k 100k" ) // repeated PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00) + PORT_DIPSETTING( 0x22, "30k, 120k & Every 120k" ) PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00) + PORT_DIPSETTING( 0x22, "20k & 80k Only" ) PORT_CONDITION("DSW2",0x01,EQUALS,0x00) + PORT_DIPSETTING( 0x02, "30k" ) PORT_CONDITION("DSW2",0x01,EQUALS,0x00) + PORT_DIPSETTING( 0x40, "30k, 100k & Every 100k" ) PORT_CONDITION("DSW2",0x01,EQUALS,0x00) + PORT_DIPSETTING( 0x62, "30k & 100k Only" ) PORT_CONDITION("DSW2",0x01,EQUALS,0x00) +// PORT_DIPSETTING( 0x60, "30k 100k" ) // repeated PORT_CONDITION("DSW2",0x01,EQUALS,0x00) + PORT_DIPSETTING( 0x42, "40k & 80k Only" ) PORT_CONDITION("DSW2",0x01,EQUALS,0x00) + PORT_DIPSETTING( 0x20, "100k Only" ) PORT_CONDITION("DSW2",0x01,EQUALS,0x00) PORT_DIPSETTING( 0x00, DEF_STR( None ) ) - PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:6,7,8") + PORT_DIPNAME( 0x8c, 0x8c, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:6,8,7") PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0xe0, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x20, DEF_STR( 2C_3C ) ) - PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0xa0, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x80, DEF_STR( 1C_6C ) ) - PORT_DIPSETTING( 0x60, DEF_STR( 1C_7C ) ) + PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x8c, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x88, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_6C ) ) + PORT_DIPSETTING( 0x84, DEF_STR( 1C_7C ) ) INPUT_PORTS_END @@ -1607,25 +1608,6 @@ GFXDECODE_END ***************************************************************************/ -READ8_MEMBER(mappy_state::dipA_l){ return ioport("DSW1")->read(); } // dips A -READ8_MEMBER(mappy_state::dipA_h){ return ioport("DSW1")->read() >> 4; } // dips A - -READ8_MEMBER(mappy_state::dipB_mux)// dips B -{ - return ioport("DSW2")->read() >> (4 * m_mux); -} - -READ8_MEMBER(mappy_state::dipB_muxi)// dips B -{ - // bits are interleaved in Phozon - return BITSWAP8(ioport("DSW2")->read(),6,4,2,0,7,5,3,1) >> (4 * m_mux); -} - -WRITE8_MEMBER(mappy_state::out_mux) -{ - m_mux = data & 1; -} - WRITE8_MEMBER(mappy_state::out_lamps) { output().set_led_value(0, data & 1); @@ -1718,11 +1700,15 @@ static MACHINE_CONFIG_START( superpac ) MCFG_NAMCO56XX_IN_3_CB(IOPORT("BUTTONS")) MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0) - MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_mux)) - MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l)) - MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h)) + MCFG_NAMCO56XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r)) + MCFG_NAMCO56XX_IN_1_CB(IOPORT("DSW1")) + MCFG_NAMCO56XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4) MCFG_NAMCO56XX_IN_3_CB(IOPORT("DSW0")) - MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux)) + MCFG_NAMCO56XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0) + + MCFG_DEVICE_ADD("dipmux", LS157, 0) + MCFG_74157_A_IN_CB(IOPORT("DSW2")) + MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4) MACHINE_CONFIG_END static MACHINE_CONFIG_START( pacnpal ) @@ -1740,11 +1726,15 @@ static MACHINE_CONFIG_START( pacnpal ) MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_lamps)) MCFG_DEVICE_ADD("namcoio_2", NAMCO_59XX, 0) - MCFG_NAMCO59XX_IN_0_CB(READ8(mappy_state, dipB_mux)) - MCFG_NAMCO59XX_IN_1_CB(READ8(mappy_state, dipA_l)) - MCFG_NAMCO59XX_IN_2_CB(READ8(mappy_state, dipA_h)) + MCFG_NAMCO59XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r)) + MCFG_NAMCO59XX_IN_1_CB(IOPORT("DSW1")) + MCFG_NAMCO59XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4) MCFG_NAMCO59XX_IN_3_CB(IOPORT("DSW0")) - MCFG_NAMCO59XX_OUT_0_CB(WRITE8(mappy_state, out_mux)) + MCFG_NAMCO59XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0) + + MCFG_DEVICE_ADD("dipmux", LS157, 0) + MCFG_74157_A_IN_CB(IOPORT("DSW2")) + MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4) MACHINE_CONFIG_END @@ -1762,11 +1752,15 @@ static MACHINE_CONFIG_START( grobda ) MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS")) MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0) - MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_mux)) - MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l)) - MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h)) + MCFG_NAMCO56XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r)) + MCFG_NAMCO56XX_IN_1_CB(IOPORT("DSW1")) + MCFG_NAMCO56XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4) MCFG_NAMCO56XX_IN_3_CB(IOPORT("DSW0")) - MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux)) + MCFG_NAMCO56XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0) + + MCFG_DEVICE_ADD("dipmux", LS157, 0) + MCFG_74157_A_IN_CB(IOPORT("DSW2")) + MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4) /* sound hardware */ MCFG_SOUND_ADD("dac", DAC_4BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.275) // alternate route to 15XX-related DAC? @@ -1804,11 +1798,15 @@ static MACHINE_CONFIG_START( phozon ) MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS")) MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0) - MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_muxi)) - MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l)) - MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h)) + MCFG_NAMCO56XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r)) + MCFG_NAMCO56XX_IN_1_CB(IOPORT("DSW1")) + MCFG_NAMCO56XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4) MCFG_NAMCO56XX_IN_3_CB(IOPORT("DSW0")) - MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux)) + MCFG_NAMCO56XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0) + + MCFG_DEVICE_ADD("dipmux", LS157, 0) + MCFG_74157_A_IN_CB(IOPORT("DSW2")) + MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4) /* video hardware */ MCFG_GFXDECODE_ADD("gfxdecode", "palette", phozon) @@ -1882,11 +1880,15 @@ static MACHINE_CONFIG_START( mappy ) MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS")) MCFG_DEVICE_ADD("namcoio_2", NAMCO_58XX, 0) - MCFG_NAMCO58XX_IN_0_CB(READ8(mappy_state, dipB_mux)) - MCFG_NAMCO58XX_IN_1_CB(READ8(mappy_state, dipA_l)) - MCFG_NAMCO58XX_IN_2_CB(READ8(mappy_state, dipA_h)) + MCFG_NAMCO58XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r)) + MCFG_NAMCO58XX_IN_1_CB(IOPORT("DSW1")) + MCFG_NAMCO58XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4) MCFG_NAMCO58XX_IN_3_CB(IOPORT("DSW0")) - MCFG_NAMCO58XX_OUT_0_CB(WRITE8(mappy_state, out_mux)) + MCFG_NAMCO58XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0) + + MCFG_DEVICE_ADD("dipmux", LS157, 0) + MCFG_74157_A_IN_CB(IOPORT("DSW2")) + MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4) MACHINE_CONFIG_END static MACHINE_CONFIG_START( digdug2 ) @@ -1906,11 +1908,15 @@ static MACHINE_CONFIG_START( digdug2 ) MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS")) MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0) - MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_mux)) - MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l)) - MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h)) + MCFG_NAMCO56XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r)) + MCFG_NAMCO56XX_IN_1_CB(IOPORT("DSW1")) + MCFG_NAMCO56XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4) MCFG_NAMCO56XX_IN_3_CB(IOPORT("DSW0")) - MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux)) + MCFG_NAMCO56XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0) + + MCFG_DEVICE_ADD("dipmux", LS157, 0) + MCFG_74157_A_IN_CB(IOPORT("DSW2")) + MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( todruaga, digdug2 ) @@ -1936,11 +1942,15 @@ static MACHINE_CONFIG_START( motos ) MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_lamps)) MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0) - MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_mux)) - MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l)) - MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h)) + MCFG_NAMCO56XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r)) + MCFG_NAMCO56XX_IN_1_CB(IOPORT("DSW1")) + MCFG_NAMCO56XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4) MCFG_NAMCO56XX_IN_3_CB(IOPORT("DSW0")) - MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux)) + MCFG_NAMCO56XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0) + + MCFG_DEVICE_ADD("dipmux", LS157, 0) + MCFG_74157_A_IN_CB(IOPORT("DSW2")) + MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4) MACHINE_CONFIG_END diff --git a/src/mame/drivers/mc1000.cpp b/src/mame/drivers/mc1000.cpp index 43c0152a153..e5925c41d74 100644 --- a/src/mame/drivers/mc1000.cpp +++ b/src/mame/drivers/mc1000.cpp @@ -237,7 +237,7 @@ static ADDRESS_MAP_START( mc1000_mem, AS_PROGRAM, 8, mc1000_state ) AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION(Z80_TAG, 0) ADDRESS_MAP_END -static ADDRESS_MAP_START( mc1000_banking_mem, AS_DECRYPTED_OPCODES, 8, mc1000_state ) +static ADDRESS_MAP_START( mc1000_banking_mem, AS_OPCODES, 8, mc1000_state ) AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("bank1") AM_RANGE(0x2000, 0x27ff) AM_RAMBANK("bank2") AM_SHARE("mc6845_vram") AM_RANGE(0x2800, 0x3fff) AM_RAM AM_SHARE("ram2800") diff --git a/src/mame/drivers/mediagx.cpp b/src/mame/drivers/mediagx.cpp index 989c9006bc3..8ca454abb69 100644 --- a/src/mame/drivers/mediagx.cpp +++ b/src/mame/drivers/mediagx.cpp @@ -866,7 +866,7 @@ void mediagx_state::machine_reset() dmadac_enable(&m_dmadac[0], 2, 1); } -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, mediagx_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, mediagx_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp index 452108eeafd..3e96df7ad6a 100644 --- a/src/mame/drivers/megasys1.cpp +++ b/src/mame/drivers/megasys1.cpp @@ -413,7 +413,7 @@ static ADDRESS_MAP_START( megasys1D_map, AS_PROGRAM, 16, megasys1_state ) AM_RANGE(0x1f0000, 0x1fffff) AM_RAM /*_WRITE(ram_w)*/ AM_SHARE("ram") ADDRESS_MAP_END -static ADDRESS_MAP_START( megasys1D_oki_map, AS_0, 8, megasys1_state ) +static ADDRESS_MAP_START( megasys1D_oki_map, 0, 8, megasys1_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -1803,7 +1803,7 @@ static MACHINE_CONFIG_START( system_D ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki1", SYS_D_CPU_CLOCK/4, PIN7_HIGH) /* 2MHz (8MHz / 4) */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, megasys1D_oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, megasys1D_oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -3645,8 +3645,19 @@ ROM_START( rodlandj ) ROM_LOAD( "PS89013A.M14", 0x0000, 0x0200, CRC(8914e72d) SHA1(80a664471f14c8ed8544a5e226fdca425ab3c657) ) ROM_END -/* probably a prototype, original JP key and unscrambled ROMs, incorrect - audio matches PCB */ +/* + +Prototype or test location. Original Japanese key and unscrambled ROMs, incorrect audio matches actual PCB. + +Title is controlled by the value at 0xF0D7A - 0x00 for Japan region and Rod-Land title / 0x01 for Export and R&T title. + These same locations and values work for the Japanese set, but not the Export version. In R&T 0xF0D7A is initialized to 0x01 + +To access the hidden Location Test Table, during the attaction mode at the title screen with NO Coins / Credits, use Player 1 + controls to enter: + + D U B1 D D B2 U U B1 B2 + + */ ROM_START( rittam ) ROM_REGION( 0x60000, "maincpu", 0 ) /* Main CPU Code */ ROM_LOAD16_BYTE( "2.ROM2", 0x000000, 0x020000, CRC(93085af2) SHA1(e49dc1e62c1cec75f192ac4608f69c4361ad739a) ) @@ -4613,7 +4624,7 @@ GAME( 1989, stdragona,stdragon, system_A, stdragon, megasys1_state, std GAME( 1989, stdragonb,stdragon, system_A, stdragon, megasys1_state, stdragonb,ROT0, "bootleg","Saint Dragon (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, rodland, 0, system_A, rodland, megasys1_state, rodland, ROT0, "Jaleco", "Rod-Land (World)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, rodlandj, rodland, system_A, rodland, megasys1_state, rodlandj, ROT0, "Jaleco", "Rod-Land (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, rittam, rodland, system_A, rodland, megasys1_state, rittam, ROT0, "Jaleco", "R&T (Rod-Land prototype?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, rittam, rodland, system_A, rodland, megasys1_state, rittam, ROT0, "Jaleco", "R&T (Rod-Land prototype)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, rodlandjb,rodland, system_A, rodland, megasys1_state, rodlandjb,ROT0, "bootleg","Rod-Land (Japan bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, phantasm, avspirit, system_A, phantasm, megasys1_state, phantasm, ROT0, "Jaleco", "Phantasm (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, edfp, edf, system_A, edfp, megasys1_state, edfp, ROT0, "Jaleco", "E.D.F. : Earth Defense Force (Japan, prototype)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/metlfrzr.cpp b/src/mame/drivers/metlfrzr.cpp index 6d87987e312..b943c3ffd8b 100644 --- a/src/mame/drivers/metlfrzr.cpp +++ b/src/mame/drivers/metlfrzr.cpp @@ -202,7 +202,7 @@ static ADDRESS_MAP_START( metlfrzr_map, AS_PROGRAM, 8, metlfrzr_state ) AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("wram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, metlfrzr_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, metlfrzr_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("wram") // executes code at 0xf5d5 diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp index 490fb592c44..fb9fe77f03e 100644 --- a/src/mame/drivers/metro.cpp +++ b/src/mame/drivers/metro.cpp @@ -712,7 +712,7 @@ ADDRESS_MAP_END /*****************/ -static ADDRESS_MAP_START( ymf278_map, AS_0, 8, metro_state ) +static ADDRESS_MAP_START( ymf278_map, 0, 8, metro_state ) AM_RANGE(0x000000, 0x27ffff) AM_ROM ADDRESS_MAP_END @@ -1680,7 +1680,7 @@ static ADDRESS_MAP_START( mouja_map, AS_PROGRAM, 16, metro_state ) #endif ADDRESS_MAP_END -static ADDRESS_MAP_START( mouja_okimap, AS_0, 8, metro_state ) +static ADDRESS_MAP_START( mouja_okimap, 0, 8, metro_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -3689,7 +3689,7 @@ static MACHINE_CONFIG_START( msgogo ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("ymf", YMF278B, YMF278B_STD_CLOCK) - MCFG_DEVICE_ADDRESS_MAP(AS_0, ymf278_map) + MCFG_DEVICE_ADDRESS_MAP(0, ymf278_map) MCFG_YMF278B_IRQ_HANDLER(INPUTLINE("maincpu", 2)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -4321,7 +4321,7 @@ static MACHINE_CONFIG_START( mouja ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", XTAL_16MHz/1024*132, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, mouja_okimap) + MCFG_DEVICE_ADDRESS_MAP(0, mouja_okimap) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) diff --git a/src/mame/drivers/microkit.cpp b/src/mame/drivers/microkit.cpp index a0fbb10e271..f5d72d9f89b 100644 --- a/src/mame/drivers/microkit.cpp +++ b/src/mame/drivers/microkit.cpp @@ -134,4 +134,4 @@ ROM_START( microkit ) ROM_LOAD( "4.2a", 0x100, 0x100, CRC(27267bad) SHA1(838df9be2dc175584a1a6ee1770039118e49482e) ) ROM_END -COMP( 1975, microkit, 0, 0, microkit, microkit, microkit_state, 0, "RCA", "COSMAC Microkit", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1975, microkit, 0, 0, microkit, microkit, microkit_state, 0, "RCA", "COSMAC Microkit", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/mitchell.cpp b/src/mame/drivers/mitchell.cpp index 3be6be09ed1..a55cdb9f17b 100644 --- a/src/mame/drivers/mitchell.cpp +++ b/src/mame/drivers/mitchell.cpp @@ -334,7 +334,7 @@ static ADDRESS_MAP_START( mitchell_map, AS_PROGRAM, 8, mitchell_state ) AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */ ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, mitchell_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, mitchell_state ) AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */ diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp index 2f927a1f435..b5582fba10b 100644 --- a/src/mame/drivers/model2.cpp +++ b/src/mame/drivers/model2.cpp @@ -860,6 +860,7 @@ WRITE32_MEMBER(model2_state::copro_sharc_iop_w) if ((strcmp(machine().system().name, "schamp" ) == 0) || (strcmp(machine().system().name, "sfight" ) == 0) || (strcmp(machine().system().name, "fvipers" ) == 0) || + (strcmp(machine().system().name, "fvipersb" ) == 0) || (strcmp(machine().system().name, "vstriker" ) == 0) || (strcmp(machine().system().name, "vstrikero" ) == 0) || (strcmp(machine().system().name, "gunblade" ) == 0) || @@ -5563,6 +5564,65 @@ ROM_START( fvipers ) /* Fighting Vipers Revision D, Model 2B */ ROM_LOAD("mpr-18632.35", 0x600000, 0x200000, CRC(39da6805) SHA1(9e9523b7c2bc50f869d062f80955da1281951299) ) ROM_END +ROM_START( fvipersb ) /* Fighting Vipers Revision B, Model 2B */ + ROM_REGION( 0x200000, "maincpu", 0 ) // i960 program + ROM_LOAD32_WORD("epr-18606b.15", 0x000000, 0x020000, CRC(3b6d1697) SHA1(569ea2ed5c3431207854d260c8ed5266d8d39595) ) + ROM_LOAD32_WORD("epr-18607b.16", 0x000002, 0x020000, CRC(2e6c2d91) SHA1(226ea4cca475f708e42591b57eb0a996c214ab29) ) + ROM_LOAD32_WORD("epr-18604b.13", 0x040000, 0x020000, CRC(e4af1048) SHA1(c682354c01a50b5e62a4f1b79fd7dfb5314a020a) ) + ROM_LOAD32_WORD("epr-18605b.14", 0x040002, 0x020000, CRC(78a6668f) SHA1(f73cb61aaa3fd4092d335676b64e8f08141a0223) ) + + ROM_REGION32_LE( 0x2000000, "user1", 0 ) // Data + ROM_LOAD32_WORD("mpr-18614.11", 0x0000000, 0x400000, CRC(0ebc899f) SHA1(49c80b11b207cba4ec10fbb7cc140f3a5b039e82) ) + ROM_LOAD32_WORD("mpr-18615.12", 0x0000002, 0x400000, CRC(018abdb7) SHA1(59e5b6378404e10ace4f3675428d61d3ae9d1963) ) + ROM_LOAD32_WORD("mpr-18612.9", 0x0800000, 0x400000, CRC(1f174cd1) SHA1(89b56dd2f350edd093dc06f4cc258652c26b1d45) ) + ROM_LOAD32_WORD("mpr-18613.10", 0x0800002, 0x400000, CRC(f057cdf2) SHA1(e16d5de2a00670aba4fbe0dc88ccf317de9842be) ) + ROM_LOAD32_WORD("epr-18610b.7", 0x1000000, 0x080000, CRC(5f227d7c) SHA1(89091b3a23d6557fb65add2fd7f6b7fb58fb1db5) ) + ROM_LOAD32_WORD("epr-18611b.8", 0x1000002, 0x080000, CRC(39a75fee) SHA1(c962805f03e2503dd1671ba3e906c6e306a92e48) ) + ROM_COPY( "user1", 0x1000000, 0x1100000, 0x100000 ) // rgn,srcoffset,offset,length. + ROM_COPY( "user1", 0x1000000, 0x1200000, 0x100000 ) + ROM_COPY( "user1", 0x1000000, 0x1300000, 0x100000 ) + ROM_COPY( "user1", 0x1000000, 0x1400000, 0x100000 ) + ROM_COPY( "user1", 0x1000000, 0x1500000, 0x100000 ) + ROM_COPY( "user1", 0x1000000, 0x1600000, 0x100000 ) + ROM_COPY( "user1", 0x1000000, 0x1700000, 0x100000 ) + ROM_LOAD32_WORD("epr-18608b.5", 0x1800000, 0x080000, CRC(7df5082f) SHA1(04dd08c115bbf045610fd58f6a2c911425921c6d) ) + ROM_LOAD32_WORD("epr-18609b.6", 0x1800002, 0x080000, CRC(e771fec9) SHA1(2e996f27730780d38b4446ed70864645f7f9386f) ) + ROM_COPY( "user1", 0x1800000, 0x1900000, 0x100000 ) // rgn,srcoffset,offset,length. + ROM_COPY( "user1", 0x1800000, 0x1a00000, 0x100000 ) + ROM_COPY( "user1", 0x1800000, 0x1b00000, 0x100000 ) + ROM_COPY( "user1", 0x1800000, 0x1c00000, 0x100000 ) + ROM_COPY( "user1", 0x1800000, 0x1d00000, 0x100000 ) + ROM_COPY( "user1", 0x1800000, 0x1e00000, 0x100000 ) + ROM_COPY( "user1", 0x1800000, 0x1f00000, 0x100000 ) + + ROM_REGION( 0x800000, "user5", 0 ) // Coprocessor Data ROM + ROM_LOAD32_WORD("mpr-18622.29", 0x000000, 0x200000, CRC(c74d99e3) SHA1(9914be9925b86af6af670745b5eba3a9e4f24af9) ) + ROM_LOAD32_WORD("mpr-18623.30", 0x000002, 0x200000, CRC(746ae931) SHA1(a6f0f589ad174a34493ee24dc0cb509ead3aed70) ) + + ROM_REGION( 0xc00000, "user2", 0 ) // Models + ROM_LOAD32_WORD("mpr-18616.17", 0x000000, 0x200000, CRC(15a239be) SHA1(1a33c48f99eed20da4b622219d21ec5995acc9aa) ) + ROM_LOAD32_WORD("mpr-18619.21", 0x000002, 0x200000, CRC(9d5e8e2b) SHA1(f79ae0a7b966ddb0948b464d233845d4f362a2e7) ) + ROM_LOAD32_WORD("mpr-18617.18", 0x400000, 0x200000, CRC(a62cab7d) SHA1(f20a545148f2a1d6f4f1c897f1ed82ad17429dce) ) + ROM_LOAD32_WORD("mpr-18620.22", 0x400002, 0x200000, CRC(4d432afd) SHA1(30a1ef1e309a163b2d8756810fc33debf069141c) ) + ROM_LOAD32_WORD("mpr-18618.19", 0x800000, 0x200000, CRC(adab589f) SHA1(67818ec4185da17f1549fb3a125cade267a46a48) ) + ROM_LOAD32_WORD("mpr-18621.23", 0x800002, 0x200000, CRC(f5eeaa95) SHA1(38d7019afcef6dbe292354d717fd49da511cbc2b) ) + + ROM_REGION( 0x1000000, "user3", 0 ) // Textures + ROM_LOAD32_WORD("mpr-18626.27", 0x000000, 0x200000, CRC(9df0a961) SHA1(d8fb4bbbdc00303330047be380a79da7838d4fd5) ) + ROM_LOAD32_WORD("mpr-18624.25", 0x000002, 0x200000, CRC(1d74433e) SHA1(5b6d2d17609ae741546d99d40f575bb24d62b5d3) ) + ROM_LOAD32_WORD("mpr-18627.28", 0x800000, 0x200000, CRC(946175a0) SHA1(8b6e5e1342f98c9c6f2f7d61e843275d244f331a) ) + ROM_LOAD32_WORD("mpr-18625.26", 0x800002, 0x200000, CRC(182fd572) SHA1(b09a682eff7e835ff8c33aaece12f3727a91dd5e) ) + + ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program + ROM_LOAD16_WORD_SWAP("epr-18628.31", 0x080000, 0x80000, CRC(aa7dd79f) SHA1(d8bd1485273652d7c2a303bbdcdf607d3b530283) ) + + ROM_REGION( 0x800000, "scsp", 0 ) // Samples + ROM_LOAD("mpr-18629.32", 0x000000, 0x200000, CRC(5d0006cc) SHA1(f6d2552ffc5473836aafb06735b62f65ef8f5ef5) ) + ROM_LOAD("mpr-18630.33", 0x200000, 0x200000, CRC(9d405615) SHA1(7e7ffbb4ec080a0815c6ca49b9d8efe1f676203b) ) + ROM_LOAD("mpr-18631.34", 0x400000, 0x200000, CRC(9dae5b45) SHA1(055ac989eafb81749326520d0be264f7a984c627) ) + ROM_LOAD("mpr-18632.35", 0x600000, 0x200000, CRC(39da6805) SHA1(9e9523b7c2bc50f869d062f80955da1281951299) ) +ROM_END + ROM_START( daytona ) /* Daytona USA (Japan, Revision A), Original Model 2 w/Model 1 sound board */ ROM_REGION( 0x200000, "maincpu", 0 ) // i960 program ROM_LOAD32_WORD("epr-16722a.12", 0x000000, 0x020000, CRC(48b94318) SHA1(a476a9a3531beef760c88c9634ed4a7d270e8ee7) ) @@ -6251,6 +6311,7 @@ GAME( 1998, pltkidsa, pltkids, model2a_5881, model2, model2_state, pltkids, GAME( 1994, vstriker, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Virtua Striker (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1994, vstrikero, vstriker, model2b, model2, model2_state, 0, ROT0, "Sega", "Virtua Striker", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, fvipers, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Fighting Vipers (Revision D)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, fvipersb, fvipers, model2b, model2, model2_state, 0, ROT0, "Sega", "Fighting Vipers (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, gunblade, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Gunblade NY (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, indy500, 0, model2b, srallyc, model2_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A, Newer)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, indy500d, indy500, model2b, srallyc, model2_state, 0, ROT0, "Sega", "INDY 500 Deluxe (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/mouser.cpp b/src/mame/drivers/mouser.cpp index 6dfa00ac4e9..fe3def5cf69 100644 --- a/src/mame/drivers/mouser.cpp +++ b/src/mame/drivers/mouser.cpp @@ -79,7 +79,7 @@ static ADDRESS_MAP_START( mouser_map, AS_PROGRAM, 8, mouser_state ) AM_RANGE(0xb800, 0xb800) AM_READ_PORT("P2") AM_WRITE(mouser_sound_interrupt_w) /* byte to sound cpu */ ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, mouser_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, mouser_state ) AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/mpf1.cpp b/src/mame/drivers/mpf1.cpp index f850c163a6e..44a610eeb74 100644 --- a/src/mame/drivers/mpf1.cpp +++ b/src/mame/drivers/mpf1.cpp @@ -64,7 +64,7 @@ static ADDRESS_MAP_START( mpf1_map, AS_PROGRAM, 8, mpf1_state ) AM_RANGE(0x1800, 0x1fff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( mpf1_step, AS_DECRYPTED_OPCODES, 8, mpf1_state ) +static ADDRESS_MAP_START( mpf1_step, AS_OPCODES, 8, mpf1_state ) AM_RANGE(0x0000, 0xffff) AM_READ(step_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/mpu4vid.cpp b/src/mame/drivers/mpu4vid.cpp index e89923c6e79..0217f6ee6e8 100644 --- a/src/mame/drivers/mpu4vid.cpp +++ b/src/mame/drivers/mpu4vid.cpp @@ -393,7 +393,7 @@ READ8_MEMBER(mpu4vid_state::vram_r) return m_vid_mainram[offset]; } -static ADDRESS_MAP_START( mpu4_vram, AS_0, 8, mpu4vid_state ) +static ADDRESS_MAP_START( mpu4_vram, 0, 8, mpu4vid_state ) AM_RANGE(0x0000, 0x7fff) AM_READWRITE(vram_r, vram_w) ADDRESS_MAP_END @@ -1285,7 +1285,7 @@ static MACHINE_CONFIG_START( mpu4_vid ) MCFG_SCN2674_TEXT_CHARACTER_WIDTH(8) MCFG_SCN2674_GFX_CHARACTER_WIDTH(8) MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(mpu4vid_state, display_pixels) - MCFG_DEVICE_ADDRESS_MAP(AS_0, mpu4_vram) + MCFG_DEVICE_ADDRESS_MAP(0, mpu4_vram) MCFG_CPU_ADD("video", M68000, VIDEO_MASTER_CLOCK ) diff --git a/src/mame/drivers/mquake.cpp b/src/mame/drivers/mquake.cpp index 45a6f6f935f..4f9c087577b 100644 --- a/src/mame/drivers/mquake.cpp +++ b/src/mame/drivers/mquake.cpp @@ -79,7 +79,7 @@ READ8_MEMBER( mquake_state::es5503_sample_r ) return m_es5503_rom[offset + (m_es5503->get_channel_strobe() * 0x10000)]; } -static ADDRESS_MAP_START( mquake_es5503_map, AS_0, 8, mquake_state ) +static ADDRESS_MAP_START( mquake_es5503_map, 0, 8, mquake_state ) AM_RANGE(0x000000, 0x1ffff) AM_READ(es5503_sample_r) ADDRESS_MAP_END @@ -338,7 +338,7 @@ static MACHINE_CONFIG_START( mquake ) MCFG_ES5503_ADD("es5503", amiga_state::CLK_7M_NTSC) /* ES5503 is likely mono due to channel strobe used as bank select */ MCFG_ES5503_OUTPUT_CHANNELS(1) - MCFG_DEVICE_ADDRESS_MAP(AS_0, mquake_es5503_map) + MCFG_DEVICE_ADDRESS_MAP(0, mquake_es5503_map) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(0, "rspeaker", 0.50) diff --git a/src/mame/drivers/mustache.cpp b/src/mame/drivers/mustache.cpp index 845d8d65609..5e99fdc8072 100644 --- a/src/mame/drivers/mustache.cpp +++ b/src/mame/drivers/mustache.cpp @@ -65,7 +65,7 @@ static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, mustache_state ) AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, mustache_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, mustache_state ) AM_RANGE(0x0000, 0x7fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000) ADDRESS_MAP_END diff --git a/src/mame/drivers/mz3500.cpp b/src/mame/drivers/mz3500.cpp index fd00f0b88f4..0b53f5ddfe3 100644 --- a/src/mame/drivers/mz3500.cpp +++ b/src/mame/drivers/mz3500.cpp @@ -786,12 +786,12 @@ void mz3500_state::machine_reset() } -static ADDRESS_MAP_START( upd7220_1_map, AS_0, 16, mz3500_state ) +static ADDRESS_MAP_START( upd7220_1_map, 0, 16, mz3500_state ) ADDRESS_MAP_GLOBAL_MASK(0x1fff) AM_RANGE(0x00000, 0x00fff) AM_RAM AM_SHARE("video_ram") ADDRESS_MAP_END -static ADDRESS_MAP_START( upd7220_2_map, AS_0, 16, mz3500_state ) +static ADDRESS_MAP_START( upd7220_2_map, 0, 16, mz3500_state ) AM_RANGE(0x00000, 0x3ffff) AM_RAM // AM_SHARE("video_ram_2") ADDRESS_MAP_END @@ -826,12 +826,12 @@ static MACHINE_CONFIG_START( mz3500 ) MCFG_FLOPPY_DRIVE_ADD("upd765a:3", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats) MCFG_DEVICE_ADD("upd7220_chr", UPD7220, MAIN_CLOCK/5) - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_1_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_1_map) MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(mz3500_state, hgdc_draw_text) MCFG_UPD7220_VSYNC_CALLBACK(DEVWRITELINE("upd7220_gfx", upd7220_device, ext_sync_w)) MCFG_DEVICE_ADD("upd7220_gfx", UPD7220, MAIN_CLOCK/5) - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_2_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_2_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(mz3500_state, hgdc_display_pixels) /* video hardware */ diff --git a/src/mame/drivers/mz6500.cpp b/src/mame/drivers/mz6500.cpp index 6c371c2ac59..bdbb53d0d33 100644 --- a/src/mame/drivers/mz6500.cpp +++ b/src/mame/drivers/mz6500.cpp @@ -132,7 +132,7 @@ static SLOT_INTERFACE_START( mz6500_floppies ) SLOT_INTERFACE( "525hd", FLOPPY_525_HD ) SLOT_INTERFACE_END -static ADDRESS_MAP_START( upd7220_map, AS_0, 16, mz6500_state ) +static ADDRESS_MAP_START( upd7220_map, 0, 16, mz6500_state ) AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram") ADDRESS_MAP_END @@ -155,7 +155,7 @@ static MACHINE_CONFIG_START( mz6500 ) /* Devices */ MCFG_DEVICE_ADD("upd7220", UPD7220, 8000000/6) // unk clock - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(mz6500_state, hgdc_display_pixels) MCFG_UPD765A_ADD("upd765", true, true) diff --git a/src/mame/drivers/namcond1.cpp b/src/mame/drivers/namcond1.cpp index 076367d81d5..bb17c5598cf 100644 --- a/src/mame/drivers/namcond1.cpp +++ b/src/mame/drivers/namcond1.cpp @@ -10,9 +10,8 @@ Walter Fath abcheck TODOs: - - Default eeprom. AT28C16 writes 0x820 byte nvram, but will only accept 0x800. Why? - YGV608 brokenness - - Hook up controls properly (two buttons only for 3 players, and only 1 coin slot, mapped as player 2) + - Where is the extra data ROM mapped? To make abcheck run when the EEPROM is clear: - F2 to enter service mode @@ -498,6 +497,9 @@ ROM_START( abcheck ) ROM_REGION( 0x8000, "zpr2", 0 ) ROM_LOAD( "m48z30y.ic3", 0x000000, 0x008000, CRC(bfa687bb) SHA1(463ae40f21b675f3b4155efda9c965b71519a49e) ) + ROM_REGION( 0x800, "at28c16", 0 ) + ROM_LOAD( "at28c16.12e", 0x000000, 0x000800, CRC(df92af14) SHA1(1ae8c318f1eb2628e97914d15a06779c7bb87506) ) + ROM_REGION( 0x220000, "printer", 0 ) ROM_LOAD( "np-b205_nmc_ver1.00.u9", 0x000000, 0x020000, CRC(445ceb0d) SHA1(49491b936f50577564196992df3a3c93aa3fcc99) ) ROM_LOAD( "npg1624lc.u4", 0x020000, 0x200000, CRC(7e00254f) SHA1(b0fa8f979e8322d71f842de5358ae2a2e36386f7) ) diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp index bb2664de41d..e8dad940b16 100644 --- a/src/mame/drivers/naomi.cpp +++ b/src/mame/drivers/naomi.cpp @@ -721,7 +721,7 @@ Notes: /Shin Nihon Prowrestling Toukon /FL0 & FL1 have pin55 raised from PCB. \Retsuden 4 Arcade Edition (Japan, Ver.A) F2X 25349801 2 (64Mb) 15 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM TRF1 \They are connected together and go to pin89 on 2K. World Kicks PCB (Japan, WKC1 Ver.A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC1 uses Namco V226 JVS I/O (not dumped) -World Kicks PCB (World, WKC2 Ver.A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC2 not dumped, known to exists +World Kicks PCB (World, WKC2 Ver.A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC2 World Kicks (Japan, WK1 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK1 World Kicks (World, WK2 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK2 World Kicks (US, WK3 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK3 @@ -2983,6 +2983,18 @@ other points of interest: F - 8x analogue inputs Probably at some stage of development NAOMI was planned as non-JVS system as well, and inputs must be wired to CN19-21, unpopulated on retail hardware. +Multi-region hack notes: +These hacks uses 1KB "NAOMIHAT" IPL from HOTD2 proto BIOS to bypass hardware checksum protection and make the rest of ROM moddable. +Besides IPL it is 2 bytes patch (4 for Naomi2), which enables region-switching function implemented by Sega itself, but left it disabled +(original enable trigger: if text at 001FFD00 will be NOT equal to "COPYRIGHT (C) SEGA etc..."). +DIP switch settings: +DSW2 DSW3 DSW4 +OFF OFF OFF Japan +ON OFF OFF USA +OFF ON OFF Export +ON ON OFF Korea +OFF OFF ON Australia + */ // game specific bios roms quite clearly don't belong in here. // Japan bios is default, because most games require it. @@ -3034,6 +3046,8 @@ Probably at some stage of development NAOMI was planned as non-JVS system as wel ROM_LOAD16_WORD_SWAP_BIOS( 21, "develop110.ic27", 0x000000, 0x200000, CRC(de7cfdb0) SHA1(da16800edc4d49f70481c124d487f544c2fa8ce7) ) \ ROM_SYSTEM_BIOS( 22, "bios22", "Naomi Unknown Dev board" ) \ ROM_LOAD16_WORD_SWAP_BIOS( 22, "zukinver0930.ipl", 0x000000, 0x200000, CRC(58e17c23) SHA1(19330f906accf1b859f56bbcedc2edff73747599) ) \ + ROM_SYSTEM_BIOS( 23, "bios23", "epr-21576h (multi-region hack)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 23, "epr-21576h_multi.ic27", 0x000000, 0x200000, CRC(cce01f1f) SHA1(cca17119ad13e3a4ef7cb6902a37b65d6a844aee) ) \ ROM_REGION( 0x4000, "altera_pof", 0) \ ROM_LOAD("315-6188.ic31", 0x0000, 0x2034, CRC(7c9fea46) SHA1(f77c07ae65dfed18c1c4c632c8945be21d02ddaf) ) @@ -3158,7 +3172,9 @@ Region byte encoding is as follows: ROM_SYSTEM_BIOS( 8, "bios8", "epr-23607b (USA)" ) \ ROM_LOAD16_WORD_SWAP_BIOS( 8, "epr-23607b.ic27", 0x000000, 0x200000, CRC(f308c5e9) SHA1(5470ab1cee6afecbd8ca8cf40f8fbe4ec2cb1471) ) \ ROM_SYSTEM_BIOS( 9, "bios9", "epr-23607 (USA)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 9, "epr-23607.ic27", 0x000000, 0x200000, CRC(2b55add2) SHA1(547de5f97d3183c8cd069c4fa3c09f13d8b637d9) ) + ROM_LOAD16_WORD_SWAP_BIOS( 9, "epr-23607.ic27", 0x000000, 0x200000, CRC(2b55add2) SHA1(547de5f97d3183c8cd069c4fa3c09f13d8b637d9) ) \ + ROM_SYSTEM_BIOS( 10, "bios10", "epr-23605c (multi-region hack)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 10, "epr-23605c_multi.ic27", 0x000000, 0x200000, CRC(353fdbcd) SHA1(a8b7dce572b74e02e65cb949b2c366c87625157f) ) /* First half is BIOS, second half is game settings and is blanked/reprogrammed by the BIOS if game cartridge exchange was detected area 0x1A000-0x1BFFF is write protected and contain 12 bytes of unit-specific unique information (probably serial number, manufacture date, etc), @@ -6477,6 +6493,28 @@ ROM_START( wldkickspj ) ROM_PARAMETER( ":rom_board:segam2crypt:key", "052e2901" ) ROM_END +ROM_START( wldkickspw ) + NAOMI_BIOS + NAOMI_DEFAULT_EEPROM + + ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF) + ROM_LOAD( "wkc2vera.2d", 0x0800000, 0x800000, CRC(431d0d0a) SHA1(10212040d5debc8c7209b8285d8bfb29c666326c) ) + ROM_LOAD( "wkc1vera.2c", 0x1000000, 0x800000, CRC(d946656a) SHA1(b135848a23d6dc97bbce8a923cddb6b60668eedf) ) + + ROM_LOAD( "wk1ma2.4m", 0x2000000, 0x1000000, CRC(3b340dc0) SHA1(2412e41d5bd74d1233fb91f8ce2276a318bfc53d) ) + ROM_LOAD( "wk1ma3.4l", 0x3000000, 0x1000000, CRC(263fbb16) SHA1(b5d3a3d085f9623d70030ca3c49afb84e25549e3) ) + ROM_LOAD( "wk1ma4.4k", 0x4000000, 0x1000000, CRC(9697db68) SHA1(7926e2acff0519403afcba9bdb5f68de28b06c79) ) + ROM_LOAD( "wk1ma5.4j", 0x5000000, 0x1000000, CRC(65017db3) SHA1(a66cd73cdfc9355df63da781a46aa832889f583a) ) + ROM_LOAD( "wk1ma6.4h", 0x6000000, 0x1000000, CRC(902eea85) SHA1(aa7964eb85b468d4fe112f9f0faaf2fa3f1aa96b) ) + ROM_LOAD( "wk1ma7.4f", 0x7000000, 0x1000000, CRC(90e917ed) SHA1(53d32ce0ae2b05fa55a95b8697927045d07f4e8a) ) + ROM_LOAD( "wk1ma8.4e", 0x8000000, 0x1000000, CRC(1d227a05) SHA1(9f816bcdf0279785e0b37ab2f3c5eb5912114dd5) ) + ROM_LOAD( "wk1ma9.4d", 0x9000000, 0x1000000, CRC(29635a54) SHA1(a3109d0f8f271e2183316846df2a6a819f6a9b20) ) + ROM_LOAD( "wk1ma10.4c", 0xa000000, 0x1000000, CRC(e96f312c) SHA1(0a92640277111aef5c6e9dab4218a8ae2196ce61) ) + + // 25209801 2000 317-5040-COM Naomi + ROM_PARAMETER( ":rom_board:segam2crypt:key", "052e2901" ) +ROM_END + ROM_START( toukon4 ) NAOMI_BIOS NAOMI_DEFAULT_EEPROM @@ -10101,7 +10139,7 @@ ROM_END /* 25469801 */ GAME( 2000, ninjasltu, ninjaslt, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Ninja Assault (US, NJA3 Ver.A)", GAME_FLAGS ) /* 25469801 */ GAME( 2000, ninjaslta, ninjaslt, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Ninja Assault (Asia, NJA4 Ver.A)", GAME_FLAGS ) /* 25509801 */ GAME( 2000, wldkickspj, wldkicks, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "World Kicks PCB (Japan, WKC1 Ver.A)", GAME_FLAGS ) // "PCB" means upright version, uses analog button on control panel to kick the ball -// 25509801 World Kicks PCB (World, WKC2 Ver.A) +/* 25509801 */ GAME( 2000, wldkickspw, wldkicks, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "World Kicks PCB (World, WKC2 Ver.A)", GAME_FLAGS ) // "PCB" means upright version, uses analog button on control panel to kick the ball /* 25709801 */ GAME( 2001, gunsur2j, gunsur2, naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica (Japan, BHF1 Ver.E)", GAME_FLAGS ) /* 25709801 */ GAME( 2001, gunsur2, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica (World, BHF2 Ver.E)", GAME_FLAGS ) /* 25869812 */ GAME( 2002, mazan, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Mazan: Flash of the Blade (World, MAZ2 Ver.A)", GAME_FLAGS ) diff --git a/src/mame/drivers/nemesis.cpp b/src/mame/drivers/nemesis.cpp index f42a1533d7d..e7a9a45e350 100644 --- a/src/mame/drivers/nemesis.cpp +++ b/src/mame/drivers/nemesis.cpp @@ -436,7 +436,7 @@ static ADDRESS_MAP_START( gx400_sound_map, AS_PROGRAM, 8, nemesis_state ) ADDRESS_MAP_END // gx400 voice data is not in a ROM but in sound RAM at $8000 -static ADDRESS_MAP_START( gx400_vlm_map, AS_0, 8, nemesis_state ) +static ADDRESS_MAP_START( gx400_vlm_map, 0, 8, nemesis_state ) ADDRESS_MAP_GLOBAL_MASK(0x7ff) AM_RANGE(0x000, 0x7ff) AM_RAM AM_SHARE("voiceram") ADDRESS_MAP_END @@ -563,7 +563,7 @@ static ADDRESS_MAP_START( sal_sound_map, AS_PROGRAM, 8, nemesis_state ) AM_RANGE(0xf000, 0xf000) AM_WRITE(salamand_speech_start_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( salamand_vlm_map, AS_0, 8, nemesis_state ) +static ADDRESS_MAP_START( salamand_vlm_map, 0, 8, nemesis_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x3fff) AM_ROM ADDRESS_MAP_END @@ -1593,7 +1593,7 @@ static MACHINE_CONFIG_START( gx400 ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) MCFG_SOUND_ADD("vlm", VLM5030, 3579545) - MCFG_DEVICE_ADDRESS_MAP(AS_0, gx400_vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, gx400_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END @@ -1710,7 +1710,7 @@ static MACHINE_CONFIG_START( rf2_gx400 ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MCFG_SOUND_ADD("vlm", VLM5030, 3579545) - MCFG_DEVICE_ADDRESS_MAP(AS_0, gx400_vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, gx400_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END @@ -1748,7 +1748,7 @@ static MACHINE_CONFIG_START( salamand ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_SOUND_ADD("vlm", VLM5030, 3579545) - MCFG_DEVICE_ADDRESS_MAP(AS_0, salamand_vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, salamand_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 2.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 2.50) @@ -1944,7 +1944,7 @@ static MACHINE_CONFIG_START( hcrash ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_SOUND_ADD("vlm", VLM5030, 3579545) - MCFG_DEVICE_ADDRESS_MAP(AS_0, salamand_vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, salamand_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00) @@ -2717,7 +2717,7 @@ static MACHINE_CONFIG_START( bubsys ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) MCFG_SOUND_ADD("vlm", VLM5030, 3579545) - MCFG_DEVICE_ADDRESS_MAP(AS_0, gx400_vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, gx400_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END diff --git a/src/mame/drivers/ngen.cpp b/src/mame/drivers/ngen.cpp index 53c0d522d9a..974f1ccf8ad 100644 --- a/src/mame/drivers/ngen.cpp +++ b/src/mame/drivers/ngen.cpp @@ -1176,6 +1176,6 @@ ROM_START( 386i ) ROM_END -COMP( 1983, ngen, 0, 0, ngen, ngen, ngen_state, 0, "Convergent Technologies", "NGEN CP-001", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1991, ngenb38, ngen, 0, ngen386, ngen, ngen386_state, 0, "Financial Products Corp.", "B28/38", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1990, 386i, ngen, 0, 386i, ngen, ngen386_state, 0, "Convergent Technologies", "386i", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1983, ngen, 0, 0, ngen, ngen, ngen_state, 0, "Convergent Technologies", "NGEN CP-001", MACHINE_IS_SKELETON ) +COMP( 1991, ngenb38, ngen, 0, ngen386, ngen, ngen386_state, 0, "Financial Products Corp.", "B28/38", MACHINE_IS_SKELETON ) +COMP( 1990, 386i, ngen, 0, 386i, ngen, ngen386_state, 0, "Convergent Technologies", "386i", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/ninjakd2.cpp b/src/mame/drivers/ninjakd2.cpp index d1685649fbc..4d50332e624 100644 --- a/src/mame/drivers/ninjakd2.cpp +++ b/src/mame/drivers/ninjakd2.cpp @@ -479,7 +479,7 @@ static ADDRESS_MAP_START( ninjakid_nopcm_sound_cpu, AS_PROGRAM, 8, ninjakd2_stat AM_RANGE(0xf000, 0xf000) AM_NOP ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, ninjakd2_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, ninjakd2_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("soundcpu", 0x8000) ADDRESS_MAP_END diff --git a/src/mame/drivers/nmk16.cpp b/src/mame/drivers/nmk16.cpp index ad72efa7257..9a49a280e73 100644 --- a/src/mame/drivers/nmk16.cpp +++ b/src/mame/drivers/nmk16.cpp @@ -960,12 +960,12 @@ static ADDRESS_MAP_START( ssmissin_sound_map, AS_PROGRAM, 8, nmk16_state ) AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END -static ADDRESS_MAP_START( oki1_map, AS_0, 8, nmk16_state ) +static ADDRESS_MAP_START( oki1_map, 0, 8, nmk16_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank1") ADDRESS_MAP_END -static ADDRESS_MAP_START( oki2_map, AS_0, 8, nmk16_state ) +static ADDRESS_MAP_START( oki2_map, 0, 8, nmk16_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank2") ADDRESS_MAP_END @@ -3907,11 +3907,11 @@ static MACHINE_CONFIG_START( tharrier ) MCFG_SOUND_ROUTE(3, "mono", 1.20) MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -3947,11 +3947,11 @@ static MACHINE_CONFIG_START( mustang ) MCFG_SOUND_ROUTE(3, "mono", 1.20) MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -4028,11 +4028,11 @@ static MACHINE_CONFIG_START( bioship ) MCFG_SOUND_ROUTE(3, "mono", 1.20) MCFG_OKIM6295_ADD("oki1", BIOSHIP_CRYSTAL2 / 3 , PIN7_LOW) /* 4.0 Mhz, Pin 7 High (verified) */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_OKIM6295_ADD("oki2", BIOSHIP_CRYSTAL2 / 3 , PIN7_LOW) /* 4.0 Mhz, Pin 7 High (verified) */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -4068,11 +4068,11 @@ static MACHINE_CONFIG_START( vandyke ) MCFG_SOUND_ROUTE(3, "mono", 1.20) MCFG_OKIM6295_ADD("oki1", XTAL_12MHz/3, PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_OKIM6295_ADD("oki2", XTAL_12MHz/3, PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -4136,11 +4136,11 @@ static MACHINE_CONFIG_START( acrobatm ) MCFG_SOUND_ROUTE(3, "mono", 1.20) MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) /* (verified on pcb) on the pcb pin7 is not connected to gnd or +5v! */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) /* (verified on pcb) on the pcb pin7 is not connected to gnd or +5v! */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -4215,11 +4215,11 @@ static MACHINE_CONFIG_START( tdragon ) MCFG_SOUND_ROUTE(3, "mono", 1.20) MCFG_OKIM6295_ADD("oki1", XTAL_8MHz/2, PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_OKIM6295_ADD("oki2", XTAL_8MHz/2, PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( tdragon_prot, tdragon ) @@ -4253,7 +4253,7 @@ static MACHINE_CONFIG_START( ssmissin ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_OKIM6295_ADD("oki1", 8000000/8, PIN7_HIGH) /* 1 Mhz, pin 7 high */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -4289,11 +4289,11 @@ static MACHINE_CONFIG_START( strahl ) MCFG_SOUND_ROUTE(3, "mono", 1.20) MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -4329,11 +4329,11 @@ static MACHINE_CONFIG_START( hachamf ) MCFG_SOUND_ROUTE(3, "mono", 1.20) MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( hachamf_prot, hachamf ) @@ -4373,11 +4373,11 @@ static MACHINE_CONFIG_START( macross ) MCFG_SOUND_ROUTE(3, "mono", 1.20) MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -4413,11 +4413,11 @@ static MACHINE_CONFIG_START( blkheart ) MCFG_SOUND_ROUTE(3, "mono", 1.20) MCFG_OKIM6295_ADD("oki1", XTAL_8MHz/2, PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_OKIM6295_ADD("oki2", XTAL_8MHz/2, PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -4452,11 +4452,11 @@ static MACHINE_CONFIG_START( gunnail ) MCFG_SOUND_ROUTE(3, "mono", 1.20) MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/4, PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/4, PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -4720,11 +4720,11 @@ static MACHINE_CONFIG_START( manybloc ) MCFG_SOUND_ROUTE(3, "mono", 1.20) MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END diff --git a/src/mame/drivers/nokia_3310.cpp b/src/mame/drivers/nokia_3310.cpp index 70760ddec54..c8000246790 100644 --- a/src/mame/drivers/nokia_3310.cpp +++ b/src/mame/drivers/nokia_3310.cpp @@ -874,15 +874,15 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -SYST( 1999, noki3210, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 3210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 1999, noki7110, 0, 0, noki7110, noki3310, noki3310_state, 0, "Nokia", "Nokia 7110", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 1999, noki8210, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 8210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 1999, noki8850, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 8850", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2000, noki3310, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 3310", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2000, noki6210, 0, 0, noki6210, noki3310, noki3310_state, 0, "Nokia", "Nokia 6210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2000, noki6250, 0, 0, noki6210, noki3310, noki3310_state, 0, "Nokia", "Nokia 6250", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2000, noki8250, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 8250", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2000, noki8890, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 8890", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2001, noki3330, 0, 0, noki3330, noki3310, noki3310_state, 0, "Nokia", "Nokia 3330", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2002, noki3410, 0, 0, noki3410, noki3310, noki3310_state, 0, "Nokia", "Nokia 3410", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2002, noki5210, 0, 0, noki3330, noki3310, noki3310_state, 0, "Nokia", "Nokia 5210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +SYST( 1999, noki3210, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 3210", MACHINE_IS_SKELETON ) +SYST( 1999, noki7110, 0, 0, noki7110, noki3310, noki3310_state, 0, "Nokia", "Nokia 7110", MACHINE_IS_SKELETON ) +SYST( 1999, noki8210, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 8210", MACHINE_IS_SKELETON ) +SYST( 1999, noki8850, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 8850", MACHINE_IS_SKELETON ) +SYST( 2000, noki3310, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 3310", MACHINE_IS_SKELETON ) +SYST( 2000, noki6210, 0, 0, noki6210, noki3310, noki3310_state, 0, "Nokia", "Nokia 6210", MACHINE_IS_SKELETON ) +SYST( 2000, noki6250, 0, 0, noki6210, noki3310, noki3310_state, 0, "Nokia", "Nokia 6250", MACHINE_IS_SKELETON ) +SYST( 2000, noki8250, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 8250", MACHINE_IS_SKELETON ) +SYST( 2000, noki8890, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 8890", MACHINE_IS_SKELETON ) +SYST( 2001, noki3330, 0, 0, noki3330, noki3310, noki3310_state, 0, "Nokia", "Nokia 3330", MACHINE_IS_SKELETON ) +SYST( 2002, noki3410, 0, 0, noki3410, noki3310, noki3310_state, 0, "Nokia", "Nokia 3410", MACHINE_IS_SKELETON ) +SYST( 2002, noki5210, 0, 0, noki3330, noki3310, noki3310_state, 0, "Nokia", "Nokia 5210", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/octopus.cpp b/src/mame/drivers/octopus.cpp index 74f2ec1f5ad..4a7fe0f145d 100644 --- a/src/mame/drivers/octopus.cpp +++ b/src/mame/drivers/octopus.cpp @@ -326,7 +326,7 @@ static ADDRESS_MAP_START( octopus_sub_io, AS_IO, 8, octopus_state ) AM_RANGE(0x0000, 0xffff) AM_READWRITE(z80_io_r, z80_io_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( octopus_vram, AS_0, 8, octopus_state ) +static ADDRESS_MAP_START( octopus_vram, 0, 8, octopus_state ) AM_RANGE(0x0000,0xffff) AM_READWRITE(vram_r, vram_w) ADDRESS_MAP_END @@ -989,7 +989,7 @@ static MACHINE_CONFIG_START( octopus ) MCFG_SCN2674_TEXT_CHARACTER_WIDTH(8) MCFG_SCN2674_GFX_CHARACTER_WIDTH(8) MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(octopus_state, display_pixels) - MCFG_DEVICE_ADDRESS_MAP(AS_0, octopus_vram) + MCFG_DEVICE_ADDRESS_MAP(0, octopus_vram) MCFG_DEVICE_ADD("z80_bank", ADDRESS_MAP_BANK, 0) MCFG_DEVICE_PROGRAM_MAP(octopus_mem) diff --git a/src/mame/drivers/ohmygod.cpp b/src/mame/drivers/ohmygod.cpp index aef61a5398f..4f94eef6147 100644 --- a/src/mame/drivers/ohmygod.cpp +++ b/src/mame/drivers/ohmygod.cpp @@ -62,7 +62,7 @@ static ADDRESS_MAP_START( ohmygod_map, AS_PROGRAM, 16, ohmygod_state ) AM_RANGE(0xd00000, 0xd00001) AM_WRITE(ohmygod_spritebank_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, ohmygod_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, ohmygod_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -347,7 +347,7 @@ static MACHINE_CONFIG_START( ohmygod ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", 14000000/8, PIN7_HIGH) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/osborne1.cpp b/src/mame/drivers/osborne1.cpp index ff62f099c78..08ea6f59657 100644 --- a/src/mame/drivers/osborne1.cpp +++ b/src/mame/drivers/osborne1.cpp @@ -110,7 +110,7 @@ static ADDRESS_MAP_START( osborne1_mem, AS_PROGRAM, 8, osborne1_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( osborne1_op, AS_DECRYPTED_OPCODES, 8, osborne1_state ) +static ADDRESS_MAP_START( osborne1_op, AS_OPCODES, 8, osborne1_state ) AM_RANGE( 0x0000, 0xFFFF ) AM_READ(opcode_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp index 7d285d56619..29d8c152187 100644 --- a/src/mame/drivers/overdriv.cpp +++ b/src/mame/drivers/overdriv.cpp @@ -255,7 +255,7 @@ static ADDRESS_MAP_START( overdriv_sound_map, AS_PROGRAM, 8, overdriv_state ) AM_RANGE(0x1000, 0xffff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( overdriv_k053260_map, AS_0, 8, overdriv_state ) +static ADDRESS_MAP_START( overdriv_k053260_map, 0, 8, overdriv_state ) AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_REGION("k053260", 0) ADDRESS_MAP_END @@ -383,12 +383,12 @@ static MACHINE_CONFIG_START( overdriv ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.5) MCFG_K053260_ADD("k053260_1", XTAL_3_579545MHz) - MCFG_DEVICE_ADDRESS_MAP(AS_0, overdriv_k053260_map) + MCFG_DEVICE_ADDRESS_MAP(0, overdriv_k053260_map) MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) MCFG_K053260_ADD("k053260_2", XTAL_3_579545MHz) - MCFG_DEVICE_ADDRESS_MAP(AS_0, overdriv_k053260_map) + MCFG_DEVICE_ADDRESS_MAP(0, overdriv_k053260_map) MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) MACHINE_CONFIG_END diff --git a/src/mame/drivers/pacman.cpp b/src/mame/drivers/pacman.cpp index 4138b9d9c11..c012fbe91b5 100644 --- a/src/mame/drivers/pacman.cpp +++ b/src/mame/drivers/pacman.cpp @@ -991,7 +991,7 @@ ADDRESS_MAP_END // The Pacman code uses $5004 and $5005 for LED's and $5007 for coin lockout. This hardware does not // exist on any Pacman or Puckman board I have seen. DW -static ADDRESS_MAP_START( patched_opcodes_map, AS_DECRYPTED_OPCODES, 8, pacman_state ) +static ADDRESS_MAP_START( patched_opcodes_map, AS_OPCODES, 8, pacman_state ) AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x8000) AM_ROM AM_SHARE("patched_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/pbaction.cpp b/src/mame/drivers/pbaction.cpp index a8054c40fc8..37416270468 100644 --- a/src/mame/drivers/pbaction.cpp +++ b/src/mame/drivers/pbaction.cpp @@ -104,7 +104,7 @@ static ADDRESS_MAP_START( pbaction_map, AS_PROGRAM, 8, pbaction_state ) AM_RANGE(0xe800, 0xe800) AM_WRITE(pbaction_sh_command_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, pbaction_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, pbaction_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000) ADDRESS_MAP_END diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp index bba8da85dae..de598dfbdb0 100644 --- a/src/mame/drivers/pc9801.cpp +++ b/src/mame/drivers/pc9801.cpp @@ -2109,7 +2109,7 @@ WRITE16_MEMBER(pc9801_state::grcg_gvram0_w) upd7220_grcg_w(space, offset | (m_vram_bank << 16), data, mem_mask); } -static ADDRESS_MAP_START( ipl_bank, AS_0, 16, pc9801_state ) +static ADDRESS_MAP_START( ipl_bank, 0, 16, pc9801_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_REGION("ipl", 0) ADDRESS_MAP_END @@ -2534,15 +2534,15 @@ static ADDRESS_MAP_START( pc9821_io, AS_IO, 32, pc9801_state ) // AM_RANGE(0xfcd0, 0xfcd3) MIDI port, option F / ADDRESS_MAP_END -static ADDRESS_MAP_START( upd7220_1_map, AS_0, 16, pc9801_state ) +static ADDRESS_MAP_START( upd7220_1_map, 0, 16, pc9801_state ) AM_RANGE(0x00000, 0x03fff) AM_RAM AM_SHARE("video_ram_1") ADDRESS_MAP_END -static ADDRESS_MAP_START( upd7220_2_map, AS_0, 16, pc9801_state ) +static ADDRESS_MAP_START( upd7220_2_map, 0, 16, pc9801_state ) AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram_2") ADDRESS_MAP_END -static ADDRESS_MAP_START( upd7220_grcg_2_map, AS_0, 16, pc9801_state ) +static ADDRESS_MAP_START( upd7220_grcg_2_map, 0, 16, pc9801_state ) AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(upd7220_grcg_r, upd7220_grcg_w) AM_SHARE("video_ram_2") ADDRESS_MAP_END @@ -3353,12 +3353,12 @@ static MACHINE_CONFIG_START( pc9801_common ) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1) MCFG_DEVICE_ADD("upd7220_chr", UPD7220, 5000000/2) - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_1_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_1_map) MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(pc9801_state, hgdc_draw_text) MCFG_UPD7220_VSYNC_CALLBACK(DEVWRITELINE("upd7220_btm", upd7220_device, ext_sync_w)) MCFG_DEVICE_ADD("upd7220_btm", UPD7220, 5000000/2) - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_2_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_2_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(pc9801_state, hgdc_display_pixels) MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3433,7 +3433,7 @@ static MACHINE_CONFIG_START( pc9801rs ) MCFG_RAM_EXTRA_OPTIONS("640K,3712K,7808K,14M") MCFG_DEVICE_MODIFY("upd7220_btm") - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_grcg_2_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_grcg_2_map) MCFG_PALETTE_ADD("palette", 16+16) MCFG_PALETTE_INIT_OWNER(pc9801_state,pc9801) diff --git a/src/mame/drivers/pcxt.cpp b/src/mame/drivers/pcxt.cpp index 09ea4794b1b..42bfd095cbf 100644 --- a/src/mame/drivers/pcxt.cpp +++ b/src/mame/drivers/pcxt.cpp @@ -388,7 +388,7 @@ static ADDRESS_MAP_START( tetriskr_io, AS_IO, 8, pcxt_state ) // AM_RANGE(0x03ce, 0x03ce) AM_READ_PORT("IN1") //read then discarded? ADDRESS_MAP_END -static ADDRESS_MAP_START( bank_map, AS_0, 8, pcxt_state ) +static ADDRESS_MAP_START( bank_map, 0, 8, pcxt_state ) AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("game_prg", 0) ADDRESS_MAP_END diff --git a/src/mame/drivers/pengo.cpp b/src/mame/drivers/pengo.cpp index d05915fccea..923150fbe72 100644 --- a/src/mame/drivers/pengo.cpp +++ b/src/mame/drivers/pengo.cpp @@ -148,7 +148,7 @@ static ADDRESS_MAP_START( pengo_map, AS_PROGRAM, 8, pengo_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, pengo_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, pengo_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8800, 0x8fef) AM_RAM AM_SHARE("mainram") AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_SHARE("spriteram") @@ -404,7 +404,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( pengou, pengo ) MCFG_CPU_MODIFY("maincpu") - MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_DECRYPTED_OPCODES) + MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( pengoe, pengo ) @@ -420,7 +420,7 @@ static MACHINE_CONFIG_DERIVED( jrpacmbl, pengo ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(jrpacmbl_map) - MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_DECRYPTED_OPCODES) + MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES) MCFG_VIDEO_START_OVERRIDE(pengo_state,jrpacman) MACHINE_CONFIG_END diff --git a/src/mame/drivers/pentagon.cpp b/src/mame/drivers/pentagon.cpp index 8cfe7c0581e..a1c8e5763ca 100644 --- a/src/mame/drivers/pentagon.cpp +++ b/src/mame/drivers/pentagon.cpp @@ -188,7 +188,7 @@ static ADDRESS_MAP_START (pentagon_io, AS_IO, 8, pentagon_state ) AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd) ADDRESS_MAP_END -static ADDRESS_MAP_START (pentagon_switch, AS_DECRYPTED_OPCODES, 8, pentagon_state) +static ADDRESS_MAP_START (pentagon_switch, AS_OPCODES, 8, pentagon_state) AM_RANGE(0x3d00, 0x3dff) AM_READ(beta_enable_r) AM_RANGE(0x0000, 0x3fff) AM_READ(beta_neutral_r) // Overlap with previous because we want real addresses on the 3e00-3fff range AM_RANGE(0x4000, 0xffff) AM_READ(beta_disable_r) diff --git a/src/mame/drivers/pinball2k.cpp b/src/mame/drivers/pinball2k.cpp index c9457464af1..b9ecdf28513 100644 --- a/src/mame/drivers/pinball2k.cpp +++ b/src/mame/drivers/pinball2k.cpp @@ -587,7 +587,7 @@ void pinball2k_state::machine_reset() m_maincpu->reset(); } -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, pinball2k_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, pinball2k_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/pinkiri8.cpp b/src/mame/drivers/pinkiri8.cpp index c50b0d06b04..ac875a38e91 100644 --- a/src/mame/drivers/pinkiri8.cpp +++ b/src/mame/drivers/pinkiri8.cpp @@ -111,7 +111,7 @@ protected: virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; address_space_config m_space_config; }; @@ -145,9 +145,11 @@ void janshi_vdp_device::device_validity_check(validity_checker &valid) const {} void janshi_vdp_device::device_start() {} void janshi_vdp_device::device_reset() {} -const address_space_config *janshi_vdp_device::memory_space_config(address_spacenum spacenum) const +std::vector> janshi_vdp_device::memory_space_config() const { - return (spacenum == 0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } void pinkiri8_state::video_start() {} diff --git a/src/mame/drivers/pktgaldx.cpp b/src/mame/drivers/pktgaldx.cpp index f837a93205c..28be685e28e 100644 --- a/src/mame/drivers/pktgaldx.cpp +++ b/src/mame/drivers/pktgaldx.cpp @@ -114,7 +114,7 @@ static ADDRESS_MAP_START( pktgaldx_map, AS_PROGRAM, 16, pktgaldx_state ) AM_RANGE(0x170000, 0x17ffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, pktgaldx_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, pktgaldx_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/playmark.cpp b/src/mame/drivers/playmark.cpp index fd0d4c4e7a5..ee70a17b2ef 100644 --- a/src/mame/drivers/playmark.cpp +++ b/src/mame/drivers/playmark.cpp @@ -408,7 +408,7 @@ static ADDRESS_MAP_START( luckboomh_main_map, AS_PROGRAM, 16, playmark_state ) AM_RANGE(0xff8000, 0xffffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, playmark_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, playmark_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -1246,7 +1246,7 @@ static MACHINE_CONFIG_START( bigtwin ) MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END static MACHINE_CONFIG_START( bigtwinb ) @@ -1286,7 +1286,7 @@ static MACHINE_CONFIG_START( bigtwinb ) MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END static MACHINE_CONFIG_START( wbeachvl ) @@ -1330,7 +1330,7 @@ static MACHINE_CONFIG_START( wbeachvl ) MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END static MACHINE_CONFIG_START( excelsr ) @@ -1370,7 +1370,7 @@ static MACHINE_CONFIG_START( excelsr ) MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) /* 1MHz resonator */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END static MACHINE_CONFIG_START( hrdtimes ) @@ -1411,7 +1411,7 @@ static MACHINE_CONFIG_START( hrdtimes ) MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END static MACHINE_CONFIG_START( hotmind ) @@ -1457,7 +1457,7 @@ static MACHINE_CONFIG_START( hotmind ) MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END static MACHINE_CONFIG_START( luckboomh ) @@ -1502,7 +1502,7 @@ static MACHINE_CONFIG_START( luckboomh ) MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END diff --git a/src/mame/drivers/plus4.cpp b/src/mame/drivers/plus4.cpp index 229139ef426..2b8977f3ee0 100644 --- a/src/mame/drivers/plus4.cpp +++ b/src/mame/drivers/plus4.cpp @@ -481,7 +481,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( ted_videoram_map ) //------------------------------------------------- -static ADDRESS_MAP_START( ted_videoram_map, AS_0, 8, plus4_state ) +static ADDRESS_MAP_START( ted_videoram_map, 0, 8, plus4_state ) AM_RANGE(0x0000, 0xffff) AM_READ(ted_videoram_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp index 2cfbd3719f2..13e26741d35 100644 --- a/src/mame/drivers/pofo.cpp +++ b/src/mame/drivers/pofo.cpp @@ -790,7 +790,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( portfolio_lcdc ) //------------------------------------------------- -static ADDRESS_MAP_START( portfolio_lcdc, AS_0, 8, portfolio_state ) +static ADDRESS_MAP_START( portfolio_lcdc, 0, 8, portfolio_state ) ADDRESS_MAP_GLOBAL_MASK(0x7ff) AM_RANGE(0x0000, 0x07ff) AM_RAM ADDRESS_MAP_END @@ -1027,7 +1027,7 @@ static MACHINE_CONFIG_START( portfolio ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", portfolio) MCFG_DEVICE_ADD(HD61830_TAG, HD61830, XTAL_4_9152MHz/2/2) - MCFG_DEVICE_ADDRESS_MAP(AS_0, portfolio_lcdc) + MCFG_DEVICE_ADDRESS_MAP(0, portfolio_lcdc) MCFG_HD61830_RD_CALLBACK(READ8(portfolio_state, hd61830_rd_r)) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) diff --git a/src/mame/drivers/pokechmp.cpp b/src/mame/drivers/pokechmp.cpp index 0734450b2f6..7e2ce89565e 100644 --- a/src/mame/drivers/pokechmp.cpp +++ b/src/mame/drivers/pokechmp.cpp @@ -119,7 +119,7 @@ static ADDRESS_MAP_START( pokechmp_sound_map, AS_PROGRAM, 8, pokechmp_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( pokechmp_oki_map, AS_0, 8, pokechmp_state ) +static ADDRESS_MAP_START( pokechmp_oki_map, 0, 8, pokechmp_state ) AM_RANGE(0x00000, 0x37fff) AM_ROM AM_RANGE(0x38000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -254,7 +254,7 @@ static MACHINE_CONFIG_START( pokechmp ) MCFG_OKIM6295_ADD("oki", XTAL_24MHz/16, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* sound fx */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_DEVICE_ADDRESS_MAP(AS_0, pokechmp_oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, pokechmp_oki_map) MACHINE_CONFIG_END DRIVER_INIT_MEMBER(pokechmp_state,pokechmp) diff --git a/src/mame/drivers/potgoldu.cpp b/src/mame/drivers/potgoldu.cpp index 278165b0e56..8d5b3a54887 100644 --- a/src/mame/drivers/potgoldu.cpp +++ b/src/mame/drivers/potgoldu.cpp @@ -119,5 +119,5 @@ ROM_START( potgoldu580 ) // TMS34010FNL-40 + MC68H705 + YMF704C + ADV476KP35 RAM ROM_LOAD( "mc68h705", 0x0000, 0x2000, NO_DUMP ) // not sure which type of mcu this is, size is a guess ROM_END -GAME( 200?, potgoldu, 0, potgold, potgold, potgold_state, 0, ROT0, "U.S. Games Inc.", "Pot O' Gold (U.S. Games, v400x?)", MACHINE_IS_SKELETON | MACHINE_NO_SOUND ) -GAME( 200?, potgoldu580, potgoldu, potgold, potgold, potgold_state, 0, ROT0, "U.S. Games Inc.", "Pot O' Gold (U.S. Games, v580F)", MACHINE_IS_SKELETON | MACHINE_NO_SOUND ) +GAME( 200?, potgoldu, 0, potgold, potgold, potgold_state, 0, ROT0, "U.S. Games Inc.", "Pot O' Gold (U.S. Games, v400x?)", MACHINE_IS_SKELETON ) +GAME( 200?, potgoldu580, potgoldu, potgold, potgold, potgold_state, 0, ROT0, "U.S. Games Inc.", "Pot O' Gold (U.S. Games, v580F)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/powerbal.cpp b/src/mame/drivers/powerbal.cpp index 9e8dd59363c..6b1cdbd3496 100644 --- a/src/mame/drivers/powerbal.cpp +++ b/src/mame/drivers/powerbal.cpp @@ -128,7 +128,7 @@ static ADDRESS_MAP_START( powerbal_main_map, AS_PROGRAM, 16, powerbal_state ) AM_RANGE(0x103000, 0x103fff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, powerbal_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, powerbal_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -521,7 +521,7 @@ static MACHINE_CONFIG_START( powerbal ) MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END static MACHINE_CONFIG_START( magicstk ) @@ -557,7 +557,7 @@ static MACHINE_CONFIG_START( magicstk ) MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END diff --git a/src/mame/drivers/powerins.cpp b/src/mame/drivers/powerins.cpp index 364e4e8dc41..db8a051c7ce 100644 --- a/src/mame/drivers/powerins.cpp +++ b/src/mame/drivers/powerins.cpp @@ -109,7 +109,7 @@ static ADDRESS_MAP_START( powerinsb_sound_io_map, AS_IO, 8, powerins_state ) AM_RANGE(0x90, 0x97) AM_DEVWRITE("nmk112", nmk112_device, okibank_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( powerinsa_oki_map, AS_0, 8, powerins_state ) +static ADDRESS_MAP_START( powerinsa_oki_map, 0, 8, powerins_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -356,7 +356,7 @@ static MACHINE_CONFIG_DERIVED( powerinsa, powerins ) MCFG_MACHINE_START_OVERRIDE(powerins_state, powerinsa) MCFG_OKIM6295_REPLACE("oki1", 990000, PIN7_LOW) // pin7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, powerinsa_oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, powerinsa_oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_REMOVE("oki2") diff --git a/src/mame/drivers/psikyo.cpp b/src/mame/drivers/psikyo.cpp index 93d3be90ecf..711a71dab06 100644 --- a/src/mame/drivers/psikyo.cpp +++ b/src/mame/drivers/psikyo.cpp @@ -270,7 +270,7 @@ WRITE32_MEMBER(psikyo_state::s1945bl_oki_w) printf("ACCESSING_BITS_0_7 ?? %08x %08x\n", data & 0x000000ff, mem_mask); } -static ADDRESS_MAP_START( s1945bl_oki_map, AS_0, 8, psikyo_state ) +static ADDRESS_MAP_START( s1945bl_oki_map, 0, 8, psikyo_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -1120,7 +1120,7 @@ static MACHINE_CONFIG_START( s1945bl ) /* Bootleg hardware based on the unprotec MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_LOW) // ?? clock MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, s1945bl_oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, s1945bl_oki_map) MACHINE_CONFIG_END diff --git a/src/mame/drivers/psikyo4.cpp b/src/mame/drivers/psikyo4.cpp index 6d5b2987b92..bc569aab382 100644 --- a/src/mame/drivers/psikyo4.cpp +++ b/src/mame/drivers/psikyo4.cpp @@ -343,7 +343,7 @@ static ADDRESS_MAP_START( ps4_map, AS_PROGRAM, 32, psikyo4_state ) AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("ram") // main RAM (1 meg) ADDRESS_MAP_END -static ADDRESS_MAP_START( ps4_ymf_map, AS_0, 8, psikyo4_state ) +static ADDRESS_MAP_START( ps4_ymf_map, 0, 8, psikyo4_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROMBANK("ymfbank0") AM_RANGE(0x100000, 0x1fffff) AM_ROMBANK("ymfbank1") AM_RANGE(0x200000, 0x2fffff) AM_ROMBANK("ymfbank2") @@ -692,7 +692,7 @@ static MACHINE_CONFIG_START( ps4big ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD("ymf", YMF278B, MASTER_CLOCK/2) - MCFG_DEVICE_ADDRESS_MAP(AS_0, ps4_ymf_map) + MCFG_DEVICE_ADDRESS_MAP(0, ps4_ymf_map) MCFG_YMF278B_IRQ_HANDLER(INPUTLINE("maincpu", 12)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) diff --git a/src/mame/drivers/pt68k4.cpp b/src/mame/drivers/pt68k4.cpp index 5b39076649b..f5cbc2c2f0a 100644 --- a/src/mame/drivers/pt68k4.cpp +++ b/src/mame/drivers/pt68k4.cpp @@ -250,7 +250,7 @@ static ADDRESS_MAP_START(pt68k2_mem, AS_PROGRAM, 16, pt68k4_state) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("rambase") // 1MB RAM AM_RANGE(0xf80000, 0xf8ffff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0xc00000, 0xdfffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, prog_r, prog_w, 0x00ff) + AM_RANGE(0xc00000, 0xdfffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, mem_r, mem_w, 0x00ff) AM_RANGE(0xfa0000, 0xfbffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, io_r, io_w, 0x00ff) AM_RANGE(0xfe0000, 0xfe001f) AM_DEVREADWRITE8(DUART1_TAG, mc68681_device, read, write, 0x00ff) AM_RANGE(0xfe0040, 0xfe005f) AM_DEVREADWRITE8(DUART2_TAG, mc68681_device, read, write, 0x00ff) @@ -266,7 +266,7 @@ static ADDRESS_MAP_START(pt68k4_mem, AS_PROGRAM, 16, pt68k4_state) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("rambase") // 1MB RAM (OS9 needs more) AM_RANGE(0xf80000, 0xf8ffff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0xc00000, 0xdfffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, prog_r, prog_w, 0x00ff) + AM_RANGE(0xc00000, 0xdfffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, mem_r, mem_w, 0x00ff) AM_RANGE(0xfa0000, 0xfbffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, io_r, io_w, 0x00ff) AM_RANGE(0xfe0000, 0xfe001f) AM_DEVREADWRITE8(DUART1_TAG, mc68681_device, read, write, 0x00ff) AM_RANGE(0xfe0040, 0xfe005f) AM_DEVREADWRITE8(DUART2_TAG, mc68681_device, read, write, 0x00ff) diff --git a/src/mame/drivers/punchout.cpp b/src/mame/drivers/punchout.cpp index eab2aa94073..20844ddbc96 100644 --- a/src/mame/drivers/punchout.cpp +++ b/src/mame/drivers/punchout.cpp @@ -208,7 +208,7 @@ static ADDRESS_MAP_START( punchout_io_map, AS_IO, 8, punchout_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( punchout_vlm_map, AS_0, 8, punchout_state ) +static ADDRESS_MAP_START( punchout_vlm_map, 0, 8, punchout_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x3fff) AM_ROM ADDRESS_MAP_END @@ -682,7 +682,7 @@ static MACHINE_CONFIG_START( punchout ) MCFG_GENERIC_LATCH_8_ADD("soundlatch2") MCFG_SOUND_ADD("vlm", VLM5030, N2A03_NTSC_XTAL/6) - MCFG_DEVICE_ADDRESS_MAP(AS_0, punchout_vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, punchout_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MACHINE_CONFIG_END diff --git a/src/mame/drivers/pwrview.cpp b/src/mame/drivers/pwrview.cpp index 59e398cd946..a7a5de8e793 100644 --- a/src/mame/drivers/pwrview.cpp +++ b/src/mame/drivers/pwrview.cpp @@ -288,7 +288,7 @@ READ8_MEMBER(pwrview_state::pitclock_r) return 0; } -static ADDRESS_MAP_START(bios_bank, AS_0, 16, pwrview_state) +static ADDRESS_MAP_START(bios_bank, 0, 16, pwrview_state) AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("bios", 0) AM_RANGE(0x00000, 0x07fff) AM_WRITE(nmimem_w) @@ -315,7 +315,7 @@ static ADDRESS_MAP_START(pwrview_map, AS_PROGRAM, 16, pwrview_state) AM_RANGE(0xf8000, 0xfffff) AM_DEVICE("bios_bank", address_map_bank_device, amap16) ADDRESS_MAP_END -static ADDRESS_MAP_START(pwrview_fetch_map, AS_DECRYPTED_OPCODES, 16, pwrview_state) +static ADDRESS_MAP_START(pwrview_fetch_map, AS_OPCODES, 16, pwrview_state) AM_RANGE(0x00000, 0x003ff) AM_READ(bank0_r) AM_RANGE(0x00000, 0xf7fff) AM_RAM AM_SHARE("ram") AM_RANGE(0xf8000, 0xfffff) AM_READ(fbios_r) diff --git a/src/mame/drivers/qx10.cpp b/src/mame/drivers/qx10.cpp index 1d8db52b5ed..f2ae3dc94be 100644 --- a/src/mame/drivers/qx10.cpp +++ b/src/mame/drivers/qx10.cpp @@ -657,7 +657,7 @@ WRITE16_MEMBER( qx10_state::vram_w ) COMBINE_DATA(&m_video_ram[offset + (0x20000 * bank)]); } -static ADDRESS_MAP_START( upd7220_map, AS_0, 16, qx10_state ) +static ADDRESS_MAP_START( upd7220_map, 0, 16, qx10_state ) AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(vram_r,vram_w) ADDRESS_MAP_END @@ -740,7 +740,7 @@ static MACHINE_CONFIG_START( qx10 ) MCFG_DEVICE_ADD("i8255", I8255, 0) MCFG_DEVICE_ADD("upd7220", UPD7220, MAIN_CLK/6) // unk clock - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(qx10_state, hgdc_display_pixels) MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(qx10_state, hgdc_draw_text) MCFG_VIDEO_SET_SCREEN("screen") diff --git a/src/mame/drivers/r2dx_v33.cpp b/src/mame/drivers/r2dx_v33.cpp index 6752f8bf864..c3e56e77371 100644 --- a/src/mame/drivers/r2dx_v33.cpp +++ b/src/mame/drivers/r2dx_v33.cpp @@ -760,7 +760,7 @@ MACHINE_RESET_MEMBER(r2dx_v33_state,nzeroteam) mid_bank = 1; } -static ADDRESS_MAP_START( r2dx_oki_map, AS_0, 8, r2dx_v33_state ) +static ADDRESS_MAP_START( r2dx_oki_map, 0, 8, r2dx_v33_state ) AM_RANGE(0x00000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -798,7 +798,7 @@ static MACHINE_CONFIG_START( rdx_v33 ) MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz/28, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_DEVICE_ADDRESS_MAP(AS_0, r2dx_oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, r2dx_oki_map) MACHINE_CONFIG_END static MACHINE_CONFIG_START( nzerotea ) diff --git a/src/mame/drivers/raiden.cpp b/src/mame/drivers/raiden.cpp index 9e5eb1b54f7..b6ef984e2c6 100644 --- a/src/mame/drivers/raiden.cpp +++ b/src/mame/drivers/raiden.cpp @@ -174,7 +174,7 @@ static ADDRESS_MAP_START( raiden_sound_map, AS_PROGRAM, 8, raiden_state ) AM_RANGE(0x0000, 0xffff) AM_DEVREAD("sei80bu", sei80bu_device, data_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( raiden_sound_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, raiden_state ) +static ADDRESS_MAP_START( raiden_sound_decrypted_opcodes_map, AS_OPCODES, 8, raiden_state ) AM_RANGE(0x0000, 0xffff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp index c254ee9c636..8a25f97912a 100644 --- a/src/mame/drivers/rainbow.cpp +++ b/src/mame/drivers/rainbow.cpp @@ -3206,7 +3206,7 @@ GFXDECODE_ENTRY("chargen", 0x0000, rainbow_charlayout, 0, 1) GFXDECODE_END // Allocate 512 K (4 x 64 K x 16 bit) of memory (GDC-NEW): -static ADDRESS_MAP_START( upd7220_map, AS_0, 16, rainbow_state) +static ADDRESS_MAP_START( upd7220_map, 0, 16, rainbow_state) AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(vram_r, vram_w) AM_SHARE("vram") ADDRESS_MAP_END @@ -3243,7 +3243,7 @@ MCFG_VT_VIDEO_CLEAR_VIDEO_INTERRUPT_CALLBACK(WRITELINE(rainbow_state, clear_vide MCFG_DEVICE_ADD("upd7220", UPD7220, 31188000 / 32) // Duell schematics shows a 31.188 Mhz oscillator (confirmed by RFKA). MCFG_UPD7220_VSYNC_CALLBACK(WRITELINE(rainbow_state, GDC_vblank_irq)) // "The vsync callback line needs to be below the 7220 DEVICE_ADD line." -MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map) +MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(rainbow_state, hgdc_display_pixels) MCFG_VIDEO_SET_SCREEN("screen2") // SET_SCREEN needs to be added after 7720 device in the machine config, not after the screen. MCFG_PALETTE_ADD("palette2", 32) diff --git a/src/mame/drivers/relief.cpp b/src/mame/drivers/relief.cpp index ed1d2ac08e6..83d6e7c94cd 100644 --- a/src/mame/drivers/relief.cpp +++ b/src/mame/drivers/relief.cpp @@ -107,7 +107,7 @@ WRITE16_MEMBER(relief_state::audio_volume_w) } } -static ADDRESS_MAP_START( oki_map, AS_0, 8, relief_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, relief_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("okibank") AM_RANGE(0x20000, 0x3ffff) AM_ROM ADDRESS_MAP_END @@ -304,7 +304,7 @@ static MACHINE_CONFIG_START( relief ) MCFG_OKIM6295_ADD("oki", ATARI_CLOCK_14MHz/4/3, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ADD("ymsnd", YM2413, ATARI_CLOCK_14MHz/4) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) diff --git a/src/mame/drivers/retofinv.cpp b/src/mame/drivers/retofinv.cpp index 27e2463a60c..873bb285a60 100644 --- a/src/mame/drivers/retofinv.cpp +++ b/src/mame/drivers/retofinv.cpp @@ -18,11 +18,7 @@ in the ROMs reveals the following strings: COMIX LTD. 1985. Notes: -- I derived the ROM names from the board diagram in the manual. There might - be some mistakes. The diagram actually shows 4 PROMs on the ROM board - (a37-17, -18, -19 and -20), while we only have one: 82s191n. I think it's - possible that the single 2KB PROM replaced four 512B PROMs in a later - revision of the board. +- The rom names and locations are derived from PCB pictures. - The video hardware (especially the sprite system) is quite obviously derived from a Namco design. @@ -30,12 +26,12 @@ Notes: - Two bits of tilemap RAM might be used for tile flip, but the game never sets them so we can't verify without schematics. -- We don't have a dump of the original MCU. We have a dump from a bootleg MCU, - which however cannot be the same as the original. The game works fine with it, - but only when the flip screen dip switch is set to off. If it is set to on, it - hangs when starting a game because the mcu doesn't answer a command. - See MCU code at $206 and $435: when the dip switch is on, the lda #$00 should - be replaced by lda #$01. +- In addition to a dump of the original MCU, we have a dump from a bootleg MCU. + The game does work with it, but only when the flip screen dip switch is turned + off. If it is set to on, the game hangs when starting a game because the + mcu doesn't answer a command. + See bootleg MCU code at $206 and $435: when the dip switch is on, the + "lda #$00" should be replaced by "lda #$01". ***************************************************************************/ @@ -120,12 +116,16 @@ READ8_MEMBER(retofinv_state::mcu_status_r) ((CLEAR_LINE != m_68705->mcu_semaphore_r()) ? 0x20 : 0x00); } +/* It is very likely that the main cpu and the sub cpu share the entire + 8000-ffff address space, each perhaps holding the other in waitstate + while accessing it. */ +/* the main cpu code looks for a string at 7b00 (in the space for the + empty socket at IC73 from 6000-7fff) and if it finds a particular + string there, it jumps to that area, presumably for diagnostic use */ static ADDRESS_MAP_START( bootleg_map, AS_PROGRAM, 8, retofinv_state ) - AM_RANGE(0x0000, 0x5fff) AM_ROM + AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x7fff, 0x7fff) AM_WRITE(coincounter_w) - AM_RANGE(0x7b00, 0x7bff) AM_ROM /* space for diagnostic ROM? The code looks */ - /* for a string here, and jumps if it's present */ AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") AM_RANGE(0x8800, 0x9fff) AM_RAM AM_SHARE("sharedram") AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") @@ -156,7 +156,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, retofinv_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8, retofinv_state ) - AM_RANGE(0x0000, 0x1fff) AM_ROM + AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") AM_RANGE(0x8800, 0x9fff) AM_RAM AM_SHARE("sharedram") AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") @@ -165,11 +165,11 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, retofinv_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_RAM + AM_RANGE(0x2000, 0x27ff) AM_RAM /* 6116 sram at IC28 */ AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x6000, 0x6000) AM_WRITE(cpu2_m6000_w) - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn2", sn76496_device, write) + AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76489a_device, write) + AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn2", sn76489a_device, write) AM_RANGE(0xe000, 0xffff) AM_ROM /* space for diagnostic ROM */ ADDRESS_MAP_END @@ -363,19 +363,19 @@ INTERRUPT_GEN_MEMBER(retofinv_state::sub_vblank_irq) static MACHINE_CONFIG_START( retofinv ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz? */ + MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) /* XTAL and divider verified, 3.072 MHz */ MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", retofinv_state, main_vblank_irq) - MCFG_CPU_ADD("sub", Z80, 18432000/6) /* 3.072 MHz? */ + MCFG_CPU_ADD("sub", Z80, XTAL_18_432MHz/6) /* XTAL and divider verified, 3.072 MHz */ MCFG_CPU_PROGRAM_MAP(sub_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", retofinv_state, sub_vblank_irq) - MCFG_CPU_ADD("audiocpu", Z80, 18432000/6) /* 3.072 MHz? */ + MCFG_CPU_ADD("audiocpu", Z80, XTAL_18_432MHz/6) /* XTAL and divider verified, 3.072 MHz */ MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_CPU_PERIODIC_INT_DRIVER(retofinv_state, nmi_line_pulse, 2*60) + MCFG_CPU_PERIODIC_INT_DRIVER(retofinv_state, nmi_line_pulse, 2*60) // wrong, should be ~128-132 per frame, not 120. - MCFG_CPU_ADD("68705", TAITO68705_MCU, 18432000/6) /* 3.072 MHz? */ + MCFG_CPU_ADD("68705", TAITO68705_MCU, XTAL_18_432MHz/6) /* XTAL and divider verified, 3.072 MHz */ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - enough for the sound CPU to read all commands */ @@ -383,8 +383,8 @@ static MACHINE_CONFIG_START( retofinv ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_REFRESH_RATE(60.58) // vsync measured at 60.58hz + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) // not accurate MCFG_SCREEN_SIZE(36*8, 28*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(retofinv_state, screen_update) @@ -400,23 +400,27 @@ static MACHINE_CONFIG_START( retofinv ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("sn1", SN76496, 18432000/6) + MCFG_SOUND_ADD("sn1", SN76489A, XTAL_18_432MHz/6) /* @IC5?; XTAL, chip type, and divider verified, 3.072 MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_SOUND_ADD("sn2", SN76496, 18432000/6) + MCFG_SOUND_ADD("sn2", SN76489A, XTAL_18_432MHz/6) /* @IC6?; XTAL, chip type, and divider verified, 3.072 MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END +/* bootleg has different palette clut */ +static MACHINE_CONFIG_DERIVED( retofinvb, retofinv ) + MCFG_PALETTE_MODIFY("palette") + MCFG_PALETTE_INIT_OWNER(retofinv_state, retofinv_bl) +MACHINE_CONFIG_END -/* bootleg has no mcu */ -static MACHINE_CONFIG_DERIVED( retofinb, retofinv ) +/* bootleg which also has no mcu */ +static MACHINE_CONFIG_DERIVED( retofinvb_nomcu, retofinvb ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(bootleg_map) MCFG_DEVICE_REMOVE("68705") MACHINE_CONFIG_END - /*************************************************************************** Game driver(s) @@ -424,6 +428,60 @@ MACHINE_CONFIG_END ***************************************************************************/ ROM_START( retofinv ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "a37__03.ic70", 0x0000, 0x2000, CRC(eae7459d) SHA1(c105f6adbd4c09decaad68ed13163d8f9b55e646) ) + ROM_LOAD( "a37__02.ic71", 0x2000, 0x2000, CRC(72895e37) SHA1(42fb904338e9f92a79d587eac401d456e7fb6e55) ) + ROM_LOAD( "a37__01.ic72", 0x4000, 0x2000, CRC(505dd20b) SHA1(3a34b1515bb834ff9e2d86b0b43a752d9619307b) ) + // ic73 socket is empty + + ROM_REGION( 0x10000, "sub", 0 ) + ROM_LOAD( "a37__04.ic62", 0x0000, 0x2000, CRC(d2899cc1) SHA1(fdbec743b06f4cdcc134ef863e4e71337ad0b2c5) ) + // ic63 socket is empty + // ic64 socket is empty + // ic65 socket is empty + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "a37__05.ic17", 0x0000, 0x2000, CRC(9025abea) SHA1(2f03e8572f23624d7cd1215a55109e97fd66e271) ) + + ROM_REGION( 0x0800, "68705:mcu", 0 ) /* 2k for the microcontroller */ + ROM_LOAD( "a37__09.ic37", 0x00000, 0x0800, CRC(6a6d008d) SHA1(dce55b65db22ba97cb7b3d6d545575e7945d42ad) ) /* original mc68705p5 from Taito board */ + /* Interestingly enough, the security bit is NOT set on this MCU, but the + part is definitely a 68705P5 from an original Taito pcb running original + Taito code! Compare the MCU code to Taito games A17, A22, A23, A24, A30, + A34, A45, A47, A50, A54(and A51), A52, A64, A67, A68, probably others too, + MCU code between 0x420 and 0x73f is identical, and boot vector is 0x570. + The MCU command jump table at 0x740-0x780 differs on each, as does the + lookup table at 0x350-0x41f, and the "custom command code area" from + 0x80-0x34F */ + + ROM_REGION( 0x02000, "gfx1", 0 ) + ROM_LOAD( "a37__16.gfxboard.ic61", 0x0000, 0x2000, CRC(4e3f501c) SHA1(2d832f4038ae65bfdeedfab870f6f1176ec6b676) ) + + ROM_REGION( 0x08000, "gfx2", 0 ) + ROM_LOAD( "a37__10.gfxboard.ic8", 0x0000, 0x2000, CRC(6afdeec8) SHA1(782fe0a8aea48c3c270318b7ba011fc6fce0db7a) ) + ROM_LOAD( "a37__11.gfxboard.ic9", 0x2000, 0x2000, CRC(d3dc9da3) SHA1(0d98d6e993b5a4845a23802751023b7a593dce29) ) + ROM_LOAD( "a37__12.gfxboard.ic10", 0x4000, 0x2000, CRC(d10b2eed) SHA1(3809a0adf935a119f9ee0d4c24f1456c35d2a6fa) ) + ROM_LOAD( "a37__13.gfxboard.ic11", 0x6000, 0x2000, CRC(00ca6b3d) SHA1(08ce5b13d5ebc79cc803949f4ba9e630e6cd92b8) ) + + ROM_REGION( 0x04000, "gfx3", 0 ) + ROM_LOAD( "a37__14.gfxboard.ic55", 0x0000, 0x2000, CRC(ef7f8651) SHA1(2d91057501e5e9c4255e0d55fff0d99c2a5be7e8) ) + ROM_LOAD( "a37__15.gfxboard.ic56", 0x2000, 0x2000, CRC(03b40905) SHA1(c10d87796e8a6e6a2a37c6fb713821cc87299cc8) ) + + ROM_REGION( 0x0300, "palette", 0 ) + // these three are Fujitsu 7052 PROMS, == 82S129 256x4bit TS proms + ROM_LOAD( "a37-06.ic13", 0x0000, 0x0100, CRC(e9643b8b) SHA1(7bbb92a42e7c3effb701fc7b2c24f2470f31b063) ) /* palette red bits */ + ROM_LOAD( "a37-07.ic4", 0x0100, 0x0100, CRC(e8f34e11) SHA1(8f438561b8d46ffff00747ed8baf0ebb6a081615) ) /* palette green bits */ + ROM_LOAD( "a37-08.ic3", 0x0200, 0x0100, CRC(50030af0) SHA1(e748ae0b8702b7d20fb65c254dceee23246b3d13) ) /* palette blue bits */ + + ROM_REGION( 0x0800, "clut", 0 ) + // these four are Harris 7643 PROMS, == 82S137 1kx4 TS proms and form the tile color lookup tables; address is scrambled slightly. + ROM_LOAD_NIB_HIGH( "a37-17.gfxboard.ic36", 0x0000, 0x0400, CRC(c63cf10e) SHA1(bca8823aef31ab8f4c22201c4efd51f9a4124c8f) ) + ROM_LOAD_NIB_LOW ( "a37-18.gfxboard.ic37", 0x0000, 0x0400, CRC(6db07bd1) SHA1(05b6728a96fecedae16cb3aa02de642a3a32d99d) ) + ROM_LOAD_NIB_HIGH( "a37-19.gfxboard.ic83", 0x0400, 0x0400, CRC(a92aea27) SHA1(98e4726f40fdf0df2008ef03801ee35ede99e893) ) + ROM_LOAD_NIB_LOW ( "a37-20.gfxboard.ic84", 0x0400, 0x0400, CRC(77a7aaf6) SHA1(61a474f1ad09b89ff8302f2d903b86a90823116c) ) +ROM_END + +ROM_START( retofinvb ) // bootleg with black-box reverse-engineered mcu. Unclear what the 'correct' rom labels are for this set. ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "a37-03.70", 0x0000, 0x2000, CRC(eae7459d) SHA1(c105f6adbd4c09decaad68ed13163d8f9b55e646) ) ROM_LOAD( "a37-02.71", 0x2000, 0x2000, CRC(72895e37) SHA1(42fb904338e9f92a79d587eac401d456e7fb6e55) ) @@ -436,8 +494,8 @@ ROM_START( retofinv ) ROM_LOAD( "a37-05.17", 0x0000, 0x2000, CRC(9025abea) SHA1(2f03e8572f23624d7cd1215a55109e97fd66e271) ) ROM_REGION( 0x0800, "68705:mcu", 0 ) /* 2k for the microcontroller */ - /* the only available dump is from a bootleg board, and is not the real thing (see notes at top of driver) */ - ROM_LOAD( "a37-09.37", 0x00000, 0x0800, BAD_DUMP CRC(79bd6ded) SHA1(4967e95b4461c1bfb4e933d1804677799014f77b) ) + /* this MCU is from a bootleg board and is a 'clean room' reimplementation by bootleggers, and is not 100% functional (flip screen does not work, see notes at top of driver) */ + ROM_LOAD( "a37-09_bootleg.37", 0x00000, 0x0800, CRC(79bd6ded) SHA1(4967e95b4461c1bfb4e933d1804677799014f77b) ) ROM_REGION( 0x02000, "gfx1", 0 ) ROM_LOAD( "a37-16.61", 0x0000, 0x2000, CRC(4e3f501c) SHA1(2d832f4038ae65bfdeedfab870f6f1176ec6b676) ) @@ -452,14 +510,16 @@ ROM_START( retofinv ) ROM_LOAD( "a37-14.55", 0x0000, 0x2000, CRC(ef7f8651) SHA1(2d91057501e5e9c4255e0d55fff0d99c2a5be7e8) ) ROM_LOAD( "a37-15.56", 0x2000, 0x2000, CRC(03b40905) SHA1(c10d87796e8a6e6a2a37c6fb713821cc87299cc8) ) - ROM_REGION( 0x0b00, "proms", 0 ) + ROM_REGION( 0x0300, "palette", 0 ) ROM_LOAD( "a37-06.13", 0x0000, 0x0100, CRC(e9643b8b) SHA1(7bbb92a42e7c3effb701fc7b2c24f2470f31b063) ) /* palette red bits */ ROM_LOAD( "a37-07.4", 0x0100, 0x0100, CRC(e8f34e11) SHA1(8f438561b8d46ffff00747ed8baf0ebb6a081615) ) /* palette green bits */ ROM_LOAD( "a37-08.3", 0x0200, 0x0100, CRC(50030af0) SHA1(e748ae0b8702b7d20fb65c254dceee23246b3d13) ) /* palette blue bits */ - ROM_LOAD( "82s191n", 0x0300, 0x0800, CRC(93c891e3) SHA1(643a0107717b6a434432dda73a0102e6e8adbca7) ) /* lookup table */ + + ROM_REGION( 0x0800, "clut", 0 ) // bootleg uses a single 82s191 2kx8 TS prom for the tile color lookup tables; data is scrambled slightly. + ROM_LOAD( "82s191n", 0x0000, 0x0800, CRC(93c891e3) SHA1(643a0107717b6a434432dda73a0102e6e8adbca7) ) ROM_END -ROM_START( retofinv1 ) +ROM_START( retofinvb1 ) // bootleg with mcu hacked out. Unclear what the 'correct' rom labels are for this set other than the 3 main roms. ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "roi.02", 0x0000, 0x2000, CRC(d98fd462) SHA1(fd35e13b7dee58639a01b040b8f84d42bb40b633) ) ROM_LOAD( "roi.01b", 0x2000, 0x2000, CRC(3379f930) SHA1(c67d687a10b6240bd6e2fbdb15e1b7d276e6fc07) ) @@ -484,17 +544,19 @@ ROM_START( retofinv1 ) ROM_LOAD( "a37-14.55", 0x0000, 0x2000, CRC(ef7f8651) SHA1(2d91057501e5e9c4255e0d55fff0d99c2a5be7e8) ) ROM_LOAD( "a37-15.56", 0x2000, 0x2000, CRC(03b40905) SHA1(c10d87796e8a6e6a2a37c6fb713821cc87299cc8) ) - ROM_REGION( 0x0b00, "proms", 0 ) + ROM_REGION( 0x0300, "palette", 0 ) ROM_LOAD( "a37-06.13", 0x0000, 0x0100, CRC(e9643b8b) SHA1(7bbb92a42e7c3effb701fc7b2c24f2470f31b063) ) /* palette red bits */ ROM_LOAD( "a37-07.4", 0x0100, 0x0100, CRC(e8f34e11) SHA1(8f438561b8d46ffff00747ed8baf0ebb6a081615) ) /* palette green bits */ ROM_LOAD( "a37-08.3", 0x0200, 0x0100, CRC(50030af0) SHA1(e748ae0b8702b7d20fb65c254dceee23246b3d13) ) /* palette blue bits */ - ROM_LOAD( "82s191n", 0x0300, 0x0800, CRC(93c891e3) SHA1(643a0107717b6a434432dda73a0102e6e8adbca7) ) /* lookup table */ + + ROM_REGION( 0x0800, "clut", 0 ) // bootleg uses a single 82s191 2kx8 TS prom for the tile color lookup tables; data is scrambled slightly. + ROM_LOAD( "82s191n", 0x0000, 0x0800, CRC(93c891e3) SHA1(643a0107717b6a434432dda73a0102e6e8adbca7) ) ROM_END -ROM_START( retofinv2 ) +ROM_START( retofinvb2 ) // bootleg with mcu hacked out. Unclear what the 'correct' rom labels are for this set other than 2 of the 3 main roms. ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ri-c.1e", 0x0000, 0x2000, CRC(e3c31260) SHA1(cc8774251c567da2e4a54091223927c95f497fe8) ) - ROM_LOAD( "roi.01b", 0x2000, 0x2000, CRC(3379f930) SHA1(c67d687a10b6240bd6e2fbdb15e1b7d276e6fc07) ) + ROM_LOAD( "roi.01b", 0x2000, 0x2000, CRC(3379f930) SHA1(c67d687a10b6240bd6e2fbdb15e1b7d276e6fc07) ) // likely should be "ri-b.1d" ROM_LOAD( "ri-a.1c", 0x4000, 0x2000, CRC(3ae7c530) SHA1(5d1be375494fa07124071067661c4bfc2d724d54) ) ROM_REGION( 0x10000, "sub", 0 ) @@ -516,15 +578,18 @@ ROM_START( retofinv2 ) ROM_LOAD( "a37-14.55", 0x0000, 0x2000, CRC(ef7f8651) SHA1(2d91057501e5e9c4255e0d55fff0d99c2a5be7e8) ) ROM_LOAD( "a37-15.56", 0x2000, 0x2000, CRC(03b40905) SHA1(c10d87796e8a6e6a2a37c6fb713821cc87299cc8) ) - ROM_REGION( 0x0b00, "proms", 0 ) + ROM_REGION( 0x0300, "palette", 0 ) ROM_LOAD( "a37-06.13", 0x0000, 0x0100, CRC(e9643b8b) SHA1(7bbb92a42e7c3effb701fc7b2c24f2470f31b063) ) /* palette red bits */ ROM_LOAD( "a37-07.4", 0x0100, 0x0100, CRC(e8f34e11) SHA1(8f438561b8d46ffff00747ed8baf0ebb6a081615) ) /* palette green bits */ ROM_LOAD( "a37-08.3", 0x0200, 0x0100, CRC(50030af0) SHA1(e748ae0b8702b7d20fb65c254dceee23246b3d13) ) /* palette blue bits */ - ROM_LOAD( "82s191n", 0x0300, 0x0800, CRC(93c891e3) SHA1(643a0107717b6a434432dda73a0102e6e8adbca7) ) /* lookup table */ + + ROM_REGION( 0x0800, "clut", 0 ) // bootleg uses a single 82s191 2kx8 TS prom for the tile color lookup tables; data is scrambled slightly. + ROM_LOAD( "82s191n", 0x0000, 0x0800, CRC(93c891e3) SHA1(643a0107717b6a434432dda73a0102e6e8adbca7) ) ROM_END -GAME( 1985, retofinv, 0, retofinv, retofinv, retofinv_state, 0, ROT90, "Taito Corporation", "Return of the Invaders", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, retofinv1,retofinv, retofinb, retofinv, retofinv_state, 0, ROT90, "bootleg", "Return of the Invaders (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, retofinv2,retofinv, retofinb, retofin2, retofinv_state, 0, ROT90, "bootleg", "Return of the Invaders (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, retofinv, 0, retofinv, retofinv, retofinv_state, 0, ROT90, "Taito Corporation", "Return of the Invaders", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, retofinvb, retofinv, retofinvb, retofinv, retofinv_state, 0, ROT90, "bootleg", "Return of the Invaders (bootleg w/MCU)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, retofinvb1,retofinv, retofinvb_nomcu, retofinv, retofinv_state, 0, ROT90, "bootleg", "Return of the Invaders (bootleg no MCU set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, retofinvb2,retofinv, retofinvb_nomcu, retofin2, retofinv_state, 0, ROT90, "bootleg", "Return of the Invaders (bootleg no MCU set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rltennis.cpp b/src/mame/drivers/rltennis.cpp index 3b827083d00..c61dc3b73fb 100644 --- a/src/mame/drivers/rltennis.cpp +++ b/src/mame/drivers/rltennis.cpp @@ -179,7 +179,7 @@ void rltennis_state::machine_reset() m_timer->adjust(attotime::from_hz(RLT_TIMER_FREQ)); } -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, rltennis_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, rltennis_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/rockrage.cpp b/src/mame/drivers/rockrage.cpp index b6cc2c9cef5..fd83e47ceeb 100644 --- a/src/mame/drivers/rockrage.cpp +++ b/src/mame/drivers/rockrage.cpp @@ -127,7 +127,7 @@ static ADDRESS_MAP_START( rockrage_sound_map, AS_PROGRAM, 8, rockrage_state ) AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ ADDRESS_MAP_END -static ADDRESS_MAP_START( rockrage_vlm_map, AS_0, 8, rockrage_state ) +static ADDRESS_MAP_START( rockrage_vlm_map, 0, 8, rockrage_state ) ADDRESS_MAP_GLOBAL_MASK(0x7fff) AM_RANGE(0x0000, 0x7fff) AM_ROM ADDRESS_MAP_END @@ -293,7 +293,7 @@ static MACHINE_CONFIG_START( rockrage ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) MCFG_SOUND_ADD("vlm", VLM5030, 3579545) - MCFG_DEVICE_ADDRESS_MAP(AS_0, rockrage_vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, rockrage_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) MACHINE_CONFIG_END diff --git a/src/mame/drivers/sanremmg.cpp b/src/mame/drivers/sanremmg.cpp index 22888bdb30c..20b3ba00358 100644 --- a/src/mame/drivers/sanremmg.cpp +++ b/src/mame/drivers/sanremmg.cpp @@ -4,7 +4,7 @@ /* San Remo / Elsy Multigame? */ // presumably a gambling game, maybe missing a sub-board? -// http://www.citylan.it/wiki/index.php/Multigame_ID +// http://www.citylan.it/wiki/index.php/Unknown_San_Remo_/_Elsy_Multigame #include "emu.h" @@ -76,4 +76,4 @@ ROM_START( sanremmg ) ROM_END -GAME( 2003, sanremmg, 0, sanremmg, sanremmg, sanremmg_state, 0, ROT0, "San Remo Games", "unknown San Remo / Elsy Multigame", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +GAME( 2003, sanremmg, 0, sanremmg, sanremmg, sanremmg_state, 0, ROT0, "San Remo Games", "unknown San Remo / Elsy Multigame", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/sansa_fuze.cpp b/src/mame/drivers/sansa_fuze.cpp index d2058b501dc..c44d79c565c 100644 --- a/src/mame/drivers/sansa_fuze.cpp +++ b/src/mame/drivers/sansa_fuze.cpp @@ -69,4 +69,4 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -CONS( 200?, sanfuze2, 0, 0, sansa_fuze, sansa_fuze, sansa_fuze_state, 0, "Sandisk", "Sansa Fuze 2", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +CONS( 200?, sanfuze2, 0, 0, sansa_fuze, sansa_fuze, sansa_fuze_state, 0, "Sandisk", "Sansa Fuze 2", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/scorpion.cpp b/src/mame/drivers/scorpion.cpp index edbe114dd87..083d4634469 100644 --- a/src/mame/drivers/scorpion.cpp +++ b/src/mame/drivers/scorpion.cpp @@ -183,7 +183,7 @@ static ADDRESS_MAP_START (scorpion_io, AS_IO, 8, scorpion_state ) AM_RANGE(0x0021, 0x0021) AM_WRITE(scorpion_port_1ffd_w) AM_MIRROR(0x3fdc) ADDRESS_MAP_END -static ADDRESS_MAP_START (scorpion_switch, AS_DECRYPTED_OPCODES, 8, scorpion_state) +static ADDRESS_MAP_START (scorpion_switch, AS_OPCODES, 8, scorpion_state) AM_RANGE(0x3d00, 0x3dff) AM_READ(beta_enable_r) AM_RANGE(0x0000, 0x3fff) AM_READ(beta_neutral_r) // Overlap with previous because we want real addresses on the 3e00-3fff range AM_RANGE(0x4000, 0xffff) AM_READ(beta_disable_r) diff --git a/src/mame/drivers/scramble.cpp b/src/mame/drivers/scramble.cpp index c5da31e1ba4..114ca3f620e 100644 --- a/src/mame/drivers/scramble.cpp +++ b/src/mame/drivers/scramble.cpp @@ -374,7 +374,7 @@ static ADDRESS_MAP_START( harem_map, AS_PROGRAM, 8, scramble_state ) AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("rombank") // bitswapped rom ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, scramble_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, scramble_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("maincpu", 0) AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("rombank_decrypted") ADDRESS_MAP_END diff --git a/src/mame/drivers/sderby2.cpp b/src/mame/drivers/sderby2.cpp new file mode 100644 index 00000000000..4ab8534bce4 --- /dev/null +++ b/src/mame/drivers/sderby2.cpp @@ -0,0 +1,407 @@ +// license:BSD-3-Clause +// copyright-holders:Phil Bennett +/*************************************************************************** + + Sega Super Derby II hardware + + preliminary driver by Phil Bennett + + Games supported: + * Super Derby II + + + TODO: Add PCB layouts + + PCBs: + + 834-5526? - Main PCB? (Has yet to be found) + 834-5527 - Tilemaps and video output? + 834-5528 - Sprites? + 834-5529 - Satellite PCB (see sg1000a.cpp) + + Customs: + + 315-5011 + 315-5012 + 315-5025 + 315-5050 + + The video CPUs are waiting for commands from another source. + It is assumed that there is at least one other PCB (834-5526?) which + drives the video PCBs and perhaps generates sound. + +***************************************************************************/ + +#include "emu.h" +#include "cpu/z80/z80.h" +#include "sound/sn76496.h" +#include "speaker.h" +#include "screen.h" +#include "video/resnet.h" + + +class sderby2_state : public driver_device +{ +public: + sderby2_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_subcpu(*this, "subcpu"), + m_gfxdecode(*this, "gfxdecode"), + m_proms(*this, "proms"), + m_palette(*this, "palette") { } + + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + + DECLARE_DRIVER_INIT(sderby2); + DECLARE_PALETTE_INIT(sderby2); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + DECLARE_WRITE8_MEMBER(palette_w); + DECLARE_READ8_MEMBER(host_r); + DECLARE_WRITE8_MEMBER(main_nmi); + DECLARE_WRITE8_MEMBER(sub_nmi); + DECLARE_READ8_MEMBER(sub_r); + DECLARE_WRITE8_MEMBER(host_io_40_w); + DECLARE_READ8_MEMBER(sub_io_0_r); + DECLARE_READ8_MEMBER(sub_unk_r); + DECLARE_WRITE8_MEMBER(sub_unk_w); + + required_device m_maincpu; + required_device m_subcpu; + required_device m_gfxdecode; + required_region_ptr m_proms; + required_device m_palette; + + uint8_t sub_data; + uint8_t main_data; + uint8_t host_io_40; +}; + + +/************************************* + * + * Video emulation + * + *************************************/ + +PALETTE_INIT_MEMBER(sderby2_state,sderby2) +{ + +} + +WRITE8_MEMBER(sderby2_state::palette_w) +{ + const rgb_t color = m_palette->pen_color(data & 0xff); + m_palette->set_pen_color(0x100 + offset, color); +} + +void sderby2_state::video_start() +{ + +} + + +uint32_t sderby2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + return 0; +} + + +/************************************* + * + * CPU memory handlers + * + *************************************/ + +READ8_MEMBER(sderby2_state::host_r) +{ + return main_data; +} + +WRITE8_MEMBER(sderby2_state::main_nmi) +{ + m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + main_data = data; +} + +WRITE8_MEMBER(sderby2_state::host_io_40_w) +{ + host_io_40 = data; +} + +READ8_MEMBER(sderby2_state::sub_r) +{ + return sub_data; +} + +WRITE8_MEMBER(sderby2_state::sub_nmi) +{ + m_subcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + m_subcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + sub_data = data; +} + +READ8_MEMBER(sderby2_state::sub_unk_r) +{ + return machine().rand(); +} + +WRITE8_MEMBER(sderby2_state::sub_unk_w) +{ + +} + +READ8_MEMBER(sderby2_state::sub_io_0_r) +{ + return host_io_40; +} + + +/************************************* + * + * CPU memory handlers + * + *************************************/ + +/* + 1 x D4168 (8kx8) - Work RAM (banked?) + 2 x TC5565 (8kx8) + 2 x TC5533 (4kx8) + 2 x TC5533 (4kx8) +12 x 2148 (1024x4) (near palette ROMs?) - 4 for each screen + + 2KB of palette per screen? (0x7FF) + +*/ +static ADDRESS_MAP_START( main_program_map, AS_PROGRAM, 8, sderby2_state ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0x8000, 0x9fff) AM_RAM + AM_RANGE(0xa000, 0xbfff) AM_RAM + AM_RANGE(0xc000, 0xcfff) AM_RAM + AM_RANGE(0xe000, 0xe3ff) AM_RAM + AM_RANGE(0xe400, 0xe7ff) AM_RAM + AM_RANGE(0xe800, 0xebff) AM_RAM + AM_RANGE(0xec00, 0xefff) AM_RAM + AM_RANGE(0xf000, 0xffff) AM_RAM // Is this banked? +ADDRESS_MAP_END + +static ADDRESS_MAP_START( main_io_map, AS_IO, 8, sderby2_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x10, 0x10) AM_READ(host_r) + AM_RANGE(0x20, 0x20) AM_WRITE(sub_nmi) + AM_RANGE(0x30, 0x30) AM_WRITENOP // Written with 0x12 byte sequence at start + AM_RANGE(0x40, 0x40) AM_WRITE(host_io_40_w) // Occasionally written +ADDRESS_MAP_END + + +/* + 1 x D4168 (8kx8) Near Z80 + 6 x 2148 (1024x4) Near Z80 +18 x 2148 (1024x4) Middle +18 x 2148 (1024x4) Side + 4 x 2148 (1024x4) Near 316-5012 and 316-5011 +*/ +static ADDRESS_MAP_START( sub_program_map, AS_PROGRAM, 8, sderby2_state ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + + AM_RANGE(0xc000, 0xcfff) AM_RAM // Tested at FFF, 1016, 102D + AM_RANGE(0xd000, 0xd3ff) AM_RAM // 2KB Tested + AM_RANGE(0xd400, 0xd7ff) AM_RAM // 2KB Tested at 105B + AM_RANGE(0xd800, 0xdbff) AM_RAM // 2KB Tested at 105B + AM_RANGE(0xdc00, 0xdfff) AM_RAM // 2KB Tested at 10B7 + + AM_RANGE(0xe000, 0xffff) AM_RAM // Tested at FE8 +ADDRESS_MAP_END + +static ADDRESS_MAP_START( sub_io_map, AS_IO, 8, sderby2_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x00, 0x00) AM_READ(sub_io_0_r) + AM_RANGE(0x20, 0x20) AM_READ(sub_r) + AM_RANGE(0x40, 0x40) AM_WRITE(main_nmi) + AM_RANGE(0x60, 0x60) AM_WRITENOP // Written with 0x12 byte sequence at start +ADDRESS_MAP_END + + +/************************************* + * + * Port definitions + * + *************************************/ + +static INPUT_PORTS_START( sderby2 ) + PORT_START("P1") + PORT_BIT ( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) + PORT_BIT ( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) + PORT_BIT ( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) + PORT_BIT ( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) + PORT_BIT ( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT ( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT ( 0x40, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT ( 0x80, IP_ACTIVE_LOW, IPT_START2 ) +INPUT_PORTS_END + + +/************************************* + * + * Graphics decoding + * + *************************************/ + +static const gfx_layout charlayout = +{ + 8,8, + 1024, + 4, + { 0, 1024*8*8, 2*1024*8*8, 3*1024*8*8 }, + { 0, 1, 2, 3, 4, 5, 6, 7 }, + { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, + 8*8 +}; + +static GFXDECODE_START( sderby2 ) + GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1024 ) + GFXDECODE_ENTRY( "gfx2", 0, charlayout, 0, 1024 ) +GFXDECODE_END + + +/************************************* + * + * Machine drivers + * + *************************************/ + +void sderby2_state::machine_start() +{ + +} + +void sderby2_state::machine_reset() +{ + +} + +static MACHINE_CONFIG_START( sderby2 ) + MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz) + MCFG_CPU_PROGRAM_MAP(main_program_map) + MCFG_CPU_IO_MAP(main_io_map) + MCFG_CPU_VBLANK_INT_DRIVER("screen", sderby2_state, irq0_line_hold) + + MCFG_CPU_ADD("subcpu", Z80, XTAL_3_579545MHz) + MCFG_CPU_PROGRAM_MAP(sub_program_map) + MCFG_CPU_IO_MAP(sub_io_map) + MCFG_CPU_VBLANK_INT_DRIVER("screen", sderby2_state, irq0_line_hold) + + // video hardware + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(256, 256) + MCFG_SCREEN_VISIBLE_AREA(0, 256 - 1, 0, 256 - 1) + MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) + MCFG_SCREEN_UPDATE_DRIVER(sderby2_state, screen_update) + MCFG_SCREEN_PALETTE("palette") + MCFG_PALETTE_ADD("palette", 256+256*3) + MCFG_PALETTE_INIT_OWNER(sderby2_state,sderby2) + + MCFG_GFXDECODE_ADD("gfxdecode", "palette", sderby2) + + // sound hardware +MACHINE_CONFIG_END + +/************************************* + * + * ROM definitions + * + *************************************/ + +ROM_START( sderby2 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "epr-6205.3s", 0x00000, 0x4000, CRC(c341de53) SHA1(9c273a2c1bd9739b1ea28438d578ab5eb3abfc4a) ) + ROM_LOAD( "epr-6206.3t", 0x04000, 0x4000, CRC(e700b601) SHA1(e0418e00bfb2ccb59ede9f081e12795d5d94287e) ) + + ROM_REGION( 0x18000, "gfx1", 0 ) // Character tiles + ROM_LOAD( "epr-6213.12h", 0x00000, 0x4000, CRC(d07fe96b) SHA1(cfd5ddaa843bc40c73966fa74a9b2c3f909f15bd) ) + ROM_LOAD( "epr-6214.12i", 0x04000, 0x4000, CRC(44fa1e2b) SHA1(88778b24b0f6f678bfb78c93cfa480195a4295bb) ) + ROM_LOAD( "epr-6215.12k", 0x08000, 0x4000, CRC(ab54d286) SHA1(897256b6709e1a4da9daba92b6bde39ccfccd8c1) ) + + ROM_REGION( 0x18000, "gfx2", 0 ) // Character tiles? + ROM_LOAD( "epr-6216.13h", 0x00000, 0x4000, CRC(c1f84ee6) SHA1(a16bc96c82725993d50db958827e474b7988415f) ) + ROM_LOAD( "epr-6217.13i", 0x04000, 0x4000, CRC(e0e7c85a) SHA1(31ac590290466ca76fc31d29c392195947922caa) ) + ROM_LOAD( "epr-6218.13k", 0x08000, 0x4000, CRC(6470b00b) SHA1(c32b11f840096428e18e1283e0622a315470f497) ) + + ROM_REGION( 0x18000, "gfx3", 0 ) // Sprites? + ROM_LOAD( "epr-6207.8v", 0x00000, 0x4000, CRC(7fbbaceb) SHA1(67905982db35fab7d62f1907af1e0df0c9af265c) ) + ROM_LOAD( "epr-6208.8w", 0x04000, 0x4000, CRC(dde795de) SHA1(7e7f63c14af42c0f1f52f670f6b4fa3d305fce07) ) + ROM_LOAD( "epr-6209.8x", 0x08000, 0x4000, CRC(bd97a8d5) SHA1(df71b6bbc2a5f4e7ad713253eebe3c7b5364cff6) ) + ROM_LOAD( "epr-6210.9v", 0x0c000, 0x4000, CRC(18b6cd90) SHA1(10619a4ff6c73cfa9ef7c4ce21f41ea61f2bb420) ) + ROM_LOAD( "epr-6211.9w", 0x10000, 0x4000, CRC(7dafbbdf) SHA1(6ac019e7b2d7523779ebc683ac2190e08f3183c0) ) + ROM_LOAD( "epr-6212.9x", 0x14000, 0x4000, CRC(1d2459e6) SHA1(201185fb8a5292acff4dec1f6d4c4b4dccf3c0a7) ) + + ROM_REGION( 0x08000, "saku", 0 ) // 'SAKU ROM DATA' - Track positions? + ROM_LOAD( "epr-6221.12r", 0x00000, 0x4000, CRC(c023ff18) SHA1(39691040a2222ca356f4cddfe1e3c97925c73837) ) + // 0x2cb5: C1h (Phil) vs 81h (Hammy) + ROM_LOAD( "epr-6222.12s", 0x04000, 0x4000, CRC(62a687ea) SHA1(3a571d652a98785da0d87d561a322e8a21d939c8) ) + + // 834-5528 + ROM_REGION( 0x10000, "subcpu", 0 ) + ROM_LOAD( "epr-6240.1l", 0x00000, 0x4000, CRC(cd53736b) SHA1(eb865df8dd3f9a5b572cfae5cb79b4bb650b6739) ) + ROM_LOAD( "epr-6241.1m", 0x04000, 0x4000, CRC(527b2c0d) SHA1(ca979eff0a3435f428e1771e07743ea5372e75b0) ) + + ROM_REGION( 0x20000, "gfx4", 0) + ROM_LOAD( "epr-6242.7t", 0x00000, 0x8000, CRC(ef72ab7c) SHA1(67b19080fc639866582b14739aa32138f2debf6e) ) + ROM_LOAD( "epr-6243.11t", 0x08000, 0x8000, CRC(3741fd86) SHA1(52aafb5168b25b78a82eafd8f507fd7afd352be2) ) + ROM_LOAD( "epr-6246.12m", 0x10000, 0x8000, CRC(bc2a3af4) SHA1(3f1ad33b53327f2714c3a1ca4eeb5296f769ceb3) ) + ROM_LOAD( "epr-6247.12r", 0x18000, 0x8000, CRC(cedfa342) SHA1(3d780779e55237b0396ed0d7183ac7b00de871cb) ) + + ROM_REGION( 0x1800, "proms", 0) // Color PROMs + ROM_LOAD( "pr-6226.1b", 0x00000, 0x0100, CRC(f04684fb) SHA1(bbb757faaf7d98096b85266e9d43ce305a456285) ) // All 82S129 + ROM_LOAD( "pr-6225.2b", 0x00100, 0x0100, CRC(c903e226) SHA1(787ce629e4a352ba9f2d7241fe78444700f23983) ) + ROM_LOAD( "pr-6224.3b", 0x00200, 0x0100, CRC(8862c6e6) SHA1(bc327f985cd147606f83b682cce0a93913ed6aaa) ) + ROM_LOAD( "pr-6223.2c", 0x00300, 0x0100, CRC(12354f92) SHA1(5fe3f92c174d68930536a6f59f8d75386b7fdefe) ) + + ROM_LOAD( "pr-6226.4b", 0x00400, 0x0100, CRC(f04684fb) SHA1(bbb757faaf7d98096b85266e9d43ce305a456285) ) + ROM_LOAD( "pr-6225.5b", 0x00500, 0x0100, CRC(c903e226) SHA1(787ce629e4a352ba9f2d7241fe78444700f23983) ) + ROM_LOAD( "pr-6224.6b", 0x00600, 0x0100, CRC(8862c6e6) SHA1(bc327f985cd147606f83b682cce0a93913ed6aaa) ) + ROM_LOAD( "pr-6223.5c", 0x00700, 0x0100, CRC(12354f92) SHA1(5fe3f92c174d68930536a6f59f8d75386b7fdefe) ) + + ROM_LOAD( "pr-6226.7b", 0x00800, 0x0100, CRC(f04684fb) SHA1(bbb757faaf7d98096b85266e9d43ce305a456285) ) + ROM_LOAD( "pr-6225.8b", 0x00900, 0x0100, CRC(c903e226) SHA1(787ce629e4a352ba9f2d7241fe78444700f23983) ) + ROM_LOAD( "pr-6224.9b", 0x00a00, 0x0100, CRC(8862c6e6) SHA1(bc327f985cd147606f83b682cce0a93913ed6aaa) ) + ROM_LOAD( "pr-6223.9c", 0x00b00, 0x0100, CRC(12354f92) SHA1(5fe3f92c174d68930536a6f59f8d75386b7fdefe) ) + + ROM_REGION( 0x0800, "proms_misc", 0) + ROM_LOAD( "pr-6235.7p", 0x0000, 0x0020, CRC(981ea339) SHA1(4483ead7fe8bc4188b71775c09c5b5927f0028b1) ) // 82S123 + ROM_LOAD( "pr-6236.7r", 0x0040, 0x0020, CRC(5ebe0b9d) SHA1(e3ecf25eff5f04a785ee88248cad58cc4d8d5122) ) // 82S123 + ROM_LOAD( "pr-6237.12x", 0x0100, 0x0100, CRC(5514cde3) SHA1(967af563258c5324bf4b1ca8dcece929d1a69880) ) // TBP28L22N + ROM_LOAD( "pr-6237.12w", 0x0200, 0x0100, CRC(5514cde3) SHA1(967af563258c5324bf4b1ca8dcece929d1a69880) ) // TBP28L22N + ROM_LOAD( "pr-6237.13w", 0x0300, 0x0100, CRC(5514cde3) SHA1(967af563258c5324bf4b1ca8dcece929d1a69880) ) // TBP28L22N + ROM_LOAD( "82s141.8n", 0x0400, 0x0200, CRC(2b35954a) SHA1(ceef7aed9b8a3603d56e79a7953c15a7db96aded) ) + + // TODO: Document PALs + // 315-5080 = PAL14H4 (PROTECTED) +ROM_END + + +/************************************* + * + * Driver initialization + * + *************************************/ + +DRIVER_INIT_MEMBER(sderby2_state, sderby2) +{ + +} + + +/************************************* + * + * Game drivers + * + *************************************/ + +GAME( 1985, sderby2, 0, sderby2, sderby2, sderby2_state, sderby2, ROT0, "Sega", "Super Derby II", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/segae.cpp b/src/mame/drivers/segae.cpp index 77d78684fe6..55035533d26 100644 --- a/src/mame/drivers/segae.cpp +++ b/src/mame/drivers/segae.cpp @@ -363,13 +363,13 @@ static ADDRESS_MAP_START( systeme_map, AS_PROGRAM, 8, systeme_state ) AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("mainram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, systeme_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, systeme_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("mainram") ADDRESS_MAP_END -static ADDRESS_MAP_START( banked_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, systeme_state ) +static ADDRESS_MAP_START( banked_decrypted_opcodes_map, AS_OPCODES, 8, systeme_state ) AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("mainram") @@ -396,12 +396,12 @@ static ADDRESS_MAP_START( io_map, AS_IO, 8, systeme_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( vdp1_map, AS_0, 8, systeme_state ) +static ADDRESS_MAP_START( vdp1_map, 0, 8, systeme_state ) AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("vdp1_bank") ADDRESS_MAP_END -static ADDRESS_MAP_START( vdp2_map, AS_0, 8, systeme_state ) +static ADDRESS_MAP_START( vdp2_map, 0, 8, systeme_state ) AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("vdp2_bank") ADDRESS_MAP_END @@ -970,12 +970,12 @@ static MACHINE_CONFIG_START( systeme ) MCFG_DEVICE_ADD("vdp1", SEGA315_5124, 0) MCFG_SEGA315_5124_IS_PAL(false) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vdp1_map) + MCFG_DEVICE_ADDRESS_MAP(0, vdp1_map) MCFG_DEVICE_ADD("vdp2", SEGA315_5124, 0) MCFG_SEGA315_5124_IS_PAL(false) MCFG_SEGA315_5124_INT_CB(INPUTLINE("maincpu", 0)) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vdp2_map) + MCFG_DEVICE_ADDRESS_MAP(0, vdp2_map) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/drivers/segag80r.cpp b/src/mame/drivers/segag80r.cpp index edce5584cc7..aeee4977c87 100644 --- a/src/mame/drivers/segag80r.cpp +++ b/src/mame/drivers/segag80r.cpp @@ -324,7 +324,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, segag80r_state ) AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(vidram_w) AM_SHARE("videoram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, segag80r_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, segag80r_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000) AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(mainram_w) AM_SHARE("mainram") diff --git a/src/mame/drivers/segahang.cpp b/src/mame/drivers/segahang.cpp index f1c12d15ab0..2c5c376f21d 100644 --- a/src/mame/drivers/segahang.cpp +++ b/src/mame/drivers/segahang.cpp @@ -410,7 +410,7 @@ static ADDRESS_MAP_START( hangon_map, AS_PROGRAM, 16, segahang_state ) AM_RANGE(0xe00000, 0xffffff) AM_READWRITE(hangon_io_r, hangon_io_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, segahang_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, segahang_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END @@ -443,7 +443,7 @@ static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 16, segahang_state ) AM_RANGE(0x07c000, 0x07ffff) AM_RAM AM_SHARE("subram") ADDRESS_MAP_END -static ADDRESS_MAP_START( fd1094_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, segahang_state ) +static ADDRESS_MAP_START( fd1094_decrypted_opcodes_map, AS_OPCODES, 16, segahang_state ) AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/segajw.cpp b/src/mame/drivers/segajw.cpp index f8c8f3b6a77..986c2fc6a99 100644 --- a/src/mame/drivers/segajw.cpp +++ b/src/mame/drivers/segajw.cpp @@ -201,7 +201,7 @@ static ADDRESS_MAP_START( segajw_audiocpu_io_map, AS_IO, 8, segajw_state ) AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) ADDRESS_MAP_END -static ADDRESS_MAP_START( segajw_hd63484_map, AS_0, 16, segajw_state ) +static ADDRESS_MAP_START( segajw_hd63484_map, 0, 16, segajw_state ) AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_RANGE(0x80000, 0xbffff) AM_ROM AM_REGION("gfx1", 0) ADDRESS_MAP_END @@ -352,7 +352,7 @@ void segajw_state::machine_reset() m_coin_counter = 0xff; } -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, segajw_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, segajw_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/segaorun.cpp b/src/mame/drivers/segaorun.cpp index 6df2d4c3ffd..fcd8de73381 100644 --- a/src/mame/drivers/segaorun.cpp +++ b/src/mame/drivers/segaorun.cpp @@ -896,7 +896,7 @@ static ADDRESS_MAP_START( outrun_map, AS_PROGRAM, 16, segaorun_state ) AM_RANGE(0x500000, 0x507fff) AM_RAM AM_SHARE("workram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, segaorun_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, segaorun_state ) AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp index bcc6c3f6e55..06d4f8481ca 100644 --- a/src/mame/drivers/segas16a.cpp +++ b/src/mame/drivers/segas16a.cpp @@ -972,7 +972,7 @@ static ADDRESS_MAP_START( system16a_map, AS_PROGRAM, 16, segas16a_state ) AM_RANGE(0xc70000, 0xc73fff) AM_MIRROR(0x38c000) AM_RAM AM_SHARE("nvram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, segas16a_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, segas16a_state ) AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") ADDRESS_MAP_END @@ -987,7 +987,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, segas16a_state ) AM_RANGE(0xf800, 0xffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( sound_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, segas16a_state ) +static ADDRESS_MAP_START( sound_decrypted_opcodes_map, AS_OPCODES, 8, segas16a_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("sound_decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp index 69f50ab2f17..d4419fcba4c 100644 --- a/src/mame/drivers/segas16b.cpp +++ b/src/mame/drivers/segas16b.cpp @@ -1405,41 +1405,6 @@ void segas16b_state::ddux_i8751_sim() } } - -//------------------------------------------------- -// goldnaxe_i8751_sim - simulate the I8751 -// from Golden Axe -//------------------------------------------------- - -void segas16b_state::goldnaxe_i8751_sim() -{ - // signal a VBLANK to the main CPU - m_maincpu->set_input_line(4, HOLD_LINE); - - // they periodically clear the data at 2cd8,2cda,2cdc,2cde and expect the MCU to fill it in - if (m_workram[0x2cd8/2] == 0 && m_workram[0x2cda/2] == 0 && m_workram[0x2cdc/2] == 0 && m_workram[0x2cde/2] == 0) - { - m_workram[0x2cd8/2] = 0x048c; - m_workram[0x2cda/2] = 0x159d; - m_workram[0x2cdc/2] = 0x26ae; - m_workram[0x2cde/2] = 0x37bf; - } - - // process any new sound data - uint16_t temp = m_workram[0x2cfc/2]; - if ((temp & 0xff00) != 0x0000) - { - address_space &space = m_maincpu->space(AS_PROGRAM); - m_mapper->write(space, 0x03, temp >> 8); - m_workram[0x2cfc/2] = temp & 0x00ff; - } - - // read inputs - m_workram[0x2cd0/2] = (ioport("P1")->read() << 8) | ioport("P2")->read(); - m_workram[0x2c96/2] = ioport("SERVICE")->read() << 8; -} - - //------------------------------------------------- // tturf_i8751_sim - simulate the I8751 // from Tough Turf @@ -1755,7 +1720,7 @@ static ADDRESS_MAP_START( system16b_map, AS_PROGRAM, 16, segas16b_state ) AM_RANGE(0x500000, 0x503fff) AM_RAM AM_SHARE("workram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, segas16b_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, segas16b_state ) AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") ADDRESS_MAP_END @@ -1785,7 +1750,7 @@ static ADDRESS_MAP_START( system16b_bootleg_map, AS_PROGRAM, 16, segas16b_state AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("workram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map_x, AS_DECRYPTED_OPCODES, 16, segas16b_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map_x, AS_OPCODES, 16, segas16b_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END @@ -1872,7 +1837,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, segas16b_state ) AM_RANGE(0xf800, 0xffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( sound_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, segas16b_state ) +static ADDRESS_MAP_START( sound_decrypted_opcodes_map, AS_OPCODES, 8, segas16b_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("sound_decrypted_opcodes") AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("soundbank") @@ -6475,15 +6440,7 @@ ROM_START( goldnaxe2 ) ROM_LOAD( "mpr-12384.a11", 0x10000, 0x20000, CRC(6218d8e7) SHA1(5a745c750efb4a61716f99befb7ed14cc84e9973) ) ROM_REGION( 0x1000, "mcu", 0 ) // Intel i8751 protection MCU - /* NOT CURRENTLY USED - - this chip was faulty, the internal checksum routine fails. actual code looks like it should be 99.99% the - same as the 'goldnaxe' set but unused areas have different garbage fill data, so finding the bad bits is - difficult. - - Calculated checksum: 5F8F - File checksum: 5E8F */ - ROM_LOAD( "317-0112.c2", 0x00000, 0x1000, BAD_DUMP CRC(d8f2f1c0) SHA1(04594ed5558af63cde62de6cc4020b35b8a5889e) ) + ROM_LOAD( "317-0112.c2", 0x00000, 0x1000, CRC(bda31044) SHA1(79ba41ac0768c1a55faad2f768120f15bcde4b90) ) ROM_END //************************************************************************************************************************* @@ -8737,17 +8694,6 @@ DRIVER_INIT_MEMBER(segas16b_state,exctleag_5358) m_custom_io_r = read16_delegate(FUNC(segas16b_state::sdi_custom_io_r), this); } -DRIVER_INIT_MEMBER(segas16b_state,goldnaxe_5704) -{ - DRIVER_INIT_CALL(generic_5704); - m_i8751_vblank_hook = i8751_sim_delegate(&segas16b_state::goldnaxe_i8751_sim, this); - - static const uint8_t memory_control_5704[0x10] = - { 0x02,0x00, 0x02,0x08, 0x00,0x1f, 0x00,0xff, 0x00,0x20, 0x01,0x10, 0x00,0x14, 0x00,0xc4 }; - m_i8751_initial_config = memory_control_5704; -} - - DRIVER_INIT_MEMBER(segas16b_state,hwchamp_5521) { DRIVER_INIT_CALL(generic_5521); @@ -8892,7 +8838,7 @@ GAME( 1989, goldnaxe, 0, system16b_i8751_5797,goldnaxe, segas16b_state, GAME( 1989, goldnaxeu, goldnaxe, system16b_fd1094_5797,goldnaxe,segas16b_state,generic_5797, ROT0, "Sega", "Golden Axe (set 5, US) (FD1094 317-0122)", 0 ) GAME( 1989, goldnaxej, goldnaxe, system16b_fd1094, goldnaxe, segas16b_state,generic_5704, ROT0, "Sega", "Golden Axe (set 4, Japan) (FD1094 317-0121)", 0 ) GAME( 1989, goldnaxe3, goldnaxe, system16b_fd1094, goldnaxe, segas16b_state,generic_5704, ROT0, "Sega", "Golden Axe (set 3, World) (FD1094 317-0120)", 0) -GAME( 1989, goldnaxe2, goldnaxe, system16b_i8751, goldnaxe, segas16b_state,goldnaxe_5704, ROT0, "Sega", "Golden Axe (set 2, US) (8751 317-0112)", 0 ) +GAME( 1989, goldnaxe2, goldnaxe, system16b_i8751, goldnaxe, segas16b_state,generic_5704, ROT0, "Sega", "Golden Axe (set 2, US) (8751 317-0112)", 0 ) GAME( 1989, goldnaxe1, goldnaxe, system16b_fd1094_5797,goldnaxe,segas16b_state,generic_5797, ROT0, "Sega", "Golden Axe (set 1, World) (FD1094 317-0110)", 0 ) GAME( 1987, hwchamp, 0, system16b, hwchamp, segas16b_state,hwchamp_5521, ROT0, "Sega", "Heavyweight Champ", 0 ) diff --git a/src/mame/drivers/segas18.cpp b/src/mame/drivers/segas18.cpp index 54764fb9ca1..25c6fd976ea 100644 --- a/src/mame/drivers/segas18.cpp +++ b/src/mame/drivers/segas18.cpp @@ -645,7 +645,7 @@ static ADDRESS_MAP_START( system18_map, AS_PROGRAM, 16, segas18_state ) AM_RANGE(0x500000, 0x503fff) AM_RAM AM_SHARE("workram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, segas18_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, segas18_state ) AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/segas24.cpp b/src/mame/drivers/segas24.cpp index 4d3c87175f3..418daeee6b5 100644 --- a/src/mame/drivers/segas24.cpp +++ b/src/mame/drivers/segas24.cpp @@ -1182,7 +1182,7 @@ static ADDRESS_MAP_START( hotrod_cpu2_map, AS_PROGRAM, 16, segas24_state ) AM_RANGE(0xc00010, 0xc00011) AM_MIRROR(0x07ffe0) AM_DEVREADWRITE8("pedaladc", msm6253_device, d7_r, select_w, 0x00ff) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, segas24_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, segas24_state ) AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/segaxbd.cpp b/src/mame/drivers/segaxbd.cpp index 05cad06794b..9f1496e53c0 100644 --- a/src/mame/drivers/segaxbd.cpp +++ b/src/mame/drivers/segaxbd.cpp @@ -980,7 +980,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, segaxbd_state ) AM_RANGE(0x3fc000, 0x3fffff) AM_RAM AM_SHARE("backup2") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, segaxbd_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, segaxbd_state ) AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/seicross.cpp b/src/mame/drivers/seicross.cpp index 37ee07676fe..9090f174012 100644 --- a/src/mame/drivers/seicross.cpp +++ b/src/mame/drivers/seicross.cpp @@ -149,7 +149,7 @@ static ADDRESS_MAP_START( mcu_no_nvram_map, AS_PROGRAM, 8, seicross_state ) AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share1") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, seicross_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, seicross_state ) AM_RANGE(0x8000, 0xf7ff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share1") ADDRESS_MAP_END diff --git a/src/mame/drivers/senjyo.cpp b/src/mame/drivers/senjyo.cpp index b32b5056826..3380be0d37c 100644 --- a/src/mame/drivers/senjyo.cpp +++ b/src/mame/drivers/senjyo.cpp @@ -156,7 +156,7 @@ static ADDRESS_MAP_START( senjyo_map, AS_PROGRAM, 8, senjyo_state ) AM_RANGE(0xd005, 0xd005) AM_READ_PORT("DSW2") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, senjyo_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, senjyo_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/sfbonus.cpp b/src/mame/drivers/sfbonus.cpp index 62cb992d089..0ae11cd1b0e 100644 --- a/src/mame/drivers/sfbonus.cpp +++ b/src/mame/drivers/sfbonus.cpp @@ -1355,7 +1355,7 @@ void sfbonus_state::machine_reset() } -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, sfbonus_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, sfbonus_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/sg1000a.cpp b/src/mame/drivers/sg1000a.cpp index 83ef7aa6767..f103d5e906f 100644 --- a/src/mame/drivers/sg1000a.cpp +++ b/src/mame/drivers/sg1000a.cpp @@ -304,7 +304,7 @@ static ADDRESS_MAP_START( program_map, AS_PROGRAM, 8, sg1000a_state ) AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_MIRROR(0x400) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, sg1000a_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, sg1000a_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000) ADDRESS_MAP_END @@ -412,7 +412,7 @@ static INPUT_PORTS_START( dokidoki ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END -static INPUT_PORTS_START( sderby2 ) +static INPUT_PORTS_START( sderby2s ) PORT_INCLUDE( sg1000 ) PORT_MODIFY("DSW") @@ -489,7 +489,7 @@ static MACHINE_CONFIG_DERIVED( sg1000ax, sg1000a ) MCFG_SEGACRPT_SET_DECRYPTED_TAG(":decrypted_opcodes") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( sderby2, sg1000a ) +static MACHINE_CONFIG_DERIVED( sderby2s, sg1000a ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_CLOCK(XTAL_10_738635MHz / 3) MCFG_CPU_IO_MAP(sderby2_io_map) @@ -524,7 +524,7 @@ ROM_START( dokidoki ) ROM_LOAD( "epr-7358.ic3", 0x8000, 0x4000, CRC(c6f26b0b) SHA1(3753e05b6e77159832dbe88562ba7a818120d1a3) ) ROM_END -ROM_START( sderby2 ) +ROM_START( sderby2s ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "epr-6450d.ic10", 0x0000, 0x4000, CRC(e56986d3) SHA1(a2dbdc95128cc94a1492e080aeea402f2d4b89fe) ) ROM_LOAD( "epr-6504d.ic11", 0x4000, 0x4000, CRC(7bb364b9) SHA1(9f93572b6d999422d93ad5f7a251b4695565651f) ) @@ -551,4 +551,4 @@ DRIVER_INIT_MEMBER(sg1000a_state,sg1000a) GAME( 1984, chboxing, 0, sg1000a, chboxing, sg1000a_state, sg1000a, ROT0, "Sega", "Champion Boxing", 0 ) GAME( 1985, chwrestl, 0, sg1000ax, chwrestl, sg1000a_state, sg1000a, ROT0, "Sega", "Champion Pro Wrestling", 0 ) GAME( 1985, dokidoki, 0, sg1000a, dokidoki, sg1000a_state, sg1000a, ROT0, "Sega", "Doki Doki Penguin Land", 0 ) -GAME( 1985, sderby2, 0, sderby2, sderby2, sg1000a_state, sg1000a, ROT0, "Sega", "Super Derby II (Satellite board)", MACHINE_NOT_WORKING ) // inputs aren't hooked up, probably needs to be connected to the main board anyway +GAME( 1985, sderby2s, 0, sderby2s, sderby2s, sg1000a_state, sg1000a, ROT0, "Sega", "Super Derby II (Satellite board)", MACHINE_NOT_WORKING ) // inputs aren't hooked up, probably needs to be connected to the main board anyway diff --git a/src/mame/drivers/shanghai.cpp b/src/mame/drivers/shanghai.cpp index 3ffa33b8033..23ea0e1507f 100644 --- a/src/mame/drivers/shanghai.cpp +++ b/src/mame/drivers/shanghai.cpp @@ -399,7 +399,7 @@ static INPUT_PORTS_START( shangha2 ) PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) ) INPUT_PORTS_END -static ADDRESS_MAP_START( hd63484_map, AS_0, 16, shanghai_state ) +static ADDRESS_MAP_START( hd63484_map, 0, 16, shanghai_state ) AM_RANGE(0x00000, 0x3ffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/shootaway2.cpp b/src/mame/drivers/shootaway2.cpp index bf41b769f22..71a31a0ad65 100644 --- a/src/mame/drivers/shootaway2.cpp +++ b/src/mame/drivers/shootaway2.cpp @@ -95,11 +95,14 @@ static MACHINE_CONFIG_START( m74 ) MACHINE_CONFIG_END ROM_START(shootaw2) + ROM_REGION(0x20000, "maincpu", 0) /* C68 / M37450 program ROM */ + ROM_LOAD( "sas1_mpr0c.8l", 0x000000, 0x020000, CRC(21379550) SHA1(2f2b43ca526d1a77c80f81d0e1f22155d90f725d) ) + ROM_REGION(0x80000, "subcpu", 0) /* Z84C011 program ROM */ ROM_LOAD( "sas1_spr0.7f", 0x000000, 0x080000, CRC(3bc14ba3) SHA1(7a75281621f23107c5c3c1a09831be2f8bb93540) ) - ROM_REGION(0x20000, "maincpu", 0) /* C68 / M37450 program ROM */ - ROM_LOAD( "sas1_mpr0c.8l", 0x000000, 0x020000, CRC(21379550) SHA1(2f2b43ca526d1a77c80f81d0e1f22155d90f725d) ) + ROM_REGION(0x2000, "at28c64", 0) /* AT28C64 parallel EEPROM (not yet supported by MAME) */ + ROM_LOAD( "m28c64a.9l", 0x000000, 0x002000, CRC(d65d4176) SHA1(dd9b529a729685f9535ae7f060f67d75d70d9567) ) ROM_REGION(0x40000, "oki", 0) ROM_LOAD( "unknown_label.5e", 0x000000, 0x040000, CRC(fa75e91e) SHA1(d06ca906135a3f23c1f0dadff75f940ea7ca0e4a) ) diff --git a/src/mame/drivers/shtzone.cpp b/src/mame/drivers/shtzone.cpp index c3d42179a4e..9adb3247e6e 100644 --- a/src/mame/drivers/shtzone.cpp +++ b/src/mame/drivers/shtzone.cpp @@ -121,4 +121,4 @@ ROM_START( shtzone ) ROM_LOAD( "epr10894a.20", 0x00000, 0x04000, CRC(ea8901d9) SHA1(43fd8bfc395e3b2e3fbe9645d692a5eb04783d9c) ) ROM_END -GAME( 1987, shtzone, 0, shtzone, shtzone, shtzone_state, 0, ROT0, "Sega", "Shooting Zone System BIOS", MACHINE_IS_SKELETON | MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_IS_BIOS_ROOT ) +GAME( 1987, shtzone, 0, shtzone, shtzone, shtzone_state, 0, ROT0, "Sega", "Shooting Zone System BIOS", MACHINE_IS_SKELETON | MACHINE_IS_BIOS_ROOT ) diff --git a/src/mame/drivers/sigmab52.cpp b/src/mame/drivers/sigmab52.cpp index 3add7883ff7..f3a3cf3c69d 100644 --- a/src/mame/drivers/sigmab52.cpp +++ b/src/mame/drivers/sigmab52.cpp @@ -373,7 +373,7 @@ ADDRESS_MAP_END */ -static ADDRESS_MAP_START( jwildb52_hd63484_map, AS_0, 16, sigmab52_state ) +static ADDRESS_MAP_START( jwildb52_hd63484_map, 0, 16, sigmab52_state ) AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_RANGE(0x20000, 0x3ffff) AM_ROM AM_REGION("gfx1", 0) ADDRESS_MAP_END diff --git a/src/mame/drivers/skylncr.cpp b/src/mame/drivers/skylncr.cpp index ed2de02827c..560884f102e 100644 --- a/src/mame/drivers/skylncr.cpp +++ b/src/mame/drivers/skylncr.cpp @@ -531,17 +531,17 @@ static ADDRESS_MAP_START( io_map_mbutrfly, AS_IO, 8, skylncr_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( bdream97_opcode_map, AS_DECRYPTED_OPCODES, 8, skylncr_state ) +static ADDRESS_MAP_START( bdream97_opcode_map, AS_OPCODES, 8, skylncr_state ) AM_RANGE(0x0000, 0xffff) AM_READ(bdream97_opcode_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, skylncr_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, skylncr_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( ramdac2_map, AS_0, 8, skylncr_state ) +static ADDRESS_MAP_START( ramdac2_map, 0, 8, skylncr_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac2", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/sliver.cpp b/src/mame/drivers/sliver.cpp index 5cca3cf583c..73399954a25 100644 --- a/src/mame/drivers/sliver.cpp +++ b/src/mame/drivers/sliver.cpp @@ -392,7 +392,7 @@ static ADDRESS_MAP_START( soundmem_io, AS_IO, 8, sliver_state ) AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_WRITE(oki_setbank ) ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, sliver_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, sliver_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -494,7 +494,7 @@ static INPUT_PORTS_START( sliver ) PORT_DIPUNUSED_DIPLOC( 0x8000, 0x0000, "SW2:8" ) /* Listed as "UNUSED (MUST ON)" */ INPUT_PORTS_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, sliver_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, sliver_state ) AM_RANGE(0x000, 0x3ff) AM_RAM AM_SHARE("colorram") ADDRESS_MAP_END @@ -530,7 +530,7 @@ static MACHINE_CONFIG_START( sliver ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.6) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.6) MACHINE_CONFIG_END diff --git a/src/mame/drivers/snk6502.cpp b/src/mame/drivers/snk6502.cpp index 9df4a7484c9..5a9396cc80a 100644 --- a/src/mame/drivers/snk6502.cpp +++ b/src/mame/drivers/snk6502.cpp @@ -1339,7 +1339,7 @@ ROM_START( fantasyu ) ROM_LOAD( "fs_f_11.bin", 0x5000, 0x0800, CRC(3a352e1f) SHA1(af880ce3daed0877d454421bd08c86ff71f6bf72) ) ROM_END -ROM_START( fantasy ) +ROM_START( fantasyg ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "5.12", 0x3000, 0x1000, CRC(0968ab50) SHA1(f09d03a171349895c5cb69e684901be63d272b32) ) ROM_LOAD( "1.7", 0x4000, 0x1000, CRC(de83000e) SHA1(ede1dda46406b4d340f1efea3bc85b2227af9e1d) ) @@ -1653,9 +1653,9 @@ GAME( 1981, satansatind, satansat, satansat, satansat, snk6502_state, 0, ROT90, GAME( 1981, vanguard, 0, vanguard, vanguard, snk6502_state, 0, ROT90, "SNK", "Vanguard (SNK)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1981, vanguardc, vanguard, vanguard, vanguard, snk6502_state, 0, ROT90, "SNK (Centuri license)", "Vanguard (Centuri)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1981, vanguardj, vanguard, vanguard, vanguard, snk6502_state, 0, ROT90, "SNK", "Vanguard (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, fantasy, 0, fantasy, fantasy, snk6502_state, 0, ROT90, "SNK", "Fantasy (Germany)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // bootleg? -GAME( 1981, fantasyu, fantasy, fantasy, fantasyu, snk6502_state, 0, ROT90, "SNK (Rock-Ola license)", "Fantasy (US)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, fantasyj, fantasy, fantasy, fantasyu, snk6502_state, 0, ROT90, "SNK", "Fantasy (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, fantasyg, fantasyu, fantasy, fantasy, snk6502_state, 0, ROT90, "SNK", "Fantasy (Germany)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // bootleg? +GAME( 1981, fantasyu, 0, fantasy, fantasyu, snk6502_state, 0, ROT90, "SNK (Rock-Ola license)", "Fantasy (US)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, fantasyj, fantasyu, fantasy, fantasyu, snk6502_state, 0, ROT90, "SNK", "Fantasy (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1982, pballoon, 0, pballoon, pballoon, snk6502_state, 0, ROT90, "SNK", "Pioneer Balloon", MACHINE_SUPPORTS_SAVE ) GAME( 1982, pballoonr, pballoon, pballoon, pballoon, snk6502_state, 0, ROT90, "SNK (Rock-Ola license)", "Pioneer Balloon (Rock-Ola license)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, nibbler, 0, nibbler, nibbler, snk6502_state, 0, ROT90, "Rock-Ola", "Nibbler (rev 9)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/speedspn.cpp b/src/mame/drivers/speedspn.cpp index 2de4f819986..218b3b62634 100644 --- a/src/mame/drivers/speedspn.cpp +++ b/src/mame/drivers/speedspn.cpp @@ -126,7 +126,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, speedspn_state ) AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, speedspn_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, speedspn_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -308,7 +308,7 @@ static MACHINE_CONFIG_START( speedspn ) MCFG_OKIM6295_ADD("oki", 1122000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END /*** ROM LOADING *************************************************************/ diff --git a/src/mame/drivers/stfight.cpp b/src/mame/drivers/stfight.cpp index 03dcf36c86a..3acabb812a2 100644 --- a/src/mame/drivers/stfight.cpp +++ b/src/mame/drivers/stfight.cpp @@ -295,7 +295,7 @@ static ADDRESS_MAP_START( stfight_cpu1_map, AS_PROGRAM, 8, stfight_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, stfight_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, stfight_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/stlforce.cpp b/src/mame/drivers/stlforce.cpp index 25aeacfec6e..a4ecdfe30d6 100644 --- a/src/mame/drivers/stlforce.cpp +++ b/src/mame/drivers/stlforce.cpp @@ -13,13 +13,13 @@ inputs etc. by stephh ---------------------------------------- 68000P12 processor -15mHZ cyrstal next to it +15mHZ crystal next to it 2 of these: TPC 1020AFN-084c -32MHz crystal colse to this. +32MHz crystal close to this. 1 GAL 5 PROMS (16S25H) @@ -73,33 +73,31 @@ TO DO : #include "includes/stlforce.h" #include "cpu/m68000/m68000.h" -#include "machine/eepromser.h" #include "sound/okim6295.h" #include "screen.h" #include "speaker.h" - -WRITE16_MEMBER(stlforce_state::eeprom_w) +WRITE8_MEMBER(stlforce_state::eeprom_w) { - if( ACCESSING_BITS_0_7 ) - { - m_eeprom->di_write(data & 0x01); - m_eeprom->cs_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); - m_eeprom->clk_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE ); - } + m_eeprom->di_write(data & 0x01); + m_eeprom->cs_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE ); } -WRITE16_MEMBER(stlforce_state::oki_bank_w) +WRITE8_MEMBER(stlforce_state::oki_bank_w) { - m_oki->set_rom_bank((data>>8) & 3); + if (m_okibank.found()) + { + m_okibank->set_entry(data & 3); + } } static ADDRESS_MAP_START( stlforce_map, AS_PROGRAM, 16, stlforce_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x1007ff) AM_RAM_WRITE(stlforce_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(stlforce_mlow_videoram_w) AM_SHARE("mlow_videoram") - AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(stlforce_mhigh_videoram_w) AM_SHARE("mhigh_videoram") - AM_RANGE(0x101800, 0x1027ff) AM_RAM_WRITE(stlforce_tx_videoram_w) AM_SHARE("tx_videoram") + AM_RANGE(0x100000, 0x1007ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") + AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(mlow_videoram_w) AM_SHARE("mlow_videoram") + AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(mhigh_videoram_w) AM_SHARE("mhigh_videoram") + AM_RANGE(0x101800, 0x1027ff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("tx_videoram") AM_RANGE(0x102800, 0x102fff) AM_RAM /* unknown / ram */ AM_RANGE(0x103000, 0x1033ff) AM_RAM AM_SHARE("bg_scrollram") AM_RANGE(0x103400, 0x1037ff) AM_RAM AM_SHARE("mlow_scrollram") @@ -111,12 +109,17 @@ static ADDRESS_MAP_START( stlforce_map, AS_PROGRAM, 16, stlforce_state ) AM_RANGE(0x109000, 0x11ffff) AM_RAM AM_RANGE(0x400000, 0x400001) AM_READ_PORT("INPUT") AM_RANGE(0x400002, 0x400003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x400010, 0x400011) AM_WRITE(eeprom_w) - AM_RANGE(0x400012, 0x400013) AM_WRITE(oki_bank_w) + AM_RANGE(0x400010, 0x400011) AM_WRITE8(eeprom_w, 0x00ff) + AM_RANGE(0x400012, 0x400013) AM_WRITE8(oki_bank_w, 0xff00) AM_RANGE(0x40001e, 0x40001f) AM_WRITENOP // sprites buffer commands AM_RANGE(0x410000, 0x410001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) ADDRESS_MAP_END +static ADDRESS_MAP_START( twinbrat_oki_map, 0, 8, stlforce_state ) + AM_RANGE(0x00000, 0x1ffff) AM_ROM + AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") +ADDRESS_MAP_END + static INPUT_PORTS_START( stlforce ) PORT_START("INPUT") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) @@ -193,7 +196,7 @@ static MACHINE_CONFIG_START( stlforce ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 15000000) MCFG_CPU_PROGRAM_MAP(stlforce_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", stlforce_state, irq4_line_hold) + MCFG_CPU_VBLANK_INT_DRIVER("screen", stlforce_state, irq4_line_hold) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -203,7 +206,7 @@ static MACHINE_CONFIG_START( stlforce ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(1*8, 47*8-1, 0*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(stlforce_state, screen_update_stlforce) + MCFG_SCREEN_UPDATE_DRIVER(stlforce_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", stlforce) @@ -213,7 +216,7 @@ static MACHINE_CONFIG_START( stlforce ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32 , PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -225,6 +228,9 @@ static MACHINE_CONFIG_DERIVED( twinbrat, stlforce ) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(3*8, 45*8-1, 0*8, 30*8-1) + + MCFG_DEVICE_MODIFY("oki") + MCFG_DEVICE_ADDRESS_MAP(0, twinbrat_oki_map) MACHINE_CONFIG_END ROM_START( stlforce ) @@ -245,7 +251,7 @@ ROM_START( stlforce ) ROM_LOAD( "stlforce.u33", 0xc0000, 0x40000, CRC(19415cf3) SHA1(31490a1f3321558f82667b63f3963b2ec3fa0c59) ) /* only one bank */ - ROM_REGION( 0x80000, "oki", 0 ) /* samples */ + ROM_REGION( 0x80000, "oki", 0 ) /* samples, second half 0xff filled */ ROM_LOAD( "stlforce.u1", 0x00000, 0x80000, CRC(0a55edf1) SHA1(091f12e8110c62df22b370a2e710c930ba06e8ca) ) ROM_REGION16_BE( 0x80, "eeprom", 0 ) @@ -309,21 +315,9 @@ ROM_START( twinbrat ) ROM_LOAD( "9.bin", 0x080000, 0x40000, CRC(13194d89) SHA1(95c35b6012f98a64630abb40fd55b24ff8a5e031) ) ROM_LOAD( "8.bin", 0x0c0000, 0x40000, CRC(79f14528) SHA1(9c07d9a9e59f69a525bbaec05d74eb8d21bb9563) ) - ROM_REGION( 0x080000, "user1", 0 ) /* Samples */ + ROM_REGION( 0x080000, "oki", 0 ) /* Samples, 0x00000 - 0x20000 fixed, 0x20000 - 0x40000 banked */ ROM_LOAD( "1.bin", 0x00000, 0x80000, CRC(76296578) SHA1(04eca78abe60b283269464c0d12815579126ac08) ) - /* $00000-$20000 stays the same in all sound banks, */ - /* the second half of the bank is what gets switched */ - ROM_REGION( 0x100000, "oki", 0 ) /* Samples */ - ROM_COPY( "user1", 0x000000, 0x000000, 0x020000) - ROM_COPY( "user1", 0x000000, 0x020000, 0x020000) - ROM_COPY( "user1", 0x000000, 0x040000, 0x020000) - ROM_COPY( "user1", 0x020000, 0x060000, 0x020000) - ROM_COPY( "user1", 0x000000, 0x080000, 0x020000) - ROM_COPY( "user1", 0x040000, 0x0a0000, 0x020000) - ROM_COPY( "user1", 0x000000, 0x0c0000, 0x020000) - ROM_COPY( "user1", 0x060000, 0x0e0000, 0x020000) - ROM_REGION16_BE( 0x80, "eeprom", 0 ) ROM_LOAD( "eeprom-twinbrat.bin", 0x0000, 0x0080, CRC(9366263d) SHA1(ff5155498ed0b349ecc1ce98a39566b642201cf2) ) ROM_END @@ -345,33 +339,24 @@ ROM_START( twinbrata ) ROM_LOAD( "9.bin", 0x080000, 0x40000, CRC(13194d89) SHA1(95c35b6012f98a64630abb40fd55b24ff8a5e031) ) ROM_LOAD( "8.bin", 0x0c0000, 0x40000, CRC(79f14528) SHA1(9c07d9a9e59f69a525bbaec05d74eb8d21bb9563) ) - ROM_REGION( 0x080000, "user1", 0 ) /* Samples */ + ROM_REGION( 0x080000, "oki", 0 ) /* Samples, 0x00000 - 0x20000 fixed, 0x20000 - 0x40000 banked */ ROM_LOAD( "1.bin", 0x00000, 0x80000, CRC(76296578) SHA1(04eca78abe60b283269464c0d12815579126ac08) ) - /* $00000-$20000 stays the same in all sound banks, */ - /* the second half of the bank is what gets switched */ - ROM_REGION( 0x100000, "oki", 0 ) /* Samples */ - ROM_COPY( "user1", 0x000000, 0x000000, 0x020000) - ROM_COPY( "user1", 0x000000, 0x020000, 0x020000) - ROM_COPY( "user1", 0x000000, 0x040000, 0x020000) - ROM_COPY( "user1", 0x020000, 0x060000, 0x020000) - ROM_COPY( "user1", 0x000000, 0x080000, 0x020000) - ROM_COPY( "user1", 0x040000, 0x0a0000, 0x020000) - ROM_COPY( "user1", 0x000000, 0x0c0000, 0x020000) - ROM_COPY( "user1", 0x060000, 0x0e0000, 0x020000) - ROM_REGION16_BE( 0x80, "eeprom", 0 ) ROM_LOAD( "eeprom-twinbrat.bin", 0x0000, 0x0080, CRC(9366263d) SHA1(ff5155498ed0b349ecc1ce98a39566b642201cf2) ) ROM_END -DRIVER_INIT_MEMBER(stlforce_state,stlforce) +DRIVER_INIT_MEMBER(stlforce_state, stlforce) { m_sprxoffs = 0; } -DRIVER_INIT_MEMBER(stlforce_state,twinbrat) +DRIVER_INIT_MEMBER(stlforce_state, twinbrat) { m_sprxoffs = 9; + + m_okibank->configure_entries(0, 4, memregion("oki")->base(), 0x20000); + m_okibank->set_entry(0); } diff --git a/src/mame/drivers/stv.cpp b/src/mame/drivers/stv.cpp index e7e1513f1e9..e3cd9d86ffc 100644 --- a/src/mame/drivers/stv.cpp +++ b/src/mame/drivers/stv.cpp @@ -1804,8 +1804,8 @@ ROM_LOAD16_WORD_SWAP_BIOS( x, "saturn.bin", 0x000000, 0x080000, CRC(653ff2d8) SH ROM_LOAD16_WORD_SWAP_BIOS( 7, "epr-19854.ic8", 0x000000, 0x080000, CRC(e09d1f60) SHA1(b55cdcb45b2a5b0b35e352cf7625f0bd659084df) ) \ ROM_SYSTEM_BIOS( 8, "tw1", "EPR-17953A (Taiwan 95/04/25)" ) \ ROM_LOAD16_WORD_SWAP_BIOS( 8, "epr-17953a.ic8", 0x000000, 0x080000, CRC(a4c47570) SHA1(9efc73717ec8a13417e65c54344ded9fc25bf5ef) ) \ - ROM_SYSTEM_BIOS( 9, "tw2", "STVB1.11T (Taiwan 95/02/20)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 9, "stvb111t.ic8", 0x000000, 0x080000, CRC(02daf123) SHA1(23185beb1ce9c09b8719e57d1adb7b28c8141fd5) ) \ + ROM_SYSTEM_BIOS( 9, "tw2", "EPR-17742A (Taiwan 95/02/20)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 9, "epr-17742a.ic8", 0x000000, 0x080000, CRC(02daf123) SHA1(23185beb1ce9c09b8719e57d1adb7b28c8141fd5) ) \ ROM_SYSTEM_BIOS( 10, "debug","Debug (95/01/13)" ) \ ROM_LOAD16_WORD_SWAP_BIOS( 10, "stv110.bin", 0x000000, 0x080000, CRC(3dfeda92) SHA1(8eb33192a57df5f3a1dfb57263054867c6b2db6d) ) \ ROM_SYSTEM_BIOS( 11, "dev", "Development (bios 1.061)" ) \ diff --git a/src/mame/drivers/subsino.cpp b/src/mame/drivers/subsino.cpp index 86bdbfdc614..682981fd2b5 100644 --- a/src/mame/drivers/subsino.cpp +++ b/src/mame/drivers/subsino.cpp @@ -1054,7 +1054,7 @@ static ADDRESS_MAP_START( tisub_map, AS_PROGRAM, 8, subsino_state ) AM_RANGE( 0x15c00, 0x15dff ) AM_RAM_WRITE(subsino_reel3_ram_w) AM_SHARE("reel3_ram") ADDRESS_MAP_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, subsino_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, subsino_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/subsino2.cpp b/src/mame/drivers/subsino2.cpp index 72710024f91..02ea918099b 100644 --- a/src/mame/drivers/subsino2.cpp +++ b/src/mame/drivers/subsino2.cpp @@ -946,7 +946,7 @@ static ADDRESS_MAP_START( bishjan_map, AS_PROGRAM, 16, subsino2_state ) AM_RANGE( 0xc00008, 0xc00009 ) AM_READ_PORT("RESET") AM_WRITE(bishjan_outputs_w ) AM_SHARE("outputs16") ADDRESS_MAP_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, subsino2_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, subsino2_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/sun1.cpp b/src/mame/drivers/sun1.cpp index 48f89b79425..fed55a057a0 100644 --- a/src/mame/drivers/sun1.cpp +++ b/src/mame/drivers/sun1.cpp @@ -50,9 +50,9 @@ ****************************************************************************/ #include "emu.h" +#include "bus/rs232/rs232.h" #include "cpu/m68000/m68000.h" -#include "machine/z80dart.h" -#include "machine/terminal.h" +#include "machine/z80sio.h" #define TERMINAL_TAG "terminal" @@ -60,55 +60,31 @@ class sun1_state : public driver_device { public: sun1_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_terminal(*this, TERMINAL_TAG), - m_p_ram(*this, "p_ram") + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_iouart(*this, "iouart") + , m_p_ram(*this, "p_ram") { } - DECLARE_READ16_MEMBER(sun1_upd7201_r); - DECLARE_WRITE16_MEMBER(sun1_upd7201_w); - void kbd_put(u8 data); - protected: virtual void machine_reset() override; required_device m_maincpu; - required_device m_terminal; + required_device m_iouart; required_shared_ptr m_p_ram; - uint8_t m_term_data; }; - -// Just hack to show output since upd7201 is not implemented yet - -READ16_MEMBER( sun1_state::sun1_upd7201_r ) -{ - uint16_t ret; - if (offset == 0) - { - ret = m_term_data << 8; - m_term_data = 0; - } - else - ret = 0xfeff | (m_term_data ? 0x100 : 0); - - return ret; -} - -WRITE16_MEMBER( sun1_state::sun1_upd7201_w ) -{ - if (offset == 0) - m_terminal->write(space, 0, data >> 8); -} - static ADDRESS_MAP_START(sun1_mem, AS_PROGRAM, 16, sun1_state) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("p_ram") // 512 KB RAM / ROM at boot AM_RANGE(0x00200000, 0x00203fff) AM_ROM AM_REGION("user1",0) - AM_RANGE(0x00600000, 0x00600007) AM_READWRITE( sun1_upd7201_r, sun1_upd7201_w ) + AM_RANGE(0x00600000, 0x006000ff) AM_DEVREADWRITE8("iouart", upd7201_new_device, ba_cd_r, ba_cd_w, 0xff00) + AM_RANGE(0x00800000, 0x008000ff) AM_UNMAP // AM9513 timer at 5MHz + AM_RANGE(0x00a00000, 0x00bfffff) AM_UNMAP // page map + AM_RANGE(0x00c00000, 0x00dfffff) AM_UNMAP // segment map + AM_RANGE(0x00e00000, 0x00ffffff) AM_UNMAP // context register ADDRESS_MAP_END /* Input ports */ @@ -123,34 +99,46 @@ void sun1_state::machine_reset() memcpy((uint8_t*)m_p_ram.target(),user1,0x4000); m_maincpu->reset(); - m_term_data = 0; } -void sun1_state::kbd_put(u8 data) -{ - m_term_data = data; -} - static MACHINE_CONFIG_START( sun1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(sun1_mem) - /* video hardware */ - MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(sun1_state, kbd_put)) + // UART is actually clocked by AM9513 (channel 4 = port A, channel 5 = port B) + MCFG_UPD7201_ADD("iouart", 0, 9600*16, 9600*16, 9600*16, 9600*16) + MCFG_Z80SIO_OUT_TXDA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_txd)) + MCFG_Z80SIO_OUT_DTRA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_dtr)) + MCFG_Z80SIO_OUT_RTSA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_rts)) + MCFG_Z80SIO_OUT_TXDB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_txd)) + MCFG_Z80SIO_OUT_DTRB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_dtr)) + MCFG_Z80SIO_OUT_RTSB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_rts)) + + MCFG_RS232_PORT_ADD("rs232a", default_rs232_devices, "terminal") + MCFG_RS232_RXD_HANDLER(DEVWRITELINE("iouart", upd7201_new_device, rxa_w)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("iouart", upd7201_new_device, ctsa_w)) + MCFG_RS232_DCD_HANDLER(DEVWRITELINE("iouart", upd7201_new_device, dcda_w)) + + MCFG_RS232_PORT_ADD("rs232b", default_rs232_devices, nullptr) + MCFG_RS232_RXD_HANDLER(DEVWRITELINE("iouart", upd7201_new_device, rxb_w)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("iouart", upd7201_new_device, ctsb_w)) + MCFG_RS232_DCD_HANDLER(DEVWRITELINE("iouart", upd7201_new_device, dcdb_w)) MACHINE_CONFIG_END /* ROM definition */ ROM_START( sun1 ) ROM_REGION( 0x4000, "user1", ROMREGION_ERASEFF ) - ROM_LOAD16_BYTE( "v10.8.bin", 0x0001, 0x2000, CRC(3528a0f8) SHA1(be437dd93d1a44eccffa6f5e05935119482beab0)) - ROM_LOAD16_BYTE( "v10.0.bin", 0x0000, 0x2000, CRC(1ad4c52a) SHA1(4bc1a19e8f202378d5d7baa8b95319275c040a6d)) + ROM_DEFAULT_BIOS("1.0") - ROM_REGION( 0x4000, "diag", ROMREGION_ERASEFF ) - ROM_LOAD16_BYTE( "8mhzdiag.8.bin", 0x0001, 0x2000, CRC(808a549e) SHA1(d2aba014a5507c1538f2c1a73e1d2524f28034f4)) - ROM_LOAD16_BYTE( "8mhzdiag.0.bin", 0x0000, 0x2000, CRC(7a92d506) SHA1(5df3800f7083293fc01bb6a7e7538ad425bbebfb)) + ROM_SYSTEM_BIOS(0, "1.0", "Sun Monitor 1.0") + ROMX_LOAD( "v10.8.bin", 0x0001, 0x2000, CRC(3528a0f8) SHA1(be437dd93d1a44eccffa6f5e05935119482beab0), ROM_SKIP(1)|ROM_BIOS(1)) + ROMX_LOAD( "v10.0.bin", 0x0000, 0x2000, CRC(1ad4c52a) SHA1(4bc1a19e8f202378d5d7baa8b95319275c040a6d), ROM_SKIP(1)|ROM_BIOS(1)) + + ROM_SYSTEM_BIOS(1, "diag", "Interactive Tests") + ROMX_LOAD( "8mhzdiag.8.bin", 0x0001, 0x2000, CRC(808a549e) SHA1(d2aba014a5507c1538f2c1a73e1d2524f28034f4), ROM_SKIP(1)|ROM_BIOS(2)) + ROMX_LOAD( "8mhzdiag.0.bin", 0x0000, 0x2000, CRC(7a92d506) SHA1(5df3800f7083293fc01bb6a7e7538ad425bbebfb), ROM_SKIP(1)|ROM_BIOS(2)) ROM_REGION( 0x10000, "gfx", ROMREGION_ERASEFF ) ROM_LOAD( "gfxu605.g4.bin", 0x0000, 0x0200, CRC(274b7b3d) SHA1(40d8be2cfcbd03512a05925991bb5030d5d4b5e9)) diff --git a/src/mame/drivers/suna8.cpp b/src/mame/drivers/suna8.cpp index ca3165638b1..3652152451e 100644 --- a/src/mame/drivers/suna8.cpp +++ b/src/mame/drivers/suna8.cpp @@ -889,7 +889,7 @@ static ADDRESS_MAP_START( brickzn_map, AS_PROGRAM, 8, suna8_state ) AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, suna8_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, suna8_state ) AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") ADDRESS_MAP_END diff --git a/src/mame/drivers/supduck.cpp b/src/mame/drivers/supduck.cpp index 1a762169f40..a595d213563 100644 --- a/src/mame/drivers/supduck.cpp +++ b/src/mame/drivers/supduck.cpp @@ -268,7 +268,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, supduck_state ) AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, supduck_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, supduck_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -469,7 +469,7 @@ static MACHINE_CONFIG_START( supduck ) MCFG_OKIM6295_ADD("oki", XTAL_8MHz/8, PIN7_HIGH) // 1MHz - Verified on PCB, pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END diff --git a/src/mame/drivers/suprloco.cpp b/src/mame/drivers/suprloco.cpp index 4eb2794319b..77656e33ce1 100644 --- a/src/mame/drivers/suprloco.cpp +++ b/src/mame/drivers/suprloco.cpp @@ -60,7 +60,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, suprloco_state ) AM_RANGE(0xf800, 0xffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, suprloco_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, suprloco_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000) ADDRESS_MAP_END diff --git a/src/mame/drivers/symbolics.cpp b/src/mame/drivers/symbolics.cpp index 6a5ecadd603..91ccaa94adf 100644 --- a/src/mame/drivers/symbolics.cpp +++ b/src/mame/drivers/symbolics.cpp @@ -392,4 +392,4 @@ ROM_END ******************************************************************************/ // YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS -COMP( 1984, s3670, 0, 0, symbolics, symbolics, symbolics_state, symbolics, "Symbolics", "3670", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1984, s3670, 0, 0, symbolics, symbolics, symbolics_state, symbolics, "Symbolics", "3670", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/system1.cpp b/src/mame/drivers/system1.cpp index 74cfa64a318..2a71036302f 100644 --- a/src/mame/drivers/system1.cpp +++ b/src/mame/drivers/system1.cpp @@ -754,7 +754,7 @@ static ADDRESS_MAP_START( system1_map, AS_PROGRAM, 8, system1_state ) AM_RANGE(0xfc00, 0xffff) AM_WRITE(system1_sprite_collision_reset_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, system1_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, system1_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram") @@ -762,7 +762,7 @@ static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, system AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(system1_paletteram_w) AM_SHARE("palette") ADDRESS_MAP_END -static ADDRESS_MAP_START( banked_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, system1_state ) +static ADDRESS_MAP_START( banked_decrypted_opcodes_map, AS_OPCODES, 8, system1_state ) AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram") @@ -5462,7 +5462,7 @@ GAME( 1985, pitfall2a, pitfall2, sys1piox_315_5093, pitfall2, system1_state, b GAME( 1985, pitfall2u, pitfall2, sys1pio, pitfall2u, system1_state, bank00, ROT0, "Sega", "Pitfall II (not encrypted)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, seganinj, 0, sys1piox_315_5102, seganinj, system1_state, bank00, ROT0, "Sega", "Sega Ninja (315-5102)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, seganinju, seganinj, sys1pio, seganinj, system1_state, bank00, ROT0, "Sega", "Sega Ninja (not encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, seganinja, seganinj, sys1piox_315_5133, seganinj, system1_state, bank00, ROT0, "Sega", "Sega Ninja (315-5113)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // needs decrypting +GAME( 1985, seganinja, seganinj, sys1piox_315_5133, seganinj, system1_state, bank00, ROT0, "Sega", "Sega Ninja (315-5113)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, ninja, seganinj, sys1piox_315_5102, seganinj, system1_state, bank00, ROT0, "Sega", "Ninja (315-5102)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, nprinceso, seganinj, sys1piox_315_5098, seganinj, system1_state, bank00, ROT0, "Sega", "Ninja Princess (315-5098, 128k Ver.)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, nprincesb, seganinj, sys1piox_315_5051, seganinj, system1_state, bank00, ROT0, "bootleg?", "Ninja Princess (315-5051?, 128k Ver. bootleg?)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp index 7c934ceb53f..61320395e2d 100644 --- a/src/mame/drivers/system16.cpp +++ b/src/mame/drivers/system16.cpp @@ -652,7 +652,7 @@ static ADDRESS_MAP_START( bayrouteb1_map, AS_PROGRAM, 16, segas1x_bootleg_state AM_RANGE(0x902006, 0x902007) AM_WRITE(sound_command_irq_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, segas1x_bootleg_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, segas1x_bootleg_state ) AM_RANGE(0x000000, 0x0bffff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END @@ -1365,7 +1365,7 @@ static ADDRESS_MAP_START(sys18bl_sound_map, AS_PROGRAM, 8, segas1x_bootleg_state AM_RANGE(0x8000, 0x87ff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( sys18bl_oki_map, AS_0, 8, segas1x_bootleg_state ) +static ADDRESS_MAP_START( sys18bl_oki_map, 0, 8, segas1x_bootleg_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -2303,7 +2303,7 @@ static MACHINE_CONFIG_DERIVED( goldnaxeb2, goldnaxeb_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(goldnaxeb2_map) - MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_DECRYPTED_OPCODES) + MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES) MCFG_FRAGMENT_ADD(datsu_2x_ym2203_msm5205) MACHINE_CONFIG_END @@ -2321,7 +2321,7 @@ static MACHINE_CONFIG_DERIVED( bayrouteb2, goldnaxeb_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(bayrouteb2_map) - MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_DECRYPTED_OPCODES) + MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES) MCFG_FRAGMENT_ADD(datsu_ym2151_msm5205) @@ -2508,7 +2508,7 @@ static MACHINE_CONFIG_START( astormb2 ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", XTAL_8MHz/8, PIN7_HIGH) // 1MHz clock and pin verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, sys18bl_oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, sys18bl_oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/taito_b.cpp b/src/mame/drivers/taito_b.cpp index a90c13f3945..ee3cbf8ced3 100644 --- a/src/mame/drivers/taito_b.cpp +++ b/src/mame/drivers/taito_b.cpp @@ -686,7 +686,7 @@ static ADDRESS_MAP_START( realpunc_map, AS_PROGRAM, 16, taitob_state ) AM_RANGE(0x320002, 0x320003) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_comm_w, 0xff00) ADDRESS_MAP_END -static ADDRESS_MAP_START( realpunc_hd63484_map, AS_0, 16, taitob_state ) +static ADDRESS_MAP_START( realpunc_hd63484_map, 0, 16, taitob_state ) AM_RANGE(0x00000, 0x7ffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/tandy1t.cpp b/src/mame/drivers/tandy1t.cpp index 0cb7ebc127a..77fb2d00076 100644 --- a/src/mame/drivers/tandy1t.cpp +++ b/src/mame/drivers/tandy1t.cpp @@ -553,7 +553,7 @@ static ADDRESS_MAP_START(tandy1000_bank_map, AS_PROGRAM, 16, tandy1000_state ) AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION( "rom", 0x70000 ) ADDRESS_MAP_END -static ADDRESS_MAP_START(biosbank_map, AS_0, 16, tandy1000_state) +static ADDRESS_MAP_START(biosbank_map, 0, 16, tandy1000_state) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x80000, 0xfffff) AM_ROM AM_REGION("rom", 0) ADDRESS_MAP_END diff --git a/src/mame/drivers/tandy2k.cpp b/src/mame/drivers/tandy2k.cpp index 486be20b896..2e51022b2a3 100644 --- a/src/mame/drivers/tandy2k.cpp +++ b/src/mame/drivers/tandy2k.cpp @@ -343,7 +343,7 @@ static ADDRESS_MAP_START( tandy2k_hd_io, AS_IO, 16, tandy2k_state ) // AM_RANGE(0x0026e, 0x0027f) AM_DEVREADWRITE8(WD1010_TAG, wd1010_device, wd1010_r, wd1010_w, 0x00ff) ADDRESS_MAP_END -static ADDRESS_MAP_START( vpac_mem, AS_0, 8, tandy2k_state ) +static ADDRESS_MAP_START( vpac_mem, 0, 8, tandy2k_state ) AM_RANGE(0x0000, 0x3fff) AM_READ(videoram_r) ADDRESS_MAP_END @@ -783,7 +783,7 @@ static MACHINE_CONFIG_START( tandy2k ) MCFG_PALETTE_ADD_MONOCHROME("palette") MCFG_DEVICE_ADD(CRT9007_TAG, CRT9007, XTAL_16MHz*28/20/8) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vpac_mem) + MCFG_DEVICE_ADDRESS_MAP(0, vpac_mem) MCFG_CRT9007_CHARACTER_WIDTH(8) MCFG_CRT9007_INT_CALLBACK(DEVWRITELINE(I8259A_1_TAG, pic8259_device, ir1_w)) MCFG_CRT9007_VS_CALLBACK(DEVWRITELINE(CRT9021B_TAG, crt9021_device, vsync_w)) diff --git a/src/mame/drivers/targeth.cpp b/src/mame/drivers/targeth.cpp index 85b0289eeaf..ecbf747fa57 100644 --- a/src/mame/drivers/targeth.cpp +++ b/src/mame/drivers/targeth.cpp @@ -90,7 +90,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, targeth_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, targeth_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, targeth_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -205,7 +205,7 @@ static MACHINE_CONFIG_START( targeth ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/thoop2.cpp b/src/mame/drivers/thoop2.cpp index 2bafc649745..57b8795c23f 100644 --- a/src/mame/drivers/thoop2.cpp +++ b/src/mame/drivers/thoop2.cpp @@ -84,7 +84,7 @@ static ADDRESS_MAP_START( thoop2_map, AS_PROGRAM, 16, thoop2_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, thoop2_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, thoop2_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -228,7 +228,7 @@ static MACHINE_CONFIG_START( thoop2 ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp index 73dc9f65c45..9fae264d158 100644 --- a/src/mame/drivers/toaplan2.cpp +++ b/src/mame/drivers/toaplan2.cpp @@ -1525,12 +1525,12 @@ static ADDRESS_MAP_START( vfive_v25_mem, AS_PROGRAM, 8, toaplan2_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( fixeightbl_oki, AS_0, 8, toaplan2_state ) +static ADDRESS_MAP_START( fixeightbl_oki, 0, 8, toaplan2_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("bank1") ADDRESS_MAP_END -static ADDRESS_MAP_START( enmadaio_oki, AS_0, 8, toaplan2_state ) +static ADDRESS_MAP_START( enmadaio_oki, 0, 8, toaplan2_state ) AM_RANGE(0x00000, 0x3ffff) AM_ROMBANK("bank1") ADDRESS_MAP_END @@ -3801,7 +3801,7 @@ static MACHINE_CONFIG_START( fixeightbl ) MCFG_OKIM6295_ADD("oki", XTAL_14MHz/16, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, fixeightbl_oki) + MCFG_DEVICE_ADDRESS_MAP(0, fixeightbl_oki) MACHINE_CONFIG_END @@ -3989,7 +3989,7 @@ static MACHINE_CONFIG_START( enmadaio ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4, PIN7_LOW) // pin7 not confirmed - MCFG_DEVICE_ADDRESS_MAP(AS_0, enmadaio_oki) + MCFG_DEVICE_ADDRESS_MAP(0, enmadaio_oki) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END diff --git a/src/mame/drivers/toki.cpp b/src/mame/drivers/toki.cpp index a217d9b759a..6d9734a32e4 100644 --- a/src/mame/drivers/toki.cpp +++ b/src/mame/drivers/toki.cpp @@ -200,7 +200,7 @@ static ADDRESS_MAP_START( toki_audio_map, AS_PROGRAM, 8, toki_state ) AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") ADDRESS_MAP_END -static ADDRESS_MAP_START( toki_audio_opcodes_map, AS_DECRYPTED_OPCODES, 8, toki_state ) +static ADDRESS_MAP_START( toki_audio_opcodes_map, AS_OPCODES, 8, toki_state ) AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") ADDRESS_MAP_END @@ -223,7 +223,7 @@ static ADDRESS_MAP_START( jujuba_audio_map, AS_PROGRAM, 8, toki_state ) AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") ADDRESS_MAP_END -static ADDRESS_MAP_START( jujuba_audio_opcodes_map, AS_DECRYPTED_OPCODES, 8, toki_state ) +static ADDRESS_MAP_START( jujuba_audio_opcodes_map, AS_OPCODES, 8, toki_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("audiocpu", 0) AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") ADDRESS_MAP_END diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp index 4edd4b221a9..d50841e01a3 100644 --- a/src/mame/drivers/trackfld.cpp +++ b/src/mame/drivers/trackfld.cpp @@ -432,7 +432,7 @@ static ADDRESS_MAP_START( hyprolyb_sound_map, AS_PROGRAM, 8, trackfld_state ) AM_RANGE(0xe004, 0xe004) AM_MIRROR(0x1ff8) AM_DEVWRITE("hyprolyb_adpcm", hyprolyb_adpcm_device, write) ADDRESS_MAP_END -static ADDRESS_MAP_START( vlm_map, AS_0, 8, trackfld_state ) +static ADDRESS_MAP_START( vlm_map, 0, 8, trackfld_state ) ADDRESS_MAP_GLOBAL_MASK(0x1fff) AM_RANGE(0x0000, 0x1fff) AM_ROM ADDRESS_MAP_END @@ -946,7 +946,7 @@ static MACHINE_CONFIG_START( trackfld ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MCFG_SOUND_ADD("vlm", VLM5030, VLM_CLOCK) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MACHINE_CONFIG_END @@ -1005,7 +1005,7 @@ static MACHINE_CONFIG_START( yieartf ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MCFG_SOUND_ADD("vlm", VLM5030, VLM_CLOCK) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/triforce.cpp b/src/mame/drivers/triforce.cpp index 503ed3c2310..ad7589d82e6 100644 --- a/src/mame/drivers/triforce.cpp +++ b/src/mame/drivers/triforce.cpp @@ -67,7 +67,7 @@ Games on this system include.... | | 2004 | Virtua Striker 4 (Japan) (Rev C) | Sega | GDROM | GDT-0013C | 317-0391-JPN | | | | 2004 | Virtua Striker 4 (Japan) (Rev D) | Sega | GDROM | GDT-0013D | 317-0391-JPN | | |*| 2004 | Virtua Striker 4 (Japan) (Rev E) | Sega | GDROM | GDT-0013E | 317-0391-JPN | | -| | 2004 | Virtua Striker 4 (Export) | Sega | GDROM | GDT-0014 | | 253-5508-0392E| +|*| 2004 | Virtua Striker 4 (Export) | Sega | GDROM | GDT-0014 | 317-0392-EXP | 253-5508-0392E| |*| 2004 | Virtua Striker 4 (Export) | Sega | GDROM | GDT-0015 | 317-0393-EXP | | | | 2004 | Virtua Striker 4 (Export) | Sega | CF | MDA-G0016 | 317-0393-EXP | | | | 2004 | The Key Of Avalon 2: Eutaxy Commandment (server) | Sega / Hitmaker | GDROM | GDT-0016 | 317-0403-JPN | 253-5508-0403J| @@ -85,7 +85,7 @@ Games on this system include.... |*| 2005 | The Key Of Avalon 2.5: War of the Key (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0019B | 317-0403-JPN | 253-5508-0403J| | | 2006 | Virtua Striker 4 Ver.2006 (Japan) | Sega | GDROM | GDT-0020 | 317-0432-JPN | 253-5508-0432J| | | 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev A) | Sega | GDROM | GDT-0020A | 317-0432-JPN | 253-5508-0432J| -| | 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev B) | Sega | GDROM | GDT-0020B | 317-0432-JPN | 253-5508-0432J| +|*| 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev B) | Sega | GDROM | GDT-0020B | 317-0432-JPN | 253-5508-0432J| | | 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev C) | Sega | GDROM | GDT-0020C | 317-0432-JPN | 253-5508-0432J| |*| 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev D) | Sega | GDROM | GDT-0020D | 317-0432-JPN | 253-5508-0432J| |*| 2006 | Virtua Striker 4 Ver.2006 (Export) | Sega | GDROM | GDT-0021 | 317-0433-EXP | 253-5508-0433E| @@ -863,6 +863,16 @@ ROM_START( vs4j ) ROM_LOAD("317-0391-jpn.data", 0x00, 0x50, CRC(0f2dbb73) SHA1(7b9d66abe85303b3e26b442a3a63feca1a0edbdb) ) ROM_END +ROM_START( vs4e ) + TRIFORCE_BIOS + + DISK_REGION( "gdrom" ) + DISK_IMAGE_READONLY( "gdt-0014", 0, SHA1(e7f7304b1c9075f37b8fed4e8d3f22f7fc0ae5ab) ) + + ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) + ROM_LOAD("317-0392-exp.pic", 0x00, 0x4000, CRC(c8931261) SHA1(063faea92a987a5b3dc96455494cf5fc13052428) ) +ROM_END + /* Title VIRTUA STRIKER 4 Media ID 93B2 @@ -940,6 +950,16 @@ ROM_START( avalnc25 ) ROM_LOAD("317-0403-jpn.data", 0x00, 0x50, CRC(c5071ada) SHA1(70018180b917beec1b2c272f9125fa43fd1a7b00) ) ROM_END +ROM_START( vs42006b ) + TRIFORCE_BIOS + + DISK_REGION( "gdrom" ) + DISK_IMAGE_READONLY( "gdt-0020b", 0, SHA1(ac875c5d8da72e75186790acf839e775050d3591) ) + + ROM_REGION( 0x50, "pic", ROMREGION_ERASE) + ROM_LOAD("317-0432-jpn.data", 0x00, 0x50, CRC(e3d13191) SHA1(4255c09aad06eb38c16bdec881897404a3a68b37) ) +ROM_END + ROM_START( vs42006 ) TRIFORCE_BIOS @@ -1110,7 +1130,7 @@ ROM_END // 0013C GAME( 2005, vs4jc, vs4j, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev C) (GDT-0013C)", MACHINE_IS_SKELETON ) // 0013D GAME( 2005, vs4jd, vs4j, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev D) (GDT-0013D)", MACHINE_IS_SKELETON ) /* 0013E */ GAME( 2005, vs4j, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev E) (GDT-0013E)", MACHINE_IS_SKELETON ) -// 0014 +/* 0014 */ GAME( 2004, vs4e, vs4, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 (Export) (GDT-0014)", MACHINE_IS_SKELETON ) /* 0015 */ GAME( 2004, vs4, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 (Export) (GDT-0015)", MACHINE_IS_SKELETON ) // 0016 GAME( 2004, avalons20,triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (server) (GDT-0016)", MACHINE_IS_SKELETON ) // 0017 GAME( 2004, avalon20o,avalon20, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (GDT-0017)", MACHINE_IS_SKELETON ) @@ -1124,7 +1144,7 @@ ROM_END /* 0019B */ GAME( 2005, avalnc25, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (Rev B) (GDT-0019B)", MACHINE_IS_SKELETON ) // 0020 GAME( 2006, vs42006o, vs42006, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (GDT-0020)", MACHINE_IS_SKELETON ) // 0020A GAME( 2006, vs42006a, vs42006, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev A) (GDT-0020A)", MACHINE_IS_SKELETON ) -// 0020B GAME( 2006, vs42006b, vs42006, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev B) (GDT-0020B)", MACHINE_IS_SKELETON ) +/* 0020B */ GAME( 2006, vs42006b, vs42006, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev B) (GDT-0020B)", MACHINE_IS_SKELETON ) // 0020C GAME( 2006, vs42006c, vs42006, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev C) (GDT-0020C)", MACHINE_IS_SKELETON ) /* 0020D */ GAME( 2006, vs42006, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev D) (GDT-0020D)", MACHINE_IS_SKELETON ) /* 0021 */ GAME( 2006, vs42k6ex, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Export) (GDT-0021)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/turbo.cpp b/src/mame/drivers/turbo.cpp index ff9236da7c5..d540009c9b2 100644 --- a/src/mame/drivers/turbo.cpp +++ b/src/mame/drivers/turbo.cpp @@ -563,7 +563,7 @@ static ADDRESS_MAP_START( buckrog_map, AS_PROGRAM, 8, turbo_state ) AM_RANGE(0xf800, 0xffff) AM_RAM // SCRATCH ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, turbo_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, turbo_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END @@ -974,7 +974,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( buckrogu, buckrog ) MCFG_CPU_MODIFY("maincpu") - MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_DECRYPTED_OPCODES) + MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES) MACHINE_CONFIG_END diff --git a/src/mame/drivers/turrett.cpp b/src/mame/drivers/turrett.cpp index f085dcdd5c2..661e4754ba9 100644 --- a/src/mame/drivers/turrett.cpp +++ b/src/mame/drivers/turrett.cpp @@ -101,7 +101,7 @@ static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 32, turrett_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( turrett_sound_map, AS_0, 16, turrett_state ) +static ADDRESS_MAP_START( turrett_sound_map, 0, 16, turrett_state ) AM_RANGE(0x0000000, 0x7ffffff) AM_RAM AM_SHARE("bank_a") AM_RANGE(0x8000000, 0xfffffff) AM_RAM AM_SHARE("bank_b") ADDRESS_MAP_END @@ -376,7 +376,7 @@ static MACHINE_CONFIG_START( turrett ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_DEVICE_ADD("ttsound", TURRETT, R3041_CLOCK) // ? - MCFG_DEVICE_ADDRESS_MAP(AS_0, turrett_sound_map) + MCFG_DEVICE_ADDRESS_MAP(0, turrett_sound_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/twins.cpp b/src/mame/drivers/twins.cpp index a5be8a0b686..2f8dc45249f 100644 --- a/src/mame/drivers/twins.cpp +++ b/src/mame/drivers/twins.cpp @@ -422,7 +422,7 @@ static ADDRESS_MAP_START( twinsa_io, AS_IO, 16, twins_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, twins_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, twins_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/vegas.cpp b/src/mame/drivers/vegas.cpp index c97c701d7ae..753b764f90e 100644 --- a/src/mame/drivers/vegas.cpp +++ b/src/mame/drivers/vegas.cpp @@ -1682,6 +1682,20 @@ ROM_START( warfab ) ROM_LOAD16_BYTE( "warsnd.106", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) ) ROM_END +ROM_START( warfac ) + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) // test: EPROM 1.91 Apr 13 1999 + ROM_LOAD( "war__upgrade__ver_1.91.u27", 0x000000, 0x80000, CRC(4d8fe0f8) SHA1(b809d29760ff229200509ba6751d8255faca7082) ) + + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) + + // required HDD image version is guess + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 1.3 4/20/1999 Game 4/20/1999 */ + DISK_IMAGE( "warfa", 0, SHA1(87f8a8878cd6be716dbd6c68fb1bc7f564ede484) ) + + ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */ + ROM_LOAD16_BYTE( "warsnd.106", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) ) +ROM_END + ROM_START( tenthdeg ) ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) ROM_LOAD( "tenthdeg.bio", 0x000000, 0x80000, CRC(1cd2191b) SHA1(a40c48f3d6a9e2760cec809a79a35abe762da9ce) ) @@ -1936,6 +1950,7 @@ GAME( 1999, gauntdl24, gauntdl, gauntdl, gauntdl, vegas_state, gauntdl, RO GAME( 1999, warfa, 0, warfa, warfa, vegas_state, warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.9 Mar 25 1999, GUTS 1.3 Apr 20 1999, GAME Apr 20 1999)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1999, warfaa, warfa, warfa, warfa, vegas_state, warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.6 Jan 14 1999, GUTS 1.1 Mar 16 1999, GAME Mar 16 1999)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1999, warfab, warfa, warfa, warfa, vegas_state, warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.3 Apr 7 1999, GUTS 1.3 Apr 7 1999, GAME Apr 7 1999)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // version numbers comes from test mode, can be unreliable +GAME( 1999, warfac, warfa, warfa, warfa, vegas_state, warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.91 Apr 13 1999, GUTS 1.3 Apr 7 1999, GAME Apr 7 1999)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* Durango + DSIO + Voodoo 2 */ diff --git a/src/mame/drivers/vgmplay.cpp b/src/mame/drivers/vgmplay.cpp index ae2bf5ae34e..d035189528b 100644 --- a/src/mame/drivers/vgmplay.cpp +++ b/src/mame/drivers/vgmplay.cpp @@ -34,7 +34,7 @@ #include -#define AS_IO16 AS_1 +#define AS_IO16 1 #define MCFG_CPU_IO16_MAP MCFG_CPU_DATA_MAP class vgmplay_device : public cpu_device @@ -84,7 +84,7 @@ public: virtual void execute_run() override; virtual void execute_set_input(int inputnum, int state) override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; virtual void state_import(const device_state_entry &entry) override; virtual void state_export(const device_state_entry &entry) override; @@ -559,14 +559,13 @@ void vgmplay_device::execute_set_input(int inputnum, int state) { } -const address_space_config *vgmplay_device::memory_space_config(address_spacenum spacenum) const +std::vector> vgmplay_device::memory_space_config() const { - switch(spacenum) { - case AS_PROGRAM: return &m_file_config; - case AS_IO: return &m_io_config; - case AS_IO16: return &m_io16_config; - default: return nullptr; - } + return std::vector> { + std::make_pair(AS_PROGRAM, &m_file_config), + std::make_pair(AS_IO, &m_io_config), + std::make_pair(AS_IO16, &m_io16_config) + }; } void vgmplay_device::state_import(const device_state_entry &entry) @@ -1292,27 +1291,27 @@ static ADDRESS_MAP_START( soundchips_map, AS_IO, 8, vgmplay_state ) AM_RANGE(vgmplay_device::A_YMZ280B, vgmplay_device::A_YMZ280B+0x1) AM_DEVWRITE ("ymz280b", ymz280b_device, write) ADDRESS_MAP_END -static ADDRESS_MAP_START( segapcm_map, AS_0, 8, vgmplay_state ) +static ADDRESS_MAP_START( segapcm_map, 0, 8, vgmplay_state ) AM_RANGE(0, 0x1fffff) AM_DEVREAD("vgmplay", vgmplay_device, segapcm_rom_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( multipcma_map, AS_0, 8, vgmplay_state ) +static ADDRESS_MAP_START( multipcma_map, 0, 8, vgmplay_state ) AM_RANGE(0, 0x3fffff) AM_DEVREAD("vgmplay", vgmplay_device, multipcma_rom_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( multipcmb_map, AS_0, 8, vgmplay_state ) +static ADDRESS_MAP_START( multipcmb_map, 0, 8, vgmplay_state ) AM_RANGE(0, 0x3fffff) AM_DEVREAD("vgmplay", vgmplay_device, multipcmb_rom_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( k053260_map, AS_0, 8, vgmplay_state ) +static ADDRESS_MAP_START( k053260_map, 0, 8, vgmplay_state ) AM_RANGE(0, 0x1fffff) AM_DEVREAD("vgmplay", vgmplay_device, k053260_rom_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( okim6295_map, AS_0, 8, vgmplay_state ) +static ADDRESS_MAP_START( okim6295_map, 0, 8, vgmplay_state ) AM_RANGE(0, 0x3ffff) AM_DEVREAD("vgmplay", vgmplay_device, okim6295_rom_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( c352_map, AS_0, 8, vgmplay_state ) +static ADDRESS_MAP_START( c352_map, 0, 8, vgmplay_state ) AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, c352_rom_r) ADDRESS_MAP_END @@ -1356,17 +1355,17 @@ static MACHINE_CONFIG_START( vgmplay ) MCFG_SOUND_ADD("segapcm", SEGAPCM, 4000000) MCFG_SEGAPCM_BANK(BANK_512) // Should be configurable for yboard... - MCFG_DEVICE_ADDRESS_MAP(AS_0, segapcm_map) + MCFG_DEVICE_ADDRESS_MAP(0, segapcm_map) MCFG_SOUND_ROUTE(0, "lspeaker", 1) MCFG_SOUND_ROUTE(1, "rspeaker", 1) MCFG_SOUND_ADD("multipcma", MULTIPCM, 8000000) - MCFG_DEVICE_ADDRESS_MAP(AS_0, multipcma_map) + MCFG_DEVICE_ADDRESS_MAP(0, multipcma_map) MCFG_SOUND_ROUTE(0, "lspeaker", 1) MCFG_SOUND_ROUTE(1, "rspeaker", 1) MCFG_SOUND_ADD("multipcmb", MULTIPCM, 8000000) - MCFG_DEVICE_ADDRESS_MAP(AS_0, multipcmb_map) + MCFG_DEVICE_ADDRESS_MAP(0, multipcmb_map) MCFG_SOUND_ROUTE(0, "lspeaker", 1) MCFG_SOUND_ROUTE(1, "rspeaker", 1) @@ -1418,7 +1417,7 @@ static MACHINE_CONFIG_START( vgmplay ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1) MCFG_K053260_ADD("k053260", 3579545) - MCFG_DEVICE_ADDRESS_MAP(AS_0, k053260_map) + MCFG_DEVICE_ADDRESS_MAP(0, k053260_map) MCFG_SOUND_ROUTE(0, "lspeaker", 1) MCFG_SOUND_ROUTE(1, "rspeaker", 1) @@ -1431,12 +1430,12 @@ static MACHINE_CONFIG_START( vgmplay ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) MCFG_C352_ADD("c352", 1000000, 288) - MCFG_DEVICE_ADDRESS_MAP(AS_0, c352_map) + MCFG_DEVICE_ADDRESS_MAP(0, c352_map) MCFG_SOUND_ROUTE(0, "lspeaker", 1) MCFG_SOUND_ROUTE(1, "rspeaker", 1) MCFG_OKIM6295_ADD("okim6295", 1000000, PIN7_HIGH) - MCFG_DEVICE_ADDRESS_MAP(AS_0, okim6295_map) + MCFG_DEVICE_ADDRESS_MAP(0, okim6295_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) diff --git a/src/mame/drivers/vic10.cpp b/src/mame/drivers/vic10.cpp index a51946e10a7..f7ca50279dd 100644 --- a/src/mame/drivers/vic10.cpp +++ b/src/mame/drivers/vic10.cpp @@ -250,7 +250,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( vic_videoram_map ) //------------------------------------------------- -static ADDRESS_MAP_START( vic_videoram_map, AS_0, 8, vic10_state ) +static ADDRESS_MAP_START( vic_videoram_map, 0, 8, vic10_state ) AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r) ADDRESS_MAP_END @@ -259,7 +259,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( vic_colorram_map ) //------------------------------------------------- -static ADDRESS_MAP_START( vic_colorram_map, AS_1, 8, vic10_state ) +static ADDRESS_MAP_START( vic_colorram_map, 1, 8, vic10_state ) AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r) ADDRESS_MAP_END @@ -702,8 +702,8 @@ static MACHINE_CONFIG_START( vic10 ) MCFG_MOS6566_CPU(M6510_TAG) MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(vic10_state, vic_irq_w)) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map) - MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map) + MCFG_DEVICE_ADDRESS_MAP(0, vic_videoram_map) + MCFG_DEVICE_ADDRESS_MAP(1, vic_colorram_map) MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) MCFG_SCREEN_REFRESH_RATE(VIC6566_VRETRACERATE) MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES) diff --git a/src/mame/drivers/vic20.cpp b/src/mame/drivers/vic20.cpp index 024015cdf9e..a1c2d06ead2 100644 --- a/src/mame/drivers/vic20.cpp +++ b/src/mame/drivers/vic20.cpp @@ -362,7 +362,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( vic_videoram_map ) //------------------------------------------------- -static ADDRESS_MAP_START( vic_videoram_map, AS_0, 8, vic20_state ) +static ADDRESS_MAP_START( vic_videoram_map, 0, 8, vic20_state ) AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r) ADDRESS_MAP_END @@ -371,7 +371,7 @@ ADDRESS_MAP_END // ADDRESS_MAP( vic_colorram_map ) //------------------------------------------------- -static ADDRESS_MAP_START( vic_colorram_map, AS_1, 8, vic20_state ) +static ADDRESS_MAP_START( vic_colorram_map, 1, 8, vic20_state ) AM_RANGE(0x000, 0x3ff) AM_RAM AM_SHARE("color_ram") ADDRESS_MAP_END diff --git a/src/mame/drivers/victory.cpp b/src/mame/drivers/victory.cpp index 8480d91c62f..53c356e44c4 100644 --- a/src/mame/drivers/victory.cpp +++ b/src/mame/drivers/victory.cpp @@ -101,7 +101,7 @@ #include "audio/exidy.h" #include "includes/victory.h" #include "machine/nvram.h" - +#include "machine/z80pio.h" /************************************* @@ -144,10 +144,8 @@ static ADDRESS_MAP_START( main_io_map, AS_IO, 8, victory_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_MIRROR(0x03) AM_READ_PORT("SW2") AM_RANGE(0x04, 0x04) AM_MIRROR(0x03) AM_READ_PORT("SW1") - AM_RANGE(0x08, 0x08) AM_READ_PORT("DIAL") - AM_RANGE(0x0a, 0x0a) AM_READ_PORT("COIN") - AM_RANGE(0x0c, 0x0c) AM_READ_PORT("BUTTONS") - AM_RANGE(0x0e, 0x0e) AM_READ_PORT("UNUSED") + AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("pio1", z80pio_device, read_alt, write_alt) + AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio2", z80pio_device, read_alt, write_alt) AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_WRITE(lamp_control_w) AM_RANGE(0x14, 0xff) AM_NOP ADDRESS_MAP_END @@ -220,6 +218,15 @@ static MACHINE_CONFIG_START( victory ) MCFG_NVRAM_ADD_0FILL("nvram") + // PIO interrupts are disconnected + MCFG_DEVICE_ADD("pio1", Z80PIO, VICTORY_MAIN_CPU_CLOCK) // at K8 + MCFG_Z80PIO_IN_PA_CB(IOPORT("DIAL")) + MCFG_Z80PIO_IN_PB_CB(IOPORT("COIN")) + + MCFG_DEVICE_ADD("pio2", Z80PIO, VICTORY_MAIN_CPU_CLOCK) // at L8 + MCFG_Z80PIO_IN_PA_CB(IOPORT("BUTTONS")) + MCFG_Z80PIO_IN_PB_CB(IOPORT("UNUSED")) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_ALWAYS_UPDATE) diff --git a/src/mame/drivers/vixen.cpp b/src/mame/drivers/vixen.cpp index 19d7037288f..43efdc422ec 100644 --- a/src/mame/drivers/vixen.cpp +++ b/src/mame/drivers/vixen.cpp @@ -267,7 +267,7 @@ static ADDRESS_MAP_START( vixen_mem, AS_PROGRAM, 8, vixen_state ) ADDRESS_MAP_END // when M1 is active: read opcodes -static ADDRESS_MAP_START( bios_mem, AS_DECRYPTED_OPCODES, 8, vixen_state ) +static ADDRESS_MAP_START( bios_mem, AS_OPCODES, 8, vixen_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0xefff) AM_READ(opram_r) AM_RANGE(0xf000, 0xffff) AM_READ(oprom_r) diff --git a/src/mame/drivers/vt240.cpp b/src/mame/drivers/vt240.cpp index 0ecce7b128f..d824d23102b 100644 --- a/src/mame/drivers/vt240.cpp +++ b/src/mame/drivers/vt240.cpp @@ -596,7 +596,7 @@ static ADDRESS_MAP_START(vt240_char_io, AS_IO, 8, vt240_state) AM_RANGE(0xf0, 0xf0) AM_WRITE(lbscrl_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( upd7220_map, AS_0, 16, vt240_state) +static ADDRESS_MAP_START( upd7220_map, 0, 16, vt240_state) AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(vram_r, vram_w) AM_SHARE("vram") ADDRESS_MAP_END @@ -666,7 +666,7 @@ static MACHINE_CONFIG_START( vt240 ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", vt240) MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL_4MHz / 4) - MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map) + MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(vt240_state, hgdc_draw) MCFG_UPD7220_VSYNC_CALLBACK(INPUTLINE("charcpu", I8085_RST75_LINE)) MCFG_UPD7220_BLANK_CALLBACK(INPUTLINE("charcpu", I8085_RST55_LINE)) diff --git a/src/mame/drivers/wildpkr.cpp b/src/mame/drivers/wildpkr.cpp index 51ca566c038..7313d113fce 100644 --- a/src/mame/drivers/wildpkr.cpp +++ b/src/mame/drivers/wildpkr.cpp @@ -338,7 +338,7 @@ static ADDRESS_MAP_START( tabpkr_map, AS_PROGRAM, 16, wildpkr_state ) AM_RANGE(0x70000a, 0x70000b) AM_WRITENOP // only writes 0 at POST ADDRESS_MAP_END -static ADDRESS_MAP_START( hd63484_map, AS_0, 16, wildpkr_state ) +static ADDRESS_MAP_START( hd63484_map, 0, 16, wildpkr_state ) AM_RANGE(0x00000, 0x3ffff) AM_RAM ADDRESS_MAP_END @@ -430,7 +430,7 @@ void wildpkr_state::machine_start() } -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, wildpkr_state ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, wildpkr_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/wiz.cpp b/src/mame/drivers/wiz.cpp index 3bfe462151d..9cb19c8cab0 100644 --- a/src/mame/drivers/wiz.cpp +++ b/src/mame/drivers/wiz.cpp @@ -333,7 +333,7 @@ static ADDRESS_MAP_START( kungfut_main_map, AS_PROGRAM, 8, wiz_state ) AM_RANGE(0xf818, 0xf818) AM_WRITE(wiz_bgcolor_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, wiz_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, wiz_state ) AM_RANGE(0x0000, 0xbfff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END @@ -864,7 +864,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( scion, stinger ) MCFG_CPU_MODIFY("maincpu") - MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_DECRYPTED_OPCODES) + MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES) /* video hardware */ MCFG_SCREEN_MODIFY("screen") diff --git a/src/mame/drivers/wrally.cpp b/src/mame/drivers/wrally.cpp index 93691026d7b..a7796a7362b 100644 --- a/src/mame/drivers/wrally.cpp +++ b/src/mame/drivers/wrally.cpp @@ -156,7 +156,7 @@ static ADDRESS_MAP_START( dallas_ram, AS_IO, 8, wrally_state ) AM_RANGE(0x0000, 0xffff) AM_READWRITE(dallas_share_r, dallas_share_w) AM_MASK(0x3fff) /* Shared RAM with the main CPU */ ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, wrally_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, wrally_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -284,7 +284,7 @@ static MACHINE_CONFIG_START( wrally ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/yiear.cpp b/src/mame/drivers/yiear.cpp index bdd7f3053b0..b6c36d83338 100644 --- a/src/mame/drivers/yiear.cpp +++ b/src/mame/drivers/yiear.cpp @@ -160,7 +160,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, yiear_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( vlm_map, AS_0, 8, yiear_state ) +static ADDRESS_MAP_START( vlm_map, 0, 8, yiear_state ) ADDRESS_MAP_GLOBAL_MASK(0x1fff) AM_RANGE(0x0000, 0x1fff) AM_ROM ADDRESS_MAP_END @@ -310,7 +310,7 @@ static MACHINE_CONFIG_START( yiear ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(AS_0, vlm_map) + MCFG_DEVICE_ADDRESS_MAP(0, vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/yunsun16.cpp b/src/mame/drivers/yunsun16.cpp index cd605dcf3dd..35d09e67ab0 100644 --- a/src/mame/drivers/yunsun16.cpp +++ b/src/mame/drivers/yunsun16.cpp @@ -177,7 +177,7 @@ static ADDRESS_MAP_START( sound_port_map, AS_IO, 8, yunsun16_state ) AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_device, read, write) // M6295 ADDRESS_MAP_END -static ADDRESS_MAP_START( oki_map, AS_0, 8, yunsun16_state ) +static ADDRESS_MAP_START( oki_map, 0, 8, yunsun16_state ) AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END @@ -655,7 +655,7 @@ static MACHINE_CONFIG_START( shocking ) MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MACHINE_CONFIG_END diff --git a/src/mame/drivers/zaxxon.cpp b/src/mame/drivers/zaxxon.cpp index 6b9b125269a..37344f30aee 100644 --- a/src/mame/drivers/zaxxon.cpp +++ b/src/mame/drivers/zaxxon.cpp @@ -442,7 +442,7 @@ static ADDRESS_MAP_START( zaxxon_map, AS_PROGRAM, 8, zaxxon_state ) AM_RANGE(0xe0fb, 0xe0fb) AM_MIRROR(0x1f00) AM_WRITE(zaxxon_bg_enable_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, zaxxon_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 8, zaxxon_state ) AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END diff --git a/src/mame/drivers/zx.cpp b/src/mame/drivers/zx.cpp index 8d8063b374c..bbebb00fdde 100644 --- a/src/mame/drivers/zx.cpp +++ b/src/mame/drivers/zx.cpp @@ -60,7 +60,7 @@ static ADDRESS_MAP_START( zx81_map, AS_PROGRAM, 8, zx_state ) AM_RANGE(0x4000, 0xffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( ula_map, AS_DECRYPTED_OPCODES, 8, zx_state ) +static ADDRESS_MAP_START( ula_map, AS_OPCODES, 8, zx_state ) AM_RANGE(0x0000, 0x7fff) AM_READ(ula_low_r) AM_RANGE(0x8000, 0xffff) AM_READ(ula_high_r) ADDRESS_MAP_END diff --git a/src/mame/etc/template_cpu.h b/src/mame/etc/template_cpu.h index 97467026087..300d18b0464 100644 --- a/src/mame/etc/template_cpu.h +++ b/src/mame/etc/template_cpu.h @@ -39,7 +39,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_DATA) ? &m_data_config : nullptr; } + virtual const address_space_config *memory_space_config(int spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_DATA) ? &m_data_config : nullptr; } // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/mame/includes/decocass.h b/src/mame/includes/decocass.h index 27427b3c30d..eb5a3e75420 100644 --- a/src/mame/includes/decocass.h +++ b/src/mame/includes/decocass.h @@ -41,7 +41,6 @@ public: m_objectram(*this, "objectram"), m_paletteram(*this, "paletteram") { - m_type1_map = nullptr; } /* devices */ @@ -113,28 +112,6 @@ public: read8_delegate m_dongle_r; write8_delegate m_dongle_w; - /* dongle type #1 */ - uint32_t m_type1_inmap; - uint32_t m_type1_outmap; - - /* dongle type #2: status of the latches */ - int32_t m_type2_d2_latch; /* latched 8041-STATUS D2 value */ - int32_t m_type2_xx_latch; /* latched value (D7-4 == 0xc0) ? 1 : 0 */ - int32_t m_type2_promaddr; /* latched PROM address A0-A7 */ - - /* dongle type #3: status and patches */ - int32_t m_type3_ctrs; /* 12 bit counter stage */ - int32_t m_type3_d0_latch; /* latched 8041-D0 value */ - int32_t m_type3_pal_19; /* latched 1 for PAL input pin-19 */ - int32_t m_type3_swap; - - /* dongle type #4: status */ - int32_t m_type4_ctrs; /* latched PROM address (E5x0 LSB, E5x1 MSB) */ - int32_t m_type4_latch; /* latched enable PROM (1100xxxx written to E5x1) */ - - /* dongle type #5: status */ - int32_t m_type5_latch; /* latched enable PROM (1100xxxx written to E5x1) */ - /* DS Telejan */ uint8_t m_mux_data; @@ -150,48 +127,11 @@ public: virtual void machine_reset() override; virtual void video_start() override; DECLARE_PALETTE_INIT(decocass); - DECLARE_MACHINE_RESET(ctsttape); - DECLARE_MACHINE_RESET(cprogolfj); - DECLARE_MACHINE_RESET(cdsteljn); - DECLARE_MACHINE_RESET(cfishing); - DECLARE_MACHINE_RESET(chwy); - DECLARE_MACHINE_RESET(cterrani); - DECLARE_MACHINE_RESET(castfant); - DECLARE_MACHINE_RESET(csuperas); - DECLARE_MACHINE_RESET(clocknch); - DECLARE_MACHINE_RESET(cprogolf); - DECLARE_MACHINE_RESET(cluckypo); - DECLARE_MACHINE_RESET(ctisland); - DECLARE_MACHINE_RESET(ctisland3); - DECLARE_MACHINE_RESET(cexplore); - DECLARE_MACHINE_RESET(cdiscon1); - DECLARE_MACHINE_RESET(ctornado); - DECLARE_MACHINE_RESET(cmissnx); - DECLARE_MACHINE_RESET(cptennis); - DECLARE_MACHINE_RESET(cbtime); - DECLARE_MACHINE_RESET(cburnrub); - DECLARE_MACHINE_RESET(cgraplop); - DECLARE_MACHINE_RESET(cgraplop2); - DECLARE_MACHINE_RESET(clapapa); - DECLARE_MACHINE_RESET(cskater); - DECLARE_MACHINE_RESET(cprobowl); - DECLARE_MACHINE_RESET(cnightst); - DECLARE_MACHINE_RESET(cpsoccer); - DECLARE_MACHINE_RESET(csdtenis); - DECLARE_MACHINE_RESET(czeroize); - DECLARE_MACHINE_RESET(cppicf); - DECLARE_MACHINE_RESET(cfghtice); - DECLARE_MACHINE_RESET(type4); - DECLARE_MACHINE_RESET(cbdash); - DECLARE_MACHINE_RESET(cflyball); - DECLARE_MACHINE_RESET(cmanhat); - DECLARE_MACHINE_RESET(cocean1a); /* 10 */ - DECLARE_MACHINE_RESET(clocknchj); /* 11 */ - DECLARE_MACHINE_RESET(cfboy0a1); /* 12 */ + uint32_t screen_update_decocass(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_WRITE8_MEMBER(decocass_coin_counter_w); DECLARE_WRITE8_MEMBER(decocass_sound_command_w); - DECLARE_READ8_MEMBER( decocass_sound_command_main_r ); + DECLARE_READ8_MEMBER(decocass_sound_command_main_r); DECLARE_READ8_MEMBER(decocass_sound_data_r); DECLARE_READ8_MEMBER(decocass_sound_ack_r); DECLARE_WRITE8_MEMBER(decocass_sound_data_w); @@ -251,18 +191,6 @@ public: DECLARE_WRITE8_MEMBER(cdsteljn_mux_w); TIMER_DEVICE_CALLBACK_MEMBER(decocass_audio_nmi_gen); private: - DECLARE_READ8_MEMBER(decocass_type1_r); - DECLARE_READ8_MEMBER(decocass_type2_r); - DECLARE_WRITE8_MEMBER(decocass_type2_w); - DECLARE_READ8_MEMBER(decocass_type3_r); - DECLARE_WRITE8_MEMBER(decocass_type3_w); - DECLARE_READ8_MEMBER(decocass_type4_r); - DECLARE_WRITE8_MEMBER(decocass_type4_w); - DECLARE_READ8_MEMBER(decocass_type5_r); - DECLARE_WRITE8_MEMBER(decocass_type5_w); - DECLARE_READ8_MEMBER(decocass_nodong_r); - - uint8_t* m_type1_map; void draw_edge(bitmap_ind16 &bitmap, const rectangle &cliprect, int which, bool opaque); void draw_object(bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_center(bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -274,5 +202,207 @@ private: void draw_missiles(bitmap_ind16 &bitmap, const rectangle &cliprect, int missile_y_adjust, int missile_y_adjust_flip_screen, uint8_t *missile_ram, int interleave); +protected: void decocass_fno( offs_t offset, uint8_t data ); }; + +class decocass_type1_state : public decocass_state +{ +public: + decocass_type1_state(const machine_config &mconfig, device_type type, const char *tag) + : decocass_state(mconfig, type, tag) + { + m_type1_map = nullptr; + } + + DECLARE_MACHINE_RESET(ctsttape); + DECLARE_MACHINE_RESET(chwy); + DECLARE_MACHINE_RESET(cdsteljn); + DECLARE_MACHINE_RESET(cterrani); + DECLARE_MACHINE_RESET(castfant); + DECLARE_MACHINE_RESET(csuperas); + DECLARE_MACHINE_RESET(cmanhat); + DECLARE_MACHINE_RESET(clocknch); + DECLARE_MACHINE_RESET(cprogolf); + DECLARE_MACHINE_RESET(cprogolfj); + DECLARE_MACHINE_RESET(cluckypo); + DECLARE_MACHINE_RESET(ctisland); + DECLARE_MACHINE_RESET(ctisland3); + DECLARE_MACHINE_RESET(cexplore); + DECLARE_MACHINE_RESET(cocean1a); /* 10 */ + DECLARE_MACHINE_RESET(cfboy0a1); /* 12 */ + DECLARE_MACHINE_RESET(clocknchj); /* 11 */ + +protected: + + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + + DECLARE_READ8_MEMBER(decocass_type1_r); + + /* dongle type #1 */ + uint32_t m_type1_inmap; + uint32_t m_type1_outmap; + uint8_t* m_type1_map; +}; + + +class decocass_type2_state : public decocass_state +{ +public: + decocass_type2_state(const machine_config &mconfig, device_type type, const char *tag) + : decocass_state(mconfig, type, tag) + { + } + +protected: + + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + + DECLARE_READ8_MEMBER(decocass_type2_r); + DECLARE_WRITE8_MEMBER(decocass_type2_w); + + /* dongle type #2: status of the latches */ + int32_t m_type2_d2_latch; /* latched 8041-STATUS D2 value */ + int32_t m_type2_xx_latch; /* latched value (D7-4 == 0xc0) ? 1 : 0 */ + int32_t m_type2_promaddr; /* latched PROM address A0-A7 */ +}; + + +class decocass_type3_state : public decocass_state +{ +public: + decocass_type3_state(const machine_config &mconfig, device_type type, const char *tag) + : decocass_state(mconfig, type, tag) + { + } + + DECLARE_MACHINE_RESET(cfishing); + DECLARE_MACHINE_RESET(cbtime); + DECLARE_MACHINE_RESET(cburnrub); + DECLARE_MACHINE_RESET(cgraplop); + DECLARE_MACHINE_RESET(cgraplop2); + DECLARE_MACHINE_RESET(clapapa); + DECLARE_MACHINE_RESET(cskater); + DECLARE_MACHINE_RESET(cprobowl); + DECLARE_MACHINE_RESET(cnightst); + DECLARE_MACHINE_RESET(cpsoccer); + DECLARE_MACHINE_RESET(csdtenis); + DECLARE_MACHINE_RESET(czeroize); + DECLARE_MACHINE_RESET(cppicf); + DECLARE_MACHINE_RESET(cfghtice); + +protected: + + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + + DECLARE_READ8_MEMBER(decocass_type3_r); + DECLARE_WRITE8_MEMBER(decocass_type3_w); + + /* dongle type #3: status and patches */ + int32_t m_type3_ctrs; /* 12 bit counter stage */ + int32_t m_type3_d0_latch; /* latched 8041-D0 value */ + int32_t m_type3_pal_19; /* latched 1 for PAL input pin-19 */ + int32_t m_type3_swap; +}; + + + +class decocass_type4_state : public decocass_state +{ +public: + decocass_type4_state(const machine_config &mconfig, device_type type, const char *tag) + : decocass_state(mconfig, type, tag) + { + } + +protected: + + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + + DECLARE_READ8_MEMBER(decocass_type4_r); + DECLARE_WRITE8_MEMBER(decocass_type4_w); + + /* dongle type #4: status */ + int32_t m_type4_ctrs; /* latched PROM address (E5x0 LSB, E5x1 MSB) */ + int32_t m_type4_latch; /* latched enable PROM (1100xxxx written to E5x1) */ +}; + + +class decocass_type5_state : public decocass_state +{ +public: + decocass_type5_state(const machine_config &mconfig, device_type type, const char *tag) + : decocass_state(mconfig, type, tag) + { + } + +protected: + + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + + DECLARE_READ8_MEMBER(decocass_type5_r); + DECLARE_WRITE8_MEMBER(decocass_type5_w); + + /* dongle type #5: status */ + int32_t m_type5_latch; /* latched enable PROM (1100xxxx written to E5x1) */ +}; + + +class decocass_nodong_state : public decocass_state +{ +public: + decocass_nodong_state(const machine_config &mconfig, device_type type, const char *tag) + : decocass_state(mconfig, type, tag) + { + } + +protected: + + //virtual void machine_start() override; + virtual void machine_reset() override; + +private: + DECLARE_READ8_MEMBER(decocass_nodong_r); +}; + + +class decocass_widel_state : public decocass_state +{ +public: + decocass_widel_state(const machine_config &mconfig, device_type type, const char *tag) + : decocass_state(mconfig, type, tag) + { + } + +protected: + + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + + DECLARE_READ8_MEMBER(decocass_widel_r); + DECLARE_WRITE8_MEMBER(decocass_widel_w); + DECLARE_READ8_MEMBER(decocass_fbc2_r); + + /* dongle type widel: status */ + int32_t m_widel_ctrs; /* latched PROM address (E5x0 LSB, E5x1 MSB) */ + int32_t m_widel_latch; /* latched enable PROM (1100xxxx written to E5x1) */ + uint8_t m_decomult_bank; +}; + diff --git a/src/mame/includes/interpro.h b/src/mame/includes/interpro.h index 021dfc50325..543cb147285 100644 --- a/src/mame/includes/interpro.h +++ b/src/mame/includes/interpro.h @@ -19,19 +19,12 @@ #include "machine/z80scc.h" #include "machine/mc146818.h" #include "machine/upd765.h" -#if NEW_SCSI -#include "machine/ncr5390.h" +#include "machine/ncr5390.h" #include "machine/nscsi_bus.h" #include "machine/nscsi_cd.h" #include "machine/nscsi_hd.h" -#else -#include "machine/ncr539x.h" -#include "bus/scsi/scsi.h" -#include "bus/scsi/scsicd.h" -#include "bus/scsi/scsihd.h" -#endif #include "bus/rs232/rs232.h" #include "formats/pc_dsk.h" @@ -52,6 +45,7 @@ #define INTERPRO_FDC_TAG "fdc" #define INTERPRO_SCSI_TAG "scsi" #define INTERPRO_SCSI_ADAPTER_TAG "adapter" +#define INTERPRO_SCSI_DEVICE_TAG INTERPRO_SCSI_TAG ":7:" INTERPRO_SCSI_ADAPTER_TAG #define INTERPRO_IOGA_TAG "ioga" #define INTERPRO_MCGA_TAG "mcga" @@ -70,12 +64,8 @@ public: m_scc2(*this, INTERPRO_SCC2_TAG), m_rtc(*this, INTERPRO_RTC_TAG), m_fdc(*this, INTERPRO_FDC_TAG), -#if NEW_SCSI m_scsibus(*this, INTERPRO_SCSI_TAG), - m_scsi(*this, INTERPRO_SCSI_TAG ":7:" INTERPRO_SCSI_ADAPTER_TAG), -#else - m_scsi(*this, INTERPRO_SCSI_ADAPTER_TAG), -#endif + m_scsi(*this, INTERPRO_SCSI_DEVICE_TAG), m_ioga(*this, INTERPRO_IOGA_TAG), m_mcga(*this, INTERPRO_MCGA_TAG), m_sga(*this, INTERPRO_SGA_TAG), @@ -92,13 +82,8 @@ public: required_device m_scc2; required_device m_rtc; required_device m_fdc; -#if NEW_SCSI required_device m_scsibus; - required_device m_scsi; -#else - required_device m_scsi; -#endif - + required_device m_scsi; required_device m_ioga; required_device m_mcga; required_device m_sga; @@ -137,9 +122,9 @@ public: CTRL1_FLOPRDY = 0x0002, CTRL1_LEDENA = 0x0004, CTRL1_LEDDP = 0x0008, - CTRL1_ETHLOOP = 0x0010, + CTRL1_ETHLOOP = 0x0010, // remote modem loopback CTRL1_ETHDTR = 0x0020, - CTRL1_ETHRMOD = 0x0040, + CTRL1_ETHRMOD = 0x0040, // remote modem configured active low CTRL1_CLIPRESET = 0x0040, CTRL1_FIFOACTIVE = 0x0080 }; @@ -176,8 +161,6 @@ public: DECLARE_READ8_MEMBER(scsi_r); DECLARE_WRITE8_MEMBER(scsi_w); - DECLARE_READ8_MEMBER(scsi_dma_r); - DECLARE_WRITE8_MEMBER(scsi_dma_w); DECLARE_FLOPPY_FORMATS(floppy_formats); diff --git a/src/mame/includes/legionna.h b/src/mame/includes/legionna.h index 77e7c39450f..25e691ac762 100644 --- a/src/mame/includes/legionna.h +++ b/src/mame/includes/legionna.h @@ -13,6 +13,10 @@ public: legionna_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_spriteram(*this, "spriteram"), + m_layer_disable(0), + m_back_gfx_bank(0), + m_fore_gfx_bank(0), + m_mid_gfx_bank(0), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_seibu_sound(*this, "seibu_sound"), diff --git a/src/mame/includes/m62.h b/src/mame/includes/m62.h index 019ba4a4416..b3cd1ce3340 100644 --- a/src/mame/includes/m62.h +++ b/src/mame/includes/m62.h @@ -12,9 +12,17 @@ public: m_m62_tileram(*this, "m62_tileram"), m_m62_textram(*this, "m62_textram"), m_scrollram(*this, "scrollram"), + m_sprite_height_prom(*this, "spr_height_prom"), + m_sprite_color_proms(*this, "spr_color_proms"), + m_chr_color_proms(*this, "chr_color_proms"), + m_fg_color_proms(*this, "fg_color_proms"), m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette"), + m_fg_decode(*this, "fg_decode"), + m_spr_decode(*this, "spr_decode"), + m_chr_decode(*this, "chr_decode"), + m_fg_palette(*this, "fg_palette"), + m_spr_palette(*this, "spr_palette"), + m_chr_palette(*this, "chr_palette"), m_audio(*this, "irem_audio") { } @@ -29,8 +37,10 @@ public: tilemap_t* m_bg_tilemap; tilemap_t* m_fg_tilemap; int m_flipscreen; - - const uint8_t *m_sprite_height_prom; + required_region_ptr m_sprite_height_prom; + required_region_ptr m_sprite_color_proms; + required_region_ptr m_chr_color_proms; + optional_region_ptr m_fg_color_proms; int32_t m_m62_background_hscroll; int32_t m_m62_background_vscroll; uint8_t m_kidniki_background_bank; @@ -88,41 +98,48 @@ public: TILE_GET_INFO_MEMBER(get_youjyudn_bg_tile_info); TILE_GET_INFO_MEMBER(get_youjyudn_fg_tile_info); TILE_GET_INFO_MEMBER(get_horizon_bg_tile_info); + DECLARE_MACHINE_START(battroad); + void machine_init_save(); virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; - DECLARE_PALETTE_INIT(m62); + DECLARE_PALETTE_INIT(m62_spr); + DECLARE_PALETTE_INIT(m62_chr); + DECLARE_PALETTE_INIT(m62_lotlot_fg); + DECLARE_PALETTE_INIT(m62_battroad_fg); DECLARE_VIDEO_START(kungfum); DECLARE_VIDEO_START(battroad); - DECLARE_PALETTE_INIT(battroad); DECLARE_VIDEO_START(ldrun2); DECLARE_VIDEO_START(ldrun4); DECLARE_VIDEO_START(lotlot); - DECLARE_PALETTE_INIT(lotlot); DECLARE_VIDEO_START(kidniki); DECLARE_VIDEO_START(spelunkr); DECLARE_VIDEO_START(spelunk2); DECLARE_PALETTE_INIT(spelunk2); DECLARE_VIDEO_START(youjyudn); DECLARE_VIDEO_START(horizon); - uint32_t screen_update_ldrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_kungfum(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_battroad(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_ldrun3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_ldrun4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_lotlot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_kidniki(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_spelunkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_spelunk2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_youjyudn(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_horizon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void m62_amplify_contrast(palette_t *palette, uint32_t numcolors); + uint32_t screen_update_ldrun(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t screen_update_kungfum(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t screen_update_battroad(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t screen_update_ldrun3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t screen_update_ldrun4(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t screen_update_lotlot(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t screen_update_kidniki(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t screen_update_spelunkr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t screen_update_spelunk2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t screen_update_youjyudn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t screen_update_horizon(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + void m62_amplify_contrast(bool include_fg); void register_savestate( ); - void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int colormask, int prioritymask, int priority ); + void draw_sprites( bitmap_rgb32 &bitmap, const rectangle &cliprect, int colormask, int prioritymask, int priority ); void m62_start( tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2 ); void m62_textlayer( tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2 ); required_device m_maincpu; - required_device m_gfxdecode; - required_device m_palette; + optional_device m_fg_decode; + required_device m_spr_decode; + required_device m_chr_decode; + optional_device m_fg_palette; + required_device m_spr_palette; + required_device m_chr_palette; required_device m_audio; }; diff --git a/src/mame/includes/mappy.h b/src/mame/includes/mappy.h index e74bd66579a..0cecac7c776 100644 --- a/src/mame/includes/mappy.h +++ b/src/mame/includes/mappy.h @@ -69,7 +69,6 @@ public: bitmap_ind16 m_sprite_bitmap; uint8_t m_scroll; - int m_mux; uint8_t m_main_irq_mask; uint8_t m_sub_irq_mask; @@ -84,11 +83,6 @@ public: DECLARE_WRITE8_MEMBER(superpac_flipscreen_w); DECLARE_READ8_MEMBER(superpac_flipscreen_r); DECLARE_WRITE8_MEMBER(mappy_scroll_w); - DECLARE_READ8_MEMBER(dipA_l); - DECLARE_READ8_MEMBER(dipA_h); - DECLARE_READ8_MEMBER(dipB_mux); - DECLARE_READ8_MEMBER(dipB_muxi); - DECLARE_WRITE8_MEMBER(out_mux); DECLARE_WRITE8_MEMBER(out_lamps); TILEMAP_MAPPER_MEMBER(superpac_tilemap_scan); TILEMAP_MAPPER_MEMBER(mappy_tilemap_scan); diff --git a/src/mame/includes/retofinv.h b/src/mame/includes/retofinv.h index 77405bec825..96ba21cf1c6 100644 --- a/src/mame/includes/retofinv.h +++ b/src/mame/includes/retofinv.h @@ -44,6 +44,7 @@ public: TILE_GET_INFO_MEMBER(fg_get_tile_info); DECLARE_PALETTE_INIT(retofinv); + DECLARE_PALETTE_INIT(retofinv_bl); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); diff --git a/src/mame/includes/segas16b.h b/src/mame/includes/segas16b.h index 0c078a87cd1..5d255e7f8b9 100644 --- a/src/mame/includes/segas16b.h +++ b/src/mame/includes/segas16b.h @@ -115,7 +115,6 @@ public: DECLARE_DRIVER_INIT(ddux_5704); DECLARE_DRIVER_INIT(snapper); DECLARE_DRIVER_INIT(shinobi4_5521); - DECLARE_DRIVER_INIT(goldnaxe_5704); DECLARE_DRIVER_INIT(defense_5358_small); DECLARE_DRIVER_INIT(sjryuko_5358_small); DECLARE_DRIVER_INIT(exctleag_5358); @@ -175,7 +174,6 @@ protected: void altbeasj_i8751_sim(); void altbeas5_i8751_sim(); void ddux_i8751_sim(); - void goldnaxe_i8751_sim(); void tturf_i8751_sim(); void wb3_i8751_sim(); diff --git a/src/mame/includes/stlforce.h b/src/mame/includes/stlforce.h index bec81c82259..f1b769bd013 100644 --- a/src/mame/includes/stlforce.h +++ b/src/mame/includes/stlforce.h @@ -1,6 +1,6 @@ // license:BSD-3-Clause // copyright-holders:David Haywood -#include "sound/okim6295.h" + #include "machine/eepromser.h" class stlforce_state : public driver_device @@ -9,7 +9,6 @@ public: stlforce_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), - m_oki(*this, "oki"), m_eeprom(*this, "eeprom"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), @@ -21,10 +20,10 @@ public: m_mlow_scrollram(*this, "mlow_scrollram"), m_mhigh_scrollram(*this, "mhigh_scrollram"), m_vidattrram(*this, "vidattrram"), - m_spriteram(*this, "spriteram") { } + m_spriteram(*this, "spriteram"), + m_okibank(*this, "okibank") { } required_device m_maincpu; - required_device m_oki; required_device m_eeprom; required_device m_gfxdecode; required_device m_palette; @@ -39,6 +38,8 @@ public: required_shared_ptr m_vidattrram; required_shared_ptr m_spriteram; + optional_memory_bank m_okibank; + tilemap_t *m_bg_tilemap; tilemap_t *m_mlow_tilemap; tilemap_t *m_mhigh_tilemap; @@ -46,22 +47,22 @@ public: int m_sprxoffs; - DECLARE_WRITE16_MEMBER(stlforce_bg_videoram_w); - DECLARE_WRITE16_MEMBER(stlforce_mlow_videoram_w); - DECLARE_WRITE16_MEMBER(stlforce_mhigh_videoram_w); - DECLARE_WRITE16_MEMBER(stlforce_tx_videoram_w); - DECLARE_WRITE16_MEMBER(eeprom_w); - DECLARE_WRITE16_MEMBER(oki_bank_w); + DECLARE_WRITE16_MEMBER(bg_videoram_w); + DECLARE_WRITE16_MEMBER(mlow_videoram_w); + DECLARE_WRITE16_MEMBER(mhigh_videoram_w); + DECLARE_WRITE16_MEMBER(tx_videoram_w); + DECLARE_WRITE8_MEMBER(eeprom_w); + DECLARE_WRITE8_MEMBER(oki_bank_w); DECLARE_DRIVER_INIT(twinbrat); DECLARE_DRIVER_INIT(stlforce); - TILE_GET_INFO_MEMBER(get_stlforce_bg_tile_info); - TILE_GET_INFO_MEMBER(get_stlforce_mlow_tile_info); - TILE_GET_INFO_MEMBER(get_stlforce_mhigh_tile_info); - TILE_GET_INFO_MEMBER(get_stlforce_tx_tile_info); + TILE_GET_INFO_MEMBER(get_bg_tile_info); + TILE_GET_INFO_MEMBER(get_mlow_tile_info); + TILE_GET_INFO_MEMBER(get_mhigh_tile_info); + TILE_GET_INFO_MEMBER(get_tx_tile_info); virtual void video_start() override; - uint32_t screen_update_stlforce(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); }; diff --git a/src/mame/includes/turrett.h b/src/mame/includes/turrett.h index fc9f74e4c2a..c9b21f2115d 100644 --- a/src/mame/includes/turrett.h +++ b/src/mame/includes/turrett.h @@ -113,7 +113,7 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; const address_space_config m_space_config; diff --git a/src/mame/machine/6883sam.h b/src/mame/machine/6883sam.h index 9284ae6da08..52418221ed6 100644 --- a/src/mame/machine/6883sam.h +++ b/src/mame/machine/6883sam.h @@ -90,7 +90,7 @@ public: template static devcb_base &set_res_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_res.set_callback(std::forward(cb)); } - static void configure_cpu(device_t &device, const char *tag, address_spacenum space) + static void configure_cpu(device_t &device, const char *tag, int space) { sam6883_device &dev = downcast(device); dev.m_cpu_tag = tag; @@ -169,7 +169,7 @@ private: }; const char * m_cpu_tag; - address_spacenum m_cpu_space_ref; + int m_cpu_space_ref; // incidentals address_space * m_cpu_space; diff --git a/src/mame/machine/abc1600mac.cpp b/src/mame/machine/abc1600mac.cpp index c30fafe2b36..32bb4d41005 100644 --- a/src/mame/machine/abc1600mac.cpp +++ b/src/mame/machine/abc1600mac.cpp @@ -159,9 +159,11 @@ void abc1600_mac_device::device_reset() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *abc1600_mac_device::memory_space_config(address_spacenum spacenum) const +std::vector> abc1600_mac_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_space_config) + }; } diff --git a/src/mame/machine/abc1600mac.h b/src/mame/machine/abc1600mac.h index 650545008a2..f57e5233157 100644 --- a/src/mame/machine/abc1600mac.h +++ b/src/mame/machine/abc1600mac.h @@ -78,7 +78,7 @@ protected: virtual void device_reset() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_PROGRAM) const override; + virtual std::vector> memory_space_config() const override; // optional information overrides virtual void device_add_mconfig(machine_config &config) override; diff --git a/src/mame/machine/c117.cpp b/src/mame/machine/c117.cpp index 78e6f18ebfc..44c9607f258 100644 --- a/src/mame/machine/c117.cpp +++ b/src/mame/machine/c117.cpp @@ -44,6 +44,13 @@ namco_c117_device::namco_c117_device(const machine_config &mconfig, const char * { } +std::vector> namco_c117_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + //------------------------------------------------- // set_cpu_tags - set the tags of the two CPUs // connected to the device diff --git a/src/mame/machine/c117.h b/src/mame/machine/c117.h index 4a1542252e0..14a0867920a 100644 --- a/src/mame/machine/c117.h +++ b/src/mame/machine/c117.h @@ -53,7 +53,7 @@ protected: virtual void device_add_mconfig(machine_config &config) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; } + virtual std::vector> memory_space_config() const override; private: // internal helpers diff --git a/src/mame/machine/cammu.cpp b/src/mame/machine/cammu.cpp index 9a4aa546340..ba6f0fb8872 100644 --- a/src/mame/machine/cammu.cpp +++ b/src/mame/machine/cammu.cpp @@ -140,26 +140,22 @@ void cammu_device::device_start() { m_ssw_func.resolve(); - m_main_space = &space(AS_0); - m_io_space = &space(AS_1); - m_boot_space = &space(AS_2); + m_main_space = &space(0); + m_io_space = &space(1); + m_boot_space = &space(2); } void cammu_device::device_reset() { } -const address_space_config *cammu_device::memory_space_config (address_spacenum spacenum) const +std::vector> cammu_device::memory_space_config() const { - switch (spacenum) - { - case AS_0: return &m_main_space_config; - case AS_1: return &m_io_space_config; - case AS_2: return &m_boot_space_config; - default: break; - } - - return nullptr; + return std::vector> { + std::make_pair(0, &m_main_space_config), + std::make_pair(1, &m_io_space_config), + std::make_pair(2, &m_boot_space_config) + }; } READ32_MEMBER(cammu_device::insn_r) diff --git a/src/mame/machine/cammu.h b/src/mame/machine/cammu.h index cdeb036f49c..718df13e13c 100644 --- a/src/mame/machine/cammu.h +++ b/src/mame/machine/cammu.h @@ -29,7 +29,7 @@ protected: virtual void device_reset() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config (address_spacenum spacenum) const override; + virtual std::vector> memory_space_config() const override; virtual u32 get_pte(u32 va, int user, bool data) = 0; diff --git a/src/mame/machine/coco.cpp b/src/mame/machine/coco.cpp index 8241ed6cc3c..7abc1647df6 100644 --- a/src/mame/machine/coco.cpp +++ b/src/mame/machine/coco.cpp @@ -307,7 +307,7 @@ uint8_t coco_state::floating_space_read(offs_t offset) // // Most of the time, the read below will result in floating_bus_read() being // invoked - return m_floating->read8(m_floating->space(address_spacenum::AS_0), offset); + return m_floating->read8(m_floating->space(0), offset); } @@ -317,7 +317,7 @@ uint8_t coco_state::floating_space_read(offs_t offset) void coco_state::floating_space_write(offs_t offset, uint8_t data) { - m_floating->write8(m_floating->space(address_spacenum::AS_0), offset, data); + m_floating->write8(m_floating->space(0), offset, data); } @@ -1240,7 +1240,7 @@ void coco_state::cart_w(bool state) address_space &coco_state::cartridge_space() { - return m_floating->space(address_spacenum::AS_0); + return m_floating->space(0); } diff --git a/src/mame/machine/decocass.cpp b/src/mame/machine/decocass.cpp index c7bb5483039..abac33a48e7 100644 --- a/src/mame/machine/decocass.cpp +++ b/src/mame/machine/decocass.cpp @@ -241,7 +241,7 @@ void decocass_state::decocass_fno( offs_t offset, uint8_t data ) #endif -READ8_MEMBER(decocass_state::decocass_type1_r) +READ8_MEMBER(decocass_type1_state::decocass_type1_r) { if (!m_type1_map) return 0x00; @@ -429,11 +429,10 @@ static uint8_t type1_latch_16_pass_3_inv_1_table[8] = { T1PROM,T1LATCHINV,T1PROM static uint8_t type1_map1100[8] = { T1PROM,T1PROM,T1LATCHINV,T1PROM,T1DIRECT,T1PROM,T1LATCH,T1PROM }; -MACHINE_RESET_MEMBER(decocass_state,cocean1a) /* 10 */ +MACHINE_RESET_MEMBER(decocass_type1_state,cocean1a) /* 10 */ { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DP-1100 map)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_map1100; m_type1_inmap = MAKE_MAP(0,1,2,3,4,5,6,7); m_type1_outmap = MAKE_MAP(0,1,2,3,4,5,6,7); @@ -461,11 +460,10 @@ MACHINE_RESET_MEMBER(decocass_state,cocean1a) /* 10 */ static uint8_t type1_map1120[8] = { T1PROM,T1PROM,T1LATCHINV,T1DIRECT,T1PROM,T1LATCH,T1PROM,T1PROM }; -MACHINE_RESET_MEMBER(decocass_state,cfboy0a1) /* 12 */ +MACHINE_RESET_MEMBER(decocass_type1_state,cfboy0a1) /* 12 */ { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DP-1120 map)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_map1120; m_type1_inmap = MAKE_MAP(0,1,2,3,4,5,6,7); m_type1_outmap = MAKE_MAP(0,1,2,3,4,5,6,7); @@ -491,11 +489,10 @@ TYPE 1 static uint8_t type1_map_clocknchj[8] = { T1PROM,T1PROM,T1DIRECT,T1LATCHINV,T1PROM,T1PROM,T1LATCH,T1PROM }; -MACHINE_RESET_MEMBER(decocass_state,clocknchj) /* 11 */ +MACHINE_RESET_MEMBER(decocass_type1_state,clocknchj) /* 11 */ { - decocass_state::machine_reset(); - LOG(0,("dongle type #1x (type1_map_clocknchj map)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); + machine_reset(); + LOG(0,("dongle type #1 (type1_map_clocknchj map)\n")); m_type1_map = type1_map_clocknchj; m_type1_inmap = MAKE_MAP(0,1,2,3,4,5,6,7); m_type1_outmap = MAKE_MAP(0,1,2,3,4,5,6,7); @@ -511,7 +508,7 @@ MACHINE_RESET_MEMBER(decocass_state,clocknchj) /* 11 */ * - Pro Tennis * ***************************************************************************/ -READ8_MEMBER(decocass_state::decocass_type2_r) +READ8_MEMBER(decocass_type2_state::decocass_type2_r) { uint8_t data; @@ -540,7 +537,7 @@ READ8_MEMBER(decocass_state::decocass_type2_r) return data; } -WRITE8_MEMBER(decocass_state::decocass_type2_w) +WRITE8_MEMBER(decocass_type2_state::decocass_type2_w) { if (1 == m_type2_xx_latch) { @@ -593,7 +590,7 @@ WRITE8_MEMBER(decocass_state::decocass_type2_w) * - Fighting Ice Hockey * ***************************************************************************/ -READ8_MEMBER(decocass_state::decocass_type3_r) +READ8_MEMBER(decocass_type3_state::decocass_type3_r) { uint8_t data, save; @@ -791,7 +788,7 @@ READ8_MEMBER(decocass_state::decocass_type3_r) return data; } -WRITE8_MEMBER(decocass_state::decocass_type3_w) +WRITE8_MEMBER(decocass_type3_state::decocass_type3_w) { if (1 == (offset & 1)) { @@ -831,7 +828,7 @@ WRITE8_MEMBER(decocass_state::decocass_type3_w) * ***************************************************************************/ -READ8_MEMBER(decocass_state::decocass_type4_r) +READ8_MEMBER(decocass_type4_state::decocass_type4_r) { uint8_t data; @@ -876,7 +873,7 @@ READ8_MEMBER(decocass_state::decocass_type4_r) return data; } -WRITE8_MEMBER(decocass_state::decocass_type4_w) +WRITE8_MEMBER(decocass_type4_state::decocass_type4_w) { if (1 == (offset & 1)) { @@ -914,7 +911,7 @@ WRITE8_MEMBER(decocass_state::decocass_type4_w) * ***************************************************************************/ -READ8_MEMBER(decocass_state::decocass_type5_r) +READ8_MEMBER(decocass_type5_state::decocass_type5_r) { uint8_t data; @@ -956,7 +953,7 @@ READ8_MEMBER(decocass_state::decocass_type5_r) return data; } -WRITE8_MEMBER(decocass_state::decocass_type5_w) +WRITE8_MEMBER(decocass_type5_state::decocass_type5_w) { if (1 == (offset & 1)) { @@ -990,7 +987,7 @@ WRITE8_MEMBER(decocass_state::decocass_type5_w) * ***************************************************************************/ -READ8_MEMBER(decocass_state::decocass_nodong_r) +READ8_MEMBER(decocass_nodong_state::decocass_nodong_r) { uint8_t data; @@ -1024,6 +1021,94 @@ READ8_MEMBER(decocass_state::decocass_nodong_r) return data; } + +/*************************************************************************** + * + * Widel Multigame Dongle + * - provides access to a large ROM + * + ***************************************************************************/ + +READ8_MEMBER(decocass_widel_state::decocass_widel_r) +{ + uint8_t data; + + if (1 == (offset & 1)) + { + if (0 == (offset & E5XX_MASK)) + { + data = m_mcu->upi41_master_r(space,1); + LOG(4,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x <- 8041 STATUS\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data)); + } + else + { + data = 0xff; /* open data bus? */ + LOG(4,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x <- open bus\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data)); + } + } + else + { + if (m_widel_latch) + { + uint8_t *prom = space.machine().root_device().memregion("dongle")->base(); + + data = prom[m_widel_ctrs | (m_decomult_bank << 16)]; + LOG(3,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x '%c' <- PROM[%04x]\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.', m_widel_ctrs)); + + m_widel_ctrs = (m_widel_ctrs + 1) & 0xffff; + if (m_widel_ctrs == 0) + { + m_decomult_bank++; + } + + } + else + { + if (0 == (offset & E5XX_MASK)) + { + data = m_mcu->upi41_master_r(space,0); + LOG(3,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.')); + } + else + { + data = 0xff; /* open data bus? */ + LOG(4,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x <- open bus\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data)); + } + } + } + + return data; +} + +WRITE8_MEMBER(decocass_widel_state::decocass_widel_w) +{ + if (1 == (offset & 1)) + { + if (1 == m_widel_latch) + { + m_widel_ctrs = data << 8; // clears lower bits + LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> CTRS MSB (%04x)\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_widel_ctrs)); + return; + } + else + if (0xc0 == (data & 0xf0)) + { + m_widel_latch = 1; + } + } + else + { + if (m_widel_latch) + { + m_widel_ctrs = data; // clears upper bits + LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> CTRS LSB (%04x)\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_widel_ctrs)); + return; + } + } + LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA")); + m_mcu->upi41_master_w(space,offset, data); +} + /*************************************************************************** * * Main dongle and 8041 interface @@ -1099,28 +1184,27 @@ WRITE8_MEMBER(decocass_state::decocass_e5xx_w) * DE-0091xx daughter board handler * * The DE-0091xx daughter board seems to be a read-only ROM board with - * two times five 4K ROMs. The only game using it (so far) is - * Treasure Island, which has 4 ROMs. + * two times five 4K ROMs. + * * The board's ROMs are mapped into view for reads between addresses - * 0x6000 and 0xafff by setting bit0 of address 0xe900. + * 0x6000 and 0xafff by setting bits 0 and 1 of address 0xe900. * ***************************************************************************/ WRITE8_MEMBER(decocass_state::decocass_e900_w) { - m_de0091_enable = data & 1; - membank("bank1")->set_entry(data & 1); - /* Perhaps the second row of ROMs is enabled by another bit. - * There is no way to verify this yet, so for now just look - * at bit 0 to enable the daughter board at reads between - * 0x6000 and 0xafff. - */ + m_de0091_enable = data & 3; + + if (m_de0091_enable == 0x3) // invalid + return; + + membank("bank1")->set_entry(data & 3); } WRITE8_MEMBER(decocass_state::decocass_de0091_w) { - /* don't allow writes to the ROMs */ - if (!m_de0091_enable) + /* don't allow writes to the ROMs - actually cexplore requires us to allow them */ + //if (!m_de0091_enable) decocass_charram_w(space, offset, data); } @@ -1137,18 +1221,6 @@ void decocass_state::decocass_machine_state_save_init() save_item(NAME(m_i8041_p1)); save_item(NAME(m_i8041_p2)); save_item(NAME(m_de0091_enable)); - save_item(NAME(m_type1_inmap)); - save_item(NAME(m_type1_outmap)); - save_item(NAME(m_type2_d2_latch)); - save_item(NAME(m_type2_xx_latch)); - save_item(NAME(m_type2_promaddr)); - save_item(NAME(m_type3_ctrs)); - save_item(NAME(m_type3_d0_latch)); - save_item(NAME(m_type3_pal_19)); - save_item(NAME(m_type3_swap)); - save_item(NAME(m_type4_ctrs)); - save_item(NAME(m_type4_latch)); - save_item(NAME(m_type5_latch)); save_item(NAME(m_sound_ack)); save_item(NAME(m_quadrature_decoder)); @@ -1171,6 +1243,7 @@ void decocass_state::machine_start() { } + void decocass_state::machine_reset() { m_firsttime = 1; @@ -1188,23 +1261,6 @@ void decocass_state::machine_reset() m_i8041_p2_read_latch = 0xff; m_de0091_enable = 0; - m_type1_inmap = MAKE_MAP(0,1,2,3,4,5,6,7); - m_type1_outmap = MAKE_MAP(0,1,2,3,4,5,6,7); - - m_type2_d2_latch = 0; - m_type2_xx_latch = 0; - m_type2_promaddr = 0; - - m_type3_ctrs = 0; - m_type3_d0_latch = 0; - m_type3_pal_19 = 0; - m_type3_swap = 0; - - m_type4_ctrs = 0; - m_type4_latch = 0; - - m_type5_latch = 0; - memset(m_quadrature_decoder, 0, sizeof(m_quadrature_decoder)); m_sound_ack = 0; m_audio_nmi_enabled = 0; @@ -1224,274 +1280,301 @@ void decocass_state::machine_reset() m_center_v_shift = 0; } -MACHINE_RESET_MEMBER(decocass_state,ctsttape) +void decocass_type1_state::machine_start() +{ + save_item(NAME(m_type1_inmap)); + save_item(NAME(m_type1_outmap)); +} + +void decocass_type1_state::machine_reset() { decocass_state::machine_reset(); + + m_dongle_r = read8_delegate(FUNC(decocass_type1_state::decocass_type1_r),this); + m_type1_inmap = MAKE_MAP(0,1,2,3,4,5,6,7); + m_type1_outmap = MAKE_MAP(0,1,2,3,4,5,6,7); +} + +void decocass_type2_state::machine_start() +{ + save_item(NAME(m_type2_d2_latch)); + save_item(NAME(m_type2_xx_latch)); + save_item(NAME(m_type2_promaddr)); +} + +void decocass_type2_state::machine_reset() +{ + decocass_state::machine_reset(); + + LOG(0,("dongle type #2 (CS82-007)\n")); + m_dongle_r = read8_delegate(FUNC(decocass_type2_state::decocass_type2_r),this); + m_dongle_w = write8_delegate(FUNC(decocass_type2_state::decocass_type2_w),this); + + m_type2_d2_latch = 0; + m_type2_xx_latch = 0; + m_type2_promaddr = 0; +} + +void decocass_type3_state::machine_start() +{ + save_item(NAME(m_type3_ctrs)); + save_item(NAME(m_type3_d0_latch)); + save_item(NAME(m_type3_pal_19)); + save_item(NAME(m_type3_swap)); +} + +void decocass_type3_state::machine_reset() +{ + decocass_state::machine_reset(); + + m_dongle_r = read8_delegate(FUNC(decocass_type3_state::decocass_type3_r),this); + m_dongle_w = write8_delegate(FUNC(decocass_type3_state::decocass_type3_w),this); + + m_type3_ctrs = 0; + m_type3_d0_latch = 0; + m_type3_pal_19 = 0; + m_type3_swap = 0; +} + +void decocass_type4_state::machine_start() +{ + save_item(NAME(m_type4_ctrs)); + save_item(NAME(m_type4_latch)); +} + +void decocass_type4_state::machine_reset() +{ + decocass_state::machine_reset(); + + LOG(0,("dongle type #4 (32K ROM)\n")); + m_dongle_r = read8_delegate(FUNC(decocass_type4_state::decocass_type4_r),this); + m_dongle_w = write8_delegate(FUNC(decocass_type4_state::decocass_type4_w),this); + + m_type4_ctrs = 0; + m_type4_latch = 0; +} + +void decocass_type5_state::machine_start() +{ + save_item(NAME(m_type5_latch)); +} + +void decocass_type5_state::machine_reset() +{ + decocass_state::machine_reset(); + + LOG(0,("dongle type #5 (NOP)\n")); + m_dongle_r = read8_delegate(FUNC(decocass_type5_state::decocass_type5_r),this); + m_dongle_w = write8_delegate(FUNC(decocass_type5_state::decocass_type5_w),this); + + m_type5_latch = 0; +} + +void decocass_nodong_state::machine_reset() +{ + decocass_state::machine_reset(); + LOG(0, ("no dongle\n")); + m_dongle_r = read8_delegate(FUNC(decocass_nodong_state::decocass_nodong_r), this); +} + +MACHINE_RESET_MEMBER(decocass_type1_state,ctsttape) +{ + machine_reset(); LOG(0,("dongle type #1 (DE-0061)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_pass_136_table; } -MACHINE_RESET_MEMBER(decocass_state,chwy) +MACHINE_RESET_MEMBER(decocass_type1_state,chwy) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DE-0061 own PROM)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_27_pass_3_inv_2_table; } -MACHINE_RESET_MEMBER(decocass_state,cdsteljn) +MACHINE_RESET_MEMBER(decocass_type1_state,cdsteljn) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (A-0061)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_27_pass_3_inv_2_table; } -MACHINE_RESET_MEMBER(decocass_state,cterrani) +MACHINE_RESET_MEMBER(decocass_type1_state,cterrani) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DE-0061 straight)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_26_pass_3_inv_2_table; m_type1_inmap = MAKE_MAP(0,1,2,3,4,5,6,7); m_type1_outmap = MAKE_MAP(0,1,2,3,4,5,6,7); } -MACHINE_RESET_MEMBER(decocass_state,castfant) +MACHINE_RESET_MEMBER(decocass_type1_state,castfant) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DE-0061)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_16_pass_3_inv_1_table; } -MACHINE_RESET_MEMBER(decocass_state,csuperas) +MACHINE_RESET_MEMBER(decocass_type1_state,csuperas) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DE-0061 flip 4-5)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_26_pass_3_inv_2_table; m_type1_inmap = MAKE_MAP(0,1,2,3,5,4,6,7); m_type1_outmap = MAKE_MAP(0,1,2,3,5,4,6,7); } -MACHINE_RESET_MEMBER(decocass_state,cmanhat) +MACHINE_RESET_MEMBER(decocass_type1_state,cmanhat) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DE-0061)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_xab_pass_x54_table; } -MACHINE_RESET_MEMBER(decocass_state,clocknch) +MACHINE_RESET_MEMBER(decocass_type1_state,clocknch) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DE-0061 flip 2-3)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_26_pass_3_inv_2_table; m_type1_inmap = MAKE_MAP(0,1,3,2,4,5,6,7); m_type1_outmap = MAKE_MAP(0,1,3,2,4,5,6,7); } -MACHINE_RESET_MEMBER(decocass_state,cprogolf) +MACHINE_RESET_MEMBER(decocass_type1_state,cprogolf) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DE-0061 flip 0-1)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_26_pass_3_inv_2_table; m_type1_inmap = MAKE_MAP(1,0,2,3,4,5,6,7); m_type1_outmap = MAKE_MAP(1,0,2,3,4,5,6,7); } -MACHINE_RESET_MEMBER(decocass_state,cprogolfj) +MACHINE_RESET_MEMBER(decocass_type1_state,cprogolfj) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (A-0061 flip 0-1)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_26_pass_3_inv_2_table; m_type1_inmap = MAKE_MAP(1,0,2,3,4,5,6,7); m_type1_outmap = MAKE_MAP(1,0,2,3,4,5,6,7); } -MACHINE_RESET_MEMBER(decocass_state,cluckypo) +MACHINE_RESET_MEMBER(decocass_type1_state,cluckypo) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DE-0061 flip 1-3)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_26_pass_3_inv_2_table; m_type1_inmap = MAKE_MAP(0,3,2,1,4,5,6,7); m_type1_outmap = MAKE_MAP(0,3,2,1,4,5,6,7); } -MACHINE_RESET_MEMBER(decocass_state,ctisland) +MACHINE_RESET_MEMBER(decocass_type1_state,ctisland) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DE-0061 flip 0-2)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_26_pass_3_inv_2_table; m_type1_inmap = MAKE_MAP(2,1,0,3,4,5,6,7); m_type1_outmap = MAKE_MAP(2,1,0,3,4,5,6,7); } -MACHINE_RESET_MEMBER(decocass_state,ctisland3) +MACHINE_RESET_MEMBER(decocass_type1_state,ctisland3) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DE-0061 custom)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_ctisland3; m_type1_inmap = MAKE_MAP(0,1,2,3,4,5,6,7); // correct for handcrafted prom m_type1_outmap = MAKE_MAP(0,1,2,3,4,5,6,7); // ^ } -MACHINE_RESET_MEMBER(decocass_state,cexplore) +MACHINE_RESET_MEMBER(decocass_type1_state,cexplore) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #1 (DE-0061 own PROM)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_r),this); m_type1_map = type1_latch_26_pass_5_inv_2_table; } -MACHINE_RESET_MEMBER(decocass_state,cdiscon1) +MACHINE_RESET_MEMBER(decocass_type3_state,cfishing) { - decocass_state::machine_reset(); - LOG(0,("dongle type #2 (CS82-007)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type2_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type2_w),this); -} - -MACHINE_RESET_MEMBER(decocass_state,ctornado) -{ - decocass_state::machine_reset(); - LOG(0,("dongle type #2 (CS82-007)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type2_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type2_w),this); -} - -MACHINE_RESET_MEMBER(decocass_state,cmissnx) -{ - decocass_state::machine_reset(); - LOG(0,("dongle type #2 (CS82-007)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type2_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type2_w),this); -} - -MACHINE_RESET_MEMBER(decocass_state,cptennis) -{ - decocass_state::machine_reset(); - LOG(0,("dongle type #2 (CS82-007)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type2_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type2_w),this); -} - -MACHINE_RESET_MEMBER(decocass_state,cfishing) -{ - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_01; } -MACHINE_RESET_MEMBER(decocass_state,cbtime) +MACHINE_RESET_MEMBER(decocass_type3_state,cbtime) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_12; } -MACHINE_RESET_MEMBER(decocass_state,cburnrub) +MACHINE_RESET_MEMBER(decocass_type3_state,cburnrub) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_67; } -MACHINE_RESET_MEMBER(decocass_state,cgraplop) +MACHINE_RESET_MEMBER(decocass_type3_state,cgraplop) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_56; } -MACHINE_RESET_MEMBER(decocass_state,cgraplop2) +MACHINE_RESET_MEMBER(decocass_type3_state,cgraplop2) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_67; } -MACHINE_RESET_MEMBER(decocass_state,clapapa) +MACHINE_RESET_MEMBER(decocass_type3_state,clapapa) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_34_7; } -MACHINE_RESET_MEMBER(decocass_state,cskater) +MACHINE_RESET_MEMBER(decocass_type3_state,cskater) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_45; } -MACHINE_RESET_MEMBER(decocass_state,cprobowl) +MACHINE_RESET_MEMBER(decocass_type3_state,cprobowl) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_34_0; } -MACHINE_RESET_MEMBER(decocass_state,cnightst) +MACHINE_RESET_MEMBER(decocass_type3_state,cnightst) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_13; } -MACHINE_RESET_MEMBER(decocass_state,cpsoccer) +MACHINE_RESET_MEMBER(decocass_type3_state,cpsoccer) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_24; } -MACHINE_RESET_MEMBER(decocass_state,csdtenis) +MACHINE_RESET_MEMBER(decocass_type3_state,csdtenis) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_23_56; } -MACHINE_RESET_MEMBER(decocass_state,czeroize) +MACHINE_RESET_MEMBER(decocass_type3_state,czeroize) { uint8_t *mem = memregion("dongle")->base(); - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_23_56; /* @@ -1508,47 +1591,57 @@ MACHINE_RESET_MEMBER(decocass_state,czeroize) mem[0x08a1] = 0xf7; } -MACHINE_RESET_MEMBER(decocass_state,cppicf) +MACHINE_RESET_MEMBER(decocass_type3_state,cppicf) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_01; } -MACHINE_RESET_MEMBER(decocass_state,cfghtice) +MACHINE_RESET_MEMBER(decocass_type3_state,cfghtice) { - decocass_state::machine_reset(); + machine_reset(); LOG(0,("dongle type #3 (PAL)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type3_w),this); m_type3_swap = TYPE3_SWAP_25; } -MACHINE_RESET_MEMBER(decocass_state,type4) + + + +// Note, this is a hack, I can't see where the bank bits actually get written out +// and the MAME disassembly is currently a mess. +READ8_MEMBER(decocass_widel_state::decocass_fbc2_r) { - decocass_state::machine_reset(); - LOG(0,("dongle type #4 (32K ROM)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type4_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type4_w),this); + if (!machine().side_effect_disabled()) + { + uint8_t data = m_maincpu->space(AS_PROGRAM).read_byte(0xb3); + m_decomult_bank = data; + } + return 0xa8; } -MACHINE_RESET_MEMBER(decocass_state,cbdash) +void decocass_widel_state::machine_start() { - decocass_state::machine_reset(); - LOG(0,("dongle type #5 (NOP)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type5_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_state::decocass_type5_w),this); + decocass_state::machine_start(); + + save_item(NAME(m_widel_ctrs)); + save_item(NAME(m_widel_latch)); } -MACHINE_RESET_MEMBER(decocass_state,cflyball) +void decocass_widel_state::machine_reset() { decocass_state::machine_reset(); - LOG(0,("no dongle\n")); - m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_nodong_r),this); + LOG(0,("Deco Multigame Dongle\n")); + m_dongle_r = read8_delegate(FUNC(decocass_widel_state::decocass_widel_r),this); + m_dongle_w = write8_delegate(FUNC(decocass_widel_state::decocass_widel_w),this); + + m_maincpu->space(AS_PROGRAM).install_read_handler(0xfbc2, 0xfbc2, read8_delegate(FUNC(decocass_widel_state::decocass_fbc2_r),this)); + m_decomult_bank = 0; + m_widel_ctrs = 0; + m_widel_latch = 0; } + /*************************************************************************** * * 8041 port handlers diff --git a/src/mame/machine/fd1089.cpp b/src/mame/machine/fd1089.cpp index e29fad8275c..e364581916c 100644 --- a/src/mame/machine/fd1089.cpp +++ b/src/mame/machine/fd1089.cpp @@ -208,7 +208,7 @@ const fd1089_base_device::decrypt_parameters fd1089_base_device::s_data_params_a { 0xac, 1,6,3,5,0,7,4,2 }, }; -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, fd1094_device ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_OPCODES, 16, fd1094_device ) AM_RANGE(0x00000, 0xfffff) AM_ROM AM_SHARE(":fd1089_decrypted_opcodes") ADDRESS_MAP_END @@ -228,7 +228,7 @@ fd1089_base_device::fd1089_base_device(const machine_config &mconfig, device_typ m_decrypted_opcodes(*this, ":fd1089_decrypted_opcodes") { // add the decrypted opcodes map - m_address_map[AS_DECRYPTED_OPCODES] = ADDRESS_MAP_NAME(decrypted_opcodes_map); + set_addrmap(AS_OPCODES, ADDRESS_MAP_NAME(decrypted_opcodes_map)); } fd1089a_device::fd1089a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) diff --git a/src/mame/machine/fd1094.cpp b/src/mame/machine/fd1094.cpp index 14cfdd65aeb..ed8dfe87617 100644 --- a/src/mame/machine/fd1094.cpp +++ b/src/mame/machine/fd1094.cpp @@ -563,7 +563,7 @@ fd1094_device::fd1094_device(const machine_config &mconfig, const char *tag, dev , m_key(*this, "key") { // add the decrypted opcodes map -// m_address_map[AS_DECRYPTED_OPCODES] = ADDRESS_MAP_NAME(decrypted_opcodes_map); +// m_address_map[AS_OPCODES] = ADDRESS_MAP_NAME(decrypted_opcodes_map); // create the initial masked opcode table memset(m_masked_opcodes_lookup, 0, sizeof(m_masked_opcodes_lookup)); diff --git a/src/mame/machine/inder_vid.cpp b/src/mame/machine/inder_vid.cpp index 60ae45e8ad8..1ed764cfa58 100644 --- a/src/mame/machine/inder_vid.cpp +++ b/src/mame/machine/inder_vid.cpp @@ -81,7 +81,7 @@ WRITE_LINE_MEMBER(inder_vid_device::m68k_gen_int) } -static ADDRESS_MAP_START( ramdac_map, AS_0, 8, inder_vid_device ) +static ADDRESS_MAP_START( ramdac_map, 0, 8, inder_vid_device ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w) ADDRESS_MAP_END diff --git a/src/mame/machine/interpro_ioga.cpp b/src/mame/machine/interpro_ioga.cpp index 49d7ccd0a7f..010791f5165 100644 --- a/src/mame/machine/interpro_ioga.cpp +++ b/src/mame/machine/interpro_ioga.cpp @@ -18,10 +18,13 @@ #include "emu.h" #include "interpro_ioga.h" +// the following enables some hacks which will allow all iogadiag tests to complete successfully, but also breaks scsi dma +#define IOGA_DMA_DIAG_HACK 0 + #define LOG_GENERAL (1 << 31) -#define LOG_HWINT_ENABLE 0 //((1<<3) | LOG_GENERAL) -#define LOG_DMA_ENABLE ((1<interface(mmu); - m_memory_space = &mmu->space(AS_0); + m_memory_space = &mmu->space(0); for (int i = 0; i < IOGA_DMA_CHANNELS; i++) { @@ -135,10 +144,7 @@ void interpro_ioga_device::device_start() for (auto & timer : m_timer) timer->enable(false); - // allocate timer for DMA controller - m_dma_timer = timer_alloc(IOGA_TIMER_DMA); - m_dma_timer->adjust(attotime::never); - + // allocate ioga interrupt and dma timer m_ioga_clock = timer_alloc(IOGA_CLOCK); m_ioga_clock->adjust(attotime::never); } @@ -157,7 +163,7 @@ void interpro_ioga_device::device_reset() m_timer_reg[0] = 0; //m_timer[0]->adjust(attotime::zero, IOGA_TIMER_0, attotime::from_hz(60)); - // configure ioga clock timer + // configure ioga interrupt and dma timer m_ioga_clock->adjust(attotime::zero, IOGA_CLOCK, attotime::from_hz(clock())); } @@ -282,12 +288,9 @@ void interpro_ioga_device::device_timer(emu_timer &timer, device_timer_id id, in } break; - case IOGA_TIMER_DMA: - dma_clock(param); - break; - case IOGA_CLOCK: interrupt_clock(); + dma_clock(); break; } } @@ -482,7 +485,8 @@ void interpro_ioga_device::interrupt_clock() if (m_nmi_pending) { // check if nmi is enabled - if ((m_nmictrl & NMI_IE) == NMI_IE) + if (((m_nmictrl & NMI_IE) == NMI_IE) + || ((m_nmictrl & (NMI_ALL | NMI_ENABLE1)) == (NMI_ALL | NMI_ENABLE1))) { LOG_INTERRUPT("nmi: accepting nmi\n"); @@ -607,7 +611,10 @@ WRITE8_MEMBER(interpro_ioga_device::nmictrl_w) // check for a forced nmi (NMI_NEGPOL written from 1 to 0 with NMI_IE set) if ((m_nmictrl & NMI_NEGPOL) && (data & (NMI_NEGPOL | NMI_IE)) == NMI_IE) + { + LOG_INTERRUPT("nmi: forced nmi\n"); m_nmi_pending = true; + } m_nmictrl = data; } @@ -628,136 +635,223 @@ WRITE16_MEMBER(interpro_ioga_device::softint_vector_w) /****************************************************************************** DMA ******************************************************************************/ -void interpro_ioga_device::dma_clock(int channel) +void interpro_ioga_device::dma_clock() { - struct dma &dma_channel = m_dma_channel[channel]; - - // if bus grant is not enabled, set the busy flag (iogadiag test 7.0265) - if (!(m_arbctl & dma_channel.arb_mask)) + for (auto &dma_channel : m_dma_channel) { - dma_channel.control |= DMA_CTRL_BUSY; - m_dma_channel[channel].control |= DMA_CTRL_BUSY; - m_dma_timer->adjust(attotime::from_hz(clock()), channel); - - return; - } - else - dma_channel.control &= ~DMA_CTRL_BUSY; - - // if the channel isn't active yet, make it active and log something - if (!dma_channel.dma_active) - { - LOG_DMA(channel, "dma: transfer %s device begun, channel = %d, control 0x%08x, real address 0x%08x, virtual address 0x%08x, count 0x%08x\n", - (dma_channel.control & DMA_CTRL_WRITE) ? "to" : "from", - channel, dma_channel.control, dma_channel.real_address, dma_channel.virtual_address, dma_channel.transfer_count); - dma_channel.dma_active = true; - } - - // transfer data while the device is requesting a data transfer and the transfer count is not zero - while (dma_channel.drq_state && dma_channel.transfer_count) - { - // transfer from the memory to device or device to memory - if (dma_channel.control & DMA_CTRL_WRITE) - dma_channel.device_w(m_memory_space->read_byte(dma_channel.real_address)); - else - m_memory_space->write_byte(dma_channel.real_address, dma_channel.device_r()); - - // increment addresses and decrement count - dma_channel.real_address++; - dma_channel.virtual_address++; - dma_channel.transfer_count--; - } - - // if there are no more bytes remaining, terminate the transfer - if (dma_channel.transfer_count == 0) - { - LOG_DMA(channel, "dma: transfer %s device ended, channel = %d, control 0x%08x, real address 0x%08x, virtual address 0x%08x, count 0x%08x\n", - (dma_channel.control & DMA_CTRL_WRITE) ? "to" : "from", - channel, dma_channel.control, dma_channel.real_address, dma_channel.virtual_address, dma_channel.transfer_count); - - if (channel == IOGA_DMA_FLOPPY) + switch (dma_channel.state) { - LOG_DMA(channel, "dma: asserting fdc terminal count line\n"); + case IDLE: + break; - m_fdc_tc_func(ASSERT_LINE); - m_fdc_tc_func(CLEAR_LINE); + case COMMAND: + // start a command + // HACK: busy flag indicates bus access required? + if (dma_channel.control & DMA_CTRL_BUSY) + dma_channel.state = WAIT; + else + dma_channel.state = COMPLETE; + break; + + case WAIT: + // if bus grant is enabled, clear wait flag and execute transfer + if (m_arbctl & dma_channel.arb_mask) + { + // clear bus wait flag + dma_channel.control &= ~DMA_CTRL_WAIT; + + LOG_DMA(dma_channel.channel, "dma: transfer %s device begun, channel = %d, control 0x%08x, real address 0x%08x, virtual address 0x%08x, count 0x%08x\n", + (dma_channel.control & DMA_CTRL_WRITE) ? "to" : "from", + dma_channel.channel, dma_channel.control, dma_channel.real_address, dma_channel.virtual_address, dma_channel.transfer_count); + + dma_channel.state = TRANSFER; + } + else + // (7.0265) set the bus grant wait flag + dma_channel.control |= DMA_CTRL_WAIT; + break; + + case TRANSFER: + // if there are no more bytes remaining, terminate the transfer + if (dma_channel.transfer_count == 0) + { + LOG_DMA(dma_channel.channel, "dma: transfer %s device ended, channel = %d, control 0x%08x, real address 0x%08x, virtual address 0x%08x, count 0x%08x\n", + (dma_channel.control & DMA_CTRL_WRITE) ? "to" : "from", + dma_channel.channel, dma_channel.control, dma_channel.real_address, dma_channel.virtual_address, dma_channel.transfer_count); + + if (dma_channel.channel == IOGA_DMA_FLOPPY) + { + LOG_DMA(dma_channel.channel, "dma: asserting fdc terminal count line\n"); + + m_fdc_tc_func(ASSERT_LINE); + m_fdc_tc_func(CLEAR_LINE); + } + + // set transfer count zero flag + dma_channel.control |= DMA_CTRL_TCZERO; + dma_channel.state = COMPLETE; + } +#if IOGA_DMA_DIAG_HACK + else +#define TAG ((dma_channel.control & DMA_CTRL_TAG) >> 3) + + // hacks for forced dma bus error diagnostic tests + if ((dma_channel.control & 0xfe000000 && dma_channel.control & 0xe00) || ((dma_channel.control & DMA_CTRL_WMASK) == 0x41000000)) + if (dma_channel.real_address & 0xff000000 || dma_channel.real_address == 0) + { + LOG_DMA(dma_channel.channel, "dma: forced bus error hack, control 0x%08x\n", dma_channel.control); + + // (7.0267) trigger an interrupt + m_hwicr[dma_channel.channel + 1] |= IOGA_INTERRUPT_PENDING; + + // (7.0268) set bus error bit + dma_channel.control |= DMA_CTRL_BERR; + + // 7.0269, 7.0276, 7.0281, 7.0289: set error address from virtual or real dma address + // HACK: don't set error address for 7.0276 special case + if (!(dma_channel.control == 0x65400600 && dma_channel.real_address != 0)) + m_error_address = dma_channel.control & DMA_CTRL_VIRTUAL ? dma_channel.virtual_address : dma_channel.real_address; + + // compute bus error cycle type from control register + u8 cycle_type = 0x30; + switch ((dma_channel.control >> 24) & 0x8c) + { + case 0x00: cycle_type |= 2; break; + case 0x04: cycle_type |= 1; break; + case 0x08: cycle_type |= 3; break; + case 0x80: cycle_type |= 4; break; + case 0x84: cycle_type |= 8; break; + } + + switch (dma_channel.control & ~DMA_CTRL_BERR) + { + case 0x61000800: // VIRTUAL | WRITE | TAG(3) + // (7.0266) trigger an nmi + m_nmi_pending = true; + + // (7.0270) set error cycle type 0x52f0: SNAPOK | BERR | BG(IOD) | TAG(0c0) | CT(30) + m_error_businfo = BINFO_SNAPOK | BINFO_BERR | BINFO_BG_IOD | 0xf0; + break; + + case 0x65000600: // VIRTUAL | WRITE | X | TAG(4) + if (dma_channel.real_address != 0) + { + // (7.0275) control register expect 0x64400800 + dma_channel.control &= ~0x600; + dma_channel.control |= 0x800; + + // (7.0277) set error cycle type 0x5331: SNAPOK | BERR | BG(IOD) | TAG(100) | CT(31) + m_error_businfo = BINFO_SNAPOK | BINFO_BERR | BINFO_BG_IOD | TAG | cycle_type; + } + else + { + // (7.0287) set error cycle type 0x62f0: SNAPOK | MMBE | BG(IOD) | TAG(0c0) | CT(30) + m_error_businfo = BINFO_SNAPOK | BINFO_MMBE | BINFO_BG_IOD | TAG | 0x30; + } + break; + + default: + m_error_businfo = BINFO_SNAPOK | BINFO_BERR | BINFO_BG_IOD | TAG | cycle_type; + break; + } + + dma_channel.state = COMPLETE; + } +#endif + break; + + case COMPLETE: + // clear busy flag + dma_channel.control &= ~DMA_CTRL_BUSY; + dma_channel.state = IDLE; + break; } - - dma_channel.control |= DMA_CTRL_TCZERO; - dma_channel.dma_active = false; } } void interpro_ioga_device::drq(int state, int channel) { - // a device is requesting a dma data transfer (read or write) - m_dma_channel[channel].drq_state = state; + // TODO: implement virtual addressing when DMA_CTRL_VIRTUAL is set + + struct dma &dma_channel = m_dma_channel[channel]; if (state) { LOG_DMA(channel, "dma: drq for channel %d asserted\n", channel); - m_dma_timer->adjust(attotime::zero, channel); + if (dma_channel.state == TRANSFER && dma_channel.transfer_count) + { + // transfer from the memory to device or device to memory + if (dma_channel.control & DMA_CTRL_WRITE) + dma_channel.device_w(m_memory_space->read_byte(dma_channel.real_address)); + else + m_memory_space->write_byte(dma_channel.real_address, dma_channel.device_r()); + + // increment addresses and decrement count + dma_channel.real_address++; + dma_channel.virtual_address++; + dma_channel.transfer_count--; + } } else LOG_DMA(channel, "dma: drq for channel %d deasserted\n", channel); } -/* -0x94: error address reg: expect 0x7f200000 after bus error (from dma virtual address) -0x98: error cycle type: expect 0x52f0 (after failed dma?) - 0x5331 - forced berr with nmi/interrupts disabled? - 0xc2f0 - 0x62f0 -*/ -// TODO: 7.0266 - forced BERR not working u32 interpro_ioga_device::dma_r(address_space &space, offs_t offset, u32 mem_mask, int channel) { + struct dma &dma_channel = m_dma_channel[channel]; + switch (offset) { case 0: - return m_dma_channel[channel].real_address; + return dma_channel.real_address; case 1: - return m_dma_channel[channel].virtual_address; + return dma_channel.virtual_address; case 2: - return m_dma_channel[channel].transfer_count; + return dma_channel.transfer_count; case 3: - return m_dma_channel[channel].control; - } + return dma_channel.control; - logerror("dma_r: unknown channel %d\n", channel); - return 0; + default: + logerror("dma_r: unknown dma register %d\n", offset); + return 0; + } } void interpro_ioga_device::dma_w(address_space &space, offs_t offset, u32 data, u32 mem_mask, int channel) { + struct dma &dma_channel = m_dma_channel[channel]; + switch (offset) { case 0: LOG_DMA(channel, "dma: channel %d real address = 0x%08x (%s)\n", channel, data, machine().describe_context()); - m_dma_channel[channel].real_address = data; + dma_channel.real_address = data; break; case 1: LOG_DMA(channel, "dma: channel %d virtual address = 0x%08x (%s)\n", channel, data, machine().describe_context()); - m_dma_channel[channel].virtual_address = data & ~0x3; + dma_channel.virtual_address = data & ~0x3; break; case 2: LOG_DMA(channel, "dma: channel %d transfer count = 0x%08x (%s)\n", channel, data, machine().describe_context()); - m_dma_channel[channel].transfer_count = data; + dma_channel.transfer_count = data; break; case 3: LOG_DMA(channel, "dma: channel %d control = 0x%08x (%s)\n", channel, data, machine().describe_context()); - m_dma_channel[channel].control = data & DMA_CTRL_WMASK; - // start a forced dma transfer if necessary - if ((data & DMA_CTRL_FORCED) == DMA_CTRL_FORCED) - m_dma_timer->adjust(attotime::from_hz(clock()), channel); + // (7.0272) if bus error flag is set, clear existing bus error (otherwise retain existing state) + if (data & DMA_CTRL_BERR) + dma_channel.control = data & DMA_CTRL_WMASK; + else + dma_channel.control = (data & DMA_CTRL_WMASK) | (dma_channel.control & DMA_CTRL_BERR); + + dma_channel.state = COMMAND; break; } } @@ -806,3 +900,41 @@ WRITE16_MEMBER(interpro_ioga_device::arbctl_w) m_arbctl = data; } + +WRITE32_MEMBER(interpro_ioga_device::eth_remap_w) +{ + LOG_ETH("eth: remap = 0x%08x (%s)\n", data, machine().describe_context()); + + m_eth_remap = data & ~0xf; +} + +WRITE32_MEMBER(interpro_ioga_device::eth_map_page_w) +{ + LOG_ETH("eth: remap page = 0x%08x (%s)\n", data, machine().describe_context()); + + m_eth_map_page = data & ~0xf; +} + +WRITE32_MEMBER(interpro_ioga_device::eth_control_w) +{ + LOG_ETH("eth: control = 0x%08x (%s)\n", data, machine().describe_context()); + + /* (7.0202) eth ctrl register input test patterns and expected outputs are: + + 7809 -> 4000 + + 3809 -> 0800 + 3409 -> 0400 + 3209 -> 0200 + 3109 -> 0100 + + 3089 -> 80 + 3049 -> 40 + 3019 -> 10 + 300b -> 02 + */ + if (data & ETH_RESET) + m_eth_control = ETH_RESET; + else + m_eth_control = data & 0x0ff2; +} diff --git a/src/mame/machine/interpro_ioga.h b/src/mame/machine/interpro_ioga.h index ee8af40f5a4..f852ed5b985 100644 --- a/src/mame/machine/interpro_ioga.h +++ b/src/mame/machine/interpro_ioga.h @@ -60,26 +60,6 @@ #define IOGA_DMA_FLOPPY 2 #define IOGA_DMA_SERIAL 3 -// dma control register - -// are these "commands"? -#define IOGA_DMA_CTRL_RESET_L 0x61000000 // do not clear bus error bit -#define IOGA_DMA_CTRL_RESET 0x60400000 // clear bus error bit - -// uncertain about these -#define IOGA_DMA_CTRL_START 0x10000000 -#define IOGA_DMA_CTRL_ENABLE 0x20000000 -#define IOGA_DMA_CTRL_X 0x00800000 // another error bit? -#define IOGA_DMA_CTRL_Y 0x01000000 // turned off if either of two above are found - -#define IOGA_DMA_CTRL_UNK1 0x60000000 // don't know yet -#define IOGA_DMA_CTRL_UNK2 0x67000600 // forced berr with nmi and interrupts disabled -#define IOGA_DMA_CTRL_UNK3 0xbf000600 // set by scsidiag before executing scsi "transfer information" command - -// read values -// iogadiag expects 0x64400800 after forced berr with nmi/interrupts disabled - - class interpro_ioga_device : public device_t { public: @@ -117,6 +97,45 @@ public: DECLARE_WRITE_LINE_MEMBER(drq_scsi) { drq(state, IOGA_DMA_SCSI); } DECLARE_WRITE_LINE_MEMBER(drq_floppy) { drq(state, IOGA_DMA_FLOPPY); } + enum eth_remap_mask + { + ETH_REMAP_CHA_FLUSH = 0x00000008, + ETH_REMAP_CHA_BUF = 0x00000010, + ETH_REMAP_CHA_QUAD = 0x00000020, + ETH_REMAP_CHA_WTAG = 0x000001c0, + ETH_REMAP_CHA_RTAG = 0x00000e00, + ETH_REMAP_ADDR = 0xfffff000 + }; + DECLARE_READ32_MEMBER(eth_remap_r) { return m_eth_remap; } + DECLARE_WRITE32_MEMBER(eth_remap_w); + + enum eth_remap_page_mask + { + ETH_REMAP_CHB_FLUSH = 0x00000008, + ETH_REMAP_CHB_BUF = 0x00000010, + ETH_REMAP_CHB_QUAD = 0x00000020, + ETH_REMAP_CHB_WTAG = 0x000001c0, + ETH_REMAP_CHB_RTAG = 0x00000e00, + ETH_MAP_PAGE = 0xfffff000 + }; + DECLARE_READ32_MEMBER(eth_map_page_r) { return m_eth_map_page; } + DECLARE_WRITE32_MEMBER(eth_map_page_w); + + enum eth_control_mask + { + ETH_CA = 0x00000001, + ETH_MAPEN = 0x00000002, + ETH_REMAP_CHC_BUF = 0x00000010, + ETH_REMAP_CHC_QUAD = 0x00000020, + ETH_REMAP_CHC_WTAG = 0x000001c0, + ETH_REMAP_CHC_RTAG = 0x00000e00, + ETH_BERR = 0x00001000, + ETH_MMBE = 0x00002000, + ETH_RESET = 0x00004000 + }; + DECLARE_READ32_MEMBER(eth_control_r) { return m_eth_control; } + DECLARE_WRITE32_MEMBER(eth_control_w); + DECLARE_READ32_MEMBER(timer_prescaler_r) { return m_prescaler; } DECLARE_READ32_MEMBER(timer0_r) { return m_timer_reg[0]; } DECLARE_READ32_MEMBER(timer1_r); @@ -126,7 +145,7 @@ public: ARBCTL_BGR_ETHC = 0x0001, ARBCTL_BGR_SCSI = 0x0002, ARBCTL_BGR_PLOT = 0x0004, - ARBCTL_BGR_FDC = 0x0008, + ARBCTL_BGR_FDC = 0x0008, ARBCTL_BGR_SER0 = 0x0010, ARBCTL_BGR_SER1 = 0x0020, ARBCTL_BGR_SER2 = 0x0040, @@ -186,14 +205,19 @@ public: enum dma_ctrl_mask { - DMA_CTRL_TCZERO = 0x00000001, // transfer count zero - DMA_CTRL_BERR = 0x00400000, // bus error - DMA_CTRL_BUSY = 0x02000000, // set until arbiter grants bus access + DMA_CTRL_TCZERO = 0x00000001, // transfer count zero + DMA_CTRL_TAG = 0x00000e00, // bus tag + DMA_CTRL_BERR = 0x00400000, // bus error + DMA_CTRL_ERR = 0x00800000, // checked for in scsi isr - DMA_CTRL_WRITE = 0x40000000, // indicates memory to device transfer - DMA_CTRL_FORCED = 0x60000000, + DMA_CTRL_BUSY = 0x01000000, // cleared when command complete (maybe bus grant required?) + DMA_CTRL_WAIT = 0x02000000, // waiting for bus grant + DMA_CTRL_X = 0x04000000, // set during fdc dma? - DMA_CTRL_WMASK = 0xfd000e00 // writable fields + DMA_CTRL_VIRTUAL = 0x20000000, // use virtual addressing + DMA_CTRL_WRITE = 0x40000000, // memory to device transfer + + DMA_CTRL_WMASK = 0xfd000e00 // writable fields }; DECLARE_READ32_MEMBER(dma_plotter_r) { return dma_r(space, offset, mem_mask, IOGA_DMA_PLOTTER); } DECLARE_WRITE32_MEMBER(dma_plotter_w) { dma_w(space, offset, data, mem_mask, IOGA_DMA_PLOTTER); } @@ -244,8 +268,8 @@ private: static const device_timer_id IOGA_TIMER_1 = 1; static const device_timer_id IOGA_TIMER_2 = 2; static const device_timer_id IOGA_TIMER_3 = 3; - static const device_timer_id IOGA_TIMER_DMA = 4; - static const device_timer_id IOGA_CLOCK = 5; + + static const device_timer_id IOGA_CLOCK = 4; void set_nmi_line(int state); void set_irq_line(int irq, int state); @@ -253,13 +277,21 @@ private: void write_timer(int timer, u32 value, device_timer_id id); void interrupt_clock(); - void dma_clock(int channel); + void dma_clock(); void drq(int state, int channel); devcb_write_line m_out_nmi_func; devcb_write_line m_out_irq_func; address_space *m_memory_space; + enum dma_states + { + IDLE, + WAIT, + COMMAND, + TRANSFER, + COMPLETE + }; // dma channels struct dma { @@ -268,12 +300,13 @@ private: u32 transfer_count; u32 control; - bool dma_active; - int drq_state; + dma_states state; devcb_read8 device_r; devcb_write8 device_w; const u16 arb_mask; + const int channel; + const char *name; } m_dma_channel[IOGA_DMA_CHANNELS]; u32 m_dma_plotter_eosl; @@ -302,9 +335,6 @@ private: u32 m_timer3_count; emu_timer *m_timer[4]; - // dma state - emu_timer *m_dma_timer; - u32 dma_r(address_space &space, offs_t offset, u32 mem_mask, int channel); void dma_w(address_space &space, offs_t offset, u32 data, u32 mem_mask, int channel); @@ -322,6 +352,10 @@ private: bool nmi(int state); bool irq(int state); + + u32 m_eth_remap; + u32 m_eth_map_page; + u32 m_eth_control; }; // device type definition diff --git a/src/mame/machine/interpro_sga.cpp b/src/mame/machine/interpro_sga.cpp index b33dfcce297..3d6b0731acc 100644 --- a/src/mame/machine/interpro_sga.cpp +++ b/src/mame/machine/interpro_sga.cpp @@ -105,13 +105,13 @@ WRITE32_MEMBER(interpro_sga_device::ddtc1_w) // error cycle - bit 0x10 indicates source address error (dspad1) // now expecting 0x5463? if ((m_dspad1 & 0xfffff000) == 0x40000000) - out_berr_func(space, 0x5433, m_dspad1); + out_berr_func(space, 0x5433, m_dspad1); // BINFO_SNAPOK | BINFO_BERR | BINFO_BG_ICAMMU | 0x30 | CT(3) else - out_berr_func(space, 0x5423, m_ddpad1); + out_berr_func(space, 0x5423, m_ddpad1); // BINFO_SNAPOK | BINFO_BERR | BINFO_BG_ICAMMU | 0x20 | CT(3) // 0x5423 = BERR|SNAPOK | BG(ICAMMU)? | CT(23) // 0x5433 = BERR|SNAPOK | BG(ICAMMU)? | CT(33) - // 0x5463 = BERR|SNAPOK | BG(ICAMMU)? | TAG(1) | CT(23) + // 0x5463 = BERR|SNAPOK | BG(ICAMMU)? | TAG(40=1) | CT(23) } #endif } diff --git a/src/mame/machine/namco_c139.cpp b/src/mame/machine/namco_c139.cpp index ac8b9216a28..aa0235012bc 100644 --- a/src/mame/machine/namco_c139.cpp +++ b/src/mame/machine/namco_c139.cpp @@ -78,9 +78,11 @@ void namco_c139_device::device_reset() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *namco_c139_device::memory_space_config(address_spacenum spacenum) const +std::vector> namco_c139_device::memory_space_config() const { - return (spacenum == AS_DATA) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(AS_DATA, &m_space_config) + }; } //************************************************************************** diff --git a/src/mame/machine/namco_c139.h b/src/mame/machine/namco_c139.h index 7eb5f117978..17881be76b1 100644 --- a/src/mame/machine/namco_c139.h +++ b/src/mame/machine/namco_c139.h @@ -46,7 +46,7 @@ protected: // virtual void device_validity_check(validity_checker &valid) const; virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_DATA) const override; + virtual std::vector> memory_space_config() const override; private: const address_space_config m_space_config; uint16_t* m_ram; diff --git a/src/mame/machine/prof80mmu.cpp b/src/mame/machine/prof80mmu.cpp index e46479cd43b..b12b3f7d8c0 100644 --- a/src/mame/machine/prof80mmu.cpp +++ b/src/mame/machine/prof80mmu.cpp @@ -60,12 +60,13 @@ void prof80_mmu_device::device_start() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *prof80_mmu_device::memory_space_config(address_spacenum spacenum) const +std::vector> prof80_mmu_device::memory_space_config() const { - return (spacenum == AS_PROGRAM) ? &m_program_space_config : nullptr; + return std::vector> { + std::make_pair(AS_PROGRAM, &m_program_space_config) + }; } - //------------------------------------------------- // par_w - //------------------------------------------------- diff --git a/src/mame/machine/prof80mmu.h b/src/mame/machine/prof80mmu.h index 0df2a19d553..a14f61a10a5 100644 --- a/src/mame/machine/prof80mmu.h +++ b/src/mame/machine/prof80mmu.h @@ -45,7 +45,7 @@ protected: virtual void device_start() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; DECLARE_READ8_MEMBER( program_r ); DECLARE_WRITE8_MEMBER( program_w ); diff --git a/src/mame/machine/segacrpt_device.cpp b/src/mame/machine/segacrpt_device.cpp index 99e772560d6..5a75586c417 100644 --- a/src/mame/machine/segacrpt_device.cpp +++ b/src/mame/machine/segacrpt_device.cpp @@ -270,7 +270,7 @@ DEFINE_DEVICE_TYPE(SEGA_315_5048, sega_315_5048_device, "sega_315_5048", "Sega 3 DEFINE_DEVICE_TYPE(SEGA_315_5093, sega_315_5093_device, "sega_315_5093", "Sega 315-5093") DEFINE_DEVICE_TYPE(SEGA_315_5099, sega_315_5099_device, "sega_315_5099", "Sega 315-5099") DEFINE_DEVICE_TYPE(SEGA_315_5015, sega_315_5015_device, "sega_315_5015", "Sega 315-5015") -DEFINE_DEVICE_TYPE(SEGA_315_5133, sega_315_5133_device, "sega_315_5133", "Sega 315-5133") // NOT DECRYPTED YET +DEFINE_DEVICE_TYPE(SEGA_315_5133, sega_315_5133_device, "sega_315_5133", "Sega 315-5133") // exactly the same as Sega 315-5048? DEFINE_DEVICE_TYPE(SEGA_315_5061, sega_315_5061_device, "sega_315_5061", "Sega 315-5061") DEFINE_DEVICE_TYPE(SEGA_315_5028, sega_315_5028_device, "sega_315_5028", "Sega 315-5028") DEFINE_DEVICE_TYPE(SEGA_315_5084, sega_315_5084_device, "sega_315_5084", "Sega 315-5084") @@ -700,6 +700,7 @@ void sega_315_5041_device::decrypt() sega_315_5048_device::sega_315_5048_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5048, tag, owner, clock) {} +sega_315_5048_device::sega_315_5048_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, type, tag, owner, clock) {} void sega_315_5048_device::decrypt() { static const uint8_t convtable[32][4] = @@ -847,12 +848,8 @@ void sega_315_5015_device::decrypt() } -sega_315_5133_device::sega_315_5133_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5133, tag, owner, clock) {} -void sega_315_5133_device::decrypt() -{ - // TODO -} - +sega_315_5133_device::sega_315_5133_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : sega_315_5048_device(mconfig, SEGA_315_5133, tag, owner, clock) {} +// == sega_315_5048_device sega_315_5014_device::sega_315_5014_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5014, tag, owner, clock) {} diff --git a/src/mame/machine/segacrpt_device.h b/src/mame/machine/segacrpt_device.h index 653e8efdacb..cadbc8957c4 100644 --- a/src/mame/machine/segacrpt_device.h +++ b/src/mame/machine/segacrpt_device.h @@ -152,6 +152,8 @@ class sega_315_5048_device : public segacrpt_z80_device { public: sega_315_5048_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t); + sega_315_5048_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + protected: virtual void decrypt() override; }; @@ -189,12 +191,10 @@ protected: }; -class sega_315_5133_device : public segacrpt_z80_device +class sega_315_5133_device : public sega_315_5048_device { public: sega_315_5133_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t); -protected: - virtual void decrypt() override; }; class sega_315_5014_device : public segacrpt_z80_device diff --git a/src/mame/machine/segaic16.cpp b/src/mame/machine/segaic16.cpp index fd46cadf6cc..52529c9f93a 100644 --- a/src/mame/machine/segaic16.cpp +++ b/src/mame/machine/segaic16.cpp @@ -548,7 +548,7 @@ void sega_315_5195_mapper_device::device_start() if (m_space == nullptr) throw emu_fatalerror("Unable to find program address space on device '%s'", m_cpu.finder_tag()); - m_decrypted_space = m_cpu->has_space(AS_DECRYPTED_OPCODES) ? &m_cpu->space(AS_DECRYPTED_OPCODES) : nullptr; + m_decrypted_space = m_cpu->has_space(AS_OPCODES) ? &m_cpu->space(AS_OPCODES) : nullptr; // register for saves save_item(NAME(m_regs)); diff --git a/src/mame/machine/seicop.cpp b/src/mame/machine/seicop.cpp index 55dcd642f74..26a01de3726 100644 --- a/src/mame/machine/seicop.cpp +++ b/src/mame/machine/seicop.cpp @@ -233,7 +233,7 @@ WRITE16_MEMBER(seibu_cop_bootleg_device::d104_move_w) } // anything that is read thru ROM range 0xc**** is replacement code, therefore on this HW they are latches. -static ADDRESS_MAP_START( seibucopbl_map, AS_0, 16, seibu_cop_bootleg_device ) +static ADDRESS_MAP_START( seibucopbl_map, 0, 16, seibu_cop_bootleg_device ) AM_RANGE(0x01e, 0x01f) AM_RAM // angle step, PC=0xc0186 AM_RANGE(0x046, 0x049) AM_READWRITE(d104_move_r,d104_move_w) AM_RANGE(0x070, 0x07f) AM_RAM // DMA registers, PC=0xc0034 @@ -254,9 +254,11 @@ seibu_cop_bootleg_device::seibu_cop_bootleg_device(const machine_config &mconfig -const address_space_config *seibu_cop_bootleg_device::memory_space_config(address_spacenum spacenum) const +std::vector> seibu_cop_bootleg_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } //------------------------------------------------- diff --git a/src/mame/machine/seicop.h b/src/mame/machine/seicop.h index 1c25a77e629..e6ccaa94c6b 100644 --- a/src/mame/machine/seicop.h +++ b/src/mame/machine/seicop.h @@ -32,7 +32,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; private: cpu_device *m_host_cpu; /**< reference to the host cpu */ diff --git a/src/mame/machine/st0016.cpp b/src/mame/machine/st0016.cpp index f59b351cd5e..0d20a5112af 100644 --- a/src/mame/machine/st0016.cpp +++ b/src/mame/machine/st0016.cpp @@ -49,6 +49,15 @@ st0016_cpu_device::st0016_cpu_device(const machine_config &mconfig, const char * } +std::vector> st0016_cpu_device::memory_space_config() const +{ + return std::vector> { + std::make_pair(AS_PROGRAM, &m_space_config), + std::make_pair(AS_IO, &m_io_space_config) + }; +} + + //------------------------------------------------- diff --git a/src/mame/machine/st0016.h b/src/mame/machine/st0016.h index 69959335c87..3b177e5cfd8 100644 --- a/src/mame/machine/st0016.h +++ b/src/mame/machine/st0016.h @@ -91,15 +91,8 @@ protected: const address_space_config m_space_config; - const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - switch (spacenum) - { - case AS_IO: return &m_io_space_config; - case AS_PROGRAM: return &m_space_config; - default: return z80_device::memory_space_config(spacenum); - } - }; + virtual std::vector> memory_space_config() const override; + required_device m_screen; private: diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 27ccf9c124f..dde1f0a7dff 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -11137,6 +11137,7 @@ ctornado // 20 1982.05 Tornado ctsttape // ? czeroize // 37 1983.10 Zeroize decocass // +decomult // @source:dectalk.cpp dectalk // 1983 Digital Equipment Corporation @@ -17035,15 +17036,8 @@ maxideal // (c) 1983 American Communications Laboratories @source:kinst.cpp kinst // (c) 1994 Rare -kinst13 // (c) 1994 Rare -kinst14 // (c) 1994 Rare kinst2 // (c) 1995 Rare -kinst210 // (c) 1995 Rare -kinst211 // (c) 1995 Rare -kinst213 // (c) 1995 Rare -kinst2k3 // (c) 1995 Rare -kinst2k4 // (c) 1995 Rare -kinstp // (c) 1994 Rare +kinst2uk // (c) 1995 Rare @source:kissproto.cpp kissp // @@ -17923,11 +17917,12 @@ unitron // 1985 Unitron utrn1024 // 1986 Unitron 1024 @source:macp.cpp -glxplay // +glxplay // glxplay2 // kidnap // mac_1808 // macgalxy // +macjungl // macjungn // nbamac // spcpnthr // @@ -20889,6 +20884,7 @@ dynamcopc // 1998.09 Dynamite Cop (USA) dyndeka2 // 1998.05 Dynamite Deka 2 (Japan) dyndeka2b // 1998.05 Dynamite Deka 2 (Japan) fvipers // 1995.11 Fighting Vipers (Revision D) +fvipersb // 1995.11 Fighting Vipers (Revision B) gunblade // 1996.04 Gunblade N.Y. (Revision A) hotd // 1997.03 The House of the Dead indy500 // 1995.07 Indy 500 (Revision A, Newer) @@ -28246,7 +28242,7 @@ ncv1j // (c) 1995 (Japan) ncv1j2 // (c) 1995 (Japan) ncv2 // (c) 1996 ncv2j // (c) 1996 (Japan) -abcheck // (c) 1996 (Japan) +abcheck // (c) 1996 (Japan) @source:namcops2.cpp bldyr3b // @@ -28863,6 +28859,7 @@ wldkicks // 2000.03 World Kicks (World, WK2 Ver.A) wldkicksj // 2000.03 World Kicks (Japan, WK1 Ver.A) wldkicksu // 2000.03 World Kicks (US, WK3 Ver.A) wldkickspj // 2000.03 World Kicks PCB (Japan, WKC1 Ver.A) +wldkickspw // 2000.03 World Kicks PCB (World, WKC2 Ver.A) wldrider // 2001.05 Wild Riders wrungp // 2001.08 Wave Runner GP wrungpo // 2001.?? Wave Runner GP (USA, Rev A) @@ -32141,8 +32138,9 @@ replica1 // Makerbot Replicator 1 desktop 3d printer @source:retofinv.cpp retofinv // A37 (c) 1985 Taito Corporation -retofinv1 // bootleg -retofinv2 // bootleg +retofinvb // bootleg +retofinvb1 // bootleg +retofinvb2 // bootleg @source:rex6000.cpp ds2 // @@ -32925,6 +32923,9 @@ sderbya // (c) 1996 shinygld // spacewin // +@source:sderby2.cpp +sderby2 // (c) 1985 + @source:sdk80.cpp sdk80 // @@ -33967,7 +33968,7 @@ sg1000m2 // Sega SG-1000 Mark II (Japan) chboxing // (c) 1984 chwrestl // (c) 1985 dokidoki // (c) 1985 -sderby2 // (c) 1985 +sderby2s // (c) 1985 @source:sh4robot.cpp sh4robot // @@ -34313,7 +34314,7 @@ victroad // A6002 (c) 1986 worldwar // A6004 'WW' (c) 1987 @source:snk6502.cpp -fantasy // (c) 1981 SNK +fantasyg // (c) 1981 SNK fantasyj // (c) 1981 SNK fantasyu // (c) 1981 Rock-Ola nibbler // (c) 1982 Rock-ola (version 9) @@ -36591,7 +36592,9 @@ tfupdate // 2004.?? Triforce GDROM Boot Update triforce // 2002.?? Triforce BIOS vs2002ex // 2002.07.30 Virtua Striker 2002 (Export) vs2002j // 2002.10 Virtua Striker 2002 (Japan) -vs4 // 2004.12.02 Virtua Striker 4 (Export) +vs4 // 2004.12.02 Virtua Striker 4 (Export) (GDT-0015) +vs4e // 2004.12.03 Virtua Striker 4 (Export) (GDT-0014) +vs42006b // 2006.05 Virtua Striker 4 Ver.2006 (Japan) (Rev B) vs42006 // 2006.05 Virtua Striker 4 Ver.2006 (Japan) (Rev D) vs42k6ex // 2006.01.31 Virtua Striker 4 Ver.2006 (Export) vs4j // 2004.10 Virtua Striker 4 (Japan) (Rev E) @@ -37031,6 +37034,7 @@ tenthdeg // (c) 1998 Atari Games (prototype) warfa // (c) 1999 Atari Games warfaa // (c) 1999 Atari Games warfab // (c) 1999 Atari Games +warfac // (c) 1999 Atari Games @source:vendetta.cpp esckids // GX975 (c) 1991 (Asia) diff --git a/src/mame/video/abc1600.cpp b/src/mame/video/abc1600.cpp index 2a0d695681e..181a2d2bd2d 100644 --- a/src/mame/video/abc1600.cpp +++ b/src/mame/video/abc1600.cpp @@ -86,7 +86,7 @@ DEVICE_ADDRESS_MAP_START( iowr2_map, 8, abc1600_mover_device ) ADDRESS_MAP_END -static ADDRESS_MAP_START( mover_map, AS_0, 16, abc1600_mover_device ) +static ADDRESS_MAP_START( mover_map, 0, 16, abc1600_mover_device ) AM_RANGE(0x00000, 0x3ffff) AM_RAM ADDRESS_MAP_END @@ -280,9 +280,11 @@ void abc1600_mover_device::device_reset() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *abc1600_mover_device::memory_space_config(address_spacenum spacenum) const +std::vector> abc1600_mover_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/mame/video/abc1600.h b/src/mame/video/abc1600.h index 1936e4e26fb..e2b59049523 100644 --- a/src/mame/video/abc1600.h +++ b/src/mame/video/abc1600.h @@ -54,7 +54,7 @@ protected: virtual void device_add_mconfig(machine_config &config) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; private: inline uint16_t get_drmsk(); diff --git a/src/mame/video/c45.cpp b/src/mame/video/c45.cpp index b2c72aacc8b..5e06cfa802d 100644 --- a/src/mame/video/c45.cpp +++ b/src/mame/video/c45.cpp @@ -245,9 +245,11 @@ void namco_c45_road_device::device_start() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *namco_c45_road_device::memory_space_config(address_spacenum spacenum) const +std::vector> namco_c45_road_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/mame/video/c45.h b/src/mame/video/c45.h index bc9172d1b5e..7559a90ecf3 100644 --- a/src/mame/video/c45.h +++ b/src/mame/video/c45.h @@ -40,7 +40,7 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; private: // constants diff --git a/src/mame/video/cidelsa.cpp b/src/mame/video/cidelsa.cpp index 1bf1203bcbc..e06d7221999 100644 --- a/src/mame/video/cidelsa.cpp +++ b/src/mame/video/cidelsa.cpp @@ -102,12 +102,12 @@ WRITE_LINE_MEMBER( cidelsa_state::prd_w ) /* Page RAM */ -static ADDRESS_MAP_START( cidelsa_page_ram, AS_0, 8, cidelsa_state ) +static ADDRESS_MAP_START( cidelsa_page_ram, 0, 8, cidelsa_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x000, 0x3ff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( draco_page_ram, AS_0, 8, draco_state ) +static ADDRESS_MAP_START( draco_page_ram, 0, 8, draco_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x000, 0x7ff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/video/comx35.cpp b/src/mame/video/comx35.cpp index 68b2c662b78..be553a3f401 100644 --- a/src/mame/video/comx35.cpp +++ b/src/mame/video/comx35.cpp @@ -41,7 +41,7 @@ WRITE8_MEMBER( comx35_state::cdp1869_w ) /* CDP1869 */ -static ADDRESS_MAP_START( cdp1869_page_ram, AS_0, 8, comx35_state ) +static ADDRESS_MAP_START( cdp1869_page_ram, 0, 8, comx35_state ) AM_RANGE(0x000, 0x7ff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/video/deco16ic.cpp b/src/mame/video/deco16ic.cpp index 55daf66fa2a..da8467a9b50 100644 --- a/src/mame/video/deco16ic.cpp +++ b/src/mame/video/deco16ic.cpp @@ -724,11 +724,18 @@ static int deco16_pf_update( if (tilemap_16x16) { + int numrows = rows; + + // cap at tilemap size + if (numrows > tilemap_16x16->height()) + numrows = tilemap_16x16->height(); + tilemap_16x16->set_scroll_cols(1); - tilemap_16x16->set_scroll_rows(rows); + tilemap_16x16->set_scroll_rows(numrows); tilemap_16x16->set_scrolly(0, scrolly); - for (offs = 0; offs < rows; offs++) + + for (offs = 0; offs < numrows; offs++) tilemap_16x16->set_scrollx(offs, scrollx + rowscroll_ptr[offs]); } @@ -740,6 +747,10 @@ static int deco16_pf_update( if (!(tilemapsizes & 4)) numrows = rows >> 1; + // cap at tilemap size + if (numrows > tilemap_8x8->height()) + numrows = tilemap_8x8->height(); + tilemap_8x8->set_scroll_cols(1); tilemap_8x8->set_scroll_rows(numrows); tilemap_8x8->set_scrolly(0, scrolly); diff --git a/src/mame/video/decocass.cpp b/src/mame/video/decocass.cpp index 72c3684bb56..8fca6755838 100644 --- a/src/mame/video/decocass.cpp +++ b/src/mame/video/decocass.cpp @@ -373,8 +373,8 @@ WRITE8_MEMBER(decocass_state::decocass_color_missiles_w ) } /* - * D0 - ?? - * D1 - ?? + * D0 - bg paging + * D1 - bg paging * D2 - ptn 1/2 * D3 - BKG ena * D4 - center L on @@ -742,14 +742,15 @@ uint32_t decocass_state::screen_update_decocass(screen_device &screen, bitmap_in // LS148 @ 2B (DSP-8 board) sets pen priority + // priority 0: foreground - should be drawn last in some cases? what breaks with it here? + // DSP-8 schematics indicate that this should be priority 4, but that breaks Tornado and Pro Tennis and Mission X (priority vs boats) + m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + // priority 1: sprites draw_sprites(bitmap, cliprect, (m_color_center_bot >> 1) & 1, 0, 0, m_fgvideoram, 0x20); // priority 2 & 3: missiles draw_missiles(bitmap, cliprect, 1, 0, m_colorram, 0x20); - // priority 4: foreground - m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - return 0; } diff --git a/src/mame/video/gp9001.cpp b/src/mame/video/gp9001.cpp index a8ccd177b02..fe9ff86ddd4 100644 --- a/src/mame/video/gp9001.cpp +++ b/src/mame/video/gp9001.cpp @@ -228,9 +228,11 @@ gp9001vdp_device::gp9001vdp_device(const machine_config &mconfig, const char *ta { } -const address_space_config *gp9001vdp_device::memory_space_config(address_spacenum spacenum) const +std::vector> gp9001vdp_device::memory_space_config() const { - return (spacenum == 0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } TILE_GET_INFO_MEMBER(gp9001vdp_device::get_top0_tile_info) diff --git a/src/mame/video/gp9001.h b/src/mame/video/gp9001.h index e5b053100e6..97e2cb1bd4e 100644 --- a/src/mame/video/gp9001.h +++ b/src/mame/video/gp9001.h @@ -76,7 +76,7 @@ protected: virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; address_space_config m_space_config; diff --git a/src/mame/video/igs017_igs031.cpp b/src/mame/video/igs017_igs031.cpp index a37b23c5d30..3015eca1cd0 100644 --- a/src/mame/video/igs017_igs031.cpp +++ b/src/mame/video/igs017_igs031.cpp @@ -92,9 +92,11 @@ igs017_igs031_device::igs017_igs031_device(const machine_config &mconfig, const m_revbits = 0; } -const address_space_config *igs017_igs031_device::memory_space_config(address_spacenum spacenum) const +std::vector> igs017_igs031_device::memory_space_config() const { - return (spacenum == 0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } uint16_t igs017_igs031_device::palette_callback_straight(uint16_t bgr) diff --git a/src/mame/video/igs017_igs031.h b/src/mame/video/igs017_igs031.h index 6285b7391d1..1812e819197 100644 --- a/src/mame/video/igs017_igs031.h +++ b/src/mame/video/igs017_igs031.h @@ -73,7 +73,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; DECLARE_GFXDECODE_MEMBER(gfxinfo); diff --git a/src/mame/video/kyocera.cpp b/src/mame/video/kyocera.cpp index 1c5448d41d4..a29e8de1eea 100644 --- a/src/mame/video/kyocera.cpp +++ b/src/mame/video/kyocera.cpp @@ -42,7 +42,7 @@ uint32_t tandy200_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -static ADDRESS_MAP_START( tandy200_lcdc, AS_0, 8, tandy200_state ) +static ADDRESS_MAP_START( tandy200_lcdc, 0, 8, tandy200_state ) ADDRESS_MAP_GLOBAL_MASK(0x1fff) AM_RANGE(0x0000, 0x1fff) AM_RAM ADDRESS_MAP_END @@ -89,6 +89,6 @@ MACHINE_CONFIG_START( tandy200_video ) MCFG_PALETTE_INIT_OWNER(tandy200_state,tandy200) MCFG_DEVICE_ADD(HD61830_TAG, HD61830, XTAL_4_9152MHz/2/2) - MCFG_DEVICE_ADDRESS_MAP(AS_0, tandy200_lcdc) + MCFG_DEVICE_ADDRESS_MAP(0, tandy200_lcdc) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) MACHINE_CONFIG_END diff --git a/src/mame/video/m62.cpp b/src/mame/video/m62.cpp index cc04766f9e5..5c85ba0e08c 100644 --- a/src/mame/video/m62.cpp +++ b/src/mame/video/m62.cpp @@ -105,56 +105,22 @@ static const res_net_info battroad_char_net_info = -static const res_net_decode_info m62_tile_decode_info = +static const res_net_decode_info m62_decode_info = { 1, /* single PROM per color */ 0x000, 0x0ff, /* start/end */ /* R G B */ - { 0x000, 0x200, 0x400 }, /* offsets */ + { 0x000, 0x100, 0x200 }, /* offsets */ { 0, 0, 0 }, /* shifts */ { 0x0f, 0x0f, 0x0f } /* masks */ }; - -static const res_net_decode_info m62_sprite_decode_info = -{ - 1, /* single PROM per color */ - 0x000, 0x0ff, /* start/end */ - /* R G B */ - { 0x100, 0x300, 0x500 }, /* offsets */ - { 0, 0, 0 }, /* shifts */ - { 0x0f, 0x0f, 0x0f } /* masks */ -}; - - -static const res_net_decode_info lotlot_tile_decode_info = -{ - 1, /* single PROM per color */ - 0x000, 0x17f, /* start/end */ - /* R G B */ - { 0x000, 0x300, 0x600 }, /* offsets */ - { 0, 0, 0 }, /* shifts */ - { 0x0f, 0x0f, 0x0f } /* masks */ -}; - - -static const res_net_decode_info lotlot_sprite_decode_info = -{ - 1, /* single PROM per color */ - 0x000, 0x17f, /* start/end */ - /* R G B */ - { 0x180, 0x480, 0x780 }, /* offsets */ - { 0, 0, 0 }, /* shifts */ - { 0x0f, 0x0f, 0x0f } /* masks */ -}; - - static const res_net_decode_info battroad_char_decode_info = { 1, /* single PROM per color */ 0x000, 0x01f, /* start/end */ /* R G B */ - { 0x600, 0x600, 0x600 }, /* offsets */ + { 0x000, 0x000, 0x000 }, /* offsets */ { 6, 3, 0 }, /* shifts */ { 0x03, 0x07, 0x07 } /* masks */ }; @@ -171,108 +137,80 @@ static const res_net_decode_info spelunk2_tile_decode_info = }; -static const res_net_decode_info spelunk2_sprite_decode_info = +void m62_state::m62_amplify_contrast(bool include_fg) { - 1, /* single PROM per color */ - 0x000, 0x0ff, /* start/end */ - /* R G B */ - { 0x400, 0x500, 0x600 }, /* offsets */ - { 0, 0, 0 }, /* shifts */ - { 0x0f, 0x0f, 0x0f } /* masks */ -}; + palette_device* pals[3]; + pals[0] = m_chr_palette; + pals[1] = m_spr_palette; + + if (m_fg_palette && include_fg) + pals[2] = m_fg_palette; + else + pals[2] = 0; -void m62_state::m62_amplify_contrast(palette_t *palette, uint32_t numcolors) -{ // m62 palette is very dark, so amplify default contrast uint32_t i, ymax=1; - if (!numcolors) numcolors = palette->num_colors(); - // find maximum brightness - for (i=0;i < numcolors;i++) + for (int j = 0;j < 3;j++) { - rgb_t rgb = palette->entry_color(i); - uint32_t y = 299 * rgb.r() + 587 * rgb.g() + 114 * rgb.b(); - ymax = std::max(ymax, y); + if (pals[j]) + { + // find maximum brightness + for (i = 0;i < pals[j]->palette()->num_colors();i++) + { + rgb_t rgb = pals[j]->palette()->entry_color(i); + uint32_t y = 299 * rgb.r() + 587 * rgb.g() + 114 * rgb.b(); + ymax = std::max(ymax, y); + } + } } - palette->set_contrast(255000.0/ymax); + for (int j = 0;j < 3;j++) + { + if (pals[j]) + { + pals[j]->palette()->set_contrast(255000.0 / ymax); + } + } } -PALETTE_INIT_MEMBER(m62_state, m62) +PALETTE_INIT_MEMBER(m62_state, m62_spr) { - const uint8_t *color_prom = memregion("proms")->base(); std::vector rgb; - - compute_res_net_all(rgb, color_prom, m62_tile_decode_info, m62_tile_net_info); + compute_res_net_all(rgb, m_sprite_color_proms, m62_decode_info, m62_sprite_net_info); palette.set_pen_colors(0x000, rgb); +} - compute_res_net_all(rgb, color_prom, m62_sprite_decode_info, m62_sprite_net_info); - palette.set_pen_colors(0x100, rgb); +PALETTE_INIT_MEMBER(m62_state, m62_chr) +{ + std::vector rgb; + compute_res_net_all(rgb, m_chr_color_proms, m62_decode_info, m62_tile_net_info); + palette.set_pen_colors(0x000, rgb); +} - m62_amplify_contrast(palette.palette(),0); - - /* we'll need this at run time */ - m_sprite_height_prom = color_prom + 0x600; +PALETTE_INIT_MEMBER(m62_state, m62_lotlot_fg) +{ + std::vector rgb; + compute_res_net_all(rgb, m_fg_color_proms, m62_decode_info, m62_tile_net_info); + palette.set_pen_colors(0x000, rgb); } -PALETTE_INIT_MEMBER(m62_state,lotlot) +PALETTE_INIT_MEMBER(m62_state,m62_battroad_fg) { - const uint8_t *color_prom = memregion("proms")->base(); - std::vector rgb; - - compute_res_net_all(rgb, color_prom, lotlot_tile_decode_info, m62_tile_net_info); - palette.set_pen_colors(0x000, rgb); - - compute_res_net_all(rgb, color_prom, lotlot_sprite_decode_info, m62_sprite_net_info); - palette.set_pen_colors(0x180, rgb); - - m62_amplify_contrast(palette.palette(),0); - - /* we'll need this at run time */ - m_sprite_height_prom = color_prom + 0x900; -} - - -PALETTE_INIT_MEMBER(m62_state,battroad) -{ - const uint8_t *color_prom = memregion("proms")->base(); - std::vector rgb; - - // m62 palette - compute_res_net_all(rgb, color_prom, m62_tile_decode_info, m62_tile_net_info); - palette.set_pen_colors(0x000, rgb); - - compute_res_net_all(rgb, color_prom, m62_sprite_decode_info, m62_sprite_net_info); - palette.set_pen_colors(0x100, rgb); - - m62_amplify_contrast(palette.palette(),0x200); - // custom palette for foreground - compute_res_net_all(rgb, color_prom, battroad_char_decode_info, battroad_char_net_info); - palette.set_pen_colors(0x200, rgb); - - /* we'll need this at run time */ - m_sprite_height_prom = color_prom + 0x620; + std::vector rgb; + compute_res_net_all(rgb, m_fg_color_proms, battroad_char_decode_info, battroad_char_net_info); + palette.set_pen_colors(0x000, rgb); } PALETTE_INIT_MEMBER(m62_state,spelunk2) { - const uint8_t *color_prom = memregion("proms")->base(); std::vector rgb; - - compute_res_net_all(rgb, color_prom, spelunk2_tile_decode_info, m62_tile_net_info); + compute_res_net_all(rgb, m_chr_color_proms, spelunk2_tile_decode_info, m62_tile_net_info); palette.set_pen_colors(0x000, rgb); - - compute_res_net_all(rgb, color_prom, spelunk2_sprite_decode_info, m62_sprite_net_info); - palette.set_pen_colors(0x200, rgb); - - m62_amplify_contrast(palette.palette(),0); - - /* we'll need this at run time */ - m_sprite_height_prom = color_prom + 0x700; } @@ -341,7 +279,7 @@ WRITE8_MEMBER(m62_state::m62_textram_w) } -void m62_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int colormask, int prioritymask, int priority ) +void m62_state::draw_sprites( bitmap_rgb32 &bitmap, const rectangle &cliprect, int colormask, int prioritymask, int priority ) { int offs; @@ -388,7 +326,7 @@ void m62_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, i do { - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, + m_spr_decode->gfx(0)->transpen(bitmap,cliprect, code + i * incr,col, flipx,flipy, sx,sy + 16 * i,0); @@ -401,7 +339,7 @@ void m62_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, i void m62_state::m62_start( tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2 ) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tile_get_info, TILEMAP_SCAN_ROWS, x1, y1, x2, y2); + m_bg_tilemap = &machine().tilemap().create(*m_chr_decode, tile_get_info, TILEMAP_SCAN_ROWS, x1, y1, x2, y2); register_savestate(); @@ -414,7 +352,7 @@ void m62_state::m62_start( tilemap_get_info_delegate tile_get_info, int rows, in void m62_state::m62_textlayer( tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2 ) { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tile_get_info, TILEMAP_SCAN_ROWS, x1, y1, x2, y2); + m_fg_tilemap = &machine().tilemap().create(*m_fg_decode, tile_get_info, TILEMAP_SCAN_ROWS, x1, y1, x2, y2); if (rows != 0) m_fg_tilemap->set_scroll_rows(rows); @@ -455,7 +393,7 @@ VIDEO_START_MEMBER(m62_state,kungfum) m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_kungfum_bg_tile_info),this), 32, 0, 8, 8, 64, 32); } -uint32_t m62_state::screen_update_kungfum(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t m62_state::screen_update_kungfum(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { int i; for (i = 0; i < 6; i++) @@ -499,7 +437,7 @@ void m62_state::video_start() m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */ } -uint32_t m62_state::screen_update_ldrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t m62_state::screen_update_ldrun(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll); m_bg_tilemap->set_scrolly(0, m_m62_background_vscroll); @@ -543,7 +481,7 @@ WRITE8_MEMBER(m62_state::ldrun3_topbottom_mask_w) m_ldrun3_topbottom_mask = data & 1; } -uint32_t m62_state::screen_update_ldrun3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t m62_state::screen_update_ldrun3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { screen_update_ldrun(screen, bitmap, cliprect); @@ -553,11 +491,11 @@ uint32_t m62_state::screen_update_ldrun3(screen_device &screen, bitmap_ind16 &bi my_cliprect.min_y = 0 * 8; my_cliprect.max_y = 1 * 8 - 1; - bitmap.fill(m_palette->black_pen(), my_cliprect); + bitmap.fill(m_chr_palette->black_pen(), my_cliprect); my_cliprect.min_y = 31 * 8; my_cliprect.max_y = 32 * 8 - 1; - bitmap.fill(m_palette->black_pen(), my_cliprect); + bitmap.fill(m_chr_palette->black_pen(), my_cliprect); } return 0; @@ -589,7 +527,7 @@ TILE_GET_INFO_MEMBER(m62_state::get_battroad_fg_tile_info) int color; code = m_m62_textram[tile_index << 1]; color = m_m62_textram[(tile_index << 1) | 1]; - SET_TILE_INFO_MEMBER(2, code | ((color & 0x40) << 3) | ((color & 0x10) << 4), color & 0x0f, 0); + SET_TILE_INFO_MEMBER(0, code | ((color & 0x40) << 3) | ((color & 0x10) << 4), color & 0x0f, 0); } VIDEO_START_MEMBER(m62_state,battroad) @@ -600,7 +538,7 @@ VIDEO_START_MEMBER(m62_state,battroad) m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */ } -uint32_t m62_state::screen_update_battroad(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t m62_state::screen_update_battroad(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll); m_bg_tilemap->set_scrolly(0, m_m62_background_vscroll); @@ -633,7 +571,7 @@ VIDEO_START_MEMBER(m62_state,ldrun4) m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_ldrun4_bg_tile_info),this), 1, 0, 8, 8, 64, 32); } -uint32_t m62_state::screen_update_ldrun4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t m62_state::screen_update_ldrun4(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll - 2); @@ -664,7 +602,7 @@ TILE_GET_INFO_MEMBER(m62_state::get_lotlot_fg_tile_info) int color; code = m_m62_textram[tile_index << 1]; color = m_m62_textram[(tile_index << 1) | 1]; - SET_TILE_INFO_MEMBER(2, code | ((color & 0xc0) << 2), color & 0x1f, 0); + SET_TILE_INFO_MEMBER(0, code | ((color & 0xc0) << 2), color & 0x1f, 0); } VIDEO_START_MEMBER(m62_state,lotlot) @@ -673,7 +611,7 @@ VIDEO_START_MEMBER(m62_state,lotlot) m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_lotlot_fg_tile_info),this), 1, 1, 12, 10, 32, 64); } -uint32_t m62_state::screen_update_lotlot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t m62_state::screen_update_lotlot(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll - 64); m_bg_tilemap->set_scrolly(0, m_m62_background_vscroll + 32); @@ -723,12 +661,12 @@ TILE_GET_INFO_MEMBER(m62_state::get_kidniki_fg_tile_info) int color; code = m_m62_textram[tile_index << 1]; color = m_m62_textram[(tile_index << 1) | 1]; - SET_TILE_INFO_MEMBER(2, code | ( ( color & 0xc0 ) << 2 ), color & 0x1f, 0); + SET_TILE_INFO_MEMBER(0, code | ( ( color & 0xc0 ) << 2 ), color & 0x1f, 0); } VIDEO_START_MEMBER(m62_state,kidniki) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m62_state::get_kidniki_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_chr_decode, tilemap_get_info_delegate(FUNC(m62_state::get_kidniki_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); /* split type 0 is totally transparent in front half */ m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */ @@ -737,7 +675,7 @@ VIDEO_START_MEMBER(m62_state,kidniki) m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_kidniki_fg_tile_info),this), 1, 1, 12, 8, 32, 64); } -uint32_t m62_state::screen_update_kidniki(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t m62_state::screen_update_kidniki(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll); m_fg_tilemap->set_scrollx(0, -64); @@ -778,7 +716,7 @@ TILE_GET_INFO_MEMBER(m62_state::get_spelunkr_fg_tile_info) code = m_m62_textram[tile_index << 1]; color = m_m62_textram[(tile_index << 1) | 1]; if (color & 0xe0) popmessage("fg tilemap %x %x", tile_index, color & 0xe0); - SET_TILE_INFO_MEMBER(2, code | ((color & 0x10) << 4), (color & 0x0f) | (m_spelunkr_palbank << 4), 0); + SET_TILE_INFO_MEMBER(0, code | ((color & 0x10) << 4), (color & 0x0f) | (m_spelunkr_palbank << 4), 0); } VIDEO_START_MEMBER(m62_state,spelunkr) @@ -787,7 +725,7 @@ VIDEO_START_MEMBER(m62_state,spelunkr) m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_spelunkr_fg_tile_info),this), 1, 1, 12, 8, 32, 32); } -uint32_t m62_state::screen_update_spelunkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t m62_state::screen_update_spelunkr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll); m_bg_tilemap->set_scrolly(0, m_m62_background_vscroll + 128); @@ -829,7 +767,7 @@ VIDEO_START_MEMBER(m62_state,spelunk2) m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_spelunkr_fg_tile_info),this), 1, 1, 12, 8, 32, 32); } -uint32_t m62_state::screen_update_spelunk2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t m62_state::screen_update_spelunk2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll - 1); m_bg_tilemap->set_scrolly(0, m_m62_background_vscroll + 128); @@ -863,7 +801,7 @@ TILE_GET_INFO_MEMBER(m62_state::get_youjyudn_fg_tile_info) int color; code = m_m62_textram[tile_index << 1]; color = m_m62_textram[(tile_index << 1) | 1]; - SET_TILE_INFO_MEMBER(2, code | ((color & 0xc0) << 2), (color & 0x0f), 0); + SET_TILE_INFO_MEMBER(0, code | ((color & 0xc0) << 2), (color & 0x0f), 0); } VIDEO_START_MEMBER(m62_state,youjyudn) @@ -874,7 +812,7 @@ VIDEO_START_MEMBER(m62_state,youjyudn) m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */ } -uint32_t m62_state::screen_update_youjyudn(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t m62_state::screen_update_youjyudn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll); m_fg_tilemap->set_scrollx(0, -64); @@ -915,7 +853,7 @@ VIDEO_START_MEMBER(m62_state,horizon) m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */ } -uint32_t m62_state::screen_update_horizon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t m62_state::screen_update_horizon(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { int i; for (i = 0; i < 32; i++) diff --git a/src/mame/video/mikromik.cpp b/src/mame/video/mikromik.cpp index f70ed61b135..e41c8d62537 100644 --- a/src/mame/video/mikromik.cpp +++ b/src/mame/video/mikromik.cpp @@ -59,7 +59,7 @@ I8275_DRAW_CHARACTER_MEMBER( mm1_state::crtc_display_pixels ) // ADDRESS_MAP( mm1_upd7220_map ) //------------------------------------------------- -static ADDRESS_MAP_START( mm1_upd7220_map, AS_0, 16, mm1_state ) +static ADDRESS_MAP_START( mm1_upd7220_map, 0, 16, mm1_state ) ADDRESS_MAP_GLOBAL_MASK(0x7fff) AM_RANGE(0x0000, 0x7fff) AM_RAM AM_SHARE("video_ram") ADDRESS_MAP_END @@ -148,7 +148,7 @@ MACHINE_CONFIG_START( mm1m6_video ) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, XTAL_18_720MHz/8) - MCFG_DEVICE_ADDRESS_MAP(AS_0, mm1_upd7220_map) + MCFG_DEVICE_ADDRESS_MAP(0, mm1_upd7220_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(mm1_state, hgdc_display_pixels) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) MACHINE_CONFIG_END diff --git a/src/mame/video/nick.cpp b/src/mame/video/nick.cpp index 906d715ec6f..f25105b79f7 100644 --- a/src/mame/video/nick.cpp +++ b/src/mame/video/nick.cpp @@ -88,7 +88,7 @@ DEVICE_ADDRESS_MAP_START( vio_map, 8, nick_device ) ADDRESS_MAP_END -static ADDRESS_MAP_START( nick_map, AS_0, 8, nick_device ) +static ADDRESS_MAP_START( nick_map, 0, 8, nick_device ) AM_RANGE(0x0000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -204,9 +204,11 @@ void nick_device::device_timer(emu_timer &timer, device_timer_id id, int param, // any address spaces owned by this device //------------------------------------------------- -const address_space_config *nick_device::memory_space_config(address_spacenum spacenum) const +std::vector> nick_device::memory_space_config() const { - return (spacenum == 0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/mame/video/nick.h b/src/mame/video/nick.h index c769928e911..e56fc6f0a21 100644 --- a/src/mame/video/nick.h +++ b/src/mame/video/nick.h @@ -89,7 +89,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; DECLARE_READ8_MEMBER( vram_r ); DECLARE_WRITE8_MEMBER( vram_w ); diff --git a/src/mame/video/pc8401a.cpp b/src/mame/video/pc8401a.cpp index dfa76bf8308..18560896c99 100644 --- a/src/mame/video/pc8401a.cpp +++ b/src/mame/video/pc8401a.cpp @@ -43,12 +43,12 @@ uint32_t pc8500_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap /* SED1330 Interface */ -static ADDRESS_MAP_START( pc8401a_lcdc, AS_0, 8, pc8401a_state ) +static ADDRESS_MAP_START( pc8401a_lcdc, 0, 8, pc8401a_state ) ADDRESS_MAP_GLOBAL_MASK(0x1fff) AM_RANGE(0x0000, 0x1fff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( pc8500_lcdc, AS_0, 8, pc8401a_state ) +static ADDRESS_MAP_START( pc8500_lcdc, 0, 8, pc8401a_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x3fff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/video/pc_t1t.cpp b/src/mame/video/pc_t1t.cpp index 353e34ada0a..8f4ee89f3db 100644 --- a/src/mame/video/pc_t1t.cpp +++ b/src/mame/video/pc_t1t.cpp @@ -78,7 +78,7 @@ void pcvideo_t1000_device::device_start() m_bank = 0; m_chr_size = 1; m_ra_offset = 256; - m_vram->space(AS_0).install_ram(0, 128*1024 - 1, m_ram->pointer()); + m_vram->space(0).install_ram(0, 128*1024 - 1, m_ram->pointer()); } @@ -94,12 +94,12 @@ void pcvideo_pcjr_device::device_start() if(!strncmp(machine().system().name, "ibmpcjx", 7)) { m_jxkanji = machine().root_device().memregion("kanji")->base(); - m_vram->space(AS_0).install_ram(0, 128*1024 - 1, memshare(":vram")->ptr()); // TODO: fix when this is really understood + m_vram->space(0).install_ram(0, 128*1024 - 1, memshare(":vram")->ptr()); // TODO: fix when this is really understood } else { m_jxkanji = nullptr; - m_vram->space(AS_0).install_ram(0, 128*1024 - 1, m_ram->pointer()); + m_vram->space(0).install_ram(0, 128*1024 - 1, m_ram->pointer()); } } @@ -110,7 +110,7 @@ void pcvideo_pcjr_device::device_start() ***************************************************************************/ -static ADDRESS_MAP_START(vram_map, AS_0, 8, pcvideo_t1000_device) +static ADDRESS_MAP_START(vram_map, 0, 8, pcvideo_t1000_device) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x20000, 0x3ffff) AM_NOP ADDRESS_MAP_END diff --git a/src/mame/video/pcd.cpp b/src/mame/video/pcd.cpp index 85a055e2a42..b0c89f075b6 100644 --- a/src/mame/video/pcd.cpp +++ b/src/mame/video/pcd.cpp @@ -136,7 +136,7 @@ static ADDRESS_MAP_START( pcx_vid_io, AS_IO, 8, pcx_video_device ) AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_WRITE(p1_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( pcx_vram, AS_0, 8, pcx_video_device ) +static ADDRESS_MAP_START( pcx_vram, 0, 8, pcx_video_device ) AM_RANGE(0x0000, 0x07ff) AM_READWRITE(vram_r, vram_w) ADDRESS_MAP_END @@ -162,7 +162,7 @@ MACHINE_CONFIG_MEMBER( pcx_video_device::device_add_mconfig ) MCFG_SCN2674_GFX_CHARACTER_WIDTH(16) MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(pcx_video_device, display_pixels) MCFG_VIDEO_SET_SCREEN("screen") - MCFG_DEVICE_ADDRESS_MAP(AS_0, pcx_vram) + MCFG_DEVICE_ADDRESS_MAP(0, pcx_vram) MACHINE_CONFIG_END diff --git a/src/mame/video/pecom.cpp b/src/mame/video/pecom.cpp index ed9ebe87e20..a5503662384 100644 --- a/src/mame/video/pecom.cpp +++ b/src/mame/video/pecom.cpp @@ -43,7 +43,7 @@ WRITE8_MEMBER(pecom_state::pecom_cdp1869_w) } } -static ADDRESS_MAP_START( cdp1869_page_ram, AS_0, 8, pecom_state ) +static ADDRESS_MAP_START( cdp1869_page_ram, 0, 8, pecom_state ) AM_RANGE(0x000, 0x3ff) AM_MIRROR(0x400) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/video/powervr2.cpp b/src/mame/video/powervr2.cpp index 10e3abd67d3..8f47668e1ed 100644 --- a/src/mame/video/powervr2.cpp +++ b/src/mame/video/powervr2.cpp @@ -940,9 +940,10 @@ WRITE32_MEMBER( powervr2_device::softreset_w ) logerror("%s: Core Pipeline soft reset\n", tag()); #endif if (start_render_received == 1) { - for (auto & elem : grab) - if (elem.busy == 1) - elem.busy = 0; + for (int a=0;a < NUM_BUFFERS;a++) + if (grab[a].busy == 1) + grab[a].busy = 0; + start_render_received = 0; } } @@ -3620,7 +3621,8 @@ void powervr2_device::device_start() { irq_cb.resolve_safe(); - memset(grab, 0, sizeof(grab)); + grab = make_unique_clear(NUM_BUFFERS); + pvr_build_parameterconfig(); computedilated(); diff --git a/src/mame/video/powervr2.h b/src/mame/video/powervr2.h index afdf4b23458..ed800973a0c 100644 --- a/src/mame/video/powervr2.h +++ b/src/mame/video/powervr2.h @@ -108,7 +108,7 @@ public: int renderselect; int listtype_used; int alloc_ctrl_OPB_Mode, alloc_ctrl_PT_OPB, alloc_ctrl_TM_OPB, alloc_ctrl_T_OPB, alloc_ctrl_OM_OPB, alloc_ctrl_O_OPB; - receiveddata grab[NUM_BUFFERS]; + std::unique_ptr grab; int grabsel; int grabsellast; uint32_t paracontrol,paratype,endofstrip,listtype,global_paratype,parameterconfig; diff --git a/src/mame/video/retofinv.cpp b/src/mame/video/retofinv.cpp index 40eac74a158..34997a7409c 100644 --- a/src/mame/video/retofinv.cpp +++ b/src/mame/video/retofinv.cpp @@ -14,23 +14,20 @@ PALETTE_INIT_MEMBER(retofinv_state, retofinv) { - const uint8_t *color_prom = memregion("proms")->base(); + const uint8_t *palette_prom = memregion("palette")->base(); + const uint8_t *clut_prom = memregion("clut")->base(); int i; /* create a lookup table for the palette */ for (i = 0; i < 0x100; i++) { - int r = pal4bit(color_prom[i + 0x000]); - int g = pal4bit(color_prom[i + 0x100]); - int b = pal4bit(color_prom[i + 0x200]); + int r = pal4bit(palette_prom[i + 0x000]); + int g = pal4bit(palette_prom[i + 0x100]); + int b = pal4bit(palette_prom[i + 0x200]); palette.set_indirect_color(i, rgb_t(r, g, b)); } - /* color_prom now points to the beginning of the lookup table */ - color_prom += 0x300; - - /* fg chars (1bpp) */ for (i = 0; i < 0x200; i++) { @@ -44,11 +41,49 @@ PALETTE_INIT_MEMBER(retofinv_state, retofinv) palette.set_pen_indirect(i, ctabentry); } - /* sprites and bg tiles */ + /* sprites and bg tiles clut */ for (i = 0; i < 0x800; i++) { - uint8_t ctabentry = BITSWAP8(color_prom[i],4,5,6,7,3,2,1,0); - palette.set_pen_indirect(i + 0x200, ctabentry); + // descramble the address + int j = BITSWAP16(i,15,14,13,12,11,10,9,8,7,6,5,4,3,0,1,2); + palette.set_pen_indirect(i + 0x200, clut_prom[j]); + } +} + +PALETTE_INIT_MEMBER(retofinv_state, retofinv_bl) +{ + const uint8_t *palette_prom = memregion("palette")->base(); + const uint8_t *clut_prom = memregion("clut")->base(); + int i; + + /* create a lookup table for the palette */ + for (i = 0; i < 0x100; i++) + { + int r = pal4bit(palette_prom[i + 0x000]); + int g = pal4bit(palette_prom[i + 0x100]); + int b = pal4bit(palette_prom[i + 0x200]); + + palette.set_indirect_color(i, rgb_t(r, g, b)); + } + + /* fg chars (1bpp) */ + for (i = 0; i < 0x200; i++) + { + uint8_t ctabentry; + + if (i & 0x01) + ctabentry = i >> 1; + else + ctabentry = 0; + + palette.set_pen_indirect(i, ctabentry); + } + + /* sprites and bg tiles clut */ + for (i = 0; i < 0x800; i++) + { + // descramble the data + palette.set_pen_indirect(i + 0x200, BITSWAP8(clut_prom[i], 4,5,6,7,3,2,1,0)); } } diff --git a/src/mame/video/seibu_crtc.cpp b/src/mame/video/seibu_crtc.cpp index fb2ee4b2321..987dd0450ed 100644 --- a/src/mame/video/seibu_crtc.cpp +++ b/src/mame/video/seibu_crtc.cpp @@ -215,7 +215,7 @@ List of default vregs (title screen): // device type definition DEFINE_DEVICE_TYPE(SEIBU_CRTC, seibu_crtc_device, "seibu_crtc", "Seibu CRT Controller") -static ADDRESS_MAP_START( seibu_crtc_vregs, AS_0, 16, seibu_crtc_device ) +static ADDRESS_MAP_START( seibu_crtc_vregs, 0, 16, seibu_crtc_device ) AM_RANGE(0x0014, 0x0015) AM_WRITE(decrypt_key_w) AM_RANGE(0x001a, 0x001b) AM_READWRITE(reg_1a_r, reg_1a_w) AM_RANGE(0x001c, 0x001d) AM_WRITE(layer_en_w) @@ -322,9 +322,11 @@ void seibu_crtc_device::device_reset() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *seibu_crtc_device::memory_space_config(address_spacenum spacenum) const +std::vector> seibu_crtc_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/mame/video/seibu_crtc.h b/src/mame/video/seibu_crtc.h index fe58abbf1cf..444103d8f8c 100644 --- a/src/mame/video/seibu_crtc.h +++ b/src/mame/video/seibu_crtc.h @@ -71,7 +71,7 @@ protected: virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; private: devcb_write16 m_decrypt_key_cb; diff --git a/src/mame/video/stlforce.cpp b/src/mame/video/stlforce.cpp index 1eada6c3ead..ad52fac5e6a 100644 --- a/src/mame/video/stlforce.cpp +++ b/src/mame/video/stlforce.cpp @@ -1,13 +1,13 @@ // license:BSD-3-Clause // copyright-holders:David Haywood -/* video/stlforce.c - see main driver for other notes */ +/* video/stlforce.cpp - see main driver for other notes */ #include "emu.h" #include "includes/stlforce.h" /* background, appears to be the bottom layer */ -TILE_GET_INFO_MEMBER(stlforce_state::get_stlforce_bg_tile_info) +TILE_GET_INFO_MEMBER(stlforce_state::get_bg_tile_info) { int tileno,colour; @@ -17,7 +17,7 @@ TILE_GET_INFO_MEMBER(stlforce_state::get_stlforce_bg_tile_info) SET_TILE_INFO_MEMBER(0,tileno,colour,0); } -WRITE16_MEMBER(stlforce_state::stlforce_bg_videoram_w) +WRITE16_MEMBER(stlforce_state::bg_videoram_w) { m_bg_videoram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset); @@ -25,7 +25,7 @@ WRITE16_MEMBER(stlforce_state::stlforce_bg_videoram_w) /* middle layer, low */ -TILE_GET_INFO_MEMBER(stlforce_state::get_stlforce_mlow_tile_info) +TILE_GET_INFO_MEMBER(stlforce_state::get_mlow_tile_info) { int tileno,colour; @@ -38,7 +38,7 @@ TILE_GET_INFO_MEMBER(stlforce_state::get_stlforce_mlow_tile_info) SET_TILE_INFO_MEMBER(0,tileno,colour,0); } -WRITE16_MEMBER(stlforce_state::stlforce_mlow_videoram_w) +WRITE16_MEMBER(stlforce_state::mlow_videoram_w) { m_mlow_videoram[offset] = data; m_mlow_tilemap->mark_tile_dirty(offset); @@ -46,7 +46,7 @@ WRITE16_MEMBER(stlforce_state::stlforce_mlow_videoram_w) /* middle layer, high */ -TILE_GET_INFO_MEMBER(stlforce_state::get_stlforce_mhigh_tile_info) +TILE_GET_INFO_MEMBER(stlforce_state::get_mhigh_tile_info) { int tileno,colour; @@ -59,7 +59,7 @@ TILE_GET_INFO_MEMBER(stlforce_state::get_stlforce_mhigh_tile_info) SET_TILE_INFO_MEMBER(0,tileno,colour,0); } -WRITE16_MEMBER(stlforce_state::stlforce_mhigh_videoram_w) +WRITE16_MEMBER(stlforce_state::mhigh_videoram_w) { m_mhigh_videoram[offset] = data; m_mhigh_tilemap->mark_tile_dirty(offset); @@ -67,7 +67,7 @@ WRITE16_MEMBER(stlforce_state::stlforce_mhigh_videoram_w) /* text layer, appears to be the top layer */ -TILE_GET_INFO_MEMBER(stlforce_state::get_stlforce_tx_tile_info) +TILE_GET_INFO_MEMBER(stlforce_state::get_tx_tile_info) { int tileno,colour; @@ -81,7 +81,7 @@ TILE_GET_INFO_MEMBER(stlforce_state::get_stlforce_tx_tile_info) SET_TILE_INFO_MEMBER(1,tileno,colour,0); } -WRITE16_MEMBER(stlforce_state::stlforce_tx_videoram_w) +WRITE16_MEMBER(stlforce_state::tx_videoram_w) { m_tx_videoram[offset] = data; m_tx_tilemap->mark_tile_dirty(offset); @@ -120,7 +120,7 @@ void stlforce_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec } } -uint32_t stlforce_state::screen_update_stlforce(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t stlforce_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int i; @@ -167,17 +167,17 @@ uint32_t stlforce_state::screen_update_stlforce(screen_device &screen, bitmap_in m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0); m_mlow_tilemap->draw(screen, bitmap, cliprect, 0,0); m_mhigh_tilemap->draw(screen, bitmap, cliprect, 0,0); - draw_sprites(bitmap,cliprect); + draw_sprites(bitmap, cliprect); m_tx_tilemap->draw(screen, bitmap, cliprect, 0,0); return 0; } void stlforce_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stlforce_state::get_stlforce_bg_tile_info),this), TILEMAP_SCAN_COLS, 16,16,64,16); - m_mlow_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stlforce_state::get_stlforce_mlow_tile_info),this), TILEMAP_SCAN_COLS, 16,16,64,16); - m_mhigh_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stlforce_state::get_stlforce_mhigh_tile_info),this),TILEMAP_SCAN_COLS, 16,16,64,16); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stlforce_state::get_stlforce_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8,64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stlforce_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16,16,64,16); + m_mlow_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stlforce_state::get_mlow_tile_info),this), TILEMAP_SCAN_COLS, 16,16,64,16); + m_mhigh_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stlforce_state::get_mhigh_tile_info),this),TILEMAP_SCAN_COLS, 16,16,64,16); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stlforce_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8,64,32); m_mlow_tilemap->set_transparent_pen(0); m_mhigh_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/tmc600.cpp b/src/mame/video/tmc600.cpp index a8d9e5f590c..d717b62da5c 100644 --- a/src/mame/video/tmc600.cpp +++ b/src/mame/video/tmc600.cpp @@ -72,7 +72,7 @@ WRITE8_MEMBER( tmc600_state::page_ram_w ) m_color_ram[offset] = m_vismac_color_latch; } -static ADDRESS_MAP_START( cdp1869_page_ram, AS_0, 8, tmc600_state ) +static ADDRESS_MAP_START( cdp1869_page_ram, 0, 8, tmc600_state ) AM_RANGE(0x000, 0x3ff) AM_MIRROR(0x400) AM_RAM AM_SHARE("page_ram") AM_WRITE(page_ram_w) ADDRESS_MAP_END diff --git a/src/mame/video/ygv608.cpp b/src/mame/video/ygv608.cpp index 515795923aa..8886531f1ea 100644 --- a/src/mame/video/ygv608.cpp +++ b/src/mame/video/ygv608.cpp @@ -378,6 +378,7 @@ static ADDRESS_MAP_START( regs_map, AS_IO, 8, ygv608_device ) // screen control AM_RANGE(10, 10) AM_READWRITE(screen_ctrl_mosaic_sprite_r, screen_ctrl_mosaic_sprite_w) + AM_RANGE(13, 13) AM_WRITE(border_color_w) // interrupt section AM_RANGE(14, 14) AM_READWRITE(irq_mask_r,irq_mask_w) AM_RANGE(15, 16) AM_READWRITE(irq_ctrl_r,irq_ctrl_w) @@ -496,9 +497,11 @@ void ygv608_device::device_start() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *ygv608_device::memory_space_config(address_spacenum spacenum) const +std::vector> ygv608_device::memory_space_config() const { - return (spacenum == AS_IO) ? &m_io_space_config : nullptr; + return std::vector> { + std::make_pair(AS_IO, &m_io_space_config) + }; } inline void ygv608_device::vblank_irq_check() @@ -1177,7 +1180,8 @@ uint32_t ygv608_device::update_screen(screen_device &screen, bitmap_ind16 &bitma // clip to the current bitmap finalclip.set(0, screen.width() - 1, 0, screen.height() - 1); finalclip &= cliprect; - bitmap.fill(0, visarea ); + // TODO: black/transparent pen if CBDR is 1 and border color is 0 + bitmap.fill(m_border_color, visarea ); // punt if not initialized if (m_page_x == 0 || m_page_y == 0) @@ -1850,6 +1854,7 @@ READ8_MEMBER( ygv608_device::screen_ctrl_mosaic_sprite_r ) | (m_mosaic_bplane << 2) | (m_mosaic_aplane & 3); } +// R#10W - screen control: mosaic & sprite WRITE8_MEMBER( ygv608_device::screen_ctrl_mosaic_sprite_w ) { // check mosaic @@ -1862,7 +1867,13 @@ WRITE8_MEMBER( ygv608_device::screen_ctrl_mosaic_sprite_w ) m_sprite_aux_mode = BIT(data, 5); m_sprite_aux_reg = (data & 0xc0) >> 6; } - + +// R#13W - border color +WRITE8_MEMBER( ygv608_device::border_color_w ) +{ + m_border_color = data; +} + // R#14R interrupt mask control READ8_MEMBER( ygv608_device::irq_mask_r ) { diff --git a/src/mame/video/ygv608.h b/src/mame/video/ygv608.h index 30fe014093d..3850896f216 100644 --- a/src/mame/video/ygv608.h +++ b/src/mame/video/ygv608.h @@ -68,7 +68,8 @@ public: DECLARE_WRITE8_MEMBER(roz_ay_w); DECLARE_WRITE8_MEMBER(roz_dy_w); DECLARE_WRITE8_MEMBER(roz_dyx_w); - + DECLARE_WRITE8_MEMBER(border_color_w); + // TODO: is this even a real connection? void set_gfxbank(uint8_t gfxbank); @@ -88,7 +89,7 @@ protected: // device-level overrides virtual void device_start() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_IO) const override; + virtual std::vector> memory_space_config() const override; void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; address_space *m_iospace; @@ -285,6 +286,7 @@ private: bool m_sprite_disable; /**< SPRD: disables the sprite plane display */ bool m_sprite_aux_mode; /**< SPAS: if 0 aux bits selects size, if 1 selects flipping */ uint8_t m_sprite_aux_reg; /**< SPA: auxiliary bits of sprite attribute table */ + uint8_t m_border_color; /**< BDC: border color */ // screen section devcb_write_line m_vblank_handler; diff --git a/src/mame/video/zx8301.cpp b/src/mame/video/zx8301.cpp index 6e2184f9f42..ac120d8dc6d 100644 --- a/src/mame/video/zx8301.cpp +++ b/src/mame/video/zx8301.cpp @@ -56,7 +56,7 @@ DEFINE_DEVICE_TYPE(ZX8301, zx8301_device, "zx8301", "Sinclair ZX8301") // default address map -static ADDRESS_MAP_START( zx8301, AS_0, 8, zx8301_device ) +static ADDRESS_MAP_START( zx8301, 0, 8, zx8301_device ) AM_RANGE(0x00000, 0x1ffff) AM_RAM ADDRESS_MAP_END @@ -66,9 +66,11 @@ ADDRESS_MAP_END // any address spaces owned by this device //------------------------------------------------- -const address_space_config *zx8301_device::memory_space_config(address_spacenum spacenum) const +std::vector> zx8301_device::memory_space_config() const { - return (spacenum == AS_0) ? &m_space_config : nullptr; + return std::vector> { + std::make_pair(0, &m_space_config) + }; } diff --git a/src/mame/video/zx8301.h b/src/mame/video/zx8301.h index d2729eed02e..fa777c8142f 100644 --- a/src/mame/video/zx8301.h +++ b/src/mame/video/zx8301.h @@ -78,7 +78,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_config_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual std::vector> memory_space_config() const override; // address space configurations const address_space_config m_space_config; diff --git a/src/osd/modules/debugger/osx/deviceinfoviewer.mm b/src/osd/modules/debugger/osx/deviceinfoviewer.mm index 8a4a52a4d45..18b5835944b 100644 --- a/src/osd/modules/debugger/osx/deviceinfoviewer.mm +++ b/src/osd/modules/debugger/osx/deviceinfoviewer.mm @@ -185,7 +185,7 @@ if (device->interface(memory)) { NSBox *memoryBox = nil; - for (address_spacenum i = AS_0; i < ADDRESS_SPACES; i++) + for (int i = 0; i < memory->max_space_count(); i++) { if (memory->has_space(i)) { diff --git a/src/osd/modules/debugger/qt/deviceinformationwindow.cpp b/src/osd/modules/debugger/qt/deviceinformationwindow.cpp index 14ea8b04296..2f549664152 100644 --- a/src/osd/modules/debugger/qt/deviceinformationwindow.cpp +++ b/src/osd/modules/debugger/qt/deviceinformationwindow.cpp @@ -70,7 +70,7 @@ void DeviceInformationWindow::fill_device_information() f->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); QVBoxLayout *vb = new QVBoxLayout(f); bool first = true; - for(address_spacenum i=AS_0; imax_space_count(); i++) if(d_memory->has_space(i)) { QFrame *ff = new QFrame(f); QHBoxLayout *hb = new QHBoxLayout(ff); diff --git a/src/osd/modules/output/network.cpp b/src/osd/modules/output/network.cpp index 63ab96e499d..e350cfc99dd 100644 --- a/src/osd/modules/output/network.cpp +++ b/src/osd/modules/output/network.cpp @@ -10,6 +10,9 @@ #include "output_module.h" #include "modules/osdmodule.h" +#include "modules/lib/osdobj_common.h" + +#include "emu.h" #include #include @@ -36,9 +39,13 @@ public: { } - void start() + void start(running_machine &machine) { + m_machine = &machine; m_clients->insert(shared_from_this()); + // now send "hello = 1" to the newly connected client + std::strncpy(m_data, "hello = 1\1", max_length); + do_write(10); do_read(); } @@ -49,6 +56,47 @@ private: do_write(msg.size()); } + void handle_message(char *msg) + { + char verb[1024]; + int value; + + //printf("handle_message: got [%s]\n", msg); + + std::uint32_t ch = 0; + while (msg[ch] != ' ') + { + ch++; + } + msg[ch] = '\0'; + ch++; + std::strncpy(verb, msg, sizeof(verb)-1); + //printf("verb = [%s], ", verb); + + while (msg[ch] != ' ') + { + ch++; + } + + ch++; + value = atoi(&msg[ch]); + //printf("value = %d\n", value); + + if (!std::strcmp(verb, "send_id")) + { + if (value == 0) + { + std::snprintf(m_data, max_length, "req_id = %s\1", machine().system().name); + } + else + { + std::snprintf(m_data, max_length, "req_id = %s\1", machine().output().id_to_name(value)); + } + + do_write(std::strlen(m_data)); + } + } + void do_read() { auto self(shared_from_this()); @@ -57,6 +105,11 @@ private: { if (!ec) { + if (length > 0) + { + m_input_m_data[length] = '\0'; + handle_message(m_input_m_data); + } do_read(); } else @@ -69,7 +122,7 @@ private: void do_write(std::size_t length) { auto self(shared_from_this()); - asio::async_write(m_socket, asio::buffer(m_data, length), + asio::async_write(m_socket, asio::buffer(m_data, length), [this, self](std::error_code ec, std::size_t /*length*/) { if (ec) @@ -79,19 +132,23 @@ private: }); } + running_machine &machine() const { return *m_machine; } + asio::ip::tcp::socket m_socket; enum { max_length = 1024 }; char m_data[max_length]; char m_input_m_data[max_length]; client_set *m_clients; + running_machine *m_machine; }; class output_network_server { public: - output_network_server(asio::io_context& io_context, short port) : + output_network_server(asio::io_context& io_context, short port, running_machine &machine) : m_acceptor(io_context, asio::ip::tcp::endpoint(asio::ip::tcp::v4(), port)) { + m_machine = &machine; do_accept(); } @@ -109,15 +166,18 @@ private: { if (!ec) { - std::make_shared(std::move(socket),&m_clients)->start(); + std::make_shared(std::move(socket),&m_clients)->start(machine()); } do_accept(); }); } + running_machine &machine() const { return *m_machine; } + asio::ip::tcp::acceptor m_acceptor; client_set m_clients; + running_machine *m_machine; }; @@ -143,6 +203,8 @@ public: virtual void exit() override { + // tell clients MAME is shutting down + notify("mamerun", 0); m_io_context->stop(); m_working_thread.join(); delete m_server; @@ -154,7 +216,7 @@ public: virtual void notify(const char *outname, int32_t value) override { static char buf[256]; - sprintf(buf, "%s = %d\n", ((outname==nullptr) ? "none" : outname), value); + sprintf(buf, "%s = %d\1", ((outname==nullptr) ? "none" : outname), value); m_server->deliver_to_all(buf); } @@ -162,7 +224,7 @@ public: void process_output() { m_io_context = new asio::io_context(); - m_server = new output_network_server(*m_io_context, 8000); + m_server = new output_network_server(*m_io_context, 8000, machine()); m_io_context->run(); }