summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mariuszw1 <mariuszw1@users.noreply.github.com>2009-06-28 21:47:11 +0000
committer mariuszw1 <mariuszw1@users.noreply.github.com>2009-06-28 21:47:11 +0000
commit7499fb926542bb1e35dcf498262fd73fdddd50da (patch)
tree754781736d5b5d12f52cc76a2a124b88b1ad049e
parent539602fc4293fce46eb30464238a3f4e8d2154f5 (diff)
New games added or promoted from NO_WORKING status
-------------------------------------------------- Laser Quiz [Mariusz Wojcieszek, stephh]
-rw-r--r--src/mame/drivers/cubocd32.c299
-rw-r--r--src/mame/includes/amiga.h1
-rw-r--r--src/mame/machine/amiga.c17
-rw-r--r--src/mame/video/amigaaga.c5
4 files changed, 244 insertions, 78 deletions
diff --git a/src/mame/drivers/cubocd32.c b/src/mame/drivers/cubocd32.c
index 4823b09b9b7..fddfcfe63d1 100644
--- a/src/mame/drivers/cubocd32.c
+++ b/src/mame/drivers/cubocd32.c
@@ -32,7 +32,7 @@
Harem Challenge | | 1995
Laser Quiz | | 1995
Laser Quiz 2 "Italy" | 1.0 | 1995
- Laser Strixx | | 1995
+ Laser Strixx 2 | | 1995
Magic Premium | 1.1 | 1996
Laser Quiz France | 1.0 | 1995
Odeon Twister | | 199x
@@ -46,6 +46,49 @@
Stephh notes:
+ Candy Puzzle
+
+settings (A5=0x059ac0) :
+
+ - 051ba0.w (-$7f20,A5) : difficulty player 1 (0)
+ - 051ba2.w (-$7f1e,A5) : difficulty player 2 (0)
+ - 051ba4.w (-$7f1c,A5) : challenge rounds (3)
+ - 051ba6.w (-$7f1a,A5) : death in 2P mode (0) - 0 = NO / 1 = YES
+ - 051ba8.w (-$7f18,A5) : play x credit (1)
+ - 051bac.w (-$7f14,A5) : coin x 1 play (1)
+ - 051bb0.w (-$7f10,A5) : maxpalleattack (2)
+ - : reset high score - NO* / YES
+ - 051baa.w (-$7f16,A5) : 1 coin 2 players (1) - 0 = NO / 1 = YES
+
+useful addresses :
+
+ - 051c02.w (-$7ebe,A5) : must be 0x0000 instead of 0x0001 to accept coins !
+ - 051c04.b (-$7ebc,A5) : credits
+ - 051c10.l (-$7eb0,A5) : basic address for inputs = 0006fd18 :
+ * BA + 1 x 6 + 4 : start 2 (bit 5) and coin (bit 2)
+ * BA + 1 x 6 + 0 : player 2 L/R (-1/0/1)
+ * BA + 1 x 6 + 2 : player 2 U/D (-1/0/1)
+ * BA + 0 x 6 + 4 : start 1 (bit 5)
+ * BA + 0 x 6 + 0 : player 1 L/R (-1/0/1)
+ * BA + 0 x 6 + 2 : player 1 U/D (-1/0/1)
+
+routines :
+
+ - 07acae : inputs read
+ - 092c8a : buttons + coin read
+ * D0 = 0 : read POTGO (player 2)
+ * D0 = 1 : read POTGO (player 1)
+ - 092baa : joy read - test bits 1 and 9 : 1 if bit 1, -1 if bit 9, 0 if none
+ * D0 = 0 : read JOY0DAT (player 2)
+ * D0 = 1 : read JOY1DAT (player 1)
+ - 092bd4 : joy read - test bits 0 and 8 : 1 if bit 0, -1 if bit 8, 0 if none ("eor.w read, read >> 1" before test)
+ * D0 = 0 : read JOY0DAT (player 2)
+ * D0 = 1 : read JOY1DAT (player 1)
+
+ - 07ada4 : coin verification
+ - 07d0fe : start buttons verification
+
+
Harem Challenge:
settings (A5=0x00a688 & A2= 0x0028e8) :
@@ -65,7 +108,7 @@ settings (A5=0x00a688 & A2= 0x0028e8) :
useful addresses :
- - 002907.b (-$7f00,A5 -> $1f,A2) : must be 0x0000 instead of 0x0001 to accept coins !
+ - 002907.b (-$7f00,A5 -> $1f,A2) : must be 0x00 instead of 0x01 to accept coins !
- 00278c.w (-$7efc,A5) : player 2 inputs
- 00278e.w (-$7efa,A5) : player 1 inputs
- 002790.b (-$7ef8,A5) : credits
@@ -104,7 +147,7 @@ settings (A5=0x00a688 & A2= 0x0027f8) :
useful addresses :
- - 00281c.b (-$7fa2,A5 -> $24,A2) : must be 0x0000 instead of 0x0001 to accept coins !
+ - 00281c.b (-$7fa2,A5 -> $24,A2) : must be 0x00 instead of 0x01 to accept coins !
- 0026f4.w (-$7f94,A5) : player 1 inputs (in MSW after swap)
- 0026ee.b (-$7f9a,A5) : credits
@@ -129,49 +172,6 @@ routines :
- 04d1da : coin verification
-
- Candy Puzzle
-
-settings (A5=0x059ac0) :
-
- - 051ba0.w (-$7f20,A5) : difficulty player 1 (0)
- - 051ba2.w (-$7f1e,A5) : difficulty player 2 (0)
- - 051ba4.w (-$7f1c,A5) : challenge rounds (3)
- - 051ba6.w (-$7f1a,A5) : death in 2P mode (0) - 0 = NO / 1 = YES
- - 051ba8.w (-$7f18,A5) : play x credit (1)
- - 051bac.w (-$7f14,A5) : coin x 1 play (1)
- - 051bb0.w (-$7f10,A5) : maxpalleattack (2)
- - : reset high score - NO* / YES
- - 051baa.w (-$7f16,A5) : 1 coin 2 players (1) - 0 = NO / 1 = YES
-
-useful addresses :
-
- - 051c02.w (-$7ebe,A5) : must be 0x0000 instead of 0x0001 to accept coins !
- - 051c04.b (-$7ebc,A5) : credits
- - 051c10.l (-$7eb0,A5) : basic address for inputs = 0006fd18 :
- * BA + 1 x 6 + 4 : start 2 (bit 5) and coin (bit 2)
- * BA + 1 x 6 + 0 : player 2 L/R (-1/0/1)
- * BA + 1 x 6 + 2 : player 2 U/D (-1/0/1)
- * BA + 0 x 6 + 4 : start 1 (bit 5)
- * BA + 0 x 6 + 0 : player 1 L/R (-1/0/1)
- * BA + 0 x 6 + 2 : player 1 U/D (-1/0/1)
-
-routines :
-
- - 07acae : inputs read
- - 092c8a : buttons + coin read
- * D0 = 0 : read POTGO (player 2)
- * D0 = 1 : read POTGO (player 1)
- - 092baa : joy read - test bits 1 and 9 : 1 if bit 1, -1 if bit 9, 0 if none
- * D0 = 0 : read JOY0DAT (player 2)
- * D0 = 1 : read JOY1DAT (player 1)
- - 092bd4 : joy read - test bits 0 and 8 : 1 if bit 0, -1 if bit 8, 0 if none ("eor.w read, read >> 1" before test)
- * D0 = 0 : read JOY0DAT (player 2)
- * D0 = 1 : read JOY1DAT (player 1)
-
- - 07ada4 : coin verification
- - 07d0fe : start buttons verification
-
*/
#include "driver.h"
@@ -260,6 +260,7 @@ static ADDRESS_MAP_START( cd32_map, ADDRESS_SPACE_PROGRAM, 32 )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x1fffff) AM_RAMBANK(1) AM_BASE(&amiga_chip_ram32) AM_SIZE(&amiga_chip_ram_size)
AM_RANGE(0x800000, 0x800003) AM_READ_PORT("DIPSW1")
+ AM_RANGE(0x800010, 0x800013) AM_READ_PORT("DIPSW2")
AM_RANGE(0xb80000, 0xb8003f) AM_READWRITE(amiga_akiko32_r, amiga_akiko32_w)
AM_RANGE(0xbfa000, 0xbfa003) AM_WRITE(aga_overlay_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16(amiga_cia_r, amiga_cia_w, 0xffffffff)
@@ -369,7 +370,6 @@ static CUSTOM_INPUT(cubo_input)
return handle_joystick_potgor(field->port->machine, potgo_value) >> 10;
}
-
static INPUT_PORTS_START( cd32 )
PORT_START("CIA0PORTA")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -425,6 +425,32 @@ static INPUT_PORTS_START( cd32 )
PORT_DIPSETTING( 0x80, "Reset" )
PORT_DIPSETTING( 0x00, "Set" )
+ PORT_START("DIPSW2")
+ PORT_DIPNAME( 0x01, 0x01, "DSW2 1" )
+ PORT_DIPSETTING( 0x01, "Reset" )
+ PORT_DIPSETTING( 0x00, "Set" )
+ PORT_DIPNAME( 0x02, 0x02, "DSW2 2" )
+ PORT_DIPSETTING( 0x02, "Reset" )
+ PORT_DIPSETTING( 0x00, "Set" )
+ PORT_DIPNAME( 0x04, 0x04, "DSW2 3" )
+ PORT_DIPSETTING( 0x04, "Reset" )
+ PORT_DIPSETTING( 0x00, "Set" )
+ PORT_DIPNAME( 0x08, 0x08, "DSW2 4" )
+ PORT_DIPSETTING( 0x08, "Reset" )
+ PORT_DIPSETTING( 0x00, "Set" )
+ PORT_DIPNAME( 0x10, 0x10, "DSW2 5" )
+ PORT_DIPSETTING( 0x10, "Reset" )
+ PORT_DIPSETTING( 0x00, "Set" )
+ PORT_DIPNAME( 0x20, 0x20, "DSW2 6" )
+ PORT_DIPSETTING( 0x20, "Reset" )
+ PORT_DIPSETTING( 0x00, "Set" )
+ PORT_DIPNAME( 0x40, 0x40, "DSW2 7" )
+ PORT_DIPSETTING( 0x40, "Reset" )
+ PORT_DIPSETTING( 0x00, "Set" )
+ PORT_DIPNAME( 0x80, 0x80, "DSW2 8" )
+ PORT_DIPSETTING( 0x80, "Reset" )
+ PORT_DIPSETTING( 0x00, "Set" )
+
PORT_START("P1")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
@@ -470,6 +496,12 @@ static INPUT_PORTS_START( cndypuzl )
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_MODIFY("DIPSW1")
+ PORT_BIT( 0x003f, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* bits 0 to 5 must be set to 0 to insert coin */
+
+ PORT_MODIFY("DIPSW2")
+ PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* not read at all */
+
INPUT_PORTS_END
static INPUT_PORTS_START( haremchl )
@@ -495,11 +527,67 @@ static INPUT_PORTS_START( haremchl )
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) /* retract */
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_MODIFY("DIPSW1")
+ PORT_BIT( 0x003f, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* bits 0 to 5 must be set to 0 to insert coin */
+
+ PORT_MODIFY("DIPSW2")
+ PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* not read at all */
+
INPUT_PORTS_END
-static INPUT_PORTS_START( lasstixx )
+static INPUT_PORTS_START( lsrquiz )
PORT_INCLUDE( cd32 )
+ PORT_MODIFY("P1JOY")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_MODIFY("P2JOY")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_MODIFY("P1")
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) /* "C" */
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) /* "D" */
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) /* START1 and "A" */
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) /* "B" */
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_MODIFY("P2")
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) /* "C" */
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) /* "D" */
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) /* START2 and "A" */
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) /* "B" */
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_MODIFY("DIPSW1")
+ PORT_BIT( 0x003f, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* bits 0 to 5 must be set to 0 to insert coin */
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_COIN1 )
+
+ PORT_MODIFY("DIPSW2")
+ PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* not read at all */
+
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( lsrquiz2 )
+ PORT_INCLUDE( cd32 )
+
+ PORT_MODIFY("P1JOY")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
PORT_MODIFY("P2JOY")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
@@ -510,6 +598,56 @@ static INPUT_PORTS_START( lasstixx )
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) /* "C" */
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) /* "D" */
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) /* START1 and "A" */
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) /* "B" */
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_MODIFY("P2")
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) /* "C" */
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) /* "D" */
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) /* START2 and "A" */
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) /* "B" */
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_MODIFY("DIPSW1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3) /* "C" */
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) /* "B" */
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) /* START3 and "A" */
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(3) /* "D" */
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Free_Play ) ) /* always set credits to 10 */
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, "Speed" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x20, "Ultra Turbo" ) /* the game is unplayable !!! */
+
+ PORT_MODIFY("DIPSW2")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) /* "C" */
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) /* "B" */
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) /* START4 and "A" */
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(4) /* "D" */
+ PORT_BIT( 0x00f0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* bits 4 to 7 aren't tested */
+
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( lasstixx )
+ PORT_INCLUDE( cd32 )
+
+ PORT_MODIFY("P2JOY")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_MODIFY("P1")
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) /* START1 and draw */
@@ -526,7 +664,15 @@ static INPUT_PORTS_START( lasstixx )
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_MODIFY("DIPSW1")
+ PORT_BIT( 0x003f, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* bits 0 to 5 must be set to 0 to insert coin */
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_COIN1 )
+
+ PORT_MODIFY("DIPSW2")
+ PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* not read at all */
+
INPUT_PORTS_END
+
/*************************************
*
* Sound definitions
@@ -689,22 +835,10 @@ static DRIVER_INIT( cd32 )
cubocd32_input_hack = NULL;
}
-static void haremchl_input_hack(running_machine *machine)
-{
- if(cpu_get_pc(machine->cpu[0]) < amiga_chip_ram_size)
- amiga_chip_ram_w(0x2906, 0x00);
-}
-
-static DRIVER_INIT(haremchl)
-{
- DRIVER_INIT_CALL(cd32);
- cubocd32_input_hack = haremchl_input_hack;
-}
-
static void cndypuzl_input_hack(running_machine *machine)
{
if(cpu_get_pc(machine->cpu[0]) < amiga_chip_ram_size)
- amiga_chip_ram_w(0x051c02, 0x00);
+ amiga_chip_ram_w(0x051c02, 0x0000);
}
static DRIVER_INIT(cndypuzl)
@@ -713,22 +847,22 @@ static DRIVER_INIT(cndypuzl)
cubocd32_input_hack = cndypuzl_input_hack;
}
-static void lasstixx_input_hack(running_machine *machine)
+static void haremchl_input_hack(running_machine *machine)
{
if(cpu_get_pc(machine->cpu[0]) < amiga_chip_ram_size)
- amiga_chip_ram_w(0x0281c, 0x00);
+ amiga_chip_ram_w8(0x002907, 0x00);
}
-static DRIVER_INIT(lasstixx)
+static DRIVER_INIT(haremchl)
{
DRIVER_INIT_CALL(cd32);
- cubocd32_input_hack = lasstixx_input_hack;
+ cubocd32_input_hack = haremchl_input_hack;
}
static void lsrquiz_input_hack(running_machine *machine)
{
if(cpu_get_pc(machine->cpu[0]) < amiga_chip_ram_size)
- amiga_chip_ram_w(0x1e1a, 0x00);
+ amiga_chip_ram_w8(0x001e1b, 0x00);
}
static DRIVER_INIT(lsrquiz)
@@ -740,7 +874,7 @@ static DRIVER_INIT(lsrquiz)
static void lsrquiz2_input_hack(running_machine *machine)
{
if(cpu_get_pc(machine->cpu[0]) < amiga_chip_ram_size)
- amiga_chip_ram_w(0x46106, 0x00);
+ amiga_chip_ram_w8(0x046107, 0x00);
}
static DRIVER_INIT(lsrquiz2)
@@ -749,15 +883,28 @@ static DRIVER_INIT(lsrquiz2)
cubocd32_input_hack = lsrquiz2_input_hack;
}
+static void lasstixx_input_hack(running_machine *machine)
+{
+ if(cpu_get_pc(machine->cpu[0]) < amiga_chip_ram_size)
+ amiga_chip_ram_w8(0x00281c, 0x00);
+}
+
+static DRIVER_INIT(lasstixx)
+{
+ DRIVER_INIT_CALL(cd32);
+ cubocd32_input_hack = lasstixx_input_hack;
+}
+
/***************************************************************************************************/
/* BIOS */
-GAME( 1993, cd32, 0, cd32, cd32, cd32, ROT0, "Commodore", "Amiga CD32 Bios", GAME_IS_BIOS_ROOT )
-
-GAME( 1995, cndypuzl, cd32, cd32, cndypuzl, cndypuzl, ROT0, "CD Express", "Candy Puzzle (v1.0)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
-GAME( 1995, haremchl, cd32, cd32, haremchl, haremchl, ROT0, "CD Express", "Harem Challenge", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
-GAME( 1995, lsrquiz, cd32, cd32, haremchl, lsrquiz, ROT0, "CD Express", "Laser Quiz Italy", GAME_NOT_WORKING|GAME_NO_SOUND )
-GAME( 1995, lsrquiz2, cd32, cd32, haremchl, lsrquiz2, ROT0, "CD Express", "Laser Quiz 2 Italy (v1.0)", GAME_NOT_WORKING|GAME_NO_SOUND )
-GAME( 1996, mgprem11, cd32, cd32, cd32, cd32, ROT0, "CD Express", "Magic Premium (v1.1)", GAME_NOT_WORKING|GAME_NO_SOUND )
-GAME( 1995, lasstixx, cd32, cd32, lasstixx, lasstixx, ROT0, "CD Express", "Laser Strixx 2", GAME_NOT_WORKING|GAME_NO_SOUND )
-GAME( 1995, mgnumber, cd32, cd32, cd32, cd32, ROT0, "CD Express", "Magic Number", GAME_NOT_WORKING|GAME_NO_SOUND )
+GAME( 1993, cd32, 0, cd32, cd32, cd32, ROT0, "Commodore", "Amiga CD32 Bios", GAME_IS_BIOS_ROOT )
+
+GAME( 1995, cndypuzl, cd32, cd32, cndypuzl, cndypuzl, ROT0, "CD Express", "Candy Puzzle (v1.0)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+GAME( 1995, haremchl, cd32, cd32, haremchl, haremchl, ROT0, "CD Express", "Harem Challenge", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+GAME( 1995, lsrquiz, cd32, cd32, lsrquiz, lsrquiz, ROT0, "CD Express", "Laser Quiz Italy", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* need credits to be set manually + no player 2 inputs */
+GAME( 1995, lsrquiz2, cd32, cd32, lsrquiz2, lsrquiz2, ROT0, "CD Express", "Laser Quiz 2 Italy (v1.0)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+GAME( 1995, lasstixx, cd32, cd32, lasstixx, lasstixx, ROT0, "CD Express", "Laser Strixx 2", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* need credits to be set manually */
+/* not checked yet */
+GAME( 1995, mgnumber, cd32, cd32, cd32, cd32, ROT0, "CD Express", "Magic Number", GAME_NOT_WORKING ) /* game resets before initialisation */
+GAME( 1996, mgprem11, cd32, cd32, cd32, cd32, ROT0, "CD Express", "Magic Premium (v1.1)", GAME_NOT_WORKING )
diff --git a/src/mame/includes/amiga.h b/src/mame/includes/amiga.h
index df7811875ed..6e1d92f85d8 100644
--- a/src/mame/includes/amiga.h
+++ b/src/mame/includes/amiga.h
@@ -367,6 +367,7 @@ extern const char *const amiga_custom_names[0x100];
extern UINT16 (*amiga_chip_ram_r)(offs_t offset);
extern void (*amiga_chip_ram_w)(offs_t offset, UINT16 data);
+extern void amiga_chip_ram_w8(offs_t offset, UINT8 data);
void amiga_machine_config(running_machine *machine, const amiga_machine_interface *intf);
diff --git a/src/mame/machine/amiga.c b/src/mame/machine/amiga.c
index 46a55f0c24a..5378c372cfa 100644
--- a/src/mame/machine/amiga.c
+++ b/src/mame/machine/amiga.c
@@ -245,6 +245,23 @@ static void amiga_chip_ram32_w(offs_t offset, UINT16 data)
}
+void amiga_chip_ram_w8(offs_t offset, UINT8 data)
+{
+ UINT16 dat;
+
+ dat = amiga_chip_ram_r(offset);
+ if (offset & 0x01)
+ {
+ dat &= 0xff00;
+ dat |= data;
+ }
+ else
+ {
+ dat &= 0x00ff;
+ dat |= ((UINT16)data) << 8;
+ }
+ amiga_chip_ram_w(offset,dat);
+}
/*************************************
*
diff --git a/src/mame/video/amigaaga.c b/src/mame/video/amigaaga.c
index 5bc121c4dab..55d087a1cfd 100644
--- a/src/mame/video/amigaaga.c
+++ b/src/mame/video/amigaaga.c
@@ -887,7 +887,7 @@ void amiga_aga_render_scanline(running_machine *machine, bitmap_t *bitmap, int s
/* compute the vertical start/stop */
vstart = CUSTOM_REG(REG_DIWSTRT) >> 8;
- vstop = (CUSTOM_REG(REG_DIWSTOP) >> 8);/* | ((~CUSTOM_REG(REG_DIWSTOP) >> 7) & 0x100);*/
+ vstop = (CUSTOM_REG(REG_DIWSTOP) >> 8);
if (diwhigh_written)
{
vstart |= (CUSTOM_REG(REG_DIWHIGH) & 7) << 8;
@@ -1152,7 +1152,8 @@ void amiga_aga_render_scanline(running_machine *machine, bitmap_t *bitmap, int s
if ( hires && lace ) p = m_hilace;
- popmessage("%s(%d pl od=%02x ed=%02x start=%04x stop=%04x hstart=%04x hstop=%04x diwhigh=%04x)", p, planes, odelay, edelay, CUSTOM_REG(REG_DDFSTRT), CUSTOM_REG(REG_DDFSTOP), CUSTOM_REG(REG_DIWSTRT), CUSTOM_REG(REG_DIWSTOP), CUSTOM_REG(REG_DIWHIGH) );
+ //popmessage("%s(%d pl od=%02x ed=%02x start=%04x stop=%04x hstart=%04x hstop=%04x diwhigh=%04x)", p, planes, odelay, edelay, CUSTOM_REG(REG_DDFSTRT), CUSTOM_REG(REG_DDFSTOP), CUSTOM_REG(REG_DIWSTRT), CUSTOM_REG(REG_DIWSTOP), CUSTOM_REG(REG_DIWHIGH) );
+ popmessage("%s(%d pl bplpt1=%06X, bpl1mod=%04x)", p, planes, CUSTOM_REG_LONG(REG_BPL1PTH), CUSTOM_REG(REG_BPL1MOD));
}
#endif