menu bg, pc linux build
[libpicofe.git] / gp2x / gp2x.c
index b02a685..0d0017b 100644 (file)
@@ -59,27 +59,45 @@ static unsigned short gp2x_screenaddr_old[4];
 void gp2x_video_flip(void)\r
 {\r
        unsigned int address = gp2x_screenaddrs[screensel&3];\r
+       unsigned short msb16 = (unsigned short)(address >> 16);\r
+       unsigned short lsb16 = (unsigned short)(address);\r
 \r
-       /* test */\r
-/*     {\r
-               int i; char *p=gp2x_screen;\r
-               for (i=0; i < 240; i++) { memset(p+i*320, 0, 32); }\r
-       }*/\r
-\r
-       gp2x_memregs[0x290E>>1]=(unsigned short)(address);\r
-       gp2x_memregs[0x2910>>1]=(unsigned short)(address >> 16);\r
-       gp2x_memregs[0x2912>>1]=(unsigned short)(address);\r
-       gp2x_memregs[0x2914>>1]=(unsigned short)(address >> 16);\r
+       gp2x_memregs[0x290E>>1] = lsb16;\r
+       gp2x_memregs[0x2910>>1] = msb16;\r
+       gp2x_memregs[0x2912>>1] = lsb16;\r
+       gp2x_memregs[0x2914>>1] = msb16;\r
 \r
        // jump to other buffer:\r
        gp2x_screen = gp2x_screens[++screensel&3];\r
 }\r
 \r
+/* doulblebuffered flip */\r
+void gp2x_video_flip2(void)\r
+{\r
+       unsigned int address = gp2x_screenaddrs[screensel&1];\r
+       unsigned short msb16 = (unsigned short)(address >> 16);\r
+       unsigned short lsb16 = (unsigned short)(address);\r
 \r
-void gp2x_video_changemode(int bpp)\r
+       gp2x_memregs[0x290E>>1] = lsb16;\r
+       gp2x_memregs[0x2910>>1] = msb16;\r
+       gp2x_memregs[0x2912>>1] = lsb16;\r
+       gp2x_memregs[0x2914>>1] = msb16;\r
+\r
+       // jump to other buffer:\r
+       gp2x_screen = gp2x_screens[++screensel&1];\r
+}\r
+\r
+\r
+void gp2x_video_changemode2(int bpp)\r
 {\r
        gp2x_memregs[0x28DA>>1]=(((bpp+1)/8)<<9)|0xAB; /*8/15/16/24bpp...*/\r
        gp2x_memregs[0x290C>>1]=320*((bpp+1)/8); /*line width in bytes*/\r
+}\r
+\r
+\r
+void gp2x_video_changemode(int bpp)\r
+{\r
+       gp2x_video_changemode2(bpp);\r
 \r
        gp2x_memset_all_buffers(0, 0, 640*480);\r
        gp2x_video_flip();\r
@@ -148,6 +166,14 @@ void gp2x_memset_all_buffers(int offset, int byte, int len)
 }\r
 \r
 \r
+void gp2x_pd_clone_buffer2(void)\r
+{\r
+       memcpy(gp2x_screen, gp2x_screens[2], 320*240);\r
+       memset(gp2x_screen, 0xe0, 320*8);\r
+       memset(gp2x_screen + 320*232, 0xe0, 320*8);\r
+}\r
+\r
+\r
 unsigned long gp2x_joystick_read(int allow_usb_joy)\r
 {\r
        int i;\r