puae 2.3.3

This commit is contained in:
mtufan 2011-08-19 13:47:15 +03:00
parent 8dee2a58f4
commit 65b99a5cc6
15 changed files with 173 additions and 155 deletions

View File

@ -9,9 +9,11 @@ cd32=" --enable-cd32 "
a600=" --enable-gayle "
scsi=" --enable-scsi-device --enable-ncr --enable-a2091 "
other=" --with-caps --enable-amax "
debug="--enable-profiling"
debug=""
#
#
./bootstrap.sh
./configure $base $cd32 $a600 $scsi $other CFLAGS="-m32" LDFLAGS="-m32" CPPFLAGS="-m32" CXXFLAGS="-m32"
./configure $base $cd32 $a600 $scsi $other $debug CFLAGS="-m32" LDFLAGS="-m32" CPPFLAGS="-m32" CXXFLAGS="-m32"
make clean
make

View File

@ -371,6 +371,7 @@ static int filter (int input, struct filter_state *fs)
case FILTER_NONE:
return input;
case FILTER_MODEL_A500:
fs->rc1 = a500e_filter1_a0 * input + (1 - a500e_filter1_a0) * fs->rc1 + DENORMAL_OFFSET;
fs->rc2 = a500e_filter2_a0 * fs->rc1 + (1-a500e_filter2_a0) * fs->rc2;

View File

@ -359,6 +359,7 @@ STATIC_INLINE void chipmem_agnus_wput2 (uaecptr addr, uae_u32 w)
last_custom_value1 = w;
#ifndef BLITTER_DEBUG_NO_D
chipmem_wput_indirect (addr, w);
debug_wputpeekdma (addr, w);
#endif
}

View File

@ -40,7 +40,8 @@ static uae_u8 play_qcode[MAX_TOTAL_SCSI_DEVICES][SUBQ_SIZE];
static TCHAR newimagefiles[MAX_TOTAL_SCSI_DEVICES][256];
static int imagechangetime[MAX_TOTAL_SCSI_DEVICES];
static bool cdimagefileinuse[MAX_TOTAL_SCSI_DEVICES], wasopen[MAX_TOTAL_SCSI_DEVICES];
static bool cdimagefileinuse[MAX_TOTAL_SCSI_DEVICES];
static bool wasopen[MAX_TOTAL_SCSI_DEVICES];
/* convert minutes, seconds and frames -> logical sector number */
int msf2lsn (int msf)
@ -552,7 +553,7 @@ static void check_changes (int unitnum)
imagechangetime[unitnum] = 8 * 50;
}
}
write_log ("CD: eject (%s)\n", pollmode ? "slow" : "fast");
write_log ("CD: eject (%s) open=%d\n", pollmode ? L"slow" : L"fast", wasopen[unitnum] ? 1 : 0);
#ifdef RETROPLATFORM
rp_cd_image_change (unitnum, NULL);
#endif
@ -570,12 +571,14 @@ static void check_changes (int unitnum)
_tcscpy (changed_prefs.cdslots[unitnum].name, newimagefiles[unitnum]);
currprefs.cdslots[unitnum].inuse = changed_prefs.cdslots[unitnum].inuse = cdimagefileinuse[unitnum];
newimagefiles[unitnum][0] = 0;
write_log ("CD: delayed insert '%s'\n", currprefs.cdslots[unitnum].name[0] ? currprefs.cdslots[unitnum].name : "<EMPTY>");
write_log ("CD: delayed insert '%s' (open=%d)\n", currprefs.cdslots[unitnum].name[0] ? currprefs.cdslots[unitnum].name : L"<EMPTY>", wasopen[unitnum] ? 1 : 0);
device_func_init (0);
if (wasopen[unitnum]) {
if (!device_func[unitnum]->opendev (unitnum, currprefs.cdslots[unitnum].name, 0)) {
write_log ("-> device open failed\n");
wasopen[unitnum] = 0;
} else {
write_log ("-> device reopened\n");
}
}
if (currprefs.scsi && wasopen[unitnum]) {

View File

@ -7,7 +7,7 @@
*
* Copyright 1995-2000 Bernd Schmidt
* Copyright 1995 Alessandro Bissacco
* Copyright 2000-2008 Toni Wilen
* Copyright 2000-2011 Toni Wilen
*/
/* There are a couple of concepts of "coordinates" in this file.

52
src/filesys.asm Executable file → Normal file
View File

@ -70,14 +70,6 @@ bootcode:
residenthack
movem.l d0-d2/a0-a2/a6,-(sp)
move.w #$FF38,d0
moveq #17,d1
bsr.w getrtbase
jsr (a0)
tst.l d0
beq.s .rsh
move.l 4.w,a6
cmp.w #37,20(a6)
bcs.s .rsh
@ -232,6 +224,7 @@ FSIN_none:
;FSIN_scandone:
; jsr -$007e(a6) ; Enable
filesys_dev_storeinfo
moveq #3,d4 ; MEMF_CHIP | MEMF_PUBLIC
cmp.w #36,20(a6)
@ -240,11 +233,6 @@ filesys_dev_storeinfo
FSIN_ksold
; add >2MB-6MB chip RAM to memory list
lea $210000,a1
; do not add if RAM detected already
jsr -$216(a6) ; TypeOfMem
tst.l d0
bne.s FSIN_chip_done
move.w #$FF80,d0
bsr.w getrtbase
jsr (a0)
@ -359,8 +347,8 @@ EXTS_loop:
jsr -366(a6) ; PutMsg
bra.b EXTS_loop
EXTS_signal_reply:
cmp.w #2,d0
bgt.b EXTS_reply
cmp.w #2,d0
bgt.b EXTS_reply
move.l d1,d0
jsr -$144(a6) ; Signal
bra.b EXTS_loop
@ -1238,15 +1226,15 @@ FSML_loop:
clr.b 172(a3)
.nodc
move.l a4,d0
beq.s nonnotif
beq.s FSML_loop
; notify reply?
cmp.w #38, 18(a4)
bne.s nonnotif
bne.s nonotif
cmp.l #NOTIFY_CLASS, 20(a4)
bne.s nonnotif
bne.s nonotif
cmp.w #NOTIFY_CODE, 24(a4)
bne.s nonnotif
bne.s nonotif
move.l 26(a4),a0 ; NotifyRequest
move.l 12(a0),d0 ; flags
and.l #NRF_WAIT_REPLY|NRF_MAGIC,d0
@ -1264,20 +1252,15 @@ nonoti
jsr FreeMem(a6)
bra.w FSML_loop
nonnotif
moveq #-2,d2 ; lock timeout "done" value
move.l a4,d0
beq.s FSML_check_queue_other
nonotif
move.l 10(a4),d3 ; ln_Name
bne.b FSML_FromDOS
moveq #-1,d2 ; normal "done" value
; It's a dummy packet indicating that some queued command finished.
move.w #$FF50,d0 ; exter_int_helper
bsr.w getrtbase
moveq.l #1,d0
jsr (a0)
FSML_check_queue_other:
; Go through the queue and reply all those that finished.
lea.l 4(a3),a2
move.l (a2),a0
@ -1289,8 +1272,7 @@ FSML_check_old:
; This field may be accessed concurrently by several UAE threads.
; This _should_ be harmless on all reasonable machines.
move.l 4(a0),d0
cmp.l d0,d2
bne.b FSML_check_next
bpl.b FSML_check_next
movem.l a0/a1,-(a7)
move.l 10(a0),a4
bsr.b ReplyOne
@ -2079,14 +2061,6 @@ CLIP_END = (CLIP_POINTER_PREFS+32)
clipboard_init:
movem.l a5/a6,-(sp)
move.w #$FF38,d0
moveq #17,d1
bsr.w getrtbase
jsr (a0)
btst #0,d0
beq.s .noclip
move.l 4.w,a6
move.l #CLIP_END,d0
move.l #$10001,d1
@ -2108,7 +2082,7 @@ clipboard_init:
moveq #-10,d0
move.l #10000,d1
bsr.w createproc
.noclip
moveq #0,d0
movem.l (sp)+,a5/a6
rts
@ -2439,15 +2413,13 @@ cliphook:
consolehook:
move.l 4.w,a6
moveq #-1,d2
move.w #$FF38,d0
moveq #17,d1
moveq #100,d1
bsr.w getrtbase
jsr (a0)
btst #1,d0
tst.l d0
beq.s .ch2
moveq #0,d2
jsr -$0084(a6) ;Forbid
lea 350(a6),a0 ;DeviceList

View File

@ -138,7 +138,7 @@ int input_get_default_mouse (struct uae_input_device *uid, int i, int port, int
{
}
uae_u8 *gfx_lock_picasso (void)
uae_u8 *gfx_lock_picasso (int fullupdate)
{
}

View File

@ -1843,7 +1843,7 @@ void gfx_set_picasso_state (int on)
DX_SetPalette (0, 256);
}
uae_u8 *gfx_lock_picasso (void)
uae_u8 *gfx_lock_picasso (int fullupdate)
{
DEBUG_LOG ("Function: gfx_lock_picasso\n");

View File

@ -891,7 +891,7 @@ void gfx_set_picasso_state (int on)
set_window_for_amiga ();
}
uae_u8 *gfx_lock_picasso (void)
uae_u8 *gfx_lock_picasso (int fullupdate)
{
return linear_mem;
}

View File

@ -1485,7 +1485,7 @@ void gfx_set_picasso_state (int on)
DX_SetPalette_real (0, 256);
}
uae_u8 *gfx_lock_picasso (void)
uae_u8 *gfx_lock_picasso (int fullupdate)
{
#ifdef USE_DGA_EXTENSION
if (dgamode)

View File

@ -751,7 +751,7 @@ extern void gfx_set_picasso_modeinfo (uae_u32 w, uae_u32 h, uae_u32 d, RGBFTYPE
extern void gfx_set_picasso_colors (RGBFTYPE rgbfmt);
extern void gfx_set_picasso_baseaddr (uaecptr);
extern void gfx_set_picasso_state (int on);
extern uae_u8 *gfx_lock_picasso (void);
extern uae_u8 *gfx_lock_picasso (int fullupdate);
extern void gfx_unlock_picasso (void);
extern void picasso_clip_mouse (int *, int *);

View File

@ -199,7 +199,6 @@ void fixup_cpu (struct uae_prefs *p)
p->mmu_model = 0;
}
void fixup_prefs (struct uae_prefs *p)
{
int err = 0;

View File

@ -601,7 +601,7 @@ void picasso_handle_vsync (void)
if (!picasso_on)
createwindowscursor (0, 0, 0, 0, 0, 1);*/
if (currprefs.chipset_refreshrate >= 100) {
if (currprefs.chipset_refreshrate >= 100.0) {
vsynccnt++;
if (vsynccnt < 2)
thisisvsync = 0;
@ -783,6 +783,7 @@ static void setconvert (void)
else
alloc_colors_rgb (5, 6, 5, 11, 5, 0, 0, 0, 0, 0, p96rc, p96gc, p96bc);
gfx_set_picasso_colors (picasso96_state.RGBFormat);
picasso_palette ();
if (host_mode != ohost_mode || picasso96_state.RGBFormat != orgbformat) {
write_log ("RTG conversion: Depth=%d HostRGBF=%d P96RGBF=%d Mode=%d\n", d, host_mode, picasso96_state.RGBFormat, v);
ohost_mode = host_mode;
@ -1060,7 +1061,7 @@ static int do_blitrect_frame_buffer (struct RenderInfo *ri, struct
src = ri->Memory + srcx * Bpp + srcy * ri->BytesPerRow;
dst = dstri->Memory + dstx * Bpp + dsty * dstri->BytesPerRow;
if (mask != 0xFF && Bpp > 1) {
write_log (("P96: WARNING - BlitRect() has mask 0x%x with Bpp %d.\n", mask, Bpp));
write_log ("P96: WARNING - BlitRect() has mask 0x%x with Bpp %d.\n", mask, Bpp);
}
P96TRACE (("(%dx%d)=(%dx%d)=(%dx%d)=%d\n", srcx, srcy, dstx, dsty, width, height, opcode));
@ -1568,6 +1569,9 @@ static struct modeids mi[] =
1600, 900, 170,
960, 600, 171,
1088, 612, 172,
1152, 648, 173,
1776,1000, 174,
2560,1440, 175,
-1,-1,0
};
@ -1997,6 +2001,13 @@ void picasso_enablescreen (int on)
checkrtglibrary();
}
static void resetpalette(void)
{
unsigned int i;
for (i = 0; i < 256; i++)
picasso96_state.CLUT[i].Pad = 0xff;
}
/*
* SetColorArray:
* a0: struct BoardInfo
@ -2018,16 +2029,19 @@ static int updateclut (uaecptr clut, int start, int count)
int g = get_byte (clut + 1);
int b = get_byte (clut + 2);
changed |= (picasso96_state.CLUT[i].Red != r
changed |= picasso96_state.CLUT[i].Red != r
|| picasso96_state.CLUT[i].Green != g
|| picasso96_state.CLUT[i].Blue != b);
|| picasso96_state.CLUT[i].Blue != b;
if (picasso96_state.CLUT[i].Pad) {
changed = 1;
picasso96_state.CLUT[i].Pad = 0;
}
picasso96_state.CLUT[i].Red = r;
picasso96_state.CLUT[i].Green = g;
picasso96_state.CLUT[i].Blue = b;
clut += 3;
}
picasso_palette ();
changed |= picasso_palette ();
return changed;
}
static uae_u32 REGPARAM2 picasso_SetColorArray (TrapContext *ctx)
@ -2192,8 +2206,9 @@ static uae_u32 REGPARAM2 picasso_SetPanning (TrapContext *ctx)
full_refresh = 1;
set_panning_called = 1;
P96TRACE(("SetPanning(%d, %d, %d) Start 0x%x, BPR %d Bpp %d RGBF %d\n",
P96TRACE(("SetPanning(%d, %d, %d) (%dx%d) Start 0x%x, BPR %d Bpp %d RGBF %d\n",
Width, picasso96_state.XOffset, picasso96_state.YOffset,
bme_width, bme_height,
start_of_screen, picasso96_state.BytesPerRow, picasso96_state.BytesPerPixel, picasso96_state.RGBFormat));
init_picasso_screen ();
set_panning_called = 0;
@ -2918,7 +2933,7 @@ static uae_u32 REGPARAM2 picasso_CalculateBytesPerRow (TrapContext *ctx)
uae_u16 width = m68k_dreg (regs, 0);
uae_u32 type = m68k_dreg (regs, 7);
width = GetBytesPerPixel (type) * width;
P96TRACE (("CalculateBytesPerRow() = %d\n", width));
P96TRACE (("CalculateBytesPerRow() = %d\n", width));
return width;
}
@ -2934,6 +2949,7 @@ static uae_u32 REGPARAM2 picasso_SetDisplay (TrapContext *ctx)
{
uae_u32 state = m68k_dreg (regs, 0);
P96TRACE (("SetDisplay(%d)\n", state));
resetpalette();
return !state;
}
@ -2978,13 +2994,12 @@ void init_hz_p96 (void)
} else {
p96vblank = currprefs.win32_rtgvblankrate;
}
if (p96vblank <= 0)
p96vblank = 60;
if (p96vblank >= 300)
p96vblank = 300;
p96syncrate = maxvpos * vblank_hz / p96vblank;
write_log ("P96FREQ: %d * %g = %d / %d = %d\n", maxvpos, vblank_hz, maxvpos_nom * vblank_hz, p96vblank, p96syncrate);
p96syncrate = maxvpos_nom * vblank_hz / p96vblank;
write_log ("P96FREQ: %d*%.4f = %.4f / %d = %d\n", maxvpos_nom, vblank_hz, maxvpos_nom * vblank_hz, p96vblank, p96syncrate);
}
/* NOTE: Watch for those planeptrs of 0x00000000 and 0xFFFFFFFF for all zero / all one bitmaps !!!! */
@ -3248,17 +3263,21 @@ static uae_u32 REGPARAM2 picasso_BlitPlanar2Direct (TrapContext *ctx)
#include "statusline.h"
static void statusline (uae_u8 *dst)
{
int y, yy;
int dst_height, pitch;
int y, yy, slx, sly;
int dst_height, dst_width, pitch;
dst_height = picasso96_state.Height;
if (dst_height > picasso_vidinfo.height)
dst_height = picasso_vidinfo.height;
dst_width = picasso96_state.Width;
if (dst_width > picasso_vidinfo.width)
dst_width = picasso_vidinfo.width;
pitch = picasso_vidinfo.rowbytes;
statusline_getpos (&slx, &sly, picasso96_state.Width, dst_height);
yy = 0;
for (y = dst_height - TD_TOTAL_HEIGHT; y < dst_height; y++) {
uae_u8 *buf = dst + y * pitch;
draw_status_line_single (buf, picasso_vidinfo.pixbytes, yy, picasso96_state.Width, p96rc, p96gc, p96bc, NULL);
for (y = 0; y < TD_TOTAL_HEIGHT; y++) {
uae_u8 *buf = dst + (y + sly) * pitch;
draw_status_line_single (buf, picasso_vidinfo.pixbytes, y, dst_width, p96rc, p96gc, p96bc, NULL);
yy++;
}
}
@ -3494,13 +3513,13 @@ static void copyrow (uae_u8 *src, uae_u8 *dst, int x, int y, int width)
}
}
static void copyallinvert (uae_u8 *src, uae_u8 *dst)
static void copyallinvert (uae_u8 *src, uae_u8 *dst, int pwidth, int pheight)
{
int x, y, w;
w = picasso96_state.Width * picasso_vidinfo.pixbytes;
w = pwidth * picasso_vidinfo.pixbytes;
if (picasso96_state.RGBFormat == host_mode) {
for (y = 0; y < picasso96_state.Height; y++) {
for (y = 0; y < pheight; y++) {
for (x = 0; x < w; x++)
dst[x] = src[x] ^ 0xff;
dst += picasso_vidinfo.rowbytes;
@ -3508,10 +3527,10 @@ static void copyallinvert (uae_u8 *src, uae_u8 *dst)
}
} else {
uae_u8 *src2 = src;
for (y = 0; y < picasso96_state.Height; y++) {
for (y = 0; y < pheight; y++) {
for (x = 0; x < w; x++)
src2[x] ^= 0xff;
copyrow (src, dst, 0, y, picasso96_state.Width);
copyrow (src, dst, 0, y, pwidth);
for (x = 0; x < w; x++)
src2[x] ^= 0xff;
src2 += picasso96_state.BytesPerRow;
@ -3519,22 +3538,20 @@ static void copyallinvert (uae_u8 *src, uae_u8 *dst)
}
}
static void copyall (uae_u8 *src, uae_u8 *dst)
static void copyall (uae_u8 *src, uae_u8 *dst, int pwidth, int pheight)
{
int y;
uae_u8 *dstb;
dstb = dst;
if (picasso96_state.RGBFormat == host_mode) {
int w = picasso96_state.Width * picasso_vidinfo.pixbytes;
for (y = 0; y < picasso96_state.Height; y++) {
int w = pwidth * picasso_vidinfo.pixbytes;
for (y = 0; y < pheight; y++) {
memcpy (dst, src, w);
dst += picasso_vidinfo.rowbytes;
src += picasso96_state.BytesPerRow;
}
} else {
for (y = 0; y < picasso96_state.Height; y++)
copyrow (src, dst, 0, y, picasso96_state.Width);
for (y = 0; y < pheight; y++)
copyrow (src, dst, 0, y, pwidth);
}
}
@ -3547,13 +3564,18 @@ static int flushpixels (void)
uae_u8 *src = p96ram_start;
#endif
int off = picasso96_state.XYOffset - gfxmem_start;
uae_u8 *src_start = src + (off & ~gwwpagemask);
uae_u8 *src_end = src + ((off + picasso96_state.BytesPerRow * picasso96_state.Height + gwwpagesize - 1) & ~gwwpagemask);
int maxy = -1;
int miny = picasso96_state.Height - 1;
uae_u8 *src_start;
uae_u8 *src_end;
int lock = 0;
uae_u8 *dst = NULL;
long gwwcnt;
int pwidth = picasso96_state.Width > picasso96_state.VirtualWidth ? picasso96_state.VirtualWidth : picasso96_state.Width;
int pheight = picasso96_state.Height > picasso96_state.VirtualHeight ? picasso96_state.VirtualHeight : picasso96_state.Height;
int maxy = -1;
int miny = pheight - 1;
src_start = src + (off & ~gwwpagemask);
src_end = src + ((off + picasso96_state.BytesPerRow * pheight + gwwpagesize - 1) & ~gwwpagemask);
#if 0
write_log ("%dx%d %dx%d %dx%d\n", picasso96_state.Width, picasso96_state.Width,
picasso96_state.VirtualWidth, picasso96_state.VirtualHeight,
@ -3593,7 +3615,7 @@ static int flushpixels (void)
dofull = gwwcnt >= ((src_end - src_start) / gwwpagesize) * 80 / 100;
dst = gfx_lock_picasso ();
dst = gfx_lock_picasso (dofull);
if (dst == NULL)
break;
lock = 1;
@ -3604,11 +3626,11 @@ static int flushpixels (void)
if (dofull) {
if (flashscreen != 0)
copyallinvert (src + off, dst);
copyallinvert (src + off, dst, pwidth, pheight);
else
copyall (src + off, dst);
copyall (src + off, dst, pwidth, pheight);
miny = 0;
maxy = picasso96_state.Height;
maxy = pheight;
break;
}
@ -3625,17 +3647,17 @@ static int flushpixels (void)
}
y = realoffset / picasso96_state.BytesPerRow;
if (y < picasso96_state.Height) {
if (y < pheight) {
int w = gwwpagesize / picasso96_state.BytesPerPixel;
x = (realoffset % picasso96_state.BytesPerRow) / picasso96_state.BytesPerPixel;
if (x < picasso96_state.Width)
copyrow (src + off, dst, x, y, picasso96_state.Width - x);
if (x < pwidth)
copyrow (src + off, dst, x, y, pwidth - x);
w = (gwwpagesize - (picasso96_state.BytesPerRow - x * picasso96_state.BytesPerPixel)) / picasso96_state.BytesPerPixel;
if (y < miny)
miny = y;
y++;
while (y < picasso96_state.Height && w > 0) {
int maxw = w > picasso96_state.Width ? picasso96_state.Width : w;
while (y < pheight && w > 0) {
int maxw = w > pwidth ? pwidth : w;
copyrow (src + off, dst, 0, y, maxw);
w -= maxw;
y++;
@ -3652,7 +3674,7 @@ static int flushpixels (void)
if (!currprefs.gfx_api && (currprefs.leds_on_screen & STATUSLINE_RTG)) {
if (dst == NULL) {
dst = gfx_lock_picasso ();
dst = gfx_lock_picasso (false);
lock = 1;
}
if (dst) {
@ -3666,7 +3688,7 @@ static int flushpixels (void)
if (doskip () && p96skipmode == 4) {
;
} else {
DX_Invalidate (miny, maxy);
DX_Invalidate (0, miny, pwidth, maxy - miny);
}
}
@ -3832,6 +3854,21 @@ static void initvblankirq (TrapContext *ctx, uaecptr base)
CallLib (ctx, get_long (4), -168); /* AddIntServer */
}
static uae_u32 REGPARAM2 picasso_SetClock(TrapContext *ctx)
{
uaecptr bi = m68k_areg (regs, 0);
P96TRACE(("SetClock\n"));
return 0;
}
static uae_u32 REGPARAM2 picasso_SetMemoryMode(TrapContext *ctx)
{
uaecptr bi = m68k_areg (regs, 0);
uae_u32 rgbformat = m68k_dreg (regs, 7);
P96TRACE(("SetMemoryMode\n"));
return 0;
}
#define PUTABI(func) \
if (ABI) \
put_long (ABI + func, here ());
@ -4034,6 +4071,7 @@ void picasso_reset (void)
uaegfx_active = 0;
interrupt_enabled = 0;
reserved_gfxmem = 0;
resetpalette();
}
void uaegfx_install_code (void)

View File

@ -16,7 +16,6 @@
#include "zfile.h"
#include "crc32.h"
static struct romlist *rl;
static int romlist_cnt;
@ -97,191 +96,191 @@ static struct romheader romheaders[] = {
};
#define ALTROM(id,grp,num,size,flags,crc32,a,b,c,d,e) \
{ "X", 0, 0, 0, 0, 0, size, id, 0, 0, flags, (grp << 16) | num, 0, NULL, crc32, a, b, c, d, e },
{ "X", 0, 0, 0, 0, 0, size, id, 0, 0, flags, (grp << 16) | num, 0, NULL, crc32, a, b, c, d, e, NULL },
#define ALTROMPN(id,grp,num,size,flags,pn,crc32,a,b,c,d,e) \
{ "X", 0, 0, 0, 0, 0, size, id, 0, 0, flags, (grp << 16) | num, 0, pn, crc32, a, b, c, d, e },
{ "X", 0, 0, 0, 0, 0, size, id, 0, 0, flags, (grp << 16) | num, 0, pn, crc32, a, b, c, d, e, NULL },
static struct romdata roms[] = {
{ " AROS KS ROM (built-in)", 0, 0, 0, 0, "AROS\0", 524288 * 2, 66, 0, 0, ROMTYPE_KICK, 0, 0, NULL,
0xffffffff, 0, 0, 0, 0, 0, "AROS" },
{ "Cloanto Amiga Forever ROM key", 0, 0, 0, 0, 0, 2069, 0, 0, 1, ROMTYPE_KEY, 0, 0, NULL,
0x869ae1b1, 0x801bbab3,0x2e3d3738,0x6dd1636d,0x4f1d6fa7,0xe21d5874 },
0x869ae1b1, 0x801bbab3,0x2e3d3738,0x6dd1636d,0x4f1d6fa7,0xe21d5874, NULL },
{ "Cloanto Amiga Forever 2006 ROM key", 0, 0, 0, 0, 0, 750, 48, 0, 1, ROMTYPE_KEY, 0, 0, NULL,
0xb01c4b56, 0xbba8e5cd,0x118b8d92,0xafed5693,0x5eeb9770,0x2a662d8f },
0xb01c4b56, 0xbba8e5cd,0x118b8d92,0xafed5693,0x5eeb9770,0x2a662d8f, NULL },
{ "Cloanto Amiga Forever 2010 ROM key", 0, 0, 0, 0, 0, 1544, 73, 0, 1, ROMTYPE_KEY, 0, 0, NULL,
0x8c4dd05c, 0x05034f62,0x0b5bb7b2,0x86954ea9,0x164fdb90,0xfb2897a4 },
0x8c4dd05c, 0x05034f62,0x0b5bb7b2,0x86954ea9,0x164fdb90,0xfb2897a4, NULL },
{ "KS ROM v1.0 (A1000)(NTSC)", 1, 0, 1, 0, "A1000\0", 262144, 1, 0, 0, ROMTYPE_KICK, 0, 0, NULL,
0x299790ff, 0x00C15406,0xBEB4B8AB,0x1A16AA66,0xC05860E1,0xA7C1AD79 },
0x299790ff, 0x00C15406,0xBEB4B8AB,0x1A16AA66,0xC05860E1,0xA7C1AD79, NULL },
{ "KS ROM v1.1 (A1000)(NTSC)", 1, 1, 31, 34, "A1000\0", 262144, 2, 0, 0, ROMTYPE_KICK, 0, 0, NULL,
0xd060572a, 0x4192C505,0xD130F446,0xB2ADA6BD,0xC91DAE73,0x0ACAFB4C},
0xd060572a, 0x4192C505,0xD130F446,0xB2ADA6BD,0xC91DAE73,0x0ACAFB4C, NULL },
{ "KS ROM v1.1 (A1000)(PAL)", 1, 1, 31, 34, "A1000\0", 262144, 3, 0, 0, ROMTYPE_KICK, 0, 0, NULL,
0xec86dae2, 0x16DF8B5F,0xD524C5A1,0xC7584B24,0x57AC15AF,0xF9E3AD6D },
0xec86dae2, 0x16DF8B5F,0xD524C5A1,0xC7584B24,0x57AC15AF,0xF9E3AD6D, NULL },
{ "KS ROM v1.2 (A1000)", 1, 2, 33, 166, "A1000\0", 262144, 4, 0, 0, ROMTYPE_KICK, 0, 0, NULL,
0x9ed783d0, 0x6A7BFB5D,0xBD6B8F17,0x9F03DA84,0xD8D95282,0x67B6273B },
0x9ed783d0, 0x6A7BFB5D,0xBD6B8F17,0x9F03DA84,0xD8D95282,0x67B6273B, NULL },
{ "KS ROM v1.2 (A500,A1000,A2000)", 1, 2, 33, 180, "A500\0A1000\0A2000\0", 262144, 5, 0, 0, ROMTYPE_KICK, 0, 0, "315093-01",
0xa6ce1636, 0x11F9E62C,0xF299F721,0x84835B7B,0x2A70A163,0x33FC0D88 },
0xa6ce1636, 0x11F9E62C,0xF299F721,0x84835B7B,0x2A70A163,0x33FC0D88, NULL },
{ "KS ROM v1.3 (A500,A1000,A2000)", 1, 3, 34, 5, "A500\0A1000\0A2000\0", 262144, 6, 0, 0, ROMTYPE_KICK, 0, 0, "315093-02",
0xc4f0f55f, 0x891E9A54,0x7772FE0C,0x6C19B610,0xBAF8BC4E,0xA7FCB785 },
0xc4f0f55f, 0x891E9A54,0x7772FE0C,0x6C19B610,0xBAF8BC4E,0xA7FCB785, NULL },
{ "KS ROM v1.3 (A3000)(SK)", 1, 3, 34, 5, "A3000\0", 262144, 32, 0, 0, ROMTYPE_KICK, 0, 0, NULL,
0xe0f37258, 0xC39BD909,0x4D4E5F4E,0x28C1411F,0x30869504,0x06062E87 },
0xe0f37258, 0xC39BD909,0x4D4E5F4E,0x28C1411F,0x30869504,0x06062E87,NULL },
{ "KS ROM v1.4 (A3000)", 1, 4, 36, 16, "A3000\0", 524288, 59, 3, 0, ROMTYPE_KICK, 0, 0, NULL,
0xbc0ec13f, 0xF76316BF,0x36DFF14B,0x20FA349E,0xD02E4B11,0xDD932B07 },
0xbc0ec13f, 0xF76316BF,0x36DFF14B,0x20FA349E,0xD02E4B11,0xDD932B07,NULL },
ALTROMPN(59, 1, 1, 262144, ROMTYPE_EVEN, "390629-02", 0x58327536,0xd1713d7f,0x31474a59,0x48e6d488,0xe3368606,0x1cf3d1e2)
ALTROMPN(59, 1, 2, 262144, ROMTYPE_ODD , "390630-02", 0xfe2f7fb9,0xc05c9c52,0xd014c66f,0x9019152b,0x3f2a2adc,0x2c678794)
{ "KS ROM v2.04 (A500+)", 2, 4, 37, 175, "A500+\0", 524288, 7, 0, 0, ROMTYPE_KICK, 0, 0, "390979-01",
0xc3bdb240, 0xC5839F5C,0xB98A7A89,0x47065C3E,0xD2F14F5F,0x42E334A1 },
0xc3bdb240, 0xC5839F5C,0xB98A7A89,0x47065C3E,0xD2F14F5F,0x42E334A1,NULL },
{ "KS ROM v2.05 (A600)", 2, 5, 37, 299, "A600\0", 524288, 8, 0, 0, ROMTYPE_KICK, 0, 0, "391388-01",
0x83028fb5, 0x87508DE8,0x34DC7EB4,0x7359CEDE,0x72D2E3C8,0xA2E5D8DB },
0x83028fb5, 0x87508DE8,0x34DC7EB4,0x7359CEDE,0x72D2E3C8,0xA2E5D8DB,NULL },
{ "KS ROM v2.05 (A600HD)", 2, 5, 37, 300, "A600HD\0A600\0", 524288, 9, 0, 0, ROMTYPE_KICK, 0, 0, "391304-01",
0x64466c2a, 0xF72D8914,0x8DAC39C6,0x96E30B10,0x859EBC85,0x9226637B },
0x64466c2a, 0xF72D8914,0x8DAC39C6,0x96E30B10,0x859EBC85,0x9226637B,NULL },
{ "KS ROM v2.05 (A600HD)", 2, 5, 37, 350, "A600HD\0A600\0", 524288, 10, 0, 0, ROMTYPE_KICK, 0, 0, "391304-02",
0x43b0df7b, 0x02843C42,0x53BBD29A,0xBA535B0A,0xA3BD9A85,0x034ECDE4 },
0x43b0df7b, 0x02843C42,0x53BBD29A,0xBA535B0A,0xA3BD9A85,0x034ECDE4,NULL },
{ "KS ROM v2.04 (A3000)", 2, 4, 37, 175, "A3000\0", 524288, 71, 3, 0, ROMTYPE_KICK, 0, 0, NULL,
0x234a7233, 0xd82ebb59,0xafc53540,0xddf2d718,0x7ecf239b,0x7ea91590 },
0x234a7233, 0xd82ebb59,0xafc53540,0xddf2d718,0x7ecf239b,0x7ea91590,NULL },
ALTROMPN(71, 1, 1, 262144, ROMTYPE_EVEN, "390629-03", 0xa245dbdf,0x83bab8e9,0x5d378b55,0xb0c6ae65,0x61385a96,0xf638598f)
ALTROMPN(71, 1, 2, 262144, ROMTYPE_ODD , "390630-03", 0x7db1332b,0x48f14b31,0x279da675,0x7848df6f,0xeb531881,0x8f8f576c)
{ "KS ROM v3.0 (A1200)", 3, 0, 39, 106, "A1200\0", 524288, 11, 0, 0, ROMTYPE_KICK, 0, 0, NULL,
0x6c9b07d2, 0x70033828,0x182FFFC7,0xED106E53,0x73A8B89D,0xDA76FAA5 },
0x6c9b07d2, 0x70033828,0x182FFFC7,0xED106E53,0x73A8B89D,0xDA76FAA5,NULL },
ALTROMPN(11, 1, 1, 262144, ROMTYPE_EVEN, "391523-01", 0xc742a412,0x999eb81c,0x65dfd07a,0x71ee1931,0x5d99c7eb,0x858ab186)
ALTROMPN(11, 1, 2, 262144, ROMTYPE_ODD , "391524-01", 0xd55c6ec6,0x3341108d,0x3a402882,0xb5ef9d3b,0x242cbf3c,0x8ab1a3e9)
{ "KS ROM v3.0 (A4000)", 3, 0, 39, 106, "A4000\0", 524288, 12, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL,
0x9e6ac152, 0xF0B4E9E2,0x9E12218C,0x2D5BD702,0x0E4E7852,0x97D91FD7 },
0x9e6ac152, 0xF0B4E9E2,0x9E12218C,0x2D5BD702,0x0E4E7852,0x97D91FD7,NULL },
ALTROMPN(12, 1, 1, 262144, ROMTYPE_EVEN, "391513-02", 0x36f64dd0,0x196e9f3f,0x9cad934e,0x181c07da,0x33083b1f,0x0a3c702f)
ALTROMPN(12, 1, 2, 262144, ROMTYPE_ODD , "391514-02", 0x17266a55,0x42fbed34,0x53d1f11c,0xcbde89a9,0x826f2d11,0x75cca5cc)
{ "KS ROM v3.1 (A4000)", 3, 1, 40, 70, "A4000\0", 524288, 13, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL,
0x2b4566f1, 0x81c631dd,0x096bbb31,0xd2af9029,0x9c76b774,0xdb74076c },
0x2b4566f1, 0x81c631dd,0x096bbb31,0xd2af9029,0x9c76b774,0xdb74076c,NULL },
ALTROM(13, 1, 1, 262144, ROMTYPE_EVEN, 0xf9cbecc9,0x138d8cb4,0x3b8312fe,0x16d69070,0xde607469,0xb3d4078e)
ALTROM(13, 1, 2, 262144, ROMTYPE_ODD , 0xf8248355,0xc2379547,0x9fae3910,0xc185512c,0xa268b82f,0x1ae4fe05)
{ "KS ROM v3.1 (A500,A600,A2000)", 3, 1, 40, 63, "A500\0A600\0A2000\0", 524288, 14, 0, 0, ROMTYPE_KICK, 0, 0, NULL,
0xfc24ae0d, 0x3B7F1493,0xB27E2128,0x30F989F2,0x6CA76C02,0x049F09CA },
0xfc24ae0d, 0x3B7F1493,0xB27E2128,0x30F989F2,0x6CA76C02,0x049F09CA,NULL },
{ "KS ROM v3.1 (A1200)", 3, 1, 40, 68, "A1200\0", 524288, 15, 1, 0, ROMTYPE_KICK, 0, 0, NULL,
0x1483a091, 0xE2154572,0x3FE8374E,0x91342617,0x604F1B3D,0x703094F1 },
0x1483a091, 0xE2154572,0x3FE8374E,0x91342617,0x604F1B3D,0x703094F1,NULL },
ALTROMPN(15, 1, 1, 262144, ROMTYPE_EVEN, "391773-01", 0x08dbf275,0xb8800f5f,0x90929810,0x9ea69690,0xb1b8523f,0xa22ddb37)
ALTROMPN(15, 1, 2, 262144, ROMTYPE_ODD , "391774-01", 0x16c07bf8,0x90e331be,0x1970b0e5,0x3f53a9b0,0x390b51b5,0x9b3869c2)
{ "KS ROM v3.1 (A3000)", 3, 1, 40, 68, "A3000\0", 524288, 61, 2, 0, ROMTYPE_KICK, 0, 0, NULL,
0xefb239cc, 0xF8E210D7,0x2B4C4853,0xE0C9B85D,0x223BA20E,0x3D1B36EE },
0xefb239cc, 0xF8E210D7,0x2B4C4853,0xE0C9B85D,0x223BA20E,0x3D1B36EE,NULL },
ALTROM(61, 1, 1, 262144, ROMTYPE_EVEN, 0x286b9a0d,0x6763a225,0x8ec493f7,0x408cf663,0x110dae9a,0x17803ad1)
ALTROM(61, 1, 2, 262144, ROMTYPE_ODD , 0x0b8cde6a,0x5f02e97b,0x48ebbba8,0x7d516a56,0xb0400c6f,0xc3434d8d)
{ "KS ROM v3.1 (A4000)(Cloanto)", 3, 1, 40, 68, "A4000\0", 524288, 31, 2 | 4, 1, ROMTYPE_KICK, 0, 0, NULL,
0x43b6dd22, 0xC3C48116,0x0866E60D,0x085E436A,0x24DB3617,0xFF60B5F9 },
0x43b6dd22, 0xC3C48116,0x0866E60D,0x085E436A,0x24DB3617,0xFF60B5F9,NULL },
{ "KS ROM v3.1 (A4000)", 3, 1, 40, 68, "A4000\0", 524288, 16, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL,
0xd6bae334, 0x5FE04842,0xD04A4897,0x20F0F4BB,0x0E469481,0x99406F49 },
0xd6bae334, 0x5FE04842,0xD04A4897,0x20F0F4BB,0x0E469481,0x99406F49,NULL },
ALTROM(16, 1, 1, 262144, ROMTYPE_EVEN, 0xb2af34f8,0x24e52b5e,0xfc020495,0x17387ab7,0xb1a1475f,0xc540350e)
ALTROM(16, 1, 2, 262144, ROMTYPE_ODD , 0xe65636a3,0x313c7cbd,0xa5779e56,0xf19a41d3,0x4e760f51,0x7626d882)
{ "KS ROM v3.1 (A4000T)", 3, 1, 40, 70, "A4000T\0", 524288, 17, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL,
0x75932c3a, 0xB0EC8B84,0xD6768321,0xE01209F1,0x1E6248F2,0xF5281A21 },
0x75932c3a, 0xB0EC8B84,0xD6768321,0xE01209F1,0x1E6248F2,0xF5281A21,NULL },
ALTROMPN(17, 1, 1, 262144, ROMTYPE_EVEN, "391657-01", 0x0ca94f70,0xb3806eda,0xcb3362fc,0x16a154ce,0x1eeec5bf,0x5bc24789)
ALTROMPN(17, 1, 2, 262144, ROMTYPE_ODD , "391658-01", 0xdfe03120,0xcd7a706c,0x431b04d8,0x7814d3a2,0xd8b39710,0x0cf44c0c)
{ "KS ROM v3.X (A4000)(Cloanto)", 3, 10, 45, 57, "A4000\0", 524288, 46, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL,
0x3ac99edc, 0x3cbfc9e1,0xfe396360,0x157bd161,0xde74fc90,0x1abee7ec },
0x3ac99edc, 0x3cbfc9e1,0xfe396360,0x157bd161,0xde74fc90,0x1abee7ec,NULL },
{ "CD32 KS ROM v3.1", 3, 1, 40, 60, "CD32\0", 524288, 18, 1, 0, ROMTYPE_KICKCD32, 0, 0, NULL,
0x1e62d4a5, 0x3525BE88,0x87F79B59,0x29E017B4,0x2380A79E,0xDFEE542D },
0x1e62d4a5, 0x3525BE88,0x87F79B59,0x29E017B4,0x2380A79E,0xDFEE542D,NULL },
{ "CD32 extended ROM", 3, 1, 40, 60, "CD32\0", 524288, 19, 1, 0, ROMTYPE_EXTCD32, 0, 0, NULL,
0x87746be2, 0x5BEF3D62,0x8CE59CC0,0x2A66E6E4,0xAE0DA48F,0x60E78F7F },
0x87746be2, 0x5BEF3D62,0x8CE59CC0,0x2A66E6E4,0xAE0DA48F,0x60E78F7F,NULL },
/* plain CD32 rom */
{ "CD32 ROM (KS + extended)", 3, 1, 40, 60, "CD32\0", 2 * 524288, 64, 1, 0, ROMTYPE_KICKCD32 | ROMTYPE_EXTCD32 | ROMTYPE_CD32, 0, 0, NULL,
0xf5d4f3c8, 0x9fa14825,0xc40a2475,0xa2eba5cf,0x325bd483,0xc447e7c1 },
0xf5d4f3c8, 0x9fa14825,0xc40a2475,0xa2eba5cf,0x325bd483,0xc447e7c1,NULL },
/* real CD32 rom dump 391640-03 */
ALTROMPN(64, 1, 1, 2 * 524288, ROMTYPE_CD32, "391640-03", 0xa4fbc94a, 0x816ce6c5,0x07787585,0x0c7d4345,0x2230a9ba,0x3a2902db )
{ "CD32 MPEG Cartridge ROM", 3, 1, 40, 30, "CD32FMV\0", 262144, 23, 1, 0, ROMTYPE_CD32CART, 0, 0, NULL,
0xc35c37bf, 0x03ca81c7,0xa7b259cf,0x64bc9582,0x863eca0f,0x6529f435 },
0xc35c37bf, 0x03ca81c7,0xa7b259cf,0x64bc9582,0x863eca0f,0x6529f435,NULL },
{ "CDTV extended ROM v1.00", 1, 0, 1, 0, "CDTV\0", 262144, 20, 0, 0, ROMTYPE_EXTCDTV, 0, 0, NULL,
0x42baa124, 0x7BA40FFA,0x17E500ED,0x9FED041F,0x3424BD81,0xD9C907BE },
0x42baa124, 0x7BA40FFA,0x17E500ED,0x9FED041F,0x3424BD81,0xD9C907BE,NULL },
ALTROMPN(20, 1, 1, 131072, ROMTYPE_EVEN | ROMTYPE_8BIT, "252606-01", 0x791cb14b,0x277a1778,0x92449635,0x3ffe56be,0x68063d2a,0x334360e4)
ALTROMPN(20, 1, 2, 131072, ROMTYPE_ODD | ROMTYPE_8BIT, "252607-01", 0xaccbbc2e,0x41b06d16,0x79c6e693,0x3c3378b7,0x626025f7,0x641ebc5c)
{ "CDTV extended ROM v2.07", 2, 7, 2, 7, "CDTV\0", 262144, 22, 0, 0, ROMTYPE_EXTCDTV, 0, 0, NULL,
0xceae68d2, 0x5BC114BB,0xA29F60A6,0x14A31174,0x5B3E2464,0xBFA06846 },
0xceae68d2, 0x5BC114BB,0xA29F60A6,0x14A31174,0x5B3E2464,0xBFA06846,NULL },
ALTROM(22, 1, 1, 131072, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x36d73cb8,0x9574e546,0x4b390697,0xf28f9a43,0x4e604e5e,0xf5e5490a)
ALTROM(22, 1, 2, 131072, ROMTYPE_ODD | ROMTYPE_8BIT, 0x6e84dce7,0x01a0679e,0x895a1a0f,0x559c7253,0xf539606b,0xd447b54f)
{ "CDTV/A570 extended ROM v2.30", 2, 30, 2, 30, "CDTV\0", 262144, 21, 0, 0, ROMTYPE_EXTCDTV, 0, 0, "391298-01",
0x30b54232, 0xED7E461D,0x1FFF3CDA,0x321631AE,0x42B80E3C,0xD4FA5EBB },
0x30b54232, 0xED7E461D,0x1FFF3CDA,0x321631AE,0x42B80E3C,0xD4FA5EBB,NULL },
ALTROM(21, 1, 1, 131072, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x48e4d74f,0x54946054,0x2269e410,0x36018402,0xe1f6b855,0xfd89092b)
ALTROM(21, 1, 2, 131072, ROMTYPE_ODD | ROMTYPE_8BIT, 0x8a54f362,0x03df800f,0x032046fd,0x892f6e7e,0xec08b76d,0x33981e8c)
{ "A1000 bootstrap ROM", 0, 0, 0, 0, "A1000\0", 65536, 24, 0, 0, ROMTYPE_KICK, 0, 0, NULL,
0x0b1ad2d0, 0xBA93B8B8,0x5CA0D83A,0x68225CC3,0x3B95050D,0x72D2FDD7 },
0x0b1ad2d0, 0xBA93B8B8,0x5CA0D83A,0x68225CC3,0x3B95050D,0x72D2FDD7,NULL },
ALTROM(24, 1, 1, 8192, 0, 0x62f11c04, 0xC87F9FAD,0xA4EE4E69,0xF3CCA0C3,0x6193BE82,0x2B9F5FE6)
ALTROMPN(24, 2, 1, 4096, ROMTYPE_EVEN | ROMTYPE_8BIT, "252179-01", 0x42553bc4,0x8855a97f,0x7a44e3f6,0x2d1c88d9,0x38fee1f4,0xc606af5b)
ALTROMPN(24, 2, 2, 4096, ROMTYPE_ODD | ROMTYPE_8BIT, "252180-01", 0x8e5b9a37,0xd10f1564,0xb99f5ffe,0x108fa042,0x362e877f,0x569de2c3)
{ "The Diagnostic 2.0 (Logica)", 2, 0, 2, 0, "LOGICA\0", 524288, 72, 0, 0, ROMTYPE_KICK | ROMTYPE_SPECIALKICK, 0, 0, NULL,
0x8484f426, 0xba10d161,0x66b2e2d6,0x177c979c,0x99edf846,0x2b21651e },
0x8484f426, 0xba10d161,0x66b2e2d6,0x177c979c,0x99edf846,0x2b21651e,NULL },
{ "Freezer: Action Replay Mk I v1.00", 1, 0, 1, 0, "AR\0", 65536, 52, 0, 0, ROMTYPE_AR, 0, 1, NULL,
0x2d921771, 0x1EAD9DDA,0x2DAD2914,0x6441F5EF,0x72183750,0x22E01248 },
0x2d921771, 0x1EAD9DDA,0x2DAD2914,0x6441F5EF,0x72183750,0x22E01248,NULL },
ALTROM(52, 1, 1, 32768, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x82d6eb87, 0x7c9bac11,0x28666017,0xeee6f019,0x63fb3890,0x7fbea355)
ALTROM(52, 1, 2, 32768, ROMTYPE_ODD | ROMTYPE_8BIT, 0x40ae490c, 0x81d8e432,0x01b73fd9,0x2e204ebd,0x68af8602,0xb62ce397)
{ "Freezer: Action Replay Mk I v1.50", 1, 50, 1, 50, "AR\0", 65536, 25, 0, 0, ROMTYPE_AR, 0, 1, NULL,
0xd4ce0675, 0x843B433B,0x2C56640E,0x045D5FDC,0x854DC6B1,0xA4964E7C },
0xd4ce0675, 0x843B433B,0x2C56640E,0x045D5FDC,0x854DC6B1,0xA4964E7C,NULL },
ALTROM(25, 1, 1, 32768, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x7fbd6de2, 0xb5f71a5c,0x09d65ecc,0xa8a3bc93,0x93558461,0xca190228)
ALTROM(25, 1, 2, 32768, ROMTYPE_ODD | ROMTYPE_8BIT, 0x43018069, 0xad8ff242,0xb2cbf125,0x1fc53a73,0x581cf57a,0xb69cee00)
{ "Freezer: Action Replay Mk II v2.05", 2, 5, 2, 5, "AR\0", 131072, 26, 0, 0, ROMTYPE_AR, 0, 1, NULL,
0x1287301f, 0xF6601DE8,0x888F0050,0x72BF562B,0x9F533BBC,0xAF1B0074 },
0x1287301f, 0xF6601DE8,0x888F0050,0x72BF562B,0x9F533BBC,0xAF1B0074,NULL },
{ "Freezer: Action Replay Mk II v2.12", 2, 12, 2, 12, "AR\0", 131072, 27, 0, 0, ROMTYPE_AR, 0, 1, NULL,
0x804d0361, 0x3194A07A,0x0A82D8B5,0xF2B6AEFA,0x3CA581D6,0x8BA8762B },
0x804d0361, 0x3194A07A,0x0A82D8B5,0xF2B6AEFA,0x3CA581D6,0x8BA8762B,NULL },
{ "Freezer: Action Replay Mk II v2.14", 2, 14, 2, 14, "AR\0", 131072, 28, 0, 0, ROMTYPE_AR, 0, 1, NULL,
0x49650e4f, 0x255D6DF6,0x3A4EAB0A,0x838EB1A1,0x6A267B09,0x59DFF634 },
0x49650e4f, 0x255D6DF6,0x3A4EAB0A,0x838EB1A1,0x6A267B09,0x59DFF634,NULL },
{ "Freezer: Action Replay Mk III v3.09", 3, 9, 3, 9, "AR\0", 262144, 29, 0, 0, ROMTYPE_AR, 0, 1, NULL,
0x0ed9b5aa, 0x0FF3170A,0xBBF0CA64,0xC9DD93D6,0xEC0C7A01,0xB5436824 },
0x0ed9b5aa, 0x0FF3170A,0xBBF0CA64,0xC9DD93D6,0xEC0C7A01,0xB5436824,NULL },
ALTROM(29, 1, 1, 131072, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x2b84519f, 0x7841873b,0xf009d834,0x1dfa2794,0xb3751bac,0xf86adcc8)
ALTROM(29, 1, 2, 131072, ROMTYPE_ODD | ROMTYPE_8BIT, 0x1d35bd56, 0x6464be16,0x26b51949,0x9e76e4e3,0x409e8016,0x515d48b6)
{ "Freezer: Action Replay Mk III v3.17", 3, 17, 3, 17, "AR\0", 262144, 30, 0, 0, ROMTYPE_AR, 0, 1, NULL,
0xc8a16406, 0x5D4987C2,0xE3FFEA8B,0x1B02E314,0x30EF190F,0x2DB76542 },
0xc8a16406, 0x5D4987C2,0xE3FFEA8B,0x1B02E314,0x30EF190F,0x2DB76542,NULL },
{ "Freezer: Action Replay 1200", 0, 0, 0, 0, "AR\0", 262144, 47, 0, 0, ROMTYPE_AR, 0, 1, NULL,
0x8d760101, 0x0F6AB834,0x2810094A,0xC0642F62,0xBA42F78B,0xC0B07E6A },
0x8d760101, 0x0F6AB834,0x2810094A,0xC0642F62,0xBA42F78B,0xC0B07E6A,NULL },
{ "Freezer: Action Cartridge Super IV Professional", 0, 0, 0, 0, "SUPERIV\0", 0, 62, 0, 0, ROMTYPE_SUPERIV, 0, 1, NULL,
0xffffffff, 0, 0, 0, 0, 0, "SuperIV" },
{ "Freezer: Action Cart. Super IV Pro (+ROM v4.3)", 4, 3, 4, 3, "SUPERIV\0", 170368, 60, 0, 0, ROMTYPE_SUPERIV, 0, 1, NULL,
0xe668a0be, 0x633A6E65,0xA93580B8,0xDDB0BE9C,0x9A64D4A1,0x7D4B4801 },
0xe668a0be, 0x633A6E65,0xA93580B8,0xDDB0BE9C,0x9A64D4A1,0x7D4B4801,NULL },
{ "Freezer: X-Power Professional 500 v1.2", 1, 2, 1, 2, "XPOWER\0", 131072, 65, 0, 0, ROMTYPE_XPOWER, 0, 1, NULL,
0x9e70c231, 0xa2977a1c,0x41a8ca7d,0x4af4a168,0x726da542,0x179d5963 },
0x9e70c231, 0xa2977a1c,0x41a8ca7d,0x4af4a168,0x726da542,0x179d5963,NULL },
ALTROM(65, 1, 1, 65536, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xf98742e4,0xe8e683ba,0xd8b38d1f,0x79f3ad83,0xa9e67c6f,0xa91dc96c)
ALTROM(65, 1, 2, 65536, ROMTYPE_ODD |ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xdfb9984b,0x8d6bdd49,0x469ec8e2,0x0143fbb3,0x72e92500,0x99f07910)
{ "Freezer: X-Power Professional 500 v1.3", 1, 2, 1, 2, "XPOWER\0", 131072, 68, 0, 0, ROMTYPE_XPOWER, 0, 1, NULL,
0x31e057f0, 0x84650266,0x465d1859,0x7fd71dee,0x00775930,0xb7e450ee },
0x31e057f0, 0x84650266,0x465d1859,0x7fd71dee,0x00775930,0xb7e450ee,NULL },
ALTROM(68, 1, 1, 65536, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0x0b2ce0c7,0x45ad5456,0x89192404,0x956f47ce,0xf66a5274,0x57ace33b)
ALTROM(68, 1, 2, 65536, ROMTYPE_ODD |ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0x34580c35,0x8ad42566,0x7364f238,0x978f4381,0x08f8d5ec,0x470e72ea)
{ "Freezer: Nordic Power v1.5", 1, 5, 1, 5, "NPOWER\0", 65536, 69, 0, 0, ROMTYPE_NORDIC, 0, 1, NULL,
0x83b4b21c, 0xc56ced25,0x506a5aab,0x3fa13813,0x4fc9e5ae,0x0f9d3709 },
0x83b4b21c, 0xc56ced25,0x506a5aab,0x3fa13813,0x4fc9e5ae,0x0f9d3709,NULL },
ALTROM(69, 1, 1, 32768, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xdd207174,0xae67652d,0x64f5db20,0x0f4b2110,0xee59567f,0xfbd90a1b)
ALTROM(69, 1, 2, 32768, ROMTYPE_ODD |ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0x8f93d85d,0x73c62d21,0x40c0c092,0x6315b702,0xdd5d0f05,0x3dad7fab)
{ "Freezer: Nordic Power v2.0", 2, 0, 2, 0, "NPOWER\0", 65536, 67, 0, 0, ROMTYPE_NORDIC, 0, 1, NULL,
0xa4db2906, 0x0aec68f7,0x25470c89,0x6b699ff4,0x6623dec5,0xc777466e },
0xa4db2906, 0x0aec68f7,0x25470c89,0x6b699ff4,0x6623dec5,0xc777466e,NULL },
ALTROM(67, 1, 1, 32768, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xb21be46c,0x50dc607c,0xce976bbd,0x3841eaf0,0x591ddc7e,0xa1939ad2)
ALTROM(67, 1, 2, 32768, ROMTYPE_ODD |ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0x96057aed,0xdd9209e2,0x1d5edfc1,0xcdb52abe,0x93de0f35,0xc43da696)
{ "Freezer: Nordic Power v3.0", 3, 0, 3, 0, "NPOWER\0", 65536, 70, 0, 0, ROMTYPE_NORDIC, 0, 1, NULL,
0x72850aef, 0x59c91d1f,0xa8f118f9,0x0bdba05a,0x9ae788d7,0x7a6cc7c9 },
0x72850aef, 0x59c91d1f,0xa8f118f9,0x0bdba05a,0x9ae788d7,0x7a6cc7c9,NULL },
ALTROM(70, 1, 1, 32768, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xf3330e1f,0x3a597db2,0xb7d11b6c,0xb8e13496,0xc215f223,0x88c4ca3c)
ALTROM(70, 1, 2, 32768, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xee58e0f9,0x4148f4cb,0xb42cec33,0x8ca144de,0xd4f54118,0xe0f185dd)
{ "Freezer: HRTMon v2.32 (built-in)", 0, 0, 0, 0, "HRTMON\0", 0, 63, 0, 0, ROMTYPE_HRTMON, 0, 1, NULL,
0xffffffff, 0, 0, 0, 0, 0, "HRTMon" },
{ "A590/A2091 SCSI boot ROM", 6, 0, 6, 0, "A590\0A2091\0", 16384, 53, 0, 0, ROMTYPE_A2091BOOT, 0, 0, NULL,
0x8396cf4e, 0x5E03BC61,0x8C862ABE,0x7BF79723,0xB4EEF4D2,0x1859A0F2 },
0x8396cf4e, 0x5E03BC61,0x8C862ABE,0x7BF79723,0xB4EEF4D2,0x1859A0F2,NULL },
ALTROM(53, 1, 1, 8192, ROMTYPE_ODD | ROMTYPE_8BIT, 0xb0b8cf24,0xfcf40175,0x05f4d441,0x814b45d5,0x59c19eab,0x43816b30)
ALTROM(53, 1, 2, 8192, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x2e77bbff,0x8a098845,0x068f32cf,0xa4d34a27,0x8cd290f6,0x1d35a52c)
{ "A590/A2091 SCSI boot ROM", 6, 6, 6, 6, "A590\0A2091\0", 16384, 54, 0, 0, ROMTYPE_A2091BOOT, 0, 0, NULL,
0x33e00a7a, 0x739BB828,0xE874F064,0x9360F59D,0x26B5ED3F,0xBC99BB66 },
0x33e00a7a, 0x739BB828,0xE874F064,0x9360F59D,0x26B5ED3F,0xBC99BB66,NULL },
ALTROM(54, 1, 1, 8192, ROMTYPE_ODD | ROMTYPE_8BIT, 0xe536bbb2,0xfd7f8a6d,0xa18c1b02,0xd07eb990,0xc2467a24,0x183ede12)
ALTROM(54, 1, 2, 8192, ROMTYPE_EVEN | ROMTYPE_8BIT, 0xc0871d25,0xe155f18a,0xbb90cf82,0x0589c15e,0x70559d3b,0x6b391af8)
{ "A590/A2091 SCSI boot ROM", 7, 0, 7, 0, "A590\0A2091\0", 16384, 55, 0, 0, ROMTYPE_A2091BOOT, 0, 0, NULL,
0x714a97a2, 0xE50F01BA,0xF2899892,0x85547863,0x72A82C33,0x3C91276E },
0x714a97a2, 0xE50F01BA,0xF2899892,0x85547863,0x72A82C33,0x3C91276E,NULL },
ALTROM(55, 1, 1, 8192, ROMTYPE_ODD | ROMTYPE_8BIT, 0xa9ccffed,0x149f5bd5,0x2e2d2990,0x4e3de483,0xb9ad7724,0x48e9278e)
ALTROM(55, 1, 2, 8192, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x2942747a,0xdbd7648e,0x79c75333,0x7ff3e4f4,0x91de224b,0xf05e6bb6)
{ "A590/A2091 SCSI Guru boot ROM", 6, 14, 6, 14, "A590\0A2091\0", 32768, 56, 0, 0, ROMTYPE_A2091BOOT, 0, 0, NULL,
0x04e52f93, 0x6DA21B6F,0x5E8F8837,0xD64507CD,0x8A4D5CDC,0xAC4F426B },
0x04e52f93, 0x6DA21B6F,0x5E8F8837,0xD64507CD,0x8A4D5CDC,0xAC4F426B,NULL },
{ "A4091 SCSI boot ROM", 40, 9, 40, 9, "A4091\0", 32768, 57, 0, 0, ROMTYPE_A4091BOOT, 0, 0, NULL,
0x00000000, 0, 0, 0, 0, 0 },
0x00000000, 0, 0, 0, 0, 0,NULL },
{ "A4091 SCSI boot ROM", 40, 13, 40, 13, "A4091\0", 32768, 58, 0, 0, ROMTYPE_A4091BOOT, 0, 0, NULL,
0x54cb9e85, 0x3CE66919,0xF6FD6797,0x4923A12D,0x91B730F1,0xFFB4A7BA },
0x54cb9e85, 0x3CE66919,0xF6FD6797,0x4923A12D,0x91B730F1,0xFFB4A7BA,NULL },
{ "Arcadia OnePlay 2.11", 0, 0, 0, 0, "ARCADIA\0", 0, 49, 0, 0, ROMTYPE_ARCADIABIOS, 0, 0 },
{ "Arcadia TenPlay 2.11", 0, 0, 0, 0, "ARCADIA\0", 0, 50, 0, 0, ROMTYPE_ARCADIABIOS, 0, 0 },

View File

@ -2596,8 +2596,11 @@ static struct zvolume *prepare_recursive_volume (struct zvolume *zv, const TCHAR
if (!zvnew && !(flags & ZFD_NORECURSE)) {
#if 1
/* zvnew = archive_directory_plain (zf);
zfile_fopen_archive_recurse (zvnew);
done = 1;*/
if (zvnew) {
zfile_fopen_archive_recurse (zvnew);
done = 1;
}
*/
#else
int rc;
int index;
@ -2626,7 +2629,7 @@ static struct zvolume *prepare_recursive_volume (struct zvolume *zv, const TCHAR
break; // TODO
}
#endif
} else {
} else if (zvnew) {
zvnew->parent = zv->parent;
zfile_fopen_archive_recurse (zvnew);
done = 1;