summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/mappy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/mappy.cpp')
-rw-r--r--src/mame/drivers/mappy.cpp2102
1 files changed, 0 insertions, 2102 deletions
diff --git a/src/mame/drivers/mappy.cpp b/src/mame/drivers/mappy.cpp
deleted file mode 100644
index 1847673a668..00000000000
--- a/src/mame/drivers/mappy.cpp
+++ /dev/null
@@ -1,2102 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Nicola Salmoria
-/***************************************************************************
-
-Several Namco games from 1982-1985
-
-driver by Nicola Salmoria
-based on previous work by Aaron Giles, Manuel Abadia
-
-The games supported by this driver all run on similar hardware.
-They can be divided in three "families":
-1) Super Pacman, the first version of the board. Pac & Pal and Grobda run on
- seemingly identical hardware.
- The hardware consists of two 6809, and several Namco custom ICs that provide
- a static tilemap and 2bpp sprites.
- Grobda is the only Namco game of this era that has speech (just a short
- sample). At this time, it is still unknown how speech samples are transmitted
- to the DAC (almost certainly the same resistor network used by the 15XX).
-2) Phozon. This game runs on an unique board: the large number of sprites on
- screen at the same time required a 3rd 6809 to help with the calculations.
- The sprite hardware is also different from Super Pacman, featuring 8x8 sprites.
- Despite the hardware differences, the memory map is almost identical to
- Super Pacman, and that's why it's included in this driver.
- There is no information about the custom ICs used by this board. The video
- section is probably more similar to Gaplus than to Supr Pacman: the sprite
- generator might be a 21XX (though Gaplus doesn't use 8x8 sprites), and the
- 00XX and 04XX address generators are probably replaced by the single CUS20
- (which also handles the flip screen flag).
-3) Mappy runs on a revised design of the Super Pacman board, where the 00XX
- custom is replaced by a 17XX, which provides a scrolling tilemap. The larger
- tilemap requires more RAM, so the memory map is slightly different. Also,
- sprites are 4bpp instead of 2bpp, so the final stage of video generation is
- a little different as well, though the custom ICs are still the same.
- Dig Dig II and Motos are almost the same, apart from larger ROMs.
- The Tower of Druaga also has 4x the amount of sprite color combinations so
- it's the most different of the four.
-
-
-Custom ICs (Super Pacman and Mappy):
------------------------------------
-CPU board:
-07XX clock divider
-15XX sound control
-16XX I/O control
-5xXX(x2) I/O
-99XX DAC with volume control (only Mappy, Super Pacman uses LS273, CD4066
- and binary-weighted resistors R34-37 and R22-25)
-
-Video board:
-00XX tilemap address generator with scrolling capability (only Super Pacman)
-04XX sprite address generator
-07XX clock divider
-11XX gfx data shifter and mixer (16-bit in, 4-bit out) [1]
-12XX sprite generator
-17XX tilemap address generator with scrolling capability (only Mappy)
-
-[1] Used differently: in Super Pacman it merges the 2bpp tilemap with the 2bpp
-sprites; in Mappy it handles the 4bpp sprites, while the tilemap is handled by
-standard LS components.
-
-The I/O interface chips vary from game to game (see machine/namcoio.c)
-
-
-Super Pac-Man memory map
-------------------------
-Pac & Pal is the same. Grobda appears to have a DAC hacked in.
-Note: Part of the address decoding is done by PALs (SPC-5 and SPC-6) so the
-tables are inferred by program behaviour.
-
-MAIN CPU:
-
-Address Dir Data Name Description
----------------- --- -------- --------- -----------------------
-00000xxxxxxxxxxx R/W xxxxxxxx RAM 2E tilemap RAM
-00001xxxxxxxxxxx R/W xxxxxxxx RAM 2H work RAM
-000011111xxxxxxx R/W xxxxxxxx portion holding sprite registers (sprite number & color)
-00010xxxxxxxxxxx R/W xxxxxxxx RAM 2K work RAM
-000101111xxxxxxx R/W xxxxxxxx portion holding sprite registers (x, y)
-00011xxxxxxxxxxx R/W xxxxxxxx RAM 2J work RAM
-000111111xxxxxxx R/W xxxxxxxx portion holding sprite registers (x msb, flip, size)
-00100----------- R/W -------x FLIP screen flip (reading this address sets the bit, done by pacnpal)
-01000-xxxxxxxxxx R/W xxxxxxxx SOUND RAM (shared with sound CPU)
-01000-0000xxxxxx R/W xxxxxxxx portion holding the sound registers
-01001-----xxxxxx R/W ----xxxx FBIT I/O chips [1]
-01010-------000x r/W -------- INT ON 2 sound CPU irq enable (data is in A0)
-01010-------001x r/W -------- INT ON main CPU irq enable (data is in A0)
-01010-------010x W -------- n.c.
-01010-------011x r/W -------- SOUND ON sound enable (data is in A0)
-01010-------100x r/W -------- 4 RESET reset I/O chips (data is in A0)
-01010-------101x r/W -------- SUB RESET reset sound CPU (data is in A0)
-01010-------110x W -------- n.c.
-01010-------111x W -------- n.c.
-10000----------- R/W -------- WDR Watch Dog Reset
-101xxxxxxxxxxxxx R xxxxxxxx ROM 1D program ROM
-110xxxxxxxxxxxxx R xxxxxxxx ROM 1C program ROM
-111xxxxxxxxxxxxx R xxxxxxxx ROM 1B program ROM
-
-[1] only half of that space is actually used, because only 2 of the possible 4 I/O chips are present
-
-
-SOUND CPU:
-
-Address Dir Data Name Description
----------------- --- -------- --------- -----------------------
-000---xxxxxxxxxx R/W xxxxxxxx RAM 3K/3L work RAM (shared with main CPU)
-000---0000xxxxxx R/W xxxxxxxx portion holding the sound registers
-001---------000x W -------- INT ON 2 sound CPU irq enable (data is in A0)
-001---------001x W -------- INT ON main CPU irq enable (data is in A0)
-001---------010x W -------- n.c.
-001---------011x W -------- SOUND ON sound enable (data is in A0)
-001---------100x W -------- 4 RESET reset 58XX I/O chips (data is in A0)
-001---------101x W -------- SUB RESET reset sound CPU (data is in A0)
-001---------110x W -------- n.c.
-001---------111x W -------- n.c.
-110-xxxxxxxxxxxx R xxxxxxxx ROM 1J program ROM (optional, not used by any game)
-111xxxxxxxxxxxxx R xxxxxxxx ROM 1K program ROM (space for a 2764, but some games use a 2732)
-
-
-
-Mappy memory map
-----------------
-The Tower of Druaga, Dig Dug 2, Motos are the same, with minor differences.
-The main difference with Super Pac-Man is the increased video RAM, needed to
-implement a scrolling tilemap.
-
-Note: Part of the address decoding is done by PALs (SPC-5 and SPC-6, the same
-as Super Pac-Man) so the tables are inferred by program behaviour.
-
-MAIN CPU:
-
-Address Dir Data Name Description
----------------- --- -------- --------- -----------------------
-00000xxxxxxxxxxx R/W xxxxxxxx RAM 2H tilemap RAM (tile number)
-00001xxxxxxxxxxx R/W xxxxxxxx RAM 2J tilemap RAM (tile color)
-00010xxxxxxxxxxx R/W xxxxxxxx RAM 2N work RAM
-000101111xxxxxxx R/W xxxxxxxx portion holding sprite registers (sprite number & color)
-00011xxxxxxxxxxx R/W xxxxxxxx RAM 2L work RAM
-000111111xxxxxxx R/W xxxxxxxx portion holding sprite registers (x, y)
-00100xxxxxxxxxxx R/W xxxxxxxx RAM 2M work RAM
-001001111xxxxxxx R/W xxxxxxxx portion holding sprite registers (x msb, flip, size)
-00111xxxxxxxx--- W -------- POSIV tilemap scroll (data is in A3-A10)
-01000-xxxxxxxxxx R/W xxxxxxxx SOUND RAM (shared with sound CPU)
-01000-0000xxxxxx R/W xxxxxxxx portion holding the sound registers
-01001-----xxxxxx R/W ----xxxx FBIT I/O chips [1]
-01010-------000x W -------- INT ON 2 sound CPU irq enable (data is in A0)
-01010-------001x W -------- INT ON main CPU irq enable (data is in A0)
-01010-------010x W -------- FLIP screen flip (data is in A0)
-01010-------011x W -------- SOUND ON sound enable (to 99XX custom) (data is in A0)
-01010-------100x W -------- 4 RESET reset I/O chips (data is in A0)
-01010-------101x W -------- SUB RESET reset sound CPU (data is in A0)
-01010-------110x W -------- n.c.
-01010-------111x W -------- n.c.
-10000----------- R/W -------- WDR Watch Dog Reset [3]
-101xxxxxxxxxxxxx R xxxxxxxx ROM 1D program ROM [2]
-110xxxxxxxxxxxxx R xxxxxxxx ROM 1C program ROM [2]
-111xxxxxxxxxxxxx R xxxxxxxx ROM 1B program ROM [2]
-
-[1] only half of that space is actually used, because only 2 of the possible 4 I/O chips are present
-[2] The Tower of Druaga, Dig Dug 2, Motos have 2 128k ROMs instead of 3 64k:
-10xxxxxxxxxxxxxx R xxxxxxxx ROM 1D program ROM
-11xxxxxxxxxxxxxx R xxxxxxxx ROM 1B program ROM
-[3] Overlaps the ROM region. Dig Dug 2 reads it.
-
-SOUND CPU:
-
-Address Dir Data Name Description
----------------- --- -------- --------- -----------------------
-000---xxxxxxxxxx R/W xxxxxxxx RAM 3K/3L work RAM (shared with main CPU)
-000---0000xxxxxx R/W xxxxxxxx portion holding the sound registers
-001---------000x W -------- INT ON 2 sound CPU irq enable (data is in A0)
-001---------001x W -------- INT ON main CPU irq enable (data is in A0)
-001---------010x W -------- FLIP screen flip (data is in A0)
-001---------011x W -------- SOUND ON sound enable (to 99XX custom) (data is in A0)
-001---------100x W -------- 4 RESET reset 58XX I/O chips (data is in A0)
-001---------101x W -------- SUB RESET reset sound CPU (data is in A0)
-001---------110x W -------- n.c.
-001---------111x W -------- n.c.
-110-xxxxxxxxxxxx R xxxxxxxx ROM 1J program ROM (optional, not used by any game)
-111xxxxxxxxxxxxx R xxxxxxxx ROM 1K program ROM
-
-
-----------------------------------------------------------------------------
-
-
-Grobda
-Namco, 1984
-
-PCB Layout
-----------
-
-Top Board
-
-PCB Number: 22109611 (22109631)
- |---------------------------------|
- | 0773 1502 |
- | PAL GR1-3.3M |
- | 8148 VOL |
- | 68A09EP 8148 |
- | |
- | GR1-4.1K |
- | --|
- | |
- | --|
-|--| |
-| | 2|
-| | 2|
-| | |
-| | W|
-| | 5806 A|
-| | Y|
-| | DSWB |
-|--| |
- |RESET_SW |
- | GR2-3.1D --|
- | |
- | GR2-2.1C --|
- | 5604 |
- | GR2-1.1B |
- | PAL 1603 DSWA |
- | 68A09EP |
- | 18.432MHz |
- |---------------------------------|
-
-Notes:
- Namco Customs:
- 0773 - Clock Divider/Sync Generator
- 1502 - Sound Generator
- 5806 - I/O interface
- 5604 - I/O interface
- 1603 - I/O control
-
- 6809 clocks: 1.536MHz (both)
- VSync: 60.606060Hz
- 22 Way Connector pinout same as Galaga, Pacland, Baraduke, Dragon Buster etc.
- 8148 - SRAM 1k x4
- GR1-3.3M - PROM type 82S129
- All ROMs - EPROM type 2764
-
-
-Bottom Board
-
-PCB Number: 22109612 (22109632)
- |---------------------------------|
- | 8148 |
- | |
- | 8148 |
- | |
- | GR1-4.3L |
- | |
- | 2016 |
- | |
- | |
-|--| 2016 1204 |
-| | |
-| | |
-| | 2016 |
-| | |
-| | |
-| | |
-| | 0433 GR1-5.3F |
-|--| |
- | |
- | 2016 GR1-6.3E |
- | GR1-5.4E |
- | |
- | 0042 1108 PAL |
- | |
- | GR1-6.4C |
- | 0763 GR1-7.3C |
- | |
- |---------------------------------|
-
-Notes:
- Namco Customs:
- 1204 - Motion Object Position
- 0433 - Motion Object Controller
- 0042 - Video Ram Addresser
- 0763 - Clock Divider/Sync Generator
- 1108 - Datashift Playfield Register
-
- 8148 - SRAM 1k x4
- 2016 - SRAM 2x x8
-
- GR1-4.3L \ PROMs type 82S129
- GR1-5.4E /
- GR1-6.4C - PROM type 82S123
-
- GR1-5.3F \
- GR1-6.3E / EPROM type 2764
-
- GR1-7.3C - EPROM type 2732
-
-----------------------------------------------------------------------------
-
-Pacman & Chomp Chomp
-Namco, 1983
-
-This game runs on the same PCB as Grobda. Some custom chips have
-different numbers but probably have the same purpose.
-
-PCB Layout
-----------
-
-Top Board
-
-PCB Number: 22109611 (22109631)
- |---------------------------------|
- | 0773 1500 |
- | PAL PAP1-3.3M |
- | 8148 VOL |
- | 6809 8148 |
- | |
- | PAP1_4.1K |
- | --|
- | |
- | --|
-|--| |
-| | 2|
-| | 2|
-| | |
-| | W|
-| | 5601 A|
-| | Y|
-| | DSWB |
-|--| |
- |RESET_SW |
- | PAP3_3.1D --|
- | |
- | PAP3_2.1C --|
- | 5902 |
- | PAP3-1.1B |
- | PAL 1600 DSWA |
- | 6809 |
- | 18.432MHz |
- |---------------------------------|
-
-Notes:
- Namco Customs:
- 0773 - Clock Divider/Sync Generator
- 1500 - Sound Generator
- 5902 - ? (protection?)
- 5601 - ? (protection?)
- 1600 - ?
-
- 6809 clocks: 1.536MHz (both)
- VSync: 60.606060Hz
- 22 Way Connector pinout same as Galaga, Pacland, Baraduke, Dragon Buster etc.
- 8148 - SRAM 1k x4
- PAP1-3.3M - PROM type 82S129
- All ROMs - EPROM type 2764
-
-
-Bottom Board
-
-PCB Number: 22109612 (22109632)
- |---------------------------------|
- | 8148 |
- | |
- | 8148 |
- | |
- | PAP2-4.3L |
- | |
- | 2016 |
- | |
- | |
-|--| 2016 1200 |
-| | |
-| | |
-| | 2016 |
-| | |
-| | |
-| | |
-| | 0433 PAP2_5.3F |
-|--| |
- | 3E |
- | 2016 |
- | PAP2-5.4E |
- | |
- | 0044 1100 PAL |
- | |
- | PAP2-6.4C |
- | 0773 PAP2_6.3C |
- | |
- |---------------------------------|
-
-Notes:
- Namco Customs:
- 1200 - Motion Object Position
- 0433 - Motion Object Controller
- 0044 - Video Ram Addresser
- 0773 - Clock Divider/Sync Generator
- 1100 - Datashift Playfield Register
-
- 8148 - SRAM 1k x4
- 2016 - SRAM 2x x8
-
- PAP2-4.3L \ PROMs type 82S129
- PAP2-5.4E /
- PAP2-6.4C - PROM type 82S123
-
- PAP2_5.3F - EPROM type 2764
- PAP2_6.3C - EPROM type 2732
- 3E - Empty socket
-
-
-----------------------------------------------------------------------------
-
-
-Easter eggs:
------------
-Abbreviations:
-U, D, L, R: player 1 joystick directions
-B1, B2: player 1 buttons
-S1, S2: start buttons
-S: service switch (the one that adds a credit, not the one to enter service mode)
-
-- Super Pac-Man
- - enter service mode
- - keep B1 pressed and enter the following sequence:
- R D D L L L L U
- (c) (p) 1982 NAMCO LTD. will be added at the bottom of the screen.
-
-- Pac & Pal
- - enter service mode
- - enter the following sequence:
- L 9xR 5xD 6xU
- (c) (p) 1982 NAMCO LTD. will appear on the screen.
-
-- Phozon
- - enter service mode
- - enter the following sequence:
- U U U U R D L L
- (c) (p) 1983 NAMCO LTD. will appear on the screen.
-
-- Mappy
- - enter service mode
- - keep L pressed to make the screen scroll left until the grid covers the whole screen
- - press S 3 times
- - keep B1 pressed and enter the following sequence:
- 4xL 6xS1 3xL S2
- (c) 1983 NAMCO will appear on the screen.
-
-- Mappy
- - play the game and reach the third bonus round (the one after round 10)
- - press B1 3 times, S1 3 times, S2 3 times
- - after the score of the bonus round is shown, this text will be added at
- the bottom of the screen:
- (c) 1983 NAMCO
- ALL RIGHTS RESERVED
-
-- The Tower of Druaga
- - enter service mode
- - select sound 19
- - press S to display the grid
- - enter the following sequence:
- 4xU D 2xR 6xL S2
- (c) NAMCO LTD. 1984 will appear on the screen.
-
-- Dig Dug II (New Ver. only, Old Ver. doesn't have it)
- - enter service mode
- - select sound 1B
- - press S to display the grid
- - enter the following sequence:
- D D R L L D D L L L U U
- - press S again
- Some music will play and
- DIGDUGII
- (c) 1985
- NAMCO LTD.
- will be slowly drawn on the screen.
-
-- Grobda
- - enter service mode
- - set coin A to 1 Coin / 1 Credit
- - set coin B to 1 Coin / 4 Credits
- - set Freeze to On
- - (the above means DSW A = 11101001)
- - set Lives to 1
- - set Difficulty to Rank C
- - set Demo Sounds to Off
- - set Level Select to Off
- - set Bonus Life to 10k
- - (the above means DSW B = 10011100)
- - press S to display the grid
- - press (all together) R + B1 + S2
- (c) NAMCO LTD. 1984 will appear on the screen.
- To exit, press S1 or S coin
-
-- Motos
- - enter service mode
- - set coinage to 3 Coins / 1 Credit
- - set Lives to 3
- - set Difficulty to Rank A
- - set Bonus Life to 10k 30k 50k
- - set Demo Sounds to Off
- - (the above means DSW A = 11100001)
- - press S to display the grid
- - press (all together) R + B1 + S2
- (c) NAMCO LTD. 1985 will appear on the screen.
- To exit, press S1 or S
-
-
-Notes:
------
-- Phozon: completing level 34 (the second round of world 9) causes the game to
- crash. This seems to be the correct behaviour: there is no data for levels
- after that one, and using the level select dip switch to jump to level 35
- (="22") causes the same crash. I think being able to complete level 34 is a
- bug, it should be impossible because there shouldn't be enough molecules so
- you would play it forever.
-
-- Phozon: if you enter service mode and press service coin something
- like the following is written at the bottom of the screen:
- 99,99999,9999,9999,9999
- 99,99999,9999,9999,999999
- it seems to be a counter decremented while the game is running.
-
-- Mappy: similarly, if you enter service mode and press
- P1 button + service coin the following is shown:
- 99.99.999.9999.9999.9999
- 99.99.999.9999.9999.0000
-
-- The Tower of Druaga: keep button 1 pressed while pressing the start button to
- continue the previous game; you can choose which level to start from.
-
-- Grobda: when the Level Select dip switch is On, after inserting a coin press
- button + start to be asked the level to start from.
-
-- The only difference between "grobda2" and "grobda3" is a tiny patch to some
- code related to player shoots handling. Bugfix, I guess.
-
-- Dig Dug II: when the "freeze" dip switch is on, at the beginning of the game
- select starting level with joystick up/down, then press button 2. During the
- game, press start to pause/resume.
-
-
-TODO:
-----
-
-- Phozon: there appear to be two palette banks (sprites are the same, but
- characters change from a blue background to brown background). It is not
- known if and when the alternate palette should be used. The palette select
- bit might be at address 500E/500F; if that's the case, it is set to 0 on
- startup and I don't think it's ever set to 1 - which would mean the second
- bank is not used and colors are right as they are.
-
-- Phozon: one unknown PROM, I don't know what it could be.
-
-***************************************************************************/
-
-#include "emu.h"
-#include "includes/mappy.h"
-
-#include "cpu/m6809/m6809.h"
-#include "machine/74157.h"
-#include "machine/74259.h"
-#include "machine/watchdog.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
-
-
-/*************************************
- *
- * Constants
- *
- *************************************/
-
-#define MASTER_CLOCK (XTAL(18'432'000))
-
-#define PIXEL_CLOCK (MASTER_CLOCK/3)
-
-/* H counts from 128->511, HBLANK starts at 144 and ends at 240 */
-#define HTOTAL (384)
-#define HBEND (0) /*(96+16)*/
-#define HBSTART (288) /*(16)*/
-
-#define VTOTAL (264)
-#define VBEND (0) /*(16)*/
-#define VBSTART (224) /*(224+16)*/
-
-
-
-/***************************************************************************/
-
-WRITE_LINE_MEMBER(mappy_state::int_on_w)
-{
- m_main_irq_mask = state;
- if (!state)
- m_maincpu->set_input_line(0, CLEAR_LINE);
-}
-
-WRITE_LINE_MEMBER(mappy_state::int_on_2_w)
-{
- m_sub_irq_mask = state;
- if (!state)
- m_subcpu->set_input_line(0, CLEAR_LINE);
-}
-
-WRITE_LINE_MEMBER(mappy_state::int_on_3_w)
-{
- m_sub2_irq_mask = state;
- if (!state)
- m_subcpu2->set_input_line(0, CLEAR_LINE);
-}
-
-WRITE_LINE_MEMBER(mappy_state::mappy_flip_w)
-{
- flip_screen_set(state);
-}
-
-
-template<uint8_t Chip>
-TIMER_CALLBACK_MEMBER(mappy_state::namcoio_run_timer)
-{
- m_namcoio[Chip]->customio_run();
-}
-
-WRITE_LINE_MEMBER(mappy_state::vblank_irq)
-{
- if (!state)
- return;
-
- if (m_main_irq_mask)
- m_maincpu->set_input_line(0, ASSERT_LINE);
-
- if (!m_namcoio[0]->read_reset_line()) // give the cpu a tiny bit of time to write the command before processing it
- m_namcoio_run_timer[0]->adjust(attotime::from_usec(50));
-
- if (!m_namcoio[1]->read_reset_line()) // give the cpu a tiny bit of time to write the command before processing it
- m_namcoio_run_timer[1]->adjust(attotime::from_usec(50));
-
- if (m_sub_irq_mask)
- m_subcpu->set_input_line(0, ASSERT_LINE);
-
- if (m_subcpu2.found() && m_sub2_irq_mask)
- m_subcpu2->set_input_line(0, ASSERT_LINE);
-}
-
-void mappy_state::superpac_cpu1_map(address_map &map)
-{
- map(0x0000, 0x07ff).ram().w(FUNC(mappy_state::superpac_videoram_w)).share("videoram"); /* video RAM */
- map(0x0800, 0x1fff).ram().share("spriteram"); /* work RAM with embedded sprite RAM */
- map(0x2000, 0x2000).rw(FUNC(mappy_state::superpac_flipscreen_r), FUNC(mappy_state::superpac_flipscreen_w));
- map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the sound CPU */
- map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
- map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
- map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */
- map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
- map(0xa000, 0xffff).rom();
-}
-
-void mappy_state::phozon_cpu1_map(address_map &map)
-{
- map(0x0000, 0x07ff).ram().w(FUNC(mappy_state::superpac_videoram_w)).share("videoram"); /* video RAM */
- map(0x0800, 0x1fff).ram().share("spriteram"); /* shared RAM with CPU #2/sprite RAM*/
- map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the sound CPU */
- map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
- map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
- map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */
- map(0x7000, 0x7000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
- map(0x8000, 0xffff).rom(); /* ROM */
-}
-
-void mappy_state::mappy_cpu1_map(address_map &map)
-{
- map(0x0000, 0x0fff).ram().w(FUNC(mappy_state::mappy_videoram_w)).share("videoram"); /* video RAM */
- map(0x1000, 0x27ff).ram().share("spriteram"); /* work RAM with embedded sprite RAM */
- map(0x3800, 0x3fff).w(FUNC(mappy_state::mappy_scroll_w)); /* scroll */
- map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the sound CPU */
- map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
- map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */
- map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */
- map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
- map(0x8000, 0xffff).rom(); /* ROM code (only a000-ffff in Mappy) */
-}
-
-void mappy_state::superpac_cpu2_map(address_map &map)
-{
- map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the main CPU (also sound registers) */
- map(0x2000, 0x200f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */
- map(0xe000, 0xffff).rom();
-}
-
-void mappy_state::phozon_cpu2_map(address_map &map)
-{
- map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the main CPU + sound registers */
- map(0xe000, 0xffff).rom(); /* ROM */
-}
-
-void mappy_state::mappy_cpu2_map(address_map &map)
-{
- map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the main CPU (also sound registers) */
- map(0x2000, 0x200f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */
- map(0xe000, 0xffff).rom(); /* ROM code */
-}
-
-
-/* extra CPU only present in Phozon */
-void mappy_state::phozon_cpu3_map(address_map &map)
-{
- map(0x0000, 0x07ff).ram().w(FUNC(mappy_state::superpac_videoram_w)).share("videoram"); /* video RAM */
- map(0x0800, 0x1fff).ram().share("spriteram"); /* shared RAM with CPU #2/sprite RAM*/
- map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with CPU #2 */
- map(0xa000, 0xa7ff).ram(); /* RAM */
- map(0xe000, 0xffff).rom(); /* ROM */
-}
-
-
-
-#define NAMCO_56IN0\
- PORT_START("P1") /* 56XX #0 pins 22-29 */\
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY\
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY\
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY\
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY\
- PORT_START("P2") /* 56XX #0 pins 22-29 */\
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL\
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL\
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL\
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
-
-#define NAMCO_5XIN0\
- PORT_START("P1") /* 56XX #0 pins 22-29 */\
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY\
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY\
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY\
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY\
- PORT_START("P2") /* 56XX #0 pins 22-29 */\
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL\
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL\
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL\
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
-
-#define NAMCO_56IN1\
- PORT_START("BUTTONS") /* 56XX #0 pins 30-33 and 38-41 */\
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )\
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL\
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )\
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )\
- PORT_START("COINS") /* 56XX #0 pins 30-33 and 38-41 */\
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )\
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )\
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )\
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
-
-#define NAMCO_56DSW0\
- PORT_START("DSW0") /* 56XX #1 pins 30-33 */\
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )\
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )\
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Cabinet ) )\
- PORT_DIPSETTING( 0x04, DEF_STR( Upright ) )\
- PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )\
- PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
-
-static INPUT_PORTS_START( superpac )
- NAMCO_56IN0
- NAMCO_56IN1
- NAMCO_56DSW0
-
- PORT_START("DSW1") /* 56XX #1 pins 22-29 */
- PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
- PORT_DIPSETTING( 0x0f, "Rank 0-Normal" )
- PORT_DIPSETTING( 0x0e, "Rank 1-Easiest" )
- PORT_DIPSETTING( 0x0d, "Rank 2" )
- PORT_DIPSETTING( 0x0c, "Rank 3" )
- PORT_DIPSETTING( 0x0b, "Rank 4" )
- PORT_DIPSETTING( 0x0a, "Rank 5" )
- PORT_DIPSETTING( 0x09, "Rank 6-Medium" )
- PORT_DIPSETTING( 0x08, "Rank 7" )
- PORT_DIPSETTING( 0x07, "Rank 8-Default" )
- PORT_DIPSETTING( 0x06, "Rank 9" )
- PORT_DIPSETTING( 0x05, "Rank A" )
- PORT_DIPSETTING( 0x04, "Rank B-Hardest" )
- PORT_DIPSETTING( 0x03, "Rank C-Easy Auto" )
- PORT_DIPSETTING( 0x02, "Rank D-Auto" )
- PORT_DIPSETTING( 0x01, "Rank E-Auto" )
- PORT_DIPSETTING( 0x00, "Rank F-Hard Auto" )
- PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6")
- PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x40, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPLOCATION("SW1:8")
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("DSW2") /* 56XX #1 pins 38-41 multiplexed */
- PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3")
- PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x01, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_6C ) )
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_7C ) )
- PORT_DIPNAME( 0x38, 0x38, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:4,5,6")
- PORT_DIPSETTING( 0x08, "30k Only" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x30, "30k & 80k Only" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x20, "30k, 80k & Every 80k" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x38, "30k & 100k Only" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x18, "30k, 100k & Every 100k" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x28, "30k & 120k Only" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x10, "30k, 120k & Every 120k" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x00, DEF_STR( None ) )
- PORT_DIPSETTING( 0x10, "30k Only" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x00) /* Manual shows 100k only, Test Mode shows 30k which is what we use */
- PORT_DIPSETTING( 0x38, "30k & 100k Only" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x00)
- PORT_DIPSETTING( 0x20, "30k, 100k & Every 100k" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x00)
- PORT_DIPSETTING( 0x30, "30k & 120k Only" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x00)
- PORT_DIPSETTING( 0x08, "40k Only" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x00)
- PORT_DIPSETTING( 0x28, "40k & 120k Only" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x00)
- PORT_DIPSETTING( 0x18, "40k, 120k & Every 120k" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x00)
- PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:7,8")
- PORT_DIPSETTING( 0x80, "1" )
- PORT_DIPSETTING( 0x40, "2" )
- PORT_DIPSETTING( 0xc0, "3" )
- PORT_DIPSETTING( 0x00, "5" )
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( pacnpal )
- NAMCO_56IN0
- NAMCO_56IN1
- NAMCO_56DSW0
-
- PORT_START("DSW1") /* ???? #1 pins ??-?? */
- PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3")
- PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x01, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_6C ) )
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_7C ) )
- PORT_DIPNAME( 0x38, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4,5,6")
- PORT_DIPSETTING( 0x20, "20k & 70k Only" ) PORT_CONDITION("DSW1",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x30, "20k, 70k & Every 70k" ) PORT_CONDITION("DSW1",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x00, "30k Only" ) PORT_CONDITION("DSW1",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x18, "30k & 70k Only" ) PORT_CONDITION("DSW1",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x10, "30k & 80k Only" ) PORT_CONDITION("DSW1",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x28, "30k, 100k & Every 80k" ) PORT_CONDITION("DSW1",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x08, "30k & 100k Only" ) PORT_CONDITION("DSW1",0xc0,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x08, "30k Only" ) PORT_CONDITION("DSW1",0xc0,EQUALS,0x00)
- PORT_DIPSETTING( 0x00, "40k Only" ) PORT_CONDITION("DSW1",0xc0,EQUALS,0x00)
- PORT_DIPSETTING( 0x20, "30k & 80k Only" ) PORT_CONDITION("DSW1",0xc0,EQUALS,0x00)
- PORT_DIPSETTING( 0x30, "30k, 80k & Every 80k" ) PORT_CONDITION("DSW1",0xc0,EQUALS,0x00)
- PORT_DIPSETTING( 0x18, "30k & 100k Only" ) PORT_CONDITION("DSW1",0xc0,EQUALS,0x00)
- PORT_DIPSETTING( 0x10, "40k & 120k Only" ) PORT_CONDITION("DSW1",0xc0,EQUALS,0x00)
- PORT_DIPSETTING( 0x28, "40k, 100k & Every 100k" ) PORT_CONDITION("DSW1",0xc0,EQUALS,0x00)
- PORT_DIPSETTING( 0x38, DEF_STR( None ) )
- PORT_DIPNAME( 0xc0, 0x40, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:7,8")
- PORT_DIPSETTING( 0xc0, "1" )
- PORT_DIPSETTING( 0x80, "2" )
- PORT_DIPSETTING( 0x40, "3" )
- PORT_DIPSETTING( 0x00, "5" )
-
- PORT_START("DSW2") /* ???? #1 pins ??-?? */
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:1,2")
- PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
- PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4")
- PORT_DIPSETTING( 0x0c, "Rank A" )
- PORT_DIPSETTING( 0x08, "Rank B" )
- PORT_DIPSETTING( 0x04, "Rank C" )
- PORT_DIPSETTING( 0x00, "Rank D" )
- PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW2:5" )
- PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW2:6" )
- PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW2:7" )
- PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" )
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( grobda )
- NAMCO_5XIN0
- NAMCO_56IN1
-
- PORT_START("DSW0") /* 56XX #1 pins 30-33 */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Cabinet ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Upright ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) // service mode again
-
- PORT_START("DSW1") /* 56XX #1 pins 22-29 */
- PORT_SERVICE_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW1:1" )
- PORT_DIPNAME( 0x0e, 0x08, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:2,3,4")
- PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x06, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x08, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0x0a, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x0e, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) )
- PORT_DIPNAME( 0x70, 0x40, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7")
- PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) )
- PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x30, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x40, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x20, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0x50, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x70, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x60, DEF_STR( 1C_4C ) )
- PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPLOCATION("SW1:8")
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- 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( 0x01, "2" )
- PORT_DIPSETTING( 0x03, "3" )
- PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4")
- PORT_DIPSETTING( 0x0c, "Rank A" )
- PORT_DIPSETTING( 0x08, "Rank B" )
- PORT_DIPSETTING( 0x04, "Rank C" )
- PORT_DIPSETTING( 0x00, "Rank D" )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:5")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x10, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Level_Select ) ) PORT_DIPLOCATION("SW2:6")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x20, DEF_STR( On ) )
- PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Bonus_Life ) )
- PORT_DIPSETTING( 0x00, "10k, 50k & Every 50k" ) PORT_DIPLOCATION("SW2:7,8")
- PORT_DIPSETTING( 0x40, "10k & 30k Only" )
- PORT_DIPSETTING( 0xc0, "10k Only" )
- PORT_DIPSETTING( 0x80, DEF_STR( None ) )
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( phozon )
- NAMCO_5XIN0
- NAMCO_56IN1
- NAMCO_56DSW0
-
- PORT_START("DSW1") /* 56XX #1 pins 22-29 */
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x0e, 0x0e, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:2,3,4")
- PORT_DIPSETTING( 0x0e, "Rank 0" )
- PORT_DIPSETTING( 0x0c, "Rank 1" )
- PORT_DIPSETTING( 0x0a, "Rank 2" )
- PORT_DIPSETTING( 0x08, "Rank 3" )
- PORT_DIPSETTING( 0x06, "Rank 4" )
- PORT_DIPSETTING( 0x04, "Rank 5" )
- PORT_DIPSETTING( 0x02, "Rank 6" )
- PORT_DIPSETTING( 0x00, "Rank 7" )
- // when level select is on, press P1 start during the game and move joystick to select level to jump to
- PORT_DIPNAME( 0x10, 0x10, "Level Select (Cheat)" ) PORT_DIPLOCATION("SW1:5")
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- // when stop mode is on, press P1 start to pause the game
- PORT_DIPNAME( 0x20, 0x20, "Stop Mode (Cheat)" ) PORT_DIPLOCATION("SW1:6")
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:7,8")
- PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
-
- 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( 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( 0x8c, 0x8c, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:6,8,7")
- PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
- 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
-
-
-static INPUT_PORTS_START( mappy )
- PORT_START("P1") /* 58XX #0 pins 22-29 */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY
-
- PORT_START("P2") /* 58XX #0 pins 22-29 */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL
-
- NAMCO_56IN1
- NAMCO_56DSW0
-
- PORT_START("DSW1") /* 58XX #1 pins 22-29 */
-/* According to the manual, 0x04, 0x08 and 0x10 should always be off, but... */
- PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:1,2,3")
- PORT_DIPSETTING( 0x07, "Rank A" )
- PORT_DIPSETTING( 0x06, "Rank B" )
- PORT_DIPSETTING( 0x05, "Rank C" )
- PORT_DIPSETTING( 0x04, "Rank D" )
- PORT_DIPSETTING( 0x03, "Rank E" )
- PORT_DIPSETTING( 0x02, "Rank F" )
- PORT_DIPSETTING( 0x01, "Rank G" )
- PORT_DIPSETTING( 0x00, "Rank H" )
- PORT_DIPNAME( 0x18, 0x18, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:4,5")
- PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x18, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x10, DEF_STR( 1C_5C) )
- PORT_DIPSETTING( 0x08, DEF_STR( 1C_7C ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:6")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x20, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, "Rack Test (Cheat)" ) PORT_CODE(KEYCODE_F1) PORT_DIPLOCATION("SW1:7")
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPLOCATION("SW1:8")
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("DSW2") /* 58XX #1 pins 38-41 multiplexed */
- PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3")
- PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 3C_2C ) )
- PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_6C ) )
- PORT_DIPNAME( 0x38, 0x38, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:4,5,6")
- PORT_DIPSETTING( 0x18, "20k Only" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x80)
- PORT_DIPSETTING( 0x30, "20k & 60k Only" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x80)
- PORT_DIPSETTING( 0x38, "20k & 70k Only" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x80)
- PORT_DIPSETTING( 0x10, "20k, 70k & Every 70k" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x80)
- PORT_DIPSETTING( 0x28, "20k & 80k Only" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x80)
- PORT_DIPSETTING( 0x08, "20k, 80k & Every 80k" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x80)
- PORT_DIPSETTING( 0x20, "30k & 100k Only" ) PORT_CONDITION("DSW2",0xc0,NOTEQUALS,0x80)
- PORT_DIPSETTING( 0x20, "30k Only" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x80)
- PORT_DIPSETTING( 0x38, "30k & 80k Only" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x80)
- PORT_DIPSETTING( 0x30, "30k & 100k Only" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x80)
- PORT_DIPSETTING( 0x10, "30k, 100k & Every 100k" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x80)
- PORT_DIPSETTING( 0x28, "30k & 120k Only" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x80)
- PORT_DIPSETTING( 0x18, "40k Only" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x80)
- PORT_DIPSETTING( 0x08, "40k, 120k & Every 120k" ) PORT_CONDITION("DSW2",0xc0,EQUALS,0x80)
- PORT_DIPSETTING( 0x00, DEF_STR( None ) )
- PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:7,8")
- PORT_DIPSETTING( 0x40, "1" )
- PORT_DIPSETTING( 0x00, "2" )
- PORT_DIPSETTING( 0xc0, "3" )
- PORT_DIPSETTING( 0x80, "5" )
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( todruaga )
- NAMCO_56IN0
- NAMCO_56IN1
-
- PORT_START("DSW0") /* 56XX #1 pins 30-33 */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Cabinet ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Upright ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) // service mode again
-
- PORT_START("DSW1") /* 56XX #1 pins 22-29 */
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
- PORT_DIPSETTING( 0x01, "1" )
- PORT_DIPSETTING( 0x02, "2" )
- PORT_DIPSETTING( 0x03, "3" )
- PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:3,4")
- PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) )
- PORT_DIPNAME( 0x10, 0x10, "Freeze" ) PORT_DIPLOCATION("SW1:5")
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_SERVICE_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW1:6" )
- PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:7,8")
- PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x40, DEF_STR( 1C_2C ) )
-
- PORT_START("DSW2") /* 56XX #1 pins 38-41 multiplexed */
- PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW2:1" )
- PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW2:2" )
- PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW2:3" )
- PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW2:4" )
- PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW2:5" )
- PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW2:6" )
- PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW2:7" )
- PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" )
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( digdug2 )
- NAMCO_56IN0
- NAMCO_56IN1
-
- PORT_START("DSW0") /* 56XX #1 pins 30-33 */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Cabinet ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Upright ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) // service mode again
-
- PORT_START("DSW1") /* 56XX #1 pins 22-29 */
- PORT_SERVICE_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW1:1" )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:2")
- PORT_DIPSETTING( 0x02, "3" )
- PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:3,4")
- PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) )
- PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:5,6")
- PORT_DIPSETTING( 0x30, "30k 80k and ..." )
- PORT_DIPSETTING( 0x20, "30k 100k and ..." )
- PORT_DIPSETTING( 0x10, "30k 120k and ..." )
- PORT_DIPSETTING( 0x00, "30k 150k and..." )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Level_Select ) ) PORT_DIPLOCATION("SW1:7")
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPLOCATION("SW1:8")
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("DSW2") /* 56XX #1 pins 38-41 multiplexed */
- PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW2:1" )
- PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW2:2" )
- PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW2:3" )
- PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW2:4" )
- PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW2:5" )
- PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW2:6" )
- PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW2:7" )
- PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" )
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( motos )
- NAMCO_5XIN0
- NAMCO_56IN1
-
- PORT_START("DSW0") /* 56XX #1 pins 30-33 */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Cabinet ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Upright ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) // service mode again
-
- PORT_START("DSW1") /* 56XX #1 pins 22-29 */
- PORT_SERVICE_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW1:1" )
- PORT_DIPNAME( 0x06, 0x06, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:2,3")
- PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x06, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:4")
- PORT_DIPSETTING( 0x08, "3" )
- PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:5")
- PORT_DIPSETTING( 0x10, "Rank A" )
- PORT_DIPSETTING( 0x00, "Rank B" )
- PORT_DIPNAME( 0x60, 0x60, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:6,7")
- PORT_DIPSETTING( 0x60, "10k 30k and every 50k" )
- PORT_DIPSETTING( 0x40, "20k and every 50k" )
- PORT_DIPSETTING( 0x20, "30k and every 70k" )
- PORT_DIPSETTING( 0x00, "20k 70k" )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:8")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x80, DEF_STR( On ) )
-
- PORT_START("DSW2") /* 56XX #1 pins 38-41 multiplexed */
- PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW2:1" )
- PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW2:2" )
- PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW2:3" )
- PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW2:4" )
- PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW2:5" )
- PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW2:6" )
- PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW2:7" )
- PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" )
-INPUT_PORTS_END
-
-
-
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 2,
- { 0, 4 },
- { 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 16*8
-};
-
-static const gfx_layout spritelayout_2bpp =
-{
- 16,16,
- RGN_FRAC(1,1),
- 2,
- { 0, 4 },
- { 0, 1, 2, 3, 8*8, 8*8+1, 8*8+2, 8*8+3,
- 16*8+0, 16*8+1, 16*8+2, 16*8+3, 24*8+0, 24*8+1, 24*8+2, 24*8+3 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
- 32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 },
- 64*8
-};
-
-static const gfx_layout spritelayout_8x8 =
-{
- 8,8,
- RGN_FRAC(1,1),
- 2,
- { 0, 4 },
- { 0, 1, 2, 3, 8*8, 8*8+1, 8*8+2, 8*8+3 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 16*8
-};
-
-static const gfx_layout spritelayout_4bpp =
-{
- 16,16,
- RGN_FRAC(1,2),
- 4,
- { 0, 4, RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+4 },
- { 0, 1, 2, 3, 8*8, 8*8+1, 8*8+2, 8*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3,
- 24*8+0, 24*8+1, 24*8+2, 24*8+3 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
- 32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 },
- 64*8
-};
-
-
-
-static GFXDECODE_START( gfx_superpac )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout_2bpp, 64*4, 64 )
-GFXDECODE_END
-
-static GFXDECODE_START( gfx_phozon )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout_8x8, 64*4, 64 )
-GFXDECODE_END
-
-static GFXDECODE_START( gfx_mappy )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout_4bpp, 64*4, 16 )
-GFXDECODE_END
-
-static GFXDECODE_START( gfx_todruaga )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout_4bpp, 64*4, 64 )
-GFXDECODE_END
-
-
-/***************************************************************************
-
- Custom I/O initialization
-
-***************************************************************************/
-
-WRITE8_MEMBER(mappy_state::out_lamps)
-{
- m_leds[0] = BIT(data, 0);
- m_leds[1] = BIT(data, 1);
- machine().bookkeeping().coin_lockout_global_w(data & 4);
- machine().bookkeeping().coin_counter_w(0, ~data & 8);
-}
-
-void mappy_state::machine_start()
-{
- m_leds.resolve();
-
- m_namcoio_run_timer[0] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mappy_state::namcoio_run_timer<0>), this));
- m_namcoio_run_timer[1] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mappy_state::namcoio_run_timer<1>), this));
-
- save_item(NAME(m_main_irq_mask));
- save_item(NAME(m_sub_irq_mask));
- save_item(NAME(m_sub2_irq_mask));
-}
-
-
-void mappy_state::superpac_common(machine_config &config)
-{
- /* basic machine hardware */
- MC6809E(config, m_maincpu, PIXEL_CLOCK/4); /* 1.536 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_cpu1_map);
-
- MC6809E(config, m_subcpu, PIXEL_CLOCK/4); /* 1.536 MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_cpu2_map);
-
- ls259_device &mainlatch(LS259(config, "mainlatch")); // 2M on CPU board
- mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w));
- mainlatch.q_out_cb<1>().set(FUNC(mappy_state::int_on_w));
- mainlatch.q_out_cb<3>().set(m_namco_15xx, FUNC(namco_15xx_device::sound_enable_w));
- mainlatch.q_out_cb<4>().set(m_namcoio[0], FUNC(namcoio_device::set_reset_line)).invert();
- mainlatch.q_out_cb<4>().append(m_namcoio[1], FUNC(namcoio_device::set_reset_line)).invert();
- mainlatch.q_out_cb<5>().set_inputline(m_subcpu, INPUT_LINE_RESET).invert();
-
- WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
-
- config.set_maximum_quantum(attotime::from_hz(6000)); // 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs
-
- ls157_device &dipmux(LS157(config, "dipmux"));
- dipmux.a_in_callback().set_ioport("DSW2");
- dipmux.b_in_callback().set_ioport("DSW2").rshift(4);
-
- /* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_superpac);
- PALETTE(config, m_palette, FUNC(mappy_state::superpac_palette), 64*4+64*4, 32);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(mappy_state::screen_update_superpac));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(mappy_state::vblank_irq)); // cause IRQs on both CPUs; also update the custom I/O chips
-
- MCFG_VIDEO_START_OVERRIDE(mappy_state,superpac)
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
-
- NAMCO_15XX(config, m_namco_15xx, 18432000/768);
- m_namco_15xx->set_voices(8);
- m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
-
-void mappy_state::superpac(machine_config &config)
-{
- superpac_common(config);
-
- NAMCO_56XX(config, m_namcoio[0], 0);
- m_namcoio[0]->in_callback<0>().set_ioport("COINS");
- m_namcoio[0]->in_callback<1>().set_ioport("P1");
- m_namcoio[0]->in_callback<2>().set_ioport("P2");
- m_namcoio[0]->in_callback<3>().set_ioport("BUTTONS");
-
- NAMCO_56XX(config, m_namcoio[1], 0);
- m_namcoio[1]->in_callback<0>().set("dipmux", FUNC(ls157_device::output_r));
- m_namcoio[1]->in_callback<1>().set_ioport("DSW1");
- m_namcoio[1]->in_callback<2>().set_ioport("DSW1").rshift(4);
- m_namcoio[1]->in_callback<3>().set_ioport("DSW0");
- m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0);
-}
-
-void mappy_state::pacnpal(machine_config &config)
-{
- superpac_common(config);
-
- NAMCO_56XX(config, m_namcoio[0], 0);
- m_namcoio[0]->in_callback<0>().set_ioport("COINS");
- m_namcoio[0]->in_callback<1>().set_ioport("P1");
- m_namcoio[0]->in_callback<2>().set_ioport("P2");
- m_namcoio[0]->in_callback<3>().set_ioport("BUTTONS");
- m_namcoio[0]->out_callback<0>().set(FUNC(mappy_state::out_lamps));
-
- NAMCO_59XX(config, m_namcoio[1], 0);
- m_namcoio[1]->in_callback<0>().set("dipmux", FUNC(ls157_device::output_r));
- m_namcoio[1]->in_callback<1>().set_ioport("DSW1");
- m_namcoio[1]->in_callback<2>().set_ioport("DSW1").rshift(4);
- m_namcoio[1]->in_callback<3>().set_ioport("DSW0");
- m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0);
-}
-
-void mappy_state::grobda(machine_config &config)
-{
- superpac_common(config);
-
- NAMCO_58XX(config, m_namcoio[0], 0);
- m_namcoio[0]->in_callback<0>().set_ioport("COINS");
- m_namcoio[0]->in_callback<1>().set_ioport("P1");
- m_namcoio[0]->in_callback<2>().set_ioport("P2");
- m_namcoio[0]->in_callback<3>().set_ioport("BUTTONS");
-
- NAMCO_56XX(config, m_namcoio[1], 0);
- m_namcoio[1]->in_callback<0>().set("dipmux", FUNC(ls157_device::output_r));
- m_namcoio[1]->in_callback<1>().set_ioport("DSW1");
- m_namcoio[1]->in_callback<2>().set_ioport("DSW1").rshift(4);
- m_namcoio[1]->in_callback<3>().set_ioport("DSW0");
- m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0);
-
- /* sound hardware */
- DAC_4BIT_BINARY_WEIGHTED(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.275); // alternate route to 15XX-related DAC?
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
-
-void mappy_state::phozon(machine_config &config)
-{
- /* basic machine hardware */
- MC6809E(config, m_maincpu, PIXEL_CLOCK/4); /* MAIN CPU */
- m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu1_map);
-
- MC6809E(config, m_subcpu, PIXEL_CLOCK/4); /* SOUND CPU */
- m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu2_map);
-
- MC6809E(config, m_subcpu2, PIXEL_CLOCK/4); /* SUB CPU */
- m_subcpu2->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu3_map);
-
- ls259_device &mainlatch(LS259(config, "mainlatch")); // 5C
- mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w));
- mainlatch.q_out_cb<1>().set(FUNC(mappy_state::int_on_w));
- mainlatch.q_out_cb<2>().set(FUNC(mappy_state::int_on_3_w));
- mainlatch.q_out_cb<3>().set(m_namco_15xx, FUNC(namco_15xx_device::sound_enable_w));
- mainlatch.q_out_cb<4>().set(m_namcoio[0], FUNC(namcoio_device::set_reset_line)).invert();
- mainlatch.q_out_cb<4>().append(m_namcoio[1], FUNC(namcoio_device::set_reset_line)).invert();
- mainlatch.q_out_cb<5>().set_inputline(m_subcpu, INPUT_LINE_RESET).invert();
- mainlatch.q_out_cb<6>().set_inputline(m_subcpu2, INPUT_LINE_RESET).invert();
-
- WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
-
- config.set_maximum_quantum(attotime::from_hz(6000)); // 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs
-
- NAMCO_58XX(config, m_namcoio[0], 0);
- m_namcoio[0]->in_callback<0>().set_ioport("COINS");
- m_namcoio[0]->in_callback<1>().set_ioport("P1");
- m_namcoio[0]->in_callback<2>().set_ioport("P2");
- m_namcoio[0]->in_callback<3>().set_ioport("BUTTONS");
-
- NAMCO_56XX(config, m_namcoio[1], 0);
- m_namcoio[1]->in_callback<0>().set("dipmux", FUNC(ls157_device::output_r));
- m_namcoio[1]->in_callback<1>().set_ioport("DSW1");
- m_namcoio[1]->in_callback<2>().set_ioport("DSW1").rshift(4);
- m_namcoio[1]->in_callback<3>().set_ioport("DSW0");
- m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0);
-
- ls157_device &dipmux(LS157(config, "dipmux"));
- dipmux.a_in_callback().set_ioport("DSW2");
- dipmux.b_in_callback().set_ioport("DSW2").rshift(4);
-
- /* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_phozon);
- PALETTE(config, m_palette, FUNC(mappy_state::phozon_palette), 64*4+64*4, 32);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(mappy_state::screen_update_phozon));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(mappy_state::vblank_irq)); // cause IRQs on all three CPUs; also update the custom I/O chips
-
- MCFG_VIDEO_START_OVERRIDE(mappy_state,phozon)
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
-
- NAMCO_15XX(config, m_namco_15xx, 18432000/768);
- m_namco_15xx->set_voices(8);
- m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
-
-void mappy_state::mappy_common(machine_config &config)
-{
- /* basic machine hardware */
- MC6809E(config, m_maincpu, PIXEL_CLOCK/4); /* 1.536 MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::mappy_cpu1_map);
-
- MC6809E(config, m_subcpu, PIXEL_CLOCK/4); /* 1.536 MHz */
- m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::mappy_cpu2_map);
-
- ls259_device &mainlatch(LS259(config, "mainlatch")); // 2M on CPU board
- mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w));
- mainlatch.q_out_cb<1>().set(FUNC(mappy_state::int_on_w));
- mainlatch.q_out_cb<2>().set(FUNC(mappy_state::mappy_flip_w));
- mainlatch.q_out_cb<3>().set(m_namco_15xx, FUNC(namco_15xx_device::sound_enable_w));
- mainlatch.q_out_cb<4>().set(m_namcoio[0], FUNC(namcoio_device::set_reset_line)).invert();
- mainlatch.q_out_cb<4>().append(m_namcoio[1], FUNC(namcoio_device::set_reset_line)).invert();
- mainlatch.q_out_cb<5>().set_inputline(m_subcpu, INPUT_LINE_RESET).invert();
-
- WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
-
- config.set_maximum_quantum(attotime::from_hz(6000)); // 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs
-
- ls157_device &dipmux(LS157(config, "dipmux"));
- dipmux.a_in_callback().set_ioport("DSW2");
- dipmux.b_in_callback().set_ioport("DSW2").rshift(4);
-
- /* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_mappy);
- PALETTE(config, m_palette, FUNC(mappy_state::mappy_palette), 64*4+16*16, 32);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
- m_screen->set_screen_update(FUNC(mappy_state::screen_update_mappy));
- m_screen->set_palette(m_palette);
- m_screen->screen_vblank().set(FUNC(mappy_state::vblank_irq)); // cause IRQs on both CPUs; also update the custom I/O chips
-
- MCFG_VIDEO_START_OVERRIDE(mappy_state,mappy)
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
-
- NAMCO_15XX(config, m_namco_15xx, 18432000/768);
- m_namco_15xx->set_voices(8);
- m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
-
-void mappy_state::mappy(machine_config &config)
-{
- mappy_common(config);
-
- NAMCO_58XX(config, m_namcoio[0], 0);
- m_namcoio[0]->in_callback<0>().set_ioport("COINS");
- m_namcoio[0]->in_callback<1>().set_ioport("P1");
- m_namcoio[0]->in_callback<2>().set_ioport("P2");
- m_namcoio[0]->in_callback<3>().set_ioport("BUTTONS");
-
- NAMCO_58XX(config, m_namcoio[1], 0);
- m_namcoio[1]->in_callback<0>().set("dipmux", FUNC(ls157_device::output_r));
- m_namcoio[1]->in_callback<1>().set_ioport("DSW1");
- m_namcoio[1]->in_callback<2>().set_ioport("DSW1").rshift(4);
- m_namcoio[1]->in_callback<3>().set_ioport("DSW0");
- m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0);
-}
-
-void mappy_state::digdug2(machine_config &config)
-{
- mappy_common(config);
-
- subdevice<watchdog_timer_device>("watchdog")->set_vblank_count("screen", 0);
-
- NAMCO_58XX(config, m_namcoio[0], 0);
- m_namcoio[0]->in_callback<0>().set_ioport("COINS");
- m_namcoio[0]->in_callback<1>().set_ioport("P1");
- m_namcoio[0]->in_callback<2>().set_ioport("P2");
- m_namcoio[0]->in_callback<3>().set_ioport("BUTTONS");
-
- NAMCO_56XX(config, m_namcoio[1], 0);
- m_namcoio[1]->in_callback<0>().set("dipmux", FUNC(ls157_device::output_r));
- m_namcoio[1]->in_callback<1>().set_ioport("DSW1");
- m_namcoio[1]->in_callback<2>().set_ioport("DSW1").rshift(4);
- m_namcoio[1]->in_callback<3>().set_ioport("DSW0");
- m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0);
-}
-
-void mappy_state::todruaga(machine_config &config)
-{
- digdug2(config);
-
- /* video hardware */
- m_gfxdecode->set_info(gfx_todruaga);
- m_palette->set_entries(64*4+64*16);
-}
-
-void mappy_state::motos(machine_config &config)
-{
- mappy_common(config);
-
- NAMCO_56XX(config, m_namcoio[0], 0);
- m_namcoio[0]->in_callback<0>().set_ioport("COINS");
- m_namcoio[0]->in_callback<1>().set_ioport("P1");
- m_namcoio[0]->in_callback<2>().set_ioport("P2");
- m_namcoio[0]->in_callback<3>().set_ioport("BUTTONS");
- m_namcoio[0]->out_callback<0>().set(FUNC(mappy_state::out_lamps));
-
- NAMCO_56XX(config, m_namcoio[1], 0);
- m_namcoio[1]->in_callback<0>().set("dipmux", FUNC(ls157_device::output_r));
- m_namcoio[1]->in_callback<1>().set_ioport("DSW1");
- m_namcoio[1]->in_callback<2>().set_ioport("DSW1").rshift(4);
- m_namcoio[1]->in_callback<3>().set_ioport("DSW0");
- m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0);
-}
-
-
-
-ROM_START( superpac )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "sp1-2.1c", 0xc000, 0x2000, CRC(4bb33d9c) SHA1(dd87f71b4db090a32a6b791079eedd17580cc741) )
- ROM_LOAD( "sp1-1.1b", 0xe000, 0x2000, CRC(846fbb4a) SHA1(f6bf90281986b9b7a3ef1dbbeddb722182e84d7c) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "spc-3.1k", 0xf000, 0x1000, CRC(04445ddb) SHA1(ce7d14963d5ddaefdeaf433a6f82c43cd1611d9b) )
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "sp1-6.3c", 0x0000, 0x1000, CRC(91c5935c) SHA1(10579edabc26a0910253fab7d41b4c19ecdaaa09) )
-
- ROM_REGION( 0x2000, "gfx2", 0 )
- ROM_LOAD( "spv-2.3f", 0x0000, 0x2000, CRC(670a42f2) SHA1(9171922df07e31fd1dc415766f7d2cc50a9d10dc) )
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "superpac.4c", 0x0000, 0x0020, CRC(9ce22c46) SHA1(d97f53ef4c5ef26659a22ed0de4ce7ef3758c924) ) /* palette */
- ROM_LOAD( "superpac.4e", 0x0020, 0x0100, CRC(1253c5c1) SHA1(df46a90170e9761d45c90fbd04ef2aa1e8c9944b) ) /* chars */
- ROM_LOAD( "superpac.3l", 0x0120, 0x0100, CRC(d4d7026f) SHA1(a486573437c54bfb503424574ad82655491e85e1) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "superpac.3m", 0x0000, 0x0100, CRC(ad43688f) SHA1(072f427453efb1dda8147da61804fff06e1bc4d5) )
-ROM_END
-
-ROM_START( superpacm )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "spc-2.1c", 0xc000, 0x2000, CRC(1a38c30e) SHA1(ae0ee9f3df0991a80698fe745a7a853a4bb60710) )
- ROM_LOAD( "spc-1.1b", 0xe000, 0x2000, CRC(730e95a9) SHA1(ca73c8bcb03c2f5c05968c707a5d3f7f9956b886) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "spc-3.1k", 0xf000, 0x1000, CRC(04445ddb) SHA1(ce7d14963d5ddaefdeaf433a6f82c43cd1611d9b) )
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "spv-1.3c", 0x0000, 0x1000, CRC(78337e74) SHA1(11222adb55e6bce508896ccb1f6dbab0c1d44e5b) )
-
- ROM_REGION( 0x2000, "gfx2", 0 )
- ROM_LOAD( "spv-2.3f", 0x0000, 0x2000, CRC(670a42f2) SHA1(9171922df07e31fd1dc415766f7d2cc50a9d10dc) )
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "superpac.4c", 0x0000, 0x0020, CRC(9ce22c46) SHA1(d97f53ef4c5ef26659a22ed0de4ce7ef3758c924) ) /* palette */
- ROM_LOAD( "superpac.4e", 0x0020, 0x0100, CRC(1253c5c1) SHA1(df46a90170e9761d45c90fbd04ef2aa1e8c9944b) ) /* chars */
- ROM_LOAD( "superpac.3l", 0x0120, 0x0100, CRC(d4d7026f) SHA1(a486573437c54bfb503424574ad82655491e85e1) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "superpac.3m", 0x0000, 0x0100, CRC(ad43688f) SHA1(072f427453efb1dda8147da61804fff06e1bc4d5) )
-ROM_END
-
-ROM_START( pacnpal )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "pap1-3b.1d", 0xa000, 0x2000, CRC(ed64a565) SHA1(b16930981490d97486d4df96acbb3d1cddbd3a80) )
- ROM_LOAD( "pap1-2b.1c", 0xc000, 0x2000, CRC(15308bcf) SHA1(334603f8904f8968d05edc420b5f9e3b483ee86d) )
- ROM_LOAD( "pap3-1.1b", 0xe000, 0x2000, CRC(3cac401c) SHA1(38a14228469fa4a20cbc5d862198dc901842682e) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "pap1-4.1k", 0xf000, 0x1000, CRC(330e20de) SHA1(5b23e5dcc38dc644a36efc8b03eba34cea540bea) )
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "pap1-6.3c", 0x0000, 0x1000, CRC(a36b96cb) SHA1(e0a11b5a43cbf756ddb045c743973d0a55dbb979) )
-
- ROM_REGION( 0x2000, "gfx2", 0 )
- ROM_LOAD( "pap1-5.3f", 0x0000, 0x2000, CRC(fb6f56e3) SHA1(fd10d2ee49b4e059e9ef6046bc86d97e3185164d) )
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "pap1-6.4c", 0x0000, 0x0020, CRC(52634b41) SHA1(dfb109c8e2c62ae1612ba0e3272468d152123842) ) /* palette */
- ROM_LOAD( "pap1-5.4e", 0x0020, 0x0100, CRC(ac46203c) SHA1(3f47f1991aab9640c0d5f70fad85d20d6cf2ea3d) ) /* chars */
- ROM_LOAD( "pap1-4.3l", 0x0120, 0x0100, CRC(686bde84) SHA1(541d08b43dbfb789c2867955635d2c9e051fedd9) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "pap1-3.3m", 0x0000, 0x0100, CRC(94782db5) SHA1(ac0114f0611c81dfac9469253048ae0214d570ee) )
-ROM_END
-
-ROM_START( pacnpal2 )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "pap1-3.1d", 0xa000, 0x2000, CRC(d7ec2719) SHA1(b633a5360a199d528bcef209c06a21f266525769) )
- ROM_LOAD( "pap1-2.1c", 0xc000, 0x2000, CRC(0245396e) SHA1(7e8467e317879621a7b31bc922b5187f20fcea78) )
- ROM_LOAD( "pap1-1.1b", 0xe000, 0x2000, CRC(7f046b58) SHA1(2024019e5fafb698bb5775075c9b88c5ed35f7ba) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "pap1-4.1k", 0xf000, 0x1000, CRC(330e20de) SHA1(5b23e5dcc38dc644a36efc8b03eba34cea540bea) )
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "pap1-6.3c", 0x0000, 0x1000, CRC(a36b96cb) SHA1(e0a11b5a43cbf756ddb045c743973d0a55dbb979) )
-
- ROM_REGION( 0x2000, "gfx2", 0 )
- ROM_LOAD( "pap1-5.3f", 0x0000, 0x2000, CRC(fb6f56e3) SHA1(fd10d2ee49b4e059e9ef6046bc86d97e3185164d) )
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "pap1-6.4c", 0x0000, 0x0020, CRC(52634b41) SHA1(dfb109c8e2c62ae1612ba0e3272468d152123842) ) /* palette */
- ROM_LOAD( "pap1-5.4e", 0x0020, 0x0100, CRC(ac46203c) SHA1(3f47f1991aab9640c0d5f70fad85d20d6cf2ea3d) ) /* chars */
- ROM_LOAD( "pap1-4.3l", 0x0120, 0x0100, CRC(686bde84) SHA1(541d08b43dbfb789c2867955635d2c9e051fedd9) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "pap1-3.3m", 0x0000, 0x0100, CRC(94782db5) SHA1(ac0114f0611c81dfac9469253048ae0214d570ee) )
-ROM_END
-
-/* should there be a pacnchmp set with pap2-x program roms? */
-
-ROM_START( pacnchmp )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "pap3-3.1d", 0xa000, 0x2000, CRC(20a07d3d) SHA1(2135ad154b575a73cfb1b0f0f282dfc013672aec) )
- ROM_LOAD( "pap3-2.1c", 0xc000, 0x2000, CRC(505bae56) SHA1(590ce9f0e92115a71eb76b71ab4eac16ffa2a28e) )
- ROM_LOAD( "pap3-1.1b", 0xe000, 0x2000, CRC(3cac401c) SHA1(38a14228469fa4a20cbc5d862198dc901842682e) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "pap1-4.1k", 0xf000, 0x1000, CRC(330e20de) SHA1(5b23e5dcc38dc644a36efc8b03eba34cea540bea) )
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "pap2-6.3c", 0x0000, 0x1000, CRC(93d15c30) SHA1(5da4120b680726c83a651b445254604cbf7cc883) )
-
- ROM_REGION( 0x2000, "gfx2", 0 )
- ROM_LOAD( "pap2-5.3f", 0x0000, 0x2000, CRC(39f44aa4) SHA1(0696539cb2c7fcda2f6c295c7d65678dac18950b) )
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "pap2-6.4c", 0x0000, 0x0020, CRC(18c3db79) SHA1(a37d3cbfc5d4bd740b02ae69a374292e937215e2) ) /* palette */
- ROM_LOAD( "pap2-5.4e", 0x0020, 0x0100, CRC(875b49bb) SHA1(34b4622eecefd9fe0e9d883246d5c0e0c7f9ad43) ) /* chars */
- ROM_LOAD( "pap2-4.3l", 0x0120, 0x0100, CRC(23701566) SHA1(afa22f5b9eb77679b5d5c2ed27d6590776a59f6f) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "pap1-3.3m", 0x0000, 0x0100, CRC(94782db5) SHA1(ac0114f0611c81dfac9469253048ae0214d570ee) )
-ROM_END
-
-ROM_START( grobda )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the first CPU */
- ROM_LOAD( "gr2-3.1d", 0xa000, 0x2000, CRC(8e3a23be) SHA1(e54c1366adc561609a3817e074b01245fb335153) )
- ROM_LOAD( "gr2-2.1c", 0xc000, 0x2000, CRC(19ffa83d) SHA1(9f4faf5e0de783868d984f166b92ebcf8bb0f93f) )
- ROM_LOAD( "gr2-1.1b", 0xe000, 0x2000, CRC(0089b13a) SHA1(286d6a60fc46a6db9a52c19c4e33114717747caf) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "gr1-4.1k", 0xe000, 0x2000, CRC(3fe78c08) SHA1(dd49a96e613e0ced5b82eafcaf935e136e7db53a) )
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "gr1-7.3c", 0x0000, 0x1000, CRC(4ebfabfd) SHA1(fffce05f59e090c4281aca0c0494825027b764fb) ) /* characters */
-
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "gr1-5.3f", 0x0000, 0x2000, CRC(eed43487) SHA1(d2b39651f39bdfca3754f7bbd7a52e7bf843dabe) ) /* sprites */
- ROM_LOAD( "gr1-6.3e", 0x2000, 0x2000, CRC(cebb7362) SHA1(6efd57f9fa0f93f70e60efc387b3a782fad2665c) ) /* sprites */
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "gr1-6.4c", 0x0000, 0x0020, CRC(c65efa77) SHA1(ead74917744cb11556153bd6c09a987bc9c6ef08) ) /* palette */
- ROM_LOAD( "gr1-5.4e", 0x0020, 0x0100, CRC(a0f66911) SHA1(e08a56327055994e3d9e2c3816d57a3cc2434c88) ) /* characters */
- ROM_LOAD( "gr1-4.3l", 0x0120, 0x0100, CRC(f1f2c234) SHA1(d59879e7a598a363d8d9ac9e630ae698f14833f7) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "gr1-3.3m", 0x0000, 0x0100, CRC(66eb1467) SHA1(02b99ced4afd9ac139f634739769f7bf353274f9) )
-ROM_END
-
-ROM_START( grobda2 )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the first CPU */
- ROM_LOAD( "gr1-3.1d", 0xa000, 0x2000, CRC(4ef4a7c1) SHA1(33367e63531601c3d4f4a7b2170cb1c87f6d72a7) )
- ROM_LOAD( "gr2-2a.1c", 0xc000, 0x2000, CRC(f93e82ae) SHA1(cb591bbcaab5ef26f097e7bab9b3638990465d4c) )
- ROM_LOAD( "gr1-1.1b", 0xe000, 0x2000, CRC(32d42f22) SHA1(f83d17029f19fc2e8bac183771dbf9d786a56681) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "gr1-4.1k", 0xe000, 0x2000, CRC(3fe78c08) SHA1(dd49a96e613e0ced5b82eafcaf935e136e7db53a) )
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "gr1-7.3c", 0x0000, 0x1000, CRC(4ebfabfd) SHA1(fffce05f59e090c4281aca0c0494825027b764fb) ) /* characters */
-
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "gr1-5.3f", 0x0000, 0x2000, CRC(eed43487) SHA1(d2b39651f39bdfca3754f7bbd7a52e7bf843dabe) ) /* sprites */
- ROM_LOAD( "gr1-6.3e", 0x2000, 0x2000, CRC(cebb7362) SHA1(6efd57f9fa0f93f70e60efc387b3a782fad2665c) ) /* sprites */
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "gr1-6.4c", 0x0000, 0x0020, CRC(c65efa77) SHA1(ead74917744cb11556153bd6c09a987bc9c6ef08) ) /* palette */
- ROM_LOAD( "gr1-5.4e", 0x0020, 0x0100, CRC(a0f66911) SHA1(e08a56327055994e3d9e2c3816d57a3cc2434c88) ) /* characters */
- ROM_LOAD( "gr1-4.3l", 0x0120, 0x0100, CRC(f1f2c234) SHA1(d59879e7a598a363d8d9ac9e630ae698f14833f7) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "gr1-3.3m", 0x0000, 0x0100, CRC(66eb1467) SHA1(02b99ced4afd9ac139f634739769f7bf353274f9) )
-ROM_END
-
-ROM_START( grobda3 )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the first CPU */
- ROM_LOAD( "gr1-3.1d", 0xa000, 0x2000, CRC(4ef4a7c1) SHA1(33367e63531601c3d4f4a7b2170cb1c87f6d72a7) )
- ROM_LOAD( "gr1-2.1c", 0xc000, 0x2000, CRC(7dcc6e8e) SHA1(7580686b7082432a79217c3d7b5ebfa0c25952e3) )
- ROM_LOAD( "gr1-1.1b", 0xe000, 0x2000, CRC(32d42f22) SHA1(f83d17029f19fc2e8bac183771dbf9d786a56681) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "gr1-4.1k", 0xe000, 0x2000, CRC(3fe78c08) SHA1(dd49a96e613e0ced5b82eafcaf935e136e7db53a) )
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "gr1-7.3c", 0x0000, 0x1000, CRC(4ebfabfd) SHA1(fffce05f59e090c4281aca0c0494825027b764fb) ) /* characters */
-
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "gr1-5.3f", 0x0000, 0x2000, CRC(eed43487) SHA1(d2b39651f39bdfca3754f7bbd7a52e7bf843dabe) ) /* sprites */
- ROM_LOAD( "gr1-6.3e", 0x2000, 0x2000, CRC(cebb7362) SHA1(6efd57f9fa0f93f70e60efc387b3a782fad2665c) ) /* sprites */
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "gr1-6.4c", 0x0000, 0x0020, CRC(c65efa77) SHA1(ead74917744cb11556153bd6c09a987bc9c6ef08) ) /* palette */
- ROM_LOAD( "gr1-5.4e", 0x0020, 0x0100, CRC(a0f66911) SHA1(e08a56327055994e3d9e2c3816d57a3cc2434c88) ) /* characters */
- ROM_LOAD( "gr1-4.3l", 0x0120, 0x0100, CRC(f1f2c234) SHA1(d59879e7a598a363d8d9ac9e630ae698f14833f7) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "gr1-3.3m", 0x0000, 0x0100, CRC(66eb1467) SHA1(02b99ced4afd9ac139f634739769f7bf353274f9) )
-ROM_END
-
-ROM_START( phozon )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the MAIN CPU */
- ROM_LOAD( "6e.rom", 0x8000, 0x2000, CRC(a6686af1) SHA1(87a948b289356675d0418c87c3c0ae36ceba3ee0) )
- ROM_LOAD( "6h.rom", 0xa000, 0x2000, CRC(72a65ba0) SHA1(b1d5146c009469d4c6695f08ea2c6ad5d05b5b9b) )
- ROM_LOAD( "6c.rom", 0xc000, 0x2000, CRC(f1fda22e) SHA1(789881e94743efae01c63c1e3ce8d039cfa0324c) )
- ROM_LOAD( "6d.rom", 0xe000, 0x2000, CRC(f40e6df0) SHA1(48585ac1eff8fb7ed35f56c767d725cae88ff128) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the SOUND CPU */
- ROM_LOAD( "3b.rom", 0xe000, 0x2000, CRC(5a4b3a79) SHA1(2774681ea668403de31ea218d5df3ce64e3b9243) )
-
- ROM_REGION( 0x10000, "sub2", 0 ) /* 64k for the SUB CPU */
- ROM_LOAD( "9r.rom", 0xe000, 0x2000, CRC(5d9f0a28) SHA1(2caef680229180b237f8c4becf052f1a96592efd) )
-
- ROM_REGION( 0x2000, "gfx1", 0 )
- ROM_LOAD( "7j.rom", 0x0000, 0x1000, CRC(27f9db5b) SHA1(12ef817136b45927d7f279952fa19049a1349f60) ) /* characters (set 1) */
- ROM_LOAD( "8j.rom", 0x1000, 0x1000, CRC(15b12ef8) SHA1(e3303656b4e8b988e55a9551e5344e289958f677) ) /* characters (set 2) */
-
- ROM_REGION( 0x2000, "gfx2", 0 )
- ROM_LOAD( "5t.rom", 0x0000, 0x2000, CRC(d50f08f8) SHA1(4e9dda0d5ad1c1b8b3be7edb05b3060f5f63a9c7) ) /* sprites */
-
- ROM_REGION( 0x0520, "proms", 0 )
- ROM_LOAD( "red.prm", 0x0000, 0x0100, CRC(a2880667) SHA1(b24d9b3354d20a7ecc02c428245669c6c86bfd61) ) /* red palette ROM (4 bits) */
- ROM_LOAD( "green.prm", 0x0100, 0x0100, CRC(d6e08bef) SHA1(b0ca7f8a77b7208cf974a8cc565fc91b7f40f51f) ) /* green palette ROM (4 bits) */
- ROM_LOAD( "blue.prm", 0x0200, 0x0100, CRC(b2d69c72) SHA1(e7b1ed698ab0e87872cb3a8f3ec102ca3a753259) ) /* blue palette ROM (4 bits) */
- ROM_LOAD( "chr.prm", 0x0300, 0x0100, CRC(429e8fee) SHA1(7b1899ca3f33f4561b572de1f24d9ea9d7d84b59) ) /* characters */
- ROM_LOAD( "sprite.prm", 0x0400, 0x0100, CRC(9061db07) SHA1(4305d37e613e1d15d37539b152c948648189c2cd) ) /* sprites */
- ROM_LOAD( "palette.prm", 0x0500, 0x0020, CRC(60e856ed) SHA1(dcc9a2dfc728b9ca1ab895008de07e20ebed9da3) ) /* unused - timing? */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound PROMs */
- ROM_LOAD( "sound.prm", 0x0000, 0x0100, CRC(ad43688f) SHA1(072f427453efb1dda8147da61804fff06e1bc4d5) )
-ROM_END
-
-ROM_START( phozons )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the MAIN CPU */
- ROM_LOAD( "6e.bin", 0x8000, 0x2000, CRC(ef822900) SHA1(3551a63bf7067dccee58690775cfec775bc2a472) )
- ROM_LOAD( "6h.bin", 0xa000, 0x2000, CRC(acb7869e) SHA1(947bd12e4db03caa46315cea2ef330dc29bfabde) )
- ROM_LOAD( "6c.bin", 0xc000, 0x2000, CRC(8ffa3e0e) SHA1(4962a60b55baf35d66b1039602def1f5bd15f9de) )
- ROM_LOAD( "6d.bin", 0xe000, 0x2000, CRC(8e6800b3) SHA1(27fa22d4cad255a54ba93b308cef301c2488e057) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the SOUND CPU */
- ROM_LOAD( "3b.rom", 0xe000, 0x2000, CRC(5a4b3a79) SHA1(2774681ea668403de31ea218d5df3ce64e3b9243) ) // 3b.bin
-
- ROM_REGION( 0x10000, "sub2", 0 ) /* 64k for the SUB CPU */
- ROM_LOAD( "9r.rom", 0xe000, 0x2000, CRC(5d9f0a28) SHA1(2caef680229180b237f8c4becf052f1a96592efd) ) // 9r.bin
-
- ROM_REGION( 0x2000, "gfx1", 0 )
- ROM_LOAD( "7j.bin", 0x0000, 0x1000, CRC(312b3ece) SHA1(1d4d3371a42321644ec3669f95abcfe860020868) ) /* characters (set 1) */
- ROM_LOAD( "8j.bin", 0x1000, 0x1000, CRC(d21422a2) SHA1(0268651628d66dc67a3b6bb8fb682b668e7ebbad) ) /* characters (set 2) */
-
- ROM_REGION( 0x2000, "gfx2", 0 )
- ROM_LOAD( "5t.rom", 0x0000, 0x2000, CRC(d50f08f8) SHA1(4e9dda0d5ad1c1b8b3be7edb05b3060f5f63a9c7) ) /* sprites - 5t.bin */
-
- ROM_REGION( 0x0520, "proms", 0 )
- ROM_LOAD( "red.prm", 0x0000, 0x0100, CRC(a2880667) SHA1(b24d9b3354d20a7ecc02c428245669c6c86bfd61) ) /* red palette ROM (4 bits) */
- ROM_LOAD( "green.prm", 0x0100, 0x0100, CRC(d6e08bef) SHA1(b0ca7f8a77b7208cf974a8cc565fc91b7f40f51f) ) /* green palette ROM (4 bits) */
- ROM_LOAD( "blue.prm", 0x0200, 0x0100, CRC(b2d69c72) SHA1(e7b1ed698ab0e87872cb3a8f3ec102ca3a753259) ) /* blue palette ROM (4 bits) */
- ROM_LOAD( "chr.prm", 0x0300, 0x0100, CRC(429e8fee) SHA1(7b1899ca3f33f4561b572de1f24d9ea9d7d84b59) ) /* characters */
- ROM_LOAD( "sprite.prm", 0x0400, 0x0100, CRC(9061db07) SHA1(4305d37e613e1d15d37539b152c948648189c2cd) ) /* sprites */
- ROM_LOAD( "palette.prm", 0x0500, 0x0020, CRC(60e856ed) SHA1(dcc9a2dfc728b9ca1ab895008de07e20ebed9da3) ) /* unused - timing? */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound PROMs */
- ROM_LOAD( "sound.prm", 0x0000, 0x0100, CRC(ad43688f) SHA1(072f427453efb1dda8147da61804fff06e1bc4d5) )
-ROM_END
-
-ROM_START( mappy )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the first CPU */
- ROM_LOAD( "mpx_3.1d", 0xa000, 0x2000, CRC(52e6c708) SHA1(b9722941438e93325e84691ada4e95620bec73b2) )
- ROM_LOAD( "mp1_2.1c", 0xc000, 0x2000, CRC(a958a61c) SHA1(e5198703cdf47b2cd7fc9f2a5fde7bf4ab2275db) )
- ROM_LOAD( "mpx_1.1b", 0xe000, 0x2000, CRC(203766d4) SHA1(1dbc4f42d4c16a08240a221bec27dcc3a8dd7461) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "mp1_4.1k", 0xe000, 0x2000, CRC(8182dd5b) SHA1(f36b57f7f1e79f00b3f07afe1960bca5f5325ee2) )
-
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
- ROM_LOAD( "mp1_5.3b", 0x0000, 0x1000, CRC(16498b9f) SHA1(76610149c65f955484fef1c033ddc3fed3f4e568) )
-
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "mp1_6.3m", 0x0000, 0x2000, CRC(f2d9647a) SHA1(3cc216793c6a5f73c437ad2524563deb3b5e2890) )
- ROM_LOAD( "mp1_7.3n", 0x2000, 0x2000, CRC(757cf2b6) SHA1(8dfbf03953d5219d9eb5fc654ec3392442ba1dc4) )
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "mp1-5.5b", 0x0000, 0x0020, CRC(56531268) SHA1(2e356706c07f43eeb67783fb122bdc7fed1b3589) ) /* palette */
- ROM_LOAD( "mp1-6.4c", 0x0020, 0x0100, CRC(50765082) SHA1(f578e14f15783acb2073644db4a2f0d196cc0957) ) /* characters */
- ROM_LOAD( "mp1-7.5k", 0x0120, 0x0100, CRC(5396bd78) SHA1(2e387e5d8b8cab005f67f821b4db65d0ae8bd362) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "mp1-3.3m", 0x0000, 0x0100, CRC(16a9166a) SHA1(847cbaf7c88616576c410177e066ae1d792ac0ba) )
-ROM_END
-
-ROM_START( mappyj )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the first CPU */
- ROM_LOAD( "mp1_3.1d", 0xa000, 0x2000, CRC(db9d5ab5) SHA1(32a0190f96f9c00c541b24dd17d6ad487938a8bf) )
- ROM_LOAD( "mp1_2.1c", 0xc000, 0x2000, CRC(a958a61c) SHA1(e5198703cdf47b2cd7fc9f2a5fde7bf4ab2275db) )
- ROM_LOAD( "mp1_1.1b", 0xe000, 0x2000, CRC(77c0b492) SHA1(631b73560ac59c3612e692fa59558773639ceda7) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "mp1_4.1k", 0xe000, 0x2000, CRC(8182dd5b) SHA1(f36b57f7f1e79f00b3f07afe1960bca5f5325ee2) )
-
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
- ROM_LOAD( "mp1_5.3b", 0x0000, 0x1000, CRC(16498b9f) SHA1(76610149c65f955484fef1c033ddc3fed3f4e568) )
-
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "mp1_6.3m", 0x0000, 0x2000, CRC(f2d9647a) SHA1(3cc216793c6a5f73c437ad2524563deb3b5e2890) )
- ROM_LOAD( "mp1_7.3n", 0x2000, 0x2000, CRC(757cf2b6) SHA1(8dfbf03953d5219d9eb5fc654ec3392442ba1dc4) )
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "mp1-5.5b", 0x0000, 0x0020, CRC(56531268) SHA1(2e356706c07f43eeb67783fb122bdc7fed1b3589) ) /* palette */
- ROM_LOAD( "mp1-6.4c", 0x0020, 0x0100, CRC(50765082) SHA1(f578e14f15783acb2073644db4a2f0d196cc0957) ) /* characters */
- ROM_LOAD( "mp1-7.5k", 0x0120, 0x0100, CRC(5396bd78) SHA1(2e387e5d8b8cab005f67f821b4db65d0ae8bd362) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "mp1-3.3m", 0x0000, 0x0100, CRC(16a9166a) SHA1(847cbaf7c88616576c410177e066ae1d792ac0ba) )
-ROM_END
-
-ROM_START( todruaga )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the first CPU */
- ROM_LOAD( "td2_3.1d", 0x8000, 0x4000, CRC(fbf16299) SHA1(9abbaaaf0a53aff38df8287f62d091b13146cf13) )
- ROM_LOAD( "td2_1.1b", 0xc000, 0x4000, CRC(b238d723) SHA1(ab8eadd45638ff1ab2dacbd5ab2c6870b9f79086) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "td1_4.1k", 0xe000, 0x2000, CRC(ae9d06d9) SHA1(3d8621fdd74fafa61f342886faa37f0aab50c5a7) )
-
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
- ROM_LOAD( "td1_5.3b", 0x0000, 0x1000, CRC(d32b249f) SHA1(7d7cee4101ef615fb92c3702f89a9823a6231195) )
-
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) )
- ROM_LOAD( "td1_7.3n", 0x2000, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) )
-
- ROM_REGION( 0x0520, "proms", 0 )
- ROM_LOAD( "td1-5.5b", 0x0000, 0x0020, CRC(122cc395) SHA1(a648c53f2e95634bb5b27d79be3fd908021d056e) ) /* palette */
- ROM_LOAD( "td1-6.4c", 0x0020, 0x0100, CRC(8c661d6a) SHA1(1340e4f657f4f2c4ef651a441c3b51632e757d0b) ) /* characters */
- ROM_LOAD( "td1-7.5k", 0x0120, 0x0400, CRC(a86c74dd) SHA1(dfd7d6b2740761c3bcab4c7999d2699d920843e7) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "td1-3.3m", 0x0000, 0x0100, CRC(07104c40) SHA1(16db55525034bacb71e7dc8bd2a7c3c4464d4808) )
-ROM_END
-
-ROM_START( todruagao )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the first CPU */
- ROM_LOAD( "td1_3.1d", 0x8000, 0x4000, CRC(7ab4f5b2) SHA1(65035a5ecdff14bf23e01fe0f5e0935d156d94ff) )
- ROM_LOAD( "td1_1.1b", 0xc000, 0x4000, CRC(8c20ef10) SHA1(12ea4875ce4d4590b88862139d3379ab9f5cec03) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "td1_4.1k", 0xe000, 0x2000, CRC(ae9d06d9) SHA1(3d8621fdd74fafa61f342886faa37f0aab50c5a7) )
-
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
- ROM_LOAD( "td1_5.3b", 0x0000, 0x1000, CRC(d32b249f) SHA1(7d7cee4101ef615fb92c3702f89a9823a6231195) )
-
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) )
- ROM_LOAD( "td1_7.3n", 0x2000, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) )
-
- ROM_REGION( 0x0520, "proms", 0 )
- ROM_LOAD( "td1-5.5b", 0x0000, 0x0020, CRC(122cc395) SHA1(a648c53f2e95634bb5b27d79be3fd908021d056e) ) /* palette */
- ROM_LOAD( "td1-6.4c", 0x0020, 0x0100, CRC(8c661d6a) SHA1(1340e4f657f4f2c4ef651a441c3b51632e757d0b) ) /* characters */
- ROM_LOAD( "td1-7.5k", 0x0120, 0x0400, CRC(a86c74dd) SHA1(dfd7d6b2740761c3bcab4c7999d2699d920843e7) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "td1-3.3m", 0x0000, 0x0100, CRC(07104c40) SHA1(16db55525034bacb71e7dc8bd2a7c3c4464d4808) )
-ROM_END
-
-ROM_START( todruagas )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the first CPU */
- ROM_LOAD( "3b.bin", 0x8000, 0x4000, CRC(85d052d9) SHA1(03d4d4b5b0cd49d2a4acd8479bc9975a5fde6c4c) )
- ROM_LOAD( "1b.bin", 0xc000, 0x4000, CRC(a5db267a) SHA1(f140fd7b4d7e939f3a20ca5a15c16e5b8999c47d) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "td1_4.1k", 0xe000, 0x2000, CRC(ae9d06d9) SHA1(3d8621fdd74fafa61f342886faa37f0aab50c5a7) )
-
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
- ROM_LOAD( "td1_5.3b", 0x0000, 0x1000, CRC(d32b249f) SHA1(7d7cee4101ef615fb92c3702f89a9823a6231195) )
-
- ROM_REGION( 0x4000, "gfx2", 0 )
- ROM_LOAD( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) )
- ROM_LOAD( "td1_7.3n", 0x2000, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) )
-
- ROM_REGION( 0x0520, "proms", 0 )
- ROM_LOAD( "td1-5.5b", 0x0000, 0x0020, CRC(122cc395) SHA1(a648c53f2e95634bb5b27d79be3fd908021d056e) ) /* palette */
- ROM_LOAD( "td1-6.4c", 0x0020, 0x0100, CRC(8c661d6a) SHA1(1340e4f657f4f2c4ef651a441c3b51632e757d0b) ) /* characters */
- ROM_LOAD( "td1-7.5k", 0x0120, 0x0400, CRC(a86c74dd) SHA1(dfd7d6b2740761c3bcab4c7999d2699d920843e7) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "td1-3.3m", 0x0000, 0x0100, CRC(07104c40) SHA1(16db55525034bacb71e7dc8bd2a7c3c4464d4808) )
-ROM_END
-
-ROM_START( digdug2 )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the first CPU */
- ROM_LOAD( "d23_3.1d", 0x8000, 0x4000, CRC(cc155338) SHA1(d6796479ebb00081e9ae281380a4ce75f730766e) )
- ROM_LOAD( "d23_1.1b", 0xc000, 0x4000, CRC(40e46af8) SHA1(698a5c425e23627331d85216a4edee9c391e5749) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "d21_4.1k", 0xe000, 0x2000, CRC(737443b1) SHA1(0e46204089cc6e5ffab0d2a62f9a1728f8c35948) )
-
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
- ROM_LOAD( "d21_5.3b", 0x0000, 0x1000, CRC(afcb4509) SHA1(c9a54df22b0b92efbe7417a00200587225906b46) )
-
- ROM_REGION( 0x8000, "gfx2", 0 )
- ROM_LOAD( "d21_6.3m", 0x0000, 0x4000, CRC(df1f4ad8) SHA1(004fba630018dbf03c4b0e284c98077e19fface3) )
- ROM_LOAD( "d21_7.3n", 0x4000, 0x4000, CRC(ccadb3ea) SHA1(77d8d8e6039272f73e63c8f76084138ec613365a) )
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "d21-5.5b", 0x0000, 0x0020, CRC(9b169db5) SHA1(77e840d10ab59708a051c3b15305b33d431ee06d) ) /* palette */
- ROM_LOAD( "d21-6.4c", 0x0020, 0x0100, CRC(55a88695) SHA1(bd6bd641c9f220b6a2cc414a1117d5c089571400) ) /* characters */
- ROM_LOAD( "d21-7.5k", 0x0120, 0x0100, CRC(9c55feda) SHA1(30a4593726f5a4791e0812fd593e592087e730e3) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "d21-3.3m", 0x0000, 0x0100, CRC(e0074ee2) SHA1(f4f02977130110be52f4dd82fc3c0d02f45778b9) )
-ROM_END
-
-ROM_START( digdug2o )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the first CPU */
- ROM_LOAD( "d21_3.1d", 0x8000, 0x4000, CRC(be7ec80b) SHA1(a053274ffbf3200e9b89a8be1bd91744acb4a823) )
- ROM_LOAD( "d21_1.1b", 0xc000, 0x4000, CRC(5c77c0d4) SHA1(56709e5db1686fd996d21c1005accf34e2d863e1) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "d21_4.1k", 0xe000, 0x2000, CRC(737443b1) SHA1(0e46204089cc6e5ffab0d2a62f9a1728f8c35948) )
-
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
- ROM_LOAD( "d21_5.3b", 0x0000, 0x1000, CRC(afcb4509) SHA1(c9a54df22b0b92efbe7417a00200587225906b46) )
-
- ROM_REGION( 0x8000, "gfx2", 0 )
- ROM_LOAD( "d21_6.3m", 0x0000, 0x4000, CRC(df1f4ad8) SHA1(004fba630018dbf03c4b0e284c98077e19fface3) )
- ROM_LOAD( "d21_7.3n", 0x4000, 0x4000, CRC(ccadb3ea) SHA1(77d8d8e6039272f73e63c8f76084138ec613365a) )
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "d21-5.5b", 0x0000, 0x0020, CRC(9b169db5) SHA1(77e840d10ab59708a051c3b15305b33d431ee06d) ) /* palette */
- ROM_LOAD( "d21-6.4c", 0x0020, 0x0100, CRC(55a88695) SHA1(bd6bd641c9f220b6a2cc414a1117d5c089571400) ) /* characters */
- ROM_LOAD( "d2x-7.5k", 0x0120, 0x0100, CRC(1525a4d1) SHA1(bbedb0cf5957671fca1229d38cb33086356813e1) ) /* sprites */
- /* the sprite lookup table is different from the other set, could be a bad dump */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "d21-3.3m", 0x0000, 0x0100, CRC(e0074ee2) SHA1(f4f02977130110be52f4dd82fc3c0d02f45778b9) )
-ROM_END
-
-ROM_START( motos )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code for the first CPU */
- ROM_LOAD( "mo1_3.1d", 0x8000, 0x4000, CRC(1104abb2) SHA1(ade809a73ac24494b9f95f65b7592df5f86dce60) )
- ROM_LOAD( "mo1_1.1b", 0xc000, 0x4000, CRC(57b157e2) SHA1(b050495fcc4a4d93551b29d4f05e49f64017c870) )
-
- ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
- ROM_LOAD( "mo1_4.1k", 0xe000, 0x2000, CRC(55e45d21) SHA1(a8b195acfec542734751de29c9dafc2b165a5881) )
-
- ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
- ROM_LOAD( "mo1_5.3b", 0x0000, 0x1000, CRC(5d4a2a22) SHA1(4af9bf2ae9bb78d2d029ef38809181ffa3c0eb66) )
-
- ROM_REGION( 0x8000, "gfx2", 0 )
- ROM_LOAD( "mo1_6.3m", 0x0000, 0x4000, CRC(2f0e396e) SHA1(664679f9d3d74a3fccb086af910392b4fe40c9bc) )
- ROM_LOAD( "mo1_7.3n", 0x4000, 0x4000, CRC(cf8a3b86) SHA1(2b49cdec516e23783f2a291633d81ab8bd0245fc) )
-
- ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "mo1-5.5b", 0x0000, 0x0020, CRC(71972383) SHA1(66b0619affcc5168b099108800a941d6e2416ab0) ) /* palette */
- ROM_LOAD( "mo1-6.4c", 0x0020, 0x0100, CRC(730ba7fb) SHA1(24eb167266752b064689662e3ef0f62d0407ac26) ) /* characters */
- ROM_LOAD( "mo1-7.5k", 0x0120, 0x0100, CRC(7721275d) SHA1(543adb5348db81ea82a5c039451001ebd82735e3) ) /* sprites */
-
- ROM_REGION( 0x0100, "namco", 0 ) /* sound prom */
- ROM_LOAD( "mo1-3.3m", 0x0000, 0x0100, CRC(2accdfb4) SHA1(e21a0618c0f8e35ce26666b6850ac9c0d95d7971) )
-ROM_END
-
-
-
-void mappy_state::init_grobda()
-{
- /* The speech in Grobda might not be a standard Namco sound feature, but rather a hack.
- The hardware automatically cycles the bottom 6 address lines of sound RAM, so they
- probably added a latch loaded when the bottom 4 lines are 0010 (which corresponds
- to locations not used by the sound hardware).
- The program writes the same value to 0x02, 0x12, 0x22 and 0x32.
- However, removing the 15XX from the board causes sound to disappear completely, so
- the 15XX may still play some part in conveying speech to the DAC.
- */
- write8_delegate dac_w(*this);
- dac_w.set(*m_dac, FUNC(dac_byte_interface::data_w));
- m_subcpu->space(AS_PROGRAM).install_write_handler(0x0002, 0x0002, dac_w);
-}
-
-
-void mappy_state::init_digdug2()
-{
- /* appears to not use the watchdog */
- m_maincpu->space(AS_PROGRAM).nop_write(0x8000, 0x8000);
-}
-
-
-/* 2x6809, static tilemap, 2bpp sprites (Super Pacman type) */
-GAME( 1982, superpac, 0, superpac, superpac, mappy_state, empty_init, ROT90, "Namco", "Super Pac-Man", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, superpacm, superpac, superpac, superpac, mappy_state, empty_init, ROT90, "Namco (Bally Midway license)", "Super Pac-Man (Midway)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, pacnpal, 0, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac & Pal", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, pacnpal2, pacnpal, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac & Pal (older)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, pacnchmp, pacnpal, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac-Man & Chomp Chomp", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, grobda, 0, grobda, grobda, mappy_state, init_grobda, ROT90, "Namco", "Grobda (New Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, grobda2, grobda, grobda, grobda, mappy_state, init_grobda, ROT90, "Namco", "Grobda (Old Ver. set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, grobda3, grobda, grobda, grobda, mappy_state, init_grobda, ROT90, "Namco", "Grobda (Old Ver. set 2)", MACHINE_SUPPORTS_SAVE )
-
-/* 3x6809, static tilemap, 2bpp sprites (Gaplus type) */
-GAME( 1983, phozon, 0, phozon, phozon, mappy_state, empty_init, ROT90, "Namco", "Phozon (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, phozons, phozon, phozon, phozon, mappy_state, empty_init, ROT90, "Namco (Sidam license)", "Phozon (Sidam)", MACHINE_SUPPORTS_SAVE )
-
-/* 2x6809, scroling tilemap, 4bpp sprites (Super Pacman type) */
-GAME( 1983, mappy, 0, mappy, mappy, mappy_state, empty_init, ROT90, "Namco", "Mappy (US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, mappyj, mappy, mappy, mappy, mappy_state, empty_init, ROT90, "Namco", "Mappy (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, todruaga, 0, todruaga, todruaga, mappy_state, empty_init, ROT90, "Namco", "The Tower of Druaga (New Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, todruagao, todruaga, todruaga, todruaga, mappy_state, empty_init, ROT90, "Namco", "The Tower of Druaga (Old Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, todruagas, todruaga, todruaga, todruaga, mappy_state, empty_init, ROT90, "bootleg? (Sidam)", "The Tower of Druaga (Sidam)", MACHINE_SUPPORTS_SAVE )
-GAME( 1985, digdug2, 0, digdug2, digdug2, mappy_state, init_digdug2, ROT90, "Namco", "Dig Dug II (New Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1985, digdug2o, digdug2, digdug2, digdug2, mappy_state, init_digdug2, ROT90, "Namco", "Dig Dug II (Old Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1985, motos, 0, motos, motos, mappy_state, empty_init, ROT90, "Namco", "Motos", MACHINE_SUPPORTS_SAVE )