Add 4Play & SNES MAX card support (#946, #972, PR #982)

Support these new cards in slots 3, 4 or 5; based on code from Lukazi.
- extend Configuration's Input prop sheet page.
- add save/load snapshot for both cards.
- add command line switch for alt controller type (for SNES MAX card).
Change to using Registry's 'Configuration\Slot 3' for slot 3 cards (Uthernet, 4Play & SNES MAX).
Update help doc.
This commit is contained in:
TomCh
2021-09-10 13:57:55 +01:00
committed by GitHub
parent 7f2dd9727d
commit 685b93f387
35 changed files with 1000 additions and 108 deletions
+27 -1
View File
@@ -49,6 +49,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include "ParallelPrinter.h"
#include "Registry.h"
#include "SAM.h"
#include "FourPlay.h"
#include "SNESMAX.h"
#include "SerialComms.h"
#include "Speaker.h"
#include "Tape.h"
@@ -1727,6 +1729,14 @@ void MemInitializeIO(void)
// . Uthernet card has no ROM and only IO mapped at $C0Bx
// NB. I/O handlers setup via tfe_init() & update_tfe_interface()
}
else if (GetCardMgr().QuerySlot(SLOT3) == CT_FourPlay)
{
dynamic_cast<FourPlayCard&>(GetCardMgr().GetRef(SLOT3)).InitializeIO(pCxRomPeripheral, SLOT3);
}
else if (GetCardMgr().QuerySlot(SLOT3) == CT_SNESMAX)
{
dynamic_cast<SNESMAXCard&>(GetCardMgr().GetRef(SLOT3)).InitializeIO(pCxRomPeripheral, SLOT3);
}
// Apple//e: Auxiliary slot contains Extended 80 Column card or RamWorksIII card
@@ -1746,6 +1756,14 @@ void MemInitializeIO(void)
// {
// LoadRom_Clock_Generic(pCxRomPeripheral, SLOT4);
// }
else if (GetCardMgr().QuerySlot(SLOT4) == CT_FourPlay)
{
dynamic_cast<FourPlayCard&>(GetCardMgr().GetRef(SLOT4)).InitializeIO(pCxRomPeripheral, SLOT4);
}
else if (GetCardMgr().QuerySlot(SLOT4) == CT_SNESMAX)
{
dynamic_cast<SNESMAXCard&>(GetCardMgr().GetRef(SLOT4)).InitializeIO(pCxRomPeripheral, SLOT4);
}
if (GetCardMgr().QuerySlot(SLOT5) == CT_Z80)
{
@@ -1753,7 +1771,15 @@ void MemInitializeIO(void)
}
else if (GetCardMgr().QuerySlot(SLOT5) == CT_SAM)
{
ConfigureSAM(pCxRomPeripheral, SLOT5); // $C500 : Z80 card
ConfigureSAM(pCxRomPeripheral, SLOT5); // $C500 : SAM card
}
else if (GetCardMgr().QuerySlot(SLOT5) == CT_FourPlay)
{
dynamic_cast<FourPlayCard&>(GetCardMgr().GetRef(SLOT5)).InitializeIO(pCxRomPeripheral, SLOT5);
}
else if (GetCardMgr().QuerySlot(SLOT5) == CT_SNESMAX)
{
dynamic_cast<SNESMAXCard&>(GetCardMgr().GetRef(SLOT5)).InitializeIO(pCxRomPeripheral, SLOT5);
}
else if (GetCardMgr().QuerySlot(SLOT5) == CT_Disk2)
{