oldreg = IOREG(offset);
IOREG(offset) = data;
+// if (offset != 15 && offset != 16)
+// write_log("WRITE %08x %04 (%04x)\n", offset, data, oldreg);
+
switch (offset)
{
case REG_CONTROL:
// if (LOG_CONTROL_REGS)
// logerror("%s: read %s\n", machine().describe_context(), ioreg_name[offset]);
+// write_log("READ %08x %04x\n", offset, IOREG(offset));
+
switch (offset)
{
case REG_HCOUNT:
#define LANG_DLL_FULL_VERSION_MATCH 1
#if WINUAEPUBLICBETA
-#define WINUAEBETA _T("2")
+#define WINUAEBETA _T("3")
#else
#define WINUAEBETA _T("")
#endif
-#define WINUAEDATE MAKEBD(2015, 7, 7)
+#define WINUAEDATE MAKEBD(2015, 7, 13)
//#define WINUAEEXTRA _T("AmiKit Preview")
//#define WINUAEEXTRA _T("Amiga Forever Edition")
extern void sleep_millis (int ms);
extern void sleep_millis_main (int ms);
-extern void sleep_millis_busy (int ms);
+extern void sleep_millis_amiga (int ms);
extern void wait_keyrelease (void);
extern void keyboard_settrans (void);
extern uae_u32 natmem_size;
static void setmax32bitram (HWND hDlg)
{
- TCHAR tmp[100];
- uae_u32 size, rtgz3size, z3size;
+ TCHAR tmp[256];
+ uae_u32 size, rtgz3size, z3size_uae = 0, z3size_real = 0;
uae_u32 sizealign = 16 * 1024 * 1024 - 1;
rtgz3size = gfxboard_get_configtype(workprefs.rtgmem_type) == 3 ? workprefs.rtgmem_size : 0;
if (changed_prefs.mbresmem_high_size >= 128 * 1024 * 1024 && (size || workprefs.z3chipmem_size))
size += (changed_prefs.mbresmem_high_size - 128 * 1024 * 1024) + 16 * 1024 * 1024;
if (natmem_size > 0x40000000)
- z3size = natmem_size - 0x40000000;
- else
- z3size = 0;
+ z3size_real = natmem_size - 0x40000000;
+ if (natmem_size > 0x10000000)
+ z3size_uae = natmem_size - 0x10000000;
size += ((workprefs.z3chipmem_size + sizealign) & ~sizealign);
- _stprintf (tmp, L"Configured 32-bit RAM: %dM, reserved: %dM, true Z3 address space available: %dM",
- size / (1024 * 1024), (natmem_size - 256 * 1024 * 1024) / (1024 * 1024), z3size / (1024 * 1024));
+ _stprintf (tmp, L"Configured 32-bit RAM: %dM, reserved: %dM, Z3 available: %dM (UAE), %dM (Real)",
+ size / (1024 * 1024), (natmem_size - 256 * 1024 * 1024) / (1024 * 1024), z3size_uae / (1024 * 1024), z3size_real / (1024 * 1024));
SetDlgItemText (hDlg, IDC_MAX32RAM, tmp);
}
}
-static const int expansion_settings_id[] = { IDC_EXPANSION_SETTING1, IDC_EXPANSION_SETTING2, -IDC_EXPANSION_SETTING3, 1 };
+static const int expansion_settings_id[] = { IDC_EXPANSION_SETTING1, IDC_EXPANSION_SETTING2, IDC_EXPANSION_SETTING3, 1 };
static void values_to_expansion2dlg_sub(HWND hDlg)
{
while (expansion_settings_id[i] >= 0) {
int id = expansion_settings_id[i];
SetWindowText(GetDlgItem(hDlg, id), _T("-"));
+ hide(hDlg, id, true);
i++;
}
}
if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE && v < gfxboard_get_vram_min(workprefs.rtgmem_type))
v = gfxboard_get_vram_min(workprefs.rtgmem_type);
workprefs.rtgmem_size = v;
+ } else {
+ int v = workprefs.rtgmem_size;
+ if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE && v > gfxboard_get_vram_max(workprefs.rtgmem_type))
+ v = gfxboard_get_vram_max(workprefs.rtgmem_type);
+ if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE && v < gfxboard_get_vram_min(workprefs.rtgmem_type))
+ v = gfxboard_get_vram_min(workprefs.rtgmem_type);
+ workprefs.rtgmem_size = v;
}
if (workprefs.rtgmem_type >= GFXBOARD_HARDWARE) {
switch (gfxboard_get_vram_min(workprefs.rtgmem_type)) {
+Beta 3:
+
+- CD and sound card audio are now always resampled with Anti interpolator before it gets mixed
+ with Paula audio stream. Previously it used very crude resampling method.
+- ES1370 (SB128) emulation fixed, DMA length register was not reset when playback was restarted.
+ (I don't understand how it would have ever worked in QEMU without sound glitches)
+- Added "Full PCI DMA" option to PCI bridges that in real world don't have Amiga to/from PCI DMA
+ support (Prometheus and Mediators). Default is off = emulates real hardware limits.
+- Validate PCI DMA addresses, log message and return random data if trying to access unsupported address
+ or if attempting to access Amiga address space and bridge does not have full PCI DMA support.
+ (Probably becomes HALT-something if real hardware simply hangs in this situation)
+- 68040 MMU mode hardware bus error not caused by MMU had incorrectly status register ATC bit set.
+- More reliable A2410 resolution switching.
+- A2410 framebuffer space is also mirrored at the beginning of TMS34010 address space.
+- Implemented A2410 TMS34010 to/from Amiga address space DMA feature. So far no programs found that
+ uses it.
+- Emulate 68020/030 prefetch pipeline more accurately, branch instructions stop prefetching after
+ last opword of branch instruction has been loaded. It reduces unnecessary memory accesses.
+ This probably also makes 68020/030 cycle exact mode even more faster without adjusting
+ other parts of emulation (which needed to be made faster because some other unknown part
+ was too slow, hopefully it was this prefetch feature..)
+ Not fully implemented yet, addressing modes that use brief or full extension words disable
+ this feature until next branch instruction because length of instruction needs to be known in
+ advance and in these addressing modes it can't be calculated statically.
+
Beta 2:
- Borderblanking works again (b1)
- Added ES1370 from QEMU. (PCI sound card), common ES1370 based card is SB128.
- Added FM801 emulation. (PCI sound card).
- Added Vortex System 2000 HD controller.
+- 68020/030 prefetch/cycle-exact: don't prefetch from old PC if instruction is going to branch.
+- Accelerator board memory size reset when viewing RAM GUI panel if accelerator used "Blizzard" RAM type.
+- HD and RTG boards are now named <name> (<manufacturer>).
- A2410 display card emulation! TMS34010 emulation core from MAME.
A2410 notes: