adds FC bankswitching for Amiga's Power Play Arcade cart #1

This commit is contained in:
thrust26 2019-11-02 12:23:03 +01:00
parent bc191ecd46
commit ed42374644
11 changed files with 55 additions and 9 deletions

View File

@ -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.

View File

@ -3665,7 +3665,7 @@ Ms Pac-Man (Stella extended codes):
<tr><td>4A50 &#178;</td><td>64K 4A50 + ram </td><td>.4A5, .4A50 </td></tr>
<tr><td>4K </td><td>4K Atari </td><td>.4K </td></tr>
<tr><td>4KSC </td><td>CPUWIZ 4K + ram </td><td>.4KS, .4KSC </td></tr>
<tr><td>AR </td><td>Supercharger </td><td>.AR </td></tr>
<tr><td>AR &#178;</td><td>Supercharger </td><td>.AR </td></tr>
<tr><td>BF </td><td>CPUWIZ 256K </td><td>.BF </td></tr>
<tr><td>BFSC </td><td>CPUWIZ 256K + ram</td><td>.BFS, .BFSC </td></tr>
<tr><td>BUS </td><td>Experimental</td><td>.BUS </td></tr>
@ -3693,12 +3693,13 @@ Ms Pac-Man (Stella extended codes):
<tr><td>F8SC </td><td>8K Atari + ram </td><td>.F8S, .F8SC </td></tr>
<tr><td>FA </td><td>CBS RAM Plus </td><td>.FA </td></tr>
<tr><td>FA2 </td><td>CBS RAM Plus 24/28K </td><td>.FA2 </td></tr>
<tr><td>FC </td><td>Amiga Power Play Aracde 16/32K </td><td>.FC </td></tr>
<tr><td>FE </td><td>8K Decathlon </td><td>.FE </td></tr>
<tr><td>MDM </td><td>Menu Driven Megacart </td><td>.MDM </td></tr>
<tr><td>SB </td><td>128-256k SUPERbanking </td><td>.SB </td></tr>
<tr><td>UA </td><td>8K UA Ltd. </td><td>.UA </td></tr>
<tr><td>UASW </td><td>8K UA Ltd. (swapped banks)</td><td>.UASW </td></tr>
<tr><td>WD </td><td>Wickstead Design </td><td>.WD </td></tr>
<tr><td>WD </td><td>Wickstead Design (Pink Panther) </td><td>.WD </td></tr>
<tr><td>X07 &#185;</td><td>64K AtariAge </td><td>.X07 </td></tr>
</table></td>
</tr>

View File

@ -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 \

View File

@ -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 },

View File

@ -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

View File

@ -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<CartridgeFA>(image, size, md5, settings);
case Bankswitch::Type::_FA2:
return make_unique<CartridgeFA2>(image, size, md5, settings);
case Bankswitch::Type::_FC:
return make_unique<CartridgeFC>(image, size, md5, settings);
case Bankswitch::Type::_FE:
return make_unique<CartridgeFE>(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)
{

View File

@ -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
*/

View File

@ -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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },

View File

@ -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 \

View File

@ -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"

View File

@ -981,6 +981,12 @@
<ClCompile Include="..\debugger\BreakpointMap.cxx">
<Filter>Source Files\debugger</Filter>
</ClCompile>
<ClCompile Include="..\emucore\CartFC.cxx">
<Filter>Source Files\emucore</Filter>
</ClCompile>
<ClCompile Include="..\debugger\gui\CartFCWidget.cxx">
<Filter>Source Files\debugger</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common\bspf.hxx">
@ -2003,6 +2009,12 @@
<ClInclude Include="..\debugger\BreakpointMap.hxx">
<Filter>Header Files\debugger</Filter>
</ClInclude>
<ClInclude Include="..\emucore\CartFC.hxx">
<Filter>Header Files\emucore</Filter>
</ClInclude>
<ClInclude Include="..\debugger\gui\CartFCWidget.hxx">
<Filter>Header Files\debugger</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="stella.ico">