mirror of
https://github.com/LIV2/WinUAE.git
synced 2025-12-06 00:12:52 +00:00
3410b8
This commit is contained in:
parent
7b92d17300
commit
fd3579099a
55
custom.cpp
55
custom.cpp
@ -59,7 +59,7 @@
|
||||
|
||||
#define SPRBORDER 0
|
||||
|
||||
static int denise_resolution_min = 0;
|
||||
static int high_res_mode = 0;
|
||||
|
||||
extern uae_u16 serper;
|
||||
|
||||
@ -1470,7 +1470,7 @@ static void toscr_2_2 (int nbits) { toscr_3_aga (0, 1, nbits, 2); }
|
||||
static void toscr_2_2_oe (int oddeven, int step, int nbits) { toscr_3_aga (oddeven, step, nbits, 2); }
|
||||
#endif
|
||||
|
||||
STATIC_INLINE void do_tosrc (int oddeven, int step, int nbits, int fm)
|
||||
static void do_tosrc (int oddeven, int step, int nbits, int fm)
|
||||
{
|
||||
switch (fm) {
|
||||
case 0:
|
||||
@ -1618,7 +1618,7 @@ static void do_delays_fast_2_2 (int nbits) { do_delays_fast_3_aga (nbits, 2); }
|
||||
|
||||
|
||||
// slower version, odd and even delays are different or crosses maxhpos
|
||||
STATIC_INLINE void do_delays (int nbits, int fm)
|
||||
static void do_delays (int nbits, int fm)
|
||||
{
|
||||
switch (fm) {
|
||||
case 0:
|
||||
@ -1636,7 +1636,7 @@ STATIC_INLINE void do_delays (int nbits, int fm)
|
||||
}
|
||||
|
||||
// common optimized case: odd delay == even delay
|
||||
STATIC_INLINE void do_delays_fast (int nbits, int fm)
|
||||
static void do_delays_fast (int nbits, int fm)
|
||||
{
|
||||
switch (fm) {
|
||||
case 0:
|
||||
@ -1678,7 +1678,7 @@ static void toscr_right_edge (int nbits, int fm)
|
||||
}
|
||||
}
|
||||
|
||||
STATIC_INLINE void toscr_1 (int nbits, int fm)
|
||||
static void toscr_1 (int nbits, int fm)
|
||||
{
|
||||
if (delay_cycles + nbits >= delay_lastcycle[lol]) {
|
||||
toscr_right_edge (nbits, fm);
|
||||
@ -1709,6 +1709,38 @@ STATIC_INLINE void toscr_1 (int nbits, int fm)
|
||||
}
|
||||
}
|
||||
|
||||
static void toscr_1_hires (int nbits_nres, int fm)
|
||||
{
|
||||
int maxnbits = 16 >> toscr_res_mult;
|
||||
while (nbits_nres >= 0) {
|
||||
int nbits = nbits_nres >= maxnbits ? maxnbits : nbits_nres;
|
||||
if (delay_cycles + nbits >= delay_lastcycle[lol]) {
|
||||
toscr_right_edge(nbits, fm);
|
||||
} else {
|
||||
do_delays(nbits, fm);
|
||||
delay_cycles += nbits;
|
||||
}
|
||||
|
||||
out_nbits += nbits;
|
||||
if (out_nbits == 32) {
|
||||
int i;
|
||||
uae_u8 *dataptr = line_data[next_lineno] + out_offs * 4;
|
||||
for (i = 0; i < thisline_decision.nr_planes; i++) {
|
||||
uae_u32 *dataptr32 = (uae_u32 *)dataptr;
|
||||
if (*dataptr32 != outword[i]) {
|
||||
thisline_changed = 1;
|
||||
*dataptr32 = outword[i];
|
||||
}
|
||||
outword[i] = 0;
|
||||
dataptr += MAX_WORDS_PER_LINE * 2;
|
||||
}
|
||||
out_offs++;
|
||||
out_nbits = 0;
|
||||
}
|
||||
nbits_nres -= nbits;
|
||||
}
|
||||
}
|
||||
|
||||
static void toscr_fm0 (int);
|
||||
static void toscr_fm1 (int);
|
||||
static void toscr_fm2 (int);
|
||||
@ -1844,8 +1876,8 @@ static void update_denise (int hpos)
|
||||
flush_display (fetchmode);
|
||||
toscr_res = GET_RES_DENISE (bplcon0d);
|
||||
toscr_res2p = 2 << toscr_res;
|
||||
if (toscr_res < denise_resolution_min) {
|
||||
toscr_res_mult = denise_resolution_min - toscr_res;
|
||||
if (high_res_mode && toscr_res < currprefs.gfx_resolution) {
|
||||
toscr_res_mult = currprefs.gfx_resolution - toscr_res;
|
||||
} else {
|
||||
toscr_res_mult = 0;
|
||||
}
|
||||
@ -2580,6 +2612,7 @@ STATIC_INLINE int one_fetch_cycle_0 (int pos, int dma, int fm)
|
||||
uae_abort (_T("toscr_nbits > 16 (%d)"), toscr_nbits);
|
||||
toscr_nbits = 0;
|
||||
}
|
||||
|
||||
if (toscr_nbits == 16)
|
||||
flush_display (fm);
|
||||
|
||||
@ -5782,11 +5815,15 @@ static void BLTBDAT (int hpos, uae_u16 v)
|
||||
{
|
||||
maybe_blit (hpos, 0);
|
||||
|
||||
int shift = bltcon1 >> 12;
|
||||
|
||||
if (bltcon1 & 2)
|
||||
blt_info.bltbhold = v << (bltcon1 >> 12);
|
||||
blt_info.bltbhold = (((uae_u32)v << 16) | blt_info.bltbold) >> (16 - shift);
|
||||
else
|
||||
blt_info.bltbhold = v >> (bltcon1 >> 12);
|
||||
blt_info.bltbhold = (((uae_u32)blt_info.bltbold << 16) | v) >> shift;
|
||||
|
||||
blt_info.bltbdat = v;
|
||||
blt_info.bltbold = v;
|
||||
}
|
||||
static void BLTCDAT (int hpos, uae_u16 v) { maybe_blit (hpos, 0); blt_info.bltcdat = v; reset_blit (0); }
|
||||
|
||||
|
||||
@ -1462,7 +1462,7 @@ void debug_draw(uae_u8 *buf, int bpp, int line, int width, int height, uae_u32 *
|
||||
|
||||
if (heatmap) {
|
||||
debug_draw_heatmap(buf, bpp, line, width, height, xredcolors, xgreencolors, xbluecolors);
|
||||
} else {
|
||||
} else if (dma_record[0]) {
|
||||
debug_draw_cycles(buf, bpp, line, width, height, xredcolors, xgreencolors, xbluecolors);
|
||||
}
|
||||
}
|
||||
|
||||
13
disk.cpp
13
disk.cpp
@ -3338,7 +3338,7 @@ static void disk_doupdate_write (drive * drv, int floppybits)
|
||||
|
||||
static void update_jitter (void)
|
||||
{
|
||||
if (currprefs.floppy_random_bits_max > 0)
|
||||
if (currprefs.floppy_random_bits_max > 0 && currprefs.floppy_random_bits_max >= currprefs.floppy_random_bits_min)
|
||||
disk_jitter = ((uaerand () >> 4) % (currprefs.floppy_random_bits_max - currprefs.floppy_random_bits_min + 1)) + currprefs.floppy_random_bits_min;
|
||||
else
|
||||
disk_jitter = 0;
|
||||
@ -3406,7 +3406,6 @@ static void disk_doupdate_predict (int startcycle)
|
||||
diskevent_flag |= DISK_INDEXSYNC;
|
||||
}
|
||||
if (dskdmaen != DSKDMA_WRITE && mfmpos == drv->skipoffset) {
|
||||
update_jitter ();
|
||||
int skipcnt = disk_jitter;
|
||||
while (skipcnt-- > 0) {
|
||||
mfmpos++;
|
||||
@ -3564,7 +3563,6 @@ static void disk_doupdate_read (drive * drv, int floppybits)
|
||||
updatetrackspeed (drv, drv->mfmpos);
|
||||
}
|
||||
if (drv->mfmpos == drv->skipoffset) {
|
||||
update_jitter ();
|
||||
int skipcnt = disk_jitter;
|
||||
while (skipcnt-- > 0) {
|
||||
drv->mfmpos++;
|
||||
@ -3794,12 +3792,17 @@ void DISK_update (int tohpos)
|
||||
drv->mfmpos %= drv->tracklen;
|
||||
}
|
||||
int didaccess = 0;
|
||||
bool done_jitter = false;
|
||||
for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++) {
|
||||
drive *drv = &floppy[dr];
|
||||
if (drv->motoroff || !drv->trackspeed)
|
||||
continue;
|
||||
if ((selected | disabled) & (1 << dr))
|
||||
continue;
|
||||
if (!done_jitter) {
|
||||
update_jitter();
|
||||
done_jitter = true;
|
||||
}
|
||||
/* write dma and wordsync enabled: read until wordsync match found */
|
||||
if (dskdmaen == DSKDMA_WRITE && dma_enable)
|
||||
disk_doupdate_write (drv, drv->floppybitcounter);
|
||||
@ -3818,6 +3821,10 @@ void DISK_update (int tohpos)
|
||||
if (dskdmaen != DSKDMA_OFF && dma_enable && dsklength2 == 0 && dsklength == 0)
|
||||
disk_dmafinished ();
|
||||
|
||||
if (!done_jitter) {
|
||||
update_jitter();
|
||||
done_jitter = true;
|
||||
}
|
||||
disk_doupdate_predict (disk_hpos);
|
||||
}
|
||||
|
||||
|
||||
@ -4331,6 +4331,15 @@ static const struct expansionboardsettings warpengine_settings[] = {
|
||||
NULL
|
||||
}
|
||||
};
|
||||
static const struct expansionboardsettings comspec_settings[] = {
|
||||
{
|
||||
_T("RTC"),
|
||||
_T("rtc"),
|
||||
},
|
||||
{
|
||||
NULL
|
||||
}
|
||||
};
|
||||
static const struct expansionboardsettings a4091_settings[] = {
|
||||
{
|
||||
_T("Fast Bus"),
|
||||
@ -4491,7 +4500,9 @@ const struct expansionromtype expansionroms[] = {
|
||||
_T("comspec1000"), _T("SA-1000"), _T("Comspec"),
|
||||
comspec_init, NULL, comspec_add_scsi_unit, ROMTYPE_COMSPEC, 0, 0, BOARD_AUTOCONFIG_Z2, true,
|
||||
NULL, 0,
|
||||
true, EXPANSIONTYPE_SCSI
|
||||
true, EXPANSIONTYPE_SCSI,
|
||||
0, 0, 0, false, NULL,
|
||||
false, 0, comspec_settings
|
||||
},
|
||||
{
|
||||
_T("dataflyerscsiplus"), _T("DataFlyer SCSI+"), _T("Expansion Systems"),
|
||||
|
||||
5239
hrtmon.rom.cpp
5239
hrtmon.rom.cpp
File diff suppressed because it is too large
Load Diff
@ -77,6 +77,7 @@ struct MultiDisplay {
|
||||
TCHAR *fullname;
|
||||
struct PicassoResolution *DisplayModes;
|
||||
RECT rect;
|
||||
RECT workrect;
|
||||
};
|
||||
extern struct MultiDisplay Displays[MAX_DISPLAYS + 1];
|
||||
|
||||
|
||||
@ -590,15 +590,76 @@ static void releasecapture (void)
|
||||
void updatemouseclip (void)
|
||||
{
|
||||
if (showcursor) {
|
||||
ClipCursor(NULL);
|
||||
amigawinclip_rect = amigawin_rect;
|
||||
if (0 && !isfullscreen()) {
|
||||
RECT cliprect;
|
||||
GetClipCursor(&cliprect);
|
||||
IntersectRect(&amigawinclip_rect, &cliprect, &amigawin_rect);
|
||||
#if MOUSECLIP_LOG
|
||||
write_log (_T("CLIPW %dx%d %dx%d %d\n"), amigawinclip_rect.left, amigawinclip_rect.top, amigawinclip_rect.right, amigawinclip_rect.bottom, isfullscreen ());
|
||||
#endif
|
||||
if (!isfullscreen()) {
|
||||
int idx = 0;
|
||||
reenumeratemonitors();
|
||||
while (Displays[idx].monitorname) {
|
||||
RECT out;
|
||||
struct MultiDisplay *md = &Displays[idx];
|
||||
idx++;
|
||||
if (md->rect.left == md->workrect.left && md->rect.right == md->workrect.right
|
||||
&& md->rect.top == md->workrect.top && md->rect.bottom == md->workrect.bottom)
|
||||
continue;
|
||||
// not in this monitor?
|
||||
if (!IntersectRect(&out, &md->rect, &amigawin_rect))
|
||||
continue;
|
||||
for (int e = 0; e < 4; e++) {
|
||||
int v1, v2, x, y;
|
||||
LONG *lp;
|
||||
switch (e)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
v1 = md->rect.left;
|
||||
v2 = md->workrect.left;
|
||||
lp = &amigawinclip_rect.left;
|
||||
x = v1 - 1;
|
||||
y = (md->rect.bottom - md->rect.top) / 2;
|
||||
break;
|
||||
case 1:
|
||||
v1 = md->rect.top;
|
||||
v2 = md->workrect.top;
|
||||
lp = &amigawinclip_rect.top;
|
||||
x = (md->rect.right - md->rect.left) / 2;
|
||||
y = v1 - 1;
|
||||
break;
|
||||
case 2:
|
||||
v1 = md->rect.right;
|
||||
v2 = md->workrect.right;
|
||||
lp = &amigawinclip_rect.right;
|
||||
x = v1 + 1;
|
||||
y = (md->rect.bottom - md->rect.top) / 2;
|
||||
break;
|
||||
case 3:
|
||||
v1 = md->rect.bottom;
|
||||
v2 = md->workrect.bottom;
|
||||
lp = &amigawinclip_rect.bottom;
|
||||
x = (md->rect.right - md->rect.left) / 2;
|
||||
y = v1 + 1;
|
||||
break;
|
||||
}
|
||||
// is there another monitor sharing this edge?
|
||||
POINT pt;
|
||||
pt.x = x;
|
||||
pt.y = y;
|
||||
if (MonitorFromPoint(pt, MONITOR_DEFAULTTONULL))
|
||||
continue;
|
||||
// restrict mouse clip bounding box to this edge
|
||||
if (e >= 2) {
|
||||
if (*lp > v2) {
|
||||
*lp = v2;
|
||||
}
|
||||
} else {
|
||||
if (*lp < v2) {
|
||||
*lp = v2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Too small or invalid?
|
||||
if (amigawinclip_rect.right <= amigawinclip_rect.left + 7 || amigawinclip_rect.bottom <= amigawinclip_rect.top + 7)
|
||||
amigawinclip_rect = amigawin_rect;
|
||||
}
|
||||
#if MOUSECLIP_LOG
|
||||
write_log (_T("CLIP %dx%d %dx%d %d\n"), amigawin_rect.left, amigawin_rect.top, amigawin_rect.right, amigawin_rect.bottom, isfullscreen ());
|
||||
@ -5793,6 +5854,12 @@ static int parseargs (const TCHAR *argx, const TCHAR *np, const TCHAR *np2)
|
||||
log_cd32 = 2;
|
||||
return 1;
|
||||
}
|
||||
if (!_tcscmp(arg, _T("romlist"))) {
|
||||
void dumpromlist(void);
|
||||
dumpromlist();
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
if (!np)
|
||||
return 0;
|
||||
|
||||
@ -20,12 +20,12 @@
|
||||
#define LANG_DLL_FULL_VERSION_MATCH 1
|
||||
|
||||
#if WINUAEPUBLICBETA
|
||||
#define WINUAEBETA _T("7")
|
||||
#define WINUAEBETA _T("8")
|
||||
#else
|
||||
#define WINUAEBETA _T("")
|
||||
#endif
|
||||
|
||||
#define WINUAEDATE MAKEBD(2017, 4, 22)
|
||||
#define WINUAEDATE MAKEBD(2017, 5, 7)
|
||||
|
||||
//#define WINUAEEXTRA _T("AmiKit Preview")
|
||||
//#define WINUAEEXTRA _T("Amiga Forever Edition")
|
||||
|
||||
@ -765,6 +765,54 @@ static void modesList (struct MultiDisplay *md)
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef ABM_GETAUTOHIDEBAREX
|
||||
#define ABM_GETAUTOHIDEBAREX 0x0000000b
|
||||
#endif
|
||||
|
||||
static void adjustappbar(RECT *monitor, RECT *workrect)
|
||||
{
|
||||
if (!os_vista)
|
||||
return;
|
||||
APPBARDATA abd;
|
||||
// Isn't this ugly API?
|
||||
for (int i = 0; i < 4; i++) {
|
||||
abd.cbSize = sizeof abd;
|
||||
abd.rc = *monitor;
|
||||
abd.uEdge = i; // ABE_LEFT, TOP, RIGHT, BOTTOM
|
||||
HWND hwndAutoHide = (HWND) SHAppBarMessage(ABM_GETAUTOHIDEBAREX, &abd);
|
||||
if (hwndAutoHide == NULL)
|
||||
continue;
|
||||
WINDOWINFO wi;
|
||||
wi.cbSize = sizeof wi;
|
||||
if (!GetWindowInfo(hwndAutoHide, &wi))
|
||||
continue;
|
||||
int edge;
|
||||
switch (i)
|
||||
{
|
||||
case ABE_LEFT:
|
||||
edge = monitor->left + (wi.rcWindow.right - wi.rcWindow.left);
|
||||
if (edge > workrect->left && edge < workrect->right)
|
||||
workrect->left = edge;
|
||||
break;
|
||||
case ABE_RIGHT:
|
||||
edge = monitor->right - (wi.rcWindow.right - wi.rcWindow.left);
|
||||
if (edge < workrect->right && edge > workrect->left)
|
||||
workrect->right = edge;
|
||||
break;
|
||||
case ABE_TOP:
|
||||
edge = monitor->top + (wi.rcWindow.bottom - wi.rcWindow.top);
|
||||
if (edge > workrect->top && edge < workrect->bottom)
|
||||
workrect->top = edge;
|
||||
break;
|
||||
case ABE_BOTTOM:
|
||||
edge = monitor->bottom - (wi.rcWindow.bottom - wi.rcWindow.top);
|
||||
if (edge < workrect->bottom && edge > workrect->top)
|
||||
workrect->bottom = edge;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static BOOL CALLBACK monitorEnumProc (HMONITOR h, HDC hdc, LPRECT rect, LPARAM data)
|
||||
{
|
||||
struct MultiDisplay *md = Displays;
|
||||
@ -775,6 +823,8 @@ static BOOL CALLBACK monitorEnumProc (HMONITOR h, HDC hdc, LPRECT rect, LPARAM d
|
||||
if (!_tcscmp (md->adapterid, lpmi.szDevice)) {
|
||||
TCHAR tmp[1000];
|
||||
md->rect = lpmi.rcMonitor;
|
||||
md->workrect = lpmi.rcWork;
|
||||
adjustappbar(&md->rect, &md->workrect);
|
||||
if (md->rect.left == 0 && md->rect.top == 0)
|
||||
_stprintf (tmp, _T("%s (%d*%d)"), md->monitorname, md->rect.right - md->rect.left, md->rect.bottom - md->rect.top);
|
||||
else
|
||||
@ -790,6 +840,30 @@ static BOOL CALLBACK monitorEnumProc (HMONITOR h, HDC hdc, LPRECT rect, LPARAM d
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL CALLBACK monitorEnumProc2(HMONITOR h, HDC hdc, LPRECT rect, LPARAM data)
|
||||
{
|
||||
MONITORINFOEX lpmi;
|
||||
lpmi.cbSize = sizeof lpmi;
|
||||
GetMonitorInfo(h, (LPMONITORINFO)&lpmi);
|
||||
for (int i = 0; i < MAX_DISPLAYS && Displays[i].monitorid; i++) {
|
||||
struct MultiDisplay *md = &Displays[i];
|
||||
if (!_tcscmp (md->adapterid, lpmi.szDevice) && !memcmp(&md->rect, &lpmi.rcMonitor, sizeof RECT)) {
|
||||
md->workrect = lpmi.rcWork;
|
||||
adjustappbar(&md->rect, &md->workrect);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
void reenumeratemonitors(void)
|
||||
{
|
||||
for (int i = 0; i < MAX_DISPLAYS; i++) {
|
||||
struct MultiDisplay *md = &Displays[i];
|
||||
memcpy(&md->workrect, &md->rect, sizeof RECT);
|
||||
}
|
||||
EnumDisplayMonitors (NULL, NULL, monitorEnumProc2, NULL);
|
||||
}
|
||||
|
||||
static void getd3dmonitornames (void)
|
||||
{
|
||||
struct MultiDisplay *md = Displays;
|
||||
@ -3371,7 +3445,8 @@ static bool vblanklaceskip_check (void)
|
||||
return false;
|
||||
}
|
||||
getvblankpos (&vp, false);
|
||||
write_log (_T("Interlaced frame type mismatch %d<>%d (%d,%d)\n"), vblankbaselace_chipset, vblankthread_oddeven, vp, prevvblankpos);
|
||||
if (vp >= maxscanline / 20 && vp <= maxscanline - maxscanline / 20)
|
||||
write_log (_T("Interlaced frame type mismatch %d<>%d (%d,%d)\n"), vblankbaselace_chipset, vblankthread_oddeven, vp, prevvblankpos);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
|
||||
extern void sortdisplays (void);
|
||||
extern void enumeratedisplays (void);
|
||||
extern void reenumeratemonitors(void);
|
||||
|
||||
int WIN32GFX_IsPicassoScreen (void);
|
||||
int WIN32GFX_GetWidth (void);
|
||||
|
||||
@ -872,6 +872,7 @@
|
||||
<ClCompile Include="..\..\qemuvga\qemu.cpp" />
|
||||
<ClCompile Include="..\..\qemuvga\qemuuaeglue.cpp" />
|
||||
<ClCompile Include="..\..\qemuvga\vga.cpp" />
|
||||
<ClCompile Include="..\..\rtc.cpp" />
|
||||
<ClCompile Include="..\..\scp.cpp" />
|
||||
<ClCompile Include="..\..\scsitape.cpp" />
|
||||
<ClCompile Include="..\..\slirp\bootp.cpp" />
|
||||
|
||||
@ -844,6 +844,9 @@
|
||||
<ClCompile Include="..\..\softfloat\softfloat_fpsp.cpp">
|
||||
<Filter>softfloat</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\rtc.cpp">
|
||||
<Filter>common</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\resources\35floppy.ico">
|
||||
|
||||
@ -4,6 +4,22 @@ JIT Direct current rules are less complex now. It automatically switches off onl
|
||||
- RTG VRAM is outside of reserved natmem space. Workaround: Move RTG in earlier position using Hardware info GUI panel.
|
||||
Note that in 64-bit version RTG VRAM must be inside of reserved natmem space. (Outside = error message and return back to GUI)
|
||||
|
||||
Beta 8:
|
||||
|
||||
- Blitter BDAT register's old content was not preserved and shifted in when BDAT was rewritten with CPU or copper
|
||||
and current B-shift was non-zero. (Probably never used by purpose but emulation still should be always correct)
|
||||
- 68010+ RTE didn't generate format error exception if frame was not supported by selected CPU but it was supported by
|
||||
other 680x0 model and CPU emulation mode was not MMU or more compatible.
|
||||
- Added Comspec SA-1000 RTC emulation. Always returns current host time, time registers are not writable.
|
||||
- Built-in HRTMon 2.37 update.
|
||||
- Added two A2088T BIOS 4.0 (390657-01) ROM versions with different internal date (09/11/89 and 14/11/89).
|
||||
- Added A2386SX 1.00.03 ROM.
|
||||
- PC bridgeboard NE2000 boot crash fix. (Introduced when NIC specific MAC setting was added)
|
||||
- Adjusted windowed mode mouse clipping so that when winuae window is partially under taskbar (including auto hide taskbar)
|
||||
or partially outside of monitor, Amiga mouse won't randomly hit hidden borders (if Windows Mouse mode) or become
|
||||
unexpectedly uncaptured (any mode, window partially under taskbar).
|
||||
- Do not delay SCSI/ATAPI emulation audio CD play state change from startup to playing. Only CD32/CDTV require it.
|
||||
|
||||
Beta 7:
|
||||
|
||||
- Accessing accelerator board SCSI IO region without any added SCSI device caused crash.
|
||||
|
||||
27
rommgr.cpp
27
rommgr.cpp
@ -95,7 +95,7 @@ struct romdata *getromdatabypath (const TCHAR *path)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#define NEXT_ROM_ID 203
|
||||
#define NEXT_ROM_ID 206
|
||||
|
||||
#define ALTROM(id,grp,num,size,flags,crc32,a,b,c,d,e) \
|
||||
{ _T("X"), 0, 0, 0, 0, 0, size, id, 0, 0, flags, (grp << 16) | num, 0, NULL, crc32, a, b, c, d, e },
|
||||
@ -288,7 +288,7 @@ static struct romdata roms[] = {
|
||||
ALTROM(116, 1, 1, 32768, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x1909f7e9, 0x5abe9b9d,0xaae328c8,0x134e2b62,0x7b33b698,0xe342afc2)
|
||||
ALTROM(116, 1, 2, 32768, ROMTYPE_ODD | ROMTYPE_8BIT, 0xa3927c72, 0x7adc9352,0x2d112ae9,0x23b9a70d,0x951b1e7a,0xba800ea6)
|
||||
|
||||
{ _T("Freezer: HRTMon v2.36 (built-in)"), 0, 0, 0, 0, _T("HRTMON\0"), 0, 63, 0, 0, ROMTYPE_HRTMON, 0, 1, NULL,
|
||||
{ _T("Freezer: HRTMon v2.37 (built-in)"), 0, 0, 0, 0, _T("HRTMON\0"), 0, 63, 0, 0, ROMTYPE_HRTMON, 0, 1, NULL,
|
||||
0xffffffff, 0, 0, 0, 0, 0, _T("HRTMon") },
|
||||
|
||||
{ _T("A2090a"), 0, 0, 0, 0, _T("A2090A\0"), 16384, 122, 0, 0, ROMTYPE_A2090, 0, 0, NULL,
|
||||
@ -461,7 +461,7 @@ static struct romdata roms[] = {
|
||||
ALTROMPN(146, 1, 2, 8192, ROMTYPE_EVEN | ROMTYPE_8BIT, NULL, 0xc88843cb, 0x3d7eb1b6, 0x8139b81b, 0x0665684c, 0x536ab3d0, 0x52a5dd9d)
|
||||
{ _T("Apollo 500/2000"), 0, 0, 0, 0, _T("APOLLOHD\0"), 16384, 145, 0, 0, ROMTYPE_APOLLOHD, 0, 0, NULL,
|
||||
0x931bad25, 0x24b4ee4c,0x129c7a93,0xf83ad570,0x66afd80c,0x4179f39c, NULL, NULL },
|
||||
{ _T("Multi Evolution 500/2000"), 3, 0, 3, 0, _T("MULTIEVOLUTION\0"), 65536, 156, 0, 0, ROMTYPE_MEVOLUTION, 0, 0, NULL,
|
||||
{ _T("Multi Evolution 500/2000 v3.0"), 3, 0, 3, 0, _T("MULTIEVOLUTION\0"), 65536, 156, 0, 0, ROMTYPE_MEVOLUTION, 0, 0, NULL,
|
||||
0xd13a2c89, 0xf9e38c4b,0xf5c6499d,0x486946ba,0x7b7636b8,0x0845265b, NULL, NULL },
|
||||
ALTROMPN(156, 1, 1, 32768, ROMTYPE_ODD | ROMTYPE_8BIT, NULL, 0x339b3549, 0x74de857b, 0x42f9a8e0, 0xc1f3c29e, 0x06982622, 0x853d08fe)
|
||||
ALTROMPN(156, 1, 2, 32768, ROMTYPE_EVEN | ROMTYPE_8BIT, NULL, 0x3aca5d1f, 0x786f2197, 0xc614be91, 0xae7e87da, 0xb42c3290, 0xd7997763)
|
||||
@ -520,6 +520,10 @@ static struct romdata roms[] = {
|
||||
0xf8e1ad83, 0x45a2b7db,0x6e86fe80,0x5cfef63c,0x65c331a7,0x16a6e9e8, NULL, NULL },
|
||||
{ _T("A2088 BIOS 3.6.1"), 3, 61, 3, 61, _T("A2088\0"), 16384, 149, 0, 0, ROMTYPE_A2088, 0, 0, _T("380788-06"),
|
||||
0x5fd93e56, 0xc1b707a8,0xa62907d7,0x5299f10a,0xa60efd1f,0x44514b26, NULL, NULL },
|
||||
{ _T("A2088T BIOS 4.0 (09/11/89)"), 4, 10, 4, 10, _T("A2088T\0"), 32768, 203, 0, 0, ROMTYPE_A2088T, 0, 0, _T("390657-01"),
|
||||
0x12545545, 0x54f7a99e,0x2e5dbc30,0x43f52001,0xa4abb3b6,0x8e4832fd, NULL, NULL },
|
||||
{ _T("A2088T BIOS 4.0 (14/11/89)"), 4, 10, 4, 10, _T("A2088T\0"), 32768, 204, 0, 0, ROMTYPE_A2088T, 0, 0, _T("390657-01"),
|
||||
0xb6b3b6f7, 0x7929a92f,0x25203cea,0xad302ddd,0x31db55cd,0x49b3020a, NULL, NULL },
|
||||
{ _T("A2088T BIOS 4.10"), 4, 10, 4, 11, _T("A2088T\0"), 32768, 150, 0, 0, ROMTYPE_A2088T, 0, 0, _T("390657-02"),
|
||||
0x20c5d1a9, 0x08e3fbb7,0x28dfc514,0x24083313,0x373ea7a5,0xa2c3e965, NULL, NULL },
|
||||
{ _T("A2088T BIOS 4.11"), 4, 11, 4, 11, _T("A2088T\0"), 32768, 151, 0, 0, ROMTYPE_A2088T, 0, 0, _T("390547-02"),
|
||||
@ -534,8 +538,10 @@ static struct romdata roms[] = {
|
||||
0xd572e205, 0x74fdf0f8,0x325fbc41,0x2b98c72d,0xf5095804,0x831c46b5, NULL, NULL },
|
||||
ALTROMPN(154, 1, 1, 16384, ROMTYPE_ODD | ROMTYPE_8BIT, _T("380682-04"), 0xc23dcd55, 0x38dc24b7, 0x14427b15, 0xd5214cc9, 0xb9be0de7, 0x20bd6a34)
|
||||
ALTROMPN(154, 1, 2, 16384, ROMTYPE_EVEN | ROMTYPE_8BIT, _T("380683-04"), 0xdad80c0b, 0x12fe2916, 0x64f8c412, 0x3877a24e, 0x05837091, 0x44d8acd0)
|
||||
{ _T("A2386SX BIOS 1.0"), 1, 0, 1, 0, _T("A2386SX\0"), 65536, 155, 0, 0, ROMTYPE_A2386, 0, 0, NULL,
|
||||
{ _T("A2386SX BIOS 1.00"), 1, 0, 1, 0, _T("A2386SX\0"), 65536, 155, 0, 0, ROMTYPE_A2386, 0, 0, _T("391168-01"),
|
||||
0x37003e0c, 0x2e127e9c,0x8581d30c,0x2e46404b,0x21608e3c,0xe935fa27, NULL, NULL },
|
||||
{ _T("A2386SX BIOS 1.00.03"), 1, 0, 1, 0, _T("A2386SX\0"), 65536, 205, 0, 0, ROMTYPE_A2386, 0, 0, _T("391168-01"),
|
||||
0x41041761, 0x78659be4,0x5755f8bd,0x004a101b,0x658ae75d,0xf142ddc9, NULL, NULL },
|
||||
|
||||
{ _T("Arcadia OnePlay 2.11"), 0, 0, 0, 0, _T("ARCADIA\0"), 0, 49, 0, 0, ROMTYPE_ARCADIABIOS, 0, 0 },
|
||||
{ _T("Arcadia TenPlay 2.11"), 0, 0, 0, 0, _T("ARCADIA\0"), 0, 50, 0, 0, ROMTYPE_ARCADIABIOS, 0, 0 },
|
||||
@ -693,6 +699,19 @@ static struct romdata roms[] = {
|
||||
|
||||
};
|
||||
|
||||
void dumpromlist(void)
|
||||
{
|
||||
for (int i = 0; roms[i].name; i++) {
|
||||
struct romdata *rd = &roms[i];
|
||||
if (rd->name && rd->group == 0) {
|
||||
write_log(_T("%s"), rd->name);
|
||||
if (rd->size)
|
||||
write_log (_T(" [%dk]"), rd->size >> 10);
|
||||
write_log(_T("\n"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void romlist_clear (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user