//
// Originally by David Raingeard (cal2)
// GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
-// Cleanups and endian wrongness amelioration by James L. Hammons
+// Cleanups and endian wrongness amelioration by James Hammons
// (C) 2010 Underground Software
//
-// JLH = James L. Hammons <jlhamm@acm.org>
+// JLH = James Hammons <jlhamm@acm.org>
//
// Who When What
// --- ---------- -------------------------------------------------------------
#include "gpu.h"
#include "jaguar.h"
#include "log.h"
-#include "m68k.h"
+#include "m68000/m68kinterface.h"
//#include "memory.h"
#include "op.h"
#include "settings.h"
// Also note that VC is in *half* lines, i.e. divide by 2 to get the scanline
/*#define LEFT_VISIBLE_HC 208
#define RIGHT_VISIBLE_HC 1528//*/
-#define LEFT_VISIBLE_HC 208
-#define RIGHT_VISIBLE_HC 1488
+// These were right for Rayman, but that one is offset on a real TV too.
+//#define LEFT_VISIBLE_HC 208
+//#define RIGHT_VISIBLE_HC 1488
+// This is more like a real TV display...
+//#define LEFT_VISIBLE_HC (208 - 32)
+//#define RIGHT_VISIBLE_HC (1488 - 32)
+// Split the difference? (Seems to be OK for the most part...)
+#define LEFT_VISIBLE_HC (208 - 16)
+#define RIGHT_VISIBLE_HC (1488 - 16)
//#define TOP_VISIBLE_VC 25
//#define BOTTOM_VISIBLE_VC 503
#define TOP_VISIBLE_VC 31
//Are these PAL horizontals correct?
//They seem to be for the most part, but there are some games that seem to be
//shifted over to the right from this "window".
-#define LEFT_VISIBLE_HC_PAL 208
-#define RIGHT_VISIBLE_HC_PAL 1488
+#define LEFT_VISIBLE_HC_PAL (208 - 16)
+#define RIGHT_VISIBLE_HC_PAL (1488 - 16)
#define TOP_VISIBLE_VC_PAL 67
#define BOTTOM_VISIBLE_VC_PAL 579
//
void TOMExecHalfline(uint16 halfline, bool render)
{
+#warning "!!! Need to handle multiple fields properly !!!"
+ // We ignore the problem for now
+ halfline &= 0x7FF;
+
bool inActiveDisplayArea = true;
//Interlacing is still not handled correctly here... !!! FIX !!!
- if (halfline & 0x01) // Execute OP only on even lines (non-interlaced only!)
+ if (halfline & 0x01) // Execute OP only on even halflines (non-interlaced only!)
return;
//Hm, it seems that the OP needs to execute from zero, so let's try it:
// TOM reset code
// Now PAL friendly!
//
+/*
+The values in TOMReset come from the Jaguar BIOS.
+These values are from BJL:
+
+NSTC:
+CLK2 181
+HP 844
+HBB 1713
+HBE 125
+HS 1741
+HVS 651
+HEQ 784
+HDE 1696
+HDB1 166
+HDB2 166
+VP 523
+VEE 6
+VBE 24
+VDB 46
+VDE 496
+VBB 500
+VEB 511
+VS 517
+
+PAL:
+CLK2 226
+HP 850
+HBB 1711
+HBE 158
+HS 1749
+HVS 601
+HEQ 787
+HDE 1696
+HDB1 166
+HDB2 166
+VP 625
+VEE 6
+VBE 34
+VDB 46
+VDE 429
+VBB 600
+VEB 613
+VS 618
+*/
void TOMReset(void)
{
OPReset();