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
}\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