mirror of
https://github.com/libretro/PUAE.git
synced 2025-02-16 22:09:40 +00:00
PUAE 2.6.0b16
This commit is contained in:
parent
d7f9ce1d4d
commit
9856d7fe1b
2
README
2
README
@ -47,7 +47,7 @@ See the docs/compiling.txt
|
||||
|
||||
i use
|
||||
imac, xcode 4.3.3, sdl 1.2.15, macosx 10.7.5
|
||||
macbook pro, xcode 4.5.2, sdl 1.2.15, macosx 10.8.2
|
||||
macbook pro, xcode 4.6, sdl 1.2.15, macosx 10.8.3
|
||||
(build_macos_cocoa)
|
||||
|
||||
|
||||
|
@ -3,13 +3,12 @@
|
||||
# 2006-2013 Mustafa TUFAN (aka GnoStiC/BRONX)
|
||||
#
|
||||
#
|
||||
#
|
||||
base=" --with-sdl --with-sdl-gl --with-sdl-gfx --with-sdl-sound --enable-drvsnd "
|
||||
cd32=" --enable-cd32 "
|
||||
a600=" --enable-gayle "
|
||||
scsi=" --enable-scsi-device --enable-ncr --enable-a2091 "
|
||||
other=" --with-caps --enable-amax --enable-gccopt --enable-serial-port "
|
||||
debug=""
|
||||
#debug="--enable-profiling"
|
||||
#
|
||||
#
|
||||
./bootstrap.sh
|
||||
|
@ -1,19 +0,0 @@
|
||||
# P-UAE
|
||||
#
|
||||
# 2006-2011 Mustafa TUFAN (aka GnoStiC/BRONX)
|
||||
#
|
||||
#
|
||||
#
|
||||
base=" --with-sdl --with-sdl-gl --with-sdl-gfx --with-sdl-sound --enable-drvsnd "
|
||||
cd32=" --enable-cd32 "
|
||||
a600=" --enable-gayle "
|
||||
scsi=" --enable-scsi-device --enable-ncr --enable-a2091 "
|
||||
other=" --with-caps --enable-amax --enable-serial-port "
|
||||
serial=" --enable-serial-port "
|
||||
#debug="--enable-profiling"
|
||||
#
|
||||
#
|
||||
./bootstrap.sh
|
||||
./configure $debug $serial $base $cd32 $a600 $scsi $other CFLAGS="-m32" LDFLAGS="-m32" CPPFLAGS="-m32"
|
||||
make clean
|
||||
make
|
@ -1,17 +0,0 @@
|
||||
# P-UAE
|
||||
#
|
||||
# 2006-2011 Mustafa TUFAN (aka GnoStiC/BRONX)
|
||||
#
|
||||
#
|
||||
#
|
||||
base=" --with-sdl --with-sdl-gl --with-sdl-gfx --with-sdl-sound --enable-drvsnd "
|
||||
cd32=" --enable-cd32 "
|
||||
a600=" --enable-gayle "
|
||||
scsi=" --enable-scsi-device --enable-ncr --enable-a2091 "
|
||||
other=" --with-caps --enable-amax "
|
||||
#
|
||||
#
|
||||
./bootstrap.sh
|
||||
./configure $base $cd32 $a600 $scsi $other --target=i586 CFLAGS="-m32" LDFLAGS="-m32" CPPFLAGS="-m32"
|
||||
make clean
|
||||
make
|
@ -333,7 +333,7 @@ extern int is_bitplane_dma (int hpos);
|
||||
STATIC_INLINE int canblit (int hpos)
|
||||
{
|
||||
if (!dmaen (DMA_BLITTER))
|
||||
return 0;
|
||||
return -1;
|
||||
if (is_bitplane_dma (hpos))
|
||||
return 0;
|
||||
if (cycle_line[hpos] & CYCLE_MASK)
|
||||
@ -711,7 +711,7 @@ static void decide_blitter_line (int hsync, int hpos)
|
||||
break;
|
||||
}
|
||||
|
||||
if (!v) {
|
||||
if (v <= 0) {
|
||||
blit_misscyclecounter++;
|
||||
blitter_nasty++;
|
||||
break;
|
||||
@ -1001,7 +1001,7 @@ static void do_startcycles (int hpos)
|
||||
while (vhpos < hpos) {
|
||||
int v = canblit (vhpos);
|
||||
vhpos++;
|
||||
if (v) {
|
||||
if (v >= 0) {
|
||||
blit_startcycles--;
|
||||
if (blit_startcycles == 0) {
|
||||
if (blit_faulty)
|
||||
@ -1070,7 +1070,7 @@ void decide_blitter (int hpos)
|
||||
}
|
||||
// idle cycles require free bus..
|
||||
// (CPU can still use this cycle)
|
||||
if (c == 0 && v == 0) {
|
||||
if ((c == 0 && v == 0) || v < 0) {
|
||||
blitter_nasty++;
|
||||
blit_misscyclecounter++;
|
||||
break;
|
||||
|
@ -935,6 +935,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
|
||||
cfgfile_write (f, _T("gfx_refreshrate"), _T("%d"), p->gfx_apmode[0].gfx_refreshrate);
|
||||
cfgfile_dwrite (f, _T("gfx_refreshrate_rtg"), _T("%d"), p->gfx_apmode[1].gfx_refreshrate);
|
||||
cfgfile_write_bool (f, _T("gfx_autoresolution"), p->gfx_autoresolution);
|
||||
cfgfile_dwrite (f, _T("gfx_autoresolution_delay"), _T("%d"), p->gfx_autoresolution_delay);
|
||||
cfgfile_dwrite (f, _T("gfx_autoresolution_min_vertical"), vertmode[p->gfx_autoresolution_minv + 1]);
|
||||
cfgfile_dwrite (f, _T("gfx_autoresolution_min_horizontal"), horizmode[p->gfx_autoresolution_minh + 1]);
|
||||
|
||||
@ -974,6 +975,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
|
||||
if (p->gfx_filtermask[i + MAX_FILTERSHADERS][0])
|
||||
cfgfile_write_str (f, _T("gfx_filtermask_post"), p->gfx_filtermask[i + MAX_FILTERSHADERS]);
|
||||
}
|
||||
cfgfile_dwrite_str (f, _T("gfx_filter_mask"), p->gfx_filtermask[2 * MAX_FILTERSHADERS - 1]);
|
||||
if (p->gfx_filtershader[0][0] && p->gfx_api) {
|
||||
cfgfile_dwrite (f, _T("gfx_filter"), _T("D3D:%s"), p->gfx_filtershader[0]);
|
||||
} else if (p->gfx_filter > 0) {
|
||||
@ -1015,7 +1017,6 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
|
||||
cfgfile_dwrite (f, _T("gfx_luminance"), _T("%d"), p->gfx_luminance);
|
||||
cfgfile_dwrite (f, _T("gfx_contrast"), _T("%d"), p->gfx_contrast);
|
||||
cfgfile_dwrite (f, _T("gfx_gamma"), _T("%d"), p->gfx_gamma);
|
||||
cfgfile_dwrite_str (f, _T("gfx_filter_mask"), p->gfx_filtermask[2 * MAX_FILTERSHADERS - 1]);
|
||||
if (p->gfx_filteroverlay[0]) {
|
||||
cfgfile_dwrite (f, _T("gfx_filter_overlay"), _T("%s%s"),
|
||||
p->gfx_filteroverlay, _tcschr (p->gfx_filteroverlay, ',') ? _T(",") : _T(""));
|
||||
@ -1662,6 +1663,7 @@ static int cfgfile_parse_host (struct uae_prefs *p, TCHAR *option, TCHAR *value)
|
||||
|| cfgfile_intval (option, value, _T("gfx_refreshrate"), &p->gfx_apmode[APMODE_NATIVE].gfx_refreshrate, 1)
|
||||
|| cfgfile_intval (option, value, _T("gfx_refreshrate_rtg"), &p->gfx_apmode[APMODE_RTG].gfx_refreshrate, 1)
|
||||
|| cfgfile_yesno (option, value, _T("gfx_autoresolution"), &p->gfx_autoresolution)
|
||||
|| cfgfile_intval (option, value, _T("gfx_autoresolution_delay"), &p->gfx_autoresolution_delay, 1)
|
||||
|| cfgfile_intval (option, value, _T("gfx_backbuffers"), &p->gfx_apmode[APMODE_NATIVE].gfx_backbuffers, 1)
|
||||
|| cfgfile_intval (option, value, _T("gfx_backbuffers_rtg"), &p->gfx_apmode[APMODE_RTG].gfx_backbuffers, 1)
|
||||
|| cfgfile_yesno (option, value, _T("gfx_interlace"), &p->gfx_apmode[APMODE_NATIVE].gfx_interlaced)
|
||||
@ -1999,6 +2001,25 @@ cfgfile_path (option, value, _T("floppy0soundext"), p->floppyslots[0].dfxclickex
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (_tcscmp (option, _T("gfx_filtermask_pre")) == 0 || _tcscmp (option, _T("gfx_filtermask_post")) == 0) {
|
||||
if (_tcscmp (option, _T("gfx_filtermask_pre")) == 0) {
|
||||
for (int i = 0; i < MAX_FILTERSHADERS; i++) {
|
||||
if (p->gfx_filtermask[i][0] == 0) {
|
||||
_tcscpy (p->gfx_filtermask[i], value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < MAX_FILTERSHADERS; i++) {
|
||||
if (p->gfx_filtermask[i + MAX_FILTERSHADERS][0] == 0) {
|
||||
_tcscpy (p->gfx_filtermask[i + MAX_FILTERSHADERS], value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (_tcscmp (option, _T("gfx_filter_pre")) == 0 || _tcscmp (option, _T("gfx_filter_post")) == 0) {
|
||||
TCHAR *s = _tcschr (value, ':');
|
||||
if (s) {
|
||||
|
30
src/custom.c
30
src/custom.c
@ -1997,8 +1997,9 @@ STATIC_INLINE void decide_line (int hpos)
|
||||
return;
|
||||
|
||||
if (fetch_state == fetch_not_started && (diwstate == DIW_waiting_stop || (currprefs.chipset_mask & CSMASK_ECS_AGNUS))) {
|
||||
int start = (currprefs.chipset_mask & CSMASK_ECS_AGNUS) ? plfstrt - 4 : HARD_DDF_START_REAL - 2;
|
||||
int ok = 0;
|
||||
if (last_decide_line_hpos < plfstrt_start && hpos >= plfstrt_start) {
|
||||
if (last_decide_line_hpos < start && hpos >= start) {
|
||||
if (plf_state == plf_idle || plf_state == plf_end)
|
||||
plf_state = plf_start;
|
||||
}
|
||||
@ -3308,27 +3309,18 @@ static void calcdiw (void)
|
||||
|
||||
plfstrt = ddfstrt;
|
||||
plfstop = ddfstop;
|
||||
|
||||
/* probably not the correct place.. should use plf_state instead */
|
||||
if (currprefs.chipset_mask & CSMASK_ECS_AGNUS) {
|
||||
if (!bpldmawasactive) {
|
||||
/* ECS/AGA and ddfstop > maxhpos == always-on display */
|
||||
if (plfstop > maxhpos)
|
||||
plfstrt = 0;
|
||||
if (plfstrt < HARD_DDF_START)
|
||||
plfstrt = HARD_DDF_START;
|
||||
plfstrt_start = plfstrt - 4;
|
||||
} else {
|
||||
plfstrt_start = plfstrt;
|
||||
}
|
||||
/* ECS/AGA and ddfstop > maxhpos == always-on display */
|
||||
if (plfstop > maxhpos)
|
||||
plfstrt = 0;
|
||||
if (plfstrt < HARD_DDF_START)
|
||||
plfstrt = HARD_DDF_START;
|
||||
} else {
|
||||
if (!bpldmawasactive) {
|
||||
/* OCS and ddfstrt >= ddfstop == ddfstop = max */
|
||||
if (plfstrt >= plfstop && plfstrt >= HARD_DDF_START)
|
||||
plfstop = 0xff;
|
||||
plfstrt_start = HARD_DDF_START_REAL - 2;
|
||||
} else {
|
||||
plfstrt_start = plfstrt;
|
||||
}
|
||||
/* OCS and ddfstrt >= ddfstop == ddfstop = max */
|
||||
if (plfstrt >= plfstop && plfstrt >= HARD_DDF_START)
|
||||
plfstop = 0xff;
|
||||
}
|
||||
diw_change = 2;
|
||||
}
|
||||
|
@ -712,7 +712,7 @@ STATIC_INLINE xcolnr getbgc (bool blank)
|
||||
return xcolors[0x0f0];
|
||||
else if (hposblank == 3)
|
||||
return xcolors[0x00f];
|
||||
else if ( colors_for_drawing.borderblank)
|
||||
else if (colors_for_drawing.borderblank)
|
||||
return xcolors[0x880];
|
||||
//return colors_for_drawing.acolors[0];
|
||||
return xcolors[0xf0f];
|
||||
@ -728,6 +728,7 @@ static void pfield_init_linetoscr (void)
|
||||
/* First, get data fetch start/stop in DIW coordinates. */
|
||||
int ddf_left = dp_for_drawing->plfleft * 2 + DIW_DDF_OFFSET;
|
||||
int ddf_right = dp_for_drawing->plfright * 2 + DIW_DDF_OFFSET;
|
||||
int leftborderhidden;
|
||||
|
||||
/* Compute datafetch start/stop in pixels; native display coordinates. */
|
||||
native_ddf_left = coord_hw_to_window_x (ddf_left);
|
||||
@ -744,11 +745,12 @@ static void pfield_init_linetoscr (void)
|
||||
|
||||
playfield_start = linetoscr_diw_start;
|
||||
playfield_end = linetoscr_diw_end;
|
||||
#if 0
|
||||
if (playfield_start < native_ddf_left)
|
||||
playfield_start = native_ddf_left;
|
||||
if (playfield_end > native_ddf_right)
|
||||
playfield_end = native_ddf_right;
|
||||
|
||||
#endif
|
||||
unpainted = visible_left_border < playfield_start ? 0 : visible_left_border - playfield_start;
|
||||
ham_src_pixel = MAX_PIXELS_PER_LINE + res_shift_from_window (playfield_start - native_ddf_left);
|
||||
unpainted = res_shift_from_window (unpainted);
|
||||
@ -776,6 +778,8 @@ static void pfield_init_linetoscr (void)
|
||||
if (end < playfield_start && end > linetoscr_diw_start) {
|
||||
playfield_start = end;
|
||||
can_have_bordersprite = true;
|
||||
} else {
|
||||
can_have_bordersprite = false;
|
||||
}
|
||||
} else {
|
||||
can_have_bordersprite = dp_for_drawing->bordersprite_seen;
|
||||
@ -822,7 +826,11 @@ static void pfield_init_linetoscr (void)
|
||||
ddf_left -= DISPLAY_LEFT_SHIFT;
|
||||
pixels_offset = MAX_PIXELS_PER_LINE - (ddf_left << bplres);
|
||||
ddf_left <<= bplres;
|
||||
src_pixel = MAX_PIXELS_PER_LINE + res_shift_from_window (playfield_start - native_ddf_left);
|
||||
|
||||
leftborderhidden = playfield_start - native_ddf_left;
|
||||
if (hblank_left_start > playfield_start)
|
||||
leftborderhidden += hblank_left_start - playfield_start;
|
||||
src_pixel = MAX_PIXELS_PER_LINE + res_shift_from_window (leftborderhidden);
|
||||
|
||||
if (dip_for_drawing->nr_sprites == 0)
|
||||
return;
|
||||
@ -1175,8 +1183,6 @@ static int NOINLINE linetoscr_16_shrink1f_sh (int spix, int dpix, int stoppos, i
|
||||
return spix;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int NOINLINE linetoscr_32_shrink2_sh (int spix, int dpix, int stoppos, int spr)
|
||||
{
|
||||
uae_u32 *buf = (uae_u32 *) xlinebuffer;
|
||||
@ -2281,7 +2287,9 @@ static void pfield_draw_line (int lineno, int gfx_ypos, int follow_ypos)
|
||||
* full line. */
|
||||
decode_ham (visible_left_border, visible_right_border, false);
|
||||
} else /* Argh. */ {
|
||||
int ohposblank = hposblank;
|
||||
do_color_changes (dummy_worker, decode_ham, lineno);
|
||||
hposblank = ohposblank;
|
||||
adjust_drawing_colors (dp_for_drawing->ctable, dp_for_drawing->ham_seen || bplehb);
|
||||
}
|
||||
bplham = dp_for_drawing->ham_at_start;
|
||||
@ -2484,7 +2492,6 @@ static void center_image (void)
|
||||
center_reset = false;
|
||||
}
|
||||
|
||||
#define FRAMES_UNTIL_RES_SWITCH 1
|
||||
static int frame_res_cnt;
|
||||
static void init_drawing_frame (void)
|
||||
{
|
||||
@ -2493,7 +2500,7 @@ static void init_drawing_frame (void)
|
||||
static int frame_res_old;
|
||||
|
||||
if (currprefs.gfx_autoresolution && frame_res >= 0 && frame_res_lace >= 0) {
|
||||
if (FRAMES_UNTIL_RES_SWITCH > 0 && frame_res_old == frame_res * 2 + frame_res_lace) {
|
||||
if (frame_res_cnt > 0 && frame_res_old == frame_res * 2 + frame_res_lace) {
|
||||
frame_res_cnt--;
|
||||
if (frame_res_cnt == 0) {
|
||||
int m = frame_res * 2 + frame_res_lace;
|
||||
@ -2543,11 +2550,13 @@ static void init_drawing_frame (void)
|
||||
}
|
||||
m++;
|
||||
}
|
||||
frame_res_cnt = FRAMES_UNTIL_RES_SWITCH;
|
||||
frame_res_cnt = currprefs.gfx_autoresolution_delay;
|
||||
}
|
||||
} else {
|
||||
frame_res_old = frame_res * 2 + frame_res_lace;
|
||||
frame_res_cnt = FRAMES_UNTIL_RES_SWITCH;
|
||||
frame_res_cnt = currprefs.gfx_autoresolution_delay;
|
||||
if (frame_res_cnt <= 0)
|
||||
frame_res_cnt = 1;
|
||||
}
|
||||
}
|
||||
frame_res = -1;
|
||||
@ -3185,7 +3194,7 @@ void reset_drawing (void)
|
||||
init_drawing_frame ();
|
||||
|
||||
notice_screen_contents_lost ();
|
||||
frame_res_cnt = FRAMES_UNTIL_RES_SWITCH;
|
||||
frame_res_cnt = currprefs.gfx_autoresolution_delay;
|
||||
lightpen_y1 = lightpen_y2 = -1;
|
||||
|
||||
reset_custom_limits ();
|
||||
|
16
src/gayle.c
16
src/gayle.c
@ -1497,10 +1497,18 @@ static int isa4000t (uaecptr addr)
|
||||
|
||||
static uae_u32 REGPARAM2 gayle_lget (uaecptr addr)
|
||||
{
|
||||
struct ide_hdf *ide = NULL;
|
||||
int ide_reg;
|
||||
uae_u32 v;
|
||||
#ifdef JIT
|
||||
special_mem |= S_READ;
|
||||
#endif
|
||||
ide_reg = get_gayle_ide_reg (addr, &ide);
|
||||
if (ide_reg == IDE_DATA) {
|
||||
v = ide_get_data (ide) << 16;
|
||||
v |= ide_get_data (ide);
|
||||
return v;
|
||||
}
|
||||
v = gayle_wget (addr) << 16;
|
||||
v |= gayle_wget (addr + 2);
|
||||
return v;
|
||||
@ -1538,9 +1546,17 @@ static uae_u32 REGPARAM2 gayle_bget (uaecptr addr)
|
||||
|
||||
static void REGPARAM2 gayle_lput (uaecptr addr, uae_u32 value)
|
||||
{
|
||||
struct ide_hdf *ide = NULL;
|
||||
int ide_reg;
|
||||
#ifdef JIT
|
||||
special_mem |= S_WRITE;
|
||||
#endif
|
||||
ide_reg = get_gayle_ide_reg (addr, &ide);
|
||||
if (ide_reg == IDE_DATA) {
|
||||
ide_put_data (ide, value >> 16);
|
||||
ide_put_data (ide, value & 0xffff);
|
||||
return;
|
||||
}
|
||||
gayle_wput (addr, value >> 16);
|
||||
gayle_wput (addr + 2, value & 0xffff);
|
||||
}
|
||||
|
@ -332,6 +332,7 @@ struct uae_prefs {
|
||||
struct wh gfx_size_win_xtra[6];
|
||||
struct wh gfx_size_fs_xtra[6];
|
||||
bool gfx_autoresolution;
|
||||
int gfx_autoresolution_delay;
|
||||
int gfx_autoresolution_minv, gfx_autoresolution_minh;
|
||||
bool gfx_scandoubler;
|
||||
struct apmode gfx_apmode[2];
|
||||
|
@ -4434,16 +4434,22 @@ int inputdevice_get_compatibility_input (struct uae_prefs *prefs, int index, int
|
||||
while (inputdevice_get_device_status (devnum) >= 0) {
|
||||
for (int j = 0; j < inputdevice_get_widget_num (devnum); j++) {
|
||||
for (int sub = 0; sub < MAX_INPUT_SUB_EVENT; sub++) {
|
||||
int port, k;
|
||||
int port, k, l;
|
||||
uae_u64 flags;
|
||||
bool ignore = false;
|
||||
int evtnum2 = inputdevice_get_mapping (devnum, j, &flags, &port, NULL, NULL, sub);
|
||||
if (port - 1 != index)
|
||||
continue;
|
||||
for (k = 0; axistable[k] >= 0; k++) {
|
||||
if (evtnum2 == axistable[k])
|
||||
break;
|
||||
for (k = 0; axistable[k] >= 0; k += 3) {
|
||||
if (evtnum2 == axistable[k] || evtnum2 == axistable[k + 1] || evtnum2 == axistable[k + 2]) {
|
||||
for (l = 0; inputlist[l] >= 0; l++) {
|
||||
if (inputlist[l] == axistable[k] || inputlist[l] == axistable[k + 1] || inputlist[l] == axistable[k + 1]) {
|
||||
ignore = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (axistable[k] < 0) {
|
||||
if (!ignore) {
|
||||
for (k = 0; inputlist[k] >= 0; k++) {
|
||||
if (evtnum2 == inputlist[k])
|
||||
break;
|
||||
|
@ -224,9 +224,7 @@ void fixup_prefs_dimensions (struct uae_prefs *prefs)
|
||||
ap->gfx_vflip = 1;
|
||||
if (!i && ap->gfx_backbuffers == 2)
|
||||
ap->gfx_vflip = 1;
|
||||
if (ap->gfx_vflip) {
|
||||
ap->gfx_strobo = prefs->lightboost_strobo;
|
||||
}
|
||||
ap->gfx_strobo = prefs->lightboost_strobo;
|
||||
} else {
|
||||
// legacy vsync: always wait for flip
|
||||
ap->gfx_vflip = -1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user