return false;
}
-void uae_abort (const TCHAR *format,...)
+static void uae_abort (const TCHAR *format,...)
{
static int nomore;
va_list parms;
outword[plane] = outval;
}
+#ifdef HAVE_UAE_U128
+/* uae_u128 is available, custom shift functions not necessary */
+#else
+
STATIC_INLINE void shift32plus (uae_u64 *p, int n)
{
uae_u64 t = p[1];
p[1] >>= n;
}
+#endif
+
STATIC_INLINE void long_fetch_64 (int plane, int nwords, int weird_number_of_bits, int dma)
{
uae_u32 *real_pt = (uae_u32 *)pfield_xlateptr (bplpt[plane], nwords * 2);
int delay = toscr_delay_adjusted[plane & 1];
int tmp_nbits = out_nbits;
+#ifdef HAVE_UAE_U128
+ uae_u128 shiftbuffer;
+#else
uae_u64 shiftbuffer[2];
+#endif
uae_u32 outval = outword[plane];
uae_u64 fetchval = fetched_aga[plane];
uae_u32 *dataptr = (uae_u32 *)(line_data[next_lineno] + 2 * plane * MAX_WORDS_PER_LINE + 4 * out_offs);
/* @@@ Don't do this, fall back on chipmem_wget instead. */
return;
+#ifdef HAVE_UAE_U128
+ shiftbuffer = todisplay2_aga[plane] << delay;
+#else
shiftbuffer[1] = 0;
shiftbuffer[0] = todisplay2_aga[plane];
aga_shift (shiftbuffer, delay);
+#endif
while (nwords > 0) {
int i;
+#ifdef HAVE_UAE_U128
+ shiftbuffer |= fetchval;
+#else
shiftbuffer[0] |= fetchval;
+#endif
for (i = 0; i < 4; i++) {
uae_u32 t;
int bits_left = 32 - tmp_nbits;
+#ifdef HAVE_UAE_U128
+ t = (shiftbuffer >> shift) & 0xffff;
+#else
if (64 - shift > 0) {
t = shiftbuffer[1] << (64 - shift);
t |= shiftbuffer[0] >> shift;
t = shiftbuffer[1] >> (shift - 64);
}
t &= 0xffff;
+#endif
if (weird_number_of_bits && bits_left < 16) {
outval <<= bits_left;
tmp_nbits = 0;
}
}
+#ifdef HAVE_UAE_U128
+ shiftbuffer <<= 16;
+#else
aga_shift (shiftbuffer, 16);
+#endif
}
nwords -= 4;
}
}
fetched_aga[plane] = fetchval;
+#ifdef HAVE_UAE_U128
+ todisplay2_aga[plane] = shiftbuffer >> delay;
+#else
aga_shift_n (shiftbuffer, delay);
todisplay2_aga[plane] = shiftbuffer[0];
+#endif
outword[plane] = outval;
}
#endif
{
init_hz (true);
}
+
void init_hz_normal (void)
{
init_hz (false);
#endif
}
-void INTREQ_nodelay (uae_u16 v)
+static void INTREQ_nodelay (uae_u16 v)
{
setclr (&intreq, v);
setclr (&intreq_internal, v);
int freetime;
extern int extraframewait;
-
+
if (!vblank_hz_state)
return status != 0;
}
{
- extern int volatile uaenet_int_requested;
- extern int volatile uaenet_vsync_requested;
if (uaenet_int_requested || (uaenet_vsync_requested && vpos == 10)) {
INTREQ (0x8000 | 0x0008);
}