summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2017-11-08 22:00:15 -0500
committer GitHub <noreply@github.com>2017-11-08 22:00:15 -0500
commit850dbf7ee4933b51fc76425ccd5c84a6727030c2 (patch)
tree38cafb8d5f1ebde1d2b838ca7a19fbb9a6456b6e
parent67726dae684eb9f6634f50da909ced7ba973b643 (diff)
parent2a01629c2e8c8adbaba84ab4165b06b7daa34b21 (diff)
Merge pull request #2788 from DavidHaywood/sega
new clones
-rw-r--r--src/mame/drivers/segas16a.cpp201
-rw-r--r--src/mame/drivers/segas16b.cpp241
-rw-r--r--src/mame/includes/segas16a.h19
-rw-r--r--src/mame/includes/segas16b.h19
-rw-r--r--src/mame/mame.lst8
5 files changed, 486 insertions, 2 deletions
diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp
index 06d4f8481ca..6650af776f7 100644
--- a/src/mame/drivers/segas16a.cpp
+++ b/src/mame/drivers/segas16a.cpp
@@ -1188,6 +1188,83 @@ static INPUT_PORTS_START( afighter )
INPUT_PORTS_END
+CUSTOM_INPUT_MEMBER(afighter_16a_analog_state::afighter_accel_r)
+{
+ int accel = m_accel->read();
+
+ switch ((accel & 0xc0) >> 4)
+ {
+ case 0x00: return 0;
+ case 0x04: return (1 << 0);
+ case 0x08: return (1 << 1);
+ case 0x0c: return (1 << 2);
+ }
+
+ return 0;
+}
+
+CUSTOM_INPUT_MEMBER(afighter_16a_analog_state::afighter_handl_left_r)
+{
+ int steer = m_steer->read();
+
+ switch ((steer & 0xf0) >> 4)
+ {
+ case 0x00: return (1<<7);
+ case 0x01: return (1<<6);
+ case 0x02: return (1<<5);
+ case 0x03: return (1<<4);
+ case 0x04: return (1<<3);
+ case 0x05: return (1<<2);
+ case 0x06: return (1<<1);
+ case 0x07: return (1<<0);
+ }
+ return 0x00;
+}
+
+CUSTOM_INPUT_MEMBER(afighter_16a_analog_state::afighter_handl_right_r)
+{
+ int steer = m_steer->read();
+
+ switch ((steer & 0xf0)>>4)
+ {
+ case 0x0f: return (1<<7);
+ case 0x0e: return (1<<6);
+ case 0x0d: return (1<<5);
+ case 0x0c: return (1<<4);
+ case 0x0b: return (1<<3);
+ case 0x0a: return (1<<2);
+ case 0x09: return (1<<1);
+ case 0x08: return (1<<0);
+ }
+
+ return 0x00;
+}
+
+static INPUT_PORTS_START( afighter_analog )
+ PORT_INCLUDE( afighter )
+
+ PORT_MODIFY("P1")
+ PORT_BIT( 0x07, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, afighter_16a_analog_state, afighter_accel_r, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) // SHOT
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) // WEAPON1
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) // WEAPON2
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) // WEAPON3
+
+ PORT_MODIFY("P2")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, afighter_16a_analog_state, afighter_handl_left_r, nullptr)
+
+ PORT_MODIFY("UNUSED")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, afighter_16a_analog_state, afighter_handl_right_r, nullptr)
+
+ PORT_START("STEER") // steering
+ PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(4)
+
+ PORT_START("ACCEL") // gas pedal
+ PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20)
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START( alexkidd )
PORT_INCLUDE( system16a_generic )
@@ -2115,6 +2192,7 @@ ROM_END
// Action Fighter, Sega System 16A
// CPU: FD1089A 317-0018?@(dedicated cabinet version uses 317-0014)
//
+
ROM_START( afighter )
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
ROM_LOAD16_BYTE( "epr-10350", 0x00001, 0x08000, CRC(f2cd6b3f) SHA1(380f75b8c1696b388179641866cd1d23f78664e7) )
@@ -2146,6 +2224,123 @@ ROM_START( afighter )
ROM_LOAD( "317-0018.key", 0x0000, 0x2000, CRC(fee04be8) SHA1(c58d78299ef4cede517be823a8a8a90e46c6ba0d) )
ROM_END
+ROM_START( afightera )
+ ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "epr10315.bin", 0x00001, 0x08000, CRC(2ea55eae) SHA1(91d582eaa0483d547d1a37dedb8f029a0fccb526) ) // decrypted version of 10350
+ ROM_LOAD16_BYTE( "epr10318.bin", 0x00000, 0x08000, CRC(d05b240d) SHA1(aa4aa7b18b53ac7b533855a44f9a4a0c14e1da2a) )
+ ROM_LOAD16_BYTE( "epr10316.bin", 0x10001, 0x08000, CRC(07522474) SHA1(1a4bce4c04defab3516a90b9fa62fad1945a1176) ) // == epr10294.bin
+ ROM_LOAD16_BYTE( "epr10319.bin", 0x10000, 0x08000, CRC(e48c4d80) SHA1(9c40972f81e004de84db4199e7dc0ceb6a998e76) ) // == epr10297.bin
+ ROM_LOAD16_BYTE( "epr10317.bin", 0x20001, 0x08000, CRC(6e00db36) SHA1(5e3d03f7441515ad7dac411f492f2e159330a90a) )
+ ROM_LOAD16_BYTE( "epr10320.bin", 0x20000, 0x08000, CRC(5f97c2fa) SHA1(5fef94bc275d9132dde8b72bfb661f10efdc91b1) )
+
+ ROM_REGION( 0x30000, "gfx1", 0 ) // tiles
+ ROM_LOAD( "epr-10281.95", 0x00000, 0x10000, CRC(30e92cda) SHA1(36293a2a8a22dca5350571f19f3d5d04e1b27458) )
+ ROM_LOAD( "epr-10282.94", 0x10000, 0x10000, CRC(b67b8910) SHA1(f3f029a3e6547114cec28e5cf8fda65ef434c353) )
+ ROM_LOAD( "epr-10283.93", 0x20000, 0x10000, CRC(e7dbfd2d) SHA1(91bae3fbc4a3c612dc507eecfa8de1c2e1e7afee) )
+
+ ROM_REGION16_BE( 0x40000, "sprites", 0 ) // sprites
+ ROM_LOAD16_BYTE( "epr-10285", 0x00001, 0x08000, CRC(98aa3d04) SHA1(1d26d17a72e55281e3444fee9c5af69ffb9e3c69) )
+ ROM_LOAD16_BYTE( "epr-10286", 0x10001, 0x08000, CRC(8da050cf) SHA1(c28e8968dbd9c110672581f4486f70d5f45df7f5) )
+ ROM_LOAD16_BYTE( "epr-10287", 0x20001, 0x08000, CRC(7989b74a) SHA1(a87acafe82b37a11d8f8b1f2ee4c9b2e1bb8161c) )
+ ROM_LOAD16_BYTE( "epr-10288", 0x30001, 0x08000, CRC(d3ce551a) SHA1(0ff2170d9ef89058273025dd8d5e1021094adef1) )
+ ROM_LOAD16_BYTE( "epr-10289", 0x00000, 0x08000, CRC(c59d1b98) SHA1(e232f2519234981c0e4ffecdd25c48083d9f93a8) )
+ ROM_LOAD16_BYTE( "epr-10290", 0x10000, 0x08000, CRC(39354223) SHA1(d8a73d3f7fc2d83d23bb7434f43bc8804f35cc16) )
+ ROM_LOAD16_BYTE( "epr-10291", 0x20000, 0x08000, CRC(6e4b245c) SHA1(1f8cecf7ea2d2dfa5ce18d7ee34b0da2cc40221e) )
+ ROM_LOAD16_BYTE( "epr-10292", 0x30000, 0x08000, CRC(cef289a3) SHA1(7ab817b6348c168f79be325fb3cc2cca14ee0f8e) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU
+ ROM_LOAD( "epr-10284.12", 0x00000, 0x8000, CRC(8ff09116) SHA1(8b99b6d2499897cfbd037a7e7cf5bc53bce8a63a) )
+ROM_END
+
+ROM_START( afighterb )
+ ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "epr10293.bin", 0x00001, 0x08000, CRC(186ae21a) SHA1(65bff753b7ed7b3b03cc70634df9f2ff0d233323) ) // == decrypted 10275
+ ROM_LOAD16_BYTE( "epr10296.bin", 0x00000, 0x08000, CRC(7370e889) SHA1(d240defae86e97467002e549d213359c3e23ec54) )
+ ROM_LOAD16_BYTE( "epr10294.bin", 0x10001, 0x08000, CRC(07522474) SHA1(1a4bce4c04defab3516a90b9fa62fad1945a1176) )
+ ROM_LOAD16_BYTE( "epr10297.bin", 0x10000, 0x08000, CRC(e48c4d80) SHA1(9c40972f81e004de84db4199e7dc0ceb6a998e76) )
+ ROM_LOAD16_BYTE( "epr10295.bin", 0x20001, 0x08000, CRC(a940fde6) SHA1(7b7c2b904ae83dfb9e9ac0855e30408234fe371f) )
+ ROM_LOAD16_BYTE( "epr10298.bin", 0x20000, 0x08000, CRC(f6bab36e) SHA1(1e7a0403de5ede8055507274bd43ea7ab1219f27) )
+
+ ROM_REGION( 0x30000, "gfx1", 0 ) // tiles
+ ROM_LOAD( "epr-10281.95", 0x00000, 0x10000, CRC(30e92cda) SHA1(36293a2a8a22dca5350571f19f3d5d04e1b27458) )
+ ROM_LOAD( "epr-10282.94", 0x10000, 0x10000, CRC(b67b8910) SHA1(f3f029a3e6547114cec28e5cf8fda65ef434c353) )
+ ROM_LOAD( "epr-10283.93", 0x20000, 0x10000, CRC(e7dbfd2d) SHA1(91bae3fbc4a3c612dc507eecfa8de1c2e1e7afee) )
+
+ ROM_REGION16_BE( 0x40000, "sprites", 0 ) // sprites
+ ROM_LOAD16_BYTE( "epr-10285", 0x00001, 0x08000, CRC(98aa3d04) SHA1(1d26d17a72e55281e3444fee9c5af69ffb9e3c69) )
+ ROM_LOAD16_BYTE( "epr-10286", 0x10001, 0x08000, CRC(8da050cf) SHA1(c28e8968dbd9c110672581f4486f70d5f45df7f5) )
+ ROM_LOAD16_BYTE( "epr-10287", 0x20001, 0x08000, CRC(7989b74a) SHA1(a87acafe82b37a11d8f8b1f2ee4c9b2e1bb8161c) )
+ ROM_LOAD16_BYTE( "epr-10288", 0x30001, 0x08000, CRC(d3ce551a) SHA1(0ff2170d9ef89058273025dd8d5e1021094adef1) )
+ ROM_LOAD16_BYTE( "epr-10289", 0x00000, 0x08000, CRC(c59d1b98) SHA1(e232f2519234981c0e4ffecdd25c48083d9f93a8) )
+ ROM_LOAD16_BYTE( "epr-10290", 0x10000, 0x08000, CRC(39354223) SHA1(d8a73d3f7fc2d83d23bb7434f43bc8804f35cc16) )
+ ROM_LOAD16_BYTE( "epr-10291", 0x20000, 0x08000, CRC(6e4b245c) SHA1(1f8cecf7ea2d2dfa5ce18d7ee34b0da2cc40221e) )
+ ROM_LOAD16_BYTE( "epr-10292", 0x30000, 0x08000, CRC(cef289a3) SHA1(7ab817b6348c168f79be325fb3cc2cca14ee0f8e) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU
+ ROM_LOAD( "epr-10284.12", 0x00000, 0x8000, CRC(8ff09116) SHA1(8b99b6d2499897cfbd037a7e7cf5bc53bce8a63a) )
+ROM_END
+
+ROM_START( afighterc )
+ ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "epr10299.bin", 0x00001, 0x08000, CRC(d57b0955) SHA1(ce3bf962313cad25a4bff1348b52da12414c9182) ) // = encrypted 10315
+ ROM_LOAD16_BYTE( "epr10302.bin", 0x00000, 0x08000, CRC(e4ccefa2) SHA1(f8ec34fad2c290cc977b49326b3e27552718ddc2) )
+ ROM_LOAD16_BYTE( "epr10300.bin", 0x10001, 0x08000, CRC(1c91baa1) SHA1(338a7e56f47623c577dd77e2da56ca2f3e12027e) ) // missing (but probably == epr10276 as encryption seems the same and in the unencrypted sets they match)
+ ROM_LOAD16_BYTE( "epr10303.bin", 0x10000, 0x08000, CRC(fb67bdce) SHA1(29aba3eeee61a6aa8b695f3be211f5797479566d) ) // missing (but probably == epr10279 as encryption seems the same and in the unencrypted sets they match)
+ ROM_LOAD16_BYTE( "epr10301.bin", 0x20001, 0x08000, CRC(6b4ef29b) SHA1(3383a25f67b7a153637d0f81cf61d330f8236951) )
+ ROM_LOAD16_BYTE( "epr10304.bin", 0x20000, 0x08000, CRC(756f5472) SHA1(44e23fa4e17d4d7573adaaf3f1a14547359e2d06) )
+
+ ROM_REGION( 0x30000, "gfx1", 0 ) // tiles
+ ROM_LOAD( "epr-10281.95", 0x00000, 0x10000, CRC(30e92cda) SHA1(36293a2a8a22dca5350571f19f3d5d04e1b27458) )
+ ROM_LOAD( "epr-10282.94", 0x10000, 0x10000, CRC(b67b8910) SHA1(f3f029a3e6547114cec28e5cf8fda65ef434c353) )
+ ROM_LOAD( "epr-10283.93", 0x20000, 0x10000, CRC(e7dbfd2d) SHA1(91bae3fbc4a3c612dc507eecfa8de1c2e1e7afee) )
+
+ ROM_REGION16_BE( 0x40000, "sprites", 0 ) // sprites
+ ROM_LOAD16_BYTE( "epr-10285", 0x00001, 0x08000, CRC(98aa3d04) SHA1(1d26d17a72e55281e3444fee9c5af69ffb9e3c69) )
+ ROM_LOAD16_BYTE( "epr-10286", 0x10001, 0x08000, CRC(8da050cf) SHA1(c28e8968dbd9c110672581f4486f70d5f45df7f5) )
+ ROM_LOAD16_BYTE( "epr-10287", 0x20001, 0x08000, CRC(7989b74a) SHA1(a87acafe82b37a11d8f8b1f2ee4c9b2e1bb8161c) )
+ ROM_LOAD16_BYTE( "epr-10288", 0x30001, 0x08000, CRC(d3ce551a) SHA1(0ff2170d9ef89058273025dd8d5e1021094adef1) )
+ ROM_LOAD16_BYTE( "epr-10289", 0x00000, 0x08000, CRC(c59d1b98) SHA1(e232f2519234981c0e4ffecdd25c48083d9f93a8) )
+ ROM_LOAD16_BYTE( "epr-10290", 0x10000, 0x08000, CRC(39354223) SHA1(d8a73d3f7fc2d83d23bb7434f43bc8804f35cc16) )
+ ROM_LOAD16_BYTE( "epr-10291", 0x20000, 0x08000, CRC(6e4b245c) SHA1(1f8cecf7ea2d2dfa5ce18d7ee34b0da2cc40221e) )
+ ROM_LOAD16_BYTE( "epr-10292", 0x30000, 0x08000, CRC(cef289a3) SHA1(7ab817b6348c168f79be325fb3cc2cca14ee0f8e) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU
+ ROM_LOAD( "epr-10284.12", 0x00000, 0x8000, CRC(8ff09116) SHA1(8b99b6d2499897cfbd037a7e7cf5bc53bce8a63a) )
+
+ ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key
+ ROM_LOAD( "317-unknown.key", 0x0000, 0x2000, NO_DUMP )
+ROM_END
+
+ROM_START( afighterd )
+ ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "epr10275.bin", 0x00001, 0x08000, CRC(964c1985) SHA1(cf3d15e6f6611bb5a5ef230a0b25828af776ca33) ) // = encrypted 10293
+ ROM_LOAD16_BYTE( "epr10278.bin", 0x00000, 0x08000, CRC(13c6bbad) SHA1(889ad10e27b1638372dbefdab4111488a7ef873c) )
+ ROM_LOAD16_BYTE( "epr10276.bin", 0x10001, 0x08000, CRC(1c91baa1) SHA1(338a7e56f47623c577dd77e2da56ca2f3e12027e) )
+ ROM_LOAD16_BYTE( "epr10279.bin", 0x10000, 0x08000, CRC(fb67bdce) SHA1(29aba3eeee61a6aa8b695f3be211f5797479566d) )
+ ROM_LOAD16_BYTE( "epr10277.bin", 0x20001, 0x08000, CRC(a1534a1b) SHA1(7d3423b2e74624b2ce2b4ad5077653dfcc0226ec) )
+ ROM_LOAD16_BYTE( "epr10280.bin", 0x20000, 0x08000, CRC(9bc5496c) SHA1(e7f529feaa4fe4c1d6bcec2cd447cba4b3267d62) )
+
+ ROM_REGION( 0x30000, "gfx1", 0 ) // tiles
+ ROM_LOAD( "epr-10281.95", 0x00000, 0x10000, CRC(30e92cda) SHA1(36293a2a8a22dca5350571f19f3d5d04e1b27458) )
+ ROM_LOAD( "epr-10282.94", 0x10000, 0x10000, CRC(b67b8910) SHA1(f3f029a3e6547114cec28e5cf8fda65ef434c353) )
+ ROM_LOAD( "epr-10283.93", 0x20000, 0x10000, CRC(e7dbfd2d) SHA1(91bae3fbc4a3c612dc507eecfa8de1c2e1e7afee) )
+
+ ROM_REGION16_BE( 0x40000, "sprites", 0 ) // sprites
+ ROM_LOAD16_BYTE( "epr-10285", 0x00001, 0x08000, CRC(98aa3d04) SHA1(1d26d17a72e55281e3444fee9c5af69ffb9e3c69) )
+ ROM_LOAD16_BYTE( "epr-10286", 0x10001, 0x08000, CRC(8da050cf) SHA1(c28e8968dbd9c110672581f4486f70d5f45df7f5) )
+ ROM_LOAD16_BYTE( "epr-10287", 0x20001, 0x08000, CRC(7989b74a) SHA1(a87acafe82b37a11d8f8b1f2ee4c9b2e1bb8161c) )
+ ROM_LOAD16_BYTE( "epr-10288", 0x30001, 0x08000, CRC(d3ce551a) SHA1(0ff2170d9ef89058273025dd8d5e1021094adef1) )
+ ROM_LOAD16_BYTE( "epr-10289", 0x00000, 0x08000, CRC(c59d1b98) SHA1(e232f2519234981c0e4ffecdd25c48083d9f93a8) )
+ ROM_LOAD16_BYTE( "epr-10290", 0x10000, 0x08000, CRC(39354223) SHA1(d8a73d3f7fc2d83d23bb7434f43bc8804f35cc16) )
+ ROM_LOAD16_BYTE( "epr-10291", 0x20000, 0x08000, CRC(6e4b245c) SHA1(1f8cecf7ea2d2dfa5ce18d7ee34b0da2cc40221e) )
+ ROM_LOAD16_BYTE( "epr-10292", 0x30000, 0x08000, CRC(cef289a3) SHA1(7ab817b6348c168f79be325fb3cc2cca14ee0f8e) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU
+ ROM_LOAD( "epr-10284.12", 0x00000, 0x8000, CRC(8ff09116) SHA1(8b99b6d2499897cfbd037a7e7cf5bc53bce8a63a) )
+
+ ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key
+ ROM_LOAD( "317-unknown.key", 0x0000, 0x2000, NO_DUMP )
+ROM_END
//*************************************************************************************************************************
//*************************************************************************************************************************
@@ -3735,7 +3930,11 @@ GAME( 1987, aliensynjo, aliensyn, system16a_fd1089a, aliensynj, segas16a
GAME( 1988, aceattaca, aceattac, aceattaca_fd1094, aceattaca, segas16a_state,aceattaca, ROT270, "Sega", "Ace Attacker (Japan, System 16A, FD1094 317-0060)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, afighter, 0, system16a_fd1089a_no7751, afighter, segas16a_state,generic, ROT270, "Sega", "Action Fighter (FD1089A 317-0018)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, afighter, 0, system16a_fd1089a_no7751, afighter, segas16a_state, generic, ROT270, "Sega", "Action Fighter (FD1089A 317-0018)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, afightera, afighter, system16a_no7751, afighter, segas16a_state, generic, ROT270, "Sega", "Action Fighter (unprotected)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, afighterb, afighter, system16a_no7751, afighter_analog, afighter_16a_analog_state,generic, ROT270, "Sega", "Action Fighter (unprotected, analog controls)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, afighterc, afighter, system16a_fd1089a_no7751, afighter, segas16a_state, generic, ROT270, "Sega", "Action Fighter (FD1089A 317-unknown)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // encrypted version of afightera
+GAME( 1986, afighterd, afighter, system16a_fd1089a_no7751, afighter_analog, afighter_16a_analog_state,generic, ROT270, "Sega", "Action Fighter (FD1089A 317-unknown, analog controls)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // encrypted version of afighterb
GAME( 1986, alexkidd, 0, system16a, alexkidd, segas16a_state,generic, ROT0, "Sega", "Alex Kidd: The Lost Stars (set 2, unprotected)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, alexkidd1, alexkidd, system16a_fd1089a, alexkidd, segas16a_state,generic, ROT0, "Sega", "Alex Kidd: The Lost Stars (set 1, FD1089A 317-0021)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp
index f094761bf69..8cea6b979a7 100644
--- a/src/mame/drivers/segas16b.cpp
+++ b/src/mame/drivers/segas16b.cpp
@@ -2104,6 +2104,111 @@ static INPUT_PORTS_START( aliensynj )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
INPUT_PORTS_END
+static INPUT_PORTS_START( afighter )
+ PORT_INCLUDE( system16b_generic )
+
+ PORT_MODIFY("DSW2")
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:1")
+ PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
+ PORT_DIPSETTING( 0x08, "2" )
+ PORT_DIPSETTING( 0x0c, "3" )
+ PORT_DIPSETTING( 0x04, "4" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Infinite ) )
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:5,6")
+ PORT_DIPSETTING( 0x30, "10000 - 20000" )
+ PORT_DIPSETTING( 0x20, "20000 - 40000" )
+ PORT_DIPSETTING( 0x10, "30000 - 60000" )
+ PORT_DIPSETTING( 0x00, "40000 - 80000" )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:8")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
+INPUT_PORTS_END
+
+/* this is identical to the s16a implementation, maybe should be moved to common class */
+CUSTOM_INPUT_MEMBER(afighter_16b_analog_state::afighter_accel_r)
+{
+ int accel = m_accel->read();
+
+ switch ((accel & 0xc0) >> 4)
+ {
+ case 0x00: return 0;
+ case 0x04: return (1 << 0);
+ case 0x08: return (1 << 1);
+ case 0x0c: return (1 << 2);
+ }
+
+ return 0;
+}
+
+CUSTOM_INPUT_MEMBER(afighter_16b_analog_state::afighter_handl_left_r)
+{
+ int steer = m_steer->read();
+
+ switch ((steer & 0xf0) >> 4)
+ {
+ case 0x00: return (1<<7);
+ case 0x01: return (1<<6);
+ case 0x02: return (1<<5);
+ case 0x03: return (1<<4);
+ case 0x04: return (1<<3);
+ case 0x05: return (1<<2);
+ case 0x06: return (1<<1);
+ case 0x07: return (1<<0);
+ }
+ return 0x00;
+}
+
+CUSTOM_INPUT_MEMBER(afighter_16b_analog_state::afighter_handl_right_r)
+{
+ int steer = m_steer->read();
+
+ switch ((steer & 0xf0)>>4)
+ {
+ case 0x0f: return (1<<7);
+ case 0x0e: return (1<<6);
+ case 0x0d: return (1<<5);
+ case 0x0c: return (1<<4);
+ case 0x0b: return (1<<3);
+ case 0x0a: return (1<<2);
+ case 0x09: return (1<<1);
+ case 0x08: return (1<<0);
+ }
+
+ return 0x00;
+}
+
+static INPUT_PORTS_START( afighter_analog )
+ PORT_INCLUDE( afighter )
+
+ PORT_MODIFY("P1")
+ PORT_BIT( 0x07, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, afighter_16b_analog_state, afighter_accel_r, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) // SHOT
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) // WEAPON1
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) // WEAPON2
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) // WEAPON3
+
+ PORT_MODIFY("P2")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, afighter_16b_analog_state, afighter_handl_left_r, nullptr)
+
+ PORT_MODIFY("UNUSED")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, afighter_16b_analog_state, afighter_handl_right_r, nullptr)
+
+ PORT_START("STEER") // steering
+ PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(4)
+
+ PORT_START("ACCEL") // gas pedal
+ PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20)
+INPUT_PORTS_END
+
static INPUT_PORTS_START( altbeast )
PORT_INCLUDE( system16b_generic )
@@ -4062,6 +4167,136 @@ ROM_END
//*************************************************************************************************************************
//*************************************************************************************************************************
//*************************************************************************************************************************
+// Action Fighter, Sega System 16B
+
+
+ROM_START( afightere )
+ ROM_REGION( 0x30000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "epr10269.bin", 0x00001, 0x08000, CRC(688b4ff7) SHA1(8972b75b6fa72513a6ebb3a5ed5988a43f1b6266) )
+ ROM_LOAD16_BYTE( "epr10272.bin", 0x00000, 0x08000, CRC(bc3b75b6) SHA1(54c2be1cc4833ef7a18c4023e511654737d554c9) )
+ ROM_LOAD16_BYTE( "epr10270.bin", 0x10001, 0x08000, CRC(53fab467) SHA1(62617b2bd097a9754c509ce0ca7baaa8dd63401b) )
+ ROM_LOAD16_BYTE( "epr10273.bin", 0x10000, 0x08000, CRC(0ca74019) SHA1(ab7337e777ac162ff17b72096e4f619362339279) )
+ ROM_LOAD16_BYTE( "epr10271.bin", 0x20001, 0x08000, CRC(d0d73af5) SHA1(7d13858c50bd5fa2b5ae4650747d3e237567281b) )
+ ROM_LOAD16_BYTE( "epr10274.bin", 0x20000, 0x08000, CRC(d2601561) SHA1(0f2a97491aae859102d3ed80377b0c5fe4a0f4d8) )
+
+ ROM_REGION( 0x30000, "gfx1", 0 ) // tiles
+ ROM_LOAD( "epr10048.bin", 0x00000, 0x10000, CRC(643ca883) SHA1(dd2ffdeca5b06992fe71e5a9e59dcadf98f9e888) )
+ ROM_LOAD( "epr10049.bin", 0x10000, 0x10000, CRC(f8b5058b) SHA1(ff62c220200e23c2f35f657175c0cd5123b6a1ba) )
+ ROM_LOAD( "epr10050.bin", 0x20000, 0x10000, CRC(0ffb48dd) SHA1(2a88913ed177ec406ad7f788ab36ba12a8398a1b) )
+
+ ROM_REGION16_BE( 0x080000, "sprites", 0 ) // sprites
+ ROM_LOAD16_BYTE( "epr10044.bin", 0x00000, 0x08000, CRC(71d0db1f) SHA1(db2766474fc1f160bf886f65894259dfce891ed7) )
+ ROM_LOAD16_BYTE( "epr10040.bin", 0x00001, 0x08000, CRC(5a9f81f9) SHA1(fedd427c95ccc8251bf713b6ae05c2efb74cd976) )
+ ROM_LOAD16_BYTE( "epr10045.bin", 0x20000, 0x08000, CRC(39354223) SHA1(d8a73d3f7fc2d83d23bb7434f43bc8804f35cc16) )
+ ROM_LOAD16_BYTE( "epr10041.bin", 0x20001, 0x08000, CRC(8da050cf) SHA1(c28e8968dbd9c110672581f4486f70d5f45df7f5) )
+ ROM_LOAD16_BYTE( "epr10046.bin", 0x40000, 0x08000, CRC(b49b3136) SHA1(afb992acf4529204419707f0870e9a259e6fe00f) )
+ ROM_LOAD16_BYTE( "epr10042.bin", 0x40001, 0x08000, CRC(dd706d18) SHA1(95c10f7ca29898f531bf8e3c0e8c9d0484d96b4a) )
+ ROM_LOAD16_BYTE( "epr10047.bin", 0x60000, 0x08000, CRC(84a49518) SHA1(4f3c89d8f736889931ec09af3694d3891371c9e4) )
+ ROM_LOAD16_BYTE( "epr10043.bin", 0x60001, 0x08000, CRC(645ccfb9) SHA1(84ba9a33bbf4ecc9909f543e798a2b3687872a71) )
+
+ ROM_REGION( 0x50000, "soundcpu", 0 ) // sound CPU
+ ROM_LOAD( "epr10039.bin", 0x00000, 0x8000, CRC(b04757b0) SHA1(24bface5a23ed658675f414c9937bf9d7f7ed5ec) )
+ROM_END
+
+ROM_START( afighterf )
+ ROM_REGION( 0x30000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "epr10033.bin", 0x00001, 0x08000, CRC(1b836a91) SHA1(a770a0ca9db052553184ffb0f647d033a0a4ab63) ) // == encrypted version of 10169
+ ROM_LOAD16_BYTE( "epr10036.bin", 0x00000, 0x08000, CRC(d0589391) SHA1(55ceb189a48a5664955650e2d4e8ad1da2209295) )
+ ROM_LOAD16_BYTE( "epr10034.bin", 0x10001, 0x08000, CRC(423e983e) SHA1(4437d4988c52b5033611ee4d6b4c50955ba70200) )
+ ROM_LOAD16_BYTE( "epr10037.bin", 0x10000, 0x08000, CRC(3a312b9e) SHA1(ea371474b0ca5ead93b788e17192f80e6c8cf939) )
+ ROM_LOAD16_BYTE( "epr10035.bin", 0x20001, 0x08000, CRC(68177755) SHA1(7f498a7932079cecb5908b11722244961a9d4927) )
+ ROM_LOAD16_BYTE( "epr10038.bin", 0x20000, 0x08000, CRC(22c2b533) SHA1(9256888884dcfcf51ebcf64a1f60164a57891676) )
+
+ ROM_REGION( 0x30000, "gfx1", 0 ) // tiles
+ ROM_LOAD( "epr10048.bin", 0x00000, 0x10000, CRC(643ca883) SHA1(dd2ffdeca5b06992fe71e5a9e59dcadf98f9e888) )
+ ROM_LOAD( "epr10049.bin", 0x10000, 0x10000, CRC(f8b5058b) SHA1(ff62c220200e23c2f35f657175c0cd5123b6a1ba) )
+ ROM_LOAD( "epr10050.bin", 0x20000, 0x10000, CRC(0ffb48dd) SHA1(2a88913ed177ec406ad7f788ab36ba12a8398a1b) )
+
+ ROM_REGION16_BE( 0x080000, "sprites", 0 ) // sprites
+ ROM_LOAD16_BYTE( "epr10044.bin", 0x00000, 0x08000, CRC(71d0db1f) SHA1(db2766474fc1f160bf886f65894259dfce891ed7) )
+ ROM_LOAD16_BYTE( "epr10040.bin", 0x00001, 0x08000, CRC(5a9f81f9) SHA1(fedd427c95ccc8251bf713b6ae05c2efb74cd976) )
+ ROM_LOAD16_BYTE( "epr10045.bin", 0x20000, 0x08000, CRC(39354223) SHA1(d8a73d3f7fc2d83d23bb7434f43bc8804f35cc16) )
+ ROM_LOAD16_BYTE( "epr10041.bin", 0x20001, 0x08000, CRC(8da050cf) SHA1(c28e8968dbd9c110672581f4486f70d5f45df7f5) )
+ ROM_LOAD16_BYTE( "epr10046.bin", 0x40000, 0x08000, CRC(b49b3136) SHA1(afb992acf4529204419707f0870e9a259e6fe00f) )
+ ROM_LOAD16_BYTE( "epr10042.bin", 0x40001, 0x08000, CRC(dd706d18) SHA1(95c10f7ca29898f531bf8e3c0e8c9d0484d96b4a) )
+ ROM_LOAD16_BYTE( "epr10047.bin", 0x60000, 0x08000, CRC(84a49518) SHA1(4f3c89d8f736889931ec09af3694d3891371c9e4) )
+ ROM_LOAD16_BYTE( "epr10043.bin", 0x60001, 0x08000, CRC(645ccfb9) SHA1(84ba9a33bbf4ecc9909f543e798a2b3687872a71) )
+
+ ROM_REGION( 0x50000, "soundcpu", 0 ) // sound CPU
+ ROM_LOAD( "epr10039.bin", 0x00000, 0x8000, CRC(b04757b0) SHA1(24bface5a23ed658675f414c9937bf9d7f7ed5ec) )
+
+ ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key
+ ROM_LOAD( "317-unknown.key", 0x0000, 0x2000, NO_DUMP )
+ROM_END
+
+
+ROM_START( afighterg ) // could be 16A
+ ROM_REGION( 0x30000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "epr10160.bin", 0x00001, 0x08000, CRC(86f020da) SHA1(e7ac4b70dc375d9e2491f1a90ae154699e7627a2) ) // == encrypted 10169 (not perfect match) (same rev as 10354)
+ ROM_LOAD16_BYTE( "epr10163.bin", 0x00000, 0x08000, CRC(6d62eccd) SHA1(a400850f717a71a3e0059173d77f0bd067f1b520) )
+ ROM_LOAD16_BYTE( "epr10161.bin", 0x10001, 0x08000, CRC(423e983e) SHA1(4437d4988c52b5033611ee4d6b4c50955ba70200) )
+ ROM_LOAD16_BYTE( "epr10164.bin", 0x10000, 0x08000, CRC(3a312b9e) SHA1(ea371474b0ca5ead93b788e17192f80e6c8cf939) )
+ ROM_LOAD16_BYTE( "epr10162.bin", 0x20001, 0x08000, CRC(a20acfd5) SHA1(2158deade6188ec7400423c5aa9634b37169c5a9) )
+ ROM_LOAD16_BYTE( "epr10165.bin", 0x20000, 0x08000, CRC(cc68a82d) SHA1(ada7761076dfa9ab734a16382b55415929c39671) )
+
+ ROM_REGION( 0x30000, "gfx1", 0 ) // tiles
+ ROM_LOAD( "epr10048.bin", 0x00000, 0x10000, CRC(643ca883) SHA1(dd2ffdeca5b06992fe71e5a9e59dcadf98f9e888) )
+ ROM_LOAD( "epr10049.bin", 0x10000, 0x10000, CRC(f8b5058b) SHA1(ff62c220200e23c2f35f657175c0cd5123b6a1ba) )
+ ROM_LOAD( "epr10050.bin", 0x20000, 0x10000, CRC(0ffb48dd) SHA1(2a88913ed177ec406ad7f788ab36ba12a8398a1b) )
+
+ ROM_REGION16_BE( 0x080000, "sprites", 0 ) // sprites
+ ROM_LOAD16_BYTE( "epr10044.bin", 0x00000, 0x08000, CRC(71d0db1f) SHA1(db2766474fc1f160bf886f65894259dfce891ed7) )
+ ROM_LOAD16_BYTE( "epr10040.bin", 0x00001, 0x08000, CRC(5a9f81f9) SHA1(fedd427c95ccc8251bf713b6ae05c2efb74cd976) )
+ ROM_LOAD16_BYTE( "epr10045.bin", 0x20000, 0x08000, CRC(39354223) SHA1(d8a73d3f7fc2d83d23bb7434f43bc8804f35cc16) )
+ ROM_LOAD16_BYTE( "epr10041.bin", 0x20001, 0x08000, CRC(8da050cf) SHA1(c28e8968dbd9c110672581f4486f70d5f45df7f5) )
+ ROM_LOAD16_BYTE( "epr10046.bin", 0x40000, 0x08000, CRC(b49b3136) SHA1(afb992acf4529204419707f0870e9a259e6fe00f) )
+ ROM_LOAD16_BYTE( "epr10042.bin", 0x40001, 0x08000, CRC(dd706d18) SHA1(95c10f7ca29898f531bf8e3c0e8c9d0484d96b4a) )
+ ROM_LOAD16_BYTE( "epr10047.bin", 0x60000, 0x08000, CRC(84a49518) SHA1(4f3c89d8f736889931ec09af3694d3891371c9e4) )
+ ROM_LOAD16_BYTE( "epr10043.bin", 0x60001, 0x08000, CRC(645ccfb9) SHA1(84ba9a33bbf4ecc9909f543e798a2b3687872a71) )
+
+ ROM_REGION( 0x50000, "soundcpu", 0 ) // sound CPU
+ ROM_LOAD( "epr10039.bin", 0x00000, 0x8000, CRC(b04757b0) SHA1(24bface5a23ed658675f414c9937bf9d7f7ed5ec) )
+
+ ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key
+ ROM_LOAD( "317-unknown.key", 0x0000, 0x2000, NO_DUMP )
+ROM_END
+
+
+ROM_START( afighterh ) // could be 16A
+ ROM_REGION( 0x30000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "epr10354.bin", 0x00001, 0x08000, CRC(6dad6dd1) SHA1(8cdd1c10d60cda09f888b2f03b7d4c76100b4ad0) ) // == encrypted 10169 (not perfect match) (same rev as 10160)
+ ROM_LOAD16_BYTE( "epr10357.bin", 0x00000, 0x08000, CRC(69777a15) SHA1(26fcca4b5476596cec9a59f5445f0b24c9373a8b) )
+ ROM_LOAD16_BYTE( "epr10355.bin", 0x10001, 0x08000, CRC(ac865097) SHA1(113b00da9496d610c079c2084a81f85007390189) )
+ ROM_LOAD16_BYTE( "epr10358.bin", 0x10000, 0x08000, CRC(8f9da9a0) SHA1(8c1ff6156a2680952ae9fa4210477ec27e140c21) )
+ ROM_LOAD16_BYTE( "epr10356.bin", 0x20001, 0x08000, CRC(da7f05f2) SHA1(a65ec89b481d0b2ce5684a5668f8fafb7def7867) )
+ ROM_LOAD16_BYTE( "epr10359.bin", 0x20000, 0x08000, CRC(1dc12296) SHA1(fc8b86f764266b64728b40a5958ab354751e643a) )
+
+ ROM_REGION( 0x30000, "gfx1", 0 ) // tiles
+ ROM_LOAD( "epr10048.bin", 0x00000, 0x10000, CRC(643ca883) SHA1(dd2ffdeca5b06992fe71e5a9e59dcadf98f9e888) )
+ ROM_LOAD( "epr10049.bin", 0x10000, 0x10000, CRC(f8b5058b) SHA1(ff62c220200e23c2f35f657175c0cd5123b6a1ba) )
+ ROM_LOAD( "epr10050.bin", 0x20000, 0x10000, CRC(0ffb48dd) SHA1(2a88913ed177ec406ad7f788ab36ba12a8398a1b) )
+
+ ROM_REGION16_BE( 0x080000, "sprites", 0 ) // sprites
+ ROM_LOAD16_BYTE( "epr10044.bin", 0x00000, 0x08000, CRC(71d0db1f) SHA1(db2766474fc1f160bf886f65894259dfce891ed7) )
+ ROM_LOAD16_BYTE( "epr10040.bin", 0x00001, 0x08000, CRC(5a9f81f9) SHA1(fedd427c95ccc8251bf713b6ae05c2efb74cd976) )
+ ROM_LOAD16_BYTE( "epr10045.bin", 0x20000, 0x08000, CRC(39354223) SHA1(d8a73d3f7fc2d83d23bb7434f43bc8804f35cc16) )
+ ROM_LOAD16_BYTE( "epr10041.bin", 0x20001, 0x08000, CRC(8da050cf) SHA1(c28e8968dbd9c110672581f4486f70d5f45df7f5) )
+ ROM_LOAD16_BYTE( "epr10046.bin", 0x40000, 0x08000, CRC(b49b3136) SHA1(afb992acf4529204419707f0870e9a259e6fe00f) )
+ ROM_LOAD16_BYTE( "epr10042.bin", 0x40001, 0x08000, CRC(dd706d18) SHA1(95c10f7ca29898f531bf8e3c0e8c9d0484d96b4a) )
+ ROM_LOAD16_BYTE( "epr10047.bin", 0x60000, 0x08000, CRC(84a49518) SHA1(4f3c89d8f736889931ec09af3694d3891371c9e4) )
+ ROM_LOAD16_BYTE( "epr10043.bin", 0x60001, 0x08000, CRC(645ccfb9) SHA1(84ba9a33bbf4ecc9909f543e798a2b3687872a71) )
+
+ ROM_REGION( 0x50000, "soundcpu", 0 ) // sound CPU
+ ROM_LOAD( "epr10039.bin", 0x00000, 0x8000, CRC(b04757b0) SHA1(24bface5a23ed658675f414c9937bf9d7f7ed5ec) )
+
+ ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key
+ ROM_LOAD( "317-unknown.key", 0x0000, 0x2000, NO_DUMP )
+ROM_END
+
+
+//*************************************************************************************************************************
+//*************************************************************************************************************************
+//*************************************************************************************************************************
// Altered Beast, Sega System 16B
// CPU: 68000 + i8751 (317-0078)
// ROM Board type: 171-5521
@@ -8710,7 +8945,6 @@ DRIVER_INIT_MEMBER(segas16b_state,aliensyn7_5358_small)
downcast<mc8123_device &>(*m_soundcpu).decode(memregion("soundcpu")->base(), m_sound_decrypted_opcodes, 0x8000);
}
-
DRIVER_INIT_MEMBER(segas16b_state,altbeasj_5521)
{
DRIVER_INIT_CALL(generic_5521);
@@ -8855,6 +9089,11 @@ GAME( 1987, aliensyn7, aliensyn, system16b_mc8123, aliensyn, segas16b_state,
GAME( 1987, aliensyn3, aliensyn, system16b_fd1089a, aliensyn, segas16b_state,generic_5358_small, ROT0, "Sega", "Alien Syndrome (set 3, System 16B, FD1089A 317-0033)", 0 )
GAME( 1987, aliensynj, aliensyn, system16b_fd1089a, aliensynj,segas16b_state,generic_5358_small, ROT0, "Sega", "Alien Syndrome (set 6, Japan, new, System 16B, FD1089A 317-0033)", 0 )
+GAME( 1987, afightere, afighter, system16b, afighter_analog,afighter_16b_analog_state,generic_5358_small, ROT270, "Sega", "Action Fighter (System 16B, unprotected, analog controls)", 0 )
+GAME( 1987, afighterf, afighter, system16b_fd1089a, afighter_analog,afighter_16b_analog_state,generic_5358_small, ROT270, "Sega", "Action Fighter (System 16B, FD1089A 317-unknown, analog controls)", MACHINE_NOT_WORKING ) // encrypted version of afightere
+GAME( 1987, afighterg, afighter, system16b_fd1089a, afighter, segas16b_state, generic_5358_small, ROT270, "Sega", "Action Fighter (System 16B, FD1089A 317-unknown, set 1)", MACHINE_NOT_WORKING ) // same encryption as afighterf
+GAME( 1987, afighterh, afighter, system16b_fd1089a, afighter, segas16b_state, generic_5358_small, ROT270, "Sega", "Action Fighter (System 16B, FD1089A 317-unknown, set 2)", MACHINE_NOT_WORKING ) // different encryption, same rev as afighterg
+
GAME( 1988, altbeast, 0, system16b_i8751, altbeast, segas16b_state,generic_5521, ROT0, "Sega", "Altered Beast (set 8) (8751 317-0078)", 0 )
GAME( 1988, altbeastj, altbeast, system16b_i8751, altbeast, segas16b_state,altbeasj_5521, ROT0, "Sega", "Juuouki (set 7, Japan) (8751 317-0077)", 0 )
GAME( 1988, altbeast6, altbeast, system16b_i8751, altbeast, segas16b_state,altbeas5_5521, ROT0, "Sega", "Altered Beast (set 6) (8751 317-0076)", 0 )
diff --git a/src/mame/includes/segas16a.h b/src/mame/includes/segas16a.h
index 688e1400f72..60fdca74b97 100644
--- a/src/mame/includes/segas16a.h
+++ b/src/mame/includes/segas16a.h
@@ -166,3 +166,22 @@ protected:
uint8_t m_mj_input_num;
optional_ioport_array<6> m_mj_inputs;
};
+
+class afighter_16a_analog_state : public segas16a_state
+{
+public:
+ // construction/destruction
+ afighter_16a_analog_state(const machine_config &mconfig, device_type type, const char *tag)
+ : segas16a_state(mconfig, type, tag),
+ m_accel(*this, "ACCEL"),
+ m_steer(*this, "STEER")
+ { }
+
+ DECLARE_CUSTOM_INPUT_MEMBER(afighter_accel_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(afighter_handl_left_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(afighter_handl_right_r);
+
+ protected:
+ required_ioport m_accel;
+ required_ioport m_steer;
+};
diff --git a/src/mame/includes/segas16b.h b/src/mame/includes/segas16b.h
index e988bedb011..630613167a7 100644
--- a/src/mame/includes/segas16b.h
+++ b/src/mame/includes/segas16b.h
@@ -241,6 +241,25 @@ protected:
};
+class afighter_16b_analog_state : public segas16b_state
+{
+public:
+ // construction/destruction
+ afighter_16b_analog_state(const machine_config &mconfig, device_type type, const char *tag)
+ : segas16b_state(mconfig, type, tag),
+ m_accel(*this, "ACCEL"),
+ m_steer(*this, "STEER")
+ { }
+
+ DECLARE_CUSTOM_INPUT_MEMBER(afighter_accel_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(afighter_handl_left_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(afighter_handl_right_r);
+
+ protected:
+ required_ioport m_accel;
+ required_ioport m_steer;
+};
+
// ======================> isgsm_state
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index e4fef20e927..59a405b15a2 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -33405,6 +33405,10 @@ segapm // 1996 Sega Picture Magic (32x type hardware)
@source:segas16a.cpp
aceattaca // (c) 1988 (FD1094)
afighter // (c) 1986 (FD1089A)
+afightera
+afighterb
+afighterc
+afighterd
alexkidd // (c) 1986 (Unprotected)
alexkidd1 // (c) 1986 (FD1089A)
aliensyn2 // (c) 1987 (FD1089A)
@@ -33442,6 +33446,10 @@ wb35d //
@source:segas16b.cpp
aceattac // (c) 1988 (FD1094)
+afightere
+afighterf
+afighterg
+afighterh
aliensyn // (c) 1987 (Unprotected)
aliensyn3 // (c) 1987 (FD1089A)
aliensyn7 // (c) 1987 (MC-8123B)