trunk/src/mame/drivers/gaiden.c
| r30697 | r30698 | |
| 382 | 382 | AM_RANGE(0x000000, 0x03ffff) AM_ROM |
| 383 | 383 | AM_RANGE(0x060000, 0x063fff) AM_RAM |
| 384 | 384 | 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") |
| 387 | 387 | AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram") |
| 388 | 388 | AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| 389 | 389 | AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM") |
| r30697 | r30698 | |
| 690 | 690 | |
| 691 | 691 | static const gfx_layout mastninj_spritelayout = |
| 692 | 692 | { |
| 693 | | 8,8, /* tile size */ |
| 693 | 16,16, /* tile size */ |
| 694 | 694 | RGN_FRAC(1,4), /* number of tiles */ |
| 695 | 695 | 4, /* 4 bits per pixel */ |
| 696 | 696 | { 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 */ |
| 700 | 700 | }; |
| 701 | 701 | |
| 702 | 702 | static GFXDECODE_START( mastninj ) |
| 703 | 703 | GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0x000, 16 ) /* tiles 8x8 */ |
| 704 | 704 | GFXDECODE_ENTRY( "gfx2", 0, mastninj_tile2layout, 0x300, 16 ) /* tiles 16x16 */ |
| 705 | 705 | 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 */ |
| 707 | 707 | GFXDECODE_END |
| 708 | 708 | |
| 709 | 709 | static const gfx_layout drgnbowl_tile2layout = |
| r30697 | r30698 | |
| 909 | 909 | AM_RANGE(0x000000, 0x03ffff) AM_ROM |
| 910 | 910 | AM_RANGE(0x060000, 0x063fff) AM_RAM |
| 911 | 911 | 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") |
| 914 | 914 | AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram") |
| 915 | 915 | AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| 916 | 916 | // AM_RANGE(0x078800, 0x079fff) AM_RAM |
| r30697 | r30698 | |
| 945 | 945 | |
| 946 | 946 | /* video hardware */ |
| 947 | 947 | MCFG_SCREEN_ADD("screen", RASTER) |
| 948 | | MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */ |
| 948 | MCFG_SCREEN_REFRESH_RATE(60) |
| 949 | 949 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 950 | 950 | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 951 | 951 | 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") |
| 953 | 954 | |
| 954 | 955 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", mastninj) |
| 955 | 956 | MCFG_PALETTE_ADD("palette", 4096) |
| 956 | 957 | MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR) |
| 957 | 958 | |
| 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 */ |
| 959 | 960 | |
| 960 | | MCFG_VIDEO_START_OVERRIDE(gaiden_state,mastninj) |
| 961 | MCFG_VIDEO_START_OVERRIDE(gaiden_state,drgnbowl) |
| 961 | 962 | |
| 962 | 963 | /* sound hardware */ |
| 963 | 964 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| r30697 | r30698 | |
| 1227 | 1228 | ROM_LOAD32_BYTE( "25.ic22", 0x040002, 0x10000, CRC(ca691635) SHA1(177f94a17cfaf67c764c2a2dff48475039207fae) ) |
| 1228 | 1229 | ROM_LOAD32_BYTE( "27.ic20", 0x040003, 0x10000, CRC(2ae70f42) SHA1(aad89dbd0309a5e3a786aa028995b56859d5b5ff) ) |
| 1229 | 1230 | |
| 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 */ |
| 1231 | 1232 | ROM_LOAD( "36.ic50", 0x000000, 0x10000, CRC(3c117e62) SHA1(dee45d6bbe053996e0b3faaba0293a273faf1ffa) ) |
| 1232 | 1233 | ROM_LOAD( "37.ic49", 0x010000, 0x10000, CRC(f6d6422d) SHA1(933487b09d3bcff9714fb2469b3d751b38459cfd) ) |
| 1233 | 1234 | ROM_LOAD( "38.ic48", 0x020000, 0x10000, CRC(642f06e7) SHA1(5b30b5029884b7eddcad201224a639f94ee27823) ) |
| r30697 | r30698 | |
| 1655 | 1656 | GAME( 1988, gaiden, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Gaiden (US)", GAME_SUPPORTS_SAVE ) |
| 1656 | 1657 | GAME( 1989, ryukendn, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Ryukenden (Japan, set 1)", GAME_SUPPORTS_SAVE ) |
| 1657 | 1658 | GAME( 1989, ryukendna, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Ryukenden (Japan, set 2)", GAME_SUPPORTS_SAVE ) |
| 1658 | | GAME( 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. |
| 1659 | GAME( 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 |
| 1659 | 1660 | GAME( 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 |
| 1660 | 1661 | GAME( 1992, drgnbowla, drgnbowl, drgnbowl, drgnbowl, gaiden_state, drgnbowla,ROT0, "Nics", "Dragon Bowl (set 2, unencrypted program)", GAME_SUPPORTS_SAVE ) |
| 1661 | 1662 | |
trunk/src/mame/video/gaiden.c
| r30697 | r30698 | |
| 93 | 93 | m_screen->register_screen_bitmap(m_sprite_bitmap); |
| 94 | 94 | } |
| 95 | 95 | |
| 96 | | VIDEO_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); |
| 101 | 96 | |
| 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 | | |
| 117 | 97 | VIDEO_START_MEMBER(gaiden_state,raiga) |
| 118 | 98 | { |
| 119 | 99 | /* set up tile layers */ |
| r30697 | r30698 | |
| 235 | 215 | m_background->mark_tile_dirty(offset & 0x07ff); |
| 236 | 216 | } |
| 237 | 217 | |
| 238 | | READ16_MEMBER(gaiden_state::gaiden_videoram3_r) |
| 239 | | { |
| 240 | | return m_videoram3[offset]; |
| 241 | | } |
| 242 | | |
| 243 | 218 | WRITE16_MEMBER(gaiden_state::gaiden_videoram2_w) |
| 244 | 219 | { |
| 245 | 220 | COMBINE_DATA(&m_videoram2[offset]); |
| 246 | 221 | m_foreground->mark_tile_dirty(offset & 0x07ff); |
| 247 | 222 | } |
| 248 | | |
| 249 | | READ16_MEMBER(gaiden_state::gaiden_videoram2_r) |
| 250 | | { |
| 251 | | return m_videoram2[offset]; |
| 252 | | } |
| 253 | | |
| 254 | 223 | WRITE16_MEMBER(gaiden_state::gaiden_videoram_w) |
| 255 | 224 | { |
| 256 | 225 | COMBINE_DATA(&m_videoram[offset]); |