diff options
| author | 2009-06-28 21:47:11 +0000 | |
|---|---|---|
| committer | 2009-06-28 21:47:11 +0000 | |
| commit | 7499fb926542bb1e35dcf498262fd73fdddd50da (patch) | |
| tree | 754781736d5b5d12f52cc76a2a124b88b1ad049e | |
| parent | 539602fc4293fce46eb30464238a3f4e8d2154f5 (diff) | |
New games added or promoted from NO_WORKING status
--------------------------------------------------
Laser Quiz [Mariusz Wojcieszek, stephh]
| -rw-r--r-- | src/mame/drivers/cubocd32.c | 299 | ||||
| -rw-r--r-- | src/mame/includes/amiga.h | 1 | ||||
| -rw-r--r-- | src/mame/machine/amiga.c | 17 | ||||
| -rw-r--r-- | src/mame/video/amigaaga.c | 5 |
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 |
