From e26914f3a3e114bca64105bc7f67003b457f202d Mon Sep 17 00:00:00 2001 From: MetalliC <0vetal0@gmail.com> Date: Sat, 7 Sep 2019 18:52:05 +0300 Subject: cps3.cpp: remove "imperfect graphics" flag, improve save states, fix eeprom size, document known issues --- src/mame/audio/cps3.cpp | 8 +++ src/mame/drivers/cps3.cpp | 145 +++++++++++++++++++++++++--------------------- 2 files changed, 86 insertions(+), 67 deletions(-) diff --git a/src/mame/audio/cps3.cpp b/src/mame/audio/cps3.cpp index 950c30e4fc2..7c15634738c 100644 --- a/src/mame/audio/cps3.cpp +++ b/src/mame/audio/cps3.cpp @@ -40,6 +40,14 @@ void cps3_sound_device::device_start() { /* Allocate the stream */ m_stream = stream_alloc(0, 2, clock() / 384); + + save_item(NAME(m_key)); + for (int i = 0; i < 16; i++) + { + save_item(NAME(m_voice[i].regs), i); + save_item(NAME(m_voice[i].pos), i); + save_item(NAME(m_voice[i].frac), i); + } } diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp index db415e1c957..da213bf506c 100644 --- a/src/mame/drivers/cps3.cpp +++ b/src/mame/drivers/cps3.cpp @@ -13,28 +13,37 @@ Sound emulation by Philip Bennett SCSI code by ElSemi -To-Do/Issues: +Known Issues: -Street Fighter 3 2nd Impact uses flipped tilemaps during flashing, emulate this. +Tilemap Global X/Y flip not emulated + Street Fighter 3 2nd Impact uses Y-flipped tilemaps during flashing. + Warzard uses X-flipped tilemaps during special effects. + +Sprite-list caching (presumable) + Warzard 2p mode, at next screen after characters select, + if holding player's button to speed up sequence - player's sprites will be distorted. + +Miscellaneous TO-DOs: DMA ack IRQ10 generation: Character and Palette DMAs speed is unknown, needs to be measured. Alpha Blending Effects - These are actually palette manipulation effects, not true blending. How the values are used is - not currently 100% understood. They are incorrect if you use player 2 in Warzard + These are actually palette manipulation effects, not true blending. + Verify them, current emulation might not be 100% accurate. -Linezoom - Is it used in games? May be enabled in jojo/jojoba dev.menu BG test (P2 btn4) +Tilemap Linezoom + Seems unused in games. May be enabled in jojo/jojoba dev.menu BG test (P2 btn4) Palette DMA effects Verify them, they might not be 100% accurate at the moment Verify Full Screen Zoom on real hardware - Which is which, x & y registers, how far can it zoom etc. + How far can it zoom etc. Verify CRT registers - Only SFIII2 changes them, for widescreen mode. What other modes are possible? + Actual Pixel clock for H Start and H Blank registers is unknown. It is not known which is base pixel clock + and how it affected by register 40C0080 bits. Sprite positioning glitches Some sprites are still in the wrong places, seems the placement of zooming sprites is imperfect @@ -42,8 +51,7 @@ Sprite positioning glitches the same occurs in the sf games. doesn't look like the origin is correct when zooming in all cases. Gaps in Sprite Zooming - probably caused by use of drawgfx instead of processing as a single large sprite, but could also be due to the - positioning of each part of the sprite. Warzard is confirmed to have gaps during some cut-scenes on real hardware. + Warzard is confirmed to have gaps during some cut-scenes on real hardware. --- @@ -962,6 +970,7 @@ void cps3_state::set_mame_colours(int colournum, u16 data, u32 fadeval) data = (data & 0x8000) | (r << 0) | (g << 5) | (b << 10); } + colournum &= 0x1ffff; m_colourram[colournum] = data; m_mame_colours[colournum] = rgb_t(pal5bit(r), pal5bit(g), pal5bit(b)); @@ -973,6 +982,7 @@ void cps3_state::set_mame_colours(int colournum, u16 data, u32 fadeval) void cps3_state::video_start() { m_char_ram = make_unique_clear(0x800000/4); + m_mame_colours = make_unique_clear(0x20000); m_ss_ram = make_unique_clear(0x8000); /* create the char set (gfx will then be updated dynamically from RAM) */ @@ -982,8 +992,6 @@ void cps3_state::video_start() m_gfxdecode->set_gfx(1, std::make_unique(m_palette, cps3_tiles16x16_layout, (u8 *)m_char_ram.get(), 0, m_palette->entries() / 64, 0)); m_gfxdecode->gfx(1)->set_granularity(64); - m_mame_colours = make_unique_clear(0x80000/2); - m_screenwidth = 384; // the renderbuffer can be twice the size of the screen, this allows us to handle framebuffer zoom values @@ -994,13 +1002,8 @@ void cps3_state::video_start() m_renderbuffer_bitmap.fill(0x3f, m_renderbuffer_clip); - save_item(NAME(m_ppu_gscroll)); - save_item(NAME(m_ss_hscroll)); - save_item(NAME(m_ss_vscroll)); - save_item(NAME(m_ss_pal_base)); - save_pointer(NAME(m_char_ram), 0x800000/4); - save_pointer(NAME(m_mame_colours), 0x80000/2); + save_pointer(NAME(m_mame_colours), 0x20000); save_pointer(NAME(m_ss_ram), 0x8000); } @@ -1191,7 +1194,7 @@ u32 cps3_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const /* these are the sizes to actually draw */ u32 const ysizedraw2 = ((value3 & 0x7f000000) >> 24) + 1; u32 const xsizedraw2 = ((value3 & 0x007f0000) >> 16) + 1; - //u8 unk = ((value3 & 0x00000300) >> 8); // unknown, 3 - sprites, 0 - tilemaps + //u8 unk = ((value3 & 0x00000300) >> 8); // 3 - sprites, 0 - tilemaps, enable X/Y zooms ? s8 ysize2 = ((value3 & 0x0000000c) >> 2); s8 xsize2 = ((value3 & 0x00000003) >> 0); @@ -2254,8 +2257,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(cps3_state::dma_interrupt) void cps3_state::machine_start() { - m_eeprom = std::make_unique(0x400/4); - subdevice("eeprom")->set_base(m_eeprom.get(), 0x400); + m_eeprom = std::make_unique(0x80/4); + subdevice("eeprom")->set_base(m_eeprom.get(), 0x80); save_item(NAME(m_cram_gfxflash_bank)); save_item(NAME(m_cram_bank)); @@ -2270,8 +2273,12 @@ void cps3_state::machine_start() save_item(NAME(m_chardma_other)); save_item(NAME(m_current_table_address)); save_item(NAME(m_dma_status)); + save_item(NAME(m_ppu_gscroll)); + save_item(NAME(m_ss_hscroll)); + save_item(NAME(m_ss_vscroll)); + save_item(NAME(m_ss_pal_base)); - save_pointer(NAME(m_eeprom), 0x400/4); + save_pointer(NAME(m_eeprom), 0x80/4); } @@ -2289,6 +2296,8 @@ void cps3_state::device_post_load() { // copy data from flashroms back into user regions + decrypt into regions we execute/draw from. copy_from_nvram(); + m_gfxdecode->gfx(0)->mark_all_dirty(); + m_gfxdecode->gfx(1)->mark_all_dirty(); } @@ -3839,15 +3848,17 @@ ROM_END *****************************************************************************************/ +#define GAME_FLAGS (MACHINE_SUPPORTS_SAVE) + /* Red Earth / Warzard */ // 961121 -GAME( 1996, redearth, 0, redearth, cps3_re, cps3_state, init_redearth, ROT0, "Capcom", "Red Earth (Euro 961121)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, warzard, redearth, redearth, cps3_re, cps3_state, init_redearth, ROT0, "Capcom", "Warzard (Japan 961121)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, redearth, 0, redearth, cps3_re, cps3_state, init_redearth, ROT0, "Capcom", "Red Earth (Euro 961121)", GAME_FLAGS ) +GAME( 1996, warzard, redearth, redearth, cps3_re, cps3_state, init_redearth, ROT0, "Capcom", "Warzard (Japan 961121)", GAME_FLAGS ) // 961023 -GAME( 1996, redearthr1, redearth, redearth, cps3_re, cps3_state, init_redearth, ROT0, "Capcom", "Red Earth (Euro 961023)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, warzardr1, redearth, redearth, cps3_re, cps3_state, init_redearth, ROT0, "Capcom", "Warzard (Japan 961023)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, redearthr1, redearth, redearth, cps3_re, cps3_state, init_redearth, ROT0, "Capcom", "Red Earth (Euro 961023)", GAME_FLAGS ) +GAME( 1996, warzardr1, redearth, redearth, cps3_re, cps3_state, init_redearth, ROT0, "Capcom", "Warzard (Japan 961023)", GAME_FLAGS ) /* Street Fighter III: New Generation */ @@ -3858,13 +3869,13 @@ GAME( 1996, warzardr1, redearth, redearth, cps3_re, cps3_state, init_redeart // not dumped // 970204 -GAME( 1997, sfiii, 0, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Euro 970204)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, sfiiiu, sfiii, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (USA 970204)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, sfiiia, sfiii, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia 970204)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, sfiiij, sfiii, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Japan 970204)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, sfiiih, sfiii, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Hispanic 970204)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, sfiiin, sfiii, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia 970204, NO CD, bios set 1)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, sfiiina, sfiii, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia 970204, NO CD, bios set 2)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, sfiii, 0, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Euro 970204)", GAME_FLAGS ) +GAME( 1997, sfiiiu, sfiii, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (USA 970204)", GAME_FLAGS ) +GAME( 1997, sfiiia, sfiii, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia 970204)", GAME_FLAGS ) +GAME( 1997, sfiiij, sfiii, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Japan 970204)", GAME_FLAGS ) +GAME( 1997, sfiiih, sfiii, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Hispanic 970204)", GAME_FLAGS ) +GAME( 1997, sfiiin, sfiii, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia 970204, NO CD, bios set 1)", GAME_FLAGS ) +GAME( 1997, sfiiina, sfiii, sfiii, cps3, cps3_state, init_sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia 970204, NO CD, bios set 2)", GAME_FLAGS ) /* Street Fighter III 2nd Impact: Giant Attack */ @@ -3872,65 +3883,65 @@ GAME( 1997, sfiiina, sfiii, sfiii, cps3, cps3_state, init_sfiii, // not dumped // 970930 -GAMEL(1997, sfiii2, 0, sfiii2, cps3, cps3_state, init_sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (USA 970930)", MACHINE_IMPERFECT_GRAPHICS, layout_sfiii2 ) // layout is for widescreen support -GAMEL(1997, sfiii2j, sfiii2, sfiii2, cps3, cps3_state, init_sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Japan 970930)", MACHINE_IMPERFECT_GRAPHICS, layout_sfiii2 ) -GAMEL(1997, sfiii2n, sfiii2, sfiii2, cps3, cps3_state, init_sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Asia 970930, NO CD)", MACHINE_IMPERFECT_GRAPHICS, layout_sfiii2 ) +GAMEL(1997, sfiii2, 0, sfiii2, cps3, cps3_state, init_sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (USA 970930)", GAME_FLAGS, layout_sfiii2 ) // layout is for widescreen support +GAMEL(1997, sfiii2j, sfiii2, sfiii2, cps3, cps3_state, init_sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Japan 970930)", GAME_FLAGS, layout_sfiii2 ) +GAMEL(1997, sfiii2n, sfiii2, sfiii2, cps3, cps3_state, init_sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Asia 970930, NO CD)", GAME_FLAGS, layout_sfiii2 ) /* JoJo's Venture / JoJo no Kimyou na Bouken */ // 990128 -GAME( 1998, jojo, 0, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo's Venture (USA 990128)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, jojoj, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo no Kimyou na Bouken (Japan 990128)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, jojon, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo's Venture (Asia 990128, NO CD)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, jojo, 0, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo's Venture (USA 990128)", GAME_FLAGS ) +GAME( 1998, jojoj, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo no Kimyou na Bouken (Japan 990128)", GAME_FLAGS ) +GAME( 1998, jojon, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo's Venture (Asia 990128, NO CD)", GAME_FLAGS ) // 990108 -GAME( 1998, jojor1, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo's Venture (USA 990108)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, jojojr1, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo no Kimyou na Bouken (Japan 990108)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, jojonr1, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo's Venture (Asia 990108, NO CD)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, jojor1, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo's Venture (USA 990108)", GAME_FLAGS ) +GAME( 1998, jojojr1, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo no Kimyou na Bouken (Japan 990108)", GAME_FLAGS ) +GAME( 1998, jojonr1, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo's Venture (Asia 990108, NO CD)", GAME_FLAGS ) // 981202 -GAME( 1998, jojor2, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo's Venture (USA 981202)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, jojojr2, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo no Kimyou na Bouken (Japan 981202)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, jojonr2, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo's Venture (Asia 981202, NO CD)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, jojor2, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo's Venture (USA 981202)", GAME_FLAGS ) +GAME( 1998, jojojr2, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo no Kimyou na Bouken (Japan 981202)", GAME_FLAGS ) +GAME( 1998, jojonr2, jojo, jojo, cps3_jojo, cps3_state, init_jojo, ROT0, "Capcom", "JoJo's Venture (Asia 981202, NO CD)", GAME_FLAGS ) /* Street Fighter III 3rd Strike: Fight for the Future */ // 990608 -GAME( 1999, sfiii3, 0, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Euro 990608)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, sfiii3u, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA 990608)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, sfiii3j, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990608)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, sfiii3n, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990608, NO CD)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, sfiii3, 0, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Euro 990608)", GAME_FLAGS ) +GAME( 1999, sfiii3u, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA 990608)", GAME_FLAGS ) +GAME( 1999, sfiii3j, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990608)", GAME_FLAGS ) +GAME( 1999, sfiii3n, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990608, NO CD)", GAME_FLAGS ) // 990512 -GAME( 1999, sfiii3r1, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Euro 990512)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, sfiii3ur1, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA 990512)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, sfiii3jr1, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990512)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, sfiii3nr1, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990512, NO CD)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, sfiii3r1, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Euro 990512)", GAME_FLAGS ) +GAME( 1999, sfiii3ur1, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA 990512)", GAME_FLAGS ) +GAME( 1999, sfiii3jr1, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990512)", GAME_FLAGS ) +GAME( 1999, sfiii3nr1, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990512, NO CD)", GAME_FLAGS ) /* JoJo's Bizarre Adventure / JoJo no Kimyou na Bouken: Mirai e no Isan */ // 990927 -GAME( 1999, jojoba, 0, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, jojoban, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927, NO CD)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, jojobane, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990927, NO CD)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, jojoba, 0, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927)", GAME_FLAGS ) +GAME( 1999, jojoban, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927, NO CD)", GAME_FLAGS ) +GAME( 1999, jojobane, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990927, NO CD)", GAME_FLAGS ) // 990913 -GAME( 1999, jojobar1, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, jojobanr1, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913, NO CD)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, jojobaner1, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990913, NO CD)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, jojobar1, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913)", GAME_FLAGS ) +GAME( 1999, jojobanr1, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913, NO CD)", GAME_FLAGS ) +GAME( 1999, jojobaner1, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990913, NO CD)", GAME_FLAGS ) // bootlegs, hold START1 during bootup to change games // newest revision, fixes some issues with Warzard decryption. -GAME( 1999, cps3boot, 0, sfiii3, cps3, cps3_state, init_cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (V4)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, cps3boota, cps3boot, sfiii3, cps3, cps3_state, init_sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (V5)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, cps3boot, 0, sfiii3, cps3, cps3_state, init_cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (V4)", GAME_FLAGS ) +GAME( 1999, cps3boota, cps3boot, sfiii3, cps3, cps3_state, init_sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (V5)", GAME_FLAGS ) -GAME( 1999, cps3booto, cps3boot, sfiii3, cps3, cps3_state, init_cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (older)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, cps3bootao, cps3boot, sfiii3, cps3, cps3_state, init_sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (older)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, cps3booto, cps3boot, sfiii3, cps3, cps3_state, init_cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (older)", GAME_FLAGS ) +GAME( 1999, cps3bootao, cps3boot, sfiii3, cps3, cps3_state, init_sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (older)", GAME_FLAGS ) // this doesn't play 2nd Impact despite it being listed. 2nd Impact uses separate data/code encryption and can't be decrypted cleanly for a standard SH2. Selecting it just flashes in a copy of 3rd Strike with the 2nd Impact loading screen -GAME( 1999, cps3booto2, cps3boot, sfiii3, cps3, cps3_state, init_cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (oldest) (New Generation, 3rd Strike, JoJo's Venture, JoJo's Bizarre Adventure and Red Earth only)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, cps3booto2, cps3boot, sfiii3, cps3, cps3_state, init_cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (oldest) (New Generation, 3rd Strike, JoJo's Venture, JoJo's Bizarre Adventure and Red Earth only)", GAME_FLAGS ) // this does not play Red Earth or the 2 Jojo games. New Generation and 3rd Strike have been heavily modified to work with the separate code/data encryption a dead cart / 2nd Impact cart has. Selecting the other games will give an 'invalid CD' message. -GAME( 1999, cps3bootao2, cps3boot, sfiii3, cps3, cps3_state, init_sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (oldest) (New Generation, 2nd Impact and 3rd Strike only)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, cps3bootao2, cps3boot, sfiii3, cps3, cps3_state, init_sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (oldest) (New Generation, 2nd Impact and 3rd Strike only)", GAME_FLAGS ) // these are test bootleg CDs for running 2nd Impact on a standard SH2 -GAME( 1999, cps3bs32, cps3boot, sfiii3, cps3, cps3_state, init_cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, V3)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, cps3bs32a, cps3boot, sfiii3, cps3, cps3_state, init_cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, older)", MACHINE_IMPERFECT_GRAPHICS ) // older / buggier hack +GAME( 1999, cps3bs32, cps3boot, sfiii3, cps3, cps3_state, init_cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, V3)", GAME_FLAGS ) +GAME( 1999, cps3bs32a, cps3boot, sfiii3, cps3, cps3_state, init_cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, older)", GAME_FLAGS ) // older / buggier hack -- cgit v1.2.3