Skip to content

Commit b68dafd

Browse files
committed
Update to Nestopia JG 1.51.1
Version 1.51.1 -------------- - Add database entries for Micro Mages, Nong Chang Xiao Jing Ling - Add support for Mapper 162 (UNL-FS304) - Add support for Mapper 554 (UNL-KS7010) - Add support for Mapper 302 (UNL-KS7057) - Pass cpu_exec_space/test_cpu_exec_space_ppuio - Improve MMC3/MMC6 IRQ handling - Improve DMC DMA read conflict handling Version 1.51.0 -------------- - ... All changes since last core port release plus the following: - Implement full behaviour of Mapper 156: fixes Janggun-ui Adeul - Correct SOROM Reset and Save/Load behaviour: fixes saving in Genghis Khan, Nobunaga's Ambition, and Romance of the Three Kingdoms - Correct FDS IRQ behaviour: fixes Druid - Kyoufu no Tobira, Lutter - Implement correct VRC2a CHR bank selection - Fix implicit integer size conversion in Sunsoft 5B audio - Improvements to RAMBO-1 timing - Implement mirroring for UNL-KOF97 - Allow loading of NES 2.0 format UNL-KOF97 ROMs - Fix support for Korean Igo (Korea) (Unl) - Allow loading of NES 2.0 format UNL-TF1201 ROMs - Convert Street Heroes (Tw) to NES 2.0 format - Allow loading BMC-8157 ROMs in NES 2.0 format - Allow loading BMC-BS-5 ROMs in NES 2.0 format - Properly implement NAMCOT-340 - Rewrite NAMCOT-175 - Implement Mapper 306/KS7016 and rearrange Kaiser mapper code - Implement Mapper 312/KS7013B - Implement Mapper 307/KS7037 - Allow loading of BMC-190IN1 ROMs in NES 2.0 format - Allow loading of BMC-A65AS ROMs in NES 2.0 format - Assign UNL-CC-21 to Mapper 27, and fix CHR bank swapping implementation - Allow loading of UNL-EDU2000 ROMs in NES 2.0 format - Allow loading of BMC-T-262 ROMs in NES 2.0 format - Allow loading of BMC-64IN1NOREPEAT ROMs in NES 2.0 format - Allow loading of UNL-T-230 ROMs in NES 2.0 format - Allow loading of UNL-AX5705 ROMs in NES 2.0 format - Allow loading of BMC-GS-2004 ROMs in NES 2.0 format - Allow loading of BMC-GS-2013 ROMs in NES 2.0 format - Allow loading of BMC-WS ROMs in NES 2.0 format - Convert BMC-FK23C and BMC-SUPER24IN1SC03 to Mapper 176
1 parent edab550 commit b68dafd

14 files changed

+480
-46
lines changed

Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<key>CFBundleSignature</key>
2020
<string>????</string>
2121
<key>CFBundleVersion</key>
22-
<string>1.51.0</string>
22+
<string>1.51.1</string>
2323
<key>NSPrincipalClass</key>
2424
<string>OEGameCoreController</string>
2525
<key>OEGameCoreClass</key>

Nestopia.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@
316316
82789AE60E70CFD100C01C82 /* NstVsTkoBoxing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 827899C80E70CFD100C01C82 /* NstVsTkoBoxing.cpp */; };
317317
82789B710E70D27D00C01C82 /* NESGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 82789B700E70D27D00C01C82 /* NESGameCore.mm */; };
318318
872FABE326F27032009BB457 /* NstBoardNamcot340.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 872FABE126F27032009BB457 /* NstBoardNamcot340.cpp */; };
319+
872FABE626F2731D009BB457 /* NstBoardWaixingFs304.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 872FABE426F2731D009BB457 /* NstBoardWaixingFs304.cpp */; };
319320
872FC2F522AAEEB600AF67DE /* NstBoardAction53.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 872FC2F322AAEEB400AF67DE /* NstBoardAction53.cpp */; };
320321
876BE44B21AC9E1E00290705 /* NstHomebrew.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 876BE44A21AC9E1D00290705 /* NstHomebrew.cpp */; };
321322
876BE44D21AC9F9B00290705 /* NstVideoFilterNtscCfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 876BE44C21AC9F9B00290705 /* NstVideoFilterNtscCfg.cpp */; };
@@ -983,6 +984,8 @@
983984
82F45ED70E887EAF00B7B023 /* Preferences.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Preferences.xib; sourceTree = "<group>"; };
984985
872FABE126F27032009BB457 /* NstBoardNamcot340.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NstBoardNamcot340.cpp; sourceTree = "<group>"; };
985986
872FABE226F27032009BB457 /* NstBoardNamcot340.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNamcot340.hpp; sourceTree = "<group>"; };
987+
872FABE426F2731D009BB457 /* NstBoardWaixingFs304.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NstBoardWaixingFs304.cpp; sourceTree = "<group>"; };
988+
872FABE526F2731D009BB457 /* NstBoardWaixingFs304.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingFs304.hpp; sourceTree = "<group>"; };
986989
872FC2F322AAEEB400AF67DE /* NstBoardAction53.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NstBoardAction53.cpp; sourceTree = "<group>"; };
987990
872FC2F422AAEEB500AF67DE /* NstBoardAction53.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAction53.hpp; sourceTree = "<group>"; };
988991
876BE44921AC9E1D00290705 /* NstHomebrew.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = NstHomebrew.hpp; sourceTree = "<group>"; };
@@ -1691,6 +1694,8 @@
16911694
8278990D0E70CFCD00C01C82 /* NstBoardWaixing.hpp */,
16921695
8278990E0E70CFCD00C01C82 /* NstBoardWaixingFfv.cpp */,
16931696
8278990F0E70CFCD00C01C82 /* NstBoardWaixingFfv.hpp */,
1697+
872FABE426F2731D009BB457 /* NstBoardWaixingFs304.cpp */,
1698+
872FABE526F2731D009BB457 /* NstBoardWaixingFs304.hpp */,
16941699
827899100E70CFCD00C01C82 /* NstBoardWaixingPs2.cpp */,
16951700
827899110E70CFCD00C01C82 /* NstBoardWaixingPs2.hpp */,
16961701
827899120E70CFCD00C01C82 /* NstBoardWaixingSecurity.cpp */,
@@ -2153,6 +2158,7 @@
21532158
82789AA80E70CFD100C01C82 /* NstInpPokkunMoguraa.cpp in Sources */,
21542159
82789AA90E70CFD100C01C82 /* NstInpPowerGlove.cpp in Sources */,
21552160
82789AAA0E70CFD100C01C82 /* NstInpPowerPad.cpp in Sources */,
2161+
872FABE626F2731D009BB457 /* NstBoardWaixingFs304.cpp in Sources */,
21562162
82789AAB0E70CFD100C01C82 /* NstInpRob.cpp in Sources */,
21572163
82789AAC0E70CFD100C01C82 /* NstInpSuborKeyboard.cpp in Sources */,
21582164
82789AAD0E70CFD100C01C82 /* NstInpTopRider.cpp in Sources */,

core/NstApu.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2324,9 +2324,15 @@ namespace Nes
23242324

23252325
cpu.StealCycles( cpu.GetClock(1) );
23262326

2327-
// This is disabled until a real solution is discovered
2328-
//if ((readAddress & 0xF000) != 0x4000)
2329-
// cpu.Peek( readAddress );
2327+
/* According to dmc_dma_during_read4/dma_2007_read, DMC DMA during read causes
2328+
* 2-3 extra $2007 reads before the real read. The nesdev wiki states that this
2329+
* also happens when polling $2002 for vblank.
2330+
*/
2331+
if ((readAddress & 0xF000) != 0x4000)
2332+
{
2333+
cpu.Peek( readAddress );
2334+
cpu.Peek( readAddress );
2335+
}
23302336

23312337
cpu.StealCycles( cpu.GetClock(1) );
23322338
cpu.Peek( readAddress );

core/NstCpu.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1280,6 +1280,7 @@ namespace Nes
12801280

12811281
NST_SINGLE_CALL void Cpu::Rts()
12821282
{
1283+
opcode = map.Peek8( pc );
12831284
pc = Pull16() + 1;
12841285
cycles.count += cycles.clock[RTS_CYCLES-1];
12851286
}
@@ -1290,6 +1291,7 @@ namespace Nes
12901291

12911292
{
12921293
const uint packed = Pull8();
1294+
opcode = map.Peek8( pc );
12931295
pc = Pull16();
12941296
flags.Unpack( packed );
12951297
}
@@ -1802,6 +1804,7 @@ namespace Nes
18021804
{
18031805
NST_DEBUG_MSG("6502 BRK");
18041806

1807+
opcode = map.Peek8( pc );
18051808
Push16( pc + 1 );
18061809
Push8( flags.Pack() | Flags::B );
18071810
flags.i = Flags::I;

core/board/NstBoard.cpp

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1103,13 +1103,15 @@ namespace Nes
11031103
{ "UNL-AX5705", Type::BTL_AX5705 },
11041104
{ "UNL-CC-21", Type::UNL_CC21 },
11051105
{ "UNL-EDU2000", Type::UNL_EDU2000 },
1106+
{ "UNL-FS304", Type::UNL_FS304 },
11061107
{ "UNL-H2288", Type::KAY_H2288 },
11071108
{ "UNL-KOF97", Type::UNL_KINGOFFIGHTERS97 },
11081109
{ "UNL-KS7013B", Type::KAISER_KS7013B },
11091110
{ "UNL-KS7016", Type::KAISER_KS7016 },
11101111
{ "UNL-KS7031", Type::KAISER_KS7031 },
11111112
{ "UNL-KS7032", Type::KAISER_KS7032 },
11121113
{ "UNL-KS7037", Type::KAISER_KS7037 },
1114+
{ "UNL-KS7057", Type::KAISER_KS7057 },
11131115
{ "UNL-N625092", Type::UNL_N625092 },
11141116
{ "UNL-SA-0036", Type::SACHEN_SA0036 },
11151117
{ "UNL-SA-0037", Type::SACHEN_SA0037 },
@@ -1449,7 +1451,7 @@ namespace Nes
14491451
case 4:
14501452

14511453
if (submapper == 1)
1452-
{ // StarTropics/Zoda's Revenge - might not be correct
1454+
{ // StarTropics/Zoda's Revenge
14531455
chips.Add(L"MMC6B");
14541456
name = "NES-HKROM";
14551457
id = Type::STD_HKROM;
@@ -2778,6 +2780,12 @@ namespace Nes
27782780
id = Type::BANDAI_LZ93D50_24C01;
27792781
break;
27802782

2783+
case 162:
2784+
2785+
name = "UNL-FS304";
2786+
id = Type::UNL_FS304;
2787+
break;
2788+
27812789
case 163:
27822790

27832791
name = "NANJING";
@@ -3438,6 +3446,12 @@ namespace Nes
34383446
id = Type::BMC_8157;
34393447
break;
34403448

3449+
case 302:
3450+
3451+
name = "UNL-KS7057";
3452+
id = Type::KAISER_KS7057;
3453+
break;
3454+
34413455
case 305:
34423456

34433457
name = "UNL-KS7031";
@@ -3498,6 +3512,12 @@ namespace Nes
34983512
id = Type::BTL_AX5705;
34993513
break;
35003514

3515+
case 554:
3516+
3517+
name = "UNL-KS7010";
3518+
id = Type::KAISER_KS7010;
3519+
break;
3520+
35013521
default:
35023522

35033523
return false;
@@ -3766,12 +3786,14 @@ namespace Nes
37663786
case Type::JYCOMPANY_TYPE_B :
37673787
case Type::JYCOMPANY_TYPE_C : return new JyCompany::Standard(c);
37683788
case Type::KAISER_KS202 : return new Kaiser::Ks202(c);
3789+
case Type::KAISER_KS7010 : return new Kaiser::Ks7010(c);
37693790
case Type::KAISER_KS7013B : return new Kaiser::Ks7013b(c);
37703791
case Type::KAISER_KS7016 : return new Kaiser::Ks7016(c);
37713792
case Type::KAISER_KS7022 : return new Kaiser::Ks7022(c);
37723793
case Type::KAISER_KS7031 : return new Kaiser::Ks7031(c);
37733794
case Type::KAISER_KS7032 : return new Kaiser::Ks7032(c);
37743795
case Type::KAISER_KS7037 : return new Kaiser::Ks7037(c);
3796+
case Type::KAISER_KS7057 : return new Kaiser::Ks7057(c);
37753797
case Type::KAISER_KS7058 : return new Kaiser::Ks7058(c);
37763798
case Type::KASING_STD : return new Kasing::Standard(c);
37773799
case Type::KAY_H2288 : return new Kay::H2288(c);
@@ -3868,6 +3890,7 @@ namespace Nes
38683890
case Type::UNL_A9746 : return new Unlicensed::A9746(c);
38693891
case Type::UNL_CC21 : return new Unlicensed::Cc21(c);
38703892
case Type::UNL_EDU2000 : return new Unlicensed::Edu2000(c);
3893+
case Type::UNL_FS304 : return new Waixing::Fs304(c);
38713894
case Type::UNL_KINGOFFIGHTERS96 : return new Unlicensed::KingOfFighters96(c);
38723895
case Type::UNL_KINGOFFIGHTERS97 : return new Unlicensed::KingOfFighters97(c);
38733896
case Type::UNL_MORTALKOMBAT2 : return new Unlicensed::MortalKombat2(c);

core/board/NstBoard.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,12 +418,14 @@ namespace Nes
418418
JYCOMPANY_TYPE_C = MakeId< 211, 2048, 2048, 0, 0, CRM_0, NMT_X, 0 >::ID,
419419
// Kaiser
420420
KAISER_KS202 = MakeId< 56, 256, 128, 8, 0, CRM_0, NMT_V, 0 >::ID,
421+
KAISER_KS7010 = MakeId< 554, 128, 128, 0, 0, CRM_0, NMT_V, 1 >::ID,
421422
KAISER_KS7013B = MakeId< 312, 128, 0, 0, 0, CRM_8, NMT_X, 0 >::ID,
422423
KAISER_KS7016 = MakeId< 306, 128, 0, 0, 0, CRM_8, NMT_V, 0 >::ID,
423424
KAISER_KS7022 = MakeId< 175, 256, 128, 0, 0, CRM_0, NMT_V, 0 >::ID,
424425
KAISER_KS7031 = MakeId< 305, 128, 0, 0, 0, CRM_8, NMT_V, 0 >::ID,
425426
KAISER_KS7032 = MakeId< 142, 128, 0, 0, 0, CRM_8, NMT_X, 0 >::ID,
426427
KAISER_KS7037 = MakeId< 307, 128, 0, 0, 8, CRM_8, NMT_X, 0 >::ID,
428+
KAISER_KS7057 = MakeId< 302, 128, 0, 0, 0, CRM_8, NMT_X, 0 >::ID,
427429
KAISER_KS7058 = MakeId< 171, 32, 32, 0, 0, CRM_0, NMT_X, 0 >::ID,
428430
// Kasing
429431
KASING_STD = MakeId< 115, 512, 512, 0, 0, CRM_0, NMT_V, 0 >::ID,
@@ -541,6 +543,7 @@ namespace Nes
541543
UNL_A9746 = MakeId< 219, 128, 256, 0, 0, CRM_0, NMT_X, 0 >::ID,
542544
UNL_CC21 = MakeId< 27, 32, 8, 0, 0, CRM_0, NMT_Z, 0 >::ID,
543545
UNL_EDU2000 = MakeId< 329, 1024, 0, 0, 32, CRM_8, NMT_Z, 0 >::ID,
546+
UNL_FS304 = MakeId< 162, 2048, 0, 8, 0, CRM_8, NMT_X, 0 >::ID,
544547
UNL_KINGOFFIGHTERS96 = MakeId< 187, 512, 512, 0, 0, CRM_0, NMT_X, 0 >::ID,
545548
UNL_KINGOFFIGHTERS97 = MakeId< 263, 256, 256, 0, 0, CRM_0, NMT_X, 0 >::ID,
546549
UNL_MORTALKOMBAT2 = MakeId< 91, 256, 512, 0, 0, CRM_0, NMT_X, 0 >::ID,

0 commit comments

Comments
 (0)