Commit 397698e3 authored by GnoStiC's avatar GnoStiC

puae 2.3.1

parent c356c142
...@@ -1184,7 +1184,7 @@ static void setirq (int nr, int which) ...@@ -1184,7 +1184,7 @@ static void setirq (int nr, int which)
{ {
struct audio_channel_data *cdp = audio_channel + nr; struct audio_channel_data *cdp = audio_channel + nr;
#if DEBUG_AUDIO > 0 #if DEBUG_AUDIO > 0
if (debugchannel (nr)) if (debugchannel (nr) && cdp->wlen > 1)
write_log ("SETIRQ%d (%d,%d) PC=%08X\n", nr, which, isirq (nr) ? 1 : 0, M68K_GETPC); write_log ("SETIRQ%d (%d,%d) PC=%08X\n", nr, which, isirq (nr) ? 1 : 0, M68K_GETPC);
#endif #endif
INTREQ_0 (0x8000 | (0x80 << nr)); INTREQ_0 (0x8000 | (0x80 << nr));
...@@ -1215,7 +1215,7 @@ STATIC_INLINE void setdr (int nr) ...@@ -1215,7 +1215,7 @@ STATIC_INLINE void setdr (int nr)
if (cdp->wlen == 1) { if (cdp->wlen == 1) {
cdp->dsr = true; cdp->dsr = true;
#if DEBUG_AUDIO > 0 #if DEBUG_AUDIO > 0
if (debugchannel (nr)) if (debugchannel (nr) && cdp->wlen > 1)
write_log ("DSR%d PT=%08X PC=%08X\n", nr, cdp->pt, M68K_GETPC); write_log ("DSR%d PT=%08X PC=%08X\n", nr, cdp->pt, M68K_GETPC);
#endif #endif
} }
...@@ -1841,7 +1841,7 @@ void AUDxDAT (int nr, uae_u16 v, uaecptr addr) ...@@ -1841,7 +1841,7 @@ void AUDxDAT (int nr, uae_u16 v, uaecptr addr)
if (sampleripper_enabled) if (sampleripper_enabled)
do_samplerip (cdp); do_samplerip (cdp);
#if DEBUG_AUDIO > 0 #if DEBUG_AUDIO > 0
if (debugchannel (nr)) if (debugchannel (nr) && cdp->wlen > 1)
write_log ("AUD%d looped, IRQ=%d, LC=%08X LEN=%d\n", nr, isirq (nr) ? 1 : 0, cdp->pt, cdp->wlen); write_log ("AUD%d looped, IRQ=%d, LC=%08X LEN=%d\n", nr, isirq (nr) ? 1 : 0, cdp->pt, cdp->wlen);
#endif #endif
} else { } else {
......
...@@ -815,6 +815,12 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type) ...@@ -815,6 +815,12 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
cfgfile_dwrite (f, "gfx_filter_overlay", "%s%s", cfgfile_dwrite (f, "gfx_filter_overlay", "%s%s",
p->gfx_filteroverlay, _tcschr (p->gfx_filteroverlay, ',') ? "," : ""); p->gfx_filteroverlay, _tcschr (p->gfx_filteroverlay, ',') ? "," : "");
} }
cfgfile_dwrite (f, "gfx_center_horizontal_position", "%d", p->gfx_xcenter_pos);
cfgfile_dwrite (f, "gfx_center_vertical_position", "%d", p->gfx_ycenter_pos);
cfgfile_dwrite (f, "gfx_center_horizontal_size", "%d", p->gfx_xcenter_size);
cfgfile_dwrite (f, "gfx_center_vertical_size", "%d", p->gfx_ycenter_size);
#endif #endif
cfgfile_write_bool (f, "immediate_blits", p->immediate_blits); cfgfile_write_bool (f, "immediate_blits", p->immediate_blits);
...@@ -3663,8 +3669,10 @@ void default_prefs (struct uae_prefs *p, int type) ...@@ -3663,8 +3669,10 @@ void default_prefs (struct uae_prefs *p, int type)
p->gfx_afullscreen = GFX_WINDOW; p->gfx_afullscreen = GFX_WINDOW;
p->gfx_pfullscreen = GFX_WINDOW; p->gfx_pfullscreen = GFX_WINDOW;
p->gfx_xcenter = 0; p->gfx_ycenter = 0; p->gfx_xcenter = 0; p->gfx_ycenter = 0;
p->gfx_xcenter_pos = -1; p->gfx_ycenter_pos = -1; p->gfx_xcenter_pos = -1;
p->gfx_xcenter_size = -1; p->gfx_ycenter_size = -1; p->gfx_ycenter_pos = -1;
p->gfx_xcenter_size = -1;
p->gfx_ycenter_size = -1;
p->gfx_max_horizontal = RES_HIRES; p->gfx_max_horizontal = RES_HIRES;
p->gfx_max_vertical = VRES_DOUBLE; p->gfx_max_vertical = VRES_DOUBLE;
p->color_mode = 2; p->color_mode = 2;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* *
* Copyright 1995-2002 Bernd Schmidt * Copyright 1995-2002 Bernd Schmidt
* Copyright 1995 Alessandro Bissacco * Copyright 1995 Alessandro Bissacco
* Copyright 2000-2010 Toni Wilen * Copyright 2000-2011 Toni Wilen
*/ */
#include "sysconfig.h" #include "sysconfig.h"
...@@ -1912,9 +1912,10 @@ static void record_color_change (int hpos, int regno, unsigned long value) ...@@ -1912,9 +1912,10 @@ static void record_color_change (int hpos, int regno, unsigned long value)
if (thisline_decision.ctable == -1) if (thisline_decision.ctable == -1)
remember_ctable (); remember_ctable ();
if (regno < 0x1000 && hpos < HBLANK_OFFSET && !(beamcon0 & 0x80) && prev_lineno >= 0) { if ((regno < 0x1000 || regno == 0x1000 + 0x10c) && hpos < HBLANK_OFFSET && !(beamcon0 & 0x80) && prev_lineno >= 0) {
struct draw_info *pdip = curr_drawinfo + prev_lineno; struct draw_info *pdip = curr_drawinfo + prev_lineno;
int idx = pdip->last_color_change; int idx = pdip->last_color_change;
int extrahpos = regno == 0x1000 + 0x10c ? 1 : 0;
bool lastsync = false; bool lastsync = false;
/* Move color changes in horizontal cycles 0 to HBLANK_OFFSET to end of previous line. /* Move color changes in horizontal cycles 0 to HBLANK_OFFSET to end of previous line.
* Cycles 0 to HBLANK_OFFSET are visible in right border on real Amigas. (because of late hsync) * Cycles 0 to HBLANK_OFFSET are visible in right border on real Amigas. (because of late hsync)
...@@ -1925,7 +1926,7 @@ static void record_color_change (int hpos, int regno, unsigned long value) ...@@ -1925,7 +1926,7 @@ static void record_color_change (int hpos, int regno, unsigned long value)
} }
pdip->last_color_change++; pdip->last_color_change++;
pdip->nr_color_changes++; pdip->nr_color_changes++;
curr_color_changes[idx].linepos = (hpos + maxhpos) * 2; curr_color_changes[idx].linepos = (hpos + maxhpos) * 2 + extrahpos;
curr_color_changes[idx].regno = regno; curr_color_changes[idx].regno = regno;
curr_color_changes[idx].value = value; curr_color_changes[idx].value = value;
if (lastsync) { if (lastsync) {
...@@ -3484,6 +3485,13 @@ static void INTENA (uae_u16 v) ...@@ -3484,6 +3485,13 @@ static void INTENA (uae_u16 v)
} }
} }
void INTREQ_nodelay (uae_u16 v)
{
setclr (&intreq, v);
setclr (&intreq_internal, v);
doint ();
}
void INTREQ_f (uae_u16 v) void INTREQ_f (uae_u16 v)
{ {
if (use_eventmode (v)) { if (use_eventmode (v)) {
......
...@@ -2111,8 +2111,10 @@ static void gen_opcode (unsigned long int opcode) ...@@ -2111,8 +2111,10 @@ static void gen_opcode (unsigned long int opcode)
fill_prefetch_next (); fill_prefetch_next ();
printf ("\tcpureset ();\n"); printf ("\tcpureset ();\n");
addcycles000 (128); addcycles000 (128);
if (using_prefetch) if (using_prefetch) {
printf ("\tregs.irc = %s (4);\n", srcwi); printf ("\tregs.irc = %s (4);\n", srcwi);
m68k_pc_offset = 0;
}
break; break;
case i_NOP: case i_NOP:
fill_prefetch_next (); fill_prefetch_next ();
......
...@@ -357,7 +357,6 @@ uae_u32 REGPARAM2 chipmem_wget_ce2 (uaecptr addr) ...@@ -357,7 +357,6 @@ uae_u32 REGPARAM2 chipmem_wget_ce2 (uaecptr addr)
m = (uae_u16 *)(chipmemory + addr); m = (uae_u16 *)(chipmemory + addr);
ce2_timeout (); ce2_timeout ();
v = do_get_mem_word (m); v = do_get_mem_word (m);
//last_custom_value = v;
return v; return v;
} }
...@@ -394,7 +393,6 @@ void REGPARAM2 chipmem_wput_ce2 (uaecptr addr, uae_u32 w) ...@@ -394,7 +393,6 @@ void REGPARAM2 chipmem_wput_ce2 (uaecptr addr, uae_u32 w)
addr &= chipmem_mask; addr &= chipmem_mask;
m = (uae_u16 *)(chipmemory + addr); m = (uae_u16 *)(chipmemory + addr);
ce2_timeout (); ce2_timeout ();
//last_custom_value = w;
do_put_mem_word (m, w); do_put_mem_word (m, w);
} }
...@@ -426,7 +424,6 @@ uae_u32 REGPARAM2 chipmem_wget (uaecptr addr) ...@@ -426,7 +424,6 @@ uae_u32 REGPARAM2 chipmem_wget (uaecptr addr)
addr &= chipmem_mask; addr &= chipmem_mask;
m = (uae_u16 *)(chipmemory + addr); m = (uae_u16 *)(chipmemory + addr);
v = do_get_mem_word (m); v = do_get_mem_word (m);
//last_custom_value = v;
return v; return v;
} }
...@@ -435,7 +432,6 @@ uae_u32 REGPARAM2 chipmem_bget (uaecptr addr) ...@@ -435,7 +432,6 @@ uae_u32 REGPARAM2 chipmem_bget (uaecptr addr)
uae_u8 v; uae_u8 v;
addr &= chipmem_mask; addr &= chipmem_mask;
v = chipmemory[addr]; v = chipmemory[addr];
//last_custom_value = (v << 8) | v;
return v; return v;
} }
...@@ -454,14 +450,12 @@ void REGPARAM2 chipmem_wput (uaecptr addr, uae_u32 w) ...@@ -454,14 +450,12 @@ void REGPARAM2 chipmem_wput (uaecptr addr, uae_u32 w)
addr &= chipmem_mask; addr &= chipmem_mask;
m = (uae_u16 *)(chipmemory + addr); m = (uae_u16 *)(chipmemory + addr);
//last_custom_value = w;
do_put_mem_word (m, w); do_put_mem_word (m, w);
} }
void REGPARAM2 chipmem_bput (uaecptr addr, uae_u32 b) void REGPARAM2 chipmem_bput (uaecptr addr, uae_u32 b)
{ {
addr &= chipmem_mask; addr &= chipmem_mask;
//last_custom_value = (b << 8) | b;
chipmemory[addr] = b; chipmemory[addr] = b;
} }
......
...@@ -2895,7 +2895,7 @@ unsigned long REGPARAM2 op_illg (uae_u32 opcode) ...@@ -2895,7 +2895,7 @@ unsigned long REGPARAM2 op_illg (uae_u32 opcode)
if ((opcode & 0xF000) == 0xF000) { if ((opcode & 0xF000) == 0xF000) {
if (warned < 20) { if (warned < 20) {
//write_log ("B-Trap %x at %x (%p)\n", opcode, pc, regs.pc_p); //write_log ("B-Trap %x at %x (%p)\n", opcode, pc, regs.pc_p);
warned++; //warned++;
} }
Exception (0xB); Exception (0xB);
//activate_debugger (); //activate_debugger ();
...@@ -2904,14 +2904,14 @@ unsigned long REGPARAM2 op_illg (uae_u32 opcode) ...@@ -2904,14 +2904,14 @@ unsigned long REGPARAM2 op_illg (uae_u32 opcode)
if ((opcode & 0xF000) == 0xA000) { if ((opcode & 0xF000) == 0xA000) {
if (warned < 20) { if (warned < 20) {
//write_log ("A-Trap %x at %x (%p)\n", opcode, pc, regs.pc_p); //write_log ("A-Trap %x at %x (%p)\n", opcode, pc, regs.pc_p);
warned++; //warned++;
} }
Exception (0xA); Exception (0xA);
//activate_debugger(); //activate_debugger();
return 4; return 4;
} }
if (warned < 20) { if (warned < 20) {
//write_log ("Illegal instruction: %04x at %08X -> %08X\n", opcode, pc, get_long (regs.vbr + 0x10)); write_log ("Illegal instruction: %04x at %08X -> %08X\n", opcode, pc, get_long (regs.vbr + 0x10));
warned++; warned++;
//activate_debugger(); //activate_debugger();
} }
...@@ -3064,7 +3064,7 @@ void mmu_op30 (uaecptr pc, uae_u32 opcode, uae_u16 extra, uaecptr extraa) ...@@ -3064,7 +3064,7 @@ void mmu_op30 (uaecptr pc, uae_u32 opcode, uae_u16 extra, uaecptr extraa)
void mmu_op (uae_u32 opcode, uae_u32 extra) void mmu_op (uae_u32 opcode, uae_u32 extra)
{ {
if (currprefs.cpu_model) { if (currprefs.cpu_model) {
#if MMU #ifdef MMU
mmu_op_real (opcode, extra); mmu_op_real (opcode, extra);
return; return;
#endif #endif
......
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