350 lines
10 KiB
C++
350 lines
10 KiB
C++
//
|
|
// ROMヘッダの修正(NESToyでの間違い修正など)及びROMパッチ
|
|
//
|
|
|
|
// Mapper 000
|
|
if( crc == 0x57970078 ) { // F-1 Race(J) 無理矢理パッチ(^^;
|
|
lpPRG[0x078C] = 0x6C;
|
|
lpPRG[0x3FE1] = 0xFF;
|
|
lpPRG[0x3FE6] = 0x00;
|
|
}
|
|
if( crc == 0xaf2bbcbc // Mach Rider(JU)
|
|
|| crc == 0x3acd4bf1 // Mach Rider(Alt)(JU) 無理矢理パッチ(^^;
|
|
|| crc == 0x8bbe9bec ) {
|
|
lpPRG[0x090D] = 0x6E;
|
|
lpPRG[0x7FDF] = 0xFF;
|
|
lpPRG[0x7FE4] = 0x00;
|
|
|
|
header.control1 = ROM_VMIRROR;
|
|
}
|
|
|
|
if( crc == 0xe16bb5fe ) { // Zippy Race(J)
|
|
header.control1 &= 0xf6;
|
|
}
|
|
if( crc == 0x85534474 ) { // Lode Runner(J)
|
|
lpPRG[0x29E9] = 0xEA; // セーブメニューを出すパッチ
|
|
lpPRG[0x29EA] = 0xEA;
|
|
lpPRG[0x29F8] = 0xEA;
|
|
lpPRG[0x29F9] = 0xEA;
|
|
}
|
|
|
|
// Mapper 001
|
|
if( crc == 0x7831b2ff // America Daitouryou Senkyo(J)
|
|
|| crc == 0x190a3e11 // Be-Bop-Highschool - Koukousei Gokuraku Densetsu(J)
|
|
|| crc == 0x52449508 // Home Run Nighter - Pennant League!!(J)
|
|
|| crc == 0x0973f714 // Jangou(J)
|
|
|| crc == 0x7172f3d4 // Kabushiki Doujou(J)
|
|
|| crc == 0xa5781280 // Kujaku Ou 2(J)
|
|
|| crc == 0x8ce9c87b // Money Game, The(J)
|
|
|| crc == 0xec47296d // Morita Kazuo no Shougi(J)
|
|
|| crc == 0xcee5857b // Ninjara Hoi!(J)
|
|
|| crc == 0xe63d9193 // Tanigawa Kouji no Shougi Shinan 3(J)
|
|
|| crc == 0xd54f5da9 // Tsuppari Wars(J)
|
|
|| crc == 0x1e0c7ea3 ) { // AD&D Dragons of Flame(J)
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
if( crc == 0x1995ac4e ) { // Ferrari Grand Prix Challenge(J) 無理矢理パッチ(^^;
|
|
lpPRG[0x1F7AD] = 0xFF;
|
|
lpPRG[0x1F7BC] = 0x00;
|
|
}
|
|
|
|
if( crc == 0x20d22251 ) { // Top rider(J) 無理矢理パッチ(^^;
|
|
lpPRG[0x1F17E] = 0xEA;
|
|
lpPRG[0x1F17F] = 0xEA;
|
|
}
|
|
|
|
if( crc == 0x11469ce3 ) { // Viva! Las Vegas(J) 無理矢理パッチ(^^;
|
|
lpCHR[0x0000] = 0x01;
|
|
}
|
|
|
|
if( crc == 0x3fccdc7b ) { // Baseball Star - Mezase Sankanou!!(J) 無理矢理パッチ(^^;
|
|
lpPRG[0x0F666] = 0x9D;
|
|
}
|
|
|
|
if( crc == 0xdb564628 ) { // Mario Open Golf(J)
|
|
lpPRG[0x30195] = 0xC0;
|
|
}
|
|
|
|
// Mapper 002
|
|
if( crc == 0x63af202f ) { // JJ - Tobidase Daisakusen Part 2(J)
|
|
header.control1 &= 0xf6;
|
|
header.control1 |= ROM_VMIRROR;
|
|
}
|
|
|
|
if( crc == 0x99a62e47 ) { // Black Bass 2, The(J)
|
|
header.control1 &= 0xf6;
|
|
header.control1 |= ROM_VMIRROR;
|
|
}
|
|
|
|
if( crc == 0x0eaa7515 // Rod Land(J)
|
|
|| crc == 0x22ab9694 ) { // Rod Land(E)
|
|
header.control1 &= 0xf6;
|
|
header.control1 |= ROM_VMIRROR;
|
|
}
|
|
|
|
// Mapper 003
|
|
if( crc == 0x29401686 ) { // Minna no Taabou no Nakayoshi Dai Sakusen(J)
|
|
// lpPRG[0x2B3E] = 0x60;
|
|
}
|
|
if( crc == 0x932a077a ) { // TwinBee(J)
|
|
mapper = 87;
|
|
}
|
|
if( crc == 0x8218c637 ) { // Space Hunter(J)
|
|
// header.control1 &= 0xf6;
|
|
// header.control1 |= ROM_4SCREEN;
|
|
header.control1 = ROM_VMIRROR;
|
|
}
|
|
if( crc == 0x2bb6a0f8 // Sherlock Holmes - Hakushaku Reijou Yuukai Jiken(J)
|
|
|| crc == 0x28c11d24 // Sukeban Deka 3(J)
|
|
|| crc == 0x02863604 ) { // Sukeban Deka 3(J)(Alt)
|
|
header.control1 &= 0xf6;
|
|
header.control1 |= ROM_VMIRROR;
|
|
}
|
|
|
|
// Mapper 004
|
|
if( crc == 0x58581770) { // Rasaaru Ishii no Childs Quest(J)
|
|
header.control1 &= 0xf6;
|
|
header.control1 |= ROM_VMIRROR;
|
|
}
|
|
if( crc == 0xf3feb3ab // Kunio Kun no Jidaigeki Dayo Zenin Shuugou! (J)
|
|
|| crc == 0xa524ae9b // Otaku no Seiza - An Adventure in the Otaku Galaxy (J)
|
|
|| crc == 0x46dc6e57 // SD Gundam - Gachapon Senshi 2 - Capsule Senki (J)
|
|
|| crc == 0x66b2dec7 // SD Gundam - Gachapon Senshi 3 - Eiyuu Senki (J)
|
|
|| crc == 0x92b07fd9 // SD Gundam - Gachapon Senshi 4 - New Type Story (J)
|
|
|| crc == 0x8ee6463a // SD Gundam - Gachapon Senshi 5 - Battle of Universal Century (J)
|
|
|| crc == 0xaf754426 // Ultraman Club 3 (J)
|
|
|| crc == 0xfe4e5b11 // Ushio to Tora - Shinen no Daiyou (J)
|
|
|| crc == 0x57c12c17 ) { // Yamamura Misa Suspense - Kyouto Zaiteku Satsujin Jiken (J)
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
if( crc == 0x42e03e4a ) { // RPG Jinsei Game (J)
|
|
mapper = 118;
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
if( crc == 0xfd0299c3 ) { // METAL MAX(J)
|
|
lpPRG[0x3D522] = 0xA9;
|
|
lpPRG[0x3D523] = 0x19;
|
|
}
|
|
if( crc == 0x1d2e5018 // Rockman 3(J)
|
|
|| crc == 0x6b999aaf ) { // Mega Man 3(U)
|
|
// lpPRG[0x3C179] = 0xBA;
|
|
}
|
|
|
|
// Mapper 005
|
|
if( crc == 0xe91548d8 ) { // Shin 4 Nin Uchi Mahjong - Yakuman Tengoku (J)
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
|
|
// Mapper 010
|
|
if( crc == 0xc9cce8f2 ) { // Famicom Wars (J)
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
|
|
// Mapper 016
|
|
if( crc == 0x983d8175 // Datach - Battle Rush - Build Up Robot Tournament (J)
|
|
|| crc == 0x894efdbc // Datach - Crayon Shin Chan - Ora to Poi Poi (J)
|
|
|| crc == 0x19e81461 // Datach - Dragon Ball Z - Gekitou Tenkaichi Budou Kai (J)
|
|
|| crc == 0xbe06853f // Datach - J League Super Top Players (J)
|
|
|| crc == 0x0be0a328 // Datach - SD Gundam - Gundam Wars (J)
|
|
|| crc == 0x5b457641 // Datach - Ultraman Club - Supokon Fight! (J)
|
|
|| crc == 0xf51a7f46 // Datach - Yuu Yuu Hakusho - Bakutou Ankoku Bujutsu Kai (J)
|
|
|| crc == 0x31cd9903 // Dragon Ball Z - Kyoushuu! Saiya Jin (J)
|
|
|| crc == 0xe49fc53e // Dragon Ball Z 2 - Gekishin Freeza!! (J)
|
|
|| crc == 0x09499f4d // Dragon Ball Z 3 - Ressen Jinzou Ningen (J)
|
|
|| crc == 0x2e991109 // Dragon Ball Z Gaiden - Saiya Jin Zetsumetsu Keikaku (J)
|
|
|| crc == 0x170250de ) { // Rokudenashi Blues(J)
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
|
|
// Mapper 019
|
|
if( crc == 0x3296ff7a // Battle Fleet (J)
|
|
|| crc == 0x429fd177 // Famista '90 (J)
|
|
|| crc == 0xdd454208 // Hydlide 3 - Yami Kara no Houmonsha (J)
|
|
|| crc == 0xb1b9e187 // Kaijuu Monogatari (J)
|
|
|| crc == 0xaf15338f ) { // Mindseeker (J)
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
|
|
// Mapper 026
|
|
if( crc == 0x836cc1ab ) { // Mouryou Senki Madara (J)
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
|
|
// Mapper 033
|
|
if( crc == 0x547e6cc1 ) { // Flintstones - The Rescue of Dino & Hoppy, The(J)
|
|
mapper = 48;
|
|
}
|
|
|
|
// Mapper 065
|
|
if( crc == 0xfd3fc292 ) { // Ai Sensei no Oshiete - Watashi no Hoshi (J)
|
|
mapper = 32;
|
|
}
|
|
|
|
// Mapper 068
|
|
if( crc == 0xfde79681 ) { // Maharaja (J)
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
|
|
// Mapper 069
|
|
if( crc == 0xfeac6916 // Honoo no Toukyuuji - Dodge Danpei 2(J)
|
|
|| crc == 0x67898319 ) { // Barcode World(J)
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
|
|
// Mapper 080
|
|
if( crc == 0x95aaed34 // Mirai Shinwa Jarvas (J)
|
|
|| crc == 0x17627d4b ) { // Taito Grand Prix - Eikou heno License (J)
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
|
|
// Mapper 082
|
|
if( crc == 0x4819a595 ) { // Kyuukyoku Harikiri Stadium - Heisei Gannen Ban (J)
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
|
|
// Mapper 086
|
|
if( crc == 0xe63f7d0b ) { // Urusei Yatsura - Lum no Wedding Bell(J)
|
|
mapper = 101;
|
|
}
|
|
|
|
// Mapper 118
|
|
if( crc == 0x3b0fb600 ) { // Ys 3 - Wonderers From Ys (J)
|
|
header.control1 |= ROM_SAVERAM;
|
|
}
|
|
|
|
// Mapper 180
|
|
if( crc == 0xc68363f6 ) { // Crazy Climber(J)
|
|
header.control1 &= 0xf6;
|
|
}
|
|
|
|
// VS-Unisystem
|
|
if( crc == 0x70901b25 ) { // VS Slalom
|
|
mapper = 99;
|
|
}
|
|
|
|
if( crc == 0xd5d7eac4 ) { // VS Dr. Mario
|
|
mapper = 1;
|
|
header.control2 |= ROM_VSUNISYSTEM;
|
|
}
|
|
|
|
if( crc == 0xffbef374 // VS Castlevania
|
|
|| crc == 0x8c0c2df5 ) { // VS Top Gun
|
|
mapper = 2;
|
|
header.control2 |= ROM_VSUNISYSTEM;
|
|
}
|
|
|
|
if( crc == 0xeb2dba63 // VS TKO Boxing
|
|
|| crc == 0x98cfe016 // VS TKO Boxing (Alt)
|
|
|| crc == 0x9818f656 ) { // VS TKO Boxing (f1)
|
|
mapper = 4;
|
|
header.control2 |= ROM_VSUNISYSTEM;
|
|
}
|
|
|
|
if( crc == 0x135adf7c ) { // VS Atari RBI Baseball
|
|
mapper = 4;
|
|
header.control2 |= ROM_VSUNISYSTEM;
|
|
}
|
|
|
|
if( crc == 0xf9d3b0a3 // VS Super Xevious
|
|
|| crc == 0x9924980a // VS Super Xevious (b1)
|
|
|| crc == 0x66bb838f ) { // VS Super Xevious (b2)
|
|
mapper = 4;
|
|
header.control1 &= 0xF6;
|
|
header.control2 |= ROM_VSUNISYSTEM;
|
|
}
|
|
|
|
if( crc == 0x17ae56be ) { // VS Freedom Force
|
|
mapper = 4;
|
|
header.control1 &= 0xF6;
|
|
header.control1 |= ROM_4SCREEN;
|
|
header.control2 |= ROM_VSUNISYSTEM;
|
|
}
|
|
|
|
if( crc == 0xe2c0a2be ) { // VS Platoon
|
|
mapper = 68;
|
|
header.control2 |= ROM_VSUNISYSTEM;
|
|
}
|
|
|
|
if( crc == 0xcbe85490 // VS Excitebike
|
|
|| crc == 0x29155e0c // VS Excitebike (Alt)
|
|
|| crc == 0xff5135a3 ) { // VS Hogan's Alley
|
|
header.control1 &= 0xF6;
|
|
header.control1 |= ROM_4SCREEN;
|
|
}
|
|
|
|
if( crc == 0x0b65a917 ) { // VS Mach Rider(Endurance Course)
|
|
lpPRG[0x7FDF] = 0xFF;
|
|
lpPRG[0x7FE4] = 0x00;
|
|
}
|
|
|
|
if( crc == 0x8a6a9848 // VS Mach Rider(Endurance Course)(Alt)
|
|
|| crc == 0xae8063ef ) { // VS Mach Rider(Japan, Fighting Course)
|
|
lpPRG[0x7FDD] = 0xFF;
|
|
lpPRG[0x7FE2] = 0x00;
|
|
}
|
|
|
|
if( crc == 0x16d3f469 ) { // VS Ninja Jajamaru Kun (J)
|
|
header.control1 &= 0xf6;
|
|
header.control1 |= ROM_VMIRROR;
|
|
}
|
|
|
|
if( crc == 0xc99ec059 ) { // VS Raid on Bungeling Bay(J)
|
|
mapper = 99;
|
|
header.control1 &= 0xF6;
|
|
header.control1 |= ROM_4SCREEN;
|
|
}
|
|
if( crc == 0xca85e56d ) { // VS Mighty Bomb Jack(J)
|
|
mapper = 99;
|
|
header.control1 &= 0xF6;
|
|
header.control1 |= ROM_4SCREEN;
|
|
}
|
|
|
|
|
|
if( crc == 0xeb2dba63 // VS TKO Boxing
|
|
|| crc == 0x9818f656 // VS TKO Boxing
|
|
|| crc == 0xed588f00 // VS Duck Hunt
|
|
|| crc == 0x8c0c2df5 // VS Top Gun
|
|
|| crc == 0x16d3f469 // VS Ninja Jajamaru Kun
|
|
|| crc == 0x8850924b // VS Tetris
|
|
|| crc == 0xcf36261e // VS Sky Kid
|
|
|| crc == 0xe1aa8214 // VS Star Luster
|
|
|| crc == 0xec461db9 // VS Pinball
|
|
|| crc == 0xe528f651 // VS Pinball (alt)
|
|
|| crc == 0x17ae56be // VS Freedom Force
|
|
|| crc == 0xe2c0a2be // VS Platoon
|
|
|| crc == 0xff5135a3 // VS Hogan's Alley
|
|
|| crc == 0x70901b25 // VS Slalom
|
|
|| crc == 0x0b65a917 // VS Mach Rider(Endurance Course)
|
|
|| crc == 0x8a6a9848 // VS Mach Rider(Endurance Course)(Alt)
|
|
|| crc == 0xae8063ef // VS Mach Rider(Japan, Fighting Course)
|
|
|| crc == 0xcc2c4b5d // VS Golf
|
|
|| crc == 0xa93a5aee // VS Stroke and Match Golf
|
|
|| crc == 0x86167220 // VS Lady Golf
|
|
|| crc == 0xffbef374 // VS Castlevania
|
|
|| crc == 0x135adf7c // VS Atari RBI Baseball
|
|
|| crc == 0xd5d7eac4 // VS Dr. Mario
|
|
|| crc == 0x46914e3e // VS Soccer
|
|
|| crc == 0x70433f2c // VS Battle City
|
|
|| crc == 0x8d15a6e6 // VS bad .nes
|
|
|| crc == 0x1e438d52 // VS Goonies
|
|
|| crc == 0xcbe85490 // VS Excitebike
|
|
|| crc == 0x29155e0c // VS Excitebike (alt)
|
|
|| crc == 0x07138c06 // VS Clu Clu Land
|
|
|| crc == 0x43a357ef // VS Ice Climber
|
|
|| crc == 0x737dd1bf // VS Super Mario Bros
|
|
|| crc == 0x4bf3972d // VS Super Mario Bros
|
|
|| crc == 0x8b60cc58 // VS Super Mario Bros
|
|
|| crc == 0x8192c804 // VS Super Mario Bros
|
|
|| crc == 0xd99a2087 // VS Gradius
|
|
|| crc == 0xf9d3b0a3 // VS Super Xevious
|
|
|| crc == 0x9924980a // VS Super Xevious
|
|
|| crc == 0x66bb838f // VS Super Xevious
|
|
|| crc == 0xc99ec059 // VS Raid on Bungeling Bay(J)
|
|
|| crc == 0xca85e56d ) { // VS Mighty Bomb Jack(J)
|
|
header.control2 |= ROM_VSUNISYSTEM;
|
|
}
|
|
|
|
if( mapper == 99 || mapper == 151 ) {
|
|
header.control2 |= ROM_VSUNISYSTEM;
|
|
}
|