]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Striker Manager dongle emulation
authorToni Wilen <twilen@winuae.net>
Sun, 21 May 2023 18:20:39 +0000 (21:20 +0300)
committerToni Wilen <twilen@winuae.net>
Sun, 21 May 2023 18:20:39 +0000 (21:20 +0300)
cfgfile.cpp
dongle.cpp
od-win32/win32gui.cpp

index 78f9610e7ab9537f5004baac91f3e78a70c2130b..2cd552753add77e02b5ce9086a10cd6f1a683ee0 100644 (file)
@@ -212,6 +212,7 @@ static const TCHAR *dongles[] =
        _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"),
        NULL
 };
 static const TCHAR *cdmodes[] = { _T("disabled"), _T(""), _T("image"), _T("ioctl"), _T("spti"), _T("aspi"), 0 };
index 1a529dcd97d0960f1d6c4a6684caf81609eed4c4..c11718c140fc3c7049a6dc29e215207b00312844 100644 (file)
@@ -15,6 +15,7 @@
 #include "dongle.h"
 #include "events.h"
 #include "uae.h"
+#include "debug.h"
 
 #define ROBOCOP3 1
 #define LEADERBOARD 2
@@ -28,6 +29,7 @@
 #define LOGISTIX 10
 #define SCALA_RED 11
 #define SCALA_GREEN 12
+#define STRIKERMANAGER 13
 
 static int dflag;
 static frame_time_t cycles;
@@ -93,6 +95,13 @@ Scala MM (Red)
 - Drives firebutton high, then low
 - Polls POTGOR second button pin, it must go low between about 350000-540000 DMA cycles.
 
+Striker Manager
+
+- Writes 0x0F00 to POTGO few times
+- Reads JOY1DAT, expects AND 0x303 == 0x200 or 0x203
+- 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.
+
 */
 
 static uae_u8 oldcia[2][16];
@@ -213,6 +222,18 @@ uae_u16 dongle_joydat (int port, uae_u16 val)
                        val = 0x0303;
                }
                break;
+       case STRIKERMANAGER:
+               if (port == 1) {
+                       if (dflag >= 4) {
+                               val &= ~0x0303;
+                               val |= 0x0203;
+                               dflag--;
+                       } else if (dflag > 0) {
+                               val &= ~0x0303;
+                               val |= 0x0200;
+                       }
+               }
+               break;
        }
        return val;
 }
@@ -228,6 +249,15 @@ void dongle_potgo (uae_u16 val)
        case DAMESGRANDMAITRE:
                dflag = (uaerand () & 7) - 3;
                break;
+       case STRIKERMANAGER:
+               if ((val & 0x0500) == 0x0500) {
+                       dflag++;
+               } else {
+                       if (dflag > 0) {
+                               dflag--;
+                       }
+               }
+               break;
        }
 
 }
index 4866e940da10317c7fdc329da852a5e6664ff7d2..142ab1b782720fd27deed28761e80ac39f4f19a0 100644 (file)
@@ -17793,6 +17793,7 @@ static void init_portsdlg (HWND hDlg)
        xSendDlgItemMessage(hDlg, IDC_DONGLELIST, CB_ADDSTRING, 0, (LPARAM)_T("Logistics/SuperBase"));
        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_SERIAL, CB_RESETCONTENT, 0, 0L);
        xSendDlgItemMessage (hDlg, IDC_SERIAL, CB_ADDSTRING, 0, (LPARAM)szNone.c_str());