diff options
Diffstat (limited to 'src/mame/drivers/alg.c')
-rw-r--r-- | src/mame/drivers/alg.c | 80 |
1 files changed, 46 insertions, 34 deletions
diff --git a/src/mame/drivers/alg.c b/src/mame/drivers/alg.c index bd674b5fb79..bedde2b9362 100644 --- a/src/mame/drivers/alg.c +++ b/src/mame/drivers/alg.c @@ -36,7 +36,13 @@ class alg_state : public amiga_state public: alg_state(const machine_config &mconfig, device_type type, const char *tag) : amiga_state(mconfig, type, tag), - m_laserdisc(*this, "laserdisc") { } + m_laserdisc(*this, "laserdisc"), + m_gun1x(*this, "GUN1X"), + m_gun1y(*this, "GUN1Y"), + m_gun2x(*this, "GUN2X"), + m_gun2y(*this, "GUN2Y"), + m_triggers(*this, "TRIGGERS") + { } DECLARE_CUSTOM_INPUT_MEMBER(lightgun_pos_r); DECLARE_CUSTOM_INPUT_MEMBER(lightgun_trigger_r); @@ -55,9 +61,15 @@ public: protected: // amiga_state overrides virtual void potgo_w(UINT16 data); + int get_lightgun_pos(int player, int *x, int *y); private: required_device<sony_ldp1450_device> m_laserdisc; + required_ioport m_gun1x; + required_ioport m_gun1y; + optional_ioport m_gun2x; + optional_ioport m_gun2y; + optional_ioport m_triggers; UINT16 m_input_select; }; @@ -72,12 +84,12 @@ private: * *************************************/ -static int get_lightgun_pos(screen_device &screen, int player, int *x, int *y) +int alg_state::get_lightgun_pos(int player, int *x, int *y) { - const rectangle &visarea = screen.visible_area(); + const rectangle &visarea = m_screen->visible_area(); - int xpos = screen.ioport((player == 0) ? "GUN1X" : "GUN2X")->read_safe(0xffffffff); - int ypos = screen.ioport((player == 0) ? "GUN1Y" : "GUN2Y")->read_safe(0xffffffff); + int xpos = (player == 0) ? m_gun1x->read() : (m_gun2x ? m_gun2x->read() : 0xffffffff); + int ypos = (player == 0) ? m_gun1y->read() : (m_gun2y ? m_gun2y->read() : 0xffffffff); if (xpos == -1 || ypos == -1) return FALSE; @@ -128,7 +140,7 @@ CUSTOM_INPUT_MEMBER(alg_state::lightgun_pos_r) int x = 0, y = 0; /* get the position based on the input select */ - get_lightgun_pos(*m_screen, m_input_select, &x, &y); + get_lightgun_pos(m_input_select, &x, &y); return (y << 8) | (x >> 2); } @@ -136,14 +148,14 @@ CUSTOM_INPUT_MEMBER(alg_state::lightgun_pos_r) CUSTOM_INPUT_MEMBER(alg_state::lightgun_trigger_r) { /* read the trigger control based on the input select */ - return (ioport("TRIGGERS")->read() >> m_input_select) & 1; + return (m_triggers->read() >> m_input_select) & 1; } CUSTOM_INPUT_MEMBER(alg_state::lightgun_holster_r) { /* read the holster control based on the input select */ - return (ioport("TRIGGERS")->read() >> (2 + m_input_select)) & 1; + return (m_triggers->read() >> (2 + m_input_select)) & 1; } @@ -769,48 +781,48 @@ DRIVER_INIT_MEMBER(alg_state,aplatoon) *************************************/ /* BIOS */ -GAME( 199?, alg_bios, 0, alg_r1, alg, alg_state, ntsc, ROT0, "American Laser Games", "American Laser Games BIOS", GAME_IS_BIOS_ROOT ) +GAME( 199?, alg_bios, 0, alg_r1, alg, alg_state, ntsc, ROT0, "American Laser Games", "American Laser Games BIOS", MACHINE_IS_BIOS_ROOT ) /* Rev. A board */ /* PAL R1 */ -GAME( 1990, maddoga, maddog, alg_r1, alg, alg_state, palr1, ROT0, "American Laser Games", "Mad Dog McCree v1C board rev.A", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) +GAME( 1990, maddoga, maddog, alg_r1, alg, alg_state, palr1, ROT0, "American Laser Games", "Mad Dog McCree v1C board rev.A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* PAL R3 */ -GAME( 1991, wsjr, alg_bios, alg_r1, alg, alg_state, palr3, ROT0, "American Laser Games", "Who Shot Johnny Rock? v1.6", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1991, wsjr_15, wsjr, alg_r1, alg, alg_state, palr3, ROT0, "American Laser Games", "Who Shot Johnny Rock? v1.5", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) +GAME( 1991, wsjr, alg_bios, alg_r1, alg, alg_state, palr3, ROT0, "American Laser Games", "Who Shot Johnny Rock? v1.6", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1991, wsjr_15, wsjr, alg_r1, alg, alg_state, palr3, ROT0, "American Laser Games", "Who Shot Johnny Rock? v1.5", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* Rev. B board */ /* PAL R6 */ -GAME( 1990, maddog, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog McCree v2.03 board rev.B", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1990, maddog_202, maddog, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog McCree v2.02 board rev.B", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) +GAME( 1990, maddog, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog McCree v2.03 board rev.B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1990, maddog_202, maddog, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog McCree v2.02 board rev.B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* works ok but uses right player (2) controls only for trigger and holster */ -GAME( 1992, maddog2, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v2.04", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1992, maddog2_202, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v2.02", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1992, maddog2_110, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v1.10", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1992, maddog2_100, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v1.00", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) +GAME( 1992, maddog2, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v2.04", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, maddog2_202, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v2.02", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, maddog2_110, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v1.10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, maddog2_100, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v1.00", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* works ok but uses right player (2) controls only for trigger and holster */ -GAME( 1992, spacepir, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Space Pirates v2.2", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1992, spacepir_14, spacepir, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Space Pirates v1.4", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) +GAME( 1992, spacepir, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Space Pirates v2.2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, spacepir_14, spacepir, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Space Pirates v1.4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, gallgall, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Gallagher's Gallery v2.2", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1992, gallgall_21, gallgall, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Gallagher's Gallery v2.1", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) +GAME( 1992, gallgall, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Gallagher's Gallery v2.2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, gallgall_21, gallgall, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Gallagher's Gallery v2.1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* all good, but no holster */ -GAME( 1993, crimepat, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol v1.51", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1993, crimepat_14, crimepat, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol v1.4", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1993, crimepat_12, crimepat, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol v1.2", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) - -GAME( 1993, crimep2, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol 2: Drug Wars v1.3", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1993, crimep2_11, crimep2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol 2: Drug Wars v1.1", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1994, lastbh, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "The Last Bounty Hunter v1.01", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1994, lastbh_006, lastbh, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "The Last Bounty Hunter v0.06", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1995, fastdraw, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT90, "American Laser Games", "Fast Draw Showdown v1.31", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1995, fastdraw_130,fastdraw, alg_r2, alg_2p, alg_state, palr6, ROT90, "American Laser Games", "Fast Draw Showdown v1.30", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) +GAME( 1993, crimepat, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol v1.51", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, crimepat_14, crimepat, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol v1.4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, crimepat_12, crimepat, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol v1.2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) + +GAME( 1993, crimep2, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol 2: Drug Wars v1.3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, crimep2_11, crimep2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol 2: Drug Wars v1.1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, lastbh, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "The Last Bounty Hunter v1.01", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, lastbh_006, lastbh, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "The Last Bounty Hunter v0.06", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, fastdraw, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT90, "American Laser Games", "Fast Draw Showdown v1.31", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, fastdraw_130,fastdraw, alg_r2, alg_2p, alg_state, palr6, ROT90, "American Laser Games", "Fast Draw Showdown v1.30", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* works ok but uses right player (2) controls only for trigger and holster */ /* NOVA games on ALG hardware with own address scramble */ -GAME( 199?, aplatoon, alg_bios, alg_r2, alg, alg_state, aplatoon, ROT0, "Nova?", "Platoon V.3.1 US", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) +GAME( 199?, aplatoon, alg_bios, alg_r2, alg, alg_state, aplatoon, ROT0, "Nova?", "Platoon V.3.1 US", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* Web Picmatic games PAL tv standard, own rom board */ -GAME( 1993, zortonbr, alg_bios, picmatic, alg, alg_state, pal, ROT0, "Web Picmatic", "Zorton Brothers (Los Justicieros)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS ) +GAME( 1993, zortonbr, alg_bios, picmatic, alg, alg_state, pal, ROT0, "Web Picmatic", "Zorton Brothers (Los Justicieros)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) |