1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
// license:BSD-3-Clause
// copyright-holders:
/*
Belly Bomber by Namco (1994)
Dangerous Bar by Namco (1994)
https://www.youtube.com/watch?v=XwZoXtkZ9qo
Same Same Panic by Namco (1993)
https://www.youtube.com/watch?v=YDJW7ch45Yw
Hardware notes:
Main PCB named Hi-Pric P41 B 8813960102 (8813970102)
- MC68HC11K1 (main CPU)
- HD68B09P (audio CPU)
- CY7C132 DPRAM
- C140 (custom Namco audio chip)
- C121 (custom Namco glue logic for the 6809)
- OSC1 49.1520MHz
- 1 4-dip bank
For Dangerous Bar:
Led display PCB named Namco ST-M4
CPU: Sharp LZ8415M
Xtal: Marked "D122C5"
Display controller: Seiko-Epson SED1351F-0A
*/
#include "emu.h"
#include "cpu/m6809/m6809.h"
#include "cpu/mc68hc11/mc68hc11.h"
#include "sound/c140.h"
#include "speaker.h"
namespace {
class dangbar_state : public driver_device
{
public:
dangbar_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
{ }
void dangbar(machine_config &config);
protected:
virtual void machine_start() override;
private:
required_device<mc68hc11_cpu_device> m_maincpu;
void main_map(address_map &map);
void audio_map(address_map &map);
};
void dangbar_state::machine_start()
{
}
void dangbar_state::main_map(address_map &map)
{
map(0x8000, 0xffff).rom().region("maincpu", 0x8000);
}
void dangbar_state::audio_map(address_map &map) // TODO: audio section seems similar to namcos2.cpp / namcos21.cpp
{
map(0xd000, 0xffff).rom().region("audiocpu", 0x01000);
}
static INPUT_PORTS_START( dangbar )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW")
PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "DSW:1")
PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "DSW:2")
PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "DSW:3")
PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "DSW:4")
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) // only 4 dips
INPUT_PORTS_END
void dangbar_state::dangbar(machine_config &config)
{
// basic machine hardware
MC68HC11K1(config, m_maincpu, 49.152_MHz_XTAL / 4); // divider guessed
m_maincpu->set_addrmap(AS_PROGRAM, &dangbar_state::main_map);
mc6809_device &audiocpu(MC6809(config, "audiocpu", 49.152_MHz_XTAL / 24)); // HD68B09P, divider guessed from other Namco drivers
audiocpu.set_addrmap(AS_PROGRAM, &dangbar_state::audio_map);
// video hardware
// TODO: LED screen
// sound hardware
SPEAKER(config, "mono").front_center(); // TODO: verify if stereo
C140(config, "c140", 49.152_MHz_XTAL / 384 / 6).add_route(ALL_OUTPUTS, "mono", 0.75); // 21.333kHz, copied from other Namco drivers
}
/** Belly Bomber (named Dodongadon in Japan).
Main PCB named "Namco Main PCB / Hi-Pric P41 B 8813960102 (8813970102)".
Additional I/O PCB named "Namco M98 Drive PCB / Hi-Pric P1 B" with three Oki M82C55A-2 and four Fujitsu MB86520. */
ROM_START( bellybmbr )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "da_2_mp_0.2c", 0x00000, 0x08000, CRC(7e141f1f) SHA1(69e13d4d1d68486b16f5527138605f29b599e57d) ) // 27C256
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "da_2_sn_0.8a", 0x00000, 0x20000, CRC(f98bb7ef) SHA1(d6124ee630a8759ae010062432598f06442c81f1) )
ROM_REGION16_BE( 0x200000, "c140", 0 )
ROM_LOAD16_BYTE( "da_2_vd_0.14a", 0x000000, 0x080000, CRC(4cfe110a) SHA1(bbdb01c88a160e33f5ac1cec0cb3e35b2e172ccb) )
ROM_LOAD16_BYTE( "da_1_voi-2a.13a", 0x100000, 0x080000, CRC(1e365e55) SHA1(fcad79d4603b9a2711d21f33fc2959b9765bacf4) )
ROM_END
ROM_START( dangbar )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "drb1_mprod_mpr.2c", 0x00000, 0x10000, CRC(0f197b71) SHA1(acd7ae6a843fd963d9c0aedfe18183b77c797da3) ) // 1st half is 0xff filled
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "drb1_snd0_snd.8a", 0x00000, 0x20000, CRC(8d424d04) SHA1(12dfd7b8bed22460634c34e57c18c31e38e30b4d) ) // mostly 0xff filled
ROM_REGION16_BE( 0x200000, "c140", 0 )
ROM_LOAD16_BYTE( "drb1_voi1.13a", 0x000000, 0x080000, CRC(3891186e) SHA1(459e68a2549b946788e8070c7ff4eeb92ad6f5c8) )
ROM_LOAD16_BYTE( "drb1_voi2.14a", 0x100000, 0x080000, CRC(ba704115) SHA1(0d027bf7cd9cf0b9d0b5dff7b8ae88ad6b82e45f) )
ROM_REGION( 0x20000, "ledcpu", 0 )
ROM_LOAD( "drb1_dot0.ic13", 0x00000, 0x20000, CRC(aeaeb246) SHA1(b470f3450e763411ced795abcc4c8c810dd9b956) )
ROM_END
ROM_START( sspanic )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "jp1_mpr0.2c", 0x00000, 0x10000, CRC(04e16a89) SHA1(6211d901cf723ed03a583b38813ee77329e15eea) ) // 0xxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "jp1_snd.8a", 0x00000, 0x20000, CRC(46e2401c) SHA1(0edddd42e17da67c57f9c778c5fbf7a76ed287f5) ) // x11xxxxxxxxxxxxxx = 0xFF
ROM_REGION16_BE( 0x200000, "c140", 0 )
ROM_LOAD16_BYTE( "jp0_voi1.14a", 0x000000, 0x080000, CRC(49a943ee) SHA1(fae4bdc2812a8f90de980845185161c14608ca5a) )
ROM_LOAD16_BYTE( "jp0_voi2.13a", 0x100000, 0x080000, CRC(55bb4550) SHA1(961e50366159afd25cd38e3a37c3a06fcfdff1a7) )
ROM_END
} // Anonymous namespace
GAME( 1993, sspanic, 0, dangbar, dangbar, dangbar_state, empty_init, ROT0, "Namco", "Same Same Panic", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1994, dangbar, 0, dangbar, dangbar, dangbar_state, empty_init, ROT0, "Namco", "Dangerous Bar", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1994, bellybmbr, 0, dangbar, dangbar, dangbar_state, empty_init, ROT0, "Namco", "Belly Bomber", MACHINE_IS_SKELETON_MECHANICAL )
|