]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
2200b7
authorToni Wilen <twilen@winuae.net>
Sat, 5 Jun 2010 15:36:42 +0000 (18:36 +0300)
committerToni Wilen <twilen@winuae.net>
Sat, 5 Jun 2010 15:36:42 +0000 (18:36 +0300)
od-win32/dinput.cpp
od-win32/keyboard_win32.cpp
od-win32/resources/winuae.rc
od-win32/win32.h
od-win32/win32gui.cpp
od-win32/winuaechangelog.txt

index 3c2572b49398e8360fa5deeede591552ae8411c2..c3dc61f4b77a2d1ca683d585a5544e4d9ca9afb8 100644 (file)
@@ -2578,10 +2578,19 @@ int input_get_default_keyboard (int i)
 static void setid (struct uae_input_device *uid, int i, int slot, int sub, int port, int evt)
 {
        uid[i].eventid[slot][sub] = evt;
-       uid[i].port[slot][sub] = port;
+       uid[i].port[slot][sub] = port + 1;
+}
+static void setid (struct uae_input_device *uid, int i, int slot, int sub, int port, int evt, int af)
+{
+       setid (uid, i, slot, sub, port, evt);
+       uid[i].flags[slot][sub] &= ~(ID_FLAG_AUTOFIRE | ID_FLAG_TOGGLE);
+       if (af >= JPORT_AF_NORMAL)
+               uid[i].flags[slot][sub] |= ID_FLAG_AUTOFIRE;
+       if (af == JPORT_AF_TOGGLE)
+               uid[i].flags[slot][sub] |= ID_FLAG_TOGGLE;
 }
 
-int input_get_default_mouse (struct uae_input_device *uid, int i, int port)
+int input_get_default_mouse (struct uae_input_device *uid, int i, int port, int af)
 {
        struct didata *did;
 
@@ -2591,7 +2600,7 @@ int input_get_default_mouse (struct uae_input_device *uid, int i, int port)
        setid (uid, i, ID_AXIS_OFFSET + 0, 0, port, port ? INPUTEVENT_MOUSE2_HORIZ : INPUTEVENT_MOUSE1_HORIZ);
        setid (uid, i, ID_AXIS_OFFSET + 1, 0, port, port ? INPUTEVENT_MOUSE2_VERT : INPUTEVENT_MOUSE1_VERT);
        setid (uid, i, ID_AXIS_OFFSET + 2, 0, port, port ? 0 : INPUTEVENT_MOUSE1_WHEEL);
-       setid (uid, i, ID_BUTTON_OFFSET + 0, 0, port, port ? INPUTEVENT_JOY2_FIRE_BUTTON : INPUTEVENT_JOY1_FIRE_BUTTON);
+       setid (uid, i, ID_BUTTON_OFFSET + 0, 0, port, port ? INPUTEVENT_JOY2_FIRE_BUTTON : INPUTEVENT_JOY1_FIRE_BUTTON, af);
        setid (uid, i, ID_BUTTON_OFFSET + 1, 0, port, port ? INPUTEVENT_JOY2_2ND_BUTTON : INPUTEVENT_JOY1_2ND_BUTTON);
        setid (uid, i, ID_BUTTON_OFFSET + 2, 0, port, port ? INPUTEVENT_JOY2_3RD_BUTTON : INPUTEVENT_JOY1_3RD_BUTTON);
        if (port == 0) { /* map back and forward to ALT+LCUR and ALT+RCUR */
@@ -2609,7 +2618,7 @@ int input_get_default_mouse (struct uae_input_device *uid, int i, int port)
        return 0;
 }
 
-int input_get_default_lightpen (struct uae_input_device *uid, int i, int port)
+int input_get_default_lightpen (struct uae_input_device *uid, int i, int port, int af)
 {
        struct didata *did;
 
@@ -2624,7 +2633,7 @@ int input_get_default_lightpen (struct uae_input_device *uid, int i, int port)
        return 0;
 }
 
-int input_get_default_joystick (struct uae_input_device *uid, int i, int port, int mode)
+int input_get_default_joystick (struct uae_input_device *uid, int i, int port, int af, int mode)
 {
        int j;
        struct didata *did;
@@ -2647,9 +2656,9 @@ int input_get_default_joystick (struct uae_input_device *uid, int i, int port, i
        setid (uid, i, ID_AXIS_OFFSET + 1, 0, port, v);
 
        if (port >= 2) {
-               setid (uid, i, ID_BUTTON_OFFSET + 0, 0, port, port == 3 ? INPUTEVENT_PAR_JOY2_FIRE_BUTTON : INPUTEVENT_PAR_JOY1_FIRE_BUTTON);
+               setid (uid, i, ID_BUTTON_OFFSET + 0, 0, port, port == 3 ? INPUTEVENT_PAR_JOY2_FIRE_BUTTON : INPUTEVENT_PAR_JOY1_FIRE_BUTTON, af);
        } else {
-               setid (uid, i, ID_BUTTON_OFFSET + 0, 0, port, port ? INPUTEVENT_JOY2_FIRE_BUTTON : INPUTEVENT_JOY1_FIRE_BUTTON);
+               setid (uid, i, ID_BUTTON_OFFSET + 0, 0, port, port ? INPUTEVENT_JOY2_FIRE_BUTTON : INPUTEVENT_JOY1_FIRE_BUTTON, af);
                if (isrealbutton (did, 1))
                        setid (uid, i, ID_BUTTON_OFFSET + 1, 0, port, port ? INPUTEVENT_JOY2_2ND_BUTTON : INPUTEVENT_JOY1_2ND_BUTTON);
                if (isrealbutton (did, 2))
@@ -2665,8 +2674,8 @@ int input_get_default_joystick (struct uae_input_device *uid, int i, int port, i
                }
        }
        if (mode == JSEM_MODE_JOYSTICK_CD32) {
-               setid (uid, i, ID_BUTTON_OFFSET + 0, 0, port, port ? INPUTEVENT_JOY2_CD32_RED : INPUTEVENT_JOY1_CD32_RED);
-               setid (uid, i, ID_BUTTON_OFFSET + 0, 1, port, port ? INPUTEVENT_JOY2_FIRE_BUTTON : INPUTEVENT_JOY1_FIRE_BUTTON);
+               setid (uid, i, ID_BUTTON_OFFSET + 0, 0, port, port ? INPUTEVENT_JOY2_CD32_RED : INPUTEVENT_JOY1_CD32_RED, af);
+               setid (uid, i, ID_BUTTON_OFFSET + 0, 1, port, port ? INPUTEVENT_JOY2_FIRE_BUTTON : INPUTEVENT_JOY1_FIRE_BUTTON, af);
                if (isrealbutton (did, 1)) {
                        setid (uid, i, ID_BUTTON_OFFSET + 1, 0, port, port ? INPUTEVENT_JOY2_CD32_BLUE : INPUTEVENT_JOY1_CD32_BLUE);
                        setid (uid, i, ID_BUTTON_OFFSET + 1, 1, port,  port ? INPUTEVENT_JOY2_2ND_BUTTON : INPUTEVENT_JOY1_2ND_BUTTON);
@@ -2687,7 +2696,7 @@ int input_get_default_joystick (struct uae_input_device *uid, int i, int port, i
        return 0;
 }
 
-int input_get_default_joystick_analog (struct uae_input_device *uid, int i, int port)
+int input_get_default_joystick_analog (struct uae_input_device *uid, int i, int port, int af)
 {
        int j;
        struct didata *did;
@@ -2697,7 +2706,7 @@ int input_get_default_joystick_analog (struct uae_input_device *uid, int i, int
        did = &di_joystick[i];
        setid (uid, i, ID_AXIS_OFFSET + 0, 0, port, port ? INPUTEVENT_JOY2_HORIZ_POT : INPUTEVENT_JOY1_HORIZ_POT);
        setid (uid, i, ID_AXIS_OFFSET + 1, 0, port, port ? INPUTEVENT_JOY2_VERT_POT : INPUTEVENT_JOY1_VERT_POT);
-       setid (uid, i, ID_BUTTON_OFFSET + 0, 0, port, port ? INPUTEVENT_JOY2_LEFT : INPUTEVENT_JOY1_LEFT);
+       setid (uid, i, ID_BUTTON_OFFSET + 0, 0, port, port ? INPUTEVENT_JOY2_LEFT : INPUTEVENT_JOY1_LEFT, af);
        if (isrealbutton (did, 1))
                setid (uid, i, ID_BUTTON_OFFSET + 1, 0, port, port ? INPUTEVENT_JOY2_RIGHT : INPUTEVENT_JOY1_RIGHT);
        if (isrealbutton (did, 2))
index d2e2b7c564600d5de23b24a81dc526fb095d3de4..cd85b75bd852b9266728c8b1ee0584720f102d7c 100644 (file)
@@ -177,7 +177,7 @@ static struct uae_input_device_kbr_default keytrans[] = {
        { -1, 0 }
 };
 
-static int kb_np[] = { DIK_NUMPAD4, -1, DIK_NUMPAD6, -1, DIK_NUMPAD8, -1, DIK_NUMPAD2, -1, DIK_NUMPAD0, DIK_NUMPAD5, -1, DIK_DECIMAL, DIK_DIVIDE, DIK_NUMPADENTER, -1, -1 };
+static int kb_np[] = { DIK_NUMPAD4, -1, DIK_NUMPAD6, -1, DIK_NUMPAD8, -1, DIK_NUMPAD2, -1, DIK_NUMPAD0, DIK_NUMPAD5, -1, DIK_DECIMAL, DIK_NUMPADENTER, -1, -1 };
 static int kb_ck[] = { DIK_LEFT, -1, DIK_RIGHT, -1, DIK_UP, -1, DIK_DOWN, -1, DIK_RCONTROL, DIK_RMENU, -1, DIK_RSHIFT, -1, -1 };
 static int kb_se[] = { DIK_A, -1, DIK_D, -1, DIK_W, -1, DIK_S, -1, DIK_LMENU, -1, DIK_LSHIFT, -1, -1 };
 
index 7f95da167b91049fbef324a54fbab7c73141fde1..9e917e4903695de8292e42f0069a9aba3bee0b32 100644 (file)
@@ -409,25 +409,25 @@ STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
     GROUPBOX        "Mouse and Joystick settings",IDC_STATIC,0,3,299,181\r
-    RTEXT           "Port 0:",IDC_STATIC,11,16,25,15,SS_CENTERIMAGE\r
+    RTEXT           "Port 1:",IDC_STATIC,11,16,25,15,SS_CENTERIMAGE\r
     COMBOBOX        IDC_PORT0_JOYS,45,17,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
     COMBOBOX        IDC_PORT0_JOYSMODE,127,35,87,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Test [] Test Port 0 (mouse) configuration.",IDC_PORT0_TEST,218,35,34,14\r
-    PUSHBUTTON      "Remap [] Remap Port 0 configurarion.",IDC_PORT0_REMAP,256,35,31,14\r
-    RTEXT           "Port 1:",IDC_STATIC,11,52,25,15,SS_CENTERIMAGE\r
+    PUSHBUTTON      "Test [] Test Port 1 (mouse) configuration.",IDC_PORT0_TEST,218,35,34,14\r
+    PUSHBUTTON      "Remap [] Remap Port 1 configurarion.",IDC_PORT0_REMAP,256,35,31,14\r
+    RTEXT           "Port 2:",IDC_STATIC,11,52,25,15,SS_CENTERIMAGE\r
     COMBOBOX        IDC_PORT1_JOYS,45,53,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Swap ports [] Swap ports 0 and 1.",IDC_SWAP,118,93,53,14\r
+    PUSHBUTTON      "Swap ports [] Swap ports 1 and 2.",IDC_SWAP,118,93,53,14\r
     COMBOBOX        IDC_PORT1_JOYSMODE,127,70,88,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Test [] Test Port 1 (joystick) configuration.",IDC_PORT1_TEST,218,70,34,14\r
-    PUSHBUTTON      "Remap [] Remap Port 1 configuration.",IDC_PORT1_REMAP,256,70,31,14\r
+    PUSHBUTTON      "Test [] Test Port 2 (joystick) configuration.",IDC_PORT1_TEST,218,70,34,14\r
+    PUSHBUTTON      "Remap [] Remap Port 2 configuration.",IDC_PORT1_REMAP,256,70,31,14\r
     LTEXT           "Parallel port joystick adapter",IDC_STATIC,10,96,99,15,SS_CENTERIMAGE\r
     LTEXT           "X-Arcade layout information []#1",IDC_STATIC,184,96,109,15,SS_NOTIFY | SS_CENTERIMAGE\r
     COMBOBOX        IDC_PORT2_JOYS,45,114,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Test [] Test Parallel port joystick port 0 configuration.",IDC_PORT2_TEST,196,131,44,14\r
-    PUSHBUTTON      "Remap [] Remap Parallel port joystick port 0 configurarion.",IDC_PORT2_REMAP,245,131,41,14\r
+    PUSHBUTTON      "Test [] Test Parallel port joystick port 1 configuration.",IDC_PORT2_TEST,196,131,44,14\r
+    PUSHBUTTON      "Remap [] Remap Parallel port joystick port 1 configurarion.",IDC_PORT2_REMAP,245,131,41,14\r
     COMBOBOX        IDC_PORT3_JOYS,45,149,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Test [] Test Parallel port joystick 1 configuration.",IDC_PORT3_TEST,196,165,44,14\r
-    PUSHBUTTON      "Remap [] Remap Parallel port joystick port 1 configurarion.",IDC_PORT3_REMAP,245,165,41,14\r
+    PUSHBUTTON      "Test [] Test Parallel port joystick 2 configuration.",IDC_PORT3_TEST,196,165,44,14\r
+    PUSHBUTTON      "Remap [] Remap Parallel port joystick port 2 configurarion.",IDC_PORT3_REMAP,245,165,41,14\r
     GROUPBOX        "Mouse extra settings",IDC_STATIC,0,186,299,60\r
     RTEXT           "Mouse speed:",IDC_STATIC,17,200,56,10,SS_CENTERIMAGE\r
     RTEXT           "Magic Mouse cursor mode:",IDC_STATIC,17,217,138,10,SS_CENTERIMAGE\r
@@ -728,7 +728,7 @@ BEGIN
     EDITTEXT        IDC_INPUTDEADZONE,88,195,25,12,ES_NUMBER\r
     RTEXT           "Digital joy-mouse speed:",-1,117,196,88,10,SS_CENTERIMAGE\r
     EDITTEXT        IDC_INPUTSPEEDD,210,195,25,12,ES_NUMBER\r
-    RTEXT           "Autofire rate (lines)",-1,4,212,79,10,SS_CENTERIMAGE\r
+    RTEXT           "Autofire rate (lines):",-1,4,212,79,10,SS_CENTERIMAGE\r
     EDITTEXT        IDC_INPUTAUTOFIRERATE,88,210,25,12,ES_NUMBER\r
     RTEXT           "Analog joy-mouse speed:",-1,117,212,88,10,SS_CENTERIMAGE\r
     EDITTEXT        IDC_INPUTSPEEDA,210,211,25,12,ES_NUMBER\r
@@ -1399,7 +1399,7 @@ BEGIN
     IDS_QS_CD               "CD"\r
     IDS_QS_CD_AUTO          "Autodetect"\r
     IDS_QS_CD_IMAGE         "Image file"\r
-    IDS_REMAPTITLE          "Input captured. F12 = Exit. F11 = Skip curent event in Remap mode."\r
+    IDS_REMAPTITLE          "Input captured. F12 = Exit. F11 = Skip current event in Remap mode."\r
     IDS_FILTER_NOOVERLAYS   "No overlays available"\r
 END\r
 \r
index 3d0ea08db64ce2cd1656a372428ca0d6024c41f3..47973b7fd60262fe65d754e839aa10ac0c4ce0d8 100644 (file)
@@ -18,8 +18,8 @@
 #define WINUAEPUBLICBETA 1
 #define LANG_DLL 1
 
-#define WINUAEBETA L"6"
-#define WINUAEDATE MAKEBD(2010, 6, 3)
+#define WINUAEBETA L"7"
+#define WINUAEDATE MAKEBD(2010, 6, 5)
 #define WINUAEEXTRA L""
 #define WINUAEREV L""
 
index 63ca48246a6504f5e4fe2e0d6f59247c8b941eaf..b39a7d2ff7f168e1d8805f9f381cecff99857644 100644 (file)
@@ -3138,13 +3138,8 @@ static void set_lventry_input (HWND list, int index)
        if (port > 0) {
                TCHAR tmp[256];
                _tcscpy (tmp, name);
-               name[0] = 0;
-               _tcscat (name, L"[ ");
-               _tcscat (name, tmp);
-               _tcscat (name, L" ]");
+               _stprintf (name, L"[PORT%d] %s", port, tmp);
        }
-       ListView_SetItemState (list, index, port > 0 ? LVIS_DROPHILITED : 0, LVIS_DROPHILITED);
-
        ListView_SetItemText (list, index, 1, custom[0] ? custom : name);
        ListView_SetItemText (list, index, 2, af);
        ListView_SetItemText (list, index, 3, toggle);
@@ -3423,16 +3418,16 @@ void InitializeListView (HWND hDlg)
                                listview_column_width[0] = width;
                        entry++;
                }
-               listview_column_width [1] = 260;
-               listview_column_width [2] = 65;
-               listview_column_width [3] = 65;
-               listview_column_width [4] = 30;
+               listview_column_width[1] = 260;
+               listview_column_width[2] = 65;
+               listview_column_width[3] = 65;
+               listview_column_width[4] = 30;
                update_listview_input (hDlg);
 
        } else if (lv_type == LV_INPUTMAP) {
 
-               listview_column_width [0] = 200;
-               listview_column_width [1] = 200;
+               listview_column_width[0] = 200;
+               listview_column_width[1] = 200;
                update_listview_inputmap (hDlg);
 
        } else if (lv_type == LV_DISK) {
@@ -3558,7 +3553,7 @@ void InitializeListView (HWND hDlg)
                                if(width > listview_column_width[2])
                                        listview_column_width[2] = width;
 
-                               listview_column_width [3] = 150;
+                               listview_column_width[3] = 150;
                                ListView_SetItemText(list, result, 3, rootdir);
                                width = ListView_GetStringWidth(list, rootdir) + 10;
                                if(width > listview_column_width[3])
@@ -10859,23 +10854,18 @@ static void init_inputdlg_2 (HWND hDlg)
 {
        TCHAR name1[256], name2[256];
        TCHAR custom1[MAX_DPATH], tmp1[MAX_DPATH];
-       int cnt, index, af, aftmp;
+       int cnt, index, af, aftmp, port;
 
-       if (input_selected_widget < 0 || workprefs.input_selected_setting == GAMEPORT_INPUT_SETTINGS) {
-               EnableWindow (GetDlgItem (hDlg, IDC_INPUTAMIGA), FALSE);
-       } else {
-               EnableWindow (GetDlgItem (hDlg, IDC_INPUTAMIGA), TRUE);
-       }
        SendDlgItemMessage (hDlg, IDC_INPUTAMIGA, CB_RESETCONTENT, 0, 0L);
        SendDlgItemMessage (hDlg, IDC_INPUTAMIGA, CB_ADDSTRING, 0, (LPARAM)szNone);
        WIN32GUI_LoadUIString (IDS_INPUT_CUSTOMEVENT, tmp1, MAX_DPATH);
        SendDlgItemMessage (hDlg, IDC_INPUTAMIGA, CB_ADDSTRING, 0, (LPARAM)tmp1);
-       index = 0; af = 0;
+       index = 0; af = 0; port = 0;
        if (input_selected_widget >= 0) {
-               inputdevice_get_mapped_name (input_selected_device, input_selected_widget, NULL, NULL, name1, custom1, input_selected_sub_num);
+               inputdevice_get_mapped_name (input_selected_device, input_selected_widget, NULL, &port, name1, custom1, input_selected_sub_num);
                cnt = 2;
                while(inputdevice_iterate (input_selected_device, input_selected_widget, name2, &aftmp)) {
-                       free (eventnames[cnt]);
+                       xfree (eventnames[cnt]);
                        eventnames[cnt] = my_strdup (name2);
                        if (name1 && !_tcscmp (name1, name2)) {
                                index = cnt;
@@ -10891,6 +10881,11 @@ static void init_inputdlg_2 (HWND hDlg)
                        SendDlgItemMessage (hDlg, IDC_INPUTAMIGACNT, CB_SETCURSEL, input_selected_sub_num, 0);
                }
        }
+       if (input_selected_widget < 0 || workprefs.input_selected_setting == GAMEPORT_INPUT_SETTINGS || port > 0) {
+               EnableWindow (GetDlgItem (hDlg, IDC_INPUTAMIGA), FALSE);
+       } else {
+               EnableWindow (GetDlgItem (hDlg, IDC_INPUTAMIGA), TRUE);
+       }
 }
 
 static void init_inputdlg (HWND hDlg)
@@ -11176,7 +11171,7 @@ static void CALLBACK timerfunc (HWND hDlg, UINT uMsg, UINT_PTR idEvent, DWORD dw
                                }
                                if (sub >= MAX_INPUT_SUB_EVENT)
                                        sub = MAX_INPUT_SUB_EVENT - 1;
-                               inputdevice_set_mapping (input_selected_device, input_selected_widget, name, NULL, 0, inputmap_port, sub);
+                               inputdevice_set_mapping (input_selected_device, input_selected_widget, name, NULL, IDEV_MAPPED_GAMEPORTSCUSTOM, inputmap_port + 1, sub);
                                InitializeListView (hDlg);
                                inputmap_remap_counter += cntadd;
                                ListView_EnsureVisible (h, inputmap_remap_counter, FALSE);
@@ -11258,8 +11253,10 @@ static void CALLBACK timerfunc (HWND hDlg, UINT uMsg, UINT_PTR idEvent, DWORD dw
                                ListView_SetItemState (GetDlgItem (hDlg, IDC_INPUTLIST), input_selected_widget, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
                                if (rawmode == 1) {
                                        input_find (hDlg, 0, FALSE);
-                                       setfocus (hDlg, IDC_INPUTAMIGA);
-                                       SendDlgItemMessage (hDlg, IDC_INPUTAMIGA, CB_SHOWDROPDOWN , TRUE, 0L);
+                                       if (IsWindowEnabled (GetDlgItem (hDlg, IDC_INPUTAMIGA))) {
+                                               setfocus (hDlg, IDC_INPUTAMIGA);
+                                               SendDlgItemMessage (hDlg, IDC_INPUTAMIGA, CB_SHOWDROPDOWN , TRUE, 0L);
+                                       }
                                }
                        }
                }
@@ -11268,7 +11265,15 @@ static void CALLBACK timerfunc (HWND hDlg, UINT uMsg, UINT_PTR idEvent, DWORD dw
 
 static HWND updatePanel (int id);
 
-static int rawdisable[] = { IDC_PANELTREE, 0, IDC_RESETAMIGA, 0, IDC_QUITEMU, 0, IDC_RESTARTEMU, 0, IDOK, 0, IDCANCEL, 0, IDHELP, 0, -1 };
+static int rawdisable[] = {
+       IDC_INPUTTYPE, 0, 0, IDC_INPUTDEVICE, 0, 0, IDC_INPUTDEVICEDISABLE, 0, 0,
+       IDC_INPUTAMIGACNT, 0, 0, IDC_INPUTAMIGA, 0, 0, IDC_INPUTTEST, 0, 0, IDC_INPUTREMAP, 0, 0,
+       IDC_INPUTCOPY, 0, 0, IDC_INPUTCOPYFROM, 0, 0, IDC_INPUTSWAP, 0, 0,
+       IDC_INPUTDEADZONE, 0, 0, IDC_INPUTSPEEDD, 0, 0, IDC_INPUTAUTOFIRERATE, 0, 0, IDC_INPUTSPEEDA, 0, 0,
+       IDC_PANELTREE, 1, 0, IDC_RESETAMIGA, 1, 0, IDC_QUITEMU, 1, 0, IDC_RESTARTEMU, 1, 0, IDOK, 1, 0, IDCANCEL, 1, 0, IDHELP, 1, 0,
+       -1
+};
+
 
 static void input_find (HWND hDlg, int mode, int set)
 {
@@ -11284,11 +11289,12 @@ static void input_find (HWND hDlg, int mode, int set)
                        SetWindowText (guiDlg, tmp2);
                }
                SetTimer (hDlg, 1, 30, timerfunc);
-               ew (hDlg, IDC_INPUTREMAP, FALSE);
-               ew (hDlg, IDC_INPUTTEST, FALSE);
-               for (int i = 0; rawdisable[i] >= 0; i += 2) {
-                       rawdisable[i + 1] = IsWindowEnabled (GetDlgItem (guiDlg, rawdisable[i]));
-                       EnableWindow (GetDlgItem (guiDlg, rawdisable[i]), FALSE);
+               for (int i = 0; rawdisable[i] >= 0; i += 3) {
+                       HWND w = GetDlgItem (rawdisable[i + 1] ? guiDlg : hDlg, rawdisable[i]);
+                       if (w) {
+                               rawdisable[i + 2] = IsWindowEnabled (w);
+                               EnableWindow (w, FALSE);
+                       }
                }
                ShowCursor (FALSE);
                SetCapture (guiDlg);
@@ -11301,10 +11307,11 @@ static void input_find (HWND hDlg, int mode, int set)
                ReleaseCapture ();
                ShowCursor (TRUE);
                inputdevice_unacquire ();
-               for (int i = 0; rawdisable[i] >= 0; i += 2)
-                       EnableWindow (GetDlgItem (guiDlg, rawdisable[i]), rawdisable[i + 1]);
-               ew (hDlg, IDC_INPUTREMAP, TRUE);
-               ew (hDlg, IDC_INPUTTEST, TRUE);
+               for (int i = 0; rawdisable[i] >= 0; i += 3) {
+                       HWND w = GetDlgItem (rawdisable[i + 1] ? guiDlg : hDlg, rawdisable[i]);
+                       if (w)
+                               EnableWindow (w, rawdisable[i + 2]);
+               }
                inputdevice_settest (FALSE);
                if (rawmode == 2) {
                        SetWindowText (guiDlg, tmp);
index a68c9454aec3c0998cc3fef6559966f40871a2ba..2620486d6b31e3a58e6bca50fe50caca6afa12c9 100644 (file)
@@ -1,4 +1,47 @@
 
+Beta 7:
+
+- do not center horizontally if there is no bitplanes enabled (result was very badly aligned
+  screen, normally not visible but if there are background color changes or sprites..)
+- input config backwards compatibility fix, old versions read GamePorts mode as Configuration#4
+- huge brown paper bag bug fixed, in some situations INTREQR can return bit 15 set.. (fast CPU
+  modes only, introduced in earlier 2.x release)
+- do not emulate hpos offset in non-cycle exact modes, JIT mode can return hpos/vpos value pairs
+  that are not normally possible (and so far only some A500 programs require hpos offset = vpos
+  increments when hpos equals 4, not when hpos equals 0)
+- audio filter emulation didn't always follow power led state correctly
+- emulate fire and left mouse button contact bounce (no 2nd and 3rd because they are connected to
+  POT capacitors) Fixes Spacestone which waits for button release and then immediately checks
+  button state again.. I guess coder had really bad joystick firebutton, planet selection works
+  quite unreliably on my real A1200 :) cycle-exact only
+- NTSC disk timing was not fully compatible with RNC Copylock
+- b6 wordsync change reverted, another hopefully better tweak added
+- joystick button pullups removed, this will break some games' second joystick button read routines
+  but it has to be done because they wouldn't work on real Amigas with standard joystick either and
+  this workaround also breaks some other games that don't expect pullups (Dick Tracy for example)
+  Pullups are automatically enabled if joystick 3rd button is mapped.
+
+- another big input change, Game Ports settings are now always merged with currently selected
+  input configuration (possibly overwriting event that was manually configured in slot 0)
+  In other words, Game Ports panel settings are now finally working as expected by most users
+  instead of only confusing most users :) Just select your gamepad/joystick using GamePorts panel,
+  select Configuration#1 and remap remaining extra buttons, should be simple and easy enough now.
+  
+  This also means old Configuration#x configurations now have Gameports mappings merged when loaded.
+  (which most likely is something you don't want) Workaround: set GamePorts settings to <none>
+  Hopefully some kind of automatic fix is possible..
+
+- GamePorts mapped Configuration#x events are marked as [PortX] in Input list where X is port number.
+- GamePorts custom configuration in Configuration#x mode also supported.
+  NOTE: configuration files that have GamePorts customized Input Configuration#x's are not
+  backwards compatible
+- renamed GamePorts port 0 -> port 1 and port 1 -> port 2, now same as input target port numbers
+  (1 = "mouse" port, 2 = "joystick" port, 3 and 4 are parallel joystick adapter ports)
+- do not add default mappings to Configuration#x joysticks and mice (not needed anymore)
+- automatically disable empty devices in Configuration#x modes
+  
+  Just ask if you have any questions or suggestions. Input configuration is never finished :)
+
 Beta 6:
 
 - CE-mode CIA interrupt delay decreased by 1 CPU clock cycle, tst.b CIAICR immediately followed
@@ -12,10 +55,11 @@ Beta 6:
   broken during C++ conversion)
 - CD32 state restore didn't work if CD32 configuration was not pre-selected
 - save POT capacitors' charge status to statefile
-- disk read DMA wordsync should not skip first syncword if data is already in sync
+- disk read DMA wordsync should not skip first syncword if bit stream is already aligned
+  (Starglider 2 original)
 - on the fly cycle-exact switching broke few betas ago
 - use early blitter finished state emulation only in 68000 cycle exact modes, 68020 "CE" can
-  execute blitter test and immediate blitter register near-instantly in some situations
+  execute blitter busy check followed by write to blitter register really too quickly
 
 Beta 5: