From: Toni Wilen Date: Sun, 1 Feb 2015 15:00:58 +0000 (+0200) Subject: 3100b7 X-Git-Tag: 3100~97 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=dcd0fdce915cc2a40e170b9930cd9fd07c23e3f4;p=francis%2Fwinuae.git 3100b7 --- diff --git a/custom.cpp b/custom.cpp index 0e284810..eaec837b 100644 --- a/custom.cpp +++ b/custom.cpp @@ -2476,7 +2476,8 @@ static void update_fetch (int until, int fm) ddfstop_matched = true; } if (pos <= HARD_DDF_STOP && stoppos > HARD_DDF_STOP) { - plf_state = plf_passed_stop_act; + if (plf_state < plf_wait) + plf_state = plf_passed_stop_act; } if (pos <= ddfstop_to_test && stoppos > ddf2) { plf_state = plf_passed_stop2; diff --git a/od-win32/dinput.cpp b/od-win32/dinput.cpp index 390df6d9..c0a17590 100644 --- a/od-win32/dinput.cpp +++ b/od-win32/dinput.cpp @@ -408,7 +408,7 @@ static int doregister_rawinput (void) { int num; bool add; - RAWINPUTDEVICE rid[2 + MAX_INPUT_DEVICES]; + RAWINPUTDEVICE rid[2 + MAX_INPUT_DEVICES] = { 0 }; int activate; if (!rawinput_available) diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index c3255fce..ffb071f5 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -597,8 +597,8 @@ BEGIN EDITTEXT IDC_HEADS,262,90,40,15,ES_NUMBER RTEXT "Reserved:",IDC_RESERVED_TEXT,307,94,50,10 EDITTEXT IDC_RESERVED,362,90,28,15,ES_NUMBER - RTEXT "HD Controller:",IDC_STATIC,11,113,54,10,SS_CENTERIMAGE - COMBOBOX IDC_HDF_CONTROLLER,73,112,93,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + RTEXT "HD Controller:",IDC_STATIC,10,94,54,10,SS_CENTERIMAGE + COMBOBOX IDC_HDF_CONTROLLER,6,112,158,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP RTEXT "Sectors:",IDC_SECTORS_TEXT,209,113,48,10 EDITTEXT IDC_SECTORS,262,111,40,15,ES_NUMBER RTEXT "Block size:",IDC_BLOCKSIZE_TEXT,306,113,50,10 @@ -863,10 +863,9 @@ BEGIN COMBOBOX IDC_HARDDRIVE,49,9,339,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP EDITTEXT IDC_HDFINFO,5,29,385,12,ES_CENTER | ES_READONLY EDITTEXT IDC_HDFINFO2,5,46,385,12,ES_CENTER | ES_READONLY - DEFPUSHBUTTON "Create hard disk image file",IDC_HARDDRIVE_IMAGE,49,67,115,14 + DEFPUSHBUTTON "Create hard disk image file",IDC_HARDDRIVE_IMAGE,40,67,115,14 EDITTEXT IDC_PATH_NAME,188,67,97,15,ES_AUTOHSCROLL | NOT WS_VISIBLE - RTEXT "HD Controller:",IDC_STATIC,16,90,56,10,SS_CENTERIMAGE - COMBOBOX IDC_HDF_CONTROLLER,80,89,92,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_HDF_CONTROLLER,8,89,164,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP CONTROL "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,315,71,60,10 DEFPUSHBUTTON "Add hard drive",IDOK,236,87,73,14 PUSHBUTTON "Cancel",IDCANCEL,316,87,73,14 @@ -966,7 +965,7 @@ BEGIN PUSHBUTTON "Open [] Open selected file.",IDC_LOGOPEN,337,280,51,14 COMBOBOX IDC_LOGSELECT,7,263,137,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP CONTROL "Enable full logging",IDC_LOGENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,151,264,93,12 - PUSHBUTTON "Save All [] Save and open both logs and config file.",IDC_LOGSAVE,337,264,51,14 + PUSHBUTTON "Save All [] Create zip file that includes both logs and config file.",IDC_LOGSAVE,337,264,51,14 GROUPBOX "Debug logging",IDC_STATIC,1,248,393,53 CONTROL "Log window",IDC_LOGENABLE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,254,264,68,12 CONTROL "Portable mode",IDC_REGISTRYMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,303,231,82,11 @@ -1134,8 +1133,7 @@ BEGIN COMBOBOX IDC_NETDEVICE,202,256,178,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "CD32 Full Motion Video cartridge",IDC_CS_CD32FMV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,242,151,11 CONTROL "Toccata Z2 sound card emulation",IDC_CS_TOCCATA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,255,151,11 - CONTROL "Toccata Paula audio mix",IDC_CS_TOCCATAMIXER, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,268,151,11 + CONTROL "Toccata Paula audio mix",IDC_CS_TOCCATAMIXER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,268,151,11 END IDD_INPUTMAP DIALOGEX 0, 0, 421, 341 diff --git a/od-win32/win32.h b/od-win32/win32.h index 2e6aa5c1..a784ed61 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -20,12 +20,12 @@ #define LANG_DLL_FULL_VERSION_MATCH 1 #if WINUAEPUBLICBETA -#define WINUAEBETA _T("6") +#define WINUAEBETA _T("7") #else #define WINUAEBETA _T("") #endif -#define WINUAEDATE MAKEBD(2015, 1, 23) +#define WINUAEDATE MAKEBD(2015, 2, 1) //#define WINUAEEXTRA _T("AmiKit Preview") //#define WINUAEEXTRA _T("Amiga Forever Edition") diff --git a/od-win32/win32gui.cpp b/od-win32/win32gui.cpp index df8c2001..8b92ca30 100644 --- a/od-win32/win32gui.cpp +++ b/od-win32/win32gui.cpp @@ -187,15 +187,20 @@ struct scsiromselect TCHAR *name; int mask; }; -static struct scsiromselect scsiromdata[] = +static const struct scsiromselect scsiromdata[] = { { _T("A590/A2091"), workprefs.a2091rom.roms[0].romfile, ROMTYPE_A2091 | ROMTYPE_NONE }, - { _T("GVP Series II"), workprefs.gvprom.roms[0].romfile, ROMTYPE_GVP | ROMTYPE_NONE }, + { _T("GVP Series I"), workprefs.gvps1rom.roms[0].romfile, ROMTYPE_GVPS1 | ROMTYPE_NONE }, + { _T("GVP Series II"), workprefs.gvps2rom.roms[0].romfile, ROMTYPE_GVPS2 | ROMTYPE_NONE }, { _T("A4091"), workprefs.a4091rom.roms[0].romfile, ROMTYPE_A4091 }, { _T("Fastlane"), workprefs.fastlanerom.roms[0].romfile, ROMTYPE_FASTLANE }, { _T("Oktagon 2008"), workprefs.oktagonrom.roms[0].romfile, ROMTYPE_OKTAGON }, { _T("Blizzard SCSI Kit IV"), workprefs.acceleratorextromfile, ROMTYPE_CPUBOARDEXT }, { _T("AMAX"), workprefs.amaxromfile, ROMTYPE_AMAX | ROMTYPE_NONE }, + { _T("AlfaPower/AT-Bus 2008"), workprefs.alfrom.roms[0].romfile, ROMTYPE_ALFA }, + { _T("AlfaPower Plus"), workprefs.alfplusrom.roms[0].romfile, ROMTYPE_ALFAPLUS }, + { _T("Apollo SCSI/IDE"), workprefs.apollorom.roms[0].romfile, ROMTYPE_APOLLO }, + { _T("Masoboshi SCSI/IDE"), workprefs.masoboshirom.roms[0].romfile, ROMTYPE_MASOBOSHI | ROMTYPE_NONE }, { NULL, 0 } }; @@ -454,6 +459,9 @@ static BOOL GetFileDialog (OPENFILENAME *opn, const GUID *guid, int mode) pfd->SetFileTypeIndex (opn->nFilterIndex); } + if (mode >= 0 && opn->lpstrFile) { + pfd->SetFileName(opn->lpstrFile); + } if (opn->lpstrTitle) { pfd->SetTitle (opn->lpstrTitle); } @@ -1663,10 +1671,16 @@ static void show_rom_list (void) 57, 58, -1, -1, // A4091 102, -1, -1, // Fastlane 103, -1, -1, // Oktagon + 117, -1, -1, // alf + 118, -1, -1, // alf+ + 120, -1, -2, // masoboshi + 18, -1, 19, -1, 74, 23, -1, -1, // CD32 FMV 91, -1, -2, // Picasso IV 105, 106, -1, -1, // A2630 + 119, -1, -1, // Apollo 1240/1260 + 110, -1, -1, // GVP A530 114, -1, -1, // A3001 89, -1, -1, // 1230-IV 89, -1, 94, -1, -1, // 1230-IV SCSI @@ -1698,11 +1712,15 @@ static void show_rom_list (void) p1 = _T("A500 Boot ROM 1.2\0A500 Boot ROM 1.3\0A500+\0A600\0A1000\0A1200\0A3000\0A4000\0A4000T\0") _T("CD32\0CDTV\0CDTV-CR\0Arcadia Multi Select\0") - _T("A590/A2091 SCSI\0GVP Series I SCSI\0GVP Series II SCSI\0A4091 SCSI\0Fastlane\0Oktagon 2008\0") + _T("A590/A2091 SCSI/XT\0GVP Series I SCSI\0GVP Series II SCSI\0A4091 SCSI\0Fastlane SCSI\0Oktagon 2008 SCSI\0") + _T("AlfaPower/AT-BUS 508/2008 SCSI\0AlfaPower Plus SCSI\0Masoboshi MC-702 IDE/SCSI\0") + _T("CD32 Full Motion Video\0") _T("Picasso IV\0") _T("A2620/A2630\0") + _T("Apollo 1240/1260+SCSI\0") + _T("GVP A530\0") _T("GVP A3001 Series I\0") _T("Blizzard 1230-IV\0Blizzard 1260\0") _T("Blizzard 1230-IV/SCSI\0Blizzard 1260/SCSI\0") @@ -2609,6 +2627,7 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs if (multi) openFileName.Flags |= OFN_ALLOWMULTISELECT; if (flag == 1 || flag == 3 || flag == 5 || flag == 9 || flag == 16) { + openFileName.Flags &= ~OFN_FILEMUSTEXIST; if (!(result = GetSaveFileName_2 (hDlg, &openFileName, guid))) write_log (_T("GetSaveFileNameX() failed, err=%d.\n"), GetLastError ()); } else { @@ -4304,7 +4323,13 @@ void InitializeListView (HWND hDlg) const TCHAR *idedevs[] = { _T("IDE:%d"), _T("MB IDE:%d"), - _T("GVP IDE:%d") + _T("GVP IDE:%d"), + _T("Alfa:%d"), + _T("Alfa 2nd:%d"), + _T("Apollo:%d"), + _T("Apollo 2nd:%d"), + _T("Masoboshi:%d"), + _T("Masoboshi 2nd:%d") }; _stprintf (blocksize_str, _T("%d"), ci->blocksize); _stprintf (devname_str, idedevs[ctype - HD_CONTROLLER_TYPE_IDE_FIRST], ci->controller_unit); @@ -4324,10 +4349,14 @@ void InitializeListView (HWND hDlg) _T("Fastlane 2nd:%s"), _T("Oktagon:%s"), _T("Oktagon 2nd:%s"), + _T("Apollo:%s"), + _T("Apollo 2nd:%s"), + _T("Masoboshi:%s"), + _T("Masoboshi 2nd:%s"), _T("A3000:%s"), _T("A4000T:%s"), _T("CDTV:%s"), - _T("Accelerator:%s") + _T("Accelerator SCSI:%s") }; if (ci->controller_unit == 7 && (ctype == HD_CONTROLLER_TYPE_SCSI_A2091 || ctype == HD_CONTROLLER_TYPE_SCSI_A2091_2)) _tcscpy(sid, _T("XT")); @@ -5250,6 +5279,8 @@ static void resetregistry (void) regdelete (NULL, _T("ShownsupportedModes")); } +#include "zip.h" + static void copylog (const TCHAR *name, const TCHAR *path, FILE *f) { FILE *s; @@ -5283,17 +5314,100 @@ static void saveconfig (FILE *f) xfree (s); } -static void savelog (int all) +static void zipdate(zip_fileinfo *zi) { - FILE *f; + SYSTEMTIME st; + FILETIME ft; + WORD dosdate, dostime; - TCHAR tmp[MAX_DPATH]; - tmp[0] = 0; - if (GetTempPath (MAX_DPATH, tmp) <= 0) + memset(zi, 0, sizeof zip_fileinfo); + + GetLocalTime (&st); + SystemTimeToFileTime (&st, &ft); + FileTimeToDosDateTime(&ft, &dosdate, &dostime); + zi->dosDate = (dosdate << 16) | dostime; +} + +static void ziplog(const char *name, const TCHAR *path, zipFile zf) +{ + zip_fileinfo zi; + FILE *s; + + s = my_opentext (path); + if (s) { + zipdate(&zi); + if (zipOpenNewFileInZip(zf, name, &zi, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_DEFAULT_COMPRESSION) == ZIP_OK) { + for (;;) { + TCHAR buf[MAX_DPATH]; + if (!fgetws (buf, sizeof buf / sizeof (TCHAR), s)) + break; + zipWriteInFileInZip(zf, buf, _tcslen(buf) * sizeof TCHAR); + } + zipCloseFileInZip(zf); + } + xfree(s); + } +} +static void zipconfig(const char *name, zipFile zf) +{ + int len; + uae_u8 *s; + zip_fileinfo zi; + + s = save_configuration (&len, true); + if (!s) return; + zipdate(&zi); + if (zipOpenNewFileInZip(zf, name, &zi, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_DEFAULT_COMPRESSION) == ZIP_OK) { + zipWriteInFileInZip(zf, s, len); + zipCloseFileInZip(zf); + } + xfree(s); +} + +static void savelog (HWND hDlg, int all) +{ + TCHAR tmp[MAX_DPATH], tmp2[MAX_DPATH]; + tmp[0] = 0; if (all) { + OPENFILENAME openFileName = { 0 }; + flush_log (); - _tcscat (tmp, _T("winuae_debug.txt")); + _tcscat (tmp, _T("winuae_debug.zip")); + _tcscpy (tmp2, tmp); + + openFileName.lStructSize = sizeof (OPENFILENAME); + openFileName.hwndOwner = hDlg; + openFileName.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT | + OFN_LONGNAMES | OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_ENABLESIZING; + openFileName.lpstrFile = tmp; + openFileName.lpstrFileTitle = tmp2; + openFileName.nMaxFile = MAX_DPATH; + openFileName.nMaxFileTitle = MAX_DPATH; + openFileName.lpstrDefExt = _T("zip"); + + // {8F1A2703-9FE0-468A-BBD7-D2336FD693E8} + static const GUID logdialogguid = { 0x8f1a2703, 0x9fe0, 0x468a, { 0xbb, 0xd7, 0xd2, 0x33, 0x6f, 0xd6, 0x93, 0xe8 } }; + if (GetSaveFileName_2 (hDlg, &openFileName, &logdialogguid)) { + zipFile zf = zipOpen(openFileName.lpstrFile, 0); + if (zf) { + ziplog("winuaebootlog.txt", bootlogpath, zf); + ziplog("winuaelog.txt", logpath, zf); + zipconfig("config.uae", zf); + } + zipClose(zf, NULL); + } + } else { + if (GetTempPath (MAX_DPATH, tmp) <= 0) + return; + _tcscat (tmp, _T("winuae_config.txt")); + FILE *f = _tfopen (tmp, _T("wt, ccs=UTF-8")); + saveconfig (f); + fclose (f); + ShellExecute (NULL, _T("open"), tmp, NULL, NULL, SW_SHOWNORMAL); + } +#if 0 + if (all) { f = _tfopen (tmp, _T("wt, ccs=UTF-8")); copylog (_T("winuaebootlog"), bootlogpath, f); copylog (_T("winuaelog"), logpath, f); @@ -5308,7 +5422,7 @@ static void savelog (int all) saveconfig (f); fclose (f); } - ShellExecute (NULL, _T("open"), tmp, NULL, NULL, SW_SHOWNORMAL); +#endif } pathtype path_type; @@ -5414,7 +5528,7 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM switch (LOWORD (wParam)) { case IDC_LOGSAVE: - savelog (1); + savelog (hDlg, 1); break; case IDC_LOGENABLE: winuaelog_temporary_enable = ischecked (hDlg, IDC_LOGENABLE); @@ -5433,7 +5547,7 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM if (logpath[0]) ShellExecute (NULL, _T("open"), logpath, NULL, NULL, SW_SHOWNORMAL); } else if (val == 2) { - savelog (0); + savelog (hDlg, 0); } break; case IDC_PATHS_ROMS: @@ -8336,6 +8450,8 @@ static INT_PTR CALLBACK MemoryDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARA SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM)_T("Fusion Forty")); SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM)_T("GVP A3001 Series I")); SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM)_T("GVP A3001 Series II")); + SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM)_T("Apollo 1240/1260")); + SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM)_T("GVP A530")); setcpuboardmemsize(hDlg); case WM_USER: @@ -8397,7 +8513,7 @@ static INT_PTR CALLBACK MemoryDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARA return FALSE; } -static void addromfiles (UAEREG *fkey, HWND hDlg, DWORD d, const TCHAR *path, int type) +static void addromfiles (UAEREG *fkey, HWND hDlg, DWORD d, const TCHAR *path, int type1, int type2) { int idx; TCHAR tmp[MAX_DPATH]; @@ -8425,13 +8541,19 @@ static void addromfiles (UAEREG *fkey, HWND hDlg, DWORD d, const TCHAR *path, in } if (idx2 >= 0) { struct romdata *rd = getromdatabyidgroup (idx2, group, subitem); - if (rd && ((((rd->type & ROMTYPE_GROUP_MASK) & (type & ROMTYPE_GROUP_MASK)) && ((rd->type & ROMTYPE_SUB_MASK) == (type & ROMTYPE_SUB_MASK) || !(type & ROMTYPE_SUB_MASK))) || - (rd->type & type) == ROMTYPE_NONE)) { - getromname (rd, tmp); - if (SendDlgItemMessage (hDlg, d, CB_FINDSTRING, (WPARAM)-1, (LPARAM)tmp) < 0) - SendDlgItemMessage(hDlg, d, CB_ADDSTRING, 0, (LPARAM)tmp); - if (rd == rdx) - _tcscpy (seltmp, tmp); + for (int i = 0; i < 2; i++) { + int type = i ? type2 : type1; + if (type) { + if (rd && ((((rd->type & ROMTYPE_GROUP_MASK) & (type & ROMTYPE_GROUP_MASK)) && ((rd->type & ROMTYPE_SUB_MASK) == (type & ROMTYPE_SUB_MASK) || !(type & ROMTYPE_SUB_MASK))) || + (rd->type & type) == ROMTYPE_NONE)) { + getromname (rd, tmp); + if (SendDlgItemMessage (hDlg, d, CB_FINDSTRING, (WPARAM)-1, (LPARAM)tmp) < 0) + SendDlgItemMessage(hDlg, d, CB_ADDSTRING, 0, (LPARAM)tmp); + if (rd == rdx) + _tcscpy (seltmp, tmp); + break; + } + } } } } @@ -8480,15 +8602,15 @@ static void values_to_kickstartdlg (HWND hDlg) fkey = regcreatetree (NULL, _T("DetectedROMs")); load_keyring(&workprefs, NULL); addromfiles (fkey, hDlg, IDC_ROMFILE, workprefs.romfile, - ROMTYPE_KICK | ROMTYPE_KICKCD32); + ROMTYPE_KICK | ROMTYPE_KICKCD32, 0); addromfiles (fkey, hDlg, IDC_ROMFILE2, workprefs.romextfile, - ROMTYPE_EXTCD32 | ROMTYPE_EXTCDTV | ROMTYPE_ARCADIABIOS); + ROMTYPE_EXTCD32 | ROMTYPE_EXTCDTV | ROMTYPE_ARCADIABIOS, 0); addromfiles (fkey, hDlg, IDC_CARTFILE, workprefs.cartfile, - ROMTYPE_FREEZER | ROMTYPE_ARCADIAGAME | ROMTYPE_CD32CART); + ROMTYPE_FREEZER | ROMTYPE_ARCADIAGAME | ROMTYPE_CD32CART, 0); addromfiles (fkey, hDlg, IDC_SCSIROMFILE, scsiromdata[scsiromselected].name, - scsiromdata[scsiromselected].mask); + scsiromdata[scsiromselected].mask, 0); addromfiles(fkey, hDlg, IDC_CPUBOARDROMFILE, workprefs.acceleratorromfile, - ROMTYPE_CPUBOARD); + ROMTYPE_CPUBOARD, ROMTYPE_GVPS2); regclosetree(fkey); SetDlgItemText(hDlg, IDC_FLASHFILE, workprefs.flashfile); @@ -8634,7 +8756,7 @@ static INT_PTR CALLBACK KickstartDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP UAEREG *fkey = regcreatetree (NULL, _T("DetectedROMs")); scsiromselected = val; addromfiles (fkey, hDlg, IDC_SCSIROMFILE, scsiromdata[scsiromselected].name, - scsiromdata[scsiromselected].mask); + scsiromdata[scsiromselected].mask, 0); regclosetree(fkey); } break; @@ -10360,6 +10482,12 @@ static void inithdcontroller (HWND hDlg, int ctype, int devtype) SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("IDE (Auto)")); SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("Gayle/A4000 IDE")); SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("GVP A3001 IDE")); + SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("AlfaPower/AT-Bus 2008 IDE")); + SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("AlfaPower/AT-Bus 2008 #2 IDE")); + SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("Apollo IDE")); + SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("Apollo #2 IDE")); + SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("Masoboshi IDE")); + SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("Masoboshi #2 IDE")); SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("SCSI (Auto)")); SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("A590/A2091 SCSI")); SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("A590/A2091 #2 SCSI")); @@ -10371,6 +10499,10 @@ static void inithdcontroller (HWND hDlg, int ctype, int devtype) SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("Fastlane #2 SCSI")); SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("Oktagon 2008 SCSI")); SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("Oktagon 2008 #2 SCSI")); + SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("Apollo SCSI")); + SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("Apollo #2 SCSI")); + SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("Masoboshi SCSI")); + SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("Masoboshi #2 SCSI")); SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("A3000 SCSI")); SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("A4000T SCSI")); SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER, CB_ADDSTRING, 0, (LPARAM)_T("CDTV SCSI")); @@ -10667,7 +10799,10 @@ static INT_PTR CALLBACK CDDriveSettingsProc (HWND hDlg, UINT msg, WPARAM wParam, case WM_INITDIALOG: recursive++; if (current_cddlg.ci.controller_type == HD_CONTROLLER_TYPE_UAE) - current_cddlg.ci.controller_type = (cfgfile_board_enabled(&workprefs.a2091rom) || cfgfile_board_enabled(&workprefs.gvprom) || cfgfile_board_enabled(&workprefs.a4091rom) || workprefs.cs_cdtvscsi || (workprefs.cs_mbdmac & 3)) ? HD_CONTROLLER_TYPE_SCSI_AUTO : HD_CONTROLLER_TYPE_IDE_AUTO; + current_cddlg.ci.controller_type = (cfgfile_board_enabled(&workprefs.a2091rom) || + cfgfile_board_enabled(&workprefs.gvps2rom) || cfgfile_board_enabled(&workprefs.a4091rom) || + workprefs.cs_cdtvscsi || + (workprefs.cs_mbdmac & 3)) ? HD_CONTROLLER_TYPE_SCSI_AUTO : HD_CONTROLLER_TYPE_IDE_AUTO; inithdcontroller(hDlg, current_cddlg.ci.controller_type, UAEDEV_CD); SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_SETCURSEL, current_cddlg.ci.controller_unit, 0); InitializeListView (hDlg); diff --git a/od-win32/winuae_msvc11/winuae_msvc.vcxproj b/od-win32/winuae_msvc11/winuae_msvc.vcxproj index 836b0c4e..8587d383 100644 --- a/od-win32/winuae_msvc11/winuae_msvc.vcxproj +++ b/od-win32/winuae_msvc11/winuae_msvc.vcxproj @@ -789,7 +789,9 @@ + + diff --git a/od-win32/winuae_msvc11/winuae_msvc.vcxproj.filters b/od-win32/winuae_msvc11/winuae_msvc.vcxproj.filters index 142b5933..9a9d9bfe 100644 --- a/od-win32/winuae_msvc11/winuae_msvc.vcxproj.filters +++ b/od-win32/winuae_msvc11/winuae_msvc.vcxproj.filters @@ -730,6 +730,12 @@ common + + unpackers\zip + + + unpackers\zip + diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index 418ccdc7..d96ae82b 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -1,4 +1,60 @@ +Beta 7: + +- Fixed infinite recursion (and stack overflow) when pause when uncaptered is enabled and display mode changes. +- Added AlfaPower/AT-BUS 508/2008/AlfaPower Plus IDE controller. +- Very simple low level SCSI emulator added to support Apollo software bit-banging SCSI. +- Added Apollo IDE/SCSI board (AT500/AT2008) and Apollo 1240/1260 accelerator boards with SCSI. +- Added GVP Series I SCSI controller. +- Added GVP A530 accelerator. Uses same boot ROM as GVP Series II SCSI controllers. (Uses GVP #2 SCSI slot) +- Added Masoboshi MC-702 IDE+SCSI controller. +- Toccata CD audio (AUX1) volume control added. +- Another Restart related crash fix. +- Added "framecounter" float shader variable. +- Paths panel Save All button now creates zip file that contains winuaebootlog.txt, winuaelog.txt and config file. +- Quickstart A1200 + accelerator board, A500+ and A600 with expansion never had RTC. (Wrong order of functions..) +- Possible clock sync option small stability improvement. +- Fixed memory corruption if directory harddrive with empty name was selected. + +SCSI/IDE controller notes: + +GVP Series I: +- Not true DMA, DMA transfers from WD to/from onboard SRAM buffer. CPU needed to read/write buffer ram. +- Driver (scsidev.device) is very old and has (many?) limits, for example only OFS and FFS partitions mount correctly. + +AlfaPower/AT-Bus 508/2008/AlfaPower Plus: +- AlfaPower: no hardware interrupt (!!), AlfaPower Plus implements interrupt support. +- v6.10 ROM (Last that works with non-Plus hardware?) and v8.3 that requires Plus. + +Apollo: +- All Apollo variants seems to have identical SCSI hardware. (Accelerators and 500/2000) +- SCSI is working. IDE is not fully tested, only AT500/AT2000 have full IDE driver. For some reason + Apollo 1240/1260 driver still have short "is there any IDE drives" detection code remaining. +- "Software" SCSI, hardware can only do bus arbitration in hardware, everything else is done by bit-banging + SCSI IO lines. Both SCSI and IDE also use non-DMA data transfers. +- 128k Apollo ROMs (68060 f00000 ROM code and SCSI driver) are currrently supported. Non-accelerator + (AT500/AT2000) ROMs don't seem to be available = can't test IDE emulation. +- 128k v5.60 ROM added. Seems to be last 1240/1260 ROM with SCSI. + +Masoboshi: +- Unusual design, SCSI supports both PIO and DMA, software selectable. +- IDE and SCSI in non-DMA mode working. +- SCSI writes are not working correctly, do not use! DMA controller not yet emulated. +- "2.201" (device version) boot ROM added. ROM image does not have any version numbers or dates. +- IDE driver uses CHS addressing and seems to have problems with 2G drives, actual limit may be smallewr. + It tries to access first unavailable block number at the end of drive. (Driver flashes red background + color if drive returns error status) + +Most popular SCSI and IDE controllers are now implemented. +Remaining IDE boards that I'd like to support: +- Roctec RocHard (Need boot ROM) +- AdIDE 40/44 (Need boot ROM) +Remaining SCSI boards are 5380/53c80 based boards that need chip emulation first: +- All SupraDrives. +- Trumpcard 500/2000 + +Perhaps others too. As long as at least one boot ROM is found for unsupported boards. + Beta 6: - b5 input device update fix, changing to any keyboard layout didn't reset "remembered" device name.