add support for a China internal ROM to kov2p sets [XingXing]

new clones
Knights of Valour Super Heroes Plus / Sangoku Senki Super Heroes Plus (ver. 101) [XingXing]

also a bit more on puzzli2
This commit is contained in:
David Haywood 2013-08-03 14:19:54 +00:00
parent 8a94f6a663
commit 2935400935
4 changed files with 108 additions and 65 deletions

View File

@ -2411,7 +2411,7 @@ ROM_START( kov2p )
ROM_LOAD16_WORD_SWAP( "u8-27322.rom", 0x100000, 0x400000, CRC(3a2cc0de) SHA1(d7511478b34bfb03b2fb5b8268b60502d05b9414) )
ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
ROM_LOAD( "kov2p_igs027a.bin", 0x000000, 0x04000, BAD_DUMP CRC(e0d7679f) SHA1(e1c2d127eba4ddbeb8ad173c55b90ac1467e1ca8) ) // NOT for this version, works with a hack
ROM_LOAD( "kov2p_igs027a_china.bin", 0x000000, 0x04000, CRC(19a0bd95) SHA1(83e9f22512832a51d41c588debe8be7adb3b1df7) )
ROM_REGION32_LE( 0x400000, "user1", 0 ) /* Protection Data (encrypted external ARM data) */
ROM_LOAD( "v200-16.rom", 0x000000, 0x200000, CRC(16a0c11f) SHA1(ce449cef76ebd5657d49b57951e2eb0f132e203e) )
@ -2442,7 +2442,7 @@ ROM_START( kov2p204 )
ROM_LOAD16_WORD_SWAP( "v204-32m.rom", 0x100000, 0x400000, CRC(583e0650) SHA1(2e5656dd9c6cba9f84af9baa3f5f70cdccf9db47) )
ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
ROM_LOAD( "kov2p_igs027a.bin", 0x000000, 0x04000, BAD_DUMP CRC(e0d7679f) SHA1(e1c2d127eba4ddbeb8ad173c55b90ac1467e1ca8) ) // NOT for this version, works with a hack
ROM_LOAD( "kov2p_igs027a_china.bin", 0x000000, 0x04000, CRC(19a0bd95) SHA1(83e9f22512832a51d41c588debe8be7adb3b1df7) )
ROM_REGION32_LE( 0x400000, "user1", 0 ) /* Protection Data (encrypted external ARM data) */
ROM_LOAD( "v200-16.rom", 0x000000, 0x200000, CRC(16a0c11f) SHA1(ce449cef76ebd5657d49b57951e2eb0f132e203e) )
@ -2473,7 +2473,7 @@ ROM_START( kov2p202 )
ROM_LOAD16_WORD_SWAP( "v202.bin", 0x100000, 0x400000, CRC(e9b5aa0c) SHA1(39a776c8501e8557d305cfa56c997f9adeb6bcd2) )
ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
ROM_LOAD( "kov2p_igs027a.bin", 0x000000, 0x04000, BAD_DUMP CRC(e0d7679f) SHA1(e1c2d127eba4ddbeb8ad173c55b90ac1467e1ca8) ) // NOT for this version, works with a hack
ROM_LOAD( "kov2p_igs027a_china.bin", 0x000000, 0x04000, CRC(19a0bd95) SHA1(83e9f22512832a51d41c588debe8be7adb3b1df7) )
ROM_REGION32_LE( 0x400000, "user1", 0 ) /* Protection Data (encrypted external ARM data) */
ROM_LOAD( "v200-16.rom", 0x000000, 0x200000, CRC(16a0c11f) SHA1(ce449cef76ebd5657d49b57951e2eb0f132e203e) )
@ -3304,6 +3304,33 @@ ROM_START( oldsplus )
ROM_END
ROM_START( kovshp )
ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
PGM_68K_BIOS
ROM_LOAD16_WORD_SWAP( "p0600h_101.rom", 0x100000, 0x400000, CRC(e1d89a19) SHA1(30e11c145652d03464b14d3cd09e4f35fff6120e) )
ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, BAD_DUMP CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) ) // this is the kovsh ARM rom, we intercept and modify protection calls
ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
PGM_VIDEO_BIOS
ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
ROM_REGION( 0x2000000, "sprcol", 0 ) /* Sprite Colour Data */
ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) ) // FIXED BITS (xxxxxxxx1xxxxxxx)
ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) ) // FIXED BITS (xxxxxxxx1xxxxxxx)
ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) ) // FIXED BITS (xxxxxxxx1xxxxxxx)
ROM_LOAD( "a0540.rom", 0x1800000, 0x0800000, CRC(4fd3413e) SHA1(5e8f3e421342bf558c77e59635f9b5d713e825c2) )
ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
ROM_LOAD( "b0540.rom", 0x0800000, 0x0800000, CRC(60999757) SHA1(118cf058e67858958bcb931e14f5d160c7de87cc) )
ROM_REGION( 0x800000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
PGM_AUDIO_BIOS
ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
ROM_END
ROM_START( kovshpa )
ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
PGM_68K_BIOS
ROM_LOAD16_WORD_SWAP( "p0600h.rom", 0x100000, 0x400000, CRC(e251e8e4) SHA1(af5b7c81632a39e1450d932951bed634c76b84e8) )
@ -3330,6 +3357,8 @@ ROM_START( kovshp )
ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
ROM_END
ROM_START( kovytzy )
ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
PGM_68K_BIOS
@ -3983,10 +4012,10 @@ GAME( 2000, kov2102, kov2, pgm_arm_type2, kov2, pgm_arm_type2_state
GAME( 2000, kov2101, kov2, pgm_arm_type2, kov2, pgm_arm_type2_state, kov2, ROT0, "IGS", "Knights of Valour 2 / Sangoku Senki 2 (ver. 101, 101, 100HK)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // 11/29/00 11:03:08 V100 (Ext. Arm V100, Int. Arm V100HK)
GAME( 2000, kov2100, kov2, pgm_arm_type2, kov2, pgm_arm_type2_state, kov2, ROT0, "IGS", "Knights of Valour 2 / Sangoku Senki 2 (ver. 100, 100, 100HK)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // 11/29/00 11:03:08 V100 (Ext. Arm V100, Int. Arm V100HK)
// region provided by internal ARM rom
GAME( 2001, kov2p, pgm, pgm_arm_type2, kov2, pgm_arm_type2_state, kov2p, ROT0, "IGS", "Knights of Valour 2 Plus - Nine Dragons / Sangoku Senki 2 Plus - Nine Dragons (ver. M205XX)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */
GAME( 2001, kov2p204, kov2p, pgm_arm_type2, kov2, pgm_arm_type2_state, kov2p, ROT0, "IGS", "Knights of Valour 2 Plus - Nine Dragons / Sangoku Senki 2 Plus - Nine Dragons (ver. M204XX)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */
GAME( 2001, kov2p202, kov2p, pgm_arm_type2, kov2, pgm_arm_type2_state, kov2p, ROT0, "IGS", "Knights of Valour 2 Plus - Nine Dragons / Sangoku Senki 2 Plus - Nine Dragons (ver. M202XX)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */
// region provided by internal ARM rom (we only have a China internal ROM and it doesn't seem to write the region code at all even if the 68k reads it, maybe this was only released in China?)
GAME( 2001, kov2p, pgm, pgm_arm_type2, pgm, pgm_arm_type2_state, kov2p, ROT0, "IGS", "Knights of Valour 2 Plus - Nine Dragons / Sangoku Senki 2 Plus - Nine Dragons (ver. M205XX, 200, 100CN)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
GAME( 2001, kov2p204, kov2p, pgm_arm_type2, pgm, pgm_arm_type2_state, kov2p, ROT0, "IGS", "Knights of Valour 2 Plus - Nine Dragons / Sangoku Senki 2 Plus - Nine Dragons (ver. M204XX, 200, 100CN)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
GAME( 2001, kov2p202, kov2p, pgm_arm_type2, pgm, pgm_arm_type2_state, kov2p, ROT0, "IGS", "Knights of Valour 2 Plus - Nine Dragons / Sangoku Senki 2 Plus - Nine Dragons (ver. M202XX, 200, 100CN)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
// region provided by internal ARM rom
GAME( 2001, martmast, pgm, pgm_arm_type2, martmast, pgm_arm_type2_state, martmast, ROT0, "IGS", "Martial Masters (ver. 104, 102, 102US)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // 68k V104, Ext Arm 102, Int Arm 102US
@ -4101,7 +4130,8 @@ GAME( 2004, oldsplus, pgm, pgm_arm_type1_sim, oldsplus, pgm_arm_type1_
// the game logo remains stuck on the screen during gameplay, but videos of the original board suggest this happens on real hardware as well
// if the internal ROM can't be extracted (likely case, execute only area and NO chance of custom code execution at all due to lack of external ROM) then a reference simulator should probably be written based on the actual
// kovsh code, tweaked based on tests done with this specific board to catch any different behaviors. These all seem to be for China only, they don't work as expected when set to other regions.
GAME( 2004, kovshp, pgm, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovshp, ROT0, "IGS", "Knights of Valour Super Heroes Plus / Sangoku Senki Super Heroes Plus (ver. 100)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */
GAME( 2004, kovshp, pgm, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovshp, ROT0, "IGS", "Knights of Valour Super Heroes Plus / Sangoku Senki Super Heroes Plus (ver. 101)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */
GAME( 2004, kovshpa, kovshp, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovshp, ROT0, "IGS", "Knights of Valour Super Heroes Plus / Sangoku Senki Super Heroes Plus (ver. 100)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */
// Seems to be an earlier version, uses same PCB as kovsh.
GAME( 1999, kovytzy, pgm, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovshp, ROT0, "IGS", "Knights of Valour: Yi Tong Zhong Yuan / Sangoku Senki: Yi Tong Zhong Yuan (ver. 201, China)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */
// this bootleg is very close to kovshp

View File

@ -2040,6 +2040,7 @@ int pgm_arm_type1_state::puzzli2_take_leveldata_value(UINT8 datvalue)
UINT16 object_value;
// some of these might be due to bad decrypt values in the table
////////////////////// regular fish group
if (rawvalue==0x00) {object_value = 0x0100; printf("%02x <- fish type 0\n", rawvalue);}
else if (rawvalue==0x01) {object_value = 0x0101; printf("%02x <- fish type 1\n", rawvalue);}
else if (rawvalue==0x02) {object_value = 0x0102; printf("%02x <- fish type 2\n", rawvalue);}
@ -2048,16 +2049,17 @@ int pgm_arm_type1_state::puzzli2_take_leveldata_value(UINT8 datvalue)
else if (rawvalue==0x05) {object_value = 0x0105; printf("%02x <- fish type 5\n", rawvalue);}
else if (rawvalue==0x06) {object_value = 0x0106; printf("%02x <- fish type 6\n", rawvalue);}
else if (rawvalue==0x07) {object_value = 0x0107; printf("%02x <- fish type 7\n", rawvalue);}
else if (rawvalue==0x08) {object_value = 0x0100; printf("%02x <- unk object ?? 08\n", rawvalue);}
else if (rawvalue==0x0b) {object_value = 0x0100; printf("%02x <- unk object ?? 0b\n", rawvalue);}
else if (rawvalue==0x0c) {object_value = 0x0100; printf("%02x <- unk object ?? 0c\n", rawvalue);}
else if (rawvalue==0x0d) {object_value = 0x0100; printf("%02x <- unk object ?? 0d\n", rawvalue);}
else if (rawvalue==0x0e) {object_value = 0x0100; printf("%02x <- unk object ?? 0e\n", rawvalue);}
else if (rawvalue==0x0f) {object_value = 0x0100; printf("%02x <- unk object ?? 0f\n", rawvalue);}
else if (rawvalue==0x10) {object_value = 0x0100; printf("%02x <- unk object ?? 10\n", rawvalue);}
else if (rawvalue==0x11) {object_value = 0x0100; printf("%02x <- unk object ?? 11\n", rawvalue);}
else if (rawvalue==0x08) {object_value = 0x0108; printf("%02x <- fish type 8\n", rawvalue);} // usually used to have the 2nd stripey type in a level
// 09?
// 0a?
else if (rawvalue==0x0b) {object_value = 0xffff; printf("%02x <- unk object ?? 0b\n", rawvalue);}
else if (rawvalue==0x0c) {object_value = 0xffff; printf("%02x <- unk object ?? 0c\n", rawvalue);}
else if (rawvalue==0x0d) {object_value = 0xffff; printf("%02x <- unk object ?? 0d\n", rawvalue);}
else if (rawvalue==0x0e) {object_value = 0xffff; printf("%02x <- unk object ?? 0e\n", rawvalue);}
else if (rawvalue==0x0f) {object_value = 0xffff; printf("%02x <- unk object ?? 0f\n", rawvalue);}
else if (rawvalue==0x10) {object_value = 0xffff; printf("%02x <- unk object ?? 10\n", rawvalue);}
////////////////////// fish in bubble group
else if (rawvalue==0x11) {object_value = 0xffff; printf("%02x <- unk object ?? 11\n", rawvalue);} // bubble type 0?
else if (rawvalue==0x12) {object_value = 0x0121; printf("%02x <- fish in bubble (type 1?)\n", rawvalue);}
else if (rawvalue==0x13) {object_value = 0x0122; printf("%02x <- fish in bubble (type 2?)\n", rawvalue);}
else if (rawvalue==0x14) {object_value = 0x0123; printf("%02x <- fish in bubble (type 3?)??\n", rawvalue);}
@ -2066,28 +2068,52 @@ int pgm_arm_type1_state::puzzli2_take_leveldata_value(UINT8 datvalue)
else if (rawvalue==0x17) {object_value = 0x0126; printf("%02x <- fish in bubble (type 6?)\n", rawvalue);}
else if (rawvalue==0x18) {object_value = 0x0127; printf("%02x <- fish in bubble (type 7?)\n", rawvalue);}
else if (rawvalue==0x19) {object_value = 0x0128; printf("%02x <- fish in bubble (type 8?)\n", rawvalue);}
else if (rawvalue==0x1e) {object_value = 0x0100; printf("%02x <- unk object ?? 1e\n", rawvalue);}
else if (rawvalue==0x21) {object_value = 0x0100; printf("%02x <- unk object ?? 21\n", rawvalue);}// puzzli2
else if (rawvalue==0x22) {object_value = 0x0140; printf("%02x <- fish in egg (type w?)\n", rawvalue);}
else if (rawvalue==0x23) {object_value = 0x0141; printf("%02x <- fish in egg (type x?)\n", rawvalue);}
else if (rawvalue==0x24) {object_value = 0x0142; printf("%02x <- fish in egg (type y?)\n", rawvalue);}
else if (rawvalue==0x25) {object_value = 0x0143; printf("%02x <- fish in egg (type z?)\n", rawvalue);}
else if (rawvalue==0x26) {object_value = 0x0100; printf("%02x <- unk object ?? 26\n", rawvalue);}
else if (rawvalue==0x27) {object_value = 0x0100; printf("%02x <- unk object ?? 27\n", rawvalue);}
else if (rawvalue==0x28) {object_value = 0x0100; printf("%02x <- unk object ?? 28\n", rawvalue);}
else if (rawvalue==0x29) {object_value = 0x0100; printf("%02x <- unk object ?? 29\n", rawvalue);}
else if (rawvalue==0x2a) {object_value = 0x0100; printf("%02x <- unk object ?? 2a\n", rawvalue);}
else if (rawvalue==0x32) {object_value = 0x0100; printf("%02x <- unk object ?? 32\n", rawvalue);} // puzzli2
else if (rawvalue==0x33) {object_value = 0x0100; printf("%02x <- unk object ?? 33\n", rawvalue);} // puzzli2
else if (rawvalue==0x35) {object_value = 0x0100; printf("%02x <- unk object ?? 35\n", rawvalue);}
else if (rawvalue==0x38) {object_value = 0x0100; printf("%02x <- unk object ?? 38\n", rawvalue);} // puzzli2
else if (rawvalue==0x41) {object_value = 0x0100; printf("%02x <- unk object ?? 41\n", rawvalue);} // puzzli2
else if (rawvalue==0x43) {object_value = 0x0100; printf("%02x <- unk object ?? 43\n", rawvalue);} // puzzli2
// 1a
// 1b
// 1c
// 1d
else if (rawvalue==0x1e) {object_value = 0xffff; printf("%02x <- unk object ?? 1e\n", rawvalue);}
// 1e
// 1f
// 20
else if (rawvalue==0x21) {object_value = 0xffff; printf("%02x <- unk object ?? 21\n", rawvalue);}// puzzli2
////////////////////// fish in egg group
else if (rawvalue==0x22) {object_value = 0x0140; printf("%02x <- fish in egg (type 0)\n", rawvalue);}
else if (rawvalue==0x23) {object_value = 0x0141; printf("%02x <- fish in egg (type 1)\n", rawvalue);}
else if (rawvalue==0x24) {object_value = 0x0142; printf("%02x <- fish in egg (type 2)\n", rawvalue);}
else if (rawvalue==0x25) {object_value = 0x0143; printf("%02x <- fish in egg (type 3)\n", rawvalue);}
else if (rawvalue==0x26) {object_value = 0x0144; printf("%02x <- fish in egg (type 4)\n", rawvalue);}
else if (rawvalue==0x27) {object_value = 0x0145; printf("%02x <- fish in egg (type 5)\n", rawvalue);}
else if (rawvalue==0x28) {object_value = 0x0146; printf("%02x <- fish in egg (type 6)\n", rawvalue);}
else if (rawvalue==0x29) {object_value = 0x0147; printf("%02x <- fish in egg (type 7)\n", rawvalue);}
else if (rawvalue==0x2a) {object_value = 0xffff; printf("%02x <- unk object ?? 2a\n", rawvalue);}
// 2b
// 2c
// 2d
// 2e
// 2f
// 30
// 31
else if (rawvalue==0x32) {object_value = 0xffff; printf("%02x <- unk object ?? 32\n", rawvalue);} // puzzli2
////////////////////// don't fishing know yet group
else if (rawvalue==0x33) {object_value = 0xffff; printf("%02x <- unk object ?? 33\n", rawvalue);} // puzzli2
// 34
else if (rawvalue==0x35) {object_value = 0xffff; printf("%02x <- unk object ?? 35\n", rawvalue);}
// 36
// 37
else if (rawvalue==0x38) {object_value = 0xffff; printf("%02x <- unk object ?? 38\n", rawvalue);} // puzzli2
// 39
// 3a
// 3b
// 3c
// 3d
// 3e
// 3f
// 40
else if (rawvalue==0x41) {object_value = 0xffff; printf("%02x <- unk object ?? 41\n", rawvalue);} // puzzli2
// 42
else if (rawvalue==0x43) {object_value = 0xffff; printf("%02x <- unk object ?? 43\n", rawvalue);} // puzzli2
////////////////////// special objects follow
else if (rawvalue==0xd0) {object_value = 0x0200; printf("%02x <- generic bubbles\n", rawvalue);}
else if (rawvalue==0xe0) {object_value = 0x8000; printf("%02x <- solid middle\n", rawvalue);}
@ -2097,7 +2123,13 @@ int pgm_arm_type1_state::puzzli2_take_leveldata_value(UINT8 datvalue)
else if (rawvalue==0xe4) {object_value = 0x8080; printf("%02x <- solid bottom slant down\n", rawvalue);} // sold slant bottom up
else {object_value = 0x0100; printf("%02x <- unknown object\n", rawvalue);}
else {object_value = 0xffff; printf("%02x <- unknown object\n", rawvalue);}
if (object_value==0xffff)
{
object_value = 0x110;
popmessage("unknown object type %02x\n", rawvalue);
}
int realrow = get_position_of_bit(m_row_bitmask, currentrow);

View File

@ -180,28 +180,8 @@ DRIVER_INIT_MEMBER(pgm_arm_type2_state,kov2p)
pgm_kov2p_decrypt(machine());
kov2_latch_init();
UINT8 *mem8 = (UINT8 *)memregion("user1")->base();
mem8[0xDE] = 0xC0;
mem8[0xDF] = 0x46;
mem8[0x4ED8] = 0xA8;// B0
mem8[0x4EDC] = 0x9C;// A4
mem8[0x4EE0] = 0x5C;// 64
mem8[0x4EE4] = 0x94;// 9C
mem8[0x4EE8] = 0xE8;// F0
mem8[0x4EEC] = 0x6C;// 74
mem8[0x4EF0] = 0xD4;// DC
mem8[0x4EF4] = 0x50;// 58
mem8[0x4EF8] = 0x80;// 88
mem8[0x4EFC] = 0x9C;// A4
mem8[0x4F00] = 0x28;// 30
mem8[0x4F04] = 0x30;// 38
mem8[0x4F08] = 0x34;// 3C
mem8[0x4F0C] = 0x1C;// 24
mem8[0x1FFFFC] = 0x33;
mem8[0x1FFFFD] = 0x99;
// we only have a HK internal ROM dumped for now, allow us to override that for debugging purposes.
machine().device("prot")->memory().space(AS_PROGRAM).install_write_handler(0x48000138, 0x4800013b, write32_delegate(FUNC(pgm_arm_type2_state::kov2_arm_region_w),this));
// we only have a China internal ROM dumped for now, allow us to override that for debugging purposes.
// machine().device("prot")->memory().space(AS_PROGRAM).install_write_handler(0x48000138, 0x4800013b, write32_delegate(FUNC(pgm_arm_type2_state::kov2_arm_region_w),this));
}
WRITE32_MEMBER(pgm_arm_type2_state::martmast_arm_region_w )

View File

@ -9445,8 +9445,9 @@ dmnfrnt // (c) 2002 Demon Front
dmnfrnta //
dmnfrntb //
dmnfrntpcb //
kovshp // (c) 200? Knights of Valor Superheroes PLUS
kovytzy // (c) 1999 Knights of Valour: Yi Tong Zhong Yuan
kovshp // (c) 2004 Knights of Valor Superheroes PLUS
kovshpa //
kovytzy // (c) 1999 Knights of Valour: Yi Tong Zhong Yuan
kovshxas // bootleg
kovlsqh // bootleg
kovlsqh2 // bootleg