#include "emu.h"\r
#include "gp2x.h"\r
#include "menu.h"\r
-#include "../linux/usbjoy.h"\r
#include "../common/arm_utils.h"\r
#include "../common/fonts.h"\r
#include "../common/emu.h"\r
void osd_text(int x, int y, const char *text)\r
{\r
int len = strlen(text)*8;\r
+ int *p, i, h, offs;\r
\r
if ((PicoOpt&0x10)||!(currentConfig.EmuOpt&0x80)) {\r
- int *p, i, h;\r
- x &= ~3; // align x\r
len = (len+3) >> 2;\r
for (h = 0; h < 8; h++) {\r
- p = (int *) ((unsigned char *) gp2x_screen+x+320*(y+h));\r
- for (i = len; i; i--, p++) *p = 0xe0e0e0e0;\r
+ offs = (x + g_screen_width * (y+h)) & ~3;\r
+ p = (int *) ((char *)g_screen_ptr + offs);\r
+ for (i = len; i; i--, p++)\r
+ *p = 0xe0e0e0e0;\r
}\r
emu_textOut8(x, y, text);\r
} else {\r
- int *p, i, h;\r
- x &= ~1; // align x\r
len = (len+1) >> 1;\r
for (h = 0; h < 8; h++) {\r
- p = (int *) ((unsigned short *) gp2x_screen+x+320*(y+h));\r
- for (i = len; i; i--, p++) *p = (*p>>2)&0x39e7;\r
+ offs = (x + g_screen_width * (y+h)) & ~1;\r
+ p = (int *) ((short *)g_screen_ptr + offs);\r
+ for (i = len; i; i--, p++)\r
+ *p = (*p >> 2) & 0x39e7;\r
}\r
emu_textOut16(x, y, text);\r
}\r
// 8-bit modes\r
unsigned int col_g = (old_reg & 2) ? 0xc0c0c0c0 : 0xe0e0e0e0;\r
unsigned int col_r = (old_reg & 1) ? 0xd0d0d0d0 : 0xe0e0e0e0;\r
- *(unsigned int *)((char *)gp2x_screen + 320*2+ 4) =\r
- *(unsigned int *)((char *)gp2x_screen + 320*3+ 4) =\r
- *(unsigned int *)((char *)gp2x_screen + 320*4+ 4) = col_g;\r
- *(unsigned int *)((char *)gp2x_screen + 320*2+12) =\r
- *(unsigned int *)((char *)gp2x_screen + 320*3+12) =\r
- *(unsigned int *)((char *)gp2x_screen + 320*4+12) = col_r;\r
+ *(unsigned int *)((char *)g_screen_ptr + 320*2+ 4) =\r
+ *(unsigned int *)((char *)g_screen_ptr + 320*3+ 4) =\r
+ *(unsigned int *)((char *)g_screen_ptr + 320*4+ 4) = col_g;\r
+ *(unsigned int *)((char *)g_screen_ptr + 320*2+12) =\r
+ *(unsigned int *)((char *)g_screen_ptr + 320*3+12) =\r
+ *(unsigned int *)((char *)g_screen_ptr + 320*4+12) = col_r;\r
} else {\r
// 16-bit modes\r
- unsigned int *p = (unsigned int *)((short *)gp2x_screen + 320*2+4);\r
+ unsigned int *p = (unsigned int *)((short *)g_screen_ptr + 320*2+4);\r
unsigned int col_g = (old_reg & 2) ? 0x06000600 : 0;\r
unsigned int col_r = (old_reg & 1) ? 0xc000c000 : 0;\r
*p++ = col_g; *p++ = col_g; p+=2; *p++ = col_r; *p++ = col_r; p += 320/2 - 12/2;\r
\r
static void draw_pico_ptr(void)\r
{\r
- unsigned short *p = (unsigned short *)gp2x_screen;\r
+ unsigned short *p = (unsigned short *)g_screen_ptr;\r
\r
// only if pen enabled and for 16bit modes\r
if (pico_inp_mode == 0 || (PicoOpt&0x10) || !(currentConfig.EmuOpt&0x80)) return;\r
static int EmuScanBegin16(unsigned int num)\r
{\r
if (!(Pico.video.reg[1]&8)) num += 8;\r
- DrawLineDest = (unsigned short *) gp2x_screen + 320 * num;\r
+ DrawLineDest = (unsigned short *) g_screen_ptr + g_screen_width * num;\r
\r
return 0;\r
}\r
static int EmuScanBegin8(unsigned int num)\r
{\r
if (!(Pico.video.reg[1]&8)) num += 8;\r
- DrawLineDest = (unsigned char *) gp2x_screen + 320 * num;\r
+ DrawLineDest = (unsigned char *) g_screen_ptr + g_screen_width * num;\r
\r
return 0;\r
}\r
if (PicoRead16Hook == PicoSVPRead16)\r
memset32((int *)(PicoDraw2FB+328*8+328*223), 0xe0e0e0e0, 328);\r
// do actual copy\r
- vidCpyM2((unsigned char *)gp2x_screen+320*8, PicoDraw2FB+328*8);\r
+ vidCpyM2((unsigned char *)g_screen_ptr+320*8, PicoDraw2FB+328*8);\r
}\r
else if (!(emu_opt&0x80))\r
{\r
if (!(PicoOpt&0x10)) {\r
if (!(Pico.video.reg[1]&8)) {\r
if (currentConfig.EmuOpt&0x80) {\r
- DrawLineDest = (unsigned short *) gp2x_screen + 320*8;\r
+ DrawLineDest = (unsigned short *) g_screen_ptr + 320*8;\r
} else {\r
- DrawLineDest = (unsigned char *) gp2x_screen + 320*8;\r
+ DrawLineDest = (unsigned char *) g_screen_ptr + 320*8;\r
}\r
} else {\r
- DrawLineDest = gp2x_screen;\r
+ DrawLineDest = g_screen_ptr;\r
}\r
}\r
}\r
// 8-bit renderers\r
gp2x_memset_all_buffers(320*232, 0xe0, 320*8);\r
osd_text(4, 232, msg);\r
- gp2x_memcpy_all_buffers((char *)gp2x_screen+320*232, 320*232, 320*8);\r
+ gp2x_memcpy_all_buffers((char *)g_screen_ptr+320*232, 320*232, 320*8);\r
} else {\r
// 16bit accurate renderer\r
gp2x_memset_all_buffers(320*232*2, 0, 320*8*2);\r
osd_text(4, 232, msg);\r
- gp2x_memcpy_all_buffers((char *)gp2x_screen+320*232*2, 320*232*2, 320*8*2);\r
+ gp2x_memcpy_all_buffers((char *)g_screen_ptr+320*232*2, 320*232*2, 320*8*2);\r
}\r
gettimeofday(¬iceMsgTime, 0);\r
noticeMsgTime.tv_sec -= 2;\r
if (do_it) {\r
osd_text(4, 232, (which & 0x1000) ? "LOADING GAME" : "SAVING GAME");\r
PicoStateProgressCB = emu_state_cb;\r
- gp2x_memcpy_all_buffers(gp2x_screen, 0, 320*240*2);\r
+ gp2x_memcpy_all_buffers(g_screen_ptr, 0, 320*240*2);\r
emu_SaveLoadGame((which & 0x1000) >> 12, 0);\r
PicoStateProgressCB = NULL;\r
}\r
{\r
unsigned int keys, keys2, allActions[2] = { 0, 0 }, events;\r
static unsigned int prevEvents = 0;\r
- int joy, i;\r
\r
keys = gp2x_joystick_read(0);\r
- if (keys & GP2X_SELECT) {\r
+ if (keys & GP2X_SELECT)\r
engineState = select_exits ? PGS_Quit : PGS_Menu;\r
- // wait until select is released, so menu would not resume game\r
- while (gp2x_joystick_read(1) & GP2X_SELECT) usleep(50*1000);\r
- }\r
\r
keys &= CONFIGURABLE_KEYS;\r
keys2 = keys;\r
}\r
#endif\r
\r
- // add joy inputs\r
- if (num_of_joys > 0)\r
- {\r
- usbjoy_update();\r
- for (joy = 0; joy < num_of_joys; joy++) {\r
- int btns = usbjoy_check2(joy);\r
- for (i = 0; i < 32; i++) {\r
- if (btns & (1 << i)) {\r
- int acts = currentConfig.JoyBinds[joy][i];\r
- int pl = (acts >> 16) & 1;\r
- allActions[pl] |= acts;\r
- }\r
- }\r
- }\r
- }\r
-\r
PicoPad[0] = allActions[0] & 0xfff;\r
PicoPad[1] = allActions[1] & 0xfff;\r
\r
clearArea(1);\r
} else vidCpyM2 = vidCpyM2_40col;\r
\r
- vidCpyM2((unsigned char *)gp2x_screen+320*8, PicoDraw2FB+328*8);\r
+ vidCpyM2((unsigned char *)g_screen_ptr+320*8, PicoDraw2FB+328*8);\r
vidConvCpyRGB32(localPal, Pico.cram, 0x40);\r
gp2x_video_setpalette(localPal, 0x40);\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(oldscr[i] != CONV(((unsigned short *)g_screen_ptr)[i])) break;\r
if (i < 320*240)\r
{\r
for (i = 0; i < 320*240; i++)\r
- oldscr[i] = CONV(((unsigned short *)gp2x_screen)[i]);\r
+ oldscr[i] = CONV(((unsigned short *)g_screen_ptr)[i]);\r
sprintf(name, "%05i.tga", Pico.m.frame_count);\r
f = fopen(name, "wb");\r
if (!f) { printf("!f\n"); exit(1); }\r