trunk/src/mess/drivers/hh_hmcs40.c
| r248520 | r248521 | |
| 50 | 50 | @45 HD38820A 1982, Coleco Donkey Kong |
| 51 | 51 | @49 HD38820A 1983, Bandai Zackman |
| 52 | 52 | @61 HD38820A 1983, Coleco Ms. Pac-Man |
| 53 | | *63 HD38820A 1983, Bandai Pengo |
| 54 | | *65 HD38820A 1983, Bandai Burger Time |
| 53 | @63 HD38820A 1983, Bandai Pengo |
| 54 | @65 HD38820A 1983, Bandai Burger Time (PT-389) |
| 55 | 55 | @69 HD38820A 1983, Gakken Dig Dug |
| 56 | 56 | @70 HD38820A 1983, Parker Brothers Q*Bert |
| 57 | 57 | @85 HD38820A 1984, Bandai Machine Man (PT-438) |
| r248520 | r248521 | |
| 95 | 95 | hh_hmcs40_state(const machine_config &mconfig, device_type type, const char *tag) |
| 96 | 96 | : driver_device(mconfig, type, tag), |
| 97 | 97 | m_maincpu(*this, "maincpu"), |
| 98 | m_audiocpu(*this, "audiocpu"), |
| 98 | 99 | m_inp_matrix(*this, "IN"), |
| 99 | 100 | m_speaker(*this, "speaker"), |
| 100 | 101 | m_display_wait(33), |
| r248520 | r248521 | |
| 104 | 105 | |
| 105 | 106 | // devices |
| 106 | 107 | required_device<cpu_device> m_maincpu; |
| 108 | optional_device<cpu_device> m_audiocpu; |
| 107 | 109 | optional_ioport_array<7> m_inp_matrix; // max 7 |
| 108 | 110 | optional_device<speaker_sound_device> m_speaker; |
| 109 | 111 | |
| r248520 | r248521 | |
| 974 | 976 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
| 975 | 977 | |
| 976 | 978 | // update display |
| 977 | | |
| 978 | | // hmm plate desc. wrong? |
| 979 | | // x, 7, 8, 9, 6, 5, 4, 3, 0, 3, 1, 2,16,10,17,11,12,13,14,15 |
| 980 | | // 19,18,17,16,15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 |
| 981 | | // , , , , , , , , , , , , , , , , , , , |
| 982 | | |
| 983 | 979 | UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,6,7,8,9,10,5,4,3,2,1,0); |
| 984 | | UINT32 plate = m_plate;//BITSWAP24(m_plate,23,22,21,20, |
| 980 | UINT32 plate = BITSWAP24(m_plate,23,22,21,20,5,7,0,1,2,3,4,6,19,16,17,18,15,14,13,12,10,8,9,11) | 0x800; |
| 985 | 981 | display_matrix(20, 11, plate, grid); |
| 986 | 982 | } |
| 987 | 983 | |
| r248520 | r248521 | |
| 1007 | 1003 | |
| 1008 | 1004 | void bzaxxon_state::update_int1() |
| 1009 | 1005 | { |
| 1010 | | // INT0 on multiplexed inputs |
| 1006 | // INT1 on multiplexed inputs |
| 1011 | 1007 | set_interrupt(1, read_inputs(4)); |
| 1012 | 1008 | } |
| 1013 | 1009 | |
| r248520 | r248521 | |
| 1187 | 1183 | |
| 1188 | 1184 | /*************************************************************************** |
| 1189 | 1185 | |
| 1186 | Bandai Pengo (manufactured in Japan, licensed from Sega) |
| 1187 | * PCB label FL Pengo(in katakana) |
| 1188 | * Hitachi QFP HD38820A63 MCU |
| 1189 | * cyan/red/blue VFD display Futaba DM-68ZK 3D DM-63 |
| 1190 | |
| 1191 | NOTE!: MESS external artwork is recommended |
| 1192 | |
| 1193 | ***************************************************************************/ |
| 1194 | |
| 1195 | class bpengo_state : public hh_hmcs40_state |
| 1196 | { |
| 1197 | public: |
| 1198 | bpengo_state(const machine_config &mconfig, device_type type, const char *tag) |
| 1199 | : hh_hmcs40_state(mconfig, type, tag) |
| 1200 | { } |
| 1201 | |
| 1202 | void prepare_display(); |
| 1203 | DECLARE_WRITE8_MEMBER(plate_w); |
| 1204 | DECLARE_WRITE16_MEMBER(grid_w); |
| 1205 | |
| 1206 | void update_int0(); |
| 1207 | DECLARE_INPUT_CHANGED_MEMBER(input_changed); |
| 1208 | }; |
| 1209 | |
| 1210 | // handlers |
| 1211 | |
| 1212 | void bpengo_state::prepare_display() |
| 1213 | { |
| 1214 | UINT8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7); |
| 1215 | UINT32 plate = BITSWAP32(m_plate,31,30,29,28,23,22,21,16,17,18,19,20,27,26,25,24,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0); |
| 1216 | display_matrix(25, 8, plate, grid); |
| 1217 | } |
| 1218 | |
| 1219 | WRITE8_MEMBER(bpengo_state::plate_w) |
| 1220 | { |
| 1221 | // R0x-R6x: vfd matrix plate |
| 1222 | int shift = offset * 4; |
| 1223 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
| 1224 | prepare_display(); |
| 1225 | } |
| 1226 | |
| 1227 | WRITE16_MEMBER(bpengo_state::grid_w) |
| 1228 | { |
| 1229 | // D10: speaker out |
| 1230 | m_speaker->level_w(data >> 10 & 1); |
| 1231 | |
| 1232 | // D12-D15: input mux |
| 1233 | UINT8 inp_mux = data >> 12 & 0xf; |
| 1234 | if (inp_mux != m_inp_mux) |
| 1235 | { |
| 1236 | m_inp_mux = inp_mux; |
| 1237 | update_int0(); |
| 1238 | } |
| 1239 | |
| 1240 | // D0-D7: vfd matrix grid |
| 1241 | m_grid = data & 0xff; |
| 1242 | prepare_display(); |
| 1243 | } |
| 1244 | |
| 1245 | void bpengo_state::update_int0() |
| 1246 | { |
| 1247 | // INT0 on multiplexed inputs |
| 1248 | set_interrupt(0, read_inputs(4)); |
| 1249 | } |
| 1250 | |
| 1251 | |
| 1252 | // config |
| 1253 | |
| 1254 | static INPUT_PORTS_START( bpengo ) |
| 1255 | PORT_START("IN.0") // D12 INT0 |
| 1256 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, bpengo_state, input_changed, NULL) |
| 1257 | |
| 1258 | PORT_START("IN.1") // D13 INT0 |
| 1259 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, bpengo_state, input_changed, NULL) |
| 1260 | |
| 1261 | PORT_START("IN.2") // D14 INT0 |
| 1262 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bpengo_state, input_changed, NULL) |
| 1263 | |
| 1264 | PORT_START("IN.3") // D15 INT0 |
| 1265 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bpengo_state, input_changed, NULL) |
| 1266 | |
| 1267 | PORT_START("IN.4") // INT1 |
| 1268 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1) |
| 1269 | |
| 1270 | PORT_START("IN.5") // port D |
| 1271 | PORT_CONFNAME( 0x0800, 0x0000, "Factory Test" ) |
| 1272 | PORT_CONFSETTING( 0x0000, DEF_STR( Off ) ) |
| 1273 | PORT_CONFSETTING( 0x0800, DEF_STR( On ) ) |
| 1274 | PORT_BIT( 0xf7ff, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 1275 | INPUT_PORTS_END |
| 1276 | |
| 1277 | INPUT_CHANGED_MEMBER(bpengo_state::input_changed) |
| 1278 | { |
| 1279 | update_int0(); |
| 1280 | } |
| 1281 | |
| 1282 | |
| 1283 | static MACHINE_CONFIG_START( bpengo, bpengo_state ) |
| 1284 | |
| 1285 | /* basic machine hardware */ |
| 1286 | MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation |
| 1287 | MCFG_HMCS40_WRITE_R_CB(0, WRITE8(bpengo_state, plate_w)) |
| 1288 | MCFG_HMCS40_WRITE_R_CB(1, WRITE8(bpengo_state, plate_w)) |
| 1289 | MCFG_HMCS40_WRITE_R_CB(2, WRITE8(bpengo_state, plate_w)) |
| 1290 | MCFG_HMCS40_WRITE_R_CB(3, WRITE8(bpengo_state, plate_w)) |
| 1291 | MCFG_HMCS40_WRITE_R_CB(4, WRITE8(bpengo_state, plate_w)) |
| 1292 | MCFG_HMCS40_WRITE_R_CB(5, WRITE8(bpengo_state, plate_w)) |
| 1293 | MCFG_HMCS40_WRITE_R_CB(6, WRITE8(bpengo_state, plate_w)) |
| 1294 | MCFG_HMCS40_WRITE_D_CB(WRITE16(bpengo_state, grid_w)) |
| 1295 | MCFG_HMCS40_READ_D_CB(IOPORT("IN.5")) |
| 1296 | |
| 1297 | MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) |
| 1298 | MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test) |
| 1299 | |
| 1300 | /* no video! */ |
| 1301 | |
| 1302 | /* sound hardware */ |
| 1303 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1304 | MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) |
| 1305 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1306 | MACHINE_CONFIG_END |
| 1307 | |
| 1308 | |
| 1309 | |
| 1310 | |
| 1311 | |
| 1312 | /*************************************************************************** |
| 1313 | |
| 1314 | Bandai Burger Time (manufactured in Japan, licensed from Data East) |
| 1315 | * PCB label Kaken Corp. PT-389 Burger Time |
| 1316 | * Hitachi QFP HD38820A65 MCU |
| 1317 | * cyan/red/green VFD display NEC FIP6AM25T no. 21-21 |
| 1318 | |
| 1319 | NOTE!: MESS external artwork is recommended |
| 1320 | |
| 1321 | ***************************************************************************/ |
| 1322 | |
| 1323 | class bbtime_state : public hh_hmcs40_state |
| 1324 | { |
| 1325 | public: |
| 1326 | bbtime_state(const machine_config &mconfig, device_type type, const char *tag) |
| 1327 | : hh_hmcs40_state(mconfig, type, tag) |
| 1328 | { } |
| 1329 | |
| 1330 | void prepare_display(); |
| 1331 | DECLARE_WRITE8_MEMBER(plate_w); |
| 1332 | DECLARE_WRITE16_MEMBER(grid_w); |
| 1333 | |
| 1334 | void update_int0(); |
| 1335 | DECLARE_INPUT_CHANGED_MEMBER(input_changed); |
| 1336 | }; |
| 1337 | |
| 1338 | // handlers |
| 1339 | |
| 1340 | void bbtime_state::prepare_display() |
| 1341 | { |
| 1342 | UINT8 grid = BITSWAP8(m_grid,7,6,0,1,2,3,4,5); |
| 1343 | UINT32 plate = BITSWAP32(m_plate,31,30,29,28,25,24,26,27,22,23,15,14,12,11,10,8,7,6,4,1,5,9,13,3,2,16,17,18,19,20,0,21) | 0x1; |
| 1344 | display_matrix(28, 6, plate, grid); |
| 1345 | } |
| 1346 | |
| 1347 | WRITE8_MEMBER(bbtime_state::plate_w) |
| 1348 | { |
| 1349 | // R0x-R6x: vfd matrix plate |
| 1350 | int shift = offset * 4; |
| 1351 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
| 1352 | prepare_display(); |
| 1353 | } |
| 1354 | |
| 1355 | WRITE16_MEMBER(bbtime_state::grid_w) |
| 1356 | { |
| 1357 | // D3: speaker out |
| 1358 | m_speaker->level_w(data >> 3 & 1); |
| 1359 | |
| 1360 | // D10-D14: input mux |
| 1361 | UINT8 inp_mux = data >> 10 & 0x1f; |
| 1362 | if (inp_mux != m_inp_mux) |
| 1363 | { |
| 1364 | m_inp_mux = inp_mux; |
| 1365 | update_int0(); |
| 1366 | } |
| 1367 | |
| 1368 | // D4-D9: vfd matrix grid |
| 1369 | m_grid = data >> 4 & 0x3f; |
| 1370 | prepare_display(); |
| 1371 | } |
| 1372 | |
| 1373 | void bbtime_state::update_int0() |
| 1374 | { |
| 1375 | // INT0 on multiplexed inputs |
| 1376 | set_interrupt(0, read_inputs(5)); |
| 1377 | } |
| 1378 | |
| 1379 | |
| 1380 | // config |
| 1381 | |
| 1382 | static INPUT_PORTS_START( bbtime ) |
| 1383 | PORT_START("IN.0") // D10 INT0 |
| 1384 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bbtime_state, input_changed, NULL) |
| 1385 | |
| 1386 | PORT_START("IN.1") // D11 INT0 |
| 1387 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bbtime_state, input_changed, NULL) |
| 1388 | |
| 1389 | PORT_START("IN.2") // D12 INT0 |
| 1390 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, bbtime_state, input_changed, NULL) |
| 1391 | |
| 1392 | PORT_START("IN.3") // D13 INT0 |
| 1393 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, bbtime_state, input_changed, NULL) |
| 1394 | |
| 1395 | PORT_START("IN.4") // D14 INT0 |
| 1396 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, bbtime_state, input_changed, NULL) |
| 1397 | |
| 1398 | PORT_START("IN.5") // INT1 |
| 1399 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1) |
| 1400 | INPUT_PORTS_END |
| 1401 | |
| 1402 | INPUT_CHANGED_MEMBER(bbtime_state::input_changed) |
| 1403 | { |
| 1404 | update_int0(); |
| 1405 | } |
| 1406 | |
| 1407 | |
| 1408 | static MACHINE_CONFIG_START( bbtime, bbtime_state ) |
| 1409 | |
| 1410 | /* basic machine hardware */ |
| 1411 | MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation |
| 1412 | MCFG_HMCS40_WRITE_R_CB(0, WRITE8(bbtime_state, plate_w)) |
| 1413 | MCFG_HMCS40_WRITE_R_CB(1, WRITE8(bbtime_state, plate_w)) |
| 1414 | MCFG_HMCS40_WRITE_R_CB(2, WRITE8(bbtime_state, plate_w)) |
| 1415 | MCFG_HMCS40_WRITE_R_CB(3, WRITE8(bbtime_state, plate_w)) |
| 1416 | MCFG_HMCS40_WRITE_R_CB(4, WRITE8(bbtime_state, plate_w)) |
| 1417 | MCFG_HMCS40_WRITE_R_CB(5, WRITE8(bbtime_state, plate_w)) |
| 1418 | MCFG_HMCS40_WRITE_R_CB(6, WRITE8(bbtime_state, plate_w)) |
| 1419 | MCFG_HMCS40_WRITE_D_CB(WRITE16(bbtime_state, grid_w)) |
| 1420 | |
| 1421 | MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) |
| 1422 | MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test) |
| 1423 | |
| 1424 | /* no video! */ |
| 1425 | |
| 1426 | /* sound hardware */ |
| 1427 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1428 | MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) |
| 1429 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1430 | MACHINE_CONFIG_END |
| 1431 | |
| 1432 | |
| 1433 | |
| 1434 | |
| 1435 | |
| 1436 | /*************************************************************************** |
| 1437 | |
| 1190 | 1438 | Bandai Dokodemo Dorayaki Doraemon (FL LSI Game Push Up) (manufactured in Japan) |
| 1191 | 1439 | * PCB label Kaken Corp PT-412 FL-Doreamon(in katakana) |
| 1192 | 1440 | * Hitachi HD38800B43 MCU |
| r248520 | r248521 | |
| 1622 | 1870 | |
| 1623 | 1871 | void cdkong_state::prepare_display() |
| 1624 | 1872 | { |
| 1625 | | UINT32 plate = BITSWAP32(m_plate,31,30,29,24,0,16,8,1,23,17,9,2,18,10,25,27,26,3,15,27,11,11,14,22,6,13,21,5,19,12,20,4); |
| 1873 | UINT32 plate = BITSWAP32(m_plate,31,30,29,24,0,16,8,1,23,17,9,2,18,10,25,27,26,3,15,27,11,11,14,22,6,13,21,5,19,12,20,4) | 0x800800; |
| 1626 | 1874 | display_matrix(29, 11, plate, m_grid); |
| 1627 | 1875 | } |
| 1628 | 1876 | |
| r248520 | r248521 | |
| 1991 | 2239 | |
| 1992 | 2240 | // update display |
| 1993 | 2241 | UINT16 grid = BITSWAP16(m_grid,15,14,13,11,10,9,8,7,6,5,4,3,2,1,0,1); |
| 1994 | | UINT64 plate = BIT(m_plate,15)<<32 | BITSWAP32(m_plate,14,13,12,4,5,6,7,24,23,25,22,21,20,13,24,3,19,14,12,11,24,2,10,8,7,25,0,9,1,18,17,16); |
| 2242 | UINT64 plate = BIT(m_plate,15)<<32 | BITSWAP32(m_plate,14,13,12,4,5,6,7,24,23,25,22,21,20,13,24,3,19,14,12,11,24,2,10,8,7,25,0,9,1,18,17,16) | 0x1004080; |
| 1995 | 2243 | display_matrix(33, 12, plate, grid); |
| 1996 | 2244 | } |
| 1997 | 2245 | |
| r248520 | r248521 | |
| 2703 | 2951 | |
| 2704 | 2952 | // update display |
| 2705 | 2953 | UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,0,1,2,3,4,5,6,7,8,9,10); |
| 2706 | | UINT32 plate = BITSWAP32(m_plate,31,30,29,28,27,26,25,6,7,8,12,13,14,15,16,17,18,17,16,12,11,10,9,8,7,6,5,4,3,2,1,0); |
| 2954 | UINT32 plate = BITSWAP32(m_plate,31,30,29,28,27,26,25,6,7,8,12,13,14,15,16,17,18,17,16,12,11,10,9,8,7,6,5,4,3,2,1,0) | 0x8000; |
| 2707 | 2955 | display_matrix(32, 11, plate, grid); |
| 2708 | 2956 | } |
| 2709 | 2957 | |
| r248520 | r248521 | |
| 3105 | 3353 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
| 3106 | 3354 | |
| 3107 | 3355 | // update display |
| 3108 | | UINT32 plate = BITSWAP32(m_plate,31,30,24,25,26,27,28,15,14,29,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,17,18,19,20,21,22,23); |
| 3356 | UINT32 plate = BITSWAP32(m_plate,31,30,24,25,26,27,28,15,14,29,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,17,18,19,20,21,22,23) | 0x400000; |
| 3109 | 3357 | display_matrix(30, 8, plate, m_grid); |
| 3110 | 3358 | } |
| 3111 | 3359 | |
| r248520 | r248521 | |
| 3553 | 3801 | ROM_END |
| 3554 | 3802 | |
| 3555 | 3803 | |
| 3804 | ROM_START( bpengo ) |
| 3805 | ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) |
| 3806 | ROM_LOAD( "hd38820a63", 0x0000, 0x1000, CRC(ebd6bc64) SHA1(0a322c47b9553a2739a85908ce64b9650cf93d49) ) |
| 3807 | ROM_CONTINUE( 0x1e80, 0x0100 ) |
| 3808 | ROM_END |
| 3809 | |
| 3810 | |
| 3811 | ROM_START( bbtime ) |
| 3812 | ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) |
| 3813 | ROM_LOAD( "hd38820a65", 0x0000, 0x1000, CRC(33611faf) SHA1(29b6a30ed543688d31ec2aa18f7938fa4eef30b0) ) |
| 3814 | ROM_CONTINUE( 0x1e80, 0x0100 ) |
| 3815 | ROM_END |
| 3816 | |
| 3817 | |
| 3556 | 3818 | ROM_START( bdoramon ) |
| 3557 | 3819 | ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) |
| 3558 | 3820 | ROM_LOAD( "hd38800b43", 0x0000, 0x1000, CRC(9387ca42) SHA1(8937e208934b34bd9f49700aa50287dfc8bda76c) ) |
| r248520 | r248521 | |
| 3715 | 3977 | CONS( 1982, msthawk, 0, 0, msthawk, msthawk, driver_device, 0, "Bandai (Mattel license)", "Star Hawk (Mattel)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) |
| 3716 | 3978 | CONS( 1982, bzaxxon, 0, 0, bzaxxon, bzaxxon, driver_device, 0, "Bandai", "Zaxxon (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) |
| 3717 | 3979 | CONS( 1983, zackman, 0, 0, zackman, zackman, driver_device, 0, "Bandai", "Zackman", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) |
| 3980 | CONS( 1983, bpengo, 0, 0, bpengo, bpengo, driver_device, 0, "Bandai", "Pengo (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) |
| 3981 | CONS( 1983, bbtime, 0, 0, bbtime, bbtime, driver_device, 0, "Bandai", "Burger Time (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) |
| 3718 | 3982 | CONS( 1983, bdoramon, 0, 0, bdoramon, bdoramon, driver_device, 0, "Bandai", "Dokodemo Dorayaki Doraemon", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) |
| 3719 | 3983 | CONS( 1983, bultrman, 0, 0, bultrman, bultrman, driver_device, 0, "Bandai", "Ultra Man (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) |
| 3720 | 3984 | CONS( 1984, machiman, 0, 0, machiman, machiman, driver_device, 0, "Bandai", "Machine Man", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) |