_T("robocop 3"), _T("leaderboard"), _T("b.a.t. ii"), _T("italy'90 soccer"), _T("dames grand maitre"),
_T("rugby coach"), _T("cricket captain"), _T("leviathan"), _T("musicmaster"),
_T("logistics"), _T("scala red"), _T("scala green"),
- _T("strikermanager"),
+ _T("strikermanager"), _T("multi-player soccer manager"),
NULL
};
static const TCHAR *cdmodes[] = { _T("disabled"), _T(""), _T("image"), _T("ioctl"), _T("spti"), _T("aspi"), 0 };
#define SCALA_RED 11
#define SCALA_GREEN 12
#define STRIKERMANAGER 13
+#define MPSOCCERMANAGER 14
static int dflag;
static frame_time_t cycles;
- Reads JOY1DAT in a loop until AND 0x303 == 0x200 or 0x203 (opposite from previous read)
- Resets the system if wrong value after 200 000 read attemps.
+Multi-Player Soccer Manager
+
+- Writes 0x0F00 to POTGO few times
+- Reads JOY1DAT, expects AND 0x303 == 0x301 or 0x302
+- Reads JOY1DAT in a loop until AND 0x303 == 0x301 or 0x302 (opposite from previous read)
+- Resets the system if wrong value after 200 000 read attemps.
+
*/
static uae_u8 oldcia[2][16];
}
}
break;
+ case MPSOCCERMANAGER:
+ if (port == 1) {
+ if (dflag >= 4) {
+ val &= ~0x0303;
+ val |= 0x0302;
+ dflag--;
+ } else if (dflag > 0) {
+ val &= ~0x0303;
+ val |= 0x0301;
+ }
+ }
+ break;
}
return val;
}
dflag = (uaerand () & 7) - 3;
break;
case STRIKERMANAGER:
+ case MPSOCCERMANAGER:
if ((val & 0x0500) == 0x0500) {
dflag++;
} else {
xSendDlgItemMessage(hDlg, IDC_DONGLELIST, CB_ADDSTRING, 0, (LPARAM)_T("Scala MM (Red)"));
xSendDlgItemMessage(hDlg, IDC_DONGLELIST, CB_ADDSTRING, 0, (LPARAM)_T("Scala MM (Green)"));
xSendDlgItemMessage(hDlg, IDC_DONGLELIST, CB_ADDSTRING, 0, (LPARAM)_T("Striker Manager"));
+ xSendDlgItemMessage(hDlg, IDC_DONGLELIST, CB_ADDSTRING, 0, (LPARAM)_T("Multi-Player Soccer Manager"));
xSendDlgItemMessage (hDlg, IDC_SERIAL, CB_RESETCONTENT, 0, 0L);
xSendDlgItemMessage (hDlg, IDC_SERIAL, CB_ADDSTRING, 0, (LPARAM)szNone.c_str());