Previous 199869 Revisions Next

r30698 Wednesday 28th May, 2014 at 11:54:15 UTC by David Haywood
some improvements to the mastninj bootleg emulation (nw)
[src/mame/drivers]gaiden.c
[src/mame/includes]gaiden.h
[src/mame/video]gaiden.c

trunk/src/mame/drivers/gaiden.c
r30697r30698
382382   AM_RANGE(0x000000, 0x03ffff) AM_ROM
383383   AM_RANGE(0x060000, 0x063fff) AM_RAM
384384   AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(gaiden_videoram_w) AM_SHARE("videoram")
385   AM_RANGE(0x072000, 0x073fff) AM_READWRITE(gaiden_videoram2_r, gaiden_videoram2_w) AM_SHARE("videoram2")
386   AM_RANGE(0x074000, 0x075fff) AM_READWRITE(gaiden_videoram3_r, gaiden_videoram3_w) AM_SHARE("videoram3")
385   AM_RANGE(0x072000, 0x073fff) AM_RAM_WRITE(gaiden_videoram2_w) AM_SHARE("videoram2")
386   AM_RANGE(0x074000, 0x075fff) AM_RAM_WRITE(gaiden_videoram3_w) AM_SHARE("videoram3")
387387   AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram")
388388   AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
389389   AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM")
r30697r30698
690690
691691static const gfx_layout mastninj_spritelayout =
692692{
693   8,8,    /* tile size */
693   16,16,    /* tile size */
694694   RGN_FRAC(1,4),  /* number of tiles */
695695   4,  /* 4 bits per pixel */
696696   { RGN_FRAC(0,4),RGN_FRAC(1,4),RGN_FRAC(2,4),RGN_FRAC(3,4) },
697   { 0,1,2,3,4,5,6,7 },
698   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
699   8*8 /* offset to next tile */
697   { 0,1,2,3,4,5,6,7,  128+0,128+1,128+2,128+3,128+4,128+5,128+6,128+7 },
698   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
699   32*8 /* offset to next tile */
700700};
701701
702702static GFXDECODE_START( mastninj )
703703   GFXDECODE_ENTRY( "gfx1", 0, tilelayout,        0x000, 16 )  /* tiles 8x8  */
704704   GFXDECODE_ENTRY( "gfx2", 0, mastninj_tile2layout,       0x300, 16 ) /* tiles 16x16 */
705705   GFXDECODE_ENTRY( "gfx3", 0, mastninj_tile2layout,       0x200, 16 ) /* tiles 16x16 */
706   GFXDECODE_ENTRY( "gfx4", 0, mastninj_spritelayout,      0x100, 16 ) /* sprites 8x8 */
706   GFXDECODE_ENTRY( "gfx4", 0, mastninj_spritelayout,      0x100, 16 ) /* sprites 16x16 */
707707GFXDECODE_END
708708
709709static const gfx_layout drgnbowl_tile2layout =
r30697r30698
909909   AM_RANGE(0x000000, 0x03ffff) AM_ROM
910910   AM_RANGE(0x060000, 0x063fff) AM_RAM
911911   AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(gaiden_videoram_w) AM_SHARE("videoram")
912   AM_RANGE(0x072000, 0x073fff) AM_READWRITE(gaiden_videoram2_r, gaiden_videoram2_w) AM_SHARE("videoram2")
913   AM_RANGE(0x074000, 0x075fff) AM_READWRITE(gaiden_videoram3_r, gaiden_videoram3_w) AM_SHARE("videoram3")
912   AM_RANGE(0x072000, 0x073fff) AM_RAM_WRITE(gaiden_videoram2_w) AM_SHARE("videoram2")
913   AM_RANGE(0x074000, 0x075fff) AM_RAM_WRITE(gaiden_videoram3_w) AM_SHARE("videoram3")
914914   AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram")
915915   AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
916916//  AM_RANGE(0x078800, 0x079fff) AM_RAM
r30697r30698
945945
946946   /* video hardware */
947947   MCFG_SCREEN_ADD("screen", RASTER)
948   MCFG_SCREEN_REFRESH_RATE(59.17)   /* verified on pcb */
948   MCFG_SCREEN_REFRESH_RATE(60)
949949   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
950950   MCFG_SCREEN_SIZE(32*8, 32*8)
951951   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
952   MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_gaiden)
952   MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_drgnbowl)
953   MCFG_SCREEN_PALETTE("palette")
953954
954955   MCFG_GFXDECODE_ADD("gfxdecode", "palette", mastninj)
955956   MCFG_PALETTE_ADD("palette", 4096)
956957   MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
957958
958   MCFG_DEVICE_ADD("spritegen", TECMO_SPRITE, 0) // should be different
959   /* NOT using Tecmo Sprite device - signifcant changes, maybe a clone of something else */
959960
960   MCFG_VIDEO_START_OVERRIDE(gaiden_state,mastninj)
961   MCFG_VIDEO_START_OVERRIDE(gaiden_state,drgnbowl)
961962
962963   /* sound hardware */
963964   MCFG_SPEAKER_STANDARD_MONO("mono")
r30697r30698
12271228   ROM_LOAD32_BYTE( "25.ic22",      0x040002, 0x10000, CRC(ca691635) SHA1(177f94a17cfaf67c764c2a2dff48475039207fae) )
12281229   ROM_LOAD32_BYTE( "27.ic20",      0x040003, 0x10000, CRC(2ae70f42) SHA1(aad89dbd0309a5e3a786aa028995b56859d5b5ff) )
12291230
1230   ROM_REGION( 0x100000, "gfx4", 0) /* these will need a further descramble to be in the same format as gaiden, although the sprites on the bootleg look different anyway */
1231   ROM_REGION( 0x100000, "gfx4", ROMREGION_INVERT) /* these will need a further descramble to be in the same format as gaiden, although the sprites on the bootleg look different anyway */
12311232   ROM_LOAD( "36.ic50",           0x000000, 0x10000, CRC(3c117e62) SHA1(dee45d6bbe053996e0b3faaba0293a273faf1ffa) )
12321233   ROM_LOAD( "37.ic49",           0x010000, 0x10000, CRC(f6d6422d) SHA1(933487b09d3bcff9714fb2469b3d751b38459cfd) )
12331234   ROM_LOAD( "38.ic48",           0x020000, 0x10000, CRC(642f06e7) SHA1(5b30b5029884b7eddcad201224a639f94ee27823) )
r30697r30698
16551656GAME( 1988, gaiden,    shadoww,  shadoww,  common, gaiden_state,   shadoww,  ROT0,   "Tecmo", "Ninja Gaiden (US)", GAME_SUPPORTS_SAVE )
16561657GAME( 1989, ryukendn,  shadoww,  shadoww,  common, gaiden_state,   shadoww,  ROT0,   "Tecmo", "Ninja Ryukenden (Japan, set 1)", GAME_SUPPORTS_SAVE )
16571658GAME( 1989, ryukendna, shadoww,  shadoww,  common, gaiden_state,   shadoww,  ROT0,   "Tecmo", "Ninja Ryukenden (Japan, set 2)", GAME_SUPPORTS_SAVE )
1658GAME( 1989, mastninj,  shadoww,  mastninj, common, gaiden_state,   mastninj, ROT0,   "bootleg", "Master Ninja (bootleg of Shadow Warriors / Ninja Gaiden)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // sprites need fixing, sound and yscroll too.
1659GAME( 1989, mastninj,  shadoww,  mastninj, common, gaiden_state,   mastninj, ROT0,   "bootleg", "Master Ninja (bootleg of Shadow Warriors / Ninja Gaiden)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // sprites need fixing, sound and yscroll too. - it is confirmed the curtains don't scroll on the pcb
16591660GAME( 1992, drgnbowl,  0,        drgnbowl, drgnbowl, gaiden_state, drgnbowl, ROT0,   "Nics",  "Dragon Bowl (set 1, encrypted program)", GAME_SUPPORTS_SAVE ) // Draogn Bowl is based on Ninja Gaiden code
16601661GAME( 1992, drgnbowla, drgnbowl, drgnbowl, drgnbowl, gaiden_state, drgnbowla,ROT0,   "Nics",  "Dragon Bowl (set 2, unencrypted program)", GAME_SUPPORTS_SAVE )
16611662
trunk/src/mame/includes/gaiden.h
r30697r30698
7575   DECLARE_WRITE16_MEMBER(gaiden_bgoffsety_w);
7676   DECLARE_WRITE16_MEMBER(gaiden_sproffsety_w);
7777   DECLARE_WRITE16_MEMBER(gaiden_videoram3_w);
78   DECLARE_READ16_MEMBER(gaiden_videoram3_r);
7978   DECLARE_WRITE16_MEMBER(gaiden_videoram2_w);
80   DECLARE_READ16_MEMBER(gaiden_videoram2_r);
8179   DECLARE_WRITE16_MEMBER(gaiden_videoram_w);
8280   DECLARE_DRIVER_INIT(raiga);
8381   DECLARE_DRIVER_INIT(drgnbowl);
r30697r30698
9391   DECLARE_MACHINE_RESET(raiga);
9492   DECLARE_VIDEO_START(gaiden);
9593   DECLARE_VIDEO_START(drgnbowl);
96   DECLARE_VIDEO_START(mastninj);
9794   DECLARE_VIDEO_START(raiga);
9895   UINT32 screen_update_gaiden(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
9996   UINT32 screen_update_drgnbowl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
trunk/src/mame/video/gaiden.c
r30697r30698
9393   m_screen->register_screen_bitmap(m_sprite_bitmap);
9494}
9595
96VIDEO_START_MEMBER(gaiden_state,mastninj)
97{
98   /* set up tile layers */
99   m_screen->register_screen_bitmap(m_tile_bitmap_bg);
100   m_screen->register_screen_bitmap(m_tile_bitmap_fg);
10196
102   m_background = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(gaiden_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32);
103   m_foreground = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(gaiden_state::get_fg_tile_info_raiga),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32);
104   m_text_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(gaiden_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
105
106//  m_background->set_transparent_pen(15);
107   m_foreground->set_transparent_pen(15);
108   m_text_layer->set_transparent_pen(15);
109
110   /* set up sprites */
111   m_screen->register_screen_bitmap(m_sprite_bitmap);
112
113   m_background->set_scrolldx(-248, 248);
114   m_foreground->set_scrolldx(-252, 252);
115}
116
11797VIDEO_START_MEMBER(gaiden_state,raiga)
11898{
11999   /* set up tile layers */
r30697r30698
235215   m_background->mark_tile_dirty(offset & 0x07ff);
236216}
237217
238READ16_MEMBER(gaiden_state::gaiden_videoram3_r)
239{
240   return m_videoram3[offset];
241}
242
243218WRITE16_MEMBER(gaiden_state::gaiden_videoram2_w)
244219{
245220   COMBINE_DATA(&m_videoram2[offset]);
246221   m_foreground->mark_tile_dirty(offset & 0x07ff);
247222}
248
249READ16_MEMBER(gaiden_state::gaiden_videoram2_r)
250{
251   return m_videoram2[offset];
252}
253
254223WRITE16_MEMBER(gaiden_state::gaiden_videoram_w)
255224{
256225   COMBINE_DATA(&m_videoram[offset]);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team