mirror of
https://github.com/LIV2/WinUAE.git
synced 2025-12-06 00:12:52 +00:00
imported winuaesrc1600b8.zip
This commit is contained in:
parent
32aa38ef51
commit
441e3d0126
0
archivers/7z/7zAlloc.c
Executable file → Normal file
0
archivers/7z/7zAlloc.c
Executable file → Normal file
0
archivers/7z/7zAlloc.h
Executable file → Normal file
0
archivers/7z/7zAlloc.h
Executable file → Normal file
0
archivers/7z/7zBuffer.c
Executable file → Normal file
0
archivers/7z/7zBuffer.c
Executable file → Normal file
0
archivers/7z/7zBuffer.h
Executable file → Normal file
0
archivers/7z/7zBuffer.h
Executable file → Normal file
0
archivers/7z/7zCrc.c
Executable file → Normal file
0
archivers/7z/7zCrc.c
Executable file → Normal file
0
archivers/7z/7zCrc.h
Executable file → Normal file
0
archivers/7z/7zCrc.h
Executable file → Normal file
0
archivers/7z/7zDecode.c
Executable file → Normal file
0
archivers/7z/7zDecode.c
Executable file → Normal file
0
archivers/7z/7zDecode.h
Executable file → Normal file
0
archivers/7z/7zDecode.h
Executable file → Normal file
0
archivers/7z/7zExtract.c
Executable file → Normal file
0
archivers/7z/7zExtract.c
Executable file → Normal file
0
archivers/7z/7zExtract.h
Executable file → Normal file
0
archivers/7z/7zExtract.h
Executable file → Normal file
0
archivers/7z/7zHeader.c
Executable file → Normal file
0
archivers/7z/7zHeader.c
Executable file → Normal file
0
archivers/7z/7zHeader.h
Executable file → Normal file
0
archivers/7z/7zHeader.h
Executable file → Normal file
0
archivers/7z/7zIn.c
Executable file → Normal file
0
archivers/7z/7zIn.c
Executable file → Normal file
0
archivers/7z/7zIn.h
Executable file → Normal file
0
archivers/7z/7zIn.h
Executable file → Normal file
0
archivers/7z/7zItem.c
Executable file → Normal file
0
archivers/7z/7zItem.c
Executable file → Normal file
0
archivers/7z/7zItem.h
Executable file → Normal file
0
archivers/7z/7zItem.h
Executable file → Normal file
0
archivers/7z/7zMain.c
Executable file → Normal file
0
archivers/7z/7zMain.c
Executable file → Normal file
0
archivers/7z/7zMethodID.c
Executable file → Normal file
0
archivers/7z/7zMethodID.c
Executable file → Normal file
0
archivers/7z/7zMethodID.h
Executable file → Normal file
0
archivers/7z/7zMethodID.h
Executable file → Normal file
0
archivers/7z/7zTypes.h
Executable file → Normal file
0
archivers/7z/7zTypes.h
Executable file → Normal file
0
archivers/7z/LzmaDecode.c
Executable file → Normal file
0
archivers/7z/LzmaDecode.c
Executable file → Normal file
0
archivers/7z/LzmaDecode.h
Executable file → Normal file
0
archivers/7z/LzmaDecode.h
Executable file → Normal file
0
archivers/7z/LzmaTypes.h
Executable file → Normal file
0
archivers/7z/LzmaTypes.h
Executable file → Normal file
0
archivers/dms/cdata.h
Executable file → Normal file
0
archivers/dms/cdata.h
Executable file → Normal file
0
archivers/dms/crc_csum.c
Executable file → Normal file
0
archivers/dms/crc_csum.c
Executable file → Normal file
0
archivers/dms/crc_csum.h
Executable file → Normal file
0
archivers/dms/crc_csum.h
Executable file → Normal file
0
archivers/dms/getbits.c
Executable file → Normal file
0
archivers/dms/getbits.c
Executable file → Normal file
0
archivers/dms/getbits.h
Executable file → Normal file
0
archivers/dms/getbits.h
Executable file → Normal file
0
archivers/dms/maketbl.c
Executable file → Normal file
0
archivers/dms/maketbl.c
Executable file → Normal file
0
archivers/dms/maketbl.h
Executable file → Normal file
0
archivers/dms/maketbl.h
Executable file → Normal file
0
archivers/dms/pfile.c
Executable file → Normal file
0
archivers/dms/pfile.c
Executable file → Normal file
0
archivers/dms/pfile.h
Executable file → Normal file
0
archivers/dms/pfile.h
Executable file → Normal file
0
archivers/dms/tables.c
Executable file → Normal file
0
archivers/dms/tables.c
Executable file → Normal file
0
archivers/dms/tables.h
Executable file → Normal file
0
archivers/dms/tables.h
Executable file → Normal file
0
archivers/dms/u_deep.c
Executable file → Normal file
0
archivers/dms/u_deep.c
Executable file → Normal file
0
archivers/dms/u_deep.h
Executable file → Normal file
0
archivers/dms/u_deep.h
Executable file → Normal file
0
archivers/dms/u_heavy.c
Executable file → Normal file
0
archivers/dms/u_heavy.c
Executable file → Normal file
0
archivers/dms/u_heavy.h
Executable file → Normal file
0
archivers/dms/u_heavy.h
Executable file → Normal file
0
archivers/dms/u_init.c
Executable file → Normal file
0
archivers/dms/u_init.c
Executable file → Normal file
0
archivers/dms/u_init.h
Executable file → Normal file
0
archivers/dms/u_init.h
Executable file → Normal file
0
archivers/dms/u_medium.c
Executable file → Normal file
0
archivers/dms/u_medium.c
Executable file → Normal file
0
archivers/dms/u_medium.h
Executable file → Normal file
0
archivers/dms/u_medium.h
Executable file → Normal file
0
archivers/dms/u_quick.c
Executable file → Normal file
0
archivers/dms/u_quick.c
Executable file → Normal file
0
archivers/dms/u_quick.h
Executable file → Normal file
0
archivers/dms/u_quick.h
Executable file → Normal file
0
archivers/dms/u_rle.c
Executable file → Normal file
0
archivers/dms/u_rle.c
Executable file → Normal file
0
archivers/dms/u_rle.h
Executable file → Normal file
0
archivers/dms/u_rle.h
Executable file → Normal file
0
archivers/lha/crcio.c
Executable file → Normal file
0
archivers/lha/crcio.c
Executable file → Normal file
0
archivers/lha/dhuf.c
Executable file → Normal file
0
archivers/lha/dhuf.c
Executable file → Normal file
0
archivers/lha/header.c
Executable file → Normal file
0
archivers/lha/header.c
Executable file → Normal file
0
archivers/lha/huf.c
Executable file → Normal file
0
archivers/lha/huf.c
Executable file → Normal file
0
archivers/lha/larc.c
Executable file → Normal file
0
archivers/lha/larc.c
Executable file → Normal file
0
archivers/lha/lha.h
Executable file → Normal file
0
archivers/lha/lha.h
Executable file → Normal file
0
archivers/lha/lha_macro.h
Executable file → Normal file
0
archivers/lha/lha_macro.h
Executable file → Normal file
0
archivers/lha/lhamaketbl.c
Executable file → Normal file
0
archivers/lha/lhamaketbl.c
Executable file → Normal file
0
archivers/lha/lharc.c
Executable file → Normal file
0
archivers/lha/lharc.c
Executable file → Normal file
0
archivers/lha/shuf.c
Executable file → Normal file
0
archivers/lha/shuf.c
Executable file → Normal file
0
archivers/lha/slide.c
Executable file → Normal file
0
archivers/lha/slide.c
Executable file → Normal file
0
archivers/lha/uae_lha.c
Executable file → Normal file
0
archivers/lha/uae_lha.c
Executable file → Normal file
0
archivers/lha/util.c
Executable file → Normal file
0
archivers/lha/util.c
Executable file → Normal file
0
archivers/lzx/unlzx.c
Executable file → Normal file
0
archivers/lzx/unlzx.c
Executable file → Normal file
0
archivers/wrp/warp.c
Executable file → Normal file
0
archivers/wrp/warp.c
Executable file → Normal file
0
archivers/wrp/warp.h
Executable file → Normal file
0
archivers/wrp/warp.h
Executable file → Normal file
0
archivers/xfd/main.c
Executable file → Normal file
0
archivers/xfd/main.c
Executable file → Normal file
0
archivers/xfd/xfd.c
Executable file → Normal file
0
archivers/xfd/xfd.c
Executable file → Normal file
0
archivers/xfd/xfdmaster.h
Executable file → Normal file
0
archivers/xfd/xfdmaster.h
Executable file → Normal file
0
archivers/zip/unzip.c
Executable file → Normal file
0
archivers/zip/unzip.c
Executable file → Normal file
0
archivers/zip/unzip.h
Executable file → Normal file
0
archivers/zip/unzip.h
Executable file → Normal file
0
autoconf.c
Executable file → Normal file
0
autoconf.c
Executable file → Normal file
15
blitter.c
Executable file → Normal file
15
blitter.c
Executable file → Normal file
@ -954,9 +954,18 @@ static void blit_bltset (int con)
|
||||
{
|
||||
int i;
|
||||
|
||||
blitdesc = bltcon1 & 2;
|
||||
|
||||
blt_info.blitashift = bltcon0 >> 12;
|
||||
blt_info.blitdownashift = 16 - blt_info.blitashift;
|
||||
blt_info.blitbshift = bltcon1 >> 12;
|
||||
blt_info.blitdownbshift = 16 - blt_info.blitbshift;
|
||||
|
||||
if (bltstate != BLT_done && con == 2)
|
||||
return;
|
||||
|
||||
blitline = bltcon1 & 1;
|
||||
blitfill = bltcon1 & 0x18;
|
||||
blitdesc = bltcon1 & 2;
|
||||
blit_ch = (bltcon0 & 0x0f00) >> 8;
|
||||
|
||||
if (blitline) {
|
||||
@ -992,10 +1001,6 @@ static void blit_bltset (int con)
|
||||
blit_nod = 0;
|
||||
}
|
||||
|
||||
blt_info.blitashift = bltcon0 >> 12;
|
||||
blt_info.blitdownashift = 16 - blt_info.blitashift;
|
||||
blt_info.blitbshift = bltcon1 >> 12;
|
||||
blt_info.blitdownbshift = 16 - blt_info.blitbshift;
|
||||
}
|
||||
|
||||
static void blit_modset (void)
|
||||
|
||||
0
bsdsocket.c
Executable file → Normal file
0
bsdsocket.c
Executable file → Normal file
0
build68k.c
Executable file → Normal file
0
build68k.c
Executable file → Normal file
0
catweasel.c
Executable file → Normal file
0
catweasel.c
Executable file → Normal file
0
cd32_fmv.c
Executable file → Normal file
0
cd32_fmv.c
Executable file → Normal file
4
cfgfile.c
Executable file → Normal file
4
cfgfile.c
Executable file → Normal file
@ -524,6 +524,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
|
||||
cfgfile_write (f, "gfx_lores=%s\n", p->gfx_resolution == 0 ? "true" : "false");
|
||||
cfgfile_write (f, "gfx_resolution=%s\n", lorestype1[p->gfx_resolution]);
|
||||
cfgfile_write (f, "gfx_lores_mode=%s\n", loresmode[p->gfx_lores_mode]);
|
||||
cfgfile_write (f, "gfx_flickerfixer=%s\n", p->gfx_scandoubler ? "true" : "false");
|
||||
cfgfile_write (f, "gfx_linemode=%s\n", linemode1[p->gfx_linedbl]);
|
||||
cfgfile_write (f, "gfx_fullscreen_amiga=%s\n", fullmodes[p->gfx_afullscreen]);
|
||||
cfgfile_write (f, "gfx_fullscreen_picasso=%s\n", fullmodes[p->gfx_pfullscreen]);
|
||||
@ -940,6 +941,7 @@ static int cfgfile_parse_host (struct uae_prefs *p, char *option, char *value)
|
||||
|| cfgfile_yesno (option, value, "gfx_vsync", &p->gfx_avsync)
|
||||
|| cfgfile_yesno (option, value, "gfx_vsync_picasso", &p->gfx_pvsync)
|
||||
|| cfgfile_yesno (option, value, "gfx_blacker_than_black", &p->gfx_blackerthanblack)
|
||||
|| cfgfile_yesno (option, value, "gfx_flickerfixer", &p->gfx_scandoubler)
|
||||
|| cfgfile_yesno (option, value, "show_leds", &p->leds_on_screen)
|
||||
|| cfgfile_yesno (option, value, "synchronize_clock", &p->tod_hack)
|
||||
|| cfgfile_yesno (option, value, "magic_mouse", &p->input_magic_mouse)
|
||||
@ -3013,7 +3015,7 @@ void default_prefs (struct uae_prefs *p, int type)
|
||||
p->gfx_filter_filtermode = 0;
|
||||
p->gfx_filter_scanlineratio = (1 << 4) | 1;
|
||||
p->gfx_filter_keep_aspect = 0;
|
||||
p->gfx_filter_autoscale = 1;
|
||||
p->gfx_filter_autoscale = 0;
|
||||
|
||||
strcpy (p->df[0], "df0.adf");
|
||||
strcpy (p->df[1], "df1.adf");
|
||||
|
||||
0
core.cw4.c
Executable file → Normal file
0
core.cw4.c
Executable file → Normal file
0
cpu_small.c
Executable file → Normal file
0
cpu_small.c
Executable file → Normal file
0
cpustbl_small.c
Executable file → Normal file
0
cpustbl_small.c
Executable file → Normal file
0
cputbl_small.h
Executable file → Normal file
0
cputbl_small.h
Executable file → Normal file
54
custom.c
Executable file → Normal file
54
custom.c
Executable file → Normal file
@ -141,6 +141,8 @@ static uae_u16 lof;
|
||||
static int next_lineno, prev_lineno;
|
||||
static enum nln_how nextline_how;
|
||||
static int lof_changed = 0;
|
||||
static int scandoubled_line;
|
||||
|
||||
/* Stupid genlock-detection prevention hack.
|
||||
* We should stop calling vsync_handler() and
|
||||
* hstop_handler() completely but it is not
|
||||
@ -392,6 +394,11 @@ STATIC_INLINE int nodraw (void)
|
||||
return !currprefs.cpu_cycle_exact && framecnt != 0;
|
||||
}
|
||||
|
||||
static int doflickerfix (void)
|
||||
{
|
||||
return currprefs.gfx_linedbl && doublescan < 0 && interlace_seen;
|
||||
}
|
||||
|
||||
uae_u32 get_copper_address (int copno)
|
||||
{
|
||||
switch (copno) {
|
||||
@ -2339,13 +2346,12 @@ STATIC_INLINE int color_changes_differ (struct draw_info *dip, struct draw_info
|
||||
|
||||
/* End of a horizontal scan line. Finish off all decisions that were not
|
||||
* made yet. */
|
||||
static void finish_decisions (void)
|
||||
static void finish_decisions (int hpos)
|
||||
{
|
||||
struct draw_info *dip;
|
||||
struct draw_info *dip_old;
|
||||
struct decision *dp;
|
||||
int changed;
|
||||
int hpos = current_hpos ();
|
||||
|
||||
if (nodraw ())
|
||||
return;
|
||||
@ -2452,7 +2458,7 @@ static void reset_decisions (void)
|
||||
fetch_state = fetch_not_started;
|
||||
|
||||
if (plfstate > plf_active)
|
||||
plfstate = plf_idle;
|
||||
plfstate = plf_idle;
|
||||
if (plfstate == plf_active && !(currprefs.chipset_mask & CSMASK_ECS_AGNUS))
|
||||
plfstate = plf_idle;
|
||||
|
||||
@ -2621,7 +2627,7 @@ void init_hz (void)
|
||||
eventtab[ev_hsync].evtime = get_cycles() + HSYNCTIME;
|
||||
events_schedule ();
|
||||
if (hzc) {
|
||||
interlace_seen = bplcon0 & 4;
|
||||
interlace_seen = (bplcon0 & 4) ? 1 : 0;
|
||||
reset_drawing ();
|
||||
}
|
||||
compute_vsynctime ();
|
||||
@ -4362,6 +4368,8 @@ static void do_sprites (int hpos)
|
||||
|
||||
if (vpos < sprite_vblank_endline)
|
||||
return;
|
||||
if (doflickerfix () && !(next_lineno & 1))
|
||||
return;
|
||||
|
||||
#ifndef CUSTOM_SIMPLE
|
||||
maxspr = hpos;
|
||||
@ -4753,27 +4761,28 @@ static void CIA_vsync_prehandler (int dotod)
|
||||
ciavsync_counter++;
|
||||
}
|
||||
|
||||
static uaecptr prevbpl[MAXVPOS][8];
|
||||
static void hsync_scandoubler (int line, int lof)
|
||||
static uaecptr prevbpl[2][MAXVPOS][8];
|
||||
static void hsync_scandoubler (int lof)
|
||||
{
|
||||
int i;
|
||||
uaecptr bpl[8];
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
bpl[i] = prevbpl[vpos][i];
|
||||
prevbpl[vpos][i] = bplpt[i];
|
||||
bplpt[i] = bpl[i];
|
||||
prevbpl[lof][vpos][i] = bplpt[i];
|
||||
bplpt[i] = prevbpl[1 - lof][vpos - lof][i];
|
||||
}
|
||||
|
||||
next_lineno++;
|
||||
scandoubled_line = 1;
|
||||
reset_decisions ();
|
||||
finish_decisions ();
|
||||
plfstate = plf_idle;
|
||||
finish_decisions (maxhpos);
|
||||
hsync_record_line_state (next_lineno, nln_normal, thisline_changed);
|
||||
hardware_line_completed (next_lineno);
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
bplpt[i] = prevbpl[vpos][i];
|
||||
}
|
||||
scandoubled_line = 0;
|
||||
next_lineno--;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
bplpt[i] = prevbpl[lof][vpos][i];
|
||||
}
|
||||
|
||||
static void hsync_handler (void)
|
||||
@ -4782,7 +4791,7 @@ static void hsync_handler (void)
|
||||
|
||||
if (!nocustom ()) {
|
||||
sync_copper_with_cpu (maxhpos, 0);
|
||||
finish_decisions ();
|
||||
finish_decisions (hpos);
|
||||
if (thisline_decision.plfleft != -1) {
|
||||
if (currprefs.collision_level > 1)
|
||||
do_sprite_collisions ();
|
||||
@ -4861,6 +4870,10 @@ static void hsync_handler (void)
|
||||
cycle_diagram_free_cycles[f_fetchmode][GET_RES (f_bplcon0)][GET_PLANES_LIMIT (f_bplcon0)]);
|
||||
}
|
||||
hardware_line_completed (next_lineno);
|
||||
if (doflickerfix ()) {
|
||||
hsync_scandoubler (lof ? 1 : 0);
|
||||
next_lineno++;
|
||||
}
|
||||
}
|
||||
|
||||
/* In theory only an equality test is needed here - but if a program
|
||||
@ -4921,13 +4934,14 @@ static void hsync_handler (void)
|
||||
if ((bplcon0 & 4) && currprefs.gfx_linedbl)
|
||||
notice_interlace_seen ();
|
||||
nextline_how = nln_normal;
|
||||
if (currprefs.gfx_linedbl && doublescan < 0) {
|
||||
if (doflickerfix ()) {
|
||||
lineno *= 2;
|
||||
hsync_scandoubler (lineno, lof);
|
||||
} else if (currprefs.gfx_linedbl && (doublescan == 0 || interlace_seen)) {
|
||||
if (!lof)
|
||||
lineno++;
|
||||
} else if (currprefs.gfx_linedbl && (doublescan <= 0 || interlace_seen > 0)) {
|
||||
lineno *= 2;
|
||||
nextline_how = currprefs.gfx_linedbl == 1 ? nln_doubled : nln_nblack;
|
||||
if ((bplcon0 & 4) || (interlace_seen && !lof)) {
|
||||
if ((bplcon0 & 4) || (interlace_seen > 0 && !lof)) {
|
||||
if (!lof) {
|
||||
lineno++;
|
||||
nextline_how = nln_lower;
|
||||
|
||||
2
debug.c
Executable file → Normal file
2
debug.c
Executable file → Normal file
@ -1035,6 +1035,8 @@ static void deepcheatsearch (char **c)
|
||||
addrcnt += size;
|
||||
cnt++;
|
||||
}
|
||||
if (cnt > 0)
|
||||
console_out ("\n");
|
||||
listcheater (1, size);
|
||||
} else {
|
||||
console_out ("Now continue with 'g' and use 'D' again after you have lost another life\n");
|
||||
|
||||
@ -1,4 +0,0 @@
|
||||
[ViewState]
|
||||
Mode=
|
||||
Vid=
|
||||
FolderType=NotSpecified
|
||||
25
disk.c
Executable file → Normal file
25
disk.c
Executable file → Normal file
@ -1148,7 +1148,7 @@ static int drive_running (drive * drv)
|
||||
return !drv->motoroff;
|
||||
}
|
||||
|
||||
static void motordelay_func(uae_u32 v)
|
||||
static void motordelay_func (uae_u32 v)
|
||||
{
|
||||
floppy[v].motordelay = 0;
|
||||
}
|
||||
@ -1177,7 +1177,7 @@ static void drive_motor (drive * drv, int off)
|
||||
write_log (" ->motor off");
|
||||
if (currprefs.cpu_model <= 68010 && currprefs.m68k_speed == 0) {
|
||||
drv->motordelay = 1;
|
||||
event2_newevent2(30, drv - floppy, motordelay_func);
|
||||
event2_newevent2 (30, drv - floppy, motordelay_func);
|
||||
}
|
||||
}
|
||||
drv->motoroff = off;
|
||||
@ -2123,7 +2123,7 @@ void DISK_check_change (void)
|
||||
if (drv->dskready_down_time > 0)
|
||||
drv->dskready_down_time--;
|
||||
/* emulate drive motor turn on time */
|
||||
if (drv->dskready_time && !drive_empty(drv)) {
|
||||
if (drv->dskready_time > 0 && !drive_empty(drv)) {
|
||||
drv->dskready_time--;
|
||||
if (drv->dskready_time == 0)
|
||||
drv->dskready = 1;
|
||||
@ -2270,15 +2270,18 @@ uae_u8 DISK_status (void)
|
||||
st &= ~0x20;
|
||||
}
|
||||
} else {
|
||||
/* report drive ID */
|
||||
if (drv->idbit && currprefs.dfxtype[dr] != DRV_35_DD_ESCOM)
|
||||
st &= ~0x20;
|
||||
/* dskrdy needs some cycles after switching the motor off.. (Pro Tennis Tour) */
|
||||
if (drv->motordelay) {
|
||||
write_log ("MOTORDELAY! %x\n", M68K_GETPC);
|
||||
st &= ~0x20;
|
||||
drv->motordelay = 0;
|
||||
if (currprefs.cs_df0idhw || dr > 0) {
|
||||
/* report drive ID */
|
||||
if (drv->idbit && currprefs.dfxtype[dr] != DRV_35_DD_ESCOM)
|
||||
st &= ~0x20;
|
||||
} else {
|
||||
/* non-ID internal drive: mirror real dskready */
|
||||
if (drv->dskready)
|
||||
st &= ~0x20;
|
||||
}
|
||||
/* dskrdy needs some cycles after switching the motor off.. (Pro Tennis Tour) */
|
||||
if (!currprefs.cs_df0idhw && dr == 0 && drv->motordelay)
|
||||
st &= ~0x20;
|
||||
}
|
||||
if (drive_track0 (drv))
|
||||
st &= ~0x10;
|
||||
|
||||
48
drawing.c
Executable file → Normal file
48
drawing.c
Executable file → Normal file
@ -215,7 +215,7 @@ uae_sem_t gui_sem;
|
||||
int inhibit_frame;
|
||||
|
||||
int framecnt = 0;
|
||||
int frame_redraw_necessary;
|
||||
static int frame_redraw_necessary;
|
||||
static int picasso_redraw_necessary;
|
||||
|
||||
#ifdef XLINECHECK
|
||||
@ -364,7 +364,7 @@ int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy)
|
||||
dx = 1;
|
||||
|
||||
dbl2 = dbl1 = currprefs.gfx_linedbl ? 1 : 0;
|
||||
if (doublescan && !interlace_seen) {
|
||||
if (doublescan && interlace_seen <= 0) {
|
||||
dbl1--;
|
||||
dbl2--;
|
||||
}
|
||||
@ -458,13 +458,13 @@ 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;
|
||||
if ((doublescan || interlace_seen) && !dbl) {
|
||||
if ((doublescan || interlace_seen > 0) && !dbl) {
|
||||
dbl1--;
|
||||
dbl2--;
|
||||
}
|
||||
if (interlace_seen)
|
||||
if (interlace_seen > 0)
|
||||
dbl2++;
|
||||
if (!interlace_seen && dbl)
|
||||
if (interlace_seen <= 0 && dbl)
|
||||
dbl2--;
|
||||
h = xshift (h, dbl1);
|
||||
dy = xshift (dy, dbl2);
|
||||
@ -1668,7 +1668,7 @@ static void init_aspect_maps (void)
|
||||
return;
|
||||
|
||||
linedbld = linedbl = currprefs.gfx_linedbl;
|
||||
if (doublescan > 0 && !interlace_seen) {
|
||||
if (doublescan > 0 && interlace_seen <= 0) {
|
||||
linedbl = 0;
|
||||
linedbld = 1;
|
||||
}
|
||||
@ -1932,7 +1932,9 @@ static void pfield_draw_line (int lineno, int gfx_ypos, int follow_ypos)
|
||||
|
||||
dp_for_drawing = line_decisions + lineno;
|
||||
dip_for_drawing = curr_drawinfo + lineno;
|
||||
switch (linestate[lineno]) {
|
||||
|
||||
switch (linestate[lineno])
|
||||
{
|
||||
case LINE_REMEMBERED_AS_PREVIOUS:
|
||||
if (!warned)
|
||||
write_log ("Shouldn't get here... this is a bug.\n"), warned++;
|
||||
@ -2216,7 +2218,7 @@ static void center_image (void)
|
||||
/* @@@ interlace_seen used to be (bplcon0 & 4), but this is probably
|
||||
* better. */
|
||||
if (prev_x_adjust != visible_left_border || prev_y_adjust != thisframe_y_adjust)
|
||||
frame_redraw_necessary |= (interlace_seen && linedbl) ? 2 : 1;
|
||||
frame_redraw_necessary |= (interlace_seen > 0 && linedbl) ? 2 : 1;
|
||||
|
||||
max_diwstop = 0;
|
||||
min_diwstart = 10000;
|
||||
@ -2633,40 +2635,40 @@ void finish_drawing_frame (void)
|
||||
for (i = 0; i < max_ypos_thisframe; i++) {
|
||||
int i1 = i + min_ypos_for_screen;
|
||||
int line = i + thisframe_y_adjust_real;
|
||||
int where;
|
||||
int where2;
|
||||
|
||||
if (linestate[line] == LINE_UNDECIDED)
|
||||
break;
|
||||
|
||||
where = amiga2aspect_line_map[i1];
|
||||
if (where >= gfxvidinfo.height)
|
||||
where2 = amiga2aspect_line_map[i1];
|
||||
if (where2 >= gfxvidinfo.height)
|
||||
break;
|
||||
if (where < 0)
|
||||
if (where2 < 0)
|
||||
continue;
|
||||
|
||||
pfield_draw_line (line, where, amiga2aspect_line_map[i1 + 1]);
|
||||
pfield_draw_line (line, where2, amiga2aspect_line_map[i1 + 1]);
|
||||
}
|
||||
|
||||
/* clear possible old garbage at the bottom if emulated area become smaller */
|
||||
for (i = last_max_ypos; i < gfxvidinfo.height; i++) {
|
||||
int i1 = i + min_ypos_for_screen;
|
||||
int line = i + thisframe_y_adjust_real;
|
||||
int where = amiga2aspect_line_map[i1];
|
||||
int where2 = amiga2aspect_line_map[i1];
|
||||
xcolnr tmp;
|
||||
|
||||
if (where >= gfxvidinfo.height)
|
||||
if (where2 >= gfxvidinfo.height)
|
||||
break;
|
||||
if (where < 0)
|
||||
if (where2 < 0)
|
||||
continue;
|
||||
tmp = colors_for_drawing.acolors[0];
|
||||
colors_for_drawing.acolors[0] = getxcolor (0);
|
||||
xlinebuffer = gfxvidinfo.linemem;
|
||||
if (xlinebuffer == 0)
|
||||
xlinebuffer = row_map[where];
|
||||
xlinebuffer = row_map[where2];
|
||||
xlinebuffer -= linetoscr_x_adjust_bytes;
|
||||
fill_line ();
|
||||
linestate[line] = LINE_UNDECIDED;
|
||||
do_flush_line (where);
|
||||
do_flush_line (where2);
|
||||
colors_for_drawing.acolors[0] = tmp;
|
||||
}
|
||||
|
||||
@ -2745,12 +2747,15 @@ void redraw_frame (void)
|
||||
void vsync_handle_redraw (int long_frame, int lof_changed)
|
||||
{
|
||||
last_redraw_point++;
|
||||
if (lof_changed || ! interlace_seen || last_redraw_point >= 2 || long_frame) {
|
||||
if (lof_changed || interlace_seen <= 0 || last_redraw_point >= 2 || long_frame || doublescan < 0) {
|
||||
last_redraw_point = 0;
|
||||
|
||||
if (framecnt == 0)
|
||||
finish_drawing_frame ();
|
||||
interlace_seen = 0;
|
||||
if (interlace_seen > 0)
|
||||
interlace_seen = -1;
|
||||
else if (interlace_seen == -1)
|
||||
interlace_seen = 0;
|
||||
|
||||
/* At this point, we have finished both the hardware and the
|
||||
* drawing frame. Essentially, we are outside of all loops and
|
||||
@ -2884,6 +2889,9 @@ static void gfxbuffer_reset (void)
|
||||
|
||||
void notice_interlace_seen (void)
|
||||
{
|
||||
// non-lace to lace switch (non-lace active at least one frame)?
|
||||
if (interlace_seen == 0)
|
||||
frame_redraw_necessary = 2;
|
||||
interlace_seen = 1;
|
||||
frame_res_lace = 1;
|
||||
}
|
||||
|
||||
0
driveclick.c
Executable file → Normal file
0
driveclick.c
Executable file → Normal file
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user