diff --git a/src/mame/drivers/pgm.c b/src/mame/drivers/pgm.c index 9e2e146ffb8..dfd3c6e7cf1 100644 --- a/src/mame/drivers/pgm.c +++ b/src/mame/drivers/pgm.c @@ -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 diff --git a/src/mame/machine/pgmprot_igs027a_type1.c b/src/mame/machine/pgmprot_igs027a_type1.c index 01d78953992..aa774ea2e57 100644 --- a/src/mame/machine/pgmprot_igs027a_type1.c +++ b/src/mame/machine/pgmprot_igs027a_type1.c @@ -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); diff --git a/src/mame/machine/pgmprot_igs027a_type2.c b/src/mame/machine/pgmprot_igs027a_type2.c index 99530d55ce0..e5e62bfd646 100644 --- a/src/mame/machine/pgmprot_igs027a_type2.c +++ b/src/mame/machine/pgmprot_igs027a_type2.c @@ -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 ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index ad0b4640018..504eb060ab5 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -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