mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
New games added or promoted from NOT_WORKING status
--------------------------------------------------- Tokimeki Mahjong Paradise - Dear My Love [David Haywood, Angelo Salese] Tokimeki Mahjong Paradise - Doki Doki Hen [David Haywood, Angelo Salese] changes: - split tmmjprd / tmpdoki from rabbit.c as it uses the graphic chip in a very different way, and having them together was making it more difficult to make progress on [David Haywood] - changed them to use custom rendering code instead of tilemaps, as they can address tile data at a sub-tile level, this fixes the girls in the intro [David Haywood] - added inputs [Angelo Salese] - added some notes about a hang, and possible reason [David Haywood] - marked the graphic roms of tmpdoki as BAD as it appears to be using tiles which are not present in the tmmjprd roms for the title screen [David Haywood]
This commit is contained in:
parent
ecc75048d1
commit
ce8e7c07ab
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -2147,6 +2147,7 @@ src/mame/drivers/tigeroad.c svneol=native#text/plain
|
||||
src/mame/drivers/timelimt.c svneol=native#text/plain
|
||||
src/mame/drivers/timeplt.c svneol=native#text/plain
|
||||
src/mame/drivers/tmaster.c svneol=native#text/plain
|
||||
src/mame/drivers/tmmjprd.c svneol=native#text/plain
|
||||
src/mame/drivers/tmnt.c svneol=native#text/plain
|
||||
src/mame/drivers/tnzs.c svneol=native#text/plain
|
||||
src/mame/drivers/toaplan1.c svneol=native#text/plain
|
||||
|
@ -26,12 +26,8 @@ To Do:
|
||||
- raster effects (rabbit only?, see left side of one of the levels in rabbit)
|
||||
- clean up zoom code and make zoom effect more accurate
|
||||
- sound (adpcm of some kind)
|
||||
|
||||
- tilemap.c can't handle tiles with different transpens so we have to invert
|
||||
the tilegfx, this means we also have to invert the palette write addresses,
|
||||
low bits of the palette number for 4bpp tiles, the blitter data as it
|
||||
is read from the gfx roms, and the data read by the rom test.
|
||||
|
||||
- status bar in rabbit is the wrong colour, timing of blitter / interrupts?
|
||||
- eeprom hookup seems flakey
|
||||
|
||||
*/
|
||||
|
||||
@ -139,13 +135,15 @@ INLINE void get_rabbit_tilemap_info(running_machine *machine, tile_data *tileinf
|
||||
tileno >>=(1+tilesize*2);
|
||||
colour&=0x0f;
|
||||
colour+=0x20;
|
||||
tileinfo->group = 1;
|
||||
SET_TILE_INFO(6+tilesize,tileno,colour,TILE_FLIPXY(flipxy));
|
||||
}
|
||||
else
|
||||
{
|
||||
tileno >>=(0+tilesize*2);
|
||||
//colour&=0x3f; // fixes status bar.. but breaks other stuff
|
||||
colour+=0x200;
|
||||
colour ^=0xf; // ^0xf because we've inverted palette writes (see notes in driver init)
|
||||
tileinfo->group = 0;
|
||||
SET_TILE_INFO(4+tilesize,tileno,colour,TILE_FLIPXY(flipxy));
|
||||
}
|
||||
}
|
||||
@ -240,11 +238,10 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
|
||||
|
||||
tileno = (source[1]&0x0001ffff);
|
||||
colr = (source[1]&0x0ff00000)>>20;
|
||||
colr ^= 0xf;
|
||||
|
||||
if(xpos&0x800)xpos-=0x1000;
|
||||
|
||||
drawgfx_transpen(rabbit_sprite_bitmap,&rabbit_sprite_clip,gfx,tileno,colr,!xflip/*wrongdecode?*/,yflip,xpos+0x20-8/*-(rabbit_spriteregs[0]&0x00000fff)*/,ypos-24/*-((rabbit_spriteregs[1]&0x0fff0000)>>16)*/,0);
|
||||
drawgfx_transpen(rabbit_sprite_bitmap,&rabbit_sprite_clip,gfx,tileno,colr,!xflip/*wrongdecode?*/,yflip,xpos+0x20-8/*-(rabbit_spriteregs[0]&0x00000fff)*/,ypos-24/*-((rabbit_spriteregs[1]&0x0fff0000)>>16)*/,15);
|
||||
// drawgfx_transpen(bitmap,cliprect,gfx,tileno,colr,!xflip/*wrongdecode?*/,yflip,xpos+0xa0-8/*-(rabbit_spriteregs[0]&0x00000fff)*/,ypos-24+0x80/*-((rabbit_spriteregs[1]&0x0fff0000)>>16)*/,0);
|
||||
|
||||
|
||||
@ -348,10 +345,17 @@ static VIDEO_START(rabbit)
|
||||
rabbit_tilemap[1] = tilemap_create(machine, get_rabbit_tilemap1_tile_info,tilemap_scan_rows,16, 16, 128,32);
|
||||
rabbit_tilemap[2] = tilemap_create(machine, get_rabbit_tilemap2_tile_info,tilemap_scan_rows,16, 16, 128,32);
|
||||
rabbit_tilemap[3] = tilemap_create(machine, get_rabbit_tilemap3_tile_info,tilemap_scan_rows, 8, 8, 128,32);
|
||||
tilemap_set_transparent_pen(rabbit_tilemap[0],0x0);
|
||||
tilemap_set_transparent_pen(rabbit_tilemap[1],0x0);
|
||||
tilemap_set_transparent_pen(rabbit_tilemap[2],0x0);
|
||||
tilemap_set_transparent_pen(rabbit_tilemap[3],0x0);
|
||||
|
||||
/* the tilemaps mix 4bpp and 8bbp tiles, we split these into 2 groups, and set a different transpen for each group */
|
||||
tilemap_map_pen_to_layer(rabbit_tilemap[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(rabbit_tilemap[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(rabbit_tilemap[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(rabbit_tilemap[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(rabbit_tilemap[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(rabbit_tilemap[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(rabbit_tilemap[3], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(rabbit_tilemap[3], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
rabbit_sprite_bitmap = auto_bitmap_alloc(machine,0x1000,0x1000,video_screen_get_format(machine->primary_screen));
|
||||
rabbit_sprite_clip.min_x = 0;
|
||||
rabbit_sprite_clip.max_x = 0x1000-1;
|
||||
@ -451,7 +455,7 @@ static WRITE32_HANDLER( rabbit_paletteram_dword_w )
|
||||
r = ((paletteram32[offset] & 0x0000ff00) >>8);
|
||||
g = ((paletteram32[offset] & 0x00ff0000) >>16);
|
||||
|
||||
palette_set_color(space->machine,offset^0xff,MAKE_RGB(r,g,b));
|
||||
palette_set_color(space->machine,offset,MAKE_RGB(r,g,b));
|
||||
}
|
||||
|
||||
static READ32_HANDLER( rabbit_tilemap0_r )
|
||||
@ -483,12 +487,16 @@ static READ32_HANDLER( randomrabbits )
|
||||
static WRITE32_HANDLER ( rabbit_rombank_w )
|
||||
{
|
||||
UINT8 *dataroms = memory_region(space->machine, "gfx1");
|
||||
// int bank;
|
||||
// mame_printf_debug("rabbit rombank %08x\n",data&0x3ff);
|
||||
// bank = data & 0x3ff;
|
||||
#if 0
|
||||
int bank;
|
||||
printf("rabbit rombank %08x\n",data);
|
||||
bank = data & 0x3ff;
|
||||
|
||||
// memory_set_bankptr(space->machine, 1,&dataroms[0x40000*(bank&0x3ff)]);
|
||||
memory_set_bankptr(space->machine, 1,&dataroms[0x40000*(bank&0x3ff)]);
|
||||
#else
|
||||
memory_set_bankptr(space->machine, 1,&dataroms[0]);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -606,8 +614,8 @@ static void rabbit_do_blit(running_machine *machine)
|
||||
|
||||
while(1)
|
||||
{
|
||||
int blt_commnd = blt_data[blt_source+1]^0xff;
|
||||
int blt_amount = blt_data[blt_source+0]^0xff;
|
||||
int blt_commnd = blt_data[blt_source+1];
|
||||
int blt_amount = blt_data[blt_source+0];
|
||||
int blt_value;
|
||||
int loopcount;
|
||||
int writeoffs;
|
||||
@ -626,7 +634,7 @@ static void rabbit_do_blit(running_machine *machine)
|
||||
if(BLITLOG) mame_printf_debug("blit copy %02x bytes\n", blt_amount);
|
||||
for (loopcount=0;loopcount<blt_amount;loopcount++)
|
||||
{
|
||||
blt_value = ((blt_data[blt_source+1]<<8)|(blt_data[blt_source+0]))^0xffff;
|
||||
blt_value = ((blt_data[blt_source+1]<<8)|(blt_data[blt_source+0]));
|
||||
blt_source+=2;
|
||||
writeoffs=blt_oddflg+blt_column;
|
||||
rabbit_tilemap_ram[blt_tilemp][writeoffs]=(rabbit_tilemap_ram[blt_tilemp][writeoffs]&mask)|(blt_value<<shift);
|
||||
@ -640,7 +648,7 @@ static void rabbit_do_blit(running_machine *machine)
|
||||
|
||||
case 0x02: /* fill nn bytes */
|
||||
if(BLITLOG) mame_printf_debug("blit fill %02x bytes\n", blt_amount);
|
||||
blt_value = ((blt_data[blt_source+1]<<8)|(blt_data[blt_source+0]))^0xffff;
|
||||
blt_value = ((blt_data[blt_source+1]<<8)|(blt_data[blt_source+0]));
|
||||
blt_source+=2;
|
||||
|
||||
for (loopcount=0;loopcount<blt_amount;loopcount++)
|
||||
@ -723,7 +731,7 @@ static ADDRESS_MAP_START( rabbit_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
/* hmm */
|
||||
AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE( &rabbit_viewregs10 )
|
||||
|
||||
AM_RANGE(0x440000, 0x47ffff) AM_ROMBANK(1) // roms read from here during testing
|
||||
AM_RANGE(0x440000, 0x47ffff) AM_ROMBANK(1) // data (gfx / sound) rom readback for ROM testing
|
||||
/* tilemaps */
|
||||
AM_RANGE(0x480000, 0x483fff) AM_READWRITE(rabbit_tilemap0_r,rabbit_tilemap0_w)
|
||||
AM_RANGE(0x484000, 0x487fff) AM_READWRITE(rabbit_tilemap1_r,rabbit_tilemap1_w)
|
||||
@ -734,53 +742,6 @@ static ADDRESS_MAP_START( rabbit_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0xff0000, 0xffffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/* tmmjprd has a different memory map */
|
||||
|
||||
static WRITE32_HANDLER( tmmjprd_paletteram_dword_w )
|
||||
{
|
||||
int r,g,b;
|
||||
COMBINE_DATA(&paletteram32[offset]);
|
||||
|
||||
b = ((paletteram32[offset] & 0x000000ff) >>0);
|
||||
r = ((paletteram32[offset] & 0x0000ff00) >>8);
|
||||
g = ((paletteram32[offset] & 0x00ff0000) >>16);
|
||||
|
||||
palette_set_color(space->machine,(offset^0xff)+0x2000,MAKE_RGB(r,g,b));
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( tmmjprd_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x000000, 0x1fffff) AM_ROM
|
||||
AM_RANGE(0x200010, 0x200013) AM_READ(randomrabbits) // gfx chip status?
|
||||
AM_RANGE(0x200980, 0x200983) AM_READ(randomrabbits) // sound chip status?
|
||||
AM_RANGE(0x200984, 0x200987) AM_READ(randomrabbits) // sound chip status?
|
||||
/* check these are used .. */
|
||||
// AM_RANGE(0x200010, 0x200013) AM_WRITEONLY AM_BASE( &rabbit_viewregs0 )
|
||||
AM_RANGE(0x200100, 0x200117) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[0] ) // tilemap regs1
|
||||
AM_RANGE(0x200120, 0x200137) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[1] ) // tilemap regs2
|
||||
AM_RANGE(0x200140, 0x200157) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[2] ) // tilemap regs3
|
||||
AM_RANGE(0x200160, 0x200177) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[3] ) // tilemap regs4
|
||||
AM_RANGE(0x200200, 0x20021b) AM_WRITEONLY AM_BASE( &rabbit_spriteregs ) // sprregs?
|
||||
// AM_RANGE(0x200300, 0x200303) AM_WRITE(rabbit_rombank_w) // used during rom testing, rombank/area select + something else?
|
||||
// AM_RANGE(0x200400, 0x200413) AM_WRITEONLY AM_BASE( &rabbit_viewregs6 ) // some global controls? (brightness etc.?)
|
||||
// AM_RANGE(0x200500, 0x200503) AM_WRITEONLY AM_BASE( &rabbit_viewregs7 )
|
||||
// AM_RANGE(0x200700, 0x20070f) AM_WRITE(rabbit_blitter_w) AM_BASE( &rabbit_blitterregs )
|
||||
// AM_RANGE(0x200800, 0x20080f) AM_WRITEONLY AM_BASE( &rabbit_viewregs9 ) // never changes?
|
||||
// AM_RANGE(0x200900, 0x20098f) AM_WRITE(rabbit_audio_w)
|
||||
/* hmm */
|
||||
// AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE( &rabbit_viewregs10 )
|
||||
/* tilemaps */
|
||||
AM_RANGE(0x280000, 0x283fff) AM_READWRITE(rabbit_tilemap0_r,rabbit_tilemap0_w)
|
||||
AM_RANGE(0x284000, 0x287fff) AM_READWRITE(rabbit_tilemap1_r,rabbit_tilemap1_w)
|
||||
AM_RANGE(0x288000, 0x28bfff) AM_READWRITE(rabbit_tilemap2_r,rabbit_tilemap2_w)
|
||||
AM_RANGE(0x28c000, 0x28ffff) AM_READWRITE(rabbit_tilemap3_r,rabbit_tilemap3_w)
|
||||
/* ?? is palette ram shared with sprites in this case or just a different map */
|
||||
AM_RANGE(0x290000, 0x29bfff) AM_RAM AM_BASE(&rabbit_spriteram)
|
||||
AM_RANGE(0x29c000, 0x29ffff) AM_RAM_WRITE(tmmjprd_paletteram_dword_w) AM_BASE(&paletteram32)
|
||||
|
||||
AM_RANGE(0x400000, 0x400003) AM_READ_PORT("INPUTS") AM_WRITE(rabbit_eeprom_write)
|
||||
AM_RANGE(0xf00000, 0xffffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( rabbit )
|
||||
PORT_START("INPUTS")
|
||||
@ -835,59 +796,6 @@ static INPUT_PORTS_START( rabbit )
|
||||
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( tmmjprd )
|
||||
PORT_START("INPUTS")
|
||||
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unlabeled in input test
|
||||
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
||||
PORT_SERVICE( 0x00000020, IP_ACTIVE_LOW )
|
||||
PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) // as per code at 778
|
||||
PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
|
||||
PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
|
||||
PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
|
||||
PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
|
||||
PORT_BIT( 0x00001000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x00002000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x00008000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
|
||||
|
||||
PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
|
||||
PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02000000, 0x02000000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02000000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04000000, 0x04000000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x04000000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08000000, 0x08000000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10000000, 0x10000000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40000000, 0x40000000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80000000, 0x80000000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static const gfx_layout rabbit_sprite_8x8x4_layout =
|
||||
{
|
||||
@ -980,6 +888,7 @@ static const gfx_layout rabbit_16x16x8_layout =
|
||||
};
|
||||
|
||||
|
||||
|
||||
static GFXDECODE_START( rabbit )
|
||||
/* this seems to be sprites */
|
||||
GFXDECODE_ENTRY( "gfx1", 0, rabbit_sprite_8x8x4_layout, 0x0, 0x1000 )
|
||||
@ -1024,21 +933,10 @@ static MACHINE_DRIVER_START( rabbit )
|
||||
MDRV_CPU_ADD("maincpu",M68EC020,24000000) /* 24 MHz */
|
||||
MDRV_CPU_PROGRAM_MAP(rabbit_map)
|
||||
MDRV_CPU_VBLANK_INT_HACK(rabbit_interrupts,262)
|
||||
/* (rabbit) */
|
||||
/* lev 1 : 0x64 : 0000 027c -
|
||||
lev 2 : 0x68 : 0000 3106 - unused?
|
||||
lev 3 : 0x6c : 0000 3106 - unused?
|
||||
lev 4 : 0x70 : 0000 0268 -
|
||||
lev 5 : 0x74 : 0000 0278 -
|
||||
lev 6 : 0x78 : 0000 0204 -
|
||||
lev 7 : 0x7c : 0000 3106 - unused?
|
||||
*/
|
||||
MDRV_NVRAM_HANDLER(93C46)
|
||||
|
||||
MDRV_GFXDECODE(rabbit)
|
||||
|
||||
|
||||
|
||||
MDRV_SCREEN_ADD("screen", RASTER)
|
||||
MDRV_SCREEN_REFRESH_RATE(60)
|
||||
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
@ -1049,6 +947,7 @@ static MACHINE_DRIVER_START( rabbit )
|
||||
// MDRV_SCREEN_VISIBLE_AREA(0*8, 20*16-1, 32*16, 48*16-1)
|
||||
|
||||
MDRV_PALETTE_LENGTH(0x4000)
|
||||
MDRV_PALETTE_INIT( all_black ) // the status bar palette doesn't get transfered (or our colour select is wrong).. more obvious when it's black than in 'MAME default' colours
|
||||
|
||||
MDRV_VIDEO_START(rabbit)
|
||||
MDRV_VIDEO_UPDATE(rabbit)
|
||||
@ -1056,103 +955,6 @@ MACHINE_DRIVER_END
|
||||
|
||||
|
||||
|
||||
static TILE_GET_INFO( get_tmmjprd_tilemap0_tile_info )
|
||||
{
|
||||
get_rabbit_tilemap_info(machine,tileinfo,tile_index,0,0);
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( get_tmmjprd_tilemap1_tile_info )
|
||||
{
|
||||
get_rabbit_tilemap_info(machine,tileinfo,tile_index,1,0);
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( get_tmmjprd_tilemap2_tile_info )
|
||||
{
|
||||
get_rabbit_tilemap_info(machine,tileinfo,tile_index,2,0);
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( get_tmmjprd_tilemap3_tile_info )
|
||||
{
|
||||
get_rabbit_tilemap_info(machine,tileinfo,tile_index,3,0);
|
||||
}
|
||||
|
||||
static VIDEO_START(tmmjprd)
|
||||
{
|
||||
/* NOTE tilemap sizes are different.. game can also select between 16x16 and 8x8.. it NEEDS this to work */
|
||||
|
||||
/* the tilemaps are bigger than the regions the cpu can see, need to allocate the ram here */
|
||||
/* or maybe not for this game/hw .... */
|
||||
rabbit_tilemap_ram[0] = auto_alloc_array_clear(machine, UINT32, 0x20000/4);
|
||||
rabbit_tilemap_ram[1] = auto_alloc_array_clear(machine, UINT32, 0x20000/4);
|
||||
rabbit_tilemap_ram[2] = auto_alloc_array_clear(machine, UINT32, 0x20000/4);
|
||||
rabbit_tilemap_ram[3] = auto_alloc_array_clear(machine, UINT32, 0x20000/4);
|
||||
|
||||
rabbit_tilemap[0] = tilemap_create(machine, get_tmmjprd_tilemap0_tile_info,tilemap_scan_rows, 8, 8, 64, 64);
|
||||
rabbit_tilemap[1] = tilemap_create(machine, get_tmmjprd_tilemap1_tile_info,tilemap_scan_rows,16, 16, 64, 64);
|
||||
rabbit_tilemap[2] = tilemap_create(machine, get_tmmjprd_tilemap2_tile_info,tilemap_scan_rows,16, 16, 64, 64);
|
||||
rabbit_tilemap[3] = tilemap_create(machine, get_tmmjprd_tilemap3_tile_info,tilemap_scan_rows,16, 16, 64, 64);
|
||||
tilemap_set_transparent_pen(rabbit_tilemap[0],0x0);
|
||||
tilemap_set_transparent_pen(rabbit_tilemap[1],0x0);
|
||||
tilemap_set_transparent_pen(rabbit_tilemap[2],0x0);
|
||||
tilemap_set_transparent_pen(rabbit_tilemap[3],0x0);
|
||||
rabbit_sprite_bitmap = auto_bitmap_alloc(machine,0x1000,0x1000,video_screen_get_format(machine->primary_screen));
|
||||
rabbit_sprite_clip.min_x = 0;
|
||||
rabbit_sprite_clip.max_x = 0x1000-1;
|
||||
rabbit_sprite_clip.min_y = 0;
|
||||
rabbit_sprite_clip.max_y = 0x1000-1;
|
||||
}
|
||||
|
||||
|
||||
static VIDEO_UPDATE( tmmjprd )
|
||||
{
|
||||
tilemap_set_scrolly(rabbit_tilemap[3], 0, rabbit_tilemap_regs[3][2] >> 20);
|
||||
tilemap_set_scrolly(rabbit_tilemap[2], 0, rabbit_tilemap_regs[2][2] >> 20);
|
||||
tilemap_set_scrolly(rabbit_tilemap[1], 0, rabbit_tilemap_regs[1][2] >> 20);
|
||||
tilemap_set_scrolly(rabbit_tilemap[0], 0, rabbit_tilemap_regs[0][2] >> 20);
|
||||
|
||||
// popmessage("%08x %08x", rabbit_viewregs0[0], rabbit_viewregs0[1]);
|
||||
// popmessage("%08x %08x %08x %08x %08x %08x", rabbit_tilemap_regs[0][0],rabbit_tilemap_regs[0][1],rabbit_tilemap_regs[0][2],rabbit_tilemap_regs[0][3],rabbit_tilemap_regs[0][4],rabbit_tilemap_regs[0][5]);
|
||||
// popmessage("%08x %08x %08x %08x %08x %08x", rabbit_tilemap_regs[1][0],rabbit_tilemap_regs[1][1],rabbit_tilemap_regs[1][2],rabbit_tilemap_regs[1][3],rabbit_tilemap_regs[1][4],rabbit_tilemap_regs[1][5]);
|
||||
// popmessage("%08x %08x %08x %08x %08x %08x", rabbit_tilemap_regs[2][0],rabbit_tilemap_regs[2][1],rabbit_tilemap_regs[2][2],rabbit_tilemap_regs[2][3],rabbit_tilemap_regs[2][4],rabbit_tilemap_regs[2][5]);
|
||||
// popmessage("%08x %08x %08x %08x %08x %08x", rabbit_tilemap_regs[3][0],rabbit_tilemap_regs[3][1],rabbit_tilemap_regs[3][2],rabbit_tilemap_regs[3][3],rabbit_tilemap_regs[3][4],rabbit_tilemap_regs[3][5]);
|
||||
// popmessage("%08x %08x %08x %08x %08x %08x %08x", rabbit_spriteregs[0],rabbit_spriteregs[1],rabbit_spriteregs[2],rabbit_spriteregs[3],rabbit_spriteregs[4],rabbit_spriteregs[5], rabbit_spriteregs[6]);
|
||||
// popmessage("%08x %08x %08x %08x %08x", rabbit_viewregs6[0],rabbit_viewregs6[1],rabbit_viewregs6[2],rabbit_viewregs6[3],rabbit_viewregs6[4]);
|
||||
// popmessage("%08x", rabbit_viewregs7[0]);
|
||||
// popmessage("%08x %08x %08x %08x", rabbit_blitterregs[0],rabbit_blitterregs[1],rabbit_blitterregs[2],rabbit_blitterregs[3]);
|
||||
// popmessage("%08x %08x %08x %08x", rabbit_viewregs9[0],rabbit_viewregs9[1],rabbit_viewregs9[2],rabbit_viewregs9[3]);
|
||||
|
||||
// popmessage("%08x %08x %08x %08x %08x", rabbit_viewregs10[0],rabbit_viewregs10[1],rabbit_viewregs10[2],rabbit_viewregs10[3],rabbit_viewregs10[4]);
|
||||
|
||||
bitmap_fill(bitmap,cliprect,get_black_pen(screen->machine));
|
||||
tilemap_draw(bitmap,cliprect,rabbit_tilemap[3],0,0);
|
||||
tilemap_draw(bitmap,cliprect,rabbit_tilemap[1],0,0); //same as 3?
|
||||
tilemap_draw(bitmap,cliprect,rabbit_tilemap[2],0,0);
|
||||
tilemap_draw(bitmap,cliprect,rabbit_tilemap[0],0,0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static INTERRUPT_GEN( tmmjprd_interrupt )
|
||||
{
|
||||
int intlevel = 0;
|
||||
|
||||
if (cpu_getiloops(device)==0)
|
||||
intlevel = 5;
|
||||
else
|
||||
intlevel = 3;
|
||||
|
||||
cpu_set_input_line(device, intlevel, HOLD_LINE);
|
||||
}
|
||||
|
||||
static MACHINE_DRIVER_START( tmmjprd )
|
||||
MDRV_IMPORT_FROM(rabbit)
|
||||
MDRV_CPU_MODIFY("maincpu")
|
||||
MDRV_CPU_PROGRAM_MAP(tmmjprd_map)
|
||||
MDRV_CPU_VBLANK_INT_HACK(tmmjprd_interrupt,2)
|
||||
|
||||
MDRV_VIDEO_START(tmmjprd)
|
||||
MDRV_VIDEO_UPDATE(tmmjprd)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static DRIVER_INIT(rabbit)
|
||||
@ -1163,13 +965,6 @@ static DRIVER_INIT(rabbit)
|
||||
/* 5 and 1 are also valid and might be raster related */
|
||||
}
|
||||
|
||||
static DRIVER_INIT(tmmjprd)
|
||||
{
|
||||
rabbit_banking = 0;
|
||||
rabbit_vblirqlevel = 5;
|
||||
rabbit_bltirqlevel = 3; // actually palette related?
|
||||
/* other irqs aren't valid */
|
||||
}
|
||||
|
||||
|
||||
ROM_START( rabbit )
|
||||
@ -1179,25 +974,28 @@ ROM_START( rabbit )
|
||||
ROM_LOAD32_BYTE( "jpr2.2", 0x000002, 0x080000, CRC(fa3fd91a) SHA1(ac0e658af30b37b752ede833b44ff5423b93bdb1) )
|
||||
ROM_LOAD32_BYTE( "jpr3.3", 0x000003, 0x080000, CRC(d22727ca) SHA1(8415cb2d3864b11fe5623ac65f2e28fd62c61bd1) )
|
||||
|
||||
// ROM_REGION( 0x9000000, "gfx1", ROMREGION_ERASE ) /* Other Roms probably accessable by cpu / blitter, order is no doubt wrong */
|
||||
/* this seems to be how it tests them? weird ... */
|
||||
// ROM_LOAD32_WORD( "jfv0.00", 0x0000000, 0x400000, CRC(b2a4d3d3) SHA1(0ab71d82a37ff94442b91712a28d3470619ba575) )
|
||||
// ROM_LOAD32_WORD( "jfv1.01", 0x0000002, 0x400000, CRC(83f3926e) SHA1(b1c479e675d35fc08c9a7648ff40348a24654e7e) )
|
||||
// ROM_LOAD32_WORD( "jsn0.11", 0x0800002, 0x400000, CRC(e1f726e8) SHA1(598d75f3ff9e43ec8ce6131ed37f4345bf2f2d8e) )
|
||||
// ROM_LOAD32_WORD( "jfv2.02", 0x2000000, 0x400000, CRC(b264bfb5) SHA1(8fafedb6af74150465b1773e80aef0edc3da4678) )
|
||||
// ROM_LOAD32_WORD( "jfv3.03", 0x2000002, 0x400000, CRC(3e1a9be2) SHA1(2082a4ae8cda84cec5ea0fc08753db387bb70d41) )
|
||||
// ROM_LOAD16_BYTE( "jbg0.40", 0x4000001, 0x200000, CRC(89662944) SHA1(ca916ba38480fa588af19fc9682603f5195ad6c7) ) // how should this one be, it won't pass it.
|
||||
// ROM_LOAD16_BYTE( "jbg1.50", 0x6000000, 0x200000, CRC(1fc7f6e0) SHA1(b36062d2a9683683ffffd3003d5244a185f53280) )
|
||||
// ROM_LOAD16_BYTE( "jbg2.60", 0x8000001, 0x200000, CRC(aee265fc) SHA1(ec420ab30b9b5141162223fc1fbf663ad9f211e6) )
|
||||
|
||||
ROM_REGION( 0x1000000, "gfx1", ROMREGION_INVERT ) /* Sprite Roms (and Blitter Data) */
|
||||
// the rom test tests as if things were mapped like this (video chip / blitter space?)
|
||||
#if 0
|
||||
ROM_REGION( 0x9000000, "test", ROMREGION_ERASE )
|
||||
ROM_LOAD32_WORD( "jfv0.00", 0x0000002, 0x400000, CRC(b2a4d3d3) SHA1(0ab71d82a37ff94442b91712a28d3470619ba575) ) // sprite gfx
|
||||
ROM_LOAD32_WORD( "jfv1.01", 0x0000000, 0x400000, CRC(83f3926e) SHA1(b1c479e675d35fc08c9a7648ff40348a24654e7e) ) // sprite gfx
|
||||
ROM_LOAD32_WORD( "jsn0.11", 0x0800002, 0x400000, CRC(e1f726e8) SHA1(598d75f3ff9e43ec8ce6131ed37f4345bf2f2d8e) ) // sound
|
||||
ROM_LOAD32_WORD( "jfv2.02", 0x2000002, 0x400000, CRC(b264bfb5) SHA1(8fafedb6af74150465b1773e80aef0edc3da4678) ) // sprite gfx
|
||||
ROM_LOAD32_WORD( "jfv3.03", 0x2000000, 0x400000, CRC(3e1a9be2) SHA1(2082a4ae8cda84cec5ea0fc08753db387bb70d41) ) // sprite gfx
|
||||
ROM_LOAD16_BYTE( "jbg0.40", 0x4000001, 0x200000, CRC(89662944) SHA1(ca916ba38480fa588af19fc9682603f5195ad6c7) ) // bg gfx (fails check?)
|
||||
ROM_LOAD16_BYTE( "jbg1.50", 0x6000000, 0x200000, CRC(1fc7f6e0) SHA1(b36062d2a9683683ffffd3003d5244a185f53280) ) // bg gfx
|
||||
ROM_LOAD16_BYTE( "jbg2.60", 0x8000001, 0x200000, CRC(aee265fc) SHA1(ec420ab30b9b5141162223fc1fbf663ad9f211e6) ) // bg gfx
|
||||
#endif
|
||||
|
||||
ROM_REGION( 0x1000000, "gfx1", 0 ) /* Sprite Roms (and Blitter Data) */
|
||||
ROM_LOAD32_WORD( "jfv0.00", 0x0000002, 0x400000, CRC(b2a4d3d3) SHA1(0ab71d82a37ff94442b91712a28d3470619ba575) )
|
||||
ROM_LOAD32_WORD( "jfv1.01", 0x0000000, 0x400000, CRC(83f3926e) SHA1(b1c479e675d35fc08c9a7648ff40348a24654e7e) )
|
||||
ROM_LOAD32_WORD( "jfv2.02", 0x0800002, 0x400000, CRC(b264bfb5) SHA1(8fafedb6af74150465b1773e80aef0edc3da4678) )
|
||||
ROM_LOAD32_WORD( "jfv3.03", 0x0800000, 0x400000, CRC(3e1a9be2) SHA1(2082a4ae8cda84cec5ea0fc08753db387bb70d41) )
|
||||
|
||||
|
||||
ROM_REGION( 0x600000, "gfx2", ROMREGION_INVERT ) /* BG Roms */
|
||||
ROM_REGION( 0x600000, "gfx2", 0 ) /* BG Roms */
|
||||
ROM_LOAD( "jbg0.40", 0x000000, 0x200000, CRC(89662944) SHA1(ca916ba38480fa588af19fc9682603f5195ad6c7) )
|
||||
ROM_LOAD( "jbg1.50", 0x200000, 0x200000, CRC(1fc7f6e0) SHA1(b36062d2a9683683ffffd3003d5244a185f53280) )
|
||||
ROM_LOAD( "jbg2.60", 0x400000, 0x200000, CRC(aee265fc) SHA1(ec420ab30b9b5141162223fc1fbf663ad9f211e6) )
|
||||
@ -1207,69 +1005,5 @@ ROM_START( rabbit )
|
||||
|
||||
ROM_END
|
||||
|
||||
ROM_START( tmmjprd )
|
||||
ROM_REGION( 0x200000, "maincpu", 0 ) /* 68020 Code - doesn't seem to dsam quite right, bitswap? */
|
||||
ROM_LOAD32_BYTE( "p00.bin", 0x000000, 0x080000, CRC(a1efd960) SHA1(7f41ab58de32777bccbfe28e6e5a1f2dca35bb90) )
|
||||
ROM_LOAD32_BYTE( "p01.bin", 0x000001, 0x080000, CRC(9c325374) SHA1(1ddf1c292fc1bcf4dcefb5d4aa3abdeb1489c020) )
|
||||
ROM_LOAD32_BYTE( "p02.bin", 0x000002, 0x080000, CRC(729a5f12) SHA1(615704d36afdceb4b1ff2e5dc34856e614181e16) )
|
||||
ROM_LOAD32_BYTE( "p03.bin", 0x000003, 0x080000, CRC(595615ab) SHA1(aca746d74aa6e7e856eb5c9b740d884778743b27) )
|
||||
|
||||
ROM_REGION( 0x2000000, "gfx1", ROMREGION_INVERT ) /* Sprite Roms */
|
||||
ROM_LOAD16_WORD_SWAP( "00.bin", 0x1000000, 0x400000, CRC(303e91a1) SHA1(c29a22061ab8af8b72e0e6bdb36915a0cb5b2a5c) )
|
||||
ROM_LOAD16_WORD_SWAP( "01.bin", 0x1400000, 0x400000, CRC(3371b775) SHA1(131dd850bd01dac52fa82c41948d900c4833db3c) )
|
||||
ROM_LOAD16_WORD_SWAP( "10.bin", 0x1800000, 0x400000, CRC(5ab6af41) SHA1(e29cee23c84e17dd8dabd2ec71e622c25418646e) )
|
||||
ROM_LOAD16_WORD_SWAP( "11.bin", 0x1c00000, 0x400000, CRC(1d1fd633) SHA1(655be5b72bb70a90d23e49512ca84d9978d87b0b) )
|
||||
ROM_LOAD16_WORD_SWAP( "02.bin", 0x0000000, 0x400000, CRC(4c1e13b9) SHA1(d244eb74f755350604824670db58ab2a56a856cb) )
|
||||
ROM_LOAD16_WORD_SWAP( "03.bin", 0x0400000, 0x400000, CRC(9cf86152) SHA1(e27e0d9befb12ad5c2acf547afe80d1c7921a4d1) )
|
||||
ROM_LOAD16_WORD_SWAP( "12.bin", 0x0800000, 0x400000, CRC(5b8bb9d6) SHA1(ee93774077d8a2ddcf70869a9c2f4961219a85b4) )
|
||||
ROM_LOAD16_WORD_SWAP( "13.bin", 0x0c00000, 0x400000, CRC(d950df0a) SHA1(3b109341ab4ad87005113fb481b5d1ed9a82f50f) )
|
||||
|
||||
ROM_REGION( 0x2000000, "gfx2", ROMREGION_INVERT ) /* BG Roms */
|
||||
ROM_LOAD32_WORD( "40.bin", 0x0000000, 0x400000, CRC(8bedc606) SHA1(7159c8b86e8d7d5ae202c239638483ccdc7dfc25) )
|
||||
ROM_LOAD32_WORD( "41.bin", 0x0000002, 0x400000, CRC(e19713dd) SHA1(a8f1b716913f2e391abf277e5bf0e9986cc75898) )
|
||||
ROM_LOAD32_WORD( "50.bin", 0x0800000, 0x400000, CRC(85ca9ce9) SHA1(c5a7270507522e11e9485196be325508846fda90) )
|
||||
ROM_LOAD32_WORD( "51.bin", 0x0800002, 0x400000, CRC(6ba1d2ec) SHA1(bbe7309b33f213c8cb9ab7adb3221ea79f89e8b0) )
|
||||
ROM_LOAD32_WORD( "60.bin", 0x1000000, 0x400000, CRC(7cb132e0) SHA1(f9c366befec46c7f6e307111a62eede029202b16) )
|
||||
ROM_LOAD32_WORD( "61.bin", 0x1000002, 0x400000, CRC(caa7e854) SHA1(592867e001abd0781f83a5124bf9aa62ad1aa7f3) )
|
||||
ROM_LOAD32_WORD( "70.bin", 0x1800000, 0x400000, CRC(9b737ae4) SHA1(0b62a90d42ace81ee32db073a57731a55a32f989) )
|
||||
ROM_LOAD32_WORD( "71.bin", 0x1800002, 0x400000, CRC(189f694e) SHA1(ad0799d4aadade51be38d824910d299257a758a3) )
|
||||
|
||||
ROM_REGION( 0x800000, "unknown", 0 ) /* Sound Roms? */
|
||||
ROM_LOAD16_BYTE( "21.bin", 0x0000001, 0x400000, CRC(bb5fa8da) SHA1(620e609b3e2524d06d58844625f186fd4682205f))
|
||||
ROM_END
|
||||
|
||||
ROM_START( tmpdoki )
|
||||
ROM_REGION( 0x200000, "maincpu", 0 ) /* 68020 Code - doesn't seem to dsam quite right, bitswap? */
|
||||
ROM_LOAD32_BYTE( "u70_p0.bin", 0x000000, 0x080000, CRC(c0ee1942) SHA1(0cebc3e326d84e200c2399208d810c0ac767dbb4) )
|
||||
ROM_LOAD32_BYTE( "u72_p1.bin", 0x000001, 0x080000, CRC(3c1bc6f6) SHA1(7b3719d4bb52e45db793564b0ccee067fd7af4e4) )
|
||||
ROM_LOAD32_BYTE( "u71_p2.bin", 0x000002, 0x080000, CRC(f2091cce) SHA1(88c6822eb1546e914c2644264367e71fb2a82be3) )
|
||||
ROM_LOAD32_BYTE( "u73_p3.bin", 0x000003, 0x080000, CRC(cca8ef13) SHA1(d5b077f3d8d38262e69d058a7d61e4563332abce) )
|
||||
|
||||
ROM_REGION( 0x2000000, "gfx1", ROMREGION_INVERT ) /* Sprite Roms */
|
||||
ROM_LOAD16_WORD_SWAP( "00.bin", 0x1000000, 0x400000, CRC(303e91a1) SHA1(c29a22061ab8af8b72e0e6bdb36915a0cb5b2a5c) )
|
||||
ROM_LOAD16_WORD_SWAP( "01.bin", 0x1400000, 0x400000, CRC(3371b775) SHA1(131dd850bd01dac52fa82c41948d900c4833db3c) )
|
||||
ROM_LOAD16_WORD_SWAP( "10.bin", 0x1800000, 0x400000, CRC(5ab6af41) SHA1(e29cee23c84e17dd8dabd2ec71e622c25418646e) )
|
||||
ROM_LOAD16_WORD_SWAP( "11.bin", 0x1c00000, 0x400000, CRC(1d1fd633) SHA1(655be5b72bb70a90d23e49512ca84d9978d87b0b) )
|
||||
ROM_LOAD16_WORD_SWAP( "02.bin", 0x0000000, 0x400000, CRC(4c1e13b9) SHA1(d244eb74f755350604824670db58ab2a56a856cb) )
|
||||
ROM_LOAD16_WORD_SWAP( "03.bin", 0x0400000, 0x400000, CRC(9cf86152) SHA1(e27e0d9befb12ad5c2acf547afe80d1c7921a4d1) )
|
||||
ROM_LOAD16_WORD_SWAP( "12.bin", 0x0800000, 0x400000, CRC(5b8bb9d6) SHA1(ee93774077d8a2ddcf70869a9c2f4961219a85b4) )
|
||||
ROM_LOAD16_WORD_SWAP( "13.bin", 0x0c00000, 0x400000, CRC(d950df0a) SHA1(3b109341ab4ad87005113fb481b5d1ed9a82f50f) )
|
||||
|
||||
ROM_REGION( 0x2000000, "gfx2", ROMREGION_INVERT ) /* BG Roms */
|
||||
ROM_LOAD32_WORD( "40.bin", 0x0000000, 0x400000, CRC(8bedc606) SHA1(7159c8b86e8d7d5ae202c239638483ccdc7dfc25) )
|
||||
ROM_LOAD32_WORD( "41.bin", 0x0000002, 0x400000, CRC(e19713dd) SHA1(a8f1b716913f2e391abf277e5bf0e9986cc75898) )
|
||||
ROM_LOAD32_WORD( "50.bin", 0x0800000, 0x400000, CRC(85ca9ce9) SHA1(c5a7270507522e11e9485196be325508846fda90) )
|
||||
ROM_LOAD32_WORD( "51.bin", 0x0800002, 0x400000, CRC(6ba1d2ec) SHA1(bbe7309b33f213c8cb9ab7adb3221ea79f89e8b0) )
|
||||
ROM_LOAD32_WORD( "60.bin", 0x1000000, 0x400000, CRC(7cb132e0) SHA1(f9c366befec46c7f6e307111a62eede029202b16) )
|
||||
ROM_LOAD32_WORD( "61.bin", 0x1000002, 0x400000, CRC(caa7e854) SHA1(592867e001abd0781f83a5124bf9aa62ad1aa7f3) )
|
||||
ROM_LOAD32_WORD( "70.bin", 0x1800000, 0x400000, CRC(9b737ae4) SHA1(0b62a90d42ace81ee32db073a57731a55a32f989) )
|
||||
ROM_LOAD32_WORD( "71.bin", 0x1800002, 0x400000, CRC(189f694e) SHA1(ad0799d4aadade51be38d824910d299257a758a3) )
|
||||
|
||||
ROM_REGION( 0x800000, "unknown", 0 ) /* Sound Roms? */
|
||||
ROM_LOAD16_BYTE( "21.bin", 0x0000001, 0x400000, CRC(bb5fa8da) SHA1(620e609b3e2524d06d58844625f186fd4682205f))
|
||||
ROM_END
|
||||
|
||||
|
||||
GAME( 1997, rabbit, 0, rabbit, rabbit, rabbit, ROT0, "Electronic Arts / Aorn", "Rabbit", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND ) // somewhat playable
|
||||
GAME( 1997, tmmjprd, 0, tmmjprd, tmmjprd, tmmjprd, ROT0, "Media / Sonnet", "Tokimeki Mahjong Paradise - Dear My Love", GAME_NOT_WORKING | GAME_NO_SOUND )
|
||||
GAME( 1998, tmpdoki, tmmjprd, tmmjprd, tmmjprd, tmmjprd, ROT0, "Media / Sonnet", "Tokimeki Mahjong Paradise - Doki Doki Hen", GAME_NOT_WORKING | GAME_NO_SOUND )
|
||||
|
758
src/mame/drivers/tmmjprd.c
Normal file
758
src/mame/drivers/tmmjprd.c
Normal file
@ -0,0 +1,758 @@
|
||||
/* tmmjprd.c
|
||||
|
||||
- split from rabbit.c (it uses the same GFX chip, but is otherwise a different PCB, and until the methods
|
||||
of configuring the graphic chip are understood it's easier to work on them here)
|
||||
|
||||
- in 16x16 tile mode, the offset into tileram doesn't neccessarily align to 16x16 tiles! This makes using the
|
||||
tilemap system excessively difficult, as it expects predecoded tiles which simply isn't possible here.
|
||||
This is used for the girls in the intro at least, they specify 16x16 tiles on non 16x16 boundaries.
|
||||
(basically the physical tile rom addressing doesn't change between modes even if the data type does)
|
||||
(handling this in the tilemap system is very messy, might just be best with custom renderer)
|
||||
|
||||
- Rom Test not hooked up (can read the gfx roms via a BANK
|
||||
- should hook this up as a test to help determine if the tmpdoki roms should really be different
|
||||
|
||||
- EEPROM might be wrong, pressing what might be coin3 causes the game to hang
|
||||
(see input ports)
|
||||
|
||||
- Video has a 'blitter' but it isn't used by these games, it is used by Rabbit
|
||||
|
||||
- tmpdoki only ouputs video to a single screen, can dual screen be turned on in service mode?
|
||||
|
||||
- sound (see rabbit.c for preliminary details, not copied here)
|
||||
|
||||
- sprites from one screen are overlapping on the other, probably a way to limit them to a single screen
|
||||
|
||||
- priority is wrong.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#include "driver.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "deprecat.h"
|
||||
#include "machine/eeprom.h"
|
||||
#include "rendlay.h"
|
||||
|
||||
|
||||
static UINT32 *tmmjprd_tilemap_regs[4];
|
||||
static UINT32 *tmmjprd_spriteregs;
|
||||
//static UINT32 *tmmjprd_blitterregs;
|
||||
|
||||
static UINT32 *tmmjprd_tilemap_ram[4];
|
||||
|
||||
static UINT32 *tmmjprd_spriteram;
|
||||
|
||||
static WRITE32_HANDLER( tmmjprd_tilemap0_w )
|
||||
{
|
||||
COMBINE_DATA(&tmmjprd_tilemap_ram[0][offset]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static WRITE32_HANDLER( tmmjprd_tilemap1_w )
|
||||
{
|
||||
COMBINE_DATA(&tmmjprd_tilemap_ram[1][offset]);
|
||||
}
|
||||
|
||||
static WRITE32_HANDLER( tmmjprd_tilemap2_w )
|
||||
{
|
||||
COMBINE_DATA(&tmmjprd_tilemap_ram[2][offset]);
|
||||
}
|
||||
|
||||
static WRITE32_HANDLER( tmmjprd_tilemap3_w )
|
||||
{
|
||||
COMBINE_DATA(&tmmjprd_tilemap_ram[3][offset]);
|
||||
}
|
||||
|
||||
static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int xoffs )
|
||||
{
|
||||
int xpos,ypos,tileno,xflip,yflip, colr;
|
||||
const gfx_element *gfx = machine->gfx[0];
|
||||
// int todraw = (tmmjprd_spriteregs[5]&0x0fff0000)>>16; // how many sprites to draw (start/end reg..) what is the other half?
|
||||
|
||||
|
||||
// UINT32 *source = (tmmjprd_spriteram+ (todraw*2))-2;
|
||||
// UINT32 *finish = tmmjprd_spriteram;
|
||||
|
||||
UINT32 *source = tmmjprd_spriteram+(0xc000/4)-2;
|
||||
UINT32 *finish = tmmjprd_spriteram;
|
||||
|
||||
|
||||
while( source>finish )
|
||||
{
|
||||
|
||||
xpos = (source[0]&0x00000fff);
|
||||
ypos = (source[0]&0x0fff0000)>>16;
|
||||
|
||||
xflip = (source[0]&0x00008000)>>15;
|
||||
yflip = (source[0]&0x00004000)>>14;
|
||||
colr = (source[1]&0x0ff00000)>>15;
|
||||
|
||||
|
||||
tileno = (source[1]&0x0003ffff);
|
||||
|
||||
// the tiles in this are 8bpp, it can probably do the funky sub-tile addressing for them too tho..
|
||||
tileno >>=1;
|
||||
|
||||
colr = (source[1]&0x0ff00000)>>20;
|
||||
|
||||
if(xpos&0x800)xpos-=0x1000;
|
||||
|
||||
// 255 for 8bpp
|
||||
drawgfx_transpen(bitmap,cliprect,gfx,tileno,colr,!xflip,yflip,(xpos-xoffs)-8,(ypos)-8,255);
|
||||
|
||||
source-=2;
|
||||
}
|
||||
}
|
||||
|
||||
static void ttmjprd_draw_tile(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int x,int y,int sizex,int sizey, UINT32 tiledata, UINT8* rom)
|
||||
{
|
||||
/* note, it's tile address _NOT_ tile number, 'sub-tile' access is possible, hence using the custom rendering */
|
||||
int tileaddr = (tiledata&0x000fffff)>>0;
|
||||
int colour = (tiledata&0x0ff00000)>>20;
|
||||
int depth = (tiledata&0x10000000)>>28;
|
||||
//int flipxy = (tiledata&0x60000000)>>29;
|
||||
// 0x80000000 (blank tile like metro.c?)
|
||||
int drawx,drawy;
|
||||
int count;
|
||||
|
||||
// entirely off right
|
||||
if (x > cliprect->max_x)
|
||||
return;
|
||||
|
||||
// entirely off left
|
||||
if ((x+sizex) < cliprect->min_x)
|
||||
return;
|
||||
|
||||
// entirely off bottom
|
||||
if (y > cliprect->max_y)
|
||||
return;
|
||||
|
||||
// entirely off bottom
|
||||
if ((y+sizey) < cliprect->min_y)
|
||||
return;
|
||||
|
||||
count = 0;
|
||||
for (drawy=y;drawy<y+sizey;drawy++)
|
||||
{
|
||||
for (drawx=x;drawx<x+sizex;drawx++)
|
||||
{
|
||||
UINT16 dat;
|
||||
UINT16* dst;
|
||||
|
||||
if (!depth)
|
||||
{
|
||||
if ((drawx < cliprect->max_x) && (drawx > cliprect->min_x) && (drawy < cliprect->max_y) && (drawy > cliprect->min_y))
|
||||
{
|
||||
dat = (rom[(tileaddr*32)+count] & 0xf0)>>4;
|
||||
if (dat!=15)
|
||||
{
|
||||
//dat += (colour<<8);
|
||||
dst = BITMAP_ADDR16(bitmap, drawy, drawx);
|
||||
dst[0] = dat;
|
||||
}
|
||||
}
|
||||
drawx++;
|
||||
if ((drawx < cliprect->max_x) && (drawx > cliprect->min_x) && (drawy < cliprect->max_y) && (drawy > cliprect->min_y))
|
||||
{
|
||||
dat = (rom[(tileaddr*32)+count] & 0x0f);
|
||||
if (dat!=15)
|
||||
{
|
||||
//dat += (colour<<8);
|
||||
dst = BITMAP_ADDR16(bitmap, drawy, drawx);
|
||||
dst[0] = dat;
|
||||
}
|
||||
}
|
||||
|
||||
count++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((drawx < cliprect->max_x) && (drawx > cliprect->min_x) && (drawy < cliprect->max_y) && (drawy > cliprect->min_y))
|
||||
{
|
||||
dat = (rom[(tileaddr*32)+count] & 0xff);
|
||||
if (dat!=255)
|
||||
{
|
||||
dat += (colour<<8);
|
||||
dst = BITMAP_ADDR16(bitmap, drawy, drawx);
|
||||
dst[0] = dat;
|
||||
}
|
||||
}
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void ttmjprd_draw_tilemap(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, UINT32*tileram, UINT32*tileregs, UINT8*rom )
|
||||
{
|
||||
int y,x;
|
||||
int count;
|
||||
|
||||
int tilemap_sizex = 64;
|
||||
int tilemap_sizey = 64;
|
||||
|
||||
int tile_sizex;
|
||||
int tile_sizey;
|
||||
|
||||
int scrolly, scrollx;
|
||||
|
||||
if (tileregs[0]&0x00400000)
|
||||
{
|
||||
tile_sizex = 16;
|
||||
tile_sizey = 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
tile_sizex = 8;
|
||||
tile_sizey = 8;
|
||||
}
|
||||
|
||||
scrolly = (tileregs[2] & 0xfff00000) >> 20;
|
||||
scrollx = (tileregs[2] & 0x0000fff0) >> 4;
|
||||
|
||||
count = 0;
|
||||
for (y=0;y<tilemap_sizey;y++)
|
||||
{
|
||||
for (x=0;x<tilemap_sizex;x++)
|
||||
{
|
||||
UINT32 tiledata = tileram[count];
|
||||
// todo: handle wraparound
|
||||
ttmjprd_draw_tile(machine,bitmap,cliprect,(x*tile_sizex)-scrollx,(y*tile_sizey)-scrolly,tile_sizex,tile_sizey, tiledata, rom);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static VIDEO_UPDATE( tmmjprd )
|
||||
{
|
||||
UINT8* gfxroms = memory_region(screen->machine,"gfx2");
|
||||
const device_config *left_screen = devtag_get_device(screen->machine, "lscreen");
|
||||
const device_config *right_screen = devtag_get_device(screen->machine, "rscreen");
|
||||
|
||||
bitmap_fill(bitmap,cliprect,get_black_pen(screen->machine));
|
||||
|
||||
if (screen == left_screen)
|
||||
{
|
||||
ttmjprd_draw_tilemap( screen->machine, bitmap, cliprect, tmmjprd_tilemap_ram[3], tmmjprd_tilemap_regs[3], gfxroms );
|
||||
draw_sprites(screen->machine,bitmap,cliprect, 320);
|
||||
ttmjprd_draw_tilemap( screen->machine, bitmap, cliprect, tmmjprd_tilemap_ram[2], tmmjprd_tilemap_regs[2], gfxroms );
|
||||
}
|
||||
if (screen == right_screen)
|
||||
{
|
||||
ttmjprd_draw_tilemap( screen->machine, bitmap, cliprect, tmmjprd_tilemap_ram[1], tmmjprd_tilemap_regs[1], gfxroms );
|
||||
draw_sprites(screen->machine,bitmap,cliprect, 0);
|
||||
ttmjprd_draw_tilemap( screen->machine, bitmap, cliprect, tmmjprd_tilemap_ram[0], tmmjprd_tilemap_regs[0], gfxroms );
|
||||
}
|
||||
|
||||
/*
|
||||
popmessage("%08x %08x %08x %08x %08x %08x",
|
||||
tmmjprd_tilemap_regs[2][0],
|
||||
tmmjprd_tilemap_regs[2][1],
|
||||
tmmjprd_tilemap_regs[2][2],
|
||||
tmmjprd_tilemap_regs[2][3],
|
||||
tmmjprd_tilemap_regs[2][4],
|
||||
tmmjprd_tilemap_regs[2][5]);
|
||||
*/
|
||||
|
||||
/*
|
||||
popmessage("%08x %08x %08x %08x %08x %08x %08x",
|
||||
tmmjprd_spriteregs[0],
|
||||
tmmjprd_spriteregs[1],
|
||||
tmmjprd_spriteregs[2],
|
||||
tmmjprd_spriteregs[3],
|
||||
tmmjprd_spriteregs[4],
|
||||
tmmjprd_spriteregs[5],
|
||||
tmmjprd_spriteregs[6]);
|
||||
*/
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static VIDEO_START(tmmjprd)
|
||||
{
|
||||
/* the tilemaps are bigger than the regions the cpu can see, need to allocate the ram here */
|
||||
/* or maybe not for this game/hw .... */
|
||||
tmmjprd_tilemap_ram[0] = auto_alloc_array_clear(machine, UINT32, 0x8000);
|
||||
tmmjprd_tilemap_ram[1] = auto_alloc_array_clear(machine, UINT32, 0x8000);
|
||||
tmmjprd_tilemap_ram[2] = auto_alloc_array_clear(machine, UINT32, 0x8000);
|
||||
tmmjprd_tilemap_ram[3] = auto_alloc_array_clear(machine, UINT32, 0x8000);
|
||||
}
|
||||
|
||||
static READ32_HANDLER( tmmjprd_tilemap0_r )
|
||||
{
|
||||
return tmmjprd_tilemap_ram[0][offset];
|
||||
}
|
||||
|
||||
static READ32_HANDLER( tmmjprd_tilemap1_r )
|
||||
{
|
||||
return tmmjprd_tilemap_ram[1][offset];
|
||||
}
|
||||
|
||||
static READ32_HANDLER( tmmjprd_tilemap2_r )
|
||||
{
|
||||
return tmmjprd_tilemap_ram[2][offset];
|
||||
}
|
||||
|
||||
static READ32_HANDLER( tmmjprd_tilemap3_r )
|
||||
{
|
||||
return tmmjprd_tilemap_ram[3][offset];
|
||||
}
|
||||
|
||||
static READ32_HANDLER( randomtmmjprds )
|
||||
{
|
||||
return 0x0000;//mame_rand(space->machine);
|
||||
}
|
||||
|
||||
|
||||
#define BLITCMDLOG 0
|
||||
#define BLITLOG 0
|
||||
|
||||
#if 0
|
||||
static TIMER_CALLBACK( tmmjprd_blit_done )
|
||||
{
|
||||
cputag_set_input_line(machine, "maincpu", 3, HOLD_LINE);
|
||||
}
|
||||
|
||||
static void tmmjprd_do_blit(running_machine *machine)
|
||||
{
|
||||
UINT8 *blt_data = memory_region(machine, "gfx1");
|
||||
int blt_source = (tmmjprd_blitterregs[0]&0x000fffff)>>0;
|
||||
int blt_column = (tmmjprd_blitterregs[1]&0x00ff0000)>>16;
|
||||
int blt_line = (tmmjprd_blitterregs[1]&0x000000ff);
|
||||
int blt_tilemp = (tmmjprd_blitterregs[2]&0x0000e000)>>13;
|
||||
int blt_oddflg = (tmmjprd_blitterregs[2]&0x00000001)>>0;
|
||||
int mask,shift;
|
||||
|
||||
|
||||
if(BLITCMDLOG) mame_printf_debug("BLIT command %08x %08x %08x\n", tmmjprd_blitterregs[0], tmmjprd_blitterregs[1], tmmjprd_blitterregs[2]);
|
||||
|
||||
if (blt_oddflg&1)
|
||||
{
|
||||
mask = 0xffff0000;
|
||||
shift= 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
mask = 0x0000ffff;
|
||||
shift= 16;
|
||||
}
|
||||
|
||||
blt_oddflg>>=1; /* blt_oddflg is now in dword offsets*/
|
||||
blt_oddflg+=0x80*blt_line;
|
||||
|
||||
blt_source<<=1; /* blitsource is in word offsets */
|
||||
|
||||
while(1)
|
||||
{
|
||||
int blt_commnd = blt_data[blt_source+1];
|
||||
int blt_amount = blt_data[blt_source+0];
|
||||
int blt_value;
|
||||
int loopcount;
|
||||
int writeoffs;
|
||||
blt_source+=2;
|
||||
|
||||
switch (blt_commnd)
|
||||
{
|
||||
case 0x00: /* copy nn bytes */
|
||||
if (!blt_amount)
|
||||
{
|
||||
if(BLITLOG) mame_printf_debug("end of blit list\n");
|
||||
timer_set(machine, ATTOTIME_IN_USEC(500), NULL,0,tmmjprd_blit_done);
|
||||
return;
|
||||
}
|
||||
|
||||
if(BLITLOG) mame_printf_debug("blit copy %02x bytes\n", blt_amount);
|
||||
for (loopcount=0;loopcount<blt_amount;loopcount++)
|
||||
{
|
||||
blt_value = ((blt_data[blt_source+1]<<8)|(blt_data[blt_source+0]));
|
||||
blt_source+=2;
|
||||
writeoffs=blt_oddflg+blt_column;
|
||||
tmmjprd_tilemap_ram[blt_tilemp][writeoffs]=(tmmjprd_tilemap_ram[blt_tilemp][writeoffs]&mask)|(blt_value<<shift);
|
||||
tilemap_mark_tile_dirty(tmmjprd_tilemap[blt_tilemp],writeoffs);
|
||||
|
||||
blt_column++;
|
||||
blt_column&=0x7f;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 0x02: /* fill nn bytes */
|
||||
if(BLITLOG) mame_printf_debug("blit fill %02x bytes\n", blt_amount);
|
||||
blt_value = ((blt_data[blt_source+1]<<8)|(blt_data[blt_source+0]));
|
||||
blt_source+=2;
|
||||
|
||||
for (loopcount=0;loopcount<blt_amount;loopcount++)
|
||||
{
|
||||
writeoffs=blt_oddflg+blt_column;
|
||||
tmmjprd_tilemap_ram[blt_tilemp][writeoffs]=(tmmjprd_tilemap_ram[blt_tilemp][writeoffs]&mask)|(blt_value<<shift);
|
||||
tilemap_mark_tile_dirty(tmmjprd_tilemap[blt_tilemp],writeoffs);
|
||||
blt_column++;
|
||||
blt_column&=0x7f;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 0x03: /* next line */
|
||||
if(BLITLOG) mame_printf_debug("blit: move to next line\n");
|
||||
blt_column = (tmmjprd_blitterregs[1]&0x00ff0000)>>16; /* --CC---- */
|
||||
blt_oddflg+=128;
|
||||
break;
|
||||
|
||||
default: /* unknown / illegal */
|
||||
if(BLITLOG) mame_printf_debug("uknown blit command %02x\n",blt_commnd);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
static WRITE32_HANDLER( tmmjprd_blitter_w )
|
||||
{
|
||||
COMBINE_DATA(&tmmjprd_blitterregs[offset]);
|
||||
|
||||
if (offset == 0x0c/4)
|
||||
{
|
||||
tmmjprd_do_blit(space->machine);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static UINT8 mux_data;
|
||||
|
||||
static WRITE32_HANDLER( tmmjprd_eeprom_write )
|
||||
{
|
||||
// don't disturb the EEPROM if we're not actually writing to it
|
||||
// (in particular, data & 0x100 here with mask = ffff00ff looks to be the watchdog)
|
||||
if (mem_mask == 0x000000ff)
|
||||
mux_data = (~data & 0xff);
|
||||
|
||||
if (mem_mask == 0xff000000)
|
||||
{
|
||||
// latch the bit
|
||||
eeprom_write_bit(data & 0x01000000);
|
||||
|
||||
// reset line asserted: reset.
|
||||
eeprom_set_cs_line((data & 0x04000000) ? CLEAR_LINE : ASSERT_LINE );
|
||||
|
||||
// clock line asserted: write latch or select next bit to read
|
||||
eeprom_set_clock_line((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE );
|
||||
}
|
||||
}
|
||||
|
||||
static READ32_HANDLER( tmmjprd_mux_r )
|
||||
{
|
||||
static UINT8 system_in;
|
||||
|
||||
system_in = input_port_read(space->machine, "SYSTEM");
|
||||
|
||||
switch(mux_data)
|
||||
{
|
||||
case 0x01: return (system_in & 0xff) | (input_port_read(space->machine, "PL1_1")<<8) | (input_port_read(space->machine, "PL2_1")<<16) | 0xff000000;
|
||||
case 0x02: return (system_in & 0xff) | (input_port_read(space->machine, "PL1_2")<<8) | (input_port_read(space->machine, "PL2_2")<<16) | 0xff000000;
|
||||
case 0x04: return (system_in & 0xff) | (input_port_read(space->machine, "PL1_3")<<8) | (input_port_read(space->machine, "PL2_3")<<16) | 0xff000000;
|
||||
case 0x08: return (system_in & 0xff) | (input_port_read(space->machine, "PL1_4")<<8) | (input_port_read(space->machine, "PL2_4")<<16) | 0xff000000;
|
||||
case 0x10: return (system_in & 0xff) | (input_port_read(space->machine, "PL1_5")<<8) | (input_port_read(space->machine, "PL2_5")<<16) | 0xff000000;
|
||||
}
|
||||
|
||||
return (system_in & 0xff) | 0xffffff00;
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( tmmjprd )
|
||||
PORT_START("SYSTEM")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Left Screen Coin A")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("Left Screen Coin B")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // might actually be coin 3 button.. but hangs the game? (eeprom issue?)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("Right Screen Coin A")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("Right Screen Coin B") // might actually be service 1
|
||||
PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) // CHECK!
|
||||
|
||||
PORT_START("PL1_1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("PL1_2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) //bet button
|
||||
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("PL1_3")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("PL1_4")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("PL1_5")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("PL2_1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("PL2_2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) //bet button
|
||||
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("PL2_3")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("PL2_4")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("PL2_5")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
/* tmmjprd has a different memory map */
|
||||
|
||||
static WRITE32_HANDLER( tmmjprd_paletteram_dword_w )
|
||||
{
|
||||
int r,g,b;
|
||||
COMBINE_DATA(&paletteram32[offset]);
|
||||
|
||||
b = ((paletteram32[offset] & 0x000000ff) >>0);
|
||||
r = ((paletteram32[offset] & 0x0000ff00) >>8);
|
||||
g = ((paletteram32[offset] & 0x00ff0000) >>16);
|
||||
|
||||
palette_set_color(space->machine,offset,MAKE_RGB(r,g,b));
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( tmmjprd_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x000000, 0x1fffff) AM_ROM
|
||||
AM_RANGE(0x200010, 0x200013) AM_READ(randomtmmjprds) // gfx chip status?
|
||||
AM_RANGE(0x200980, 0x200983) AM_READ(randomtmmjprds) // sound chip status?
|
||||
AM_RANGE(0x200984, 0x200987) AM_READ(randomtmmjprds) // sound chip status?
|
||||
/* check these are used .. */
|
||||
// AM_RANGE(0x200010, 0x200013) AM_WRITEONLY AM_BASE( &tmmjprd_viewregs0 )
|
||||
AM_RANGE(0x200100, 0x200117) AM_WRITEONLY AM_BASE( &tmmjprd_tilemap_regs[0] ) // tilemap regs1
|
||||
AM_RANGE(0x200120, 0x200137) AM_WRITEONLY AM_BASE( &tmmjprd_tilemap_regs[1] ) // tilemap regs2
|
||||
AM_RANGE(0x200140, 0x200157) AM_WRITEONLY AM_BASE( &tmmjprd_tilemap_regs[2] ) // tilemap regs3
|
||||
AM_RANGE(0x200160, 0x200177) AM_WRITEONLY AM_BASE( &tmmjprd_tilemap_regs[3] ) // tilemap regs4
|
||||
AM_RANGE(0x200200, 0x20021b) AM_WRITEONLY AM_BASE( &tmmjprd_spriteregs ) // sprregs?
|
||||
// AM_RANGE(0x200300, 0x200303) AM_WRITE(tmmjprd_rombank_w) // used during rom testing, rombank/area select + something else?
|
||||
// AM_RANGE(0x200400, 0x200413) AM_WRITEONLY AM_BASE( &tmmjprd_viewregs6 ) // some global controls? (brightness etc.?)
|
||||
// AM_RANGE(0x200500, 0x200503) AM_WRITEONLY AM_BASE( &tmmjprd_viewregs7 )
|
||||
// AM_RANGE(0x200700, 0x20070f) AM_WRITE(tmmjprd_blitter_w) AM_BASE( &tmmjprd_blitterregs )
|
||||
// AM_RANGE(0x200800, 0x20080f) AM_WRITEONLY AM_BASE( &tmmjprd_viewregs9 ) // never changes?
|
||||
// AM_RANGE(0x200900, 0x20098f) AM_WRITE(tmmjprd_audio_w)
|
||||
/* hmm */
|
||||
// AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE( &tmmjprd_viewregs10 )
|
||||
/* tilemaps */
|
||||
AM_RANGE(0x280000, 0x283fff) AM_READWRITE(tmmjprd_tilemap0_r,tmmjprd_tilemap0_w)
|
||||
AM_RANGE(0x284000, 0x287fff) AM_READWRITE(tmmjprd_tilemap1_r,tmmjprd_tilemap1_w)
|
||||
AM_RANGE(0x288000, 0x28bfff) AM_READWRITE(tmmjprd_tilemap2_r,tmmjprd_tilemap2_w)
|
||||
AM_RANGE(0x28c000, 0x28ffff) AM_READWRITE(tmmjprd_tilemap3_r,tmmjprd_tilemap3_w)
|
||||
/* ?? is palette ram shared with sprites in this case or just a different map */
|
||||
AM_RANGE(0x290000, 0x29bfff) AM_RAM AM_BASE(&tmmjprd_spriteram)
|
||||
AM_RANGE(0x29c000, 0x29ffff) AM_RAM_WRITE(tmmjprd_paletteram_dword_w) AM_BASE(&paletteram32)
|
||||
|
||||
AM_RANGE(0x400000, 0x400003) AM_READ(tmmjprd_mux_r) AM_WRITE(tmmjprd_eeprom_write)
|
||||
AM_RANGE(0xf00000, 0xffffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
static const gfx_layout rabbit_sprite_16x16x8_layout =
|
||||
{
|
||||
16,16,
|
||||
RGN_FRAC(1,2),
|
||||
8,
|
||||
{ 0,1,2,3,4,5,6,7 },
|
||||
{
|
||||
40, 32, RGN_FRAC(1,2)+40,RGN_FRAC(1,2)+32,
|
||||
56, 48,RGN_FRAC(1,2)+56, RGN_FRAC(1,2)+48,
|
||||
8, 0,RGN_FRAC(1,2)+8 , RGN_FRAC(1,2)+0,
|
||||
24, 16,RGN_FRAC(1,2)+24, RGN_FRAC(1,2)+16,
|
||||
},
|
||||
|
||||
|
||||
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,8*64,9*64,10*64,11*64,12*64,13*64,14*64,15*64 },
|
||||
16*64
|
||||
};
|
||||
|
||||
|
||||
// gfx decoding is ugly.. 16*16 tiles can start at varying different offsets..
|
||||
static GFXDECODE_START( tmmjprd )
|
||||
/* this seems to be sprites */
|
||||
// GFXDECODE_ENTRY( "gfx1", 0, tmmjprd_sprite_8x8x4_layout, 0x0, 0x1000 )
|
||||
// GFXDECODE_ENTRY( "gfx1", 0, rabbit_sprite_16x16x4_layout, 0x0, 0x1000 )
|
||||
// GFXDECODE_ENTRY( "gfx1", 0, tmmjprd_sprite_8x8x8_layout, 0x0, 0x1000 )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, rabbit_sprite_16x16x8_layout, 0x0, 0x1000 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
static INTERRUPT_GEN( tmmjprd_interrupt )
|
||||
{
|
||||
int intlevel = 0;
|
||||
|
||||
if (cpu_getiloops(device)==0)
|
||||
intlevel = 5;
|
||||
else
|
||||
intlevel = 3;
|
||||
|
||||
cpu_set_input_line(device, intlevel, HOLD_LINE);
|
||||
}
|
||||
|
||||
static MACHINE_DRIVER_START( tmmjprd )
|
||||
MDRV_CPU_ADD("maincpu",M68EC020,24000000) /* 24 MHz */
|
||||
MDRV_CPU_PROGRAM_MAP(tmmjprd_map)
|
||||
MDRV_CPU_VBLANK_INT_HACK(tmmjprd_interrupt,2)
|
||||
MDRV_NVRAM_HANDLER(93C46)
|
||||
|
||||
MDRV_GFXDECODE(tmmjprd)
|
||||
|
||||
// MDRV_SCREEN_ADD("screen", RASTER)
|
||||
// MDRV_SCREEN_REFRESH_RATE(60)
|
||||
// MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
// MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
||||
// MDRV_SCREEN_SIZE(64*16, 64*16)
|
||||
// MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
|
||||
MDRV_PALETTE_LENGTH(0x4000)
|
||||
|
||||
|
||||
MDRV_DEFAULT_LAYOUT(layout_dualhsxs)
|
||||
|
||||
MDRV_SCREEN_ADD("lscreen", RASTER)
|
||||
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
||||
MDRV_SCREEN_REFRESH_RATE(60)
|
||||
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MDRV_SCREEN_SIZE(64*16, 64*16)
|
||||
MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
|
||||
//MDRV_SCREEN_VISIBLE_AREA(0*8, 64*16-1, 0*8, 64*16-1)
|
||||
|
||||
MDRV_SCREEN_ADD("rscreen", RASTER)
|
||||
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
||||
MDRV_SCREEN_REFRESH_RATE(60)
|
||||
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MDRV_SCREEN_SIZE(64*16, 64*16)
|
||||
MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
|
||||
//MDRV_SCREEN_VISIBLE_AREA(0*8, 64*16-1, 0*8, 64*16-1)
|
||||
|
||||
|
||||
MDRV_VIDEO_START(tmmjprd)
|
||||
MDRV_VIDEO_UPDATE(tmmjprd)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static MACHINE_DRIVER_START( tmpdoki )
|
||||
MDRV_IMPORT_FROM(tmmjprd)
|
||||
MDRV_DEFAULT_LAYOUT(layout_horizont)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
|
||||
|
||||
ROM_START( tmmjprd )
|
||||
ROM_REGION( 0x200000, "maincpu", 0 )
|
||||
ROM_LOAD32_BYTE( "p00.bin", 0x000000, 0x080000, CRC(a1efd960) SHA1(7f41ab58de32777bccbfe28e6e5a1f2dca35bb90) )
|
||||
ROM_LOAD32_BYTE( "p01.bin", 0x000001, 0x080000, CRC(9c325374) SHA1(1ddf1c292fc1bcf4dcefb5d4aa3abdeb1489c020) )
|
||||
ROM_LOAD32_BYTE( "p02.bin", 0x000002, 0x080000, CRC(729a5f12) SHA1(615704d36afdceb4b1ff2e5dc34856e614181e16) )
|
||||
ROM_LOAD32_BYTE( "p03.bin", 0x000003, 0x080000, CRC(595615ab) SHA1(aca746d74aa6e7e856eb5c9b740d884778743b27) )
|
||||
|
||||
ROM_REGION( 0x2000000, "gfx1", 0 ) /* Sprite Roms */
|
||||
ROM_LOAD32_WORD( "00.bin", 0x1000002, 0x400000, CRC(303e91a1) SHA1(c29a22061ab8af8b72e0e6bdb36915a0cb5b2a5c) )
|
||||
ROM_LOAD32_WORD( "01.bin", 0x0000002, 0x400000, CRC(3371b775) SHA1(131dd850bd01dac52fa82c41948d900c4833db3c) )
|
||||
ROM_LOAD32_WORD( "02.bin", 0x1000000, 0x400000, CRC(4c1e13b9) SHA1(d244eb74f755350604824670db58ab2a56a856cb) )
|
||||
ROM_LOAD32_WORD( "03.bin", 0x0000000, 0x400000, CRC(9cf86152) SHA1(e27e0d9befb12ad5c2acf547afe80d1c7921a4d1) )
|
||||
ROM_LOAD32_WORD( "10.bin", 0x1800002, 0x400000, CRC(5ab6af41) SHA1(e29cee23c84e17dd8dabd2ec71e622c25418646e) )
|
||||
ROM_LOAD32_WORD( "11.bin", 0x0800002, 0x400000, CRC(1d1fd633) SHA1(655be5b72bb70a90d23e49512ca84d9978d87b0b) )
|
||||
ROM_LOAD32_WORD( "12.bin", 0x1800000, 0x400000, CRC(5b8bb9d6) SHA1(ee93774077d8a2ddcf70869a9c2f4961219a85b4) )
|
||||
ROM_LOAD32_WORD( "13.bin", 0x0800000, 0x400000, CRC(d950df0a) SHA1(3b109341ab4ad87005113fb481b5d1ed9a82f50f) )
|
||||
|
||||
ROM_REGION( 0x2000000, "gfx2", 0 ) /* BG Roms */
|
||||
ROM_LOAD32_WORD( "40.bin", 0x0000000, 0x400000, CRC(8bedc606) SHA1(7159c8b86e8d7d5ae202c239638483ccdc7dfc25) )
|
||||
ROM_LOAD32_WORD( "41.bin", 0x0000002, 0x400000, CRC(e19713dd) SHA1(a8f1b716913f2e391abf277e5bf0e9986cc75898) )
|
||||
ROM_LOAD32_WORD( "50.bin", 0x0800000, 0x400000, CRC(85ca9ce9) SHA1(c5a7270507522e11e9485196be325508846fda90) )
|
||||
ROM_LOAD32_WORD( "51.bin", 0x0800002, 0x400000, CRC(6ba1d2ec) SHA1(bbe7309b33f213c8cb9ab7adb3221ea79f89e8b0) )
|
||||
ROM_LOAD32_WORD( "60.bin", 0x1000000, 0x400000, CRC(7cb132e0) SHA1(f9c366befec46c7f6e307111a62eede029202b16) )
|
||||
ROM_LOAD32_WORD( "61.bin", 0x1000002, 0x400000, CRC(caa7e854) SHA1(592867e001abd0781f83a5124bf9aa62ad1aa7f3) )
|
||||
ROM_LOAD32_WORD( "70.bin", 0x1800000, 0x400000, CRC(9b737ae4) SHA1(0b62a90d42ace81ee32db073a57731a55a32f989) )
|
||||
ROM_LOAD32_WORD( "71.bin", 0x1800002, 0x400000, CRC(189f694e) SHA1(ad0799d4aadade51be38d824910d299257a758a3) )
|
||||
|
||||
ROM_REGION( 0x800000, "unknown", 0 ) /* Sound Roms? */
|
||||
ROM_LOAD16_BYTE( "21.bin", 0x0000001, 0x400000, CRC(bb5fa8da) SHA1(620e609b3e2524d06d58844625f186fd4682205f))
|
||||
ROM_END
|
||||
|
||||
// single screen?
|
||||
ROM_START( tmpdoki )
|
||||
ROM_REGION( 0x200000, "maincpu", 0 )
|
||||
ROM_LOAD32_BYTE( "u70_p0.bin", 0x000000, 0x080000, CRC(c0ee1942) SHA1(0cebc3e326d84e200c2399208d810c0ac767dbb4) )
|
||||
ROM_LOAD32_BYTE( "u72_p1.bin", 0x000001, 0x080000, CRC(3c1bc6f6) SHA1(7b3719d4bb52e45db793564b0ccee067fd7af4e4) )
|
||||
ROM_LOAD32_BYTE( "u71_p2.bin", 0x000002, 0x080000, CRC(f2091cce) SHA1(88c6822eb1546e914c2644264367e71fb2a82be3) )
|
||||
ROM_LOAD32_BYTE( "u73_p3.bin", 0x000003, 0x080000, CRC(cca8ef13) SHA1(d5b077f3d8d38262e69d058a7d61e4563332abce) )
|
||||
|
||||
ROM_REGION( 0x2000000, "gfx1", 0 ) /* Sprite Roms */
|
||||
ROM_LOAD32_WORD( "00.bin", 0x1000002, 0x400000, CRC(303e91a1) SHA1(c29a22061ab8af8b72e0e6bdb36915a0cb5b2a5c) )
|
||||
ROM_LOAD32_WORD( "01.bin", 0x0000002, 0x400000, CRC(3371b775) SHA1(131dd850bd01dac52fa82c41948d900c4833db3c) )
|
||||
ROM_LOAD32_WORD( "02.bin", 0x1000000, 0x400000, CRC(4c1e13b9) SHA1(d244eb74f755350604824670db58ab2a56a856cb) )
|
||||
ROM_LOAD32_WORD( "03.bin", 0x0000000, 0x400000, CRC(9cf86152) SHA1(e27e0d9befb12ad5c2acf547afe80d1c7921a4d1) )
|
||||
ROM_LOAD32_WORD( "10.bin", 0x1800002, 0x400000, CRC(5ab6af41) SHA1(e29cee23c84e17dd8dabd2ec71e622c25418646e) )
|
||||
ROM_LOAD32_WORD( "11.bin", 0x0800002, 0x400000, CRC(1d1fd633) SHA1(655be5b72bb70a90d23e49512ca84d9978d87b0b) )
|
||||
ROM_LOAD32_WORD( "12.bin", 0x1800000, 0x400000, CRC(5b8bb9d6) SHA1(ee93774077d8a2ddcf70869a9c2f4961219a85b4) )
|
||||
ROM_LOAD32_WORD( "13.bin", 0x0800000, 0x400000, CRC(d950df0a) SHA1(3b109341ab4ad87005113fb481b5d1ed9a82f50f) )
|
||||
|
||||
ROM_REGION( 0x2000000, "gfx2", 0 ) /* BG Roms */
|
||||
ROM_LOAD32_WORD( "40.bin", 0x0000000, 0x400000, CRC(8bedc606) SHA1(7159c8b86e8d7d5ae202c239638483ccdc7dfc25) )
|
||||
ROM_LOAD32_WORD( "41.bin", 0x0000002, 0x400000, CRC(e19713dd) SHA1(a8f1b716913f2e391abf277e5bf0e9986cc75898) )
|
||||
ROM_LOAD32_WORD( "50.bin", 0x0800000, 0x400000, CRC(85ca9ce9) SHA1(c5a7270507522e11e9485196be325508846fda90) )
|
||||
ROM_LOAD32_WORD( "51.bin", 0x0800002, 0x400000, CRC(6ba1d2ec) SHA1(bbe7309b33f213c8cb9ab7adb3221ea79f89e8b0) )
|
||||
|
||||
/* I think these should be different, the game attempts to draw tiles from here for the title logo, but
|
||||
the tiles are empty. Once the ROM check is hooked up this will be easier to confirm */
|
||||
ROM_LOAD32_WORD( "60.bin", 0x1000000, 0x400000, BAD_DUMP CRC(7cb132e0) SHA1(f9c366befec46c7f6e307111a62eede029202b16) )
|
||||
ROM_LOAD32_WORD( "61.bin", 0x1000002, 0x400000, BAD_DUMP CRC(caa7e854) SHA1(592867e001abd0781f83a5124bf9aa62ad1aa7f3) )
|
||||
ROM_LOAD32_WORD( "70.bin", 0x1800000, 0x400000, BAD_DUMP CRC(9b737ae4) SHA1(0b62a90d42ace81ee32db073a57731a55a32f989) )
|
||||
ROM_LOAD32_WORD( "71.bin", 0x1800002, 0x400000, BAD_DUMP CRC(189f694e) SHA1(ad0799d4aadade51be38d824910d299257a758a3) )
|
||||
|
||||
ROM_REGION( 0x800000, "unknown", 0 ) /* Sound Roms? */
|
||||
ROM_LOAD16_BYTE( "21.bin", 0x0000001, 0x400000, CRC(bb5fa8da) SHA1(620e609b3e2524d06d58844625f186fd4682205f))
|
||||
ROM_END
|
||||
|
||||
|
||||
GAME( 1997, tmmjprd, 0, tmmjprd, tmmjprd, 0, ROT0, "Media / Sonnet", "Tokimeki Mahjong Paradise - Dear My Love", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND )
|
||||
GAME( 1998, tmpdoki, tmmjprd, tmpdoki, tmmjprd, 0, ROT0, "Media / Sonnet", "Tokimeki Mahjong Paradise - Doki Doki Hen", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND ) // missing gfx due to wrong roms?
|
@ -869,6 +869,7 @@ $(MAMEOBJ)/metro.a: \
|
||||
$(DRIVERS)/hyprduel.o $(VIDEO)/hyprduel.o \
|
||||
$(DRIVERS)/metro.o $(VIDEO)/metro.o \
|
||||
$(DRIVERS)/rabbit.o \
|
||||
$(DRIVERS)/tmmjprd.o \
|
||||
|
||||
$(MAMEOBJ)/midcoin.a: \
|
||||
$(DRIVERS)/wallc.o \
|
||||
|
Loading…
Reference in New Issue
Block a user