summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/luckgrln.c
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2010-02-19 17:11:34 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2010-02-19 17:11:34 +0000
commitb266aa9e964de7b2f11212b8120458cd0ff2743a (patch)
treefe483c33f6f4ceb996ea446674b4f5a3c8805b0f /src/mame/drivers/luckgrln.c
parent6f58265f53e130b23ded448841aca89eee1d43ed (diff)
Some improvements to Lucky Girl (New HW) [Angelo Salese]
Diffstat (limited to 'src/mame/drivers/luckgrln.c')
-rw-r--r--src/mame/drivers/luckgrln.c80
1 files changed, 57 insertions, 23 deletions
diff --git a/src/mame/drivers/luckgrln.c b/src/mame/drivers/luckgrln.c
index 081dc7ea476..aa759a81a8f 100644
--- a/src/mame/drivers/luckgrln.c
+++ b/src/mame/drivers/luckgrln.c
@@ -5,9 +5,9 @@
The program rom extracted from the Z180 also refers to this as Lucky 74..
-
-
-
+ TODO:
+ - interrupt generation (nested NMIs? disabled for now)
+ - video emulation (uses tilexor)
Lucky Girl
Wing 1991
@@ -77,18 +77,62 @@
#include "cpu/z180/z180.h"
#include "video/mc6845.h"
+static UINT8 *luck_vram1,*luck_vram2,*luck_vram3;
+
+static VIDEO_START(luckgrln)
+{
+
+}
+
+static VIDEO_UPDATE(luckgrln)
+{
+ int y,x;
+ int count = 0;
+
+ for (y=0;y<32;y++)
+ {
+ for (x=0;x<32;x++)
+ {
+ UINT16 tile = (luck_vram1[count] & 0xff) | ((luck_vram2[count] & 0x1f)<<8);
+ UINT8 col = 0;
+ //UINT8 region = (luck_vram2[count] & 0x20) >> 5;
+
+ drawgfx_opaque(bitmap,cliprect,screen->machine->gfx[0],tile,col,0,0,x*8,y*8);
+
+ count++;
+ }
+ }
+ return 0;
+}
static ADDRESS_MAP_START( mainmap, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x00000, 0x03fff) AM_ROM
- AM_RANGE(0x10000, 0x1ffff) AM_ROMBANK("bank1")
+ AM_RANGE(0x10000, 0x1ffff) AM_ROM AM_REGION("rom_data",0x10000)
+ AM_RANGE(0x20000, 0x2ffff) AM_ROM AM_REGION("rom_data",0x00000)
+
+ AM_RANGE(0x0c200, 0x0c5ff) AM_RAM
+ AM_RANGE(0x0ca00, 0x0cdff) AM_RAM
+
AM_RANGE(0x0d800, 0x0dfff) AM_RAM
- AM_RANGE(0x0f000, 0x0ffff) AM_RAM
+
+ AM_RANGE(0x0e000, 0x0e7ff) AM_RAM AM_BASE(&luck_vram1)
+ AM_RANGE(0x0e800, 0x0efff) AM_RAM AM_BASE(&luck_vram2)
+ AM_RANGE(0x0f000, 0x0f7ff) AM_RAM AM_BASE(&luck_vram3)
+
+ AM_RANGE(0x0f800, 0x0ffff) AM_RAM
AM_RANGE(0xf0000, 0xfffff) AM_RAM
ADDRESS_MAP_END
+/*
+static WRITE8_HANDLER( output_w )
+{
+ printf("%02x\n",data);
+}
+*/
static ADDRESS_MAP_START( portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff) // i think
AM_RANGE(0x0000, 0x003f) AM_RAM // Z180 internal regs
+// AM_RANGE(0x0060, 0x0060) AM_WRITE(output_w)
AM_RANGE(0x00b0, 0x00b0) AM_DEVWRITE("crtc", mc6845_address_w)
AM_RANGE(0x00b1, 0x00b1) AM_DEVWRITE("crtc", mc6845_register_w)
ADDRESS_MAP_END
@@ -104,25 +148,15 @@ static const gfx_layout tiles8x8_layout =
RGN_FRAC(1,6),
6,
{ RGN_FRAC(0,6),RGN_FRAC(1,6),RGN_FRAC(2,6),RGN_FRAC(3,6),RGN_FRAC(4,6),RGN_FRAC(5,6) },
- { 0,1,2,3,4,5,6,7 },
+ { STEP8(0,1) },
{ 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8},
8*8
};
static GFXDECODE_START( luckgrln )
- GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 )
GFXDECODE_ENTRY( "gfx2", 0, tiles8x8_layout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 )
GFXDECODE_END
-static VIDEO_START(luckgrln)
-{
-
-}
-
-static VIDEO_UPDATE(luckgrln)
-{
- return 0;
-}
-
static const mc6845_interface mc6845_intf =
{
"screen", /* screen we are acting on */
@@ -141,7 +175,7 @@ static MACHINE_DRIVER_START( luckgrln )
MDRV_CPU_ADD("maincpu", Z180,8000000)
MDRV_CPU_PROGRAM_MAP(mainmap)
MDRV_CPU_IO_MAP(portmap)
- MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
+// MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
MDRV_MC6845_ADD("crtc", H46505, 6000000/4, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */
@@ -150,8 +184,8 @@ static MACHINE_DRIVER_START( luckgrln )
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MDRV_SCREEN_SIZE(256, 256)
- MDRV_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MDRV_SCREEN_SIZE(512, 256)
+ MDRV_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MDRV_GFXDECODE(luckgrln)
MDRV_PALETTE_LENGTH(0x100)
@@ -164,7 +198,7 @@ static DRIVER_INIT( luckgrln )
{
int i;
UINT8 x,v;
- UINT8* rom = memory_region(machine,"user1");
+ UINT8* rom = memory_region(machine,"rom_data");
for (i=0;i<0x20000;i++)
{
@@ -191,14 +225,14 @@ static DRIVER_INIT( luckgrln )
#endif
// ??
- memory_set_bankptr(machine, "bank1",&rom[0x010000]);
+// memory_set_bankptr(machine, "bank1",&rom[0x010000]);
}
ROM_START( luckgrln )
ROM_REGION( 0x4000, "maincpu", 0 ) // internal Z180 rom
ROM_LOAD( "lucky74.bin", 0x00000, 0x4000, CRC(fa128e05) SHA1(97a9534b8414f984159271db48b153b0724d22f9) )
- ROM_REGION( 0x20000, "user1", 0 ) // external data / cpu rom
+ ROM_REGION( 0x20000, "rom_data", 0 ) // external data / cpu rom
ROM_LOAD( "falcon.13", 0x00000, 0x20000, CRC(f7a717fd) SHA1(49a39b84620876ee2faf73aaa405a1e17cab2da2) )
ROM_REGION( 0x60000, "gfx1", 0 )