Wrote drivers for Millenium Nuovo 4000 (working with sound) and Il Pagliaccio (not working) [David Haywood,Angelo Salese]

New games added or promoted from NOT_WORKING status
---------------------------------------------------
Millenium Nuovo 4000 [David Haywood,Angelo Salese]

New games marked as GAME_NOT_WORKING
------------------------------------
Il Pagliaccio [David Haywood,Angelo Salese]
This commit is contained in:
Angelo Salese 2008-12-06 15:12:39 +00:00
parent 61d510664b
commit 0b23053a74
5 changed files with 946 additions and 12 deletions

2
.gitattributes vendored
View File

@ -1581,6 +1581,7 @@ src/mame/drivers/igs_blit.c svneol=native#text/plain
src/mame/drivers/igs_m027.c svneol=native#text/plain src/mame/drivers/igs_m027.c svneol=native#text/plain
src/mame/drivers/igs_m68.c svneol=native#text/plain src/mame/drivers/igs_m68.c svneol=native#text/plain
src/mame/drivers/ikki.c svneol=native#text/plain src/mame/drivers/ikki.c svneol=native#text/plain
src/mame/drivers/ilpag.c svneol=native#text/plain
src/mame/drivers/imolagp.c svneol=native#text/plain src/mame/drivers/imolagp.c svneol=native#text/plain
src/mame/drivers/intrscti.c svneol=native#text/plain src/mame/drivers/intrscti.c svneol=native#text/plain
src/mame/drivers/inufuku.c svneol=native#text/plain src/mame/drivers/inufuku.c svneol=native#text/plain
@ -1717,6 +1718,7 @@ src/mame/drivers/midxunit.c svneol=native#text/plain
src/mame/drivers/midyunit.c svneol=native#text/plain src/mame/drivers/midyunit.c svneol=native#text/plain
src/mame/drivers/midzeus.c svneol=native#text/plain src/mame/drivers/midzeus.c svneol=native#text/plain
src/mame/drivers/mikie.c svneol=native#text/plain src/mame/drivers/mikie.c svneol=native#text/plain
src/mame/drivers/mil4000.c svneol=native#text/plain
src/mame/drivers/miniboy7.c svneol=native#text/plain src/mame/drivers/miniboy7.c svneol=native#text/plain
src/mame/drivers/minivadr.c svneol=native#text/plain src/mame/drivers/minivadr.c svneol=native#text/plain
src/mame/drivers/mirage.c svneol=native#text/plain src/mame/drivers/mirage.c svneol=native#text/plain

482
src/mame/drivers/ilpag.c Normal file
View File

@ -0,0 +1,482 @@
/*******************************************************************************************
Il Pagliaccio (c) 19?? unknown
preliminary driver by David Haywood & Angelo Salese
Notes:
-at start-up a "initialize request" pops-up,press Service Mode and the "Init eeprom?" button,and
reset with F3 for doing it.
TODO:
-Protection not yet checked at all.My raw guess is that covers input ports or Work RAM
addresses;
-This game runs all the program snippets by irq callings,check / implement proper irq
generation;
-Video emulation,blitter based;
CPU
1x MC68HC000FN12 (main)
1x XC95144XL
2x XC9572XL
1x oscillator 11.0592MHz
1x blue resonator CSB400P
ROMs
4x W27E040
1x P87C748EBPN (read protected)
Note
1x 28x2 edge connector (not JAMMA)
1x trimmer (volume)
1x battery
2x pushbutton (MANAGEMENT,STATISTIC)
*******************************************************************************************/
#include "driver.h"
#include "deprecat.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "sound/2151intf.h"
#include "sound/3812intf.h"
#include "sound/okim6295.h"
static UINT16 *blit_romaddr,*blit_attr1_ram,*blit_dst_ram_loword,*blit_attr2_ram,*blit_dst_ram_hiword;
static UINT8 *blit_buffer;
VIDEO_START(ilpag)
{
blit_buffer = auto_malloc(512*512*4); //just to be sure,number is wrong
}
VIDEO_UPDATE(ilpag)
{
int x,y;
// static int counter = 0;
int count;
UINT8 *blit_rom = memory_region(screen->machine, "blit_data");
// printf("counter %04x\n", counter);
blit_rom = blit_buffer;
count = 0;
for(y=0;y<512;y++)
{
for(x=0;x<512;x++)
{
UINT32 color;
color = (blit_rom[count] & 0xff);
if(x<video_screen_get_visible_area(screen)->max_x && y<video_screen_get_visible_area(screen)->max_y)
*BITMAP_ADDR32(bitmap, y, x) = screen->machine->pens[color];
count++;
}
}
// counter++;
return 0;
}
static WRITE16_HANDLER( paletteram_io_w )
{
static int pal_offs,r,g,b,internal_pal_offs,pal_data;
switch(offset*2)
{
case 4:
pal_offs = 0;
break;
case 0:
internal_pal_offs = 0;
break;
case 2:
switch(internal_pal_offs)
{
case 0:
pal_data = (data & 0xff00) >> 8;
r = ((pal_data & 0x3f) << 2) | ((pal_data & 0x30) >> 4);
internal_pal_offs++;
break;
case 1:
pal_data = (data & 0xff00) >> 8;
g = ((pal_data & 0x3f) << 2) | ((pal_data & 0x30) >> 4);
internal_pal_offs++;
break;
case 2:
pal_data = (data & 0xff00) >> 8;
b = ((pal_data & 0x3f) << 2) | ((pal_data & 0x30) >> 4);
palette_set_color(space->machine, pal_offs, MAKE_RGB(r, g, b));
internal_pal_offs = 0;
pal_offs++;
break;
}
break;
}
}
static WRITE16_HANDLER( blit_copy_w )
{
UINT8 *blit_rom = memory_region(space->machine, "blit_data");
UINT32 blit_dst_xpos;
UINT32 blit_dst_ypos;
int x,y,x_size,y_size, src;;
printf("blit copy? %04x %04x %04x %04x %04x %04x\n", data, blit_romaddr[0], blit_attr1_ram[0], blit_dst_ram_loword[0], blit_attr2_ram[0], blit_dst_ram_hiword[0] );
blit_dst_xpos = (blit_dst_ram_loword[0] & 0x00ff)*2;
blit_dst_ypos = ((blit_dst_ram_loword[0] & 0xff00)>>8)*2;
// ff00 = ypos?
// blit_dst_xpos|= (blit_dst_ram_hiword[0] & 0xffff)<<16;
y_size = 8;// blit_romaddr[0] & 0x00ff;
x_size = 14;//blit_romaddr[0] & 0xff00 >> 8;
src = blit_romaddr[0];
for(y=0;y<y_size;y++)
{
for(x=0;x<x_size;x++)
{
int drawx = (blit_dst_xpos+x)&0x1ff;
int drawy = (blit_dst_ypos+y)&0x1ff;
blit_buffer[drawy*512+drawx] = blit_rom[src];
src+=1;
}
}
//blit_buffer[blit_dst_xpos+(x*0x100)+(y)] = blit_ram[blit_romaddr[0]+(x*0x100)+(y)];
}
#if 0
static READ16_HANDLER( unknown_read )
{
return mame_rand(space->machine);
}
#endif
static READ16_HANDLER( blitter_status_r )
{
return 0;
}
#if 0
static UINT16 t1,t2;
static READ16_HANDLER( unk_latch_1_r )
{
return t1;
}
static READ16_HANDLER( unk_latch_2_r )
{
return t2;
}
static WRITE16_HANDLER( unk_latch_1_w )
{
t1 = data;
}
static WRITE16_HANDLER( unk_latch_2_w )
{
t2 = data;
}
#endif
static ADDRESS_MAP_START( ilpag_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x1fffff) AM_ROM AM_REGION("blit_data", 0)
AM_RANGE(0x200000, 0x20ffff) AM_RAM
// AM_RANGE(0x800000, 0x800001) AM_READ(unk_latch_1_r)
// AM_RANGE(0x880000, 0x880001) AM_READ(unk_latch_2_r)
AM_RANGE(0x225000, 0x225fff) AM_RAM // NVRAM?
AM_RANGE(0x900000, 0x900005) AM_WRITE( paletteram_io_w )
AM_RANGE(0x980006, 0x980007) AM_WRITE( blit_copy_w )
AM_RANGE(0x998000, 0x998001) AM_RAM AM_BASE(&blit_romaddr)
AM_RANGE(0x9a0000, 0x9a0001) AM_RAM AM_BASE(&blit_attr1_ram)
AM_RANGE(0x9a8000, 0x9a8001) AM_RAM AM_BASE(&blit_dst_ram_loword)
AM_RANGE(0x9b0000, 0x9b0001) AM_RAM AM_BASE(&blit_attr2_ram)
AM_RANGE(0x9b8000, 0x9b8001) AM_RAM AM_BASE(&blit_dst_ram_hiword)
AM_RANGE(0x9e0000, 0x9e0001) AM_READ(blitter_status_r)
AM_RANGE(0xc00180, 0xc00181) AM_READ_PORT("IN2")
// AM_RANGE(0xc00200, 0xc00201) AM_WRITE(unk_latch_1_w)
AM_RANGE(0xc00380, 0xc00381) AM_READ_PORT("IN3")
// AM_RANGE(0xc002d0, 0xc002d1) AM_WRITE(unk_latch_2_w)
ADDRESS_MAP_END
static INPUT_PORTS_START( ilpag )
PORT_START("IN0")
PORT_DIPNAME( 0x0001, 0x0001, "IN0" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_START("IN1")
PORT_DIPNAME( 0x0001, 0x0001, "IN1" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_START("IN2")
PORT_DIPNAME( 0x0001, 0x0001, "IN2" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE( 0x0004, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, "Init eeprom?" )//enable this for the initialize eeprom thing
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_START("IN3")
PORT_DIPNAME( 0x0001, 0x0001, "IN3" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0004, 0x0004, "??? enable this" )//<- this puts the game on the "hi score" screen
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
static INTERRUPT_GEN( ilpag_hackint )
{
switch (cpu_getiloops(device))
{
case 0:
cpu_set_input_line(device, 3, HOLD_LINE);
break;
case 1:
cpu_set_input_line(device, 4, HOLD_LINE);
break;
case 2:
cpu_set_input_line(device, 6, HOLD_LINE);
break;
}
}
static MACHINE_DRIVER_START( ilpag )
MDRV_CPU_ADD("main", M68000, 8000000 ) // ?
MDRV_CPU_PROGRAM_MAP(ilpag_map,0)
MDRV_CPU_VBLANK_INT_HACK(ilpag_hackint,3)
MDRV_SCREEN_ADD("main", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MDRV_SCREEN_SIZE(512, 512)
MDRV_SCREEN_VISIBLE_AREA(0, 512-1, 0, 512-1)
MDRV_PALETTE_LENGTH(0x200)
MDRV_VIDEO_START(ilpag)
MDRV_VIDEO_UPDATE(ilpag)
MACHINE_DRIVER_END
ROM_START( ilpag )
ROM_REGION( 0x200000, "main", 0 ) // 68000 code
ROM_LOAD16_BYTE( "2.7c-35.u32", 0x000000, 0x80000, CRC(ed99c884) SHA1(b3d2c9fb7765e3c8ff1e0de9c8edb6628e1c79ef) )
ROM_LOAD16_BYTE( "2.7c-36.u31", 0x000001, 0x80000, CRC(4cd41688) SHA1(a1a15b06aa738cd4154d3c3479a7bf2da0e48426) )
ROM_REGION( 0x100000, "blit_data", 0 ) // data for the blitter
ROM_LOAD( "graf2.u51", 0x080000, 0x80000, CRC(2d64d3b5) SHA1(8fdb943d0aedf12706ce0a772c8f5155fa03e8c7) )
ROM_LOAD( "graf1.u46", 0x000000, 0x80000, CRC(cf745964) SHA1(7af4a6c0b8d01c0d1b71bc5330a257d2fa712611) )
ROM_REGION( 0x800, "mcu", 0 ) // MCU code
ROM_LOAD( "87c748.u132", 0x000, 0x800, NO_DUMP )
ROM_END
GAME( 19??, ilpag, 0, ilpag, ilpag, 0, ROT0, "unknown", "Il Pagliaccio", GAME_NOT_WORKING | GAME_NO_SOUND )

443
src/mame/drivers/mil4000.c Normal file
View File

@ -0,0 +1,443 @@
/*******************************************************************************************
Millenium Nuovo 4000 / Nuovo Millenium 4000 (c) 2000 Sure Milano
driver by David Haywood and Angelo Salese
Notes:
-At first start-up,an Italian msg pops up: "(translated) pcb has been hacked from external
agent,it's advised to add an anti-spark device". Press F2 to enter Service Mode,then press
Hold 5 to exit Service Mode.
-HW name (stamped on the pcb) is "CHP4";
TODO:
-Add Touch Screen support;
-H/V-blank bits emulation;
-Inputs/outputs are grossly mapped;
-Protection PIC is unused?
============================================================================================
Manufacturer: Sure
Revision number: CHP4 1.5
CPU
1x PIC16C65B (u60)(read protected)
1x MC68HC000FN12 (u61)
1x U6295 (u53)(equivalent to M6295)
1x resonator 1000j (close to 6295)
1x oscillator 12.000MHz
1x oscillator 14.31818MHz
ROMs
1x 27C020 (1)
7x V29C51001T (2,3,4,5,6,27,28)
1x PALCE22V10H (u74)(read protected)
2x A40MX04-PL840010 (u2,u3)(read protected)
Note
1x 28x2 edge connector
1x RS232 9pins connector
1x trimmer (volume)
1x 2positon jumper
1x pushbutton (reset)
*******************************************************************************************/
#include "driver.h"
#include "cpu/m68000/m68000.h"
#include "sound/okim6295.h"
static UINT16 *sc0_vram,*sc1_vram,*sc2_vram,*sc3_vram;
static tilemap *sc0_tilemap,*sc1_tilemap,*sc2_tilemap,*sc3_tilemap;
static TILE_GET_INFO( get_sc0_tile_info )
{
UINT32 data = (sc0_vram[tile_index*2]<<16) | sc0_vram[tile_index*2+1];
int tile = data >> 14;
int color = (sc0_vram[tile_index*2+1] & 0x1f)+0;
SET_TILE_INFO(
0,
tile,
color,
0);
}
static TILE_GET_INFO( get_sc1_tile_info )
{
UINT32 data = (sc1_vram[tile_index*2]<<16) | sc1_vram[tile_index*2+1];
int tile = data >> 14;
int color = (sc1_vram[tile_index*2+1] & 0x1f)+0x10;
SET_TILE_INFO(
0,
tile,
color,
0);
}
static TILE_GET_INFO( get_sc2_tile_info )
{
UINT32 data = (sc2_vram[tile_index*2]<<16) | sc2_vram[tile_index*2+1];
int tile = data >> 14;
int color = (sc2_vram[tile_index*2+1] & 0x1f)+0x20;
SET_TILE_INFO(
0,
tile,
color,
0);
}
static TILE_GET_INFO( get_sc3_tile_info )
{
UINT32 data = (sc3_vram[tile_index*2]<<16) | sc3_vram[tile_index*2+1];
int tile = data >> 14;
int color = (sc3_vram[tile_index*2+1] & 0x1f)+0x30;
SET_TILE_INFO(
0,
tile,
color,
0);
}
VIDEO_START(mil4000)
{
const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
int i;
// game doesn't clear the palette, so to avoid seeing mame defaults we clear it
for (i=0;i<0x800;i++)
palette_set_color(space->machine, i, MAKE_RGB(0, 0, 0));
sc0_tilemap = tilemap_create(get_sc0_tile_info,tilemap_scan_rows,8,8,64,64);
sc1_tilemap = tilemap_create(get_sc1_tile_info,tilemap_scan_rows,8,8,64,64);
sc2_tilemap = tilemap_create(get_sc2_tile_info,tilemap_scan_rows,8,8,64,64);
sc3_tilemap = tilemap_create(get_sc3_tile_info,tilemap_scan_rows,8,8,64,64);
tilemap_set_transparent_pen(sc1_tilemap,0);
tilemap_set_transparent_pen(sc2_tilemap,0);
tilemap_set_transparent_pen(sc3_tilemap,0);
}
VIDEO_UPDATE(mil4000)
{
tilemap_draw(bitmap,cliprect,sc0_tilemap,0,0);
tilemap_draw(bitmap,cliprect,sc1_tilemap,0,0);
tilemap_draw(bitmap,cliprect,sc2_tilemap,0,0);
tilemap_draw(bitmap,cliprect,sc3_tilemap,0,0);
return 0;
}
/*TODO*/
static READ16_HANDLER( hvretrace_r )
{
static UINT16 res;
static UINT16 vblank = 0,hblank = 0;
res = 0;
vblank^=1;
hblank^=1;
/*V-Blank*/
if (vblank)
res|= 0x80;
/*H-Blank*/
if (hblank)
res|= 0x40;
return res;
}
static WRITE16_HANDLER( sc0_vram_w )
{
sc0_vram[offset] = data;
tilemap_mark_tile_dirty(sc0_tilemap,offset/2);
}
static WRITE16_HANDLER( sc1_vram_w )
{
sc1_vram[offset] = data;
tilemap_mark_tile_dirty(sc1_tilemap,offset/2);
}
static WRITE16_HANDLER( sc2_vram_w )
{
sc2_vram[offset] = data;
tilemap_mark_tile_dirty(sc2_tilemap,offset/2);
}
static WRITE16_HANDLER( sc3_vram_w )
{
sc3_vram[offset] = data;
tilemap_mark_tile_dirty(sc3_tilemap,offset/2);
}
/*end of video stuff*/
/*
--x- ---- ---- ---- Coin Counter
---- ---- -x-- ---- Prize
---- ---- --x- ---- Start
---- ---- ---x ---- Hold 5
---- ---- ---- x--- Hold 4
---- ---- ---- -x-- Hold 3
---- ---- ---- --x- Hold 2
---- ---- ---- ---x Hold 1
*/
static WRITE16_HANDLER( output_w )
{
static int i;
for(i=0;i<3;i++)
coin_counter_w(i,data & 0x2000);
// popmessage("%04x\n",data);
}
static ADDRESS_MAP_START( mil4000_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(sc0_vram_w) AM_BASE(&sc0_vram)
AM_RANGE(0x504000, 0x507fff) AM_RAM_WRITE(sc1_vram_w) AM_BASE(&sc1_vram)
AM_RANGE(0x508000, 0x50bfff) AM_RAM_WRITE(sc2_vram_w) AM_BASE(&sc2_vram)
AM_RANGE(0x50c000, 0x50ffff) AM_RAM_WRITE(sc3_vram_w) AM_BASE(&sc3_vram)
AM_RANGE(0x708000, 0x708001) AM_READ_PORT("IN0")
AM_RANGE(0x708002, 0x708003) AM_READ_PORT("IN1")
AM_RANGE(0x708004, 0x708005) AM_READ(hvretrace_r)
AM_RANGE(0x708006, 0x708007) AM_READ_PORT("IN2")
AM_RANGE(0x708008, 0x708009) AM_WRITE(output_w)
AM_RANGE(0x708010, 0x708011) AM_NOP //touch screen
AM_RANGE(0x70801e, 0x70801f) AM_READWRITE(okim6295_status_0_lsb_r, okim6295_data_0_lsb_w)
AM_RANGE(0x780000, 0x780fff) AM_RAM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
AM_RANGE(0xf00000, 0xffffff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size) //probably not all of it.
ADDRESS_MAP_END
static INPUT_PORTS_START( mil4000 )
PORT_START("IN0")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Hold 1") PORT_CODE(KEYCODE_Z)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Hold 2") PORT_CODE(KEYCODE_X)
PORT_DIPNAME( 0x0004, 0x0004, "IN0" )
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Hold 5") PORT_CODE(KEYCODE_B)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1 )
PORT_DIPNAME( 0x0040, 0x0040, "Key out" ) //key out
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Hold 3") PORT_CODE(KEYCODE_C)
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_START("IN1")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_DIPNAME( 0x0004, 0x0004, "IN1" )
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_NO_TOGGLE( 0x0040, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x0080, 0x0080, "Prize" )//premio / prize (ticket?)
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_START("IN2")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN3 )//key in
PORT_DIPNAME( 0x0002, 0x0002, "IN2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Hold 4") PORT_CODE(KEYCODE_V)
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
static const gfx_layout tilelayout =
{
8,8, /* 8*8 characters */
RGN_FRAC(1,5),
5,
{ RGN_FRAC(0,5), RGN_FRAC(1,5), RGN_FRAC(2,5),RGN_FRAC(3,5),RGN_FRAC(4,5) },
{ 0, 1, 2, 3, 4, 5, 6, 7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
8*8
};
static GFXDECODE_START( mil4000 )
GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 0x800/32 )
GFXDECODE_END
static MACHINE_DRIVER_START( mil4000 )
MDRV_CPU_ADD("main", M68000, 8000000 ) // ?
MDRV_CPU_PROGRAM_MAP(mil4000_map,0)
// irq 2/4/5 point to the same place, others invalid
MDRV_CPU_VBLANK_INT("main", irq5_line_hold)
MDRV_NVRAM_HANDLER(generic_0fill)
MDRV_SCREEN_ADD("main", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MDRV_SCREEN_SIZE(320, 240)
MDRV_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
MDRV_PALETTE_LENGTH(0x800)
MDRV_GFXDECODE(mil4000)
MDRV_VIDEO_START(mil4000)
MDRV_VIDEO_UPDATE(mil4000)
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("oki", OKIM6295, 2500000) //pin 7 high & frequency not verified
MDRV_SOUND_CONFIG(okim6295_interface_pin7high)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_DRIVER_END
ROM_START( mil4000 )
ROM_REGION( 0x100000, "main", 0 ) // 68000 code
ROM_LOAD16_BYTE( "9.u75", 0x000001, 0x20000, CRC(e3e520df) SHA1(16ee86deb75bd711c846a647e3a0a4293b5685a8) )
ROM_LOAD16_BYTE( "10.u76", 0x000000, 0x20000, CRC(9020e19a) SHA1(e9ba0b69e8cb1fc35d024ae702d4670d78bf5cc8) )
ROM_REGION( 0xa0000, "gfx1", 0 ) // 5bpp?
ROM_LOAD( "2.u36", 0x000000, 0x20000, CRC(bb4fcfde) SHA1(7e19722ce42b9ec86faac32a526429b0e56639b5) )
ROM_LOAD( "3.u35_alt", 0x020000, 0x20000, CRC(3fd93c2f) SHA1(5217e328e51a2e00dc85a662dab6e339bd7f336f) ) // one of these is probably bad
ROM_LOAD( "4.u34", 0x040000, 0x20000, CRC(372a67a4) SHA1(c1c1352dd3152603827224d8970e6cb04aa1e858) )
ROM_LOAD( "5.u33", 0x060000, 0x20000, CRC(8058882e) SHA1(2de7b1e6e39d89913b2d6c1290d3cf326d2527d4) )
ROM_LOAD( "6.u32", 0x080000, 0x20000, CRC(7217a8c2) SHA1(275c2d5a128960dd6cd56d5e3647354b17129a12) )
ROM_REGION( 0x40000, "oki", 0 ) // 6295 samples
ROM_LOAD( "1.u54", 0x000000, 0x40000, CRC(e4a89163) SHA1(c0622c4e97b23daf9775137a2754bf9c47a29385) )
ROM_REGION( 0x4d4c, "mcu", 0 ) // MCU code
ROM_LOAD( "pic16c65a.u60.bad.dump", 0x000, 0x4d4c, BAD_DUMP CRC(c5e260ec) SHA1(d6e41de8a7db27382757ed7edfd7985090896e39) )
// palce22v10h.u74.bad.dump= palce22v10h-ch-jin-u27.u27 Jingle Bell (Italy, V133I)
ROM_END
ROM_START( mil4000a )
ROM_REGION( 0x100000, "main", 0 ) // 68000 code
ROM_LOAD16_BYTE( "27.u75", 0x000001, 0x20000, CRC(2a090f82) SHA1(c70295de25a99ec78752f2bd63e6ef0714141c84) )
ROM_LOAD16_BYTE( "28.u76", 0x000000, 0x20000, CRC(009e1f16) SHA1(33014ccd33abf2de8e83ec964192ebb9cbda8a08) )
ROM_REGION( 0xa0000, "gfx1", 0 ) // 5bpp?
ROM_LOAD( "2.u36", 0x000000, 0x20000, CRC(bb4fcfde) SHA1(7e19722ce42b9ec86faac32a526429b0e56639b5) )
ROM_LOAD( "3.u35", 0x020000, 0x20000, CRC(21c43d81) SHA1(a266b85378723ad8e219dd63a639add64624de13) )
ROM_LOAD( "4.u34", 0x040000, 0x20000, CRC(372a67a4) SHA1(c1c1352dd3152603827224d8970e6cb04aa1e858) )
ROM_LOAD( "5.u33", 0x060000, 0x20000, CRC(8058882e) SHA1(2de7b1e6e39d89913b2d6c1290d3cf326d2527d4) )
ROM_LOAD( "6.u32", 0x080000, 0x20000, CRC(7217a8c2) SHA1(275c2d5a128960dd6cd56d5e3647354b17129a12) )
ROM_REGION( 0x40000, "oki", 0 ) // 6295 samples
ROM_LOAD( "1.u54", 0x000000, 0x40000, CRC(e4a89163) SHA1(c0622c4e97b23daf9775137a2754bf9c47a29385) )
ROM_REGION( 0x4d4c, "mcu", 0 ) // MCU code
ROM_LOAD( "pic16c65b_millennium4000.u60", 0x000, 0x4d4c, BAD_DUMP CRC(4f3f7b90) SHA1(fdf689dda57960820315dcf0138d2ade28248681) )
// palce22v10h.u74.bad.dump= palce22v10h-ch-jin-u27.u27 Jingle Bell (Italy, V133I)
ROM_END
GAME( 2000, mil4000, 0, mil4000, mil4000, 0, ROT0, "Sure Milano", "Millennium Nuovo 4000 (Version 2.0)", 0 )
GAME( 2000, mil4000a, mil4000, mil4000, mil4000, 0, ROT0, "Sure Milano", "Millennium Nuovo 4000 (Version 1.8)", 0 )

View File

@ -1595,6 +1595,7 @@ $(MAMEOBJ)/misc.a: \
$(DRIVERS)/hexa.o $(VIDEO)/hexa.o \ $(DRIVERS)/hexa.o $(VIDEO)/hexa.o \
$(DRIVERS)/homedata.o $(VIDEO)/homedata.o \ $(DRIVERS)/homedata.o $(VIDEO)/homedata.o \
$(DRIVERS)/hotblock.o \ $(DRIVERS)/hotblock.o \
$(DRIVERS)/ilpag.o \
$(DRIVERS)/imolagp.o \ $(DRIVERS)/imolagp.o \
$(DRIVERS)/intrscti.o \ $(DRIVERS)/intrscti.o \
$(DRIVERS)/istellar.o \ $(DRIVERS)/istellar.o \
@ -1621,6 +1622,7 @@ $(MAMEOBJ)/misc.a: \
$(DRIVERS)/mcatadv.o $(VIDEO)/mcatadv.o \ $(DRIVERS)/mcatadv.o $(VIDEO)/mcatadv.o \
$(DRIVERS)/micro3d.o \ $(DRIVERS)/micro3d.o \
$(DRIVERS)/midas.o \ $(DRIVERS)/midas.o \
$(DRIVERS)/mil4000.o \
$(DRIVERS)/miniboy7.o \ $(DRIVERS)/miniboy7.o \
$(DRIVERS)/mirage.o \ $(DRIVERS)/mirage.o \
$(DRIVERS)/mirax.o \ $(DRIVERS)/mirax.o \

View File

@ -8373,20 +8373,25 @@ Other Sun games
DRIVER( mnumber ) /* (c) 200? M.M. - B.R.L. */ DRIVER( mnumber ) /* (c) 200? M.M. - B.R.L. */
/* H8/3337 italian gambling games */ /* H8/3337 italian gambling games */
DRIVER( ntcash ) /* 1999 unknown */ DRIVER( ntcash ) /* (c) 1999 unknown */
DRIVER( wizard ) /* (c) 1999 A.A. */ DRIVER( wizard ) /* (c) 1999 A.A. */
DRIVER( laser2k1 ) /* 2001 unknown */ DRIVER( laser2k1 ) /* (c) 2001 unknown */
DRIVER( mdrink ) /* 2001 unknown */ DRIVER( mdrink ) /* (c) 2001 unknown */
DRIVER( te0144 ) /* 2001 unknown */ DRIVER( te0144 ) /* (c) 2001 unknown */
DRIVER( cmagica ) /* 200? unknown */ DRIVER( cmagica ) /* (c) 200? unknown */
DRIVER( millsun ) /* 200? unknown */ DRIVER( millsun ) /* (c) 200? unknown */
DRIVER( sspac2k1 ) /* 200? unknown */ DRIVER( sspac2k1 ) /* (c) 200? unknown */
DRIVER( elvis ) /* 200? unknown */ DRIVER( elvis ) /* (c) 200? unknown */
/*Intel 8086-based italian gambling games */ /* Intel 8086-based italian gambling games */
DRIVER( newmcard ) /* 19?? unknown */ DRIVER( newmcard ) /* (c) 19?? unknown */
DRIVER( brasil ) /* 2000 unknown */ DRIVER( brasil ) /* (c) 2000 unknown */
DRIVER( fashion ) /* 2000 unknown */ DRIVER( fashion ) /* (c) 2000 unknown */
/* M68k based italian gambling games */
DRIVER( ilpag ) /* (c) 19?? unknown */
DRIVER( mil4000 ) /* (c) 2000 Sure Milano */
DRIVER( mil4000a ) /* (c) 2000 Sure Milano */
/* Mitsubishi/Renesas M16/62A italian gambling games */ /* Mitsubishi/Renesas M16/62A italian gambling games */
DRIVER( ejollyx5 ) /* (c) 200? Solar Games */ DRIVER( ejollyx5 ) /* (c) 200? Solar Games */