sync 2.2.1

parent 8510c211
PUAE 2.2.00
PUAE 2.2.1 beta series
============
PUAE tries to continue where E-UAE left off..
PUAE versioning is based on the merged WinUAE version..
......@@ -56,6 +56,10 @@ from which you can legally make a ROM image, a selection of ROM images
are available for purchase online from Cloanto (publishers of the
Amiga Forever distribution). See http://www.amigaforever.com/
What's new since PUAE 2.x.x
======================
* trying to sync with winuae :}
What's new since PUAE 0.0.0
======================
* Some many changes that i can't begin to mention here and now.
......
......@@ -159,7 +159,7 @@ static void i2c_do (void)
bitcounter = -1;
}
} else {
//write_log (L"NVRAM received bit %d, offset %d\n", sda_out, bitcounter);
//write_log ("NVRAM received bit %d, offset %d\n", sda_out, bitcounter);
nvram_byte <<= 1;
nvram_byte |= sda_out;
bitcounter++;
......
This diff is collapsed.
......@@ -760,7 +760,7 @@ void blitter_handler (uae_u32 data)
static int blitter_stuck;
if (!dmaen (DMA_BLITTER)) {
event2_newevent (ev2_blitter, 10);
event2_newevent (ev2_blitter, 10, 0);
blitter_stuck++;
if (blitter_stuck < 20000 || !currprefs.immediate_blits)
return; /* gotta come back later. */
......@@ -771,7 +771,7 @@ void blitter_handler (uae_u32 data)
}
blitter_stuck = 0;
if (blit_slowdown > 0 && !currprefs.immediate_blits) {
event2_newevent (ev2_blitter, blit_slowdown);
event2_newevent (ev2_blitter, blit_slowdown, 0);
blit_slowdown = -1;
return;
}
......@@ -1365,7 +1365,7 @@ static void do_blitter2 (int hpos, int copper)
blit_waitcyclecounter = 0;
blit_cyclecounter = cycles * (blit_dmacount2 + (blit_nod ? 0 : 1));
event2_newevent (ev2_blitter, blit_cyclecounter);
event2_newevent (ev2_blitter, blit_cyclecounter, 0);
}
void do_blitter (int hpos, int copper)
......
/*
* UAE - The Un*x Amiga Emulator
*
* Block device access using libscg
*
* Copyright 2004-2005 Richard Drummond
*
* Heavily based on code:
* Copyright 1995 Bernd Schmidt
* Copyright 1999 Patrick Ohly
*
*/
/*
* UAE - The Un*x Amiga Emulator
*
* Block device access using libscg
*
* Copyright 2004-2005 Richard Drummond
*
* Heavily based on code:
* Copyright 1995 Bernd Schmidt
* Copyright 1999 Patrick Ohly
*
*/
#include "sysconfig.h"
#include "sysdeps.h"
......@@ -276,7 +276,7 @@ static int execscsicmd (int unitnum, const uae_u8 *data, int len, uae_u8 *inbuf,
DEBUG_LOG ("SCSIDEV: sending command: 0x%2x\n", scmd->cdb.g0_cdb.cmd);
gui_cd_led (1);
gui_flicker_led (LED_CD, 0, 1);
scg_cmd (scgp);
......@@ -349,7 +349,7 @@ static int execscsicmd_direct (int unitnum, uaecptr acmd)
DEBUG_LOG ("SCSIDEV: result: %d %d %s\n", scmd->error, scmd->ux_errno,\
scgp->errstr);
gui_cd_led (1);
gui_flicker_led (LED_CD, 0, 1);
put_word (acmd + 18, scmd->error == SCG_FATAL
? 0 : scsi_cmd_len); /* fake scsi_CmdActual */
......
......@@ -100,6 +100,12 @@ void sys_command_setunit (int unitnum)
int sys_command_open (int mode, int unitnum)
{
int ret = 0;
if (forcedunit >= 0) {
if (unitnum != forcedunit)
return 0;
}
if (mode == DF_SCSI || !have_ioctl) {
if (device_func[DF_SCSI] != NULL)
ret = device_func[DF_SCSI]->opendev (unitnum);
......
......@@ -148,8 +148,7 @@ static const TCHAR *guimode1[] = { "no", "yes", "nowait", 0 };
static const TCHAR *guimode2[] = { "false", "true", "nowait", 0 };
static const TCHAR *guimode3[] = { "0", "1", "nowait", 0 };
static const TCHAR *csmode[] = { "ocs", "ecs_agnus", "ecs_denise", "ecs", "aga", 0 };
static const TCHAR *linemode1[] = { "none", "double", "scanlines", 0 };
static const TCHAR *linemode2[] = { "n", "d", "s", 0 };
static const TCHAR *linemode[] = { "none", "none", "double", "scanlines", 0 };
static const TCHAR *speedmode[] = { "max", "real", 0 };
static const TCHAR *colormode1[] = { "8bit", "15bit", "16bit", "8bit_dither", "4bit_dither", "32bit", 0 };
static const TCHAR *colormode2[] = { "8", "15", "16", "8d", "4d", "32", 0 };
......@@ -763,7 +762,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
cfgfile_write_str (f, "gfx_resolution", lorestype1[p->gfx_resolution]);
cfgfile_write_str (f, "gfx_lores_mode", loresmode[p->gfx_lores_mode]);
cfgfile_write_bool (f, "gfx_flickerfixer", p->gfx_scandoubler);
cfgfile_write_str (f, "gfx_linemode", linemode1[p->gfx_linedbl]);
cfgfile_write_str (f, "gfx_linemode", linemode[p->gfx_vresolution * 2 + p->gfx_scanlines]);
cfgfile_write_str (f, "gfx_fullscreen_amiga", fullmodes[p->gfx_afullscreen]);
cfgfile_write_str (f, "gfx_fullscreen_picasso", fullmodes[p->gfx_pfullscreen]);
cfgfile_write_str (f, "gfx_center_horizontal", centermode1[p->gfx_xcenter]);
......@@ -1371,8 +1370,6 @@ static int cfgfile_parse_host (struct uae_prefs *p, TCHAR *option, TCHAR *value)
|| cfgfile_strval (option, value, "gfx_lores_mode", &p->gfx_lores_mode, loresmode, 0)
|| cfgfile_strval (option, value, "gfx_fullscreen_amiga", &p->gfx_afullscreen, fullmodes, 0)
|| cfgfile_strval (option, value, "gfx_fullscreen_picasso", &p->gfx_pfullscreen, fullmodes, 0)
|| cfgfile_strval (option, value, "gfx_linemode", &p->gfx_linedbl, linemode1, 1)
|| cfgfile_strval (option, value, "gfx_linemode", &p->gfx_linedbl, linemode2, 0)
|| cfgfile_strval (option, value, "gfx_center_horizontal", &p->gfx_xcenter, centermode1, 1)
|| cfgfile_strval (option, value, "gfx_center_vertical", &p->gfx_ycenter, centermode1, 1)
|| cfgfile_strval (option, value, "gfx_center_horizontal", &p->gfx_xcenter, centermode2, 0)
......@@ -2715,15 +2712,13 @@ static void parse_gfx_specs (struct uae_prefs *p, const TCHAR *spec)
p->gfx_resolution = _tcschr (x2, 'l') != 0 ? 1 : 0;
p->gfx_xcenter = _tcschr (x2, 'x') != 0 ? 1 : _tcschr (x2, 'X') != 0 ? 2 : 0;
p->gfx_ycenter = _tcschr (x2, 'y') != 0 ? 1 : _tcschr (x2, 'Y') != 0 ? 2 : 0;
p->gfx_linedbl = _tcschr (x2, 'd') != 0;
p->gfx_linedbl += 2 * (_tcschr (x2, 'D') != 0);
p->gfx_vresolution = _tcschr (x2, 'd') != 0 ? VRES_DOUBLE : VRES_NONDOUBLE;
p->gfx_scanlines = _tcschr (x2, 'D') != 0;
if (p->gfx_scanlines)
p->gfx_vresolution = VRES_DOUBLE;
p->gfx_afullscreen = _tcschr (x2, 'a') != 0;
p->gfx_pfullscreen = _tcschr (x2, 'p') != 0;
if (p->gfx_linedbl == 3) {
write_log ("You can't use both 'd' and 'D' modifiers in the display mode specification.\n");
}
free (x0);
return;
......@@ -3519,8 +3514,8 @@ void default_prefs (struct uae_prefs *p, int type)
p->gfx_size_win_xtra[i].width = 0;
p->gfx_size_win_xtra[i].height = 0;
}
p->gfx_resolution = 1;
p->gfx_linedbl = 1;
p->gfx_resolution = RES_HIRES;
p->gfx_vresolution = VRES_DOUBLE;
p->gfx_afullscreen = GFX_WINDOW;
p->gfx_pfullscreen = GFX_WINDOW;
p->gfx_xcenter = 0; p->gfx_ycenter = 0;
......
......@@ -24,7 +24,8 @@ void consolehook_config (struct uae_prefs *p)
//p->headless = 1;
p->produce_sound = 0;
p->gfx_resolution = 0;
p->gfx_linedbl = 0;
p->gfx_vresolution = 0;
p->gfx_scanlines = false;
p->gfx_framerate = 10;
p->immediate_blits = 1;
p->collision_level = 0;
......@@ -47,8 +48,8 @@ void consolehook_config (struct uae_prefs *p)
p->gfx_size_win.width = 320;
p->gfx_size_win.height = 256;
p->turbo_emulation = 0;
// p->win32_automount_drives = 2;
// p->win32_automount_cddrives = 2;
//p->win32_automount_drives = 2;
//p->win32_automount_cddrives = 2;
add_filesys_config (p, -1, "DH0", "CLIBOOT", ".", 1, 0, 0, 0, 0, 15, NULL, 0, 0);
}
......
......@@ -180,6 +180,7 @@ int maxhpos = MAXHPOS_PAL;
int maxhpos_short = MAXHPOS_PAL;
int maxvpos = MAXVPOS_PAL;
int maxvpos_nom = MAXVPOS_PAL; // nominal value (same as maxvpos but "faked" maxvpos in fake 60hz modes)
int hsyncstartpos;
static int maxvpos_total = 511;
int minfirstline = VBLANK_ENDLINE_PAL;
int equ_vblank_endline = EQU_ENDLINE_PAL;
......@@ -392,7 +393,7 @@ STATIC_INLINE int nodraw (void)
static int doflickerfix (void)
{
return currprefs.gfx_linedbl && doublescan < 0 && vpos < MAXVPOS;
return currprefs.gfx_vresolution && doublescan < 0 && vpos < MAXVPOS;
}
uae_u32 get_copper_address (int copno)
......@@ -1870,7 +1871,7 @@ STATIC_INLINE void decide_line (int hpos)
if (hpos <= last_decide_line_hpos)
return;
if (fetch_state == fetch_not_started && diwstate == DIW_waiting_stop) {
if (fetch_state == fetch_not_started && (diwstate == DIW_waiting_stop || (currprefs.chipset_mask & CSMASK_ECS_AGNUS))) {
int ok = 0;
if (last_decide_line_hpos < plfstrt_start && hpos >= plfstrt_start) {
if (plf_state == plf_idle)
......@@ -1886,7 +1887,7 @@ STATIC_INLINE void decide_line (int hpos)
if (hpos - 2 == ddfstrt_old_hpos)
ok = 0;
}
if (ok) {
if (ok && diwstate == DIW_waiting_stop) {
if (dmaen (DMA_BITPLANE)) {
start_bpl_dma (hpos, plfstrt);
estimate_last_fetch_cycle (plfstrt);
......@@ -2734,7 +2735,7 @@ void init_hz (void)
int hzc = 0;
if (vsync_switchmode (-1, 0))
currprefs.gfx_avsync = changed_prefs.gfx_avsync = vsync_switchmode (-1, 0);
currprefs.gfx_avsync = changed_prefs.gfx_avsync = vsync_switchmode (-1, 0) ? 2 : 0;
if (!isvsync () && ((currprefs.chipset_refreshrate == 50 && !currprefs.ntscmode) ||
(currprefs.chipset_refreshrate == 60 && currprefs.ntscmode))) {
......@@ -2809,6 +2810,14 @@ void init_hz (void)
if (vblank_hz > 300)
vblank_hz = 300;
maxhpos_short = maxhpos;
if (beamcon0 & 0x80) {
if (hbstrt > maxhpos)
hsyncstartpos = hbstrt;
else
hsyncstartpos = maxhpos + hbstrt;
} else {
hsyncstartpos = maxhpos_short + 7;
}
eventtab[ev_hsync].oldcycles = get_cycles ();
eventtab[ev_hsync].evtime = get_cycles () + HSYNCTIME;
events_schedule ();
......@@ -3022,7 +3031,7 @@ STATIC_INLINE uae_u16 VPOSR (void)
vp = (vp >> 8) & 7;
if (currprefs.cs_agnusrev >= 0) {
csbit |= currprefs.cs_agnusrev << 8;
csbit |= currprefs.cs_agnusrev << 8;
} else {
#ifdef AGA
csbit |= (currprefs.chipset_mask & CSMASK_AGA) ? 0x2300 : 0;
......@@ -3261,7 +3270,7 @@ static void DMACON (int hpos, uae_u16 v)
unset_special (SPCFLAG_BLTNASTY);
if (changed & (DMA_MASTER | 0x0f))
audio_hsync (hpos);
audio_state_machine ();
if (changed & (DMA_MASTER | DMA_BITPLANE)) {
ddf_change = vpos;
......@@ -3275,13 +3284,16 @@ static void DMACON (int hpos, uae_u16 v)
static void MISC_handler (void)
{
static bool dorecheck;
int i, recheck;
evt mintime;
evt ct = get_cycles ();
static int recursive;
if (recursive)
if (recursive) {
dorecheck = true;
return;
}
recursive++;
eventtab[ev_misc].active = 0;
recheck = 1;
......@@ -3293,8 +3305,10 @@ static void MISC_handler (void)
if (eventtab2[i].evtime == ct) {
eventtab2[i].active = 0;
eventtab2[i].handler (eventtab2[i].data);
if (eventtab2[i].active)
if (dorecheck || eventtab2[i].active) {
recheck = 1;
dorecheck = false;
}
} else {
evt eventtime = eventtab2[i].evtime - ct;
if (eventtime < mintime)
......@@ -3354,9 +3368,9 @@ STATIC_INLINE void event2_newevent_x (int no, evt t, uae_u32 data, evfunc2 func)
event2_newevent_xx (no, t * CYCLE_UNIT, data, func);
}
void event2_newevent (int no, evt t)
void event2_newevent (int no, evt t, uae_u32 data)
{
event2_newevent_x (no, t, 0, eventtab2[no].handler);
event2_newevent_x (no, t, data, eventtab2[no].handler);
}
void event2_newevent2 (evt t, uae_u32 data, evfunc2 func)
{
......@@ -3472,9 +3486,6 @@ void INTREQ_0 (uae_u16 v)
if (!(v & 0x8000) && old == intreq)
return;
if (v & (0x0080 | 0x0100 | 0x0200 | 0x0400))
audio_update_irq (v);
if (use_eventmode (v)) {
event2_newevent_xx (-1, INT_PROCESSING_DELAY, intreq, send_intreq_do);
} else {
......@@ -5295,7 +5306,103 @@ static void hsync_scandoubler (void)
}
}
void hsync_handler (void)
static void events_dmal (int);
static uae_u16 dmal, dmal_hpos;
static void dmal_emu (uae_u32 v)
{
int hpos = current_hpos ();
if (v >= 6) {
v -= 6;
int nr = v / 2;
uaecptr pt = audio_getpt (nr, v & 1);
uae_u16 dat = chipmem_wget_indirect (pt);
#ifdef DEBUGGER
if (debug_dma)
record_dma (0xaa + nr * 16, dat, pt, hpos, vpos, DMARECORD_AUDIO);
#endif
last_custom_value1 = dat;
AUDxDAT (nr, dat, pt);
} else {
uae_u16 dat;
int w = v & 1;
uaecptr pt = disk_getpt ();
// disk_fifostatus() needed in >100% disk speed modes
if (w) {
if (disk_fifostatus () <= 0) {
dat = chipmem_wget_indirect (pt);
last_custom_value1 = dat;
DSKDAT (dat);
}
} else {
if (disk_fifostatus () >= 0) {
dat = DSKDATR ();
chipmem_wput_indirect (pt, dat);
}
}
#ifdef DEBUGGER
if (debug_dma)
record_dma (w ? 0x26 : 0x08, dat, pt, hpos, vpos, DMARECORD_DISK);
#endif
}
}
static void dmal_func (uae_u32 v)
{
dmal_emu (v);
events_dmal (0);
}
static void dmal_func2 (uae_u32 v)
{
unsigned int i;
for (i = 0; i < 6 + 8; i += 2) {
if (dmal & 3)
dmal_emu (dmal_hpos + ((dmal & 2) ? 1 : 0));
dmal_hpos += 2;
dmal >>= 2;
}
}
static void events_dmal (int hp)
{
int i;
if (!dmal)
return;
if (currprefs.cpu_cycle_exact) {
for (i = 0; i < 6 + 8; i += 2) {
if (dmal & 3)
break;
hp += 2;
dmal >>= 2;
dmal_hpos += 2;
}
event2_newevent2 (hp, dmal_hpos + ((dmal & 2) ? 1 : 0), dmal_func);
dmal &= ~3;
} else {
event2_newevent2 (hp, 17, dmal_func2);
}
}
static void events_dmal_hsync (void)
{
unsigned int i;
if (dmal)
write_log ("DMAL error!? %04x\n", dmal);
dmal = audio_dmal ();
dmal <<= 6;
dmal |= disk_dmal ();
if (!dmal)
return;
dmal_hpos = 0;
for (i = 0; i < 6 + 8; i += 2) {
if (dmal & (3 << i)) {
alloc_cycle_ext (i + 7, CYCLE_MISC);
}
}
events_dmal (7);
}
static void hsync_handler (void)
{
int hpos = current_hpos ();
......@@ -5331,7 +5438,7 @@ void hsync_handler (void)
CDTV_hsync_handler ();
#endif
decide_blitter (-1);
DISK_hsync (maxhpos);
DISK_hsync ();
#ifdef CPUEMU_12
if (currprefs.cpu_cycle_exact || currprefs.blitter_cycle_exact) {
......@@ -5455,7 +5562,9 @@ void hsync_handler (void)
if (currprefs.produce_sound)
audio_hsync (-1);
audio_hsync ();
events_dmal_hsync ();
#ifdef JIT
if (currprefs.cachesize) {
......@@ -5480,14 +5589,14 @@ void hsync_handler (void)
int lineno = vpos;
if (lineno >= MAXVPOS)
lineno %= MAXVPOS;
if ((bplcon0 & 4) && currprefs.gfx_linedbl)
if ((bplcon0 & 4) && currprefs.gfx_vresolution)
notice_interlace_seen ();
nextline_how = nln_normal;
if (doflickerfix () && interlace_seen) {
lineno *= 2;
} else if (currprefs.gfx_linedbl && (doublescan <= 0 || interlace_seen > 0)) {
} else if (currprefs.gfx_vresolution && (doublescan <= 0 || interlace_seen > 0)) {
lineno *= 2;
nextline_how = currprefs.gfx_linedbl == 1 ? nln_doubled : nln_nblack;
nextline_how = currprefs.gfx_vresolution > VRES_NONDOUBLE && currprefs.gfx_scanlines == false ? nln_doubled : nln_nblack;
if ((bplcon0 & 4) || (interlace_seen > 0 && !lof_current)) {
if (!lof_current) {
lineno++;
......@@ -5740,6 +5849,7 @@ void customreset (int hardreset)
set_cycles (0);
vpos_count = vpos_count_prev = 0;
dmal = 0;
init_hz ();
vpos_lpen = -1;
......@@ -6157,28 +6267,28 @@ static int REGPARAM2 custom_wput_1 (int hpos, uaecptr addr, uae_u32 value, int n
case 0x0A4: AUDxLEN (0, value); break;
case 0x0A6: AUDxPER (0, value); break;
case 0x0A8: AUDxVOL (0, value); break;
case 0x0AA: AUDxDAT (0, value); break;
case 0x0AA: AUDxDAT (0, value, 0xffffffff); break;
case 0x0B0: AUDxLCH (1, value); break;
case 0x0B2: AUDxLCL (1, value); break;
case 0x0B4: AUDxLEN (1, value); break;
case 0x0B6: AUDxPER (1, value); break;
case 0x0B8: AUDxVOL (1, value); break;
case 0x0BA: AUDxDAT (1, value); break;
case 0x0BA: AUDxDAT (1, value, 0xffffffff); break;
case 0x0C0: AUDxLCH (2, value); break;
case 0x0C2: AUDxLCL (2, value); break;
case 0x0C4: AUDxLEN (2, value); break;
case 0x0C6: AUDxPER (2, value); break;
case 0x0C8: AUDxVOL (2, value); break;
case 0x0CA: AUDxDAT (2, value); break;
case 0x0CA: AUDxDAT (2, value, 0xffffffff); break;
case 0x0D0: AUDxLCH (3, value); break;
case 0x0D2: AUDxLCL (3, value); break;
case 0x0D4: AUDxLEN (3, value); break;
case 0x0D6: AUDxPER (3, value); break;
case 0x0D8: AUDxVOL (3, value); break;
case 0x0DA: AUDxDAT (3, value); break;
case 0x0DA: AUDxDAT (3, value, 0xffffffff); break;
case 0x0E0: BPLxPTH (hpos, value, 0); break;
case 0x0E2: BPLxPTL (hpos, value, 0); break;
......@@ -6341,12 +6451,6 @@ void REGPARAM2 custom_bput (uaecptr addr, uae_u32 value)
} else {
custom_wput (addr & ~1, rval);
}
if (warned < 10) {
if (M68K_GETPC < 0xe00000 || M68K_GETPC >= 0x10000000) {
write_log ("Byte put to custom register %04X PC=%08X\n", addr, M68K_GETPC);
warned++;
}
}
}
void REGPARAM2 custom_lput(uaecptr addr, uae_u32 value)
......
......@@ -2573,7 +2573,7 @@ void debug (void)
continue;
if (bpnodes[i].addr == pc) {
bp = 1;
console_out (L"Breakpoint at %08X\n", pc);
console_out ("Breakpoint at %08X\n", pc);
break;
}
}
......
This diff is collapsed.
......@@ -382,7 +382,7 @@ int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy)
if (minfirstline > y1)
y1 = minfirstline;
dbl2 = dbl1 = currprefs.gfx_linedbl ? 1 : 0;
dbl2 = dbl1 = currprefs.gfx_vresolution;
if (doublescan > 0 && interlace_seen <= 0) {
dbl1--;
dbl2--;
......@@ -492,7 +492,7 @@ void get_custom_mouse_limits (int *pw, int *ph, int *pdx, int *pdy, int dbl)
dx = xshift (dx, res_shift);
dbl2 = dbl1 = currprefs.gfx_linedbl ? 1 : 0;
dbl2 = dbl1 = currprefs.gfx_vresolution;
if ((doublescan > 0 || interlace_seen > 0) && !dbl) {
dbl1--;
dbl2--;
......@@ -714,7 +714,7 @@ static void pfield_do_fill_line (int start, int stop)
}
}
STATIC_INLINE void fill_line (void)
STATIC_INLINE void fill_line_2 (int startpos, int len, int blank)
{
int shift;
int nints, nrem;
......@@ -728,24 +728,20 @@ STATIC_INLINE void fill_line (void)
shift = 2;*/
shift = gfxvidinfo.pixbytes >> 1;
nints = gfxvidinfo.width >> (2 - shift);
nints = len >> (2 - shift);
nrem = nints & 7;
nints &= ~7;
start = (int *)(((uae_u8*)xlinebuffer) + (visible_left_border << shift));
#ifdef ECS_DENISE
val = brdblank ? 0 : colors_for_drawing.acolors[0];
#else
val = colors_for_drawing.acolors[0];
#endif
start = (int *)(((uae_u8*)xlinebuffer) + (startpos << shift));
val = blank ? 0 : colors_for_drawing.acolors[0];
for (; nints > 0; nints -= 8, start += 8) {
*start = val;
*(start+1) = val;
*(start+2) = val;
*(start+3) = val;
*(start+4) = val;
*(start+5) = val;
*(start+6) = val;
*(start+7) = val;
*(start + 1) = val;
*(start + 2) = val;
*(start + 3) = val;
*(start + 4) = val;
*(start + 5) = val;
*(start + 6) = val;
*(start + 7) = val;
}
switch (nrem) {
......@@ -766,6 +762,17 @@ STATIC_INLINE void fill_line (void)
}
}
STATIC_INLINE void fill_line (void)
{
int endpos = visible_left_border + gfxvidinfo.width;
int endposh = coord_hw_to_window_x (hsyncstartpos * 2);
if (endpos < endposh) {
fill_line_2 (visible_left_border, gfxvidinfo.width, brdblank);
} else {
fill_line_2 (visible_left_border, endposh - visible_left_border, brdblank);
fill_line_2 (endposh, gfxvidinfo.width - endposh, 1);
}
}
#define SPRITE_DEBUG 0
STATIC_INLINE uae_u8 render_sprites (int pos, int dualpf, uae_u8 apixel, int aga)
......@@ -1675,7 +1682,7 @@ static void init_aspect_maps (void)
/* Do nothing if the gfx driver hasn't initialized the screen yet */
return;
linedbld = linedbl = currprefs.gfx_linedbl;
linedbld = linedbl = currprefs.gfx_vresolution;
if (doublescan > 0 && interlace_seen <= 0) {
linedbl = 0;
linedbld = 1;
......@@ -1690,8 +1697,8 @@ static void init_aspect_maps (void)
amiga2aspect_line_map = xmalloc (int, (MAXVPOS + 1) * 2 + 1);
native2amiga_line_map = xmalloc (int, gfxvidinfo.height);
maxl = (MAXVPOS + 1) * (linedbld ? 2 : 1);
min_ypos_for_screen = minfirstline << (linedbl ? 1 : 0);
maxl = (MAXVPOS + 1) << linedbld;
min_ypos_for_screen = minfirstline << linedbl;
max_drawn_amiga_line = -1;
for (i = 0; i < maxl; i++) {
int v = i - min_ypos_for_screen;
......@@ -1701,12 +1708,11 @@ static void init_aspect_maps (void)
v = -1;
amiga2aspect_line_map[i] = v;
}
if (linedbl)
max_drawn_amiga_line >>= 1;
max_drawn_amiga_line >>= linedbl;
if (currprefs.gfx_ycenter && !currprefs.gfx_filter_autoscale) {
/* @@@ verify maxvpos vs. MAXVPOS */
extra_y_adjust = (gfxvidinfo.height - (maxvpos_nom << (linedbl ? 1 : 0))) >> 1;
extra_y_adjust = (gfxvidinfo.height - (maxvpos_nom << linedbl)) >> 1;
if (extra_y_adjust < 0)
extra_y_adjust = 0;
}
......@@ -1719,7 +1725,7 @@ static void init_aspect_maps (void)
if (amiga2aspect_line_map[i] == -1)
continue;
for (j = amiga2aspect_line_map[i]; j < gfxvidinfo.height && native2amiga_line_map[j] == -1; j++)
native2amiga_line_map[j] = i >> (linedbl ? 1 : 0);
native2amiga_line_map[j] = i >> linedbl;
}
}
......@@ -1902,6 +1908,7 @@ STATIC_INLINE void do_color_changes (line_draw_func worker_border, line_draw_fun
int lastpos = visible_left_border;
int endpos = visible_left_border + gfxvidinfo.width;
int diff = 1 << lores_shift;
int endposh = coord_hw_to_window_x (hsyncstartpos * 2);
for (i = dip_for_drawing->first_color_change; i <= dip_for_drawing->last_color_change; i++) {
int regno = curr_color_changes[i].regno;
......@@ -1920,7 +1927,17 @@ STATIC_INLINE void do_color_changes (line_draw_func worker_border, line_draw_fun
if (nextpos_in_range > lastpos) {
if (lastpos < playfield_start) {
int t = nextpos_in_range <= playfield_start ? nextpos_in_range : playfield_start;
(*worker_border) (lastpos, t);
if (t == endpos) {
if (lastpos < endposh)
(*worker_border) (lastpos, endposh);
// start of hsync, blank the rest of display
int blank = brdblank;
brdblank = 1;
(*worker_border) (endposh, endpos);
brdblank = blank;
} else {
(*worker_border) (lastpos, t);
}
lastpos = t;
}
}
......@@ -1932,8 +1949,18 @@ STATIC_INLINE void do_color_changes (line_draw_func worker_border, line_draw_fun
}
}
if (nextpos_in_range > lastpos) {
if (lastpos >= playfield_end)
(*worker_border) (lastpos, nextpos_in_range);
if (lastpos >= playfield_end) {
if (nextpos_in_range > endposh) {
(*worker_border) (lastpos, endposh);
// start of hsync, blank the rest of display
int blank = brdblank;
brdblank = 1;
(*worker_border) (endposh, nextpos_in_range);
brdblank = blank;
} else {
(*worker_border) (lastpos, nextpos_in_range);
}
}
lastpos = nextpos_in_range;
}
if (i != dip_for_drawing->last_color_change) {
......@@ -2163,16 +2190,14 @@ static void center_image (void)
if (visible_left_border < prev_x_adjust && prev_x_adjust < min_diwstart && min_diwstart - visible_left_border <= 32)
visible_left_border = prev_x_adjust;
}
} else if ((beamcon0 & 0x80) && max_diwstop > 0) {
int w = gfxvidinfo.width;
if (max_diwstop - min_diwstart < w)
visible_left_border = (max_diwstop - min_diwstart - w) / 2 + min_diwstart;
else
visible_left_border = max_diwstop - w - (max_diwstop - min_diwstart - w) / 2;
} else {
if ((beamcon0 & 0x80) && max_diwstop > 0) {
int w = gfxvidinfo.width;
if (max_diwstop - min_diwstart < w)
visible_left_border = (max_diwstop - min_diwstart - w) / 2 + min_diwstart;
else
visible_left_border = max_diwstop - w - (max_diwstop - min_diwstart - w) / 2;
} else {
visible_left_border = max_diwlastword - gfxvidinfo.width;
}
visible_left_border = max_diwlastword - gfxvidinfo.width;
}
if (currprefs.gfx_xcenter_pos >= 0) {
int val = currprefs.gfx_xcenter_pos >> RES_MAX;
......@@ -2236,8 +2261,8 @@ static void center_image (void)
if (thisframe_y_adjust < minfirstline)
thisframe_y_adjust = minfirstline;
}
thisframe_y_adjust_real = thisframe_y_adjust << (linedbl ? 1 : 0);
tmp = (maxvpos_nom - thisframe_y_adjust) << (linedbl ? 1 : 0);
thisframe_y_adjust_real = thisframe_y_adjust << linedbl;
tmp = (maxvpos_nom - thisframe_y_adjust) << linedbl;
if (tmp != max_ypos_thisframe) {
last_max_ypos = tmp;
if (last_max_ypos < 0)
......@@ -2273,9 +2298,9 @@ static void init_drawing_frame (void)
if ((src->width > 0 && src->height > 0) || (ar && currprefs.gfx_filter > 0)) {
int nr = (m & 2) == 0 ? 0 : 1;
int nl = (m & 1) == 0 ? 0 : 1;
if (changed_prefs.gfx_resolution != nr || changed_prefs.gfx_linedbl != nl) {
if (changed_prefs.gfx_resolution != nr || changed_prefs.gfx_vresolution != nl) {
changed_prefs.gfx_resolution = nr;
changed_prefs.gfx_linedbl = nl;
changed_prefs.gfx_vresolution = nl;
write_log ("RES -> %d LINE -> %d\n", nr, nl);
config_changed = 1;
if (ar) {
......@@ -2318,8 +2343,7 @@ static void init_drawing_frame (void)
if (thisframe_first_drawn_line > thisframe_last_drawn_line)
thisframe_last_drawn_line = thisframe_first_drawn_line;
maxline = linedbl ? (maxvpos_nom + 1) * 2 + 1 : (maxvpos_nom + 1) + 1;
maxline++;
maxline = ((maxvpos_nom + 1) << linedbl) + 2;
#ifdef SMART_UPDATE
for (i = 0; i < maxline; i++) {
switch (linestate[i]) {
......@@ -2673,8 +2697,7 @@ static void lightpen_update (void)
lightpen_cx = (((lightpen_x + visible_left_border) >> lores_shift) >> 1) + DISPLAY_LEFT_SHIFT - DIW_DDF_OFFSET;
lightpen_cy = lightpen_y;
if (linedbl)
lightpen_cy >>= 1;
lightpen_cy >>= linedbl;
lightpen_cy += minfirstline;
if (lightpen_cx < 0x18)
......@@ -2795,7 +2818,7 @@ void hardware_line_completed (int lineno)
if (where < gfxvidinfo.height && where != -1)
pfield_draw_line (lineno, where, amiga2aspect_line_map[i+min_ypos_for_screen+1]);
}
}
}
#endif
}
......@@ -2845,7 +2868,7 @@ void vsync_handle_redraw (int long_frame, int lof_changed)
interlace_seen = -1;
} else if (interlace_seen == -1) {
interlace_seen = 0;
if (currprefs.gfx_scandoubler && currprefs.gfx_linedbl)
if (currprefs.gfx_scandoubler && currprefs.gfx_vresolution)
notice_screen_contents_lost ();
}
......@@ -3015,7 +3038,7 @@ void reset_drawing (void)
init_aspect_maps ();
init_row_map();
init_row_map ();
last_redraw_point = 0;
......
......@@ -94,7 +94,7 @@ static void freesample (struct drvsample *s)
s->p = 0;
}
static void processclicks(struct drvsample *ds)
static void processclicks (struct drvsample *ds)
{
unsigned int n = 0;
unsigned int nClick = 0;
......@@ -204,10 +204,9 @@ void driveclick_init (void)
drvs[i][DS_SNATCH].pos = drvs[i][DS_SNATCH].len;
}
}
if (vv > 0) {
driveclick_reset ();
driveclick_reset ();
if (vv > 0)
click_initialized = 1;
}
if (v != 5) { click_initialized= 0; wave_initialized = 0;}
}
......@@ -236,10 +235,9 @@ void driveclick_free (void)
drv_has_disk[i] = 0;
}
memset (drvs, 0, sizeof (drvs));
xfree (clickbuffer);
clickbuffer = 0;
click_initialized = 0;
wave_initialized = 0;
driveclick_reset ();
}
static int driveclick_active (void)
......@@ -406,8 +404,11 @@ void driveclick_mix (uae_s16 *sndbuffer, int size, int channelmask)
break;
case 1:
for (i = 0; i < size; i++) {
uae_s16 s = clickbuffer[i];
if (channelmask & 1)
sndbuffer[0] = limit (((sndbuffer[0] + clickbuffer[i]) * 2) / 3);
sndbuffer[0] = limit (((sndbuffer[0] + s) * 2) / 3);
else
sndbuffer[0] = sndbuffer[0] * 2 / 3;
sndbuffer++;
}
break;
......
......@@ -354,7 +354,7 @@ static void REGPARAM2 expamem_bput (uaecptr addr, uae_u32 value)
break;
case 0x4c:
write_log (" Card %d (Zorro%s) had no success.\n", ecard + 1, expamem_type () == 0xc0 ? L"II" : L"III");
write_log (" Card %d (Zorro%s) had no success.\n", ecard + 1, expamem_type () == 0xc0 ? "II" : "III");
++ecard;
if (ecard < cardno)
(*card_init[ecard]) ();
......
......@@ -467,7 +467,7 @@ int graphics_init (void)
currprefs.gfx_width = 320;
currprefs.gfx_height = 256;
currprefs.gfx_lores = 1;
currprefs.gfx_linedbl = 0;
currprefs.gfx_vresolution = 0;
gfxvidinfo.width = currprefs.gfx_width;
gfxvidinfo.height = currprefs.gfx_height;
......
......@@ -680,7 +680,7 @@ STATIC_INLINE void render_gl_buffer (const struct gl_buffer_t *buffer, int first
amiga_real_w = 724;
gfx_gl_x_offset = (float) currprefs.gfx_gl_x_offset * 2;
}
if (currprefs.gfx_linedbl) {
if (currprefs.gfx_vresolution) {
amiga_real_h = 568;
gfx_gl_y_offset = (float) currprefs.gfx_gl_y_offset * 2;
} else {
......@@ -1530,7 +1530,7 @@ int check_prefs_changed_gfx (void)
|| changed_prefs.gfx_height_fs != currprefs.gfx_height_fs) {
fixup_prefs_dimensions (&changed_prefs);
} else if (changed_prefs.gfx_lores_mode == currprefs.gfx_lores_mode
&& changed_prefs.gfx_linedbl == currprefs.gfx_linedbl
&& changed_prefs.gfx_vresolution == currprefs.gfx_vresolution
&& changed_prefs.gfx_xcenter == currprefs.gfx_xcenter
&& changed_prefs.gfx_ycenter == currprefs.gfx_ycenter
&& changed_prefs.gfx_afullscreen == currprefs.gfx_afullscreen
......@@ -1549,8 +1549,8 @@ int check_prefs_changed_gfx (void)
currprefs.gfx_height_win = changed_prefs.gfx_height_win;
currprefs.gfx_width_fs = changed_prefs.gfx_width_fs;
currprefs.gfx_height_fs = changed_prefs.gfx_height_fs;
currprefs.gfx_lores_mode = changed_prefs.gfx_lores_mode;
currprefs.gfx_linedbl = changed_prefs.gfx_linedbl;
currprefs.gfx_lores_mode = changed_prefs.gfx_lores_mode;
currprefs.gfx_vresolution = changed_prefs.gfx_vresolution;
currprefs.gfx_xcenter = changed_prefs.gfx_xcenter;
currprefs.gfx_ycenter = changed_prefs.gfx_ycenter;
currprefs.gfx_afullscreen = changed_prefs.gfx_afullscreen;
......
......@@ -1221,7 +1221,7 @@ int check_prefs_changed_gfx (void)
if (changed_prefs.gfx_width_win == currprefs.gfx_width_win
&& changed_prefs.gfx_height_win == currprefs.gfx_height_win
&& changed_prefs.gfx_linedbl == currprefs.gfx_linedbl
&& changed_prefs.gfx_vresolution == currprefs.gfx_vresolution
&& changed_prefs.gfx_xcenter == currprefs.gfx_xcenter
&& changed_prefs.gfx_ycenter == currprefs.gfx_ycenter
&& changed_prefs.gfx_afullscreen == currprefs.gfx_afullscreen
......@@ -1231,7 +1231,7 @@ int check_prefs_changed_gfx (void)
graphics_subshutdown ();
currprefs.gfx_width_win = changed_prefs.gfx_width_win;
currprefs.gfx_height_win = changed_prefs.gfx_height_win;
currprefs.gfx_linedbl = changed_prefs.gfx_linedbl;
currprefs.gfx_vresolution = changed_prefs.gfx_vresolution;
currprefs.gfx_xcenter = changed_prefs.gfx_xcenter;
currprefs.gfx_ycenter = changed_prefs.gfx_ycenter;
currprefs.gfx_afullscreen = changed_prefs.gfx_afullscreen;
......
......@@ -104,15 +104,6 @@ int gui_init (void)
{
}
int gui_open (void)
{
return -1;
}
void gui_notify_state (int state)
{
}
void gui_exit (void)
{
}
......@@ -144,41 +135,6 @@ void gui_led (int led, int on)
{
}
void gui_hd_led (int led)
{
static int resetcounter;
int old = gui_data.hd;
if (led == 0) {
resetcounter--;
if (resetcounter > 0)
return;
}
gui_data.hd = led;
resetcounter = 6;
if (old != gui_data.hd)
gui_led (5, gui_data.hd);
}
void gui_cd_led (int led)
{
static int resetcounter;
int old = gui_data.cd;
if (led == 0) {
resetcounter--;
if (resetcounter > 0)
return;
}
gui_data.cd = led;
resetcounter = 6;
if (old != gui_data.cd)
gui_led (6, gui_data.cd);
}
void gui_display (int shortcut)
{
pause_sound ();
......
......@@ -589,11 +589,6 @@ int gui_init (void)
{
}
int gui_open (void)
{
return -1;
}
int gui_update (void)
{
return 0;
......@@ -617,41 +612,6 @@ void gui_led (int led, int on)
{
}
void gui_hd_led (int unitnum, int led)
{
static int resetcounter;
int old = gui_data.hd;
if (led == 0) {
resetcounter--;
if (resetcounter > 0)
return;
}
gui_data.hd = led;
resetcounter = 6;
if (old != gui_data.hd)
gui_led (5, gui_data.hd);
}
void gui_cd_led (int unitnum, int led)
{
static int resetcounter;
int old = gui_data.cd;
if (led == 0) {
resetcounter--;
if (resetcounter > 0)
return;
}
gui_data.cd = led;
resetcounter = 6;
if (old != gui_data.cd)
gui_led (6, gui_data.cd);
}
void gui_filename (int num, const char *name)
{
}
......@@ -664,10 +624,6 @@ void gui_handle_events (void)
{
}
void gui_notify_state (int state)
{
}
void gui_display (int shortcut)
{
int result;
......
......@@ -66,7 +66,6 @@ static void cpuspeedpanel_class_init (CpuSpeedPanelClass *class)
static void cpuspeedpanel_init (CpuSpeedPanel *cspanel)
{
GtkWidget *table;
/* GtkWidget *hbuttonbox, *button1, *button2; */
gtk_frame_set_label (GTK_FRAME(cspanel), "Emulation speed");
gtk_container_set_border_width (GTK_CONTAINER (cspanel), PANEL_BORDER_WIDTH);
......
This diff is collapsed.
......@@ -14,21 +14,39 @@ extern "C" {
#define CPUTYPEPANEL_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, cputypepanel_get_type (), CpuTypePanelClass)
#define IS_CPUTYPEPANEL(obj) GTK_CHECK_TYPE (obj, cputype_panel_get_type ())
#define FPUTYPEPANEL(obj) GTK_CHECK_CAST (obj, fputypepanel_get_type (), FpuTypePanel)
#define FPUTYPEPANEL_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, fputypepanel_get_type (), FpuTypePanelClass)
#define IS_FPUTYPEPANEL(obj) GTK_CHECK_TYPE (obj, fputype_panel_get_type ())
typedef struct _CpuTypePanel CpuTypePanel;
typedef struct _CpuTypePanelClass CpuTypePanelClass;
typedef struct _FpuTypePanel FpuTypePanel;
typedef struct _FpuTypePanelClass FpuTypePanelClass;
struct _CpuTypePanel
{
GtkFrame frame;
GtkWidget *cputype_widget;
GtkWidget *addr24bit_widget;
GtkWidget *fpuenabled_widget;
GtkWidget *accuracy_widget;
guint cputype;
guint addr24bit;
guint fpuenabled;
guint compatible;
guint cycleexact;
GtkFrame frame;
GtkWidget *cputype_widget;
GtkWidget *addr24bit_widget;
GtkWidget *cpu_morecompat_widget;
GtkWidget *mmu40_widget;
GtkWidget *accuracy_widget;
guint cputype;
guint addr24bit;
guint cpumorecompat;
guint mmu40;
guint cycleexact;
guint fpuenabled;
};
struct _FpuTypePanel
{
GtkFrame frame;
GtkWidget *fputype_widget;
GtkWidget *fpu_morecompat_widget;
guint fputype;
guint fpumorecompat;
};
struct _CpuTypePanelClass
......@@ -38,6 +56,13 @@ struct _CpuTypePanelClass
void (* cputypepanel) (CpuTypePanel *cputypepanel );
};
struct _FpuTypePanelClass
{
GtkFrameClass parent_class;
void (* fputypepanel) (FpuTypePanel *fputypepanel );
};
guint cputypepanel_get_type (void);
GtkWidget* cputypepanel_new (void);
void cputypepanel_set_cpulevel (CpuTypePanel *ctpanel, guint cpulevel);
......@@ -46,6 +71,11 @@ guint cputypepanel_get_cpulevel (CpuTypePanel *ctpanel);
guint cputypepanel_get_addr24bit (CpuTypePanel *ctpanel);
void cputypepanel_set_compatible (CpuTypePanel *ctpanel, gboolean compatible);
void cputypepanel_set_cycleexact (CpuTypePanel *ctpanel, gboolean cycleexact);
guint fputypepanel_get_type (void);
GtkWidget* fputypepanel_new (void);
void fputypepanel_set_fpulevel (FpuTypePanel *ftpanel, guint fpulevel);
#ifdef __cplusplus
}
#endif /* __cplusplus */
......
This diff is collapsed.
......@@ -289,17 +289,6 @@ int gui_init (void)
static int have_rexx = 0;
int gui_open (void)
{
if (!have_rexx) {
have_rexx = rexx_init ();
if (have_rexx)
atexit (rexx_exit);
}
return -1;
}
/****************************************************************************/
void gui_exit (void)
......@@ -345,51 +334,6 @@ void gui_handle_events (void)
/****************************************************************************/
void gui_notify_state (int state)
{
}
/****************************************************************************/
void gui_hd_led (int led)
{
static int resetcounter;
int old = gui_data.hd;
if (led == 0) {
resetcounter--;
if (resetcounter > 0)
return;
}
gui_data.hd = led;
resetcounter = 6;
if (old != gui_data.hd)
gui_led (5, gui_data.hd);
}
/****************************************************************************/
void gui_cd_led (int led)
{
static int resetcounter;
int old = gui_data.cd;
if (led == 0) {
resetcounter--;
if (resetcounter > 0)
return;
}
gui_data.cd = led;
resetcounter = 6;
if (old != gui_data.cd)
gui_led (6, gui_data.cd);
}
/****************************************************************************/
void gui_fps (int fps, int idle)
{
gui_data.fps = fps;
......
......@@ -16,15 +16,6 @@ int gui_init (void)
{
}
int gui_open (void)
{
return -1;
}
void gui_notify_state (int state)
{
}
void gui_fps (int fps, int idle)
{
gui_data.fps = fps;
......@@ -39,14 +30,6 @@ void gui_led (int led, int on)
{
}
void gui_hd_led (int unitnum, int led)
{
}
void gui_cd_led (int unitnum, int led)
{
}
void gui_filename (int num, const char *name)
{
}
......
......@@ -321,37 +321,6 @@ void gui_fps (int fps, int idle){
}
void gui_flicker_led (int led, int unitnum, int status){}
void gui_led (int led, int on){}
void gui_hd_led (int led){
static int resetcounter;
int old = gui_data.hd;
if (led == 0) {
resetcounter--;
if (resetcounter > 0)
return;
}
gui_data.hd = led;
resetcounter = 6;
if (old != gui_data.hd)
gui_led (5, gui_data.hd);
}
void gui_cd_led (int led){
static int resetcounter;
int old = gui_data.cd;
if (led == 0) {
resetcounter--;
if (resetcounter > 0)
return;
}
gui_data.cd = led;
resetcounter = 6;
if (old != gui_data.cd)
gui_led (6, gui_data.cd);
}
void gui_filename (int num, const char *name){}
void gui_handle_events (void){}
......
......@@ -13,22 +13,25 @@ extern void aud1_handler (void);
extern void aud2_handler (void);
extern void aud3_handler (void);
extern void AUDxDAT (int nr, uae_u16 value);
//extern void AUDxDAT (int nr, uae_u16 value);
//extern void AUDxDAT (int nr, uae_u16 value, uaecptr addr);
extern void AUDxVOL (int nr, uae_u16 value);
extern void AUDxPER (int nr, uae_u16 value);
extern void AUDxLCH (int nr, uae_u16 value);
extern void AUDxLCL (int nr, uae_u16 value);
extern void AUDxLEN (int nr, uae_u16 value);
extern uae_u16 audio_dmal (void);
extern void audio_state_machine (void);
extern uaecptr audio_getpt (int nr, int reset);
extern int init_audio (void);
extern void ahi_install (void);
extern void audio_reset (void);
extern void update_audio (void);
extern void schedule_audio (void);
extern void audio_evhandler (void);
extern void audio_hsync (int);
extern void audio_hsync (void);
extern void audio_update_adkmasks (void);
extern void audio_update_irq (uae_u16);
extern void update_sound (int freq, int longframe, int linetoggle);
extern void led_filter_audio (void);
extern void set_audio (void);
......
......@@ -110,6 +110,7 @@ extern uae_u16 INTREQR (void);
extern int maxhpos, maxhpos_short;
extern int maxvpos, maxvpos_nom;
extern int hsyncstartpos;
extern int minfirstline, vblank_endline, numscrlines;
extern int vblank_hz, fake_vblank_hz, vblank_skip, doublescan;
extern frame_time_t syncbase;
......@@ -167,6 +168,9 @@ extern int xbluecolor_s, xbluecolor_b, xbluecolor_m;
#define RES_HIRES 1
#define RES_SUPERHIRES 2
#define RES_MAX 2
#define VRES_NONDOUBLE 0
#define VRES_DOUBLE 1
#define VRES_MAX 1
/* calculate shift depending on resolution (replaced "decided_hires ? 4 : 8") */
#define RES_SHIFT(res) ((res) == RES_LORES ? 8 : (res) == RES_HIRES ? 4 : 2)
......
......@@ -21,10 +21,10 @@ extern void disk_insert (int num, const TCHAR *name);
extern void disk_insert_force (int num, const TCHAR *name);
extern void DISK_check_change (void);
//extern int DISK_validate_filename (const TCHAR *fname, int leave_open, bool *wrprot, uae_u32 *crc32, struct zfile **zf);
extern void DISK_handler (void);
extern void DISK_handler (uae_u32);
extern void DISK_update (unsigned int hpos);
extern void DISK_update_adkcon (unsigned int hpos, uae_u16 v);
extern void DISK_hsync (unsigned int hpos);
extern void DISK_hsync (void);
extern void DISK_reset (void);
extern int disk_getwriteprotect (const TCHAR *name);
extern int disk_setwriteprotect (int num, const TCHAR *name, int protect);
......@@ -40,10 +40,14 @@ extern int disk_prevnext_name (TCHAR *img, int dir);
extern void DSKLEN (uae_u16 v, unsigned int hpos);
extern uae_u16 DSKBYTR (unsigned int hpos);
extern void DSKDAT (uae_u16);
extern void DSKSYNC (unsigned int, uae_u16);
extern void DSKPTL (uae_u16);
extern void DSKPTH (uae_u16);
extern void DSKDAT (uae_u16);
extern uae_u16 DSKDATR (void);
extern uae_u16 disk_dmal (void);
extern uaecptr disk_getpt (void);
extern int disk_fifostatus (void);
extern int disk_debug_logging;
extern int disk_debug_mode;
......
......@@ -80,9 +80,9 @@ enum {
extern struct ev eventtab[ev_max];
extern struct ev2 eventtab2[ev2_max];
extern void event2_newevent(int, evt);
extern void event2_newevent2(evt, uae_u32, evfunc2);
extern void event2_remevent(int);
extern void event2_newevent (int, evt, uae_u32);
extern void event2_newevent2 (evt, uae_u32, evfunc2);
extern void event2_remevent (int);
#if 0
#ifdef JIT
......
......@@ -15,6 +15,8 @@ extern unsigned int obtainedfreq;
/* Determine if we can produce any sound at all. This can be only a guess;
* if unsure, say yes. Any call to init_sound may change the value. */
extern int setup_sound (void);
extern int init_sound (void);
extern void close_sound (void);
......
......@@ -7,7 +7,6 @@
*/
extern int gui_init (void);
extern int gui_open (void);
extern int gui_update (void);
extern void gui_exit (void);
extern void gui_led (int, int);
......@@ -18,12 +17,9 @@ extern void gui_changesettings (void);
extern void gui_lock (void);
extern void gui_unlock (void);
extern void gui_flicker_led (int, int, int);
extern void gui_hd_led (int, int);
extern void gui_cd_led (int, int);
extern void gui_disk_image_change (int, const TCHAR *);
extern unsigned int gui_ledstate;
extern void gui_display (int shortcut);
extern void gui_notify_state (int state);
extern bool no_gui, quit_to_gui;
......
/*
* UAE - The Un*x Amiga Emulator
*
* Joystick, mouse and keyboard emulation prototypes and definitions
*
* Copyright 1995 Bernd Schmidt
* Copyright 2001-2002 Toni Wilen
*/
/*
* UAE - The Un*x Amiga Emulator
*
* Joystick, mouse and keyboard emulation prototypes and definitions
*
* Copyright 1995 Bernd Schmidt
* Copyright 2001-2002 Toni Wilen
*/
#define IDTYPE_JOYSTICK 0
......
......@@ -9,7 +9,7 @@
#define UAEMAJOR 2
#define UAEMINOR 2
#define UAESUBREV 0
#define UAESUBREV 1
typedef enum { KBD_LANG_US, KBD_LANG_DK, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang;
......@@ -191,8 +191,9 @@ struct uae_prefs {
int gfx_refreshrate;
int gfx_avsync, gfx_pvsync;
int gfx_resolution;
int gfx_vresolution;
int gfx_lores_mode;
int gfx_linedbl;
int gfx_scanlines;
int gfx_afullscreen, gfx_pfullscreen;
int gfx_xcenter, gfx_ycenter;
int gfx_xcenter_pos, gfx_ycenter_pos;
......
......@@ -18,7 +18,7 @@
#define UAEMAJOR 2
#define UAEMINOR 2
#define UAESUBREV 0
#define UAESUBREV 1
#define UAEVERSION (256*65536L*UAEMAJOR + 65536L*UAEMINOR + UAESUBREV)
......
......@@ -775,6 +775,8 @@ void do_leave_program (void)
void start_program (void)
{
//TODO: remove here!
gui_display (-1);
do_start_program ();
}
......@@ -811,7 +813,7 @@ static int real_main2 (int argc, TCHAR **argv)
fixup_prefs (&currprefs);
}
if (!graphics_setup ()) {
if (! graphics_setup ()) {
write_log ("Graphics Setup Failed\n");
exit (1);
}
......
/*
* E-UAE - The portable Amiga Emulator
*
* SCSI layer back-end for AmigaOS hosts
*
* Copyright 2005-2006 Richard Drummond
* 2005 Sigbjrn Skjret (68k/MorphOS device-scanning)
*/
/*
* E-UAE - The portable Amiga Emulator
*
* SCSI layer back-end for AmigaOS hosts
*
* Copyright 2005-2006 Richard Drummond
* 2005 Sigbjrn Skjret (68k/MorphOS device-scanning)
*/
#include "sysconfig.h"
#include "sysdeps.h"
......@@ -188,7 +188,7 @@ static int execscsicmd (struct IOContext *ioc, const uae_u8 *cmd_data, int cmd_l
DEBUG_LOG ("SCSIDEV: sending command: 0x%2x\n", cmd->scsi_Command[0]);
gui_cd_led (0, 1);
gui_flicker_led (LED_CD, 0, 0);
error = DoIO ((struct IORequest *)ioreq);
......@@ -284,7 +284,7 @@ static int execscsicmd_direct (int unitnum, uaecptr acmd)
DEBUG_LOG ("SCSIDEV: error: %d actual %d\n", io_error, cmd->scsi_Actual);
gui_cd_led (1);
gui_flicker_led (LED_CD, 0, 1);
put_long (acmd + 8, cmd->scsi_Actual);
put_word (acmd + 18, cmd->scsi_CmdActual);
......
......@@ -12,9 +12,9 @@ generated by GNU Autoconf 2.65. Invocation command line was
hostname = GnoStiC-dv7
uname -m = i686
uname -r = 2.6.32-22-generic
uname -r = 2.6.32-23-generic
uname -s = Linux
uname -v = #36-Ubuntu SMP Thu Jun 3 22:02:19 UTC 2010
uname -v = #37-Ubuntu SMP Fri Jun 11 07:54:58 UTC 2010
/usr/bin/uname -p = unknown
/bin/uname -X = unknown
......@@ -445,7 +445,7 @@ configure:4344: $? = 0
configure:4344: result: yes
configure:4350: checking for _doprnt
configure:4350: gcc -o conftest -g -O2 -Wall -W -Wno-unused conftest.c >&5
/tmp/ccRLmAmi.o: In function `main':
/tmp/ccJt8Zal.o: In function `main':
/home/gnostic/puaex/src/tools/conftest.c:67: undefined reference to `_doprnt'
collect2: ld returned 1 exit status
configure:4350: $? = 1
......@@ -533,7 +533,7 @@ configure:4364: $? = 0
configure:4364: result: yes
configure:4364: checking for strcmpi
configure:4364: gcc -o conftest -g -O2 -Wall -W -Wno-unused conftest.c >&5
/tmp/ccWAe3Gy.o: In function `main':
/tmp/ccmv4giy.o: In function `main':
/home/gnostic/puaex/src/tools/conftest.c:69: undefined reference to `strcmpi'
collect2: ld returned 1 exit status
configure:4364: $? = 1
......@@ -613,7 +613,7 @@ configure: failed program was:
configure:4364: result: no
configure:4364: checking for stricmp
configure:4364: gcc -o conftest -g -O2 -Wall -W -Wno-unused conftest.c >&5
/tmp/ccd6el6G.o: In function `main':
/tmp/cczfg0cD.o: In function `main':
/home/gnostic/puaex/src/tools/conftest.c:69: undefined reference to `stricmp'
collect2: ld returned 1 exit status
configure:4364: $? = 1
......
/*
* UAE - The Un*x Amiga Emulator
*
* Text-based user interface
* Sie haben es sich verdient!
*
* Copyright 1996 Tim Gunn, Bernd Schmidt
*/
/*
* UAE - The Un*x Amiga Emulator
*
* Text-based user interface
* Sie haben es sich verdient!
*
* Copyright 1996 Tim Gunn, Bernd Schmidt
*/
#include "sysconfig.h"
#include "sysdeps.h"
......@@ -36,10 +36,6 @@ void gui_led (int led, int on)
{
}
void gui_hd_led (int unitnum, int led)
{
}
void gui_filename (int num, const char *name)
{
}
......@@ -235,7 +231,7 @@ static void print_configuration (void)
tui_puts (tmp);
tui_gotoxy (OPTION_COLUMN+7, y++);
if (currprefs.gfx_linedbl)
if (currprefs.gfx_vresolution)
tui_puts ("Doubling lines, ");
/* if (currprefs.gfx_correct_aspect)
tui_puts ("Aspect corrected");
......@@ -470,11 +466,11 @@ static void VideoOptions (void)
currprefs.gfx_ycenter = (currprefs.gfx_ycenter + 1) % 3;
break;
case 7:
currprefs.gfx_linedbl = !currprefs.gfx_linedbl;
currprefs.gfx_vresolution = !currprefs.gfx_vresolution;
break;
case 8:
// currprefs.gfx_correct_aspect = !currprefs.gfx_correct_aspect;
break;
/* case 8:
currprefs.gfx_correct_aspect = !currprefs.gfx_correct_aspect;
break;*/
case 9:
currprefs.gfx_framerate++;
if (currprefs.gfx_framerate > 9)
......@@ -691,11 +687,6 @@ static int do_gui (int mode)
return 0;
}
int gui_open (void)
{
return do_gui (1);
}
int gui_update (void)
{
return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment