diff --git a/Changes.txt b/Changes.txt
index 52c5b707f..e60af34b7 100644
--- a/Changes.txt
+++ b/Changes.txt
@@ -137,6 +137,8 @@
* Fixed WD bankswitching
+ * Added FC bankswitching for Amiga's Power Play Arcade Video Game Album
+
* Auto-detection of bankswitch scheme by file extension now includes
more human-readable formats (not restricted to DOS 3-char length).
See the documentation for the new names.
diff --git a/docs/index.html b/docs/index.html
index c10fc79fc..227dc6e2b 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -3665,7 +3665,7 @@ Ms Pac-Man (Stella extended codes):
4A50 ² | 64K 4A50 + ram | .4A5, .4A50 |
4K | 4K Atari | .4K |
4KSC | CPUWIZ 4K + ram | .4KS, .4KSC |
- AR | Supercharger | .AR |
+ AR ² | Supercharger | .AR |
BF | CPUWIZ 256K | .BF |
BFSC | CPUWIZ 256K + ram | .BFS, .BFSC |
BUS | Experimental | .BUS |
@@ -3693,12 +3693,13 @@ Ms Pac-Man (Stella extended codes):
F8SC | 8K Atari + ram | .F8S, .F8SC |
FA | CBS RAM Plus | .FA |
FA2 | CBS RAM Plus 24/28K | .FA2 |
+ FC | Amiga Power Play Aracde 16/32K | .FC |
FE | 8K Decathlon | .FE |
MDM | Menu Driven Megacart | .MDM |
SB | 128-256k SUPERbanking | .SB |
UA | 8K UA Ltd. | .UA |
UASW | 8K UA Ltd. (swapped banks) | .UASW |
- WD | Wickstead Design | .WD |
+ WD | Wickstead Design (Pink Panther) | .WD |
X07 ¹ | 64K AtariAge | .X07 |
diff --git a/src/debugger/gui/module.mk b/src/debugger/gui/module.mk
index b719e8a73..d80408a60 100644
--- a/src/debugger/gui/module.mk
+++ b/src/debugger/gui/module.mk
@@ -44,6 +44,7 @@ MODULE_OBJS := \
src/debugger/gui/CartF8Widget.o \
src/debugger/gui/CartFA2Widget.o \
src/debugger/gui/CartFAWidget.o \
+ src/debugger/gui/CartFCWidget.o \
src/debugger/gui/CartFEWidget.o \
src/debugger/gui/CartMDMWidget.o \
src/debugger/gui/CartRamWidget.o \
diff --git a/src/emucore/Bankswitch.cxx b/src/emucore/Bankswitch.cxx
index 340633aa8..d95013e5d 100644
--- a/src/emucore/Bankswitch.cxx
+++ b/src/emucore/Bankswitch.cxx
@@ -131,6 +131,7 @@ Bankswitch::Description Bankswitch::BSList[int(Bankswitch::Type::NumSchemes)] =
{ "F8SC" , "F8SC (8K Atari + ram)" },
{ "FA" , "FA (CBS RAM Plus)" },
{ "FA2" , "FA2 (CBS RAM Plus 24/28K)" },
+ { "FC" , "FC (32K Amiga)" },
{ "FE" , "FE (8K Decathlon)" },
{ "MDM" , "MDM (Menu Driven Megacart)" },
{ "SB" , "SB (128-256K SUPERbank)" },
@@ -217,6 +218,7 @@ Bankswitch::ExtensionMap Bankswitch::ourExtensions = {
{ "F8SC" , Bankswitch::Type::_F8SC },
{ "FA" , Bankswitch::Type::_FA },
{ "FA2" , Bankswitch::Type::_FA2 },
+ { "FC" , Bankswitch::Type::_FC },
{ "FE" , Bankswitch::Type::_FE },
{ "MDM" , Bankswitch::Type::_MDM },
{ "SB" , Bankswitch::Type::_SB },
@@ -273,6 +275,7 @@ Bankswitch::NameToTypeMap Bankswitch::ourNameToTypes = {
{ "F8SC" , Bankswitch::Type::_F8SC },
{ "FA" , Bankswitch::Type::_FA },
{ "FA2" , Bankswitch::Type::_FA2 },
+ { "FC" , Bankswitch::Type::_FC },
{ "FE" , Bankswitch::Type::_FE },
{ "MDM" , Bankswitch::Type::_MDM },
{ "SB" , Bankswitch::Type::_SB },
diff --git a/src/emucore/Bankswitch.hxx b/src/emucore/Bankswitch.hxx
index a55d5da77..d0aa0502f 100644
--- a/src/emucore/Bankswitch.hxx
+++ b/src/emucore/Bankswitch.hxx
@@ -44,8 +44,8 @@ class Bankswitch
_CM, _CTY, _CV, _CVP, _DASH, _DF, _DFSC,
_DPC, _DPCP, _E0, _E7, _E78K, _EF, _EFSC,
_F0, _F4, _F4SC, _F6, _F6SC, _F8, _F8SC,
- _FA, _FA2, _FE, _MDM, _SB, _UA, _UASW,
- _WD, _WDSW, _X07,
+ _FA, _FA2, _FC, _FE, _MDM, _SB, _UA,
+ _UASW, _WD, _WDSW, _X07,
#ifdef CUSTOM_ARM
_CUSTOM,
#endif
diff --git a/src/emucore/CartDetector.cxx b/src/emucore/CartDetector.cxx
index 0b9fedffb..e1b8b5cfc 100644
--- a/src/emucore/CartDetector.cxx
+++ b/src/emucore/CartDetector.cxx
@@ -53,6 +53,7 @@
#include "CartF8SC.hxx"
#include "CartFA.hxx"
#include "CartFA2.hxx"
+#include "CartFC.hxx"
#include "CartFE.hxx"
#include "CartMDM.hxx"
#include "CartSB.hxx"
@@ -316,6 +317,8 @@ CartDetector::createFromImage(const ByteBuffer& image, size_t size, Bankswitch::
return make_unique(image, size, md5, settings);
case Bankswitch::Type::_FA2:
return make_unique(image, size, md5, settings);
+ case Bankswitch::Type::_FC:
+ return make_unique(image, size, md5, settings);
case Bankswitch::Type::_FE:
return make_unique(image, size, md5, settings);
case Bankswitch::Type::_MDM:
@@ -419,6 +422,8 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si
type = Bankswitch::Type::_F6SC;
else if(isProbablyE7(image, size))
type = Bankswitch::Type::_E7;
+ else if (isProbablyFC(image, size))
+ type = Bankswitch::Type::_FC;
else if(isProbably3E(image, size))
type = Bankswitch::Type::_3E;
/* no known 16K 3F ROMS
@@ -457,6 +462,8 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si
type = Bankswitch::Type::_DPCP;
else if(isProbablyFA2(image, size))
type = Bankswitch::Type::_FA2;
+ else if (isProbablyFC(image, size))
+ type = Bankswitch::Type::_FC;
else
type = Bankswitch::Type::_F4;
}
@@ -925,6 +932,17 @@ bool CartDetector::isProbablyFA2(const ByteBuffer& image, size_t)
return true;
}
+// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+bool CartDetector::isProbablyFC(const ByteBuffer& image, size_t size)
+{
+ // FC bankswitching uses consecutive writes to 3 hotspots
+ uInt8 signature[6] = {
+ 0x8e, 0xf8, 0xff, 0x8c, 0xf9, 0xff // STX $FFF8, STY $FFF9
+ };
+ return (searchForBytes(image.get(), size, signature, 6, 1));
+}
+
+
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool CartDetector::isProbablyFE(const ByteBuffer& image, size_t size)
{
diff --git a/src/emucore/CartDetector.hxx b/src/emucore/CartDetector.hxx
index 8f0c580bc..f077e3ef4 100644
--- a/src/emucore/CartDetector.hxx
+++ b/src/emucore/CartDetector.hxx
@@ -225,6 +225,11 @@ class CartDetector
*/
static bool isProbablyFA2(const ByteBuffer& image, size_t size);
+ /**
+ Returns true if the image is probably an FC bankswitching cartridge
+ */
+ static bool isProbablyFC(const ByteBuffer& image, size_t size);
+
/**
Returns true if the image is probably an FE bankswitching cartridge
*/
diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx
index 6d784356d..9950ab815 100644
--- a/src/emucore/DefProps.hxx
+++ b/src/emucore/DefProps.hxx
@@ -1319,7 +1319,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = {
{ "6076b187a5d8ea7a2a05111c19b5d5cd", "", "", "Fu Kung! (V0.14) (01-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "60a61da9b2f43dd7e13a5093ec41a53d", "VentureVision, Dan Oliver", "VV2001", "Rescue Terra I (1982) (VentureVision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "60bbd425cb7214ddb9f9a31948e91ecb", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
- { "60cd61a2dfccb0e2736434f9792c1672", "Amiga - Video Soft, Frank Ellis, Jerry Lawson", "2110", "3-D Havoc (1983) (Amiga) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
+ { "60cd61a2dfccb0e2736434f9792c1672", "Amiga - Video Soft, Frank Ellis, Jerry Lawson", "2110", "3-D Havoc (1983) (Amiga) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "60d304582d33e2957b73eb300a7495bb", "", "", "Jam Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "60e0ea3cbe0913d39803477945e9e5ec", "Atari, Joe Decuir - Sears", "CX2621 - 99806, 6-99806, 49-75104", "Video Olympics (1977) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXDR", "PADDLES_IAXDR", "YES", "AUTO 60", "", "", "", "" },
{ "613abf596c304ef6dbd8f3351920c37a", "", "", "Boring Pac-Man (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "" },
@@ -2816,7 +2816,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = {
{ "d4aa89e96d2902692f5c45f36903d336", "", "", "Euchre (NTSC) (Erik Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "d4c590ccfb611a73b3331359700c01a3", "", "", "Sprite Movement Demo 2 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "d541b20eae221a8ee321375e5971e766", "Arcadia Corporation, Stephen H. Landrum", "AR-4101", "Communist Mutants from Space (Preview) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
- { "d54cd41ecfd59e4b72d2c086152b9a75", "Amiga", "1110", "Power Play Arcade Video Game Album (1983) (Amiga) (Prototype)", "Ghost Attack, Genesis, Havoc", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
+ { "d54cd41ecfd59e4b72d2c086152b9a75", "Amiga - Video Soft - Michael K. Glass, Jerry Lawson", "1110", "Power Play Arcade Video Game Album (1983) (Amiga) (Prototype)", "3-D Ghost Attack only (3-D Genesis & 3-D Havoc missing in ROM)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "d5618464dbdc2981f6aa8b955828eeb4", "CCE", "C-829", "Megamania (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "d563ba38151b8204c9f5c9f58e781455", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "d573089534ca596e64efef474be7b6bc", "Parker Brothers, John Emerson", "931511", "Action Force (1983) (Parker Bros) (PAL) [a]", "AKA G.I. Joe - Cobra Strike", "", "", "", "", "", "", "", "", "", "", "", "01 55", "", "", "", "" },
@@ -3395,7 +3395,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = {
{ "fc9c1652fe3a2cade6188f4d3692481f", "Andrew Davies", "", "Andrew Davies early notBoulderDash demo (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "fca4a5be1251927027f2c24774a02160", "Activision, John Van Ryzin", "AZ-036-04", "H.E.R.O. (1984) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "fcbbd0a407d3ff7bf857b8a399280ea1", "ZiMAG - Emag - Vidco", "GN-070", "Mysterious Thief, A (1983) (ZiMAG) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
- { "fcbdf405f0fc2027b0ea45bb5af94c1a", "Amiga - Video Soft, Michael K. Glass, Jerry Lawson", "", "3-D Ghost Attack (1983) (Amiga) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
+ { "fcbdf405f0fc2027b0ea45bb5af94c1a", "Amiga - Video Soft, Michael K. Glass, Jerry Lawson", "", "3-D Ghost Attack (1983) (Amiga) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "fcea12625c071ddc49f4e409f4038c60", "Fabrizio Zavagli", "", "Balls! (16-09-2002) (Fabrizio Zavagli)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "fcf8e306f6615f74feba5cb25550038c", "", "", "Blue Dot Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "fd0e5148162e8ec6719445d559f018a9", "Activision, Steve Cartwright - Ariola", "EAX-022, EAX-022-04I - 711 022-720", "Seaquest (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
diff --git a/src/emucore/module.mk b/src/emucore/module.mk
index 0448ec58a..7fd311126 100644
--- a/src/emucore/module.mk
+++ b/src/emucore/module.mk
@@ -43,6 +43,7 @@ MODULE_OBJS := \
src/emucore/CartF8SC.o \
src/emucore/CartFA.o \
src/emucore/CartFA2.o \
+ src/emucore/CartFC.o \
src/emucore/CartFE.o \
src/emucore/CartMDM.o \
src/emucore/CartSB.o \
diff --git a/src/emucore/stella.pro b/src/emucore/stella.pro
index 2f150812c..eb68a666f 100644
--- a/src/emucore/stella.pro
+++ b/src/emucore/stella.pro
@@ -7937,6 +7937,7 @@
"Cart.ModelNo" "2110"
"Cart.Name" "3-D Havoc (1983) (Amiga) (Prototype)"
"Cart.Rarity" "Prototype"
+"Display.Phosphor" "YES"
""
"Cart.MD5" "60d304582d33e2957b73eb300a7495bb"
@@ -17086,11 +17087,12 @@
""
"Cart.MD5" "d54cd41ecfd59e4b72d2c086152b9a75"
-"Cart.Manufacturer" "Amiga"
+"Cart.Manufacturer" "Amiga - Video Soft - Michael K. Glass, Jerry Lawson"
"Cart.ModelNo" "1110"
"Cart.Name" "Power Play Arcade Video Game Album (1983) (Amiga) (Prototype)"
-"Cart.Note" "Ghost Attack, Genesis, Havoc"
+"Cart.Note" "3-D Ghost Attack only (3-D Genesis & 3-D Havoc missing in ROM)"
"Cart.Rarity" "Prototype"
+"Display.Phosphor" "YES"
""
"Cart.MD5" "d5618464dbdc2981f6aa8b955828eeb4"
@@ -20605,6 +20607,7 @@
"Cart.Manufacturer" "Amiga - Video Soft, Michael K. Glass, Jerry Lawson"
"Cart.Name" "3-D Ghost Attack (1983) (Amiga) (Prototype)"
"Cart.Rarity" "Prototype"
+"Display.Phosphor" "YES"
""
"Cart.MD5" "fcea12625c071ddc49f4e409f4038c60"
diff --git a/src/windows/Stella.vcxproj.filters b/src/windows/Stella.vcxproj.filters
index d6c4176b9..355943090 100644
--- a/src/windows/Stella.vcxproj.filters
+++ b/src/windows/Stella.vcxproj.filters
@@ -981,6 +981,12 @@
Source Files\debugger
+
+ Source Files\emucore
+
+
+ Source Files\debugger
+
@@ -2003,6 +2009,12 @@
Header Files\debugger
+
+ Header Files\emucore
+
+
+ Header Files\debugger
+