File screendragging.patch of Package uae-test

--- e-uae-0.8.29-20080820/src/picasso96.c.bak	2008-08-20 06:17:41.000000000 +0200
+++ e-uae-0.8.29-20080820/src/picasso96.c	2025-03-05 10:01:11.668025181 +0100
@@ -58,7 +58,7 @@
 
 int p96hack_vpos, p96hack_vpos2, p96refresh_active;
 
-#define P96TRACING_ENABLED 0
+#define P96TRACING_ENABLED 1
 #if P96TRACING_ENABLED
 #define P96TRACE(x)	do { write_log x; } while(0)
 #else
@@ -552,7 +552,7 @@
     int xoff = picasso96_state.XOffset;
     int yoff = picasso96_state.YOffset;
     uae_u8 *srcp, *dstp;
-
+//    if(picasso_vidinfo.splitypos>0 && height > picasso_vidinfo.splitypos) height=picasso_vidinfo.splitypos;
     /* Clipping.  */
     dstx -= xoff;
     dsty -= yoff;
@@ -725,6 +725,7 @@
 STATIC_INLINE void write_currline (uae_u8 *srcp, int line_no, int first_byte, int byte_count)
 {
     uae_u8 *dstp;
+//    if(picasso_vidinfo.splitypos>0 && line_no > picasso_vidinfo.splitypos) return;
 
     if ((dstp = gfx_lock_picasso ()) != 0) {
 	int Bpp = GetBytesPerPixel (picasso_vidinfo.rgbformat);
@@ -762,6 +763,7 @@
 static void flush_currline (void)
 {
     int line_no = currline_y - picasso96_state.YOffset;
+//    if(picasso_vidinfo.splitypos>0 && line_no > picasso_vidinfo.splitypos) return;
 
     /* We only need to flush this line to the screen if the line
      * is acutally visible on screen */
@@ -858,6 +860,13 @@
 	    height = picasso96_state.Height;
 	}
 
+	write_log ("P96: picasso_refresh() called\n");if(picasso_vidinfo.splitypos >= 0) {
+	    do_blit (&ri, picasso96_state.BytesPerPixel, 0, 0, 0, 0, width,
+		 picasso_vidinfo.splitypos+1, BLIT_SRC, 0);
+//	    ri.Memory = (picasso96_state.Address - gfxmem_start);
+	    do_blit (&ri, picasso96_state.BytesPerPixel, 0, 0, 0, picasso_vidinfo.splitypos, width,
+		 height-picasso_vidinfo.splitypos-1, BLIT_SRC, 0);
+	} else
 	do_blit (&ri, picasso96_state.BytesPerPixel, 0, 0, 0, 0, width,
 		 height, BLIT_SRC, 0);
     } else
@@ -880,7 +882,7 @@
     unsigned long linewidth = (total_width + 15) & ~15;
     unsigned long lines;
 /*    int can_do_visible_blit = 0; */
-
+    //if(picasso_vidinfo.splitypos>0 && height > picasso_vidinfo.splitypos) height=picasso_vidinfo.splitypos;
     src = ri->Memory + srcx*Bpp + srcy*ri->BytesPerRow;
     dst = dstri->Memory + dstx*Bpp + dsty*dstri->BytesPerRow;
 
@@ -2837,6 +2839,20 @@
     return result;
 }
 
+uae_u32 REGPARAM2 picasso_SetSplitPosition(struct regstruct *regs)
+{
+    uaecptr bi = m68k_areg(regs, 0);
+    uae_s16 pos = m68k_dreg (regs, 0);
+    put_word(bi + PSSO_BoardInfo_YSplit, pos);
+    pos--;
+    write_log ("P96: SetSplitPosition() old:%d new:%d\n", picasso_vidinfo.splitypos, pos);
+    if (pos != picasso_vidinfo.splitypos) {
+        picasso_vidinfo.splitypos = pos;
+//        full_refresh = 1;
+    }
+    return 1;
+}
+
 
 
 /* @@@ - Work to be done here!
@@ -2882,6 +2884,7 @@
  */
 STATIC_INLINE void flush_write (uaecptr addr, uae_u8 size)
 {
+write_log ("P96: flush_write() called\n");
     if (picasso_on) {
 	/* Is this data on the same framebuffer line as previous
 	 * successive writes? */
--- e-uae-0.8.29-20080820/src/include/picasso96.h.bak   2007-02-16 22:44:19.000000000 +0100                                                                                         
+++ e-uae-0.8.29-20080820/src/include/picasso96.h       2025-03-05 11:42:28.087015441 +0100                                                                                         
@@ -409,6 +409,26 @@                                                                                                                                                                
 #define PSSO_BoardInfo_MouseChunky		   PSSO_BoardInfo_MouseRect + 8 /* MouseRect is 8-bytes */
 #define PSSO_BoardInfo_MouseRendered		   PSSO_BoardInfo_MouseChunky + 4
 #define PSSO_BoardInfo_MouseSaveBuffer		   PSSO_BoardInfo_MouseRendered + 4
+#define PSSO_BoardInfo_ChipData		   PSSO_BoardInfo_MouseSaveBuffer + 4
+#define PSSO_BoardInfo_CardData		   PSSO_BoardInfo_ChipData + 16 * 4
+#define PSSO_BoardInfo_MemorySpaceBase		   PSSO_BoardInfo_CardData + 16 * 4
+#define PSSO_BoardInfo_MemorySpaceSize		   PSSO_BoardInfo_MemorySpaceBase + 4
+#define PSSO_BoardInfo_DoubleBufferList		   PSSO_BoardInfo_MemorySpaceSize + 4
+#define PSSO_BoardInfo_SyncTime		   PSSO_BoardInfo_DoubleBufferList + 4
+#define PSSO_BoardInfo_SyncPeriod		   PSSO_BoardInfo_SyncTime + 4
+#define PSSO_BoardInfo_SoftVBlankPort		   PSSO_BoardInfo_SyncPeriod + 8
+#define PSSO_BoardInfo_WaitQ			   PSSO_BoardInfo_SoftVBlankPort + 34
+#define PSSO_BoardInfo_EssentialFormats		   PSSO_BoardInfo_WaitQ + 3 * 4
+#define PSSO_BoardInfo_MouseImageBuffer		   PSSO_BoardInfo_EssentialFormats + 4
+#define PSSO_BoardInfo_BackViewPort		   PSSO_BoardInfo_MouseImageBuffer + 4
+#define PSSO_BoardInfo_BackBitMap		   PSSO_BoardInfo_BackViewPort + 4
+#define PSSO_BoardInfo_BackBitMapExtra		   PSSO_BoardInfo_BackBitMap + 4
+#define PSSO_BoardInfo_YSplit			   PSSO_BoardInfo_BackBitMapExtra + 4
+#define PSSO_BoardInfo_MaxPlanarMemory		   PSSO_BoardInfo_YSplit + 2
+#define PSSO_BoardInfo_MaxBMWidth		   PSSO_BoardInfo_MaxPlanarMemory + 4
+#define PSSO_BoardInfo_MaxBMHeight		   PSSO_BoardInfo_MaxBMWidth + 4
+#define PSSO_BoardInfo_SecondaryCLUT		   PSSO_BoardInfo_MaxBMHeight + 4
+#define PSSO_BoardInfo_SizeOf			   PSSO_BoardInfo_SecondaryCLUT + 3 * 256
 
 struct BoardInfo {
     uae_u8 *RegisterBase, *MemoryBase, *MemoryIOBase;
@@ -524,6 +544,7 @@                                                                                                                                                                 
 extern uae_u32 picasso_BlitTemplate           (struct regstruct *regs) REGPARAM;
 extern uae_u32 picasso_BlitPattern            (struct regstruct *regs) REGPARAM;
 extern uae_u32 picasso_BlitRectNoMaskComplete (struct regstruct *regs) REGPARAM;
+extern uae_u32 picasso_SetSplitPosition       (struct regstruct *regs) REGPARAM;
 
 extern uae_u32 gfxmem_mask;
 extern uae_u8 *gfxmemory;
@@ -562,6 +583,7 @@
     uae_u32 rgbformat;
     uae_u32 selected_rgbformat;
     uae_u32 clut[256];
+    uae_s16 splitypos;
 };
 
 extern struct picasso_vidbuf_description picasso_vidinfo;
--- e-uae-0.8.29-20080820/src/uaelib.c.bak      2008-06-04 03:38:56.000000000 +0200
+++ e-uae-0.8.29-20080820/src/uaelib.c  2025-03-05 09:51:36.906766504 +0100
@@ -415,6 +415,7 @@
      case 39: return picasso_SetSpriteColor (&context->regs);
 #endif
 //     case 40: return picasso_DrawLine ();
+     case 41: return picasso_SetSplitPosition (&context->regs);
 #endif
      case 68: return emulib_Minimize ();
      case 69: return emulib_ExecuteNativeCode (&context->regs);
openSUSE Build Service is sponsored by