static uae_u32 akiko_bget2 (uaecptr addr, int msg)
{
- uae_u8 v;
+ uae_u8 v = 0;
addr &= 0xffff;
- uae_sem_wait (&akiko_sem);
+
switch (addr)
{
/* "CAFE" = Akiko identification.
* Kickstart ignores Akiko C2P if this ID isn't correct */
- case 0x02:
- v = 0xCA;
- break;
- case 0x03:
- v = 0xFE;
- break;
+ case 0x02:
+ return 0xCA;
+ case 0x03:
+ return 0xFE;
+ /* NVRAM */
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ if (currprefs.cs_cd32nvram)
+ v = akiko_nvram_read (addr - 0x30);
+ return v;
+
+ /* C2P */
+ case 0x38:
+ case 0x39:
+ case 0x3a:
+ case 0x3b:
+ if (currprefs.cs_cd32c2p)
+ v = akiko_c2p_read (addr - 0x38);
+ return v;
+ }
+
+ uae_sem_wait (&akiko_sem);
+ switch (addr)
+ {
if (currprefs.cs_cd32cd) {
/* CDROM control */
case 0x04:
break;
}
- /* NVRAM */
- case 0x30:
- case 0x31:
- case 0x32:
- case 0x33:
- if (currprefs.cs_cd32nvram)
- v = akiko_nvram_read (addr - 0x30);
- break;
-
- /* C2P */
- case 0x38:
- case 0x39:
- case 0x3a:
- case 0x3b:
- if (currprefs.cs_cd32c2p)
- v = akiko_c2p_read (addr - 0x38);
- break;
-
default:
write_log ("akiko_bget: unknown address %08.8X\n", addr);
v = 0;
addr &= 0xffff;
v &= 0xff;
+
if(msg && addr < 0x30 && AKIKO_DEBUG_IO)
write_log ("akiko_bput %08.8X: %08.8X=%02.2X\n", M68K_GETPC, addr, v & 0xff);
+
+ switch (addr)
+ {
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ if (currprefs.cs_cd32nvram)
+ akiko_nvram_write (addr - 0x30, v);
+ return;
+
+ case 0x38:
+ case 0x39:
+ case 0x3a:
+ case 0x3b:
+ if (currprefs.cs_cd32c2p)
+ akiko_c2p_write (addr - 0x38, v);
+ return;
+ }
+
uae_sem_wait (&akiko_sem);
switch (addr)
{
break;
}
- case 0x30:
- case 0x31:
- case 0x32:
- case 0x33:
- if (currprefs.cs_cd32nvram)
- akiko_nvram_write (addr - 0x30, v);
- break;
-
- case 0x38:
- case 0x39:
- case 0x3a:
- case 0x3b:
- if (currprefs.cs_cd32c2p)
- akiko_c2p_write (addr - 0x38, v);
- break;
-
default:
write_log ("akiko_bput: unknown address %08.8X\n", addr);
break;
c2 = c1 + 64;
c3 = c2 + 64;
c4 = c3 + 64;
- rgb1 = current_colors.color_regs_aga[c1];
- rgb2 = current_colors.color_regs_aga[c2];
- rgb3 = current_colors.color_regs_aga[c3];
- rgb4 = current_colors.color_regs_aga[c4];
+ rgb1 = current_colors.color_regs_aga[c1] | (color_regs_aga_genlock[c1] << 31);
+ rgb2 = current_colors.color_regs_aga[c2] | (color_regs_aga_genlock[c2] << 31);
+ rgb3 = current_colors.color_regs_aga[c3] | (color_regs_aga_genlock[c3] << 31);
+ rgb4 = current_colors.color_regs_aga[c4] | (color_regs_aga_genlock[c4] << 31);
console_out("%3d %08.8X %3d %08.8X %3d %08.8X %3d %08.8X\n",
c1, rgb1, c2, rgb2, c3, rgb3, c4, rgb4);
}
bogusframe = 1;
- sprite_buffer_res = (currprefs.chipset_mask & CSMASK_AGA) ? RES_SUPERHIRES : ((currprefs.chipset_mask & CSMASK_ECS_DENISE) ? RES_HIRES : RES_LORES);
- //sprite_buffer_res = RES_HIRES;
+ sprite_buffer_res = (currprefs.chipset_mask & CSMASK_AGA) ? RES_SUPERHIRES : RES_LORES;
if (savestate_state == STATE_RESTORE) {
uae_u16 v;
uae_u32 vv;
" Also enables level 1 disk logging\n"
" did <log level> Enable disk logging\n"
" dj [<level bitmask>] Enable joystick/mouse input debugging\n"
+ " smc Enable self-modifying code detector\n"
" dm Dump current address space map\n"
#ifdef _WIN32
" x Close debugger.\n"
#endif
} else if (ham) {
- col = color_reg_get (&colors_for_drawing, col);
#ifdef AGA
if (aga) {
} else {
#endif
+ col = color_reg_get (&colors_for_drawing, col);
ham_linebuf[window_pos] = col;
if (sizedoubling)
ham_linebuf[window_pos + 1] = col;
/* The problem is that we must call decode_ham() BEFORE we do the
sprites. */
- if (! border && dp_for_drawing->ham_seen) {
+ if (dp_for_drawing->ham_seen) {
init_ham_decoding ();
if (dip_for_drawing->nr_color_changes == 0) {
/* The easy case: need to do HAM decoding only once for the
}
}
}
+static void filesys_delayed_change (Unit *u, int frames, const char *rootdir, const char *volume, int readonly, int flags)
+{
+ u->reinsertdelay = 50;
+ u->newflags = flags;
+ u->newreadonly = readonly;
+ u->newrootdir = my_strdup (rootdir);
+ if (volume)
+ u->newvolume = my_strdup (volume);
+ filesys_eject(u->unit);
+ if (!rootdir || strlen (rootdir) == 0)
+ u->reinsertdelay = 0;
+ if (u->reinsertdelay > 0)
+ write_log ("FILESYS: delayed insert %d: '%s' ('%s')\n", u->unit, volume ? volume : "<none>", rootdir);
+}
int filesys_media_change (const char *rootdir, int inserted, struct uaedev_config_info *uci)
{
if (is_hardfile (u->unit) == FILESYS_VIRTUAL) {
ui = &mountinfo.ui[u->unit];
if (ui->rootdir && !memcmp (ui->rootdir, rootdir, strlen (rootdir)) && strlen (rootdir) + 3 >= strlen (ui->rootdir)) {
- if (filesys_isvolume (u) && inserted)
+ if (filesys_isvolume (u) && inserted) {
+ filesys_delayed_change (u, 50, rootdir, uci->volname, uci->readonly, 0);
return 0;
+ }
nr = u->unit;
break;
}
if (is_hardfile(nr) != FILESYS_VIRTUAL)
return 0;
if (filesys_isvolume (u)) {
- u->reinsertdelay = 50;
- u->newflags = flags;
- u->newreadonly = readonly;
- u->newrootdir = my_strdup (rootdir);
- if (volume)
- u->newvolume = my_strdup (volume);
- filesys_eject(nr);
- if (!rootdir || strlen (rootdir) == 0)
- u->reinsertdelay = 0;
- if (u->reinsertdelay > 0)
- write_log ("FILESYS: delayed insert %d '%s' ('%s')\n", nr, volume ? volume : "<none>", rootdir);
+ filesys_delayed_change (u, 50, rootdir, volume, readonly, flags);
return -1;
}
u->mountcount++;
if (nero < 0)
return NULL;
nero = -1;
- if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SOFTWARE\\Ahead\\shared", 0, KEY_ALL_ACCESS, &key) == ERROR_SUCCESS) {
+ if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SOFTWARE\\Ahead\\shared", 0, KEY_READ, &key) == ERROR_SUCCESS) {
if (RegQueryValueEx (key, "NeroAPI", 0, &type, (LPBYTE)path_nero, &size) == ERROR_SUCCESS) {
if (path_nero[strlen(path_nero) - 1] != '\\')
strcat (path_nero, "\\");
int nero, frog;
/*
- * Check if ASPI library is already loaded yet
+ * Check if ASPI library is already loaded
*/
if (AspiLoaded == TRUE)
return TRUE;
pfnGetASPI32SupportInfo = (DWORD(*)(void))GetProcAddress(hAspiLib, "GetASPI32SupportInfo");
pfnSendASPI32Command = (DWORD(*)(LPSRB))GetProcAddress(hAspiLib, "SendASPI32Command");
- if ((pfnGetASPI32SupportInfo == NULL) || (pfnSendASPI32Command == NULL)) {
+ if (pfnGetASPI32SupportInfo == NULL || pfnSendASPI32Command == NULL) {
write_log ("ASPI: obsolete wnaspi32.dll found\n");
return FALSE;
}
static void close_driver (void)
{
- if (!AspiLoaded) return;
+ if (!AspiLoaded)
+ return;
AspiLoaded = FALSE;
pfnGetASPI32SupportInfo = NULL;
pfnSendASPI32Command = NULL;
#include <mmsystem.h>
#include <ddraw.h>
#include <dsound.h>
-#include <dxerr8.h>
+#include <dxerr9.h>
#include "sysdeps.h"
#include "options.h"
HRESULT_FACILITY(ddrval),
HRESULT_CODE(ddrval),
HRESULT_CODE(ddrval),
- DXGetErrorDescription8 (ddrval));
+ DXGetErrorDescription9 (ddrval));
return dderr;
}
}
if (!gsdll) {
HKEY key;
- DWORD ret = RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SOFTWARE\\AFPL Ghostscript", 0, KEY_ALL_ACCESS, &key);
+ DWORD ret = RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SOFTWARE\\AFPL Ghostscript", 0, KEY_READ, &key);
if (ret |= ERROR_SUCCESS)
- ret = RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SOFTWARE\\GPL Ghostscript", 0, KEY_ALL_ACCESS, &key);
+ ret = RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SOFTWARE\\GPL Ghostscript", 0, KEY_READ, &key);
if (ret == ERROR_SUCCESS) {
int idx = 0, cnt = 20;
char tmp1[MAX_DPATH];
FILETIME ft;
if (RegEnumKeyEx (key, idx, tmp1, &size1, NULL, NULL, NULL, &ft) == ERROR_SUCCESS) {
HKEY key2;
- if (RegOpenKeyEx (key, tmp1, 0, KEY_ALL_ACCESS, &key2) == ERROR_SUCCESS) {
+ if (RegOpenKeyEx (key, tmp1, 0, KEY_READ, &key2) == ERROR_SUCCESS) {
DWORD type = REG_SZ;
DWORD size = sizeof (path);
if (RegQueryValueEx (key2, "GS_DLL", 0, &type, (LPBYTE)path, &size) == ERROR_SUCCESS) {
#define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100)
#define GETBDD(x) ((x) % 100)
-#define WINUAEBETA 5
+#define WINUAEBETA 6
#define WINUAEPUBLICBETA 1
-#define WINUAEDATE MAKEBD(2007, 10, 27)
+#define WINUAEDATE MAKEBD(2007, 10, 28)
#define WINUAEEXTRA ""
#define WINUAEREV ""
#include "parser.h"
#include "lcd.h"
-#define AMIGA_WIDTH_MAX 736
+#define AMIGA_WIDTH_MAX 752
#define AMIGA_HEIGHT_MAX 568
#define DM_DX_FULLSCREEN 1
currentmode->native_depth = currentmode->current_depth;
#if defined (GFXFILTER)
if (currentmode->flags & (DM_OPENGL | DM_D3D | DM_SWSCALE)) {
- currentmode->amiga_width = AMIGA_WIDTH_MAX >> (currprefs.gfx_resolution ? 0 : 1);
+ currentmode->amiga_width = AMIGA_WIDTH_MAX;
currentmode->amiga_height = AMIGA_HEIGHT_MAX >> (currprefs.gfx_linedbl ? 0 : 1);
+ if (currprefs.gfx_resolution == 0)
+ currentmode->amiga_width >>= 1;
+ else if (currprefs.gfx_resolution > 1)
+ currentmode->amiga_width <<= 1;
if (usedfilter) {
if (usedfilter->x[0]) {
currentmode->current_depth = (currprefs.gfx_filter_filtermode / 2) ? 32 : 16;
int rdb;
};
-static struct fsvdlg_vals empty_fsvdlg = { "", "", "", 0, 1, 1, 0 };
+static struct fsvdlg_vals empty_fsvdlg = { "", "", "", 0, 1, 1, 1, 0 };
static struct fsvdlg_vals current_fsvdlg;
struct hfdlg_vals
SetDlgItemText (hDlg, IDC_VOLUME_DEVICE, current_fsvdlg.device);
SetDlgItemText (hDlg, IDC_PATH_NAME, current_fsvdlg.rootdir);
SetDlgItemInt (hDlg, IDC_VOLUME_BOOTPRI, current_fsvdlg.bootpri >= -127 ? current_fsvdlg.bootpri : -127, TRUE);
- if (archivehd)
+ if (archivehd > 0)
current_fsvdlg.rw = 0;
CheckDlgButton (hDlg, IDC_FS_RW, current_fsvdlg.rw);
CheckDlgButton (hDlg, IDC_FS_AUTOBOOT, current_fsvdlg.autoboot);
current_fsvdlg.donotmount = 0;
- ew (hDlg, IDC_FS_RW, !archivehd);
+ ew (hDlg, IDC_FS_RW, archivehd <= 0);
recursive--;
}
return TRUE;
case IDC_FS_SELECT_EJECT:
SetDlgItemText (hDlg, IDC_PATH_NAME, "");
SetDlgItemText (hDlg, IDC_VOLUME_NAME, "");
- CheckDlgButton (hDlg, IDC_FS_RW, FALSE);
- ew (hDlg, IDC_FS_RW, FALSE);
+ CheckDlgButton (hDlg, IDC_FS_RW, TRUE);
+ ew (hDlg, IDC_FS_RW, TRUE);
archivehd = -1;
break;
case IDC_FS_SELECT_FILE:
uci = add_filesys_config (&workprefs, entry, current_fsvdlg.device, current_fsvdlg.volume,
current_fsvdlg.rootdir, ! current_fsvdlg.rw, 0, 0, 0, 0, bp, 0, 0, 0);
- if (uci)
- filesys_media_change (uci->rootdir, 1, uci);
+ if (uci) {
+ if (uci->rootdir[0])
+ filesys_media_change (uci->rootdir, 1, uci);
+ else
+ filesys_eject (uci->configoffset);
+ }
}
static void new_hardfile (HWND hDlg, int entry)
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib winio.lib setupapi.lib wininet.lib dxerr8.lib shlwapi.lib zlibstat.lib libpng.lib lglcd.lib"
+ AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib winio.lib setupapi.lib wininet.lib dxerr9.lib shlwapi.lib zlibstat.lib libpng.lib lglcd.lib"
OutputFile="d:\amiga\winuae.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib winio.lib setupapi.lib wininet.lib capsimg.lib dxerr8.lib shlwapi.lib zlibstat.lib libpng.lib lglcd.lib"
+ AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib winio.lib setupapi.lib wininet.lib capsimg.lib dxerr9.lib shlwapi.lib zlibstat.lib libpng.lib lglcd.lib"
ShowProgress="0"
OutputFile="d:\amiga\winuae.exe"
LinkIncremental="2"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib winio.lib setupapi.lib wininet.lib dxerr8.lib shlwapi.lib zlibstat.lib libpng.lib lglcd.lib"
+ AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib winio.lib setupapi.lib wininet.lib dxerr9.lib shlwapi.lib zlibstat.lib libpng.lib lglcd.lib"
OutputFile="d:\amiga\winuae.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
RelativePath="..\hq2x32.obj"
>
</File>
- <File
- RelativePath="..\resources\resource"
- >
- </File>
<File
RelativePath="..\resources\resource.h"
>
+Beta 6:
+
+- do not call CD32 CD emulation handler when non-CD controller
+ Akiko registers are accessed. Fixes slowdown when program uses
+ C2P feature of Akiko (Wing Commander CD32, perhaps others)
+- debugger ea command AGA genlock color bit support
+- smc command added to debugger help
+- Ghostscript and neroaspi registry detection didn't work without
+ admin privileges
+- directory harddrive read/write status and volume name change
+ work again on the fly
+- directory harddrive eject-button works again
+- directory harddrive readwrite checkbox is not disabled anymore if
+ no path entered
+- filter superhires support
+- ECS Denise hires sprite support removed, hires/shres sprite support
+ is not compatible with OCS ham modes (and who needs ECS hires sprites
+ when AGA is much better choice..)
+
Beta 5:
- AGA T (genlock transparency) color register bit emulated