static int gp2x_old_gamma = 100;\r
static unsigned char *movie_data = NULL;\r
static int movie_size = 0;\r
-int frame_count = 0;\r
unsigned char *framebuff = 0; // temporary buffer for alt renderer\r
int state_slot = 0;\r
\r
if(currentConfig.EmuOpt & 1)\r
emu_SaveLoadGame(1, 1);\r
\r
- frame_count = 0;\r
+ Pico.m.frame_count = 0;\r
\r
return 1;\r
}\r
\r
if(movie_data)\r
{\r
- int offs = frame_count*3 + 0x40;\r
+ int offs = Pico.m.frame_count*3 + 0x40;\r
if (offs+3 > movie_size) {\r
free(movie_data);\r
movie_data = 0;\r
PicoPad[1] |= (~movie_data[offs+2] & 0xA0) << 4; // ! MZYX\r
if(!(movie_data[offs+2] & 0x10)) PicoPad[1] |= 0x0400; // X\r
if(!(movie_data[offs+2] & 0x40)) PicoPad[1] |= 0x0100; // Z\r
- if ((PicoPad[0] & 0x80) || (PicoPad[1] & 0x80))\r
- printf("%d: start\n", frame_count);\r
}\r
}\r
else\r
PicoPad[0] = (unsigned short) allActions[0];\r
PicoPad[1] = (unsigned short) allActions[1];\r
}\r
- frame_count++;\r
+ Pico.m.frame_count++;\r
\r
events = (allActions[0] | allActions[1]) >> 16;\r
\r
updateKeys();\r
PicoFrame();\r
\r
+#if 0\r
+if (Pico.m.frame_count == 31563) {\r
+ FILE *f;\r
+ f = fopen("ram_p.bin", "wb");\r
+ if (!f) { printf("!f\n"); exit(1); }\r
+ fwrite(Pico.ram, 1, 0x10000, f);\r
+ fclose(f);\r
+ exit(0);\r
+}\r
+#endif\r
#if 0\r
// debug\r
{\r
- static unsigned char oldscr[320*240*2];\r
+ #define BYTE unsigned char\r
+ #define WORD unsigned short\r
+ struct\r
+ {\r
+ BYTE IDLength; /* 00h Size of Image ID field */\r
+ BYTE ColorMapType; /* 01h Color map type */\r
+ BYTE ImageType; /* 02h Image type code */\r
+ WORD CMapStart; /* 03h Color map origin */\r
+ WORD CMapLength; /* 05h Color map length */\r
+ BYTE CMapDepth; /* 07h Depth of color map entries */\r
+ WORD XOffset; /* 08h X origin of image */\r
+ WORD YOffset; /* 0Ah Y origin of image */\r
+ WORD Width; /* 0Ch Width of image */\r
+ WORD Height; /* 0Eh Height of image */\r
+ BYTE PixelDepth; /* 10h Image pixel size */\r
+ BYTE ImageDescriptor; /* 11h Image descriptor byte */\r
+ } __attribute__((packed)) TGAHEAD;\r
+ static unsigned short oldscr[320*240];\r
FILE *f; char name[128]; int i;\r
- for (i = 0; i < 320*240*2; i++)\r
- if(oldscr[i] != ((unsigned char *)gp2x_screen)[i]) break;\r
- if (i < 320*240*2)\r
+\r
+ memset(&TGAHEAD, 0, sizeof(TGAHEAD));\r
+ TGAHEAD.ImageType = 2;\r
+ TGAHEAD.Width = 320;\r
+ TGAHEAD.Height = 240;\r
+ TGAHEAD.PixelDepth = 16;\r
+ TGAHEAD.ImageDescriptor = 2<<4; // image starts at top-left\r
+\r
+ #define CONV(X) (((X>>1)&0x7fe0)|(X&0x1f)) // 555?\r
+\r
+ for (i = 0; i < 320*240; i++)\r
+ if(oldscr[i] != CONV(((unsigned short *)gp2x_screen)[i])) break;\r
+ if (i < 320*240)\r
{\r
- for (i = 0; i < 320*240*2; i++)\r
- oldscr[i] = ((unsigned char *)gp2x_screen)[i];\r
- sprintf(name, "%05i.raw", frame_count);\r
+ for (i = 0; i < 320*240; i++)\r
+ oldscr[i] = CONV(((unsigned short *)gp2x_screen)[i]);\r
+ sprintf(name, "%05i.tga", Pico.m.frame_count);\r
f = fopen(name, "wb");\r
if (!f) { printf("!f\n"); exit(1); }\r
- fwrite(gp2x_screen, 1, 320*240*2, f);\r
+ fwrite(&TGAHEAD, 1, sizeof(TGAHEAD), f);\r
+ fwrite(oldscr, 1, 320*240*2, f);\r
fclose(f);\r
}\r
}\r