From: Toni Wilen Date: Sat, 5 Jun 2010 15:36:42 +0000 (+0300) Subject: 2200b7 X-Git-Tag: 2200~16 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=75d819dd266256b4f920b663228964a001ad3934;p=francis%2Fwinuae.git 2200b7 --- diff --git a/od-win32/dinput.cpp b/od-win32/dinput.cpp index 3c2572b4..c3dc61f4 100644 --- a/od-win32/dinput.cpp +++ b/od-win32/dinput.cpp @@ -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)) diff --git a/od-win32/keyboard_win32.cpp b/od-win32/keyboard_win32.cpp index d2e2b7c5..cd85b75b 100644 --- a/od-win32/keyboard_win32.cpp +++ b/od-win32/keyboard_win32.cpp @@ -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 }; diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index 7f95da16..9e917e49 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -409,25 +409,25 @@ STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN GROUPBOX "Mouse and Joystick settings",IDC_STATIC,0,3,299,181 - RTEXT "Port 0:",IDC_STATIC,11,16,25,15,SS_CENTERIMAGE + RTEXT "Port 1:",IDC_STATIC,11,16,25,15,SS_CENTERIMAGE COMBOBOX IDC_PORT0_JOYS,45,17,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_PORT0_JOYSMODE,127,35,87,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Test [] Test Port 0 (mouse) configuration.",IDC_PORT0_TEST,218,35,34,14 - PUSHBUTTON "Remap [] Remap Port 0 configurarion.",IDC_PORT0_REMAP,256,35,31,14 - RTEXT "Port 1:",IDC_STATIC,11,52,25,15,SS_CENTERIMAGE + PUSHBUTTON "Test [] Test Port 1 (mouse) configuration.",IDC_PORT0_TEST,218,35,34,14 + PUSHBUTTON "Remap [] Remap Port 1 configurarion.",IDC_PORT0_REMAP,256,35,31,14 + RTEXT "Port 2:",IDC_STATIC,11,52,25,15,SS_CENTERIMAGE COMBOBOX IDC_PORT1_JOYS,45,53,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Swap ports [] Swap ports 0 and 1.",IDC_SWAP,118,93,53,14 + PUSHBUTTON "Swap ports [] Swap ports 1 and 2.",IDC_SWAP,118,93,53,14 COMBOBOX IDC_PORT1_JOYSMODE,127,70,88,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Test [] Test Port 1 (joystick) configuration.",IDC_PORT1_TEST,218,70,34,14 - PUSHBUTTON "Remap [] Remap Port 1 configuration.",IDC_PORT1_REMAP,256,70,31,14 + PUSHBUTTON "Test [] Test Port 2 (joystick) configuration.",IDC_PORT1_TEST,218,70,34,14 + PUSHBUTTON "Remap [] Remap Port 2 configuration.",IDC_PORT1_REMAP,256,70,31,14 LTEXT "Parallel port joystick adapter",IDC_STATIC,10,96,99,15,SS_CENTERIMAGE LTEXT "X-Arcade layout information []#1",IDC_STATIC,184,96,109,15,SS_NOTIFY | SS_CENTERIMAGE COMBOBOX IDC_PORT2_JOYS,45,114,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Test [] Test Parallel port joystick port 0 configuration.",IDC_PORT2_TEST,196,131,44,14 - PUSHBUTTON "Remap [] Remap Parallel port joystick port 0 configurarion.",IDC_PORT2_REMAP,245,131,41,14 + PUSHBUTTON "Test [] Test Parallel port joystick port 1 configuration.",IDC_PORT2_TEST,196,131,44,14 + PUSHBUTTON "Remap [] Remap Parallel port joystick port 1 configurarion.",IDC_PORT2_REMAP,245,131,41,14 COMBOBOX IDC_PORT3_JOYS,45,149,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Test [] Test Parallel port joystick 1 configuration.",IDC_PORT3_TEST,196,165,44,14 - PUSHBUTTON "Remap [] Remap Parallel port joystick port 1 configurarion.",IDC_PORT3_REMAP,245,165,41,14 + PUSHBUTTON "Test [] Test Parallel port joystick 2 configuration.",IDC_PORT3_TEST,196,165,44,14 + PUSHBUTTON "Remap [] Remap Parallel port joystick port 2 configurarion.",IDC_PORT3_REMAP,245,165,41,14 GROUPBOX "Mouse extra settings",IDC_STATIC,0,186,299,60 RTEXT "Mouse speed:",IDC_STATIC,17,200,56,10,SS_CENTERIMAGE RTEXT "Magic Mouse cursor mode:",IDC_STATIC,17,217,138,10,SS_CENTERIMAGE @@ -728,7 +728,7 @@ BEGIN EDITTEXT IDC_INPUTDEADZONE,88,195,25,12,ES_NUMBER RTEXT "Digital joy-mouse speed:",-1,117,196,88,10,SS_CENTERIMAGE EDITTEXT IDC_INPUTSPEEDD,210,195,25,12,ES_NUMBER - RTEXT "Autofire rate (lines)",-1,4,212,79,10,SS_CENTERIMAGE + RTEXT "Autofire rate (lines):",-1,4,212,79,10,SS_CENTERIMAGE EDITTEXT IDC_INPUTAUTOFIRERATE,88,210,25,12,ES_NUMBER RTEXT "Analog joy-mouse speed:",-1,117,212,88,10,SS_CENTERIMAGE EDITTEXT IDC_INPUTSPEEDA,210,211,25,12,ES_NUMBER @@ -1399,7 +1399,7 @@ BEGIN IDS_QS_CD "CD" IDS_QS_CD_AUTO "Autodetect" IDS_QS_CD_IMAGE "Image file" - IDS_REMAPTITLE "Input captured. F12 = Exit. F11 = Skip curent event in Remap mode." + IDS_REMAPTITLE "Input captured. F12 = Exit. F11 = Skip current event in Remap mode." IDS_FILTER_NOOVERLAYS "No overlays available" END diff --git a/od-win32/win32.h b/od-win32/win32.h index 3d0ea08d..47973b7f 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -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"" diff --git a/od-win32/win32gui.cpp b/od-win32/win32gui.cpp index 63ca4824..b39a7d2f 100644 --- a/od-win32/win32gui.cpp +++ b/od-win32/win32gui.cpp @@ -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); diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index a68c9454..2620486d 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -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 + 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: