*.opendb
packages
packages.config
+*.sqlite
return audio_work_to_do;
}
+static void update_volume(int nr, uae_u16 v)
+{
+ struct audio_channel_data *cdp = audio_channel + nr;
+ // 7 bit register in Paula.
+ v &= 127;
+ if (v > 64)
+ v = 64;
+ cdp->data.vol = v;
+}
+
uae_u16 audio_dmal (void)
{
uae_u16 dmal = 0;
else
cdp[1].per = PERIOD_MIN * CYCLE_UNIT;
} else if (audav) {
- cdp[1].data.vol = cdp->dat;
- cdp[1].data.vol &= 127;
- if (cdp[1].data.vol > 64)
- cdp[1].data.vol = 64;
+ update_volume(nr + 1, cdp->dat);
}
} else {
#if TEST_AUDIO > 0
{
struct audio_channel_data *cdp = audio_channel + nr;
- // 7 bit register in Paula.
- v &= 127;
- if (v > 64)
- v = 64;
audio_activate ();
update_audio ();
- cdp->data.vol = v;
+ update_volume(nr, v);
#if DEBUG_AUDIO > 0
if (debugchannel (nr))
write_log (_T("AUD%dVOL: %d %08X\n"), nr, v, M68K_GETPC);
static void addbcromtypenet(struct uae_prefs *p, int romtype, const TCHAR *netname, int devnum)
{
+ int is = is_device_rom(p, romtype, devnum);
if (netname == NULL || netname[0] == 0) {
- clear_device_rom(p, romtype, devnum, true);
+ if (is < 0)
+ clear_device_rom(p, romtype, devnum, true);
} else {
- struct boardromconfig *brc = get_device_rom_new(p, romtype, devnum, NULL);
- if (brc) {
- if (!brc->roms[0].romfile[0]) {
- _tcscpy(brc->roms[0].romfile, _T(":ENABLED"));
+ if (is < 0) {
+ struct boardromconfig *brc = get_device_rom_new(p, romtype, devnum, NULL);
+ if (brc) {
+ if (!brc->roms[0].romfile[0]) {
+ _tcscpy(brc->roms[0].romfile, _T(":ENABLED"));
+ }
+ ethernet_updateselection();
+ if (!brc->roms[0].device_settings)
+ brc->roms[0].device_settings = ethernet_getselection(netname);
}
- ethernet_updateselection();
- if (!brc->roms[0].device_settings)
- brc->roms[0].device_settings = ethernet_getselection(netname);
}
}
}
while (list[i]) {
romtype = list[i];
if (is_board_enabled(p, romtype, 0)) {
+ write_log(_T("ROMTYPE %08x removed\n"), romtype);
addbcromtype(p, romtype, false, NULL, 0);
}
i++;
uae_u16 w = *val;
if (is_a2630(&currprefs)) {
if ((addr == 0x0040 && size == 2) || (addr == 0x0041 && size == 1)) {
- write_log(_T("A2630 write %04x PC=%08x\n"), w, M68K_GETPC);
+ write_log(_T("A2630 write %04x s=%d PC=%08x\n"), w, size, M68K_GETPC);
a2630_io = w;
// bit 0: unmap 0x000000
// bit 1: unmap 0xf80000
static TCHAR *getfrombstr(uaecptr pp)
{
uae_u8 *p = get_real_address ((uaecptr)(pp << 2));
- TCHAR *s = xmalloc (TCHAR, p[0] + 1);
+ TCHAR *s = xcalloc (TCHAR, p[0] + 1);
return au_copy (s, p[0] + 1, (char*)p + 1);
}
while (doslist) {
int type = get_long_debug (doslist + 4);
uaecptr msgport = get_long_debug (doslist + 8);
- TCHAR *name = getfrombstr (get_long_debug (doslist + 40));
- console_out_f (_T("%08x: %d %08x '%s'\n"), doslist, type, msgport, name);
+ TCHAR *name = getfrombstr(get_long_debug(doslist + 40));
+ console_out_f(_T("%08x: %d %08x '%s'\n"), doslist, type, msgport, name);
if (type == 0) {
uaecptr fssm = get_long_debug(doslist + 28) << 2;
console_out_f (_T(" - H=%08x Stack=%5d Pri=%2d Start=%08x Seg=%08x GV=%08x\n"),
cards_set[cardno].initrc = ert->init;
cards_set[cardno].rc = rc;
cards_set[cardno].zorro = zorro;
+ cards_set[cardno].ert = ert;
cards_set[cardno++].map = NULL;
if (ert->init2) {
cards_set[cardno].flags = CARD_FLAG_CHILD;
false, EXPANSIONTYPE_NET,
0, 0, 0, false, NULL,
false, 0, ethernet_settings,
+ { 0xc1, 0x70, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
+ },
+ {
+ _T("ariadne"), _T("Ariadne"), _T("Village Tronic"),
+ ariadne_init, NULL, NULL, ROMTYPE_ARIADNE | ROMTYPE_NOT, 0, 0, BOARD_AUTOCONFIG_Z2, true,
+ NULL, 0,
+ false, EXPANSIONTYPE_NET,
+ 0, 0, 0, false, NULL,
+ false, 0, ethernet_settings,
+ { 0xc1, 0xc9, 0x00, 0x00, 2167 >> 8, 2167 & 255, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
},
{
_T("ariadne2"), _T("Ariadne II"), _T("Village Tronic"),
const struct memoryboardtype memoryboards[]
{
// z2
+ {
+ _T("UAE"), _T("0xf00000 RAM"),
+ 2, 0xf00000, 0xffff, 0xff
+ },
{
_T("DKB"), _T("Insider I/II"),
2, 0x800000, 0xffff, 0xff
}
/* Output DO is tristate, read results in 1. */
eeprom->eedo = 1;
- write_log("eeprom = 0x%p, nwords = %u\n", eeprom, nwords);
+// write_log("eeprom = 0x%p, nwords = %u\n", eeprom, nwords);
return eeprom;
}
eeprom93xx_eeprom_t *eeprom = (eeprom93xx_eeprom_t*)eepromp;
/* Destroy EEPROM. */
- write_log("eeprom = 0x%p\n", eeprom);
+// write_log("eeprom = 0x%p\n", eeprom);
xfree(eeprom);
}
PUSHBUTTON "Delete",IDC_FILTERPRESETDELETE,325,272,55,14
END
-IDD_HARDDRIVE DIALOGEX 0, 0, 396, 109
+IDD_HARDDRIVE DIALOGEX 0, 0, 397, 136
STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Harddrive Settings"
FONT 8, "MS Sans Serif", 0, 0, 0x0
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,40,67,115,14
- EDITTEXT IDC_PATH_NAME,188,67,97,15,ES_AUTOHSCROLL | NOT WS_VISIBLE
+ DEFPUSHBUTTON "Create hard disk image file",IDC_HARDDRIVE_IMAGE,5,67,158,14
+ EDITTEXT IDC_PATH_NAME,178,67,97,15,ES_AUTOHSCROLL | NOT WS_VISIBLE
CONTROL "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,315,71,60,10
- COMBOBOX IDC_HDF_CONTROLLER,8,89,164,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
- COMBOBOX IDC_HDF_CONTROLLER_UNIT,179,89,25,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
- DEFPUSHBUTTON "Add hard drive",IDOK,236,87,73,14
- PUSHBUTTON "Cancel",IDCANCEL,316,87,73,14
+ COMBOBOX IDC_HDF_CONTROLLER,8,113,218,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDC_HDF_CONTROLLER_UNIT,65,90,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Add hard drive",IDOK,236,113,73,14
+ PUSHBUTTON "Cancel",IDCANCEL,316,113,73,14
+ COMBOBOX IDC_HDF_CONTROLLER_TYPE,178,90,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDC_HDF_FEATURE_LEVEL,291,90,97,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
END
IDD_MISC2 DIALOGEX 0, 0, 396, 278
IDD_HARDDRIVE, DIALOG
BEGIN
+ RIGHTMARGIN, 396
+ BOTTOMMARGIN, 109
END
IDD_MISC2, DIALOG
typedef BOOL (CALLBACK* CHANGEWINDOWMESSAGEFILTER)(UINT, DWORD);
+#ifndef NDEBUG
+typedef struct _PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY {
+ union {
+ DWORD Flags;
+ struct {
+ DWORD RaiseExceptionOnInvalidHandleReference : 1;
+ DWORD HandleExceptionsPermanentlyEnabled : 1;
+ DWORD ReservedFlags : 30;
+ };
+ };
+} PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY;
+typedef BOOL (WINAPI* SETPROCESSMITIGATIONPOLICY)(DWORD, PVOID, SIZE_T);
+static SETPROCESSMITIGATIONPOLICY pSetProcessMitigationPolicy;
+#endif
int PASCAL wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
}
#endif
#endif
+
+#ifndef NDEBUG
+ PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY p = { 0 };
+ p.HandleExceptionsPermanentlyEnabled = 1;
+ p.RaiseExceptionOnInvalidHandleReference = 1;
+ //ProcessStrictHandleCheckPolicy = 3
+ pSetProcessMitigationPolicy = (SETPROCESSMITIGATIONPOLICY)GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "SetProcessMitigationPolicy");
+ pSetProcessMitigationPolicy(3, &p, sizeof p);
+#endif
+
executable_path[0] = 0;
GetModuleFileName(NULL, executable_path, sizeof executable_path / sizeof(TCHAR));
#define LANG_DLL_FULL_VERSION_MATCH 1
#if WINUAEPUBLICBETA
-#define WINUAEBETA _T("13")
+#define WINUAEBETA _T("14")
#else
#define WINUAEBETA _T("")
#endif
-#define WINUAEDATE MAKEBD(2016, 10, 21)
+#define WINUAEDATE MAKEBD(2016, 10, 29)
//#define WINUAEEXTRA _T("AmiKit Preview")
//#define WINUAEEXTRA _T("Amiga Forever Edition")
}
if (workprefs.sound_freq < 8000)
workprefs.sound_freq = 8000;
- if (workprefs.sound_freq > 96000)
- workprefs.sound_freq = 96000;
+ if (workprefs.sound_freq > 192000)
+ workprefs.sound_freq = 192000;
workprefs.produce_sound = (ischecked (hDlg, IDC_SOUND0) ? 0
: ischecked (hDlg, IDC_SOUND1) ? 1 : 3);
static int hdmenutable[256];
+static void sethardfiletypes(HWND hDlg)
+{
+ bool ide = current_hfdlg.ci.controller_type >= HD_CONTROLLER_TYPE_IDE_FIRST && current_hfdlg.ci.controller_type <= HD_CONTROLLER_TYPE_IDE_LAST;
+ bool scsi = current_hfdlg.ci.controller_type >= HD_CONTROLLER_TYPE_SCSI_FIRST && current_hfdlg.ci.controller_type <= HD_CONTROLLER_TYPE_SCSI_LAST;
+ ew(hDlg, IDC_HDF_CONTROLLER_TYPE, ide);
+ ew(hDlg, IDC_HDF_FEATURE_LEVEL, ide || scsi);
+ if (!ide) {
+ current_hfdlg.ci.controller_media_type = 0;
+ }
+ if (current_hfdlg.ci.controller_media_type && current_hfdlg.ci.unit_feature_level == 0)
+ current_hfdlg.ci.unit_feature_level = 1;
+ SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER_TYPE, CB_SETCURSEL, current_hfdlg.ci.controller_media_type, 0);
+ SendDlgItemMessage(hDlg, IDC_HDF_FEATURE_LEVEL, CB_SETCURSEL, current_hfdlg.ci.unit_feature_level, 0);
+}
+
static void sethardfile (HWND hDlg)
{
bool rdb = is_hdf_rdb ();
hide(hDlg, IDC_CYLINDERS_TEXT, !rdb);
gui_set_string_cursor(hdmenutable, hDlg, IDC_HDF_CONTROLLER, current_hfdlg.ci.controller_type + current_hfdlg.ci.controller_type_unit * HD_CONTROLLER_NEXT_UNIT);
SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_SETCURSEL, current_hfdlg.ci.controller_type != HD_CONTROLLER_TYPE_PCMCIA ? current_hfdlg.ci.controller_unit : current_hfdlg.ci.controller_type_unit, 0);
- ew(hDlg, IDC_HDF_CONTROLLER_TYPE, ide);
- ew(hDlg, IDC_HDF_FEATURE_LEVEL, ide || scsi);
- if (!ide) {
- current_hfdlg.ci.controller_media_type = 0;
- }
- if (current_hfdlg.ci.controller_media_type && current_hfdlg.ci.unit_feature_level == 0)
- current_hfdlg.ci.unit_feature_level = 1;
- SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_TYPE, CB_SETCURSEL, current_hfdlg.ci.controller_media_type, 0);
- SendDlgItemMessage (hDlg, IDC_HDF_FEATURE_LEVEL, CB_SETCURSEL, current_hfdlg.ci.unit_feature_level, 0);
+ sethardfiletypes(hDlg);
}
static void addhdcontroller(HWND hDlg, const struct expansionromtype *erc, int *hdmenutable, int firstid, int flags)
oposn = -1;
hdf_init_target ();
recursive++;
+ sethardfiletypes(hDlg);
inithdcontroller(hDlg, current_hfdlg.ci.controller_type, current_hfdlg.ci.controller_type_unit, UAEDEV_HDF);
CheckDlgButton (hDlg, IDC_HDF_RW, !current_hfdlg.ci.readonly);
SendDlgItemMessage (hDlg, IDC_HARDDRIVE, CB_RESETCONTENT, 0, 0);
SendDlgItemMessage (hDlg, IDC_HARDDRIVE, CB_SETCURSEL, index, 0);
gui_set_string_cursor(hdmenutable, hDlg, IDC_HDF_CONTROLLER, current_hfdlg.ci.controller_type + current_hfdlg.ci.controller_type_unit * HD_CONTROLLER_NEXT_UNIT);
SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER_UNIT, CB_SETCURSEL, current_hfdlg.ci.controller_type != HD_CONTROLLER_TYPE_PCMCIA ? current_hfdlg.ci.controller_unit : current_hfdlg.ci.controller_type_unit, 0);
- SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_TYPE, CB_SETCURSEL, current_hfdlg.ci.controller_media_type, 0);
+ SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER_TYPE, CB_SETCURSEL, current_hfdlg.ci.controller_media_type, 0);
+ SendDlgItemMessage(hDlg, IDC_HDF_FEATURE_LEVEL, CB_SETCURSEL, current_hfdlg.ci.unit_feature_level, 0);
}
recursive--;
return TRUE;
current_hfdlg.ci.blocksize = 512;
current_hfdlg.forcedcylinders = 0;
current_hfdlg.ci.cyls = current_hfdlg.ci.highcyl = current_hfdlg.ci.sectors = current_hfdlg.ci.surfaces = 0;
- ew (hDlg, IDC_HDF_CONTROLLER, ena);
- ew (hDlg, IDC_HDF_CONTROLLER_UNIT, ena);
SetDlgItemText (hDlg, IDC_HDFINFO, _T(""));
SetDlgItemText (hDlg, IDC_HDFINFO2, _T(""));
updatehdfinfo (hDlg, true, true);
SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER_UNIT, CB_SETCURSEL, current_hfdlg.ci.controller_type != HD_CONTROLLER_TYPE_PCMCIA ? current_hfdlg.ci.controller_unit : current_hfdlg.ci.controller_type_unit, 0);
CheckDlgButton(hDlg, IDC_HDF_RW, !current_hfdlg.ci.readonly);
_tcscpy (current_hfdlg.ci.rootdir, hdf_getnameharddrive ((int)posn, 4, ¤t_hfdlg.ci.blocksize, NULL));
+ sethardfiletypes(hDlg);
}
}
} else if (LOWORD (wParam) == IDC_HDF_CONTROLLER) {
updatehdfinfo (hDlg, true, true);
inithdcontroller(hDlg, current_hfdlg.ci.controller_type, current_hfdlg.ci.controller_type_unit, UAEDEV_HDF);
SendDlgItemMessage(hDlg, IDC_HDF_CONTROLLER_UNIT, CB_SETCURSEL, current_hfdlg.ci.controller_type != HD_CONTROLLER_TYPE_PCMCIA ? current_hfdlg.ci.controller_unit : current_hfdlg.ci.controller_type_unit, 0);
+ sethardfiletypes(hDlg);
}
} else if (LOWORD(wParam) == IDC_HDF_CONTROLLER_UNIT) {
posn = SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_GETCURSEL, 0, 0);
if (posn != CB_ERR) {
current_hfdlg.ci.controller_media_type = posn;
}
+ } else if (LOWORD(wParam) == IDC_HDF_FEATURE_LEVEL) {
+ posn = SendDlgItemMessage(hDlg, IDC_HDF_FEATURE_LEVEL, CB_GETCURSEL, 0, 0);
+ if (posn != CB_ERR) {
+ current_hfdlg.ci.unit_feature_level = posn;
+ }
}
recursive--;
break;
- RTG VRAM is outside of reserved natmem space. Workaround: Move RTG in earlier position using Hardware info GUI panel.\r
Note that in 64-bit version RTG VRAM must be inside of reserved natmem space. (Outside = error message and return back to GUI)\r
\r
-Beta 12:\r
+\r
+Beta 14:\r
+\r
+- Ariadne network adapter emulation added. (Am79c960 based, improved Am79c90)\r
+- uaesnd update, sample format byte changed, added support for little-endian and signed samples.\r
+- Old NE2000 config entries overrode new style entries until config file was rewritten at least once.\r
+- Sound output frequency max limit increased from 96KHz to 192KHz. (Useless but if you really want to do it..)\r
+- Added missing drive type/feature level options to add harddrive dialog.\r
+- Opalvision updates, OpalPaint palette is now fully visible, interlace mode missing lines fixed.\r
+ King of Karate confirmed working. PlayAnim24 (which uses sort of polarity inverted control line) works. \r
+\r
+Beta 13:\r
\r
- Fixed double free in RTL8019 9346 EEPROM emulation. Caused random crashes.\r
- Implemented DP8390 NIC support (Same register set as NE2000 but without on board RAM "fake DMA" support)\r