Major cleanup to IGS poker games (Mirko Buffoni)

- Renamed csk driver to igspoker.  This includes Champion Poker, Champion Skill,
  New Champion Skill
- Converted drivers to tilemap system and unified video section
- Unified memory maps and checked all input ports
- Removed obsolete palette handlers and made use of generic handlers
- Added layout for lamps handling
- Added hopper simulation
- Added New Champion Skill (different set, maybe original international release)
  and renamed current igs_ncs to igs_ncs2 (2000 version for italian market)
- Promoted igs_ncs2 to working state, but set GAME_IMPERFECT_GRAPHICS (missing
  initial notice screen)
- Moved Jackie to a separate driver (it's a slot machine game)
- Made some progress on Jackie which now boots (toggle mode to play, but work
  still needs to be done)
This commit is contained in:
Mirko Buffoni 2009-01-20 16:59:52 +00:00
parent e03f020244
commit 517c33a847
8 changed files with 1078 additions and 790 deletions

6
.gitattributes vendored
View File

@ -1380,7 +1380,6 @@ src/mame/drivers/crospang.c svneol=native#text/plain
src/mame/drivers/crshrace.c svneol=native#text/plain src/mame/drivers/crshrace.c svneol=native#text/plain
src/mame/drivers/crystal.c svneol=native#text/plain src/mame/drivers/crystal.c svneol=native#text/plain
src/mame/drivers/cshooter.c svneol=native#text/plain src/mame/drivers/cshooter.c svneol=native#text/plain
src/mame/drivers/csk.c svneol=native#text/plain
src/mame/drivers/cubeqst.c svneol=native#text/plain src/mame/drivers/cubeqst.c svneol=native#text/plain
src/mame/drivers/cubocd32.c svneol=native#text/plain src/mame/drivers/cubocd32.c svneol=native#text/plain
src/mame/drivers/cultures.c svneol=native#text/plain src/mame/drivers/cultures.c svneol=native#text/plain
@ -1587,7 +1586,7 @@ src/mame/drivers/igs017.c svneol=native#text/plain
src/mame/drivers/igs_blit.c svneol=native#text/plain 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/igs_ncs.c svneol=native#text/plain src/mame/drivers/igspoker.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/ilpag.c svneol=native#text/plain
src/mame/drivers/imolagp.c svneol=native#text/plain src/mame/drivers/imolagp.c svneol=native#text/plain
@ -1604,6 +1603,7 @@ src/mame/drivers/itgambl3.c svneol=native#text/plain
src/mame/drivers/itgamble.c svneol=native#text/plain src/mame/drivers/itgamble.c svneol=native#text/plain
src/mame/drivers/jack.c svneol=native#text/plain src/mame/drivers/jack.c svneol=native#text/plain
src/mame/drivers/jackal.c svneol=native#text/plain src/mame/drivers/jackal.c svneol=native#text/plain
src/mame/drivers/jackie.c svneol=native#text/plain
src/mame/drivers/jackpool.c svneol=native#text/plain src/mame/drivers/jackpool.c svneol=native#text/plain
src/mame/drivers/jailbrek.c svneol=native#text/plain src/mame/drivers/jailbrek.c svneol=native#text/plain
src/mame/drivers/jalmah.c svneol=native#text/plain src/mame/drivers/jalmah.c svneol=native#text/plain
@ -2539,6 +2539,7 @@ src/mame/layout/goldnpkr.lay svneol=native#text/plain
src/mame/layout/gorf.lay svneol=native#text/plain src/mame/layout/gorf.lay svneol=native#text/plain
src/mame/layout/gridiron.lay svneol=native#text/plain src/mame/layout/gridiron.lay svneol=native#text/plain
src/mame/layout/gypsyjug.lay svneol=native#text/plain src/mame/layout/gypsyjug.lay svneol=native#text/plain
src/mame/layout/igspoker.lay svneol=native#text/plain
src/mame/layout/invad2ct.lay svneol=native#text/plain src/mame/layout/invad2ct.lay svneol=native#text/plain
src/mame/layout/invaders.lay svneol=native#text/plain src/mame/layout/invaders.lay svneol=native#text/plain
src/mame/layout/invrvnge.lay svneol=native#text/plain src/mame/layout/invrvnge.lay svneol=native#text/plain
@ -2914,7 +2915,6 @@ src/mame/video/crgolf.c svneol=native#text/plain
src/mame/video/crimfght.c svneol=native#text/plain src/mame/video/crimfght.c svneol=native#text/plain
src/mame/video/crospang.c svneol=native#text/plain src/mame/video/crospang.c svneol=native#text/plain
src/mame/video/crshrace.c svneol=native#text/plain src/mame/video/crshrace.c svneol=native#text/plain
src/mame/video/csk.c svneol=native#text/plain
src/mame/video/cvs.c svneol=native#text/plain src/mame/video/cvs.c svneol=native#text/plain
src/mame/video/cyberbal.c svneol=native#text/plain src/mame/video/cyberbal.c svneol=native#text/plain
src/mame/video/darius.c svneol=native#text/plain src/mame/video/darius.c svneol=native#text/plain

View File

@ -1,245 +0,0 @@
/* New Champion Skill by IGS
-- the dump MAY be incomplete, there were 3 empty positions on the PCB near
the gfx roms
Chips of Note
IGS 003C (near chip with TEST OK E0069281 label)
IGS 002
IGA 001A
'file'
KC8255A
9941
(near CPU roms)
UM3567 9946
5x 8 switch dips
Clocks
3.579545Mhz (near sound)
12Mhz
--- what is the CPU, it looks like either Z80 or Z180 based
-- CPU rom is lightly encrypted (usual IGS style, some xors)
*/
#include "driver.h"
#include "cpu/z180/z180.h"
#include "sound/2413intf.h"
#include "deprecat.h"
static UINT8*ncs_video;
static UINT8*ncs_video2;
VIDEO_START(igs_ncs)
{
}
VIDEO_UPDATE(igs_ncs)
{
const gfx_element *gfx = screen->machine->gfx[0];
int count = 0;
int y,x;
for (y=0;y<32;y++)
{
for (x=0;x<64;x++)
{
int tile = ncs_video[count] | (ncs_video[count+0x800]<<8);
int colour = (tile >> 12) & 0x7;
drawgfx(bitmap,gfx,tile&0x1fff,colour+1,0,0,x*8,y*8,cliprect,TRANSPARENCY_NONE,0);
count++;
}
}
return 0;
}
static const gfx_layout layout_8x8x6 =
{
8, 8,
RGN_FRAC(1, 3),
6,
{ RGN_FRAC(0,3)+8,RGN_FRAC(0,3)+0,
RGN_FRAC(1,3)+8,RGN_FRAC(1,3)+0,
RGN_FRAC(2,3)+8,RGN_FRAC(2,3)+0 },
{ STEP8(0,1) },
{ STEP8(0,2*8) },
8*8*2
};
static GFXDECODE_START( igs_ncs )
GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x6, 0, 16 )
GFXDECODE_END
static INPUT_PORTS_START( igs_ncs )
INPUT_PORTS_END
static ADDRESS_MAP_START( igs_ncs_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x00000, 0x0efff ) AM_ROM
AM_RANGE( 0x0f000, 0x0ffff ) AM_RAM
ADDRESS_MAP_END
static READ8_HANDLER( ncs_random_r )
{
return 0xff;// mame_rand(space->machine);
}
static ADDRESS_MAP_START( igs_ncs_portmap, ADDRESS_SPACE_IO, 8 )
AM_RANGE( 0x2000, 0x23ff ) AM_RAM_WRITE( paletteram_xBBBBBGGGGGRRRRR_split1_w ) AM_BASE( &paletteram )
AM_RANGE( 0x2800, 0x2cff ) AM_RAM_WRITE( paletteram_xBBBBBGGGGGRRRRR_split2_w ) AM_BASE( &paletteram_2 )
AM_RANGE( 0x4000, 0x4000 ) AM_READ(ncs_random_r)
AM_RANGE( 0x4001, 0x4001 ) AM_READ(ncs_random_r)
AM_RANGE( 0x4002, 0x4002 ) AM_READ(ncs_random_r)
AM_RANGE( 0x4003, 0x4003 ) AM_READ(ncs_random_r)
AM_RANGE( 0x4004, 0x4004 ) AM_READ(ncs_random_r)
AM_RANGE( 0x5081, 0x5081 ) AM_READ(ncs_random_r)
AM_RANGE( 0x5082, 0x5082 ) AM_READ(ncs_random_r)
AM_RANGE( 0x5082, 0x5091 ) AM_READ(ncs_random_r)
AM_RANGE( 0x50a0, 0x50a0 ) AM_READ(ncs_random_r)
AM_RANGE( 0x50c0, 0x50c0 ) AM_READ(ncs_random_r)
AM_RANGE( 0x6000, 0x6fff ) AM_RAM AM_BASE(&ncs_video2) // 'reels' layer -- we're missing the gfx
AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE(&ncs_video)
AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("data", 0)
ADDRESS_MAP_END
static INTERRUPT_GEN( igs_ncs_interrupt )
{
// wrong!!
if (cpu_getiloops(device)&1)
cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
else
cpu_set_input_line(device, INPUT_LINE_IRQ0, HOLD_LINE);
}
static MACHINE_DRIVER_START( igs_ncs )
/* basic machine hardware */
MDRV_CPU_ADD("main", Z180, XTAL_12MHz / 2) /* CPU is..?? 6 MHz? */
MDRV_CPU_PROGRAM_MAP(igs_ncs_map,0)
MDRV_CPU_IO_MAP(igs_ncs_portmap,0)
MDRV_CPU_VBLANK_INT_HACK(igs_ncs_interrupt,2)
// MDRV_CPU_VBLANK_INT("main",igs_ncs_interrupt)
/* video hardware */
MDRV_SCREEN_ADD("main", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE(512, 256)
MDRV_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MDRV_GFXDECODE(igs_ncs)
MDRV_PALETTE_LENGTH(0x400)
MDRV_VIDEO_START(igs_ncs)
MDRV_VIDEO_UPDATE(igs_ncs)
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_DRIVER_END
ROM_START( igs_ncs )
ROM_REGION( 0x10000, "main", 0 )
ROM_LOAD( "ncs_v100n.u20", 0x00000, 0x10000, CRC(2bb91de5) SHA1(b0b7b3b9cee1ce4da10cf78ef1c8079f3d9cafbf) )
ROM_REGION( 0x10000, "data", 0 )
ROM_LOAD( "ncs_v100n.u21", 0x00000, 0x10000, CRC(678e412c) SHA1(dba031d3576d098d314d6589dd1aeda44d17c650) )
ROM_REGION( 0xc0000, "gfx1", ROMREGION_DISPOSE )
ROM_LOAD( "ncs_v100n.u50", 0x00000, 0x40000, CRC(ff2bb3dc) SHA1(364c948504003b4230fbdac74227842c802d4c12) )
ROM_LOAD( "ncs_v100n.u51", 0x40000, 0x40000, CRC(f8530313) SHA1(b21d6de7d5d4b902008ceea7e1227545e0d1701b) )
ROM_LOAD( "ncs_v100n.u52", 0x80000, 0x40000, CRC(2fa5b6df) SHA1(5bfc651297440f73692079f1806b1e40b457b7b8) )
ROM_REGION( 0x30000, "gfx2", ROMREGION_ERASEFF | ROMREGION_DISPOSE )
// looks like these are needed for pre-game screens, sockets were empty
ROM_LOAD( "ncs_v100n.u55", 0x00000, 0x10000, NO_DUMP )
ROM_LOAD( "ncs_v100n.u56", 0x10000, 0x10000, NO_DUMP )
ROM_LOAD( "ncs_v100n.u57", 0x20000, 0x10000, NO_DUMP )
ROM_END
DRIVER_INIT( igs_ncs )
{
UINT8 *src = (UINT8 *) (memory_region(machine, "main"));
int i;
for(i = 0; i < 0x10000; i++)
{
/* bit 0 xor layer */
if(i & 0x200)
{
if(i & 0x80)
{
if(~i & 0x02)
{
src[i] ^= 0x01;
}
}
else
{
src[i] ^= 0x01;
}
}
else
{
src[i] ^= 0x01;
}
/* bit 1 xor layer */
if(i & 0x800)
{
if(i & 0x100)
{
if(i & 0x40)
{
src[i] ^= 0x02;
}
}
}
/* bit 5 xor layer */
if(i & 0x100)
{
if(i & 0x40)
{
src[i] ^= 0x20;
}
}
else
{
src[i] ^= 0x20;
}
}
}
GAME( 2000, igs_ncs, 0, igs_ncs, igs_ncs, igs_ncs, ROT0, "IGS", "New Champion Skill (v100n)", GAME_NOT_WORKING )

File diff suppressed because it is too large Load Diff

426
src/mame/drivers/jackie.c Normal file
View File

@ -0,0 +1,426 @@
#include "driver.h"
#include "deprecat.h"
#include "cpu/z80/z80.h"
#include "sound/2413intf.h"
static UINT8 *fg_tile_ram, *fg_color_ram;
static tilemap *fg_tilemap;
static TILE_GET_INFO( get_fg_tile_info )
{
int code = fg_tile_ram[tile_index] | (fg_color_ram[tile_index] << 8);
int tile = code & 0x1fff;
SET_TILE_INFO(1, code, tile != 0x1fff ? ((code >> 12) & 0xe) + 1 : 0, 0);
}
static WRITE8_HANDLER( fg_tile_w )
{
fg_tile_ram[offset] = data;
tilemap_mark_tile_dirty(fg_tilemap,offset);
}
static WRITE8_HANDLER( fg_color_w )
{
fg_color_ram[offset] = data;
tilemap_mark_tile_dirty(fg_tilemap,offset);
}
static VIDEO_START(jackie)
{
fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 64, 32);
tilemap_set_transparent_pen(fg_tilemap, 0);
}
static VIDEO_UPDATE(jackie)
{
bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine));
tilemap_draw(bitmap, cliprect, fg_tilemap, 0, 0);
return 0;
}
static int irq_enable, nmi_enable, bg_enable, hopper;
static MACHINE_RESET( jackie )
{
irq_enable = 1;
nmi_enable = 0;
hopper = 0;
bg_enable = 1;
}
static INTERRUPT_GEN( jackie_interrupt )
{
if (cpu_getiloops(device) % 2) {
if (irq_enable)
cpu_set_input_line(device, 0, HOLD_LINE);
} else {
if (nmi_enable)
cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
}
}
static UINT8 out[3];
static void show_out(void)
{
#ifdef MAME_DEBUG
popmessage("%02x %02x %02x", out[0], out[1], out[2]);
#endif
}
static WRITE8_HANDLER( jackie_nmi_and_coins_w )
{
coin_counter_w(0, data & 0x01); // coin_a
coin_counter_w(1, data & 0x04); // coin_c
coin_counter_w(2, data & 0x08); // key in
coin_counter_w(3, data & 0x10); // coin out mech
set_led_status(6, data & 0x20); // led for coin out / hopper active
nmi_enable = data & 0x80; // nmi enable?
out[0] = data;
show_out();
}
static WRITE8_HANDLER( jackie_lamps_w )
{
/*
- Lbits -
7654 3210
=========
---- --x- Hold1 lamp.
--x- ---- Hold2 lamp.
---x ---- Hold3 lamp.
---- x--- Hold4 lamp.
---- -x-- Hold5 lamp.
---- ---x Start lamp.
*/
output_set_lamp_value(1, (data >> 1) & 1); /* Lamp 1 - HOLD 1 */
output_set_lamp_value(2, (data >> 5) & 1); /* Lamp 2 - HOLD 2 */
output_set_lamp_value(3, (data >> 4) & 1); /* Lamp 3 - HOLD 3 */
output_set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
output_set_lamp_value(5, (data >> 2) & 1); /* Lamp 5 - HOLD 5 */
output_set_lamp_value(6, (data & 1)); /* Lamp 6 - START */
hopper = (~data)& 0x80;
out[1] = data;
show_out();
}
static READ8_HANDLER( igs_irqack_r )
{
irq_enable = 1;
return 0;
}
static WRITE8_HANDLER( igs_irqack_w )
{
// cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
out[2] = data;
show_out();
}
UINT8 *main_ram;
static WRITE8_HANDLER( ram_w )
{
main_ram[offset] = data;
// logerror("PC %06X: %04x = %02x\n",cpu_get_pc(space->cpu),offset+0xf000,data);
}
static ADDRESS_MAP_START( jackie_prg_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xefff) AM_ROM
AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE( ram_w ) AM_BASE( &main_ram )
ADDRESS_MAP_END
static ADDRESS_MAP_START( jackie_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE( paletteram_xBBBBBGGGGGRRRRR_split1_w ) AM_BASE( &paletteram )
AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE( paletteram_xBBBBBGGGGGRRRRR_split2_w ) AM_BASE( &paletteram_2 )
AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */
AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */
AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */
AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */
AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */
AM_RANGE(0x5080, 0x5080) AM_WRITE(jackie_nmi_and_coins_w)
AM_RANGE(0x5081, 0x5081) AM_READ_PORT("SERVICE")
AM_RANGE(0x5082, 0x5082) AM_READ_PORT("COINS")
AM_RANGE(0x5090, 0x5090) AM_READ_PORT("BUTTONS1")
AM_RANGE(0x5091, 0x5091) AM_WRITE( jackie_lamps_w )
AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2")
AM_RANGE(0x50b0, 0x50b0) AM_WRITE(ym2413_register_port_0_w)
AM_RANGE(0x50b1, 0x50b1) AM_WRITE(ym2413_data_port_0_w)
AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w)
AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE( fg_tile_w ) AM_BASE( &fg_tile_ram )
AM_RANGE(0x7800, 0x7fff) AM_RAM_WRITE( fg_color_w ) AM_BASE( &fg_color_ram )
AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("gfx3", 0)
ADDRESS_MAP_END
static CUSTOM_INPUT( hopper_r )
{
if (hopper) return !(video_screen_get_frame_number(field->port->machine->primary_screen)%10);
return input_code_pressed(KEYCODE_H);
}
static INPUT_PORTS_START( jackie )
PORT_START("DSW1")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SWA:8")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPUNKNOWN( 0x02, 0x02 )
PORT_DIPUNKNOWN( 0x04, 0x04 )
PORT_DIPUNKNOWN( 0x08, 0x08 )
PORT_DIPUNKNOWN( 0x10, 0x10 )
PORT_DIPUNKNOWN( 0x20, 0x20 )
PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START("DSW2")
PORT_DIPNAME( 0x0f, 0x07, "Main Game Chance" ) PORT_DIPLOCATION("SWB:8,7,6,5")
PORT_DIPSETTING( 0x0f, "45%" )
PORT_DIPSETTING( 0x0e, "50%" )
PORT_DIPSETTING( 0x0d, "55%" )
PORT_DIPSETTING( 0x0c, "60%" )
PORT_DIPSETTING( 0x0b, "65%" )
PORT_DIPSETTING( 0x0a, "70%" )
PORT_DIPSETTING( 0x09, "75%" )
PORT_DIPSETTING( 0x08, "80%" )
PORT_DIPSETTING( 0x07, "83%" )
PORT_DIPSETTING( 0x06, "85%" )
PORT_DIPSETTING( 0x05, "88%" )
PORT_DIPSETTING( 0x04, "90%" )
PORT_DIPSETTING( 0x03, "92%" )
PORT_DIPSETTING( 0x02, "94%" )
PORT_DIPSETTING( 0x01, "96%" )
PORT_DIPSETTING( 0x00, "98%" )
PORT_DIPUNKNOWN( 0x10, 0x10 )
PORT_DIPNAME( 0x20, 0x00, "Double Up Rate" ) PORT_DIPLOCATION("SWB:3")
PORT_DIPSETTING( 0x20, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Easy ) )
PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START("DSW3")
PORT_DIPUNKNOWN( 0x01, 0x01 )
PORT_DIPUNKNOWN( 0x02, 0x02 )
PORT_DIPUNKNOWN( 0x04, 0x04 )
PORT_DIPUNKNOWN( 0x08, 0x08 )
PORT_DIPUNKNOWN( 0x10, 0x10 )
PORT_DIPUNKNOWN( 0x20, 0x20 )
PORT_DIPNAME( 0xC0, 0x00, "Max Bet" ) PORT_DIPLOCATION("SWC:2,1")
PORT_DIPSETTING( 0xC0, "1" )
PORT_DIPSETTING( 0x80, "8" )
PORT_DIPSETTING( 0x40, "16" )
PORT_DIPSETTING( 0x00, "32" )
PORT_START("DSW4")
PORT_DIPUNKNOWN( 0x01, 0x01 )
PORT_DIPUNKNOWN( 0x02, 0x02 )
PORT_DIPUNKNOWN( 0x04, 0x04 )
PORT_DIPUNKNOWN( 0x08, 0x08 )
PORT_DIPUNKNOWN( 0x10, 0x10 )
PORT_DIPUNKNOWN( 0x20, 0x20 )
PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START("DSW5")
PORT_DIPUNKNOWN( 0x01, 0x01 )
PORT_DIPUNKNOWN( 0x02, 0x02 )
PORT_DIPUNKNOWN( 0x04, 0x04 )
PORT_DIPUNKNOWN( 0x08, 0x08 )
PORT_DIPUNKNOWN( 0x10, 0x10 )
PORT_DIPUNKNOWN( 0x20, 0x20 )
PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START("SERVICE")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_0) PORT_NAME("Attendent")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM( hopper_r, (void *)0 ) PORT_NAME("HPSW") // hopper sensor
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_4) PORT_NAME("Payout")
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW ) // test (press during boot)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F1) PORT_NAME("Statistics")
PORT_START("COINS")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("Key In")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("Clear") // pays out
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_T) PORT_NAME("Togglemode") // Used
PORT_BIT( 0xC0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("BUTTONS1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_A) PORT_NAME("Stop 1")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(KEYCODE_S) PORT_NAME("Stop 2")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CODE(KEYCODE_D) PORT_NAME("Stop 3")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CODE(KEYCODE_F) PORT_NAME("Stop")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("BUTTONS2") // OK
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CODE(KEYCODE_C) PORT_NAME("Small/Right Hammer")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CODE(KEYCODE_B) PORT_NAME("Bet")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_Z) PORT_NAME("Take/Left Hammer")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CODE(KEYCODE_V) PORT_NAME("W-Up")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(KEYCODE_X) PORT_NAME("Big/Center Hammer")
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
static const gfx_layout layout_8x8x6 =
{
8, 8,
RGN_FRAC(1, 3),
6,
{ RGN_FRAC(0,3)+8,RGN_FRAC(0,3)+0,
RGN_FRAC(1,3)+8,RGN_FRAC(1,3)+0,
RGN_FRAC(2,3)+8,RGN_FRAC(2,3)+0 },
{ STEP8(0,1) },
{ STEP8(0,2*8) },
8*8*2
};
static const gfx_layout layout_8x32x6 =
{
8, 32,
RGN_FRAC(1, 3),
6,
{ RGN_FRAC(0,3)+8,RGN_FRAC(0,3)+0,
RGN_FRAC(1,3)+8,RGN_FRAC(1,3)+0,
RGN_FRAC(2,3)+8,RGN_FRAC(2,3)+0 },
{ STEP8(0,1) },
{ STEP32(0,2*8) },
8*32*2
};
static GFXDECODE_START( jackie )
GFXDECODE_ENTRY( "gfx2", 0, layout_8x32x6, 0, 16 )
GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x6, 0, 16 )
GFXDECODE_END
static MACHINE_DRIVER_START( jackie )
/* basic machine hardware */
MDRV_CPU_ADD("main", Z80, 12000000/2/2)
MDRV_CPU_PROGRAM_MAP(jackie_prg_map,0)
MDRV_CPU_IO_MAP(jackie_io_map,0)
MDRV_CPU_VBLANK_INT_HACK(jackie_interrupt,8)
MDRV_MACHINE_RESET(jackie)
/* video hardware */
MDRV_SCREEN_ADD("main", RASTER)
MDRV_SCREEN_REFRESH_RATE(57)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE(64*8, 32*8)
MDRV_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0, 32*8-1)
MDRV_GFXDECODE(jackie)
MDRV_PALETTE_LENGTH(2048)
MDRV_VIDEO_START(jackie)
MDRV_VIDEO_UPDATE(jackie)
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("ym", YM2413, 3579545)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_DRIVER_END
/*
Anno 199x
Produttore IGS
N.revisione
CPU
1x Z0840006PSC (main)
2x D8255AC
1x unknown AMT001
1x unknown IGS002
1x UM3567 (sound)
1x oscillator 12.000MHz
1x oscillator 3.579645
ROMs
2x D27128A (1,3)
1x MBM27128 (2)
3x 27C010 (4,5,6)
1x D27512 (7sv)
1x MBM27C512 (v110)
1x unknown (DIP20 mil300)(jack3)
3x PEEL18CV8PC (read protected)
1x TIBPAL16L8 (read protected)
Note
1x 36x2 edge connector
1x 10x2 edge connector (payout system)
1x trimmer (volume)
1x pushbutton
1x battery
5x 8x2 switches dip
*/
ROM_START( jackie )
ROM_REGION( 0x10000, "main", 0 )
ROM_LOAD( "jackiev110.u23", 0x0000, 0x10000, CRC(1b78a619) SHA1(a6eb6b6e544efa55225f2e947483614afb6ece3b) )
ROM_REGION( 0x60000, "gfx1", ROMREGION_DISPOSE )
ROM_LOAD( "6.u6", 0x00000, 0x20000, CRC(d2ed60a9) SHA1(40e2280384aa5c9e72e87a3b9e673172ff695676) )
ROM_LOAD( "5.u5", 0x20000, 0x20000, CRC(dc01fe7c) SHA1(683834ce2f13a923c0467209b93fef693d9c3e38) )
ROM_LOAD( "4.u4", 0x40000, 0x20000, CRC(38a42dcd) SHA1(8cc08ff4143281d9022210d6577146d725df9044) )
ROM_REGION( 0x30000, "gfx2", ROMREGION_DISPOSE )
ROM_LOAD( "3.u3", 0x00000, 0x4000, CRC(c69e962b) SHA1(492427ad1ac959cdf22d23439e0eb5932b60ec88) )
ROM_LOAD( "2.u2", 0x10000, 0x4000, CRC(8900ffba) SHA1(065cf1810ec9738718e4c94613f726e85ba4314d) )
ROM_LOAD( "1.u1", 0x20000, 0x4000, CRC(071d20f0) SHA1(77c87486803dccaa63732ff959c223b1313820e3) )
ROM_REGION( 0x10000, "gfx3", 0 )
ROM_LOAD( "jackie7sv.u22", 0x0000, 0x10000, CRC(8b4eb6da) SHA1(480784917dfaf9a0343c1d56eb590b32bf5e94fd) )
ROM_REGION( 0x10000, "misc", 0 )
ROM_LOAD( "16l8.u31", 0x0000, 0x104, BAD_DUMP CRC(e9cd78fb) SHA1(557d3e7ef3b25c1338b24722cac91bca788c02b8) )
ROM_LOAD( "18cv8.u14", 0x0000, 0x155, BAD_DUMP CRC(996e8f59) SHA1(630d9b91f6e8eda781061e2a8ff6fb0fecaf034c) )
ROM_LOAD( "18cv8.u8", 0x0000, 0x155, BAD_DUMP CRC(996e8f59) SHA1(630d9b91f6e8eda781061e2a8ff6fb0fecaf034c) )
ROM_LOAD( "18cv8.u9", 0x0000, 0x155, BAD_DUMP CRC(996e8f59) SHA1(630d9b91f6e8eda781061e2a8ff6fb0fecaf034c) )
ROM_END
static DRIVER_INIT( jackie )
{
int A;
UINT8 *rom = memory_region(machine, "main");
for (A = 0;A < 0xf000;A++)
{
rom[A] = rom[A] ^ 0x21;
if (((A & 0x0080) == 0x0000) && ((A & 0x0008) == 0x0000)) rom[A] = rom[A] ^ 0x20;
if ((A & 0x0282) == 0x0282) rom[A] ^= 0x01;
if ((A & 0x0940) == 0x0940) rom[A] ^= 0x02;
}
memset( &rom[0xf000], 0, 0x1000);
}
GAME( 199?, jackie, 0, jackie, jackie, jackie, ROT0, "IGS", "Happy Jackie (v110U)", GAME_NOT_WORKING )

View File

@ -0,0 +1,105 @@
<?xml version="1.0"?>
<mamelayout version="2">
<element name="L1" defstate="1">
<rect state="1">
<color red="0.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.0" green="0.2" blue="0.0" />
</rect>
<text string="HOLD1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="L2" defstate="1">
<rect state="1">
<color red="0.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.0" green="0.2" blue="0.0" />
</rect>
<text string="HOLD2">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="L3" defstate="1">
<rect state="1">
<color red="0.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.0" green="0.2" blue="0.0" />
</rect>
<text string="HOLD3">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="L4" defstate="1">
<rect state="1">
<color red="0.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.0" green="0.2" blue="0.0" />
</rect>
<text string="HOLD4">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="L5" defstate="1">
<rect state="1">
<color red="0.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.0" green="0.2" blue="0.0" />
</rect>
<text string="HOLD5">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="L6" defstate="1">
<rect state="1">
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.3" green="0.0" blue="0.0" />
</rect>
<text string="START">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<view name="Button Lamps">
<screen index="0">
<bounds left="0" top="0" right="4" bottom="3" />
</screen>
<bezel name="lamp1" element="L1">
<bounds x="0.5" y="3.13" width="0.40" height="0.24" />
</bezel>
<bezel name="lamp2" element="L2">
<bounds x="1.0" y="3.13" width="0.40" height="0.24" />
</bezel>
<bezel name="lamp3" element="L3">
<bounds x="1.5" y="3.13" width="0.40" height="0.24" />
</bezel>
<bezel name="lamp4" element="L4">
<bounds x="2.0" y="3.13" width="0.40" height="0.24" />
</bezel>
<bezel name="lamp5" element="L5">
<bounds x="2.5" y="3.13" width="0.40" height="0.24" />
</bezel>
<bezel name="lamp6" element="L6">
<bounds x="3.0" y="3.13" width="0.40" height="0.24" />
</bezel>
</view>
</mamelayout>

View File

@ -750,16 +750,16 @@ $(MAMEOBJ)/greyhnd.a: \
$(DRIVERS)/getrivia.o \ $(DRIVERS)/getrivia.o \
$(MAMEOBJ)/igs.a: \ $(MAMEOBJ)/igs.a: \
$(DRIVERS)/csk.o $(VIDEO)/csk.o \
$(DRIVERS)/ddz.o \ $(DRIVERS)/ddz.o \
$(DRIVERS)/dunhuang.o \ $(DRIVERS)/dunhuang.o \
$(DRIVERS)/goldstar.o $(VIDEO)/goldstar.o \ $(DRIVERS)/goldstar.o $(VIDEO)/goldstar.o \
$(DRIVERS)/jackie.o \
$(DRIVERS)/igspoker.o \
$(DRIVERS)/igs009.o \ $(DRIVERS)/igs009.o \
$(DRIVERS)/igs_blit.o \ $(DRIVERS)/igs_blit.o \
$(DRIVERS)/igs017.o \ $(DRIVERS)/igs017.o \
$(DRIVERS)/igs_m027.o \ $(DRIVERS)/igs_m027.o \
$(DRIVERS)/igs_m68.o \ $(DRIVERS)/igs_m68.o \
$(DRIVERS)/igs_ncs.o \
$(DRIVERS)/iqblock.o $(VIDEO)/iqblock.o \ $(DRIVERS)/iqblock.o $(VIDEO)/iqblock.o \
$(DRIVERS)/lordgun.o $(VIDEO)/lordgun.o \ $(DRIVERS)/lordgun.o $(VIDEO)/lordgun.o \
$(DRIVERS)/pgm.o $(VIDEO)/pgm.o \ $(DRIVERS)/pgm.o $(VIDEO)/pgm.o \
@ -1740,6 +1740,8 @@ $(DRIVERS)/gatron.o: $(LAYOUT)/poker41.lh \
$(DRIVERS)/goldnpkr.o: $(LAYOUT)/goldnpkr.lh \ $(DRIVERS)/goldnpkr.o: $(LAYOUT)/goldnpkr.lh \
$(LAYOUT)/pmpoker.lh \ $(LAYOUT)/pmpoker.lh \
$(DRIVERS)/igspoker.o: $(LAYOUT)/igspoker.lh
$(DRIVERS)/lazercmd.o: $(LAYOUT)/lazercmd.lh $(DRIVERS)/lazercmd.o: $(LAYOUT)/lazercmd.lh
$(DRIVERS)/lucky74.o: $(LAYOUT)/lucky74.lh $(DRIVERS)/lucky74.o: $(LAYOUT)/lucky74.lh

View File

@ -7457,6 +7457,8 @@ Other Sun games
DRIVER( cpokert ) /* (c) 1993? Tuning */ DRIVER( cpokert ) /* (c) 1993? Tuning */
DRIVER( csk227it ) /* (c) 198? IGS */ DRIVER( csk227it ) /* (c) 198? IGS */
DRIVER( csk234it ) /* (c) 198? IGS */ DRIVER( csk234it ) /* (c) 198? IGS */
DRIVER( igs_ncs ) /* (c) 198? IGS */
DRIVER( igs_ncs2 ) /* (c) 2000 IGS */
DRIVER( jackie ) /* (c) 199? IGS */ DRIVER( jackie ) /* (c) 199? IGS */
DRIVER( stellecu ) /* (c) 1998 */ DRIVER( stellecu ) /* (c) 1998 */
DRIVER( iqblock ) /* (c) 1993 */ DRIVER( iqblock ) /* (c) 1993 */
@ -7495,8 +7497,6 @@ Other Sun games
DRIVER( slqz2 ) /* (c) 1998 */ DRIVER( slqz2 ) /* (c) 1998 */
DRIVER( sdmg2 ) /* (c) 1997 */ DRIVER( sdmg2 ) /* (c) 1997 */
DRIVER( igs_ncs ) /* (c) 2000 */
DRIVER( bigd2 ) /* (c) 2000 */ DRIVER( bigd2 ) /* (c) 2000 */
DRIVER( sdwx ) /* (c) 2002 */ DRIVER( sdwx ) /* (c) 2002 */
DRIVER( sddz ) /* (c) 200? */ DRIVER( sddz ) /* (c) 200? */

View File

@ -1,212 +0,0 @@
/***************************************************************************
video.c
Functions to emulate the video hardware of the machine.
***************************************************************************/
#include "driver.h"
#include "deprecat.h"
#define CPK_VIDEO_SIZE 0x800
UINT8 * cpk_colorram;
UINT8 * cpk_videoram;
UINT8 * cpk_expram;
static UINT8 * cpk_palette;
static UINT8 * cpk_palette2;
static int hopperOK = 0;
static int intstate1 = 0; /* unknown */
static int intstate2 = 0; /* unknown */
static int oldstate = 0;
static int machinestate = 0;
static int abilityflag = 0;
static int sleepcountdown = 0;
/* Palette handling */
WRITE8_HANDLER( cpk_palette_w )
{
cpk_palette[offset] = data;
}
WRITE8_HANDLER( cpk_palette2_w )
{
int newword;
cpk_palette2[offset] = data;
newword = cpk_palette[offset] + 256 * cpk_palette2[offset];
palette_set_color_rgb(space->machine,offset,pal5bit(newword >> 0),pal5bit(newword >> 5),pal5bit(newword >> 10));
}
/* Video handling */
READ8_HANDLER( cpk_expansion_r )
{
UINT8 * RAM = memory_region(space->machine, "gfx3");
return RAM[offset];
}
/* Machine init/deinit */
VIDEO_START( cska )
{
int i;
cpk_palette = auto_malloc(0x800 * sizeof(UINT8));
cpk_palette2 = auto_malloc(0x800 * sizeof(UINT8));
/* leave everything at the default, but map all foreground 0 pens as transparent */
for (i = 0;i < 16;i++)
{
// palette_used_colors[64 * i] = PALETTE_COLOR_TRANSPARENT;
}
}
static void init_csk227_internals(void)
{
hopperOK = 0xf9d0;
machinestate = 0xf6b0;
intstate1 = 0xf08c;
intstate2 = 0xf08d;
sleepcountdown = 0xf994;
}
static void init_csk234_internals(void)
{
hopperOK = 0xf9ca;
machinestate = 0xf6ad;
intstate1 = 0xf088;
intstate2 = 0xf089;
sleepcountdown = 0xf98e;
}
MACHINE_RESET (cpk)
{
static int initonce = 0;
memset(cpk_videoram, 0, CPK_VIDEO_SIZE);
memset(cpk_colorram, 0, CPK_VIDEO_SIZE);
memset(cpk_expram, 0, CPK_VIDEO_SIZE);
memset(cpk_palette, 0, 0x800);
memset(cpk_palette2, 0, 0x800);
if (!initonce)
{
initonce = 1;
if (strcmp(machine->gamedrv->name,"csk227it") == 0)
init_csk227_internals();
else if (strcmp(machine->gamedrv->name,"csk234it") == 0)
init_csk234_internals();
}
}
INTERRUPT_GEN( cpoker_interrupt )
{
if (cpu_getiloops(device) % 2)
cpu_set_input_line(device, 0, HOLD_LINE);
else
cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
}
INTERRUPT_GEN( cska_interrupt )
{
UINT8 * RAM = memory_region(device->machine, "main");
RAM[ hopperOK ] = 1; /* simulate hopper working! */
if (oldstate == 5)
{
if (RAM[sleepcountdown] == 0 && RAM[sleepcountdown+1] == 0)
oldstate = RAM[ machinestate ];
}
else oldstate = RAM[ machinestate ];
abilityflag = (oldstate == 5 || (RAM[ intstate1 ] == 1 && RAM[ intstate2 ] == 5)) ? 1 : 0;
if (cpu_getiloops(device) % 2)
cpu_set_input_line(device, 0, HOLD_LINE);
else
cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
}
/* Screen refresh section */
VIDEO_UPDATE( cska )
{
int offs;
// palette_init_used_colors();
for (offs = CPK_VIDEO_SIZE-1; offs >= 0; offs--)
{
// int color = ((cpk_colorram[offs] & 0xe0) >> 4) + 1;
// memset(&palette_used_colors[64 * color + 1],PALETTE_COLOR_USED,63);
}
#if 0
if (keyboard_pressed(KEYCODE_9))
{
FILE * f = fopen("dump.bin", "wb");
if (f)
{
fwrite(&cpk_videoram[0], 1, CPK_VIDEO_SIZE, f);
fwrite(&cpk_colorram[0], 1, CPK_VIDEO_SIZE, f);
fclose(f);
}
}
#endif
if (abilityflag)
{
for (offs = (CPK_VIDEO_SIZE)-1; offs >= 0; offs--)
{
int sx,sy;
sx = offs % 64;
sy = offs / 64;
drawgfx(bitmap,screen->machine->gfx[1+(offs % 4)],
cpk_expram[offs],
0,
0,0,
8*sx,32*sy,
cliprect,TRANSPARENCY_NONE,0);
}
}
for (offs = CPK_VIDEO_SIZE-1; offs >= 0; offs--)
{
int tile = cpk_videoram[offs] + ((cpk_colorram[offs] & 0x1f) << 8);
int color = (tile != 0x1fff) ? (((cpk_colorram[offs] & 0xe0) >> 4) + 1) : 0;
int sx,sy;
sx = offs % 64;
sy = offs / 64;
drawgfx(bitmap,screen->machine->gfx[0],
tile,
color,
0,0,
8*sx,8*sy,
cliprect,
(abilityflag) ? TRANSPARENCY_PEN : TRANSPARENCY_NONE, 0);
}
return 0;
}