mirror of
https://github.com/holub/mame
synced 2025-05-22 13:48:55 +03:00
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:
parent
e03f020244
commit
517c33a847
6
.gitattributes
vendored
6
.gitattributes
vendored
@ -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
|
||||||
|
@ -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
426
src/mame/drivers/jackie.c
Normal 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 )
|
105
src/mame/layout/igspoker.lay
Normal file
105
src/mame/layout/igspoker.lay
Normal 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>
|
@ -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
|
||||||
|
@ -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? */
|
||||||
|
@ -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;
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user