+//Hm, it seems that the OP needs to execute from zero, so let's try it:
+// And it works! But need to do some optimizations in the OP to keep it from attempting
+// to do a scanline render in the non-display area... [DONE]
+//this seems to cause a regression in certain games, like rayman
+//which means I have to dig thru the asic nets to see what's wrong...
+/*
+No, the OP doesn't start until VDB, that much is certain. The thing is, VDB is the
+HALF line that the OP starts on--which means that it needs to start at VDB / 2!!!
+
+Hrm, doesn't seem to be enough, though it should be... still sticks for 20 frames.
+
+
+What triggers this is writing $FFFF to VDE. This causes the OP start signal in VID to
+latch on, which in effect sets VDB to zero. So that much is correct. But the thing with
+Rayman is that it shouldn't cause the graphical glitches seen there, so still have to
+investigate what's going on there. By all rights, it shouldn't glitch because:
+
+00006C00: 0000000D 82008F73 (BRANCH) YPOS=494, CC=">", link=$00006C10
+00006C08: 000003FF 00008173 (BRANCH) YPOS=46, CC=">", link=$001FF800
+00006C10: 00000000 0000000C (STOP)
+001FF800: 12FC2BFF 02380000 (BITMAP)
+ 00008004 8180CFF1
+
+Even if the OP is running all the time, the link should tell it to stop at the right
+place (which it seems to do). But we still get glitchy screen.
+
+Seems the glitchy screen went away... Maybe the GPU alignment fixes fixed it???
+Just need to add the proper checking here then.
+
+Some numbers, courtesy of the Jaguar BIOS:
+// NTSC:
+VP, 523 // Vertical Period (1-based; in this case VP = 524)
+VBE, 24 // Vertical Blank End
+VDB, 38 // Vertical Display Begin
+VDE, 518 // Vertical Display End
+VBB, 500 // Vertical Blank Begin
+VS, 517 // Vertical Sync
+
+// PAL Jaguar
+VP, 623 // Vertical Period (1-based; in this case VP = 624)
+VBE, 34 // Vertical Blank End
+VDB, 38 // Vertical Display Begin
+VDE, 518 // Vertical Display End
+VBB, 600 // Vertical Blank Begin
+VS, 618 // Vertical Sync
+
+Numbers for KM, NTSC:
+KM: (Note that with VDE <= 507, the OP starts at VDB as expected)
+TOM: Vertical Display Begin written by M68K: 41
+TOM: Vertical Display End written by M68K: 2047
+TOM: Vertical Interrupt written by M68K: 491
+*/
+#if 1
+ // Initial values that "well behaved" programs use
+ uint16_t startingHalfline = GET16(tomRam8, VDB);
+ uint16_t endingHalfline = GET16(tomRam8, VDE);
+
+ // Simulate the OP start bug here!
+ // Really, this value is somewhere around 507 for an NTSC Jaguar. But this
+ // should work in a majority of cases, at least until we can figure it out properly.
+ if (endingHalfline > GET16(tomRam8, VP))
+ startingHalfline = 0;
+
+ if (halfline >= startingHalfline && halfline < endingHalfline)
+// if (halfline >= 0 && halfline < (uint16_t)GET16(tomRam8, VDE))
+// 16 isn't enough, and neither is 32 for raptgun. 32 fucks up Rayman
+// if (halfline >= ((uint16_t)GET16(tomRam8, VDB) / 2) && halfline < ((uint16_t)GET16(tomRam8, VDE) / 2))
+// if (halfline >= ((uint16_t)GET16(tomRam8, VDB) - 16) && halfline < (uint16_t)GET16(tomRam8, VDE))
+// if (halfline >= 20 && halfline < (uint16_t)GET16(tomRam8, VDE))
+// if (halfline >= (uint16_t)GET16(tomRam8, VDB) && halfline < (uint16_t)GET16(tomRam8, VDE))