#include "threaddep/thread.h"
#include "akiko.h"
#include "gui.h"
+#include "crc32.h"
#define AKIKO_DEBUG_NVRAM 0
#define AKIKO_DEBUG_IO 0
#define MAX_TOC_ENTRIES 103 /* tracks 1-99, A0,A1 and A2 */
static int cdrom_toc_entries;
static int cdrom_toc_counter;
+static uae_u32 cdrom_toc_crc;
static uae_u8 cdrom_toc_buffer[MAX_TOC_ENTRIES*13];
static int cdrom_disk, cdrom_paused, cdrom_playing;
if (as != 0x11 && as != 0x12 && as != 0x13 && as != 0x15) /* audio status ok? */
return 0;
s = buf + 4;
- last_play_pos = (s[9] << 16) | (s[10] << 8) | (s[11] << 0);
+ last_play_pos = (s[5] << 16) | (s[6] << 8) | (s[7] << 0);
if (!d)
return 0;
/* ??? */
if (s[3] == 0xa2)
cdrom_leadout = msf2lsn ((s[8] << 16) | (s[9] << 8) | (s[10] << 0));
}
+ cdrom_toc_entries = i;
+ cdrom_toc_crc = get_crc32(cdrom_toc_buffer, cdrom_toc_entries * 13);
if (datatrack) {
if (secondtrack)
cdrom_data_end = secondtrack;
else
cdrom_data_end = cdrom_leadout;
}
- cdrom_toc_entries = i;
return 0;
}
uae_sem_wait (&akiko_sem);
sector = cdrom_current_sector;
for (i = 0; i < SECTOR_BUFFER_SIZE; i++) {
- if (sector_buffer_info_1[i] == 0xff) break;
+ if (sector_buffer_info_1[i] == 0xff)
+ break;
}
if (cdrom_data_end > 0 && sector >= 0 && (sector_buffer_sector_1 < 0 || sector < sector_buffer_sector_1 || sector >= sector_buffer_sector_1 + SECTOR_BUFFER_SIZE * 2 / 3 || i != SECTOR_BUFFER_SIZE)) {
memset (sector_buffer_info_2, 0, SECTOR_BUFFER_SIZE);
patchrom ();
}
}
+ uae_sem_init (&akiko_sem, 0, 1);
if (!savestate_state) {
cdrom_playing = cdrom_paused = 0;
cdrom_data_offset = -1;
- uae_sem_init (&akiko_sem, 0, 1);
}
if (cdromok && !akiko_thread_running) {
akiko_thread_running = 1;
save_u8 ((uae_u8)akiko_read_offset);
save_u8 ((uae_u8)akiko_write_offset);
- save_u32 ((cdrom_playing ? 1 : 0) | (cdrom_paused ? 2 : 0));
+ save_u32 ((cdrom_playing ? 1 : 0) | (cdrom_paused ? 2 : 0) | (cdrom_disk ? 4 : 0));
if (cdrom_playing)
cd_qcode (0);
save_u32 (last_play_pos);
save_u32 (last_play_end);
save_u8 ((uae_u8)cdrom_toc_counter);
+ save_u8 (cdrom_speed);
+ save_u8 (cdrom_current_sector);
+
+ save_u32 (cdrom_toc_crc);
+ save_u8 (cdrom_toc_entries);
+ save_u32 (cdrom_leadout);
+
*len = dst - dstbak;
return dstbak;
}
akiko_buffer[i] = restore_u32 ();
akiko_read_offset = restore_u8 ();
akiko_write_offset = restore_u8 ();
- akiko_c2p_do ();
cdrom_playing = cdrom_paused = 0;
v = restore_u32 ();
cdrom_playing = 1;
if (v & 2)
cdrom_paused = 1;
+
last_play_pos = restore_u32 ();
last_play_end = restore_u32 ();
- cdrom_toc_counter = restore_u8 ();
- if (cdrom_toc_counter == 255)
- cdrom_toc_counter = -1;
- if (cdrom_playing)
- sys_command_cd_play (DF_IOCTL, unitnum, last_play_pos, last_play_end, 0);
+ cdrom_toc_counter = (uae_s8)restore_u8 ();
+ cdrom_speed = restore_u8 ();
+ cdrom_current_sector = (uae_s8)restore_u8 ();
+
+ restore_u32();
+ restore_u8();
+ restore_u32();
return src;
}
+
+void restore_akiko_finish(void)
+{
+ if (!cd32_enabled)
+ return;
+ akiko_c2p_do ();
+ sys_command_cd_pause (DF_IOCTL, unitnum, 0);
+ sys_command_cd_stop (DF_IOCTL, unitnum);
+ sys_command_cd_pause (DF_IOCTL, unitnum, 1);
+ if (cdrom_playing)
+ sys_command_cd_play (DF_IOCTL, unitnum, last_play_pos, last_play_end, 0);
+}
+
+
void akiko_entergui (void)
{
if (cdrom_playing)
static uae_u32 hrtmem_mask;
static uae_u8 *hrtmon_custom, *hrtmon_ciaa, *hrtmon_ciab;
uae_u32 hrtmem_start, hrtmem_size;
+static int triggered_once;
static void hrtmon_unmap_banks(void);
static addrbank hrtmem_bank = {
hrtmem_lget, hrtmem_wget, hrtmem_bget,
hrtmem_lput, hrtmem_wput, hrtmem_bput,
- hrtmem_xlate, hrtmem_check, NULL, "HRTMon memory"
+ hrtmem_xlate, hrtmem_check, NULL, "HRTMon memory",
};
static void copyfromamiga(uae_u8 *dst,uaecptr src,int len)
static addrbank arrom_bank = {
arrom_lget, arrom_wget, arrom_bget,
arrom_lput, arrom_wput, arrom_bput,
- arrom_xlate, arrom_check, NULL, "Action Replay ROM"
+ arrom_xlate, arrom_check, NULL, "Action Replay ROM",
};
static addrbank arram_bank = {
arram_lget, arram_wget, arram_bget,
arram_lput, arram_wput, arram_bput,
- arram_xlate, arram_check, NULL, "Action Replay RAM"
+ arram_xlate, arram_check, NULL, "Action Replay RAM",
};
static void action_replay_unmap_banks()
uaecptr old;
int i;
+ triggered_once = 1;
cartridge_enter();
hrtmon_flag = ACTION_REPLAY_ACTIVE;
set_special (SPCFLAG_ACTION_REPLAY);
{
if (!armemory_rom)
return;
+ triggered_once = 1;
if (armodel == 1) {
write_log("AR1: Enter PC:%p\n", m68k_getpc());
action_replay_go1 (7);
"ACTION_REPLAY_HIDE",
};
- write_log_debug("Action Replay State:(%s) Hrtmon State:(%s)\n", state[action_replay_flag+3],state[hrtmon_flag+3] );
+ write_log_debug("Action Replay State:(%s)\nHrtmon State:(%s)\n", state[action_replay_flag+3],state[hrtmon_flag+3] );
if ( armemory_rom && armodel == 1 )
{
cfg->novbr = TRUE;
cfg->hexmode = TRUE;
cfg->entered = 0;
- cfg->key = hrtmon_lang;
+ cfg->keyboard = hrtmon_lang;
do_put_mem_long(&cfg->max_chip, currprefs.chipmem_size);
+ do_put_mem_long(&cfg->mon_size, 0x800000);
}
int hrtmon_load(void)
if (hrtmemory)
return 0;
+ triggered_once = 0;
armodel = 0;
hrtmem_start = 0xa10000;
if (!currprefs.cart_internal) {
if (!hrtmemory)
return 0;
+ if (!triggered_once)
+ return 0;
if (dstptr)
dstbak = dst = dstptr;
else
cfgfile_write (f, "fastmem_size=%d\n", p->fastmem_size / 0x100000);
cfgfile_write (f, "a3000mem_size=%d\n", p->a3000mem_size / 0x100000);
cfgfile_write (f, "z3mem_size=%d\n", p->z3fastmem_size / 0x100000);
+ cfgfile_write (f, "z3mem_start=0x%x\n", p->z3fastmem_start);
cfgfile_write (f, "bogomem_size=%d\n", p->bogomem_size / 0x40000);
cfgfile_write (f, "gfxcard_size=%d\n", p->gfxmem_size / 0x100000);
cfgfile_write (f, "chipmem_size=%d\n", (p->chipmem_size == 0x40000) ? 0 : p->chipmem_size / 0x80000);
|| cfgfile_intval (option, value, "fastmem_size", &p->fastmem_size, 0x100000)
|| cfgfile_intval (option, value, "a3000mem_size", &p->a3000mem_size, 0x100000)
|| cfgfile_intval (option, value, "z3mem_size", &p->z3fastmem_size, 0x100000)
+ || cfgfile_intval (option, value, "z3mem_start", &p->z3fastmem_start, 1)
|| cfgfile_intval (option, value, "bogomem_size", &p->bogomem_size, 0x40000)
|| cfgfile_intval (option, value, "gfxcard_size", &p->gfxmem_size, 0x100000)
|| cfgfile_intval (option, value, "floppy_speed", &p->floppy_speed, 1)
p->fastmem_size = 0x00000000;
p->a3000mem_size = 0x00000000;
p->z3fastmem_size = 0x00000000;
+ p->z3fastmem_start = 0x10000000;
p->chipmem_size = 0x00080000;
p->bogomem_size = 0x00080000;
p->gfxmem_size = 0x00000000;
CLXCON2 (clxcon2);
calcdiw ();
write_log ("State restored\n");
- dumpcustom ();
for (i = 0; i < 8; i++)
nr_armed += spr[i].armed != 0;
if (! currprefs.produce_sound) {
case 0x44:
if (expamem_type() == zorroIII) {
// +Bernd Roesch
- value = value - 0x3000; // maps to 0x10000000
+ value = (value - 0x4000) + (z3fastmem_start >> 16); /* hack address */
chipmem_wput (regs.regs[11] + 0x20, value);
chipmem_wput (regs.regs[11] + 0x28, value);
// -Bernd Roesch
expamem_write (0x40, 0x00); /* Ctrl/Statusreg.*/
- z3fastmem_start = 0x10000000;
+ z3fastmem_start = currprefs.z3fastmem_start;
map_banks (&z3fastmem_bank, z3fastmem_start >> 16, currprefs.z3fastmem_size >> 16,
allocated_z3fastmem);
//#include "types.h"
#include "fdi2raw.h"
+#include "crc32.h"
#undef DEBUG
#define VERBOSE
-#undef VERBOSE
#include <assert.h>
int bit_rate;
int disk_type;
int write_protect;
+ int reversed_side;
int err;
uae_u8 header[2048];
int track_offsets[MAX_TRACKS];
idxp[i] = sum;
}
len = totalavg / 100000;
- outlog("totalavg=%u index=%d (%d) maxidx=%d weakbits=%d len=%d\n",
+ debuglog("totalavg=%u index=%d (%d) maxidx=%d weakbits=%d len=%d\n",
totalavg, indexoffset, maxidx, weakbits, len);
cache->avgp = avgp;
cache->idxp = idxp;
fdi_free(fdi);
return NULL;
}
- if ((fdi->header[140] != 1 && fdi->header[140] != 2) || fdi->header[141] != 0) {
+ if (fdi->header[140] != 1 && fdi->header[140] != 2) {
fdi_free(fdi);
return NULL;
}
+ if (fdi->header[140] * 256 + fdi->header[141] >= 2 * 256 + 1) {
+ uae_u32 crc = get_crc32(fdi->header, 508);
+ uae_u32 crc2 = (fdi->header[508] << 24) | (fdi->header[509] << 16) | (fdi->header[510] << 8) | fdi->header[511];
+ if (crc != crc2) {
+ outlog("FDI: header checksum error\n");
+ fdi_free(fdi);
+ return NULL;
+ }
+ }
+
fdi->mfmsync_buffer = fdi_malloc (MAX_MFM_SYNC_BUFFER * sizeof(int));
fdi->track_src_buffer = fdi_malloc (MAX_SRC_BUFFER);
fdi->track_dst_buffer = fdi_malloc (MAX_DST_BUFFER);
fdi->disk_type = fdi->header[145];
fdi->rotation_speed = fdi->header[146] + 128;
fdi->write_protect = fdi->header[147] & 1;
+ fdi->reversed_side = (fdi->header[147] & 4) ? 1 : 0;
outlog ("FDI version %d.%d\n", fdi->header[140], fdi->header[141]);
- outlog ("last_track=%d rotation_speed=%d\n",fdi->last_track,fdi->rotation_speed);
+ outlog ("last_track=%d rotation_speed=%d\n", fdi->last_track, fdi->rotation_speed);
offset = 512;
i = fdi->last_track;
}
-int fdi2raw_loadrevolution_2 (FDI *fdi, uae_u16 *mfmbuf, uae_u16 *tracktiming, int track, int *tracklength, int *indexoffsetp, int *multirev, int mfm)
+static int fdi2raw_loadrevolution_2 (FDI *fdi, uae_u16 *mfmbuf, uae_u16 *tracktiming, int track, int *tracklength, int *indexoffsetp, int *multirev, int mfm)
{
struct fdi_cache *cache = &fdi->cache[track];
int len, i, idx;
cache->avgp, cache->minp, cache->maxp, cache->idxp,
cache->maxidx, &idx, cache->pulses, mfm);
//fdi2_gcr_decode (fdi, totalavg, avgp, minp, maxp, idxp, idx_off1, idx_off2, idx_off3, maxidx, pulses);
- outlog("track %d: nbits=%d avg len=%.2f weakbits=%d idx=%d\n",
+ debuglog("track %d: nbits=%d avg len=%.2f weakbits=%d idx=%d\n",
track, bitoffset, (double)cache->totalavg / bitoffset, cache->weakbits, cache->indexoffset);
len = fdi->out;
if (cache->weakbits >= 10 && multirev)
int fdi2raw_loadrevolution (FDI *fdi, uae_u16 *mfmbuf, uae_u16 *tracktiming, int track, int *tracklength, int mfm)
{
+ track ^= fdi->reversed_side;
return fdi2raw_loadrevolution_2 (fdi, mfmbuf, tracktiming, track, tracklength, 0, 0, mfm);
}
int outlen, i, indexoffset = 0;
struct fdi_cache *cache = &fdi->cache[track];
+ track ^= fdi->reversed_side;
if (cache->lowlevel)
return fdi2raw_loadrevolution_2 (fdi, mfmbuf, tracktiming, track, tracklength, indexoffsetp, multirev, mfm);
else
fdi->bit_rate = 250;
- outlog ("track %d: srclen: %d track_type: %02.2X, bitrate: %d\n",
+ debuglog ("track %d: srclen: %d track_type: %02.2X, bitrate: %d\n",
fdi->current_track, fdi->track_src_len, fdi->track_type, fdi->bit_rate);
if ((fdi->track_type & 0xc0) == 0x80) {
#define UAEMAJOR 1
#define UAEMINOR 3
-#define UAESUBREV 1
+#define UAESUBREV 2
typedef enum { KBD_LANG_US, KBD_LANG_DK, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang;
int address_space_24;
uae_u32 z3fastmem_size;
+ uae_u32 z3fastmem_start;
uae_u32 fastmem_size;
uae_u32 chipmem_size;
uae_u32 bogomem_size;
delta = state;
}
mouse_delta[joy][ie->data] += delta;
- } else if (ie->type & 32) {
- int speed = currprefs.input_joymouse_speed;
- /* button mouse emulation */
- if (state && (ie->data & DIR_LEFT)) {
- mouse_delta[joy][0] = -speed;
- mouse_deltanoreset[joy][0] = 1;
- } else if (state && (ie->data & DIR_RIGHT)) {
- mouse_delta[joy][0] = speed;
- mouse_deltanoreset[joy][0] = 1;
- } else
- mouse_deltanoreset[joy][0] = 0;
+ } else if (ie->type & 32) { /* button mouse emulation vertical */
+ int speed = currprefs.input_joymouse_speed;
if (state && (ie->data & DIR_UP)) {
mouse_delta[joy][1] = -speed;
mouse_deltanoreset[joy][1] = 1;
} else
mouse_deltanoreset[joy][1] = 0;
- } else if (ie->type & 64) { /* analog (paddle) */
+ } else if (ie->type & 64) { /* button mouse emulation horizontal */
+
+ int speed = currprefs.input_joymouse_speed;
+ if (state && (ie->data & DIR_LEFT)) {
+ mouse_delta[joy][0] = -speed;
+ mouse_deltanoreset[joy][0] = 1;
+ } else if (state && (ie->data & DIR_RIGHT)) {
+ mouse_delta[joy][0] = speed;
+ mouse_deltanoreset[joy][0] = 1;
+ } else
+ mouse_deltanoreset[joy][0] = 0;
+
+ } else if (ie->type & 128) { /* analog (paddle) */
int deadzone = currprefs.input_joymouse_deadzone * max / 100;
if (max) {
if (state < deadzone && state > -deadzone) {
write_log ("Unsupported Zorro III fastmem size!\n");
err = 1;
}
+ p->z3fastmem_start &= ~0xffff;
+ if (p->z3fastmem_start < 0x1000000)
+ p->z3fastmem_start = 0x1000000;
+
if (p->address_space_24 && (p->gfxmem_size != 0 || p->z3fastmem_size != 0)) {
p->z3fastmem_size = p->gfxmem_size = 0;
write_log ("Can't use a graphics card or Zorro III fastmem when using a 24 bit\n"
int read_kickstart (struct zfile *f, uae_u8 *mem, int size, int dochecksum, int *cloanto_rom)
{
unsigned char buffer[20];
- int i, j, cr = 0;
+ int i, j;
+ int cr = 0, kickdisk = 0;
if (cloanto_rom)
*cloanto_rom = 0;
zfile_fseek (f, 0, SEEK_SET);
}
i = zfile_fread (buffer, 1, 11, f);
- if (strncmp ((char *)buffer, "AMIROMTYPE1", 11) != 0) {
+ if (!memcmp(buffer, "KICK", 4)) {
+ zfile_fseek (f, 512, SEEK_SET);
+ kickdisk = 1;
+ } else if (strncmp ((char *)buffer, "AMIROMTYPE1", 11) != 0) {
zfile_fseek (f, 0, SEEK_SET);
} else {
cr = 1;
*cloanto_rom = cr;
i = zfile_fread (mem, 1, size, f);
+ if (kickdisk && i > 262144)
+ i = 262144;
zfile_fclose (f);
if ((i != 8192 && i != 65536) && i != 131072 && i != 262144 && i != 524288) {
notify_user (NUMSG_KSROMREADERROR);
uae_u8 *restore_rom (uae_u8 *src)
{
- uae_u32 crc32;
+ uae_u32 crc32, mem_start, mem_size, mem_type, version;
int i;
- restore_u32 ();
- restore_u32 ();
- restore_u32 ();
- restore_u32 ();
+ mem_start = restore_u32 ();
+ mem_size = restore_u32 ();
+ mem_type = restore_u32 ();
+ version = restore_u32 ();
crc32 = restore_u32 ();
for (i = 0; i < romlist_cnt; i++) {
if (rl[i].rd->crc32 == crc32 && crc32) {
- strncpy (changed_prefs.romfile, rl[i].path, 255);
+ switch (mem_type)
+ {
+ case 0:
+ strncpy (changed_prefs.romfile, rl[i].path, 255);
+ break;
+ case 1:
+ strncpy (changed_prefs.romextfile, rl[i].path, 255);
+ break;
+ }
break;
}
}
src += strlen (src) + 1;
- if (zfile_exists(src))
- strncpy (changed_prefs.romfile, src, 255);
+ if (zfile_exists(src)) {
+ switch (mem_type)
+ {
+ case 0:
+ strncpy (changed_prefs.romfile, src, 255);
+ break;
+ case 1:
+ strncpy (changed_prefs.romextfile, src, 255);
+ break;
+ }
+ }
src += strlen (src) + 1;
return src;
}
static int count;
uae_u8 *dst, *dstbak;
uae_u8 *mem_real_start;
- int mem_start, mem_size, mem_type, i, saverom;
+ uae_u32 version;
+ char *path;
+ int mem_start, mem_size, mem_type, saverom;
+ int i;
+ char tmpname[1000];
+ version = 0;
saverom = 0;
if (first)
count = 0;
for (;;) {
mem_type = count;
switch (count) {
- case 0: /* Kickstart ROM */
+ case 0: /* Kickstart ROM */
mem_start = 0xf80000;
mem_real_start = kickmemory;
mem_size = kickmem_size;
+ path = currprefs.romfile;
/* 256KB or 512KB ROM? */
for (i = 0; i < mem_size / 2 - 4; i++) {
if (longget (i + mem_start) != longget (i + mem_start + mem_size / 2))
mem_size /= 2;
mem_start += 262144;
}
- mem_type = 0;
+ version = longget (mem_start + 12); /* version+revision */
+ sprintf (tmpname, "Kickstart %d.%d", wordget (mem_start + 12), wordget (mem_start + 14));
+ break;
+ case 1: /* Extended ROM */
+ if (!extendedkickmem_size)
+ break;
+ mem_start = extendedkickmem_start;
+ mem_real_start = extendedkickmemory;
+ mem_size = extendedkickmem_size;
+ path = currprefs.romextfile;
+ sprintf (tmpname, "CD32 Extended");
break;
default:
return 0;
save_u32 (mem_start);
save_u32 (mem_size);
save_u32 (mem_type);
- save_u32 (longget (mem_start + 12)); /* version+revision */
- save_u32 (get_crc32 (kickmemory, mem_size));
- sprintf (dst, "Kickstart %d.%d", wordget (mem_start + 12), wordget (mem_start + 14));
+ save_u32 (version);
+ save_u32 (get_crc32 (mem_real_start, mem_size));
+ strcpy (dst, tmpname);
dst += strlen (dst) + 1;
- strcpy (dst, currprefs.romfile);/* rom image name */
+ strcpy (dst, path);/* rom image name */
dst += strlen(dst) + 1;
if (saverom) {
for (i = 0; i < mem_size; i++)
size+=32;
}
if(!strcmp(shmids[shmid].name,"z3")) {
- shmaddr=natmem_offset+0x10000000;
+ shmaddr=natmem_offset+currprefs.z3fastmem_start;
if (allocated_z3fastmem<0x1000000)
gfxoffs=0x1000000;
else
}
if(!strcmp(shmids[shmid].name,"gfx"))
{
- shmaddr=natmem_offset+0x10000000+gfxoffs;
+ shmaddr=natmem_offset+currprefs.z3fastmem_start+gfxoffs;
got = TRUE;
size+=32;
result=malloc(size);
}
keycheck = 0;
}
- if (currprefs.parallel_autoflush_time) {
+ if (currprefs.parallel_autoflush_time && !currprefs.parallel_postscript_detection) {
parflush++;
if (parflush / ((currprefs.ntscmode ? MAXVPOS_NTSC : MAXVPOS_PAL) * MAXHPOS_PAL / maxhpos) >= currprefs.parallel_autoflush_time * 50) {
flushprinter ();
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,3,1,0
- PRODUCTVERSION 1,3,1,0
+ FILEVERSION 1,3,2,0
+ PRODUCTVERSION 1,3,2,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
BLOCK "040904b0"
BEGIN
VALUE "FileDescription", "WinUAE"
- VALUE "FileVersion", "1.3.1"
+ VALUE "FileVersion", "1.3.2"
VALUE "InternalName", "WinUAE"
VALUE "LegalCopyright", "© 1996-2006 under the GNU Public License (GPL)"
VALUE "OriginalFilename", "WinUAE.exe"
VALUE "ProductName", "WinUAE"
- VALUE "ProductVersion", "1.3.1"
+ VALUE "ProductVersion", "1.3.2"
END
END
BLOCK "VarFileInfo"
extern int manual_palette_refresh_needed;
extern int mouseactive, focus;
extern int ignore_messages_all;
-#define WINUAEBETA 0
-#define WINUAEBETASTR ""
+#define WINUAEBETA 1
+#define WINUAEBETASTR " Beta 1"
extern char start_path_exe[MAX_DPATH];
extern char start_path_data[MAX_DPATH];
void graphics_leave (void)
{
close_windows ();
- dumpcustom ();
}
uae_u32 OSDEP_minimize_uae( void )
zfile_fseek (f, 0, SEEK_END);
size = zfile_ftell (f);
zfile_fseek (f, 0, SEEK_SET);
- if (size > 600000)
+ if (size > 1760 * 512) /* don't skip KICK disks */
return 0;
zfile_fread (buffer, 1, 11, f);
- if (!memcmp (buffer, "AMIROMTYPE1", 11)) {
+ if (!memcmp (buffer, "KICK", 4)) {
+ zfile_fseek (f, 512, SEEK_SET);
+ if (size > 262144)
+ size = 262144;
+ } else if (!memcmp (buffer, "AMIROMTYPE1", 11)) {
cl = 1;
if (keybuf == 0)
cl = -1;
{
struct zfile *f;
uae_u8 *chunk,*end;
- char name[5], prevchunk[5];
+ char name[5];
long len, totallen;
long filepos;
changed_prefs.chipmem_size = 0;
changed_prefs.fastmem_size = 0;
savestate_state = STATE_RESTORE;
- prevchunk[0] = 0;
for (;;) {
+ name[0] = 0;
chunk = end = restore_chunk (f, name, &len, &totallen, &filepos);
- if (!strcmp (name, prevchunk))
- break;
- strcpy (prevchunk, name);
write_log ("Chunk '%s' size %d (%d)\n", name, len, totallen);
if (!strcmp (name, "END "))
break;