diff --git a/src/mame/drivers/pgm2.cpp b/src/mame/drivers/pgm2.cpp index 311f3dc9897..c34c364dfaf 100644 --- a/src/mame/drivers/pgm2.cpp +++ b/src/mame/drivers/pgm2.cpp @@ -320,6 +320,33 @@ WRITE32_MEMBER(pgm2_state::mcu_w) mcu_command(space, false); } +WRITE16_MEMBER(pgm2_state::unk30120014_w) +{ + if (offset == 0) + { + // 0/1 toggles (maybe sprite dma triggers?) + } + else + { + // interesting data + //printf("unk30120014_w %d %04x\n", offset, data); + } +} + +WRITE16_MEMBER(pgm2_state::unk30120018_w) +{ + if (offset == 0) + { + // writes 1 (maybe sprite enable) + } + else + { + // writes 0 (rarely) + //printf("unk30120018_w %d %04x\n", offset, data); + } +} + + static ADDRESS_MAP_START( pgm2_map, AS_PROGRAM, 32, pgm2_state ) AM_RANGE(0x00000000, 0x00003fff) AM_ROM //AM_REGION("user1", 0x00000) // internal ROM @@ -357,6 +384,8 @@ static ADDRESS_MAP_START( pgm2_map, AS_PROGRAM, 32, pgm2_state ) AM_RANGE(0x30120000, 0x30120003) AM_RAM AM_SHARE("bgscroll") // scroll AM_RANGE(0x30120008, 0x3012000b) AM_RAM AM_SHARE("fgscroll") AM_RANGE(0x3012000c, 0x3012000f) AM_RAM AM_SHARE("vidmode") + AM_RANGE(0x30120014, 0x30120017) AM_WRITE16(unk30120014_w, 0xffffffff) + AM_RANGE(0x30120018, 0x3012001b) AM_WRITE16(unk30120018_w, 0xffffffff) AM_RANGE(0x30120030, 0x30120033) AM_WRITE16(share_bank_w, 0xffff0000) AM_RANGE(0x30120038, 0x3012003b) AM_WRITE(sprite_encryption_w) // there are other 0x301200xx regs @@ -576,8 +605,7 @@ MACHINE_CONFIG_END // not strictly needed as the video code supports changing on the fly, but makes recording easier etc. static MACHINE_CONFIG_DERIVED( pgm2_lores, pgm2 ) MCFG_SCREEN_MODIFY("screen") - // note, +8 to y position too, could be a sprite reg to move sprites intead - MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0+8, 224+8-1) + MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1) MACHINE_CONFIG_END @@ -869,7 +897,11 @@ all others: SPANSION S99-50070 \ ROM_REGION( 0x08000000, "ymz774", ROMREGION_ERASEFF ) /* ymz770 */ \ ROM_LOAD16_WORD_SWAP( "ig-d3_wave0.u12", 0x00000000, 0x4000000, CRC(edf2332d) SHA1(7e01c7e03e515814d7de117c265c3668d32842fa) ) \ - ROM_LOAD16_WORD_SWAP( "ig-d3_wave1.u11", 0x04000000, 0x4000000, CRC(62321b20) SHA1(a388c8a2489430fbe92fb26b3ef81c66ce97f318) ) + ROM_LOAD16_WORD_SWAP( "ig-d3_wave1.u11", 0x04000000, 0x4000000, CRC(62321b20) SHA1(a388c8a2489430fbe92fb26b3ef81c66ce97f318) ) \ + \ + ROM_REGION( 0x10000, "sram", 0 ) \ + ROM_LOAD( "kof98umh_sram", 0x00000000, 0x10000, CRC(60460ed9) SHA1(55cd8de37cee04ff7ad940fb52f8fb8db042c26e) ) + ROM_START( kof98umh ) ROM_REGION( 0x04000, "maincpu", 0 ) @@ -1126,7 +1158,7 @@ GAME( 2011, kov3_102, kov3, pgm2, pgm2, pgm2_state, kov3_102, ROT0, GAME( 2011, kov3_100, kov3, pgm2, pgm2, pgm2_state, kov3_100, ROT0, "IGS", "Knights of Valour 3 (V100, China)", MACHINE_NOT_WORKING ) // King of Fighters '98: Ultimate Match Hero -GAME( 2009, kof98umh, 0, pgm2_lores, pgm2, pgm2_state, kof98umh, ROT0, "IGS / SNK Playmore / NewChannel", "The King of Fighters '98: Ultimate Match HERO (China, V100, 09-08-23)", MACHINE_NOT_WORKING ) +GAME( 2009, kof98umh, 0, pgm2_lores, pgm2, pgm2_state, kof98umh, ROT0, "IGS / SNK Playmore / New Channel", "The King of Fighters '98: Ultimate Match HERO (China, V100, 09-08-23)", MACHINE_IMPERFECT_SOUND ) // Jigsaw World Arena diff --git a/src/mame/includes/pgm2.h b/src/mame/includes/pgm2.h index d3052a22b3f..a93fa8ccab7 100644 --- a/src/mame/includes/pgm2.h +++ b/src/mame/includes/pgm2.h @@ -55,7 +55,9 @@ public: DECLARE_WRITE16_MEMBER(share_bank_w); DECLARE_READ8_MEMBER(shareram_r); DECLARE_WRITE8_MEMBER(shareram_w); - + DECLARE_WRITE16_MEMBER(unk30120014_w); + DECLARE_WRITE16_MEMBER(unk30120018_w); + DECLARE_READ32_MEMBER(orleg2_speedup_r); DECLARE_READ32_MEMBER(kov2nl_speedup_r); DECLARE_READ32_MEMBER(kof98umh_speedup_r); diff --git a/src/mame/video/pgm2.cpp b/src/mame/video/pgm2.cpp index 8f416b469c8..a1e3ec0a8cc 100644 --- a/src/mame/video/pgm2.cpp +++ b/src/mame/video/pgm2.cpp @@ -266,8 +266,8 @@ uint32_t pgm2_state::screen_update_pgm2(screen_device &screen, bitmap_rgb32 &bit if (mode) m_screen->set_visible_area(0, 448 - 1, 0, 224 - 1); - else // note, +8 to y position too, could be a sprite reg to move sprites intead - m_screen->set_visible_area(0, 320 - 1, 8, 224 + 8 - 1); + else + m_screen->set_visible_area(0, 320 - 1, 0, 240 - 1); m_fg_tilemap->set_scrollx(0, m_fgscroll[0] & 0xffff);