if (dstptr)
dstbak = dst = dstptr;
else
- dstbak = dst = (uae_u8*)malloc (hrtmem_size + sizeof ar_custom + sizeof ar_ciaa + sizeof ar_ciab + 1024);
- save_u8 (0);
+ dstbak = dst = (uae_u8*)malloc (hrtmem_size + hrtmem2_size + sizeof ar_custom + sizeof ar_ciaa + sizeof ar_ciab + 1024);
+ save_u8 (cart_type);
save_u8 (0);
save_u32 (0);
strcpy (dst, currprefs.cartfile);
dst += strlen(dst) + 1;
save_u32 (0);
- save_u32 (hrtmem_size);
- memcpy (dst, hrtmemory, hrtmem_size);
- dst += hrtmem_size;
+ if (!hrtmem_rom) {
+ save_u32 (hrtmem_size);
+ memcpy (dst, hrtmemory, hrtmem_size);
+ dst += hrtmem_size;
+ } else if (hrtmem2_size) {
+ save_u32 (hrtmem2_size);
+ memcpy (dst, hrtmemory2, hrtmem2_size);
+ dst += hrtmem2_size;
+ } else {
+ save_u32 (0);
+ }
save_u32 (sizeof ar_custom);
memcpy (dst, ar_custom, sizeof ar_custom);
dst += sizeof ar_custom;
uae_u8 *restore_hrtmon (uae_u8 *src)
{
+ uae_u32 size;
+
action_replay_unload (1);
restore_u8 ();
restore_u8 ();
strcpy (currprefs.cartfile, changed_prefs.cartfile);
src += strlen(src) + 1;
hrtmon_load ();
+ action_replay_load ();
if (restore_u32() != 0)
return src;
- if (restore_u32() != hrtmem_size)
- return src;
- if (hrtmemory)
- memcpy (hrtmemory, src, hrtmem_size);
- src += hrtmem_size;
+ size = restore_u32();
+ if (!hrtmem_rom) {
+ if (hrtmemory)
+ memcpy (hrtmemory, src, size);
+ } else if (hrtmem2_size) {
+ if (hrtmemory2)
+ memcpy (hrtmemory2, src, size);
+ }
+ src += size;
restore_u32();
memcpy (ar_custom, src, sizeof ar_custom);
src += sizeof ar_custom;
struct memwatch_node mwnodes[MEMWATCH_TOTAL];
static struct memwatch_node mwhit;
-static uae_u8 *illgdebug;
+static uae_u8 *illgdebug, *illghdebug;
static int illgdebug_break;
static void illg_free (void)
{
- free (illgdebug);
+ xfree (illgdebug);
illgdebug = NULL;
+ xfree (illghdebug);
+ illghdebug = NULL;
}
static void illg_init (void)
uaecptr addr, end;
illgdebug = (uae_u8*)xcalloc (0x01000000, 1);
- if (!illgdebug)
+ illghdebug = (uae_u8*)xcalloc(65536, 1);
+ if (!illgdebug || !illghdebug) {
+ illg_free();
return;
+ }
addr = 0xffffffff;
while ((addr = nextaddr(addr, &end)) != 0xffffffff) {
- if (end < 0x01000000)
+ if (end < 0x01000000) {
memset (illgdebug + addr, c, end - addr);
+ } else {
+ uae_u32 s = addr >> 16;
+ uae_u32 e = end >> 16;
+ memset (illghdebug + s, c, e - s);
+ }
addr = end - 1;
}
+ if (currprefs.gfxmem_size)
+ memset (illghdebug + (p96ram_start >> 16), 3, currprefs.gfxmem_size >> 16);
+
i = 0;
while (custd[i].name) {
int rw = custd[i].rw;
if (uae_boot_rom) /* filesys "rom" */
memset (illgdebug + RTAREA_BASE, 1, 0x10000);
#endif
+ if (currprefs.cs_ide > 0)
+ memset (illgdebug + 0xdd0000, 3, 65536);
}
/* add special custom register check here */
uae_u8 v = val >> (i * 8);
uae_u32 ad = addr + i;
if (ad >= 0x01000000)
- mask = 7;
+ mask = illghdebug[ad >> 16];
else
mask = illgdebug[ad];
if ((mask & 3) == 3)
break;
case i_MMUOP30A:
printf ("\tuaecptr pc = m68k_getpc (regs);\n");
- genamode (curi->smode, "srcreg", curi->size, "extra", 0, 0, 0);
+ if (curi->smode == Areg || curi->smode == Dreg)
+ printf("\tuae_u16 extraa = 0;\n");
+ else
+ genamode (curi->smode, "srcreg", curi->size, "extra", 0, 0, 0);
sync_m68k_pc ();
printf ("\tmmu_op30(pc, opcode, regs, 1, extraa);\n");
break;
0xe668a0be, 0x633A6E65,0xA93580B8,0xDDB0BE9C,0x9A64D4A1,0x7D4B4801 },
{ "Freezer: X-Power Professional 500 v1.2", 1, 2, 1, 2, "XPOWER\0", 131072, 65, 0, 0, ROMTYPE_SUPERIV, 1,
0x9e70c231, 0xa2977a1c,0x41a8ca7d,0x4af4a168,0x726da542,0x179d5963 },
- /* only 2 bad dumps available */
- { "Freezer: Nordic Power v1", 0, 0, 0, 0, "NPOWER\0", 65536, 66, 0, 0, ROMTYPE_SUPERIV, 1, },
+ /* v1.0 is bad dump */
+ { "Freezer: Nordic Power v1.0", 0, 0, 0, 0, "NPOWER\0", 65536, 66, 0, 0, ROMTYPE_SUPERIV, 1, },
//0xdd16cdec, 0xfd882967,0x87e2da5f,0x4ef6be32,0x5f7c9324,0xb5bd8e64 },
{ "Freezer: Nordic Power v2.0", 2, 0, 2, 0, "NPOWER\0", 65536, 67, 0, 0, ROMTYPE_SUPERIV, 1,
0xa4db2906, 0x0aec68f7,0x25470c89,0x6b699ff4,0x6623dec5,0xc777466e },
mmusr_030 = 0;
}
+static void mmu_op30_pflush(uaecptr pc, uae_u32 opcode, uae_u16 next, uaecptr extra)
+{
+#if MMUOP_DEBUG > 0
+ write_log("PFLUSH PC=%08X\n", pc);
+#endif
+}
+
void mmu_op30(uaecptr pc, uae_u32 opcode, struct regstruct *regs, int isnext, uaecptr extra)
{
if (currprefs.cpu_model != 68030) {
uae_u16 next = get_word(pc + 2);
if (next & 0x8000)
mmu_op30_ptest(pc, opcode, next, extra);
+ else if (next & 0x2000)
+ mmu_op30_pflush (pc, opcode, next, extra);
else
mmu_op30_pmove(pc, opcode, next, extra);
m68k_setpc (regs, m68k_getpc (regs) + 2);
IDS_SELECTFILESYSROOT "Please select the root directory of the file system..."\r
IDS_DEFAULTMIDIOUT "Default MIDI-Out Device"\r
IDS_CONTRIBUTORS1 "Bernd Schmidt - The Grand-Master\nSam Jordan - Custom-chip, floppy-DMA, etc.\nMathias Ortmann - Original WinUAE Main Guy, BSD Socket support\nBrian King - Picasso96 Support, Integrated GUI for WinUAE, previous WinUAE Main Guy\nToni Wilen - Core updates, WinUAE Main Guy\nGustavo Goedert/Peter Remmers/Michael Sontheimer/Tomi Hakala/Tim Gunn/Nemo Pohle - DOS Port Stuff\nSamuel Devulder/Olaf Barthel/Sam Jordan - Amiga Ports\nKrister Bergman - XFree86 and OS/2 Port\nA. Blanchard/Ernesto Corvi - MacOS Port\nChristian Bauer - BeOS Port\nIan Stephenson - NextStep Port\nPeter Teichmann - Acorn/RiscOS Port\nStefan Reinauer - ZorroII/III AutoConfig, Serial Support\nChristian Schmitt/Chris Hames - Serial Support\nHerman ten Brugge - 68020/68881 Emulation Code\nTauno Taipaleenmaki - Various UAE-Control/UAE-Library Support\nBrett Eden/Tim Gunn/Paolo Besser/Nemo Pohle - Various Docs and Web-Sites\nGeorg Veichtlbauer - Help File coordinator, German GUI\nFulvio Leonardi - Italian translator for WinUAE\n"\r
- IDS_CONTRIBUTORS2 "Bill Panagouleas - Hardware support\nSpecial thanks to Alexander Kneer and Tobias Abt (The Picasso96 Team)\nSteven Weiser - Postscript printing emulation idea and testing.\nPéter Tóth /Balázs Rátkai/Iván Herczeg/András Arató - Hungarian translation.\nKarsten Bock and Dirk Trowe - Cartridge hardware support."\r
+ IDS_CONTRIBUTORS2 "Bill Panagouleas - Hardware support\nSpecial thanks to Alexander Kneer and Tobias Abt (The Picasso96 Team)\nSteven Weiser - Postscript printing emulation idea and testing.\nPéter Tóth /Balázs Rátkai/Iván Herczeg/András Arató - Hungarian translation.\nKarsten Bock, Gavin Fance and Dirk Trowe - Freezer cartridge hardware support."\r
IDS_INVALIDPRTPORT "The printer you have in this configuration is not valid on this machine.\n"\r
IDS_RESTOREUSS "Restore a WinUAE snapshot file"\r
IDS_USS "WinUAE snapshot files"\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="*"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+</assembly>
#define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100)
#define GETBDD(x) ((x) % 100)
-#define WINUAEBETA 12
-#define WINUAEPUBLICBETA 1
-#define WINUAEDATE MAKEBD(2007, 7, 24)
-#define WINUAEEXTRA " RC1"
+#define WINUAEBETA 0
+#define WINUAEPUBLICBETA 0
+#define WINUAEDATE MAKEBD(2007, 7, 28)
+#define WINUAEEXTRA " RC2"
#define WINUAEREV ""
#define IHF_WINDOWHIDDEN 6
/>
<Tool
Name="VCManifestTool"
- AdditionalManifestFiles="..\resources\winuae.exe.manifest"
+ AdditionalManifestFiles="..\resources\winuae9.exe.manifest"
/>
<Tool
Name="VCXDCMakeTool"
EnableCOMDATFolding="2"
OptimizeForWindows98="0"
LinkTimeCodeGeneration="1"
- RandomizedBaseAddress="2"
+ RandomizedBaseAddress="1"
DataExecutionPrevention="2"
- TargetMachine="1"
+ TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
- AdditionalManifestFiles="..\resources\winuae.exe.manifest"
+ AdditionalManifestFiles="..\resources\winuae9.exe.manifest"
/>
<Tool
Name="VCXDCMakeTool"
-Beta 12:
+Beta 13: (RC2)
+
+- Action Replay 1200 "cartridge support" credits added
+- Nordic Power/X-Power/SuperIV statefile support added (not complete)
+- 68030 "NOP MMU emulation" fix, some variants of PFLUSH caused F-line
+ exception
+- illegal access logger (wd) now supports full 32-bit address space
+
+Beta 12: (RC1)
- added quick enable/disable checkboxes to floppy panel
- non-word aligned word writes to custom registers emulated correctly
autoconfig expansions enabled (ancient bug..)
- do not crash if CD32 is selected in advanced chipset without
extended ROM
-- fixes and updates to illegal address logger
+- fixes and updates to illegal access logger
- "faster RTG" "immediate copper" emulation was very broken
- reverted JIT LSL/LSR/ASR change, merge error most likely, later..
1111 0011 01ss sSSS:42:?????:?????:10: FRESTORE s[!Dreg,Areg,Apdi,Immd]
% 68030 MMU (allowed addressing modes not checked!)
-1111 0000 00ss sSSS:30:?????:?????:11: MMUOP30A s[!Dreg,Areg,Immd],#1
+1111 0000 00ss sSSS:30:?????:?????:11: MMUOP30A s[!Immd],#1
1111 1000 00ss sSSS:30:?????:?????:11: MMUOP30B s[!Immd]
% Misc MMU
1111 0101 iiii iSSS:50:?????:?????:11: MMUOP #i,s