\r
int g_screen_width = 320;\r
int g_screen_height = 240;\r
+int g_screen_ppitch = 320; // pitch in pixels\r
\r
const char *PicoConfigFile = "config2.cfg";\r
currentConfig_t currentConfig, defaultConfig;\r
} \\r
}\r
\r
-mk_text_out(emu_text_out8, unsigned char, 0xf0, g_screen_ptr, 1, g_screen_width)\r
-mk_text_out(emu_text_out16, unsigned short, 0xffff, g_screen_ptr, 1, g_screen_width)\r
+mk_text_out(emu_text_out8, unsigned char, 0xf0, g_screen_ptr, 1, g_screen_ppitch)\r
+mk_text_out(emu_text_out16, unsigned short, 0xffff, g_screen_ptr, 1, g_screen_ppitch)\r
mk_text_out(emu_text_out8_rot, unsigned char, 0xf0,\r
- (char *)g_screen_ptr + (g_screen_width - 1) * g_screen_height, -g_screen_height, 1)\r
+ (char *)g_screen_ptr + (g_screen_ppitch - 1) * g_screen_height, -g_screen_height, 1)\r
mk_text_out(emu_text_out16_rot, unsigned short, 0xffff,\r
- (short *)g_screen_ptr + (g_screen_width - 1) * g_screen_height, -g_screen_height, 1)\r
+ (short *)g_screen_ptr + (g_screen_ppitch - 1) * g_screen_height, -g_screen_height, 1)\r
\r
#undef mk_text_out\r
\r
for (h = 0; h < 8; h++) {\r
unsigned short *p;\r
p = (unsigned short *)g_screen_ptr\r
- + x + g_screen_width * (y + h);\r
+ + x + g_screen_ppitch * (y + h);\r
for (i = len; i > 0; i--, p++)\r
*p = (*p >> 2) & 0x39e7;\r
}\r
void emu_cmn_forced_frame(int no_scale, int do_emu)\r
{\r
int po_old = PicoIn.opt;\r
+ int y;\r
\r
- memset32(g_screen_ptr, 0, g_screen_width * g_screen_height * 2 / 4);\r
+ for (y = 0; y < g_screen_height; y++)\r
+ memset32((short *)g_screen_ptr + g_screen_ppitch * y, 0,\r
+ g_screen_width * 2 / 4);\r
\r
PicoIn.opt &= ~POPT_ALT_RENDERER;\r
PicoIn.opt |= POPT_ACC_SPRITES;\r
extern int g_screen_width;
extern int g_screen_height;
+extern int g_screen_ppitch; // pitch in pixels
#define EOPT_EN_SRAM (1<<0)
#define EOPT_SHOW_FPS (1<<1)
(g_menuscreen_w / 2 - w / 2);
// darken the active framebuffer
- for (; h > 0; dst += g_menuscreen_w, src += g_screen_width, h--)
+ for (; h > 0; dst += g_menuscreen_w, src += g_screen_ppitch, h--)
menu_darken_bg(dst, src, w, 1);
}
len = g_menuscreen_w;
menu_draw_begin(0, 1);
- dst = (unsigned short *)g_menuscreen_ptr + g_menuscreen_w * me_sfont_h * 2;
- for (ln = me_sfont_h - 2; ln > 0; ln--, dst += g_menuscreen_w)
+ dst = (unsigned short *)g_menuscreen_ptr + g_menuscreen_pp * me_sfont_h * 2;
+ for (ln = me_sfont_h - 2; ln > 0; ln--, dst += g_menuscreen_pp)
memset(dst, 0xff, len * 2);
menu_draw_end();
}
unsigned short *dst;
menu_draw_begin(0, 1);
- dst = (unsigned short *)g_menuscreen_ptr + g_menuscreen_w * me_sfont_h * 2;
- memset(dst, 0xff, g_menuscreen_w * (me_sfont_h - 2) * 2);
+ dst = (unsigned short *)g_menuscreen_ptr + g_menuscreen_pp * me_sfont_h * 2;
+
+ menuscreen_memset_lines(dst, 0xff, me_sfont_h - 2);
smalltext_out16(1, 3 * me_sfont_h, "Processing CD image / MP3s", 0xffff);
smalltext_out16(1, 4 * me_sfont_h, fname, 0xffff);
- dst += g_menuscreen_w * me_sfont_h * 3;
+ dst += g_menuscreen_pp * me_sfont_h * 3;
if (len > g_menuscreen_w)
len = g_menuscreen_w;
- for (ln = (me_sfont_h - 2); ln > 0; ln--, dst += g_menuscreen_w)
+ for (ln = (me_sfont_h - 2); ln > 0; ln--, dst += g_menuscreen_pp)
memset(dst, 0xff, len * 2);
menu_draw_end();
break;
case 2: pemu_forced_frame(1, 0);
make_bg(1);
- PDebugShowSpriteStats((unsigned short *)g_menuscreen_ptr + (g_menuscreen_h/2 - 240/2)*g_menuscreen_w +
- g_menuscreen_w/2 - 320/2, g_menuscreen_w);
+ PDebugShowSpriteStats((unsigned short *)g_menuscreen_ptr
+ + (g_menuscreen_h/2 - 240/2) * g_menuscreen_pp
+ + g_menuscreen_w/2 - 320/2, g_menuscreen_pp);
break;
- case 3: memset(g_menuscreen_ptr, 0, g_menuscreen_w * g_menuscreen_h * 2);
- PDebugShowPalette(g_menuscreen_ptr, g_menuscreen_w);
- PDebugShowSprite((unsigned short *)g_menuscreen_ptr + g_menuscreen_w*120 + g_menuscreen_w/2 + 16,
- g_menuscreen_w, spr_offs);
+ case 3: menuscreen_memset_lines(g_menuscreen_ptr, 0, g_menuscreen_h);
+ PDebugShowPalette(g_menuscreen_ptr, g_menuscreen_pp);
+ PDebugShowSprite((unsigned short *)g_menuscreen_ptr
+ + g_menuscreen_pp * 120 + g_menuscreen_w / 2 + 16,
+ g_menuscreen_pp, spr_offs);
draw_text_debug(PDebugSpriteList(), spr_offs, 6);
break;
case 4: tmp = PDebug32x();
return;
/* battery info */
- bp += (me_mfont_h * 2 + 2) * g_screen_width + g_screen_width - me_mfont_w * 3 - 3;
+ bp += (me_mfont_h * 2 + 2) * g_screen_ppitch + g_screen_width - me_mfont_w * 3 - 3;
for (i = 0; i < me_mfont_w * 2; i++)
bp[i] = menu_text_color;
for (i = 0; i < me_mfont_w * 2; i++)
- bp[i + g_screen_width * bat_h] = menu_text_color;
+ bp[i + g_screen_ppitch * bat_h] = menu_text_color;
for (i = 0; i <= bat_h; i++)
- bp[i * g_screen_width] =
- bp[i * g_screen_width + me_mfont_w * 2] = menu_text_color;
+ bp[i * g_screen_ppitch] =
+ bp[i * g_screen_ppitch + me_mfont_w * 2] = menu_text_color;
for (i = 2; i < bat_h - 1; i++)
- bp[i * g_screen_width - 1] =
- bp[i * g_screen_width - 2] = menu_text_color;
+ bp[i * g_screen_ppitch - 1] =
+ bp[i * g_screen_ppitch - 2] = menu_text_color;
w = me_mfont_w * 2 - 1;
wfill = batt_val * w / 100;
for (u = 1; u < bat_h; u++)
for (i = 0; i < wfill; i++)
- bp[(w - i) + g_screen_width * u] = menu_text_color;
+ bp[(w - i) + g_screen_ppitch * u] = menu_text_color;
}
static int main_menu_handler(int id, int keys)
SDL_LockYUVOverlay(plat_sdl_overlay);
rgb565_to_uyvy(plat_sdl_overlay->pixels[0], shadow_fb,
- g_screen_width * g_screen_height);
+ g_screen_ppitch * g_screen_height);
SDL_UnlockYUVOverlay(plat_sdl_overlay);
SDL_DisplayYUVOverlay(plat_sdl_overlay, &dstrect);
}
else if (plat_sdl_gl_active) {
- gl_flip(shadow_fb, g_screen_width, g_screen_height);
+ gl_flip(shadow_fb, g_screen_ppitch, g_screen_height);
}
else {
if (SDL_MUSTLOCK(plat_sdl_screen))
SDL_UnlockSurface(plat_sdl_screen);
SDL_Flip(plat_sdl_screen);
g_screen_ptr = plat_sdl_screen->pixels;
- PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);
+ PicoDrawSetOutBuf(g_screen_ptr, g_screen_ppitch * 2);
}
}
SDL_LockYUVOverlay(plat_sdl_overlay);
rgb565_to_uyvy(plat_sdl_overlay->pixels[0], shadow_fb,
- g_menuscreen_w * g_menuscreen_h);
+ g_menuscreen_pp * g_menuscreen_h);
SDL_UnlockYUVOverlay(plat_sdl_overlay);
SDL_DisplayYUVOverlay(plat_sdl_overlay, &dstrect);
}
else if (plat_sdl_gl_active) {
- gl_flip(g_menuscreen_ptr, g_menuscreen_w, g_menuscreen_h);
+ gl_flip(g_menuscreen_ptr, g_menuscreen_pp, g_menuscreen_h);
}
else {
if (SDL_MUSTLOCK(plat_sdl_screen))
SDL_LockSurface(plat_sdl_screen);
g_screen_ptr = plat_sdl_screen->pixels;
}
- PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);
+ PicoDrawSetOutBuf(g_screen_ptr, g_screen_ppitch * 2);
}
void plat_early_init(void)
g_menuscreen_w = plat_sdl_screen->w;
g_menuscreen_h = plat_sdl_screen->h;
+ g_menuscreen_pp = g_menuscreen_w;
g_menuscreen_ptr = NULL;
shadow_size = g_menuscreen_w * g_menuscreen_h * 2;
g_screen_width = 320;
g_screen_height = 240;
+ g_screen_ppitch = 320;
g_screen_ptr = shadow_fb;
in_sdl_init(&in_sdl_platform_data, plat_sdl_event_handler);
g_menuscreen_w = 320;
g_menuscreen_h = 240;
+ g_menuscreen_pp = g_menuscreen_w;
gp2x_memset_all_buffers(0, 0, 320*240*2);
gp2x_make_fb_bufferable(1);
-Subproject commit 21082d0b2b9910727770674cef9b68b9e97a3155
+Subproject commit 2b27288eb44ef9247d2a948a207d3ac9b835421a
void pemu_finalize_frame(const char *fps, const char *notice)\r
{\r
if (currentConfig.renderer != RT_16BIT && !(PicoIn.AHW & PAHW_32X)) {\r
- unsigned short *pd = (unsigned short *)g_screen_ptr + 8 * g_screen_width;\r
+ unsigned short *pd = (unsigned short *)g_screen_ptr + 8 * g_screen_ppitch;\r
unsigned char *ps = Pico.est.Draw2FB + 328*8 + 8;\r
unsigned short *pal = Pico.est.HighPal;\r
int i, x;\r
case RT_16BIT:\r
PicoIn.opt &= ~POPT_ALT_RENDERER;\r
PicoDrawSetOutFormat(PDF_RGB555, 0);\r
- PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);\r
+ PicoDrawSetOutBuf(g_screen_ptr, g_screen_ppitch * 2);\r
break;\r
case RT_8BIT_ACC:\r
PicoIn.opt &= ~POPT_ALT_RENDERER;\r
}\r
\r
if (PicoIn.AHW & PAHW_32X)\r
- PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);\r
+ PicoDrawSetOutBuf(g_screen_ptr, g_screen_ppitch * 2);\r
}\r
\r
void plat_video_toggle_renderer(int change, int is_menu)\r
\r
void plat_status_msg_clear(void)\r
{\r
- unsigned short *d = (unsigned short *)g_screen_ptr + g_screen_width * g_screen_height;\r
- int l = g_screen_width * 8;\r
+ unsigned short *d = (unsigned short *)g_screen_ptr + g_screen_ppitch * g_screen_height;\r
+ int l = g_screen_ppitch * 8;\r
memset32((int *)(d - l), 0, l * 2 / 4);\r
}\r
\r
\r
void plat_status_msg_busy_first(const char *msg)\r
{\r
-// memset32(g_screen_ptr, 0, g_screen_width * g_screen_height * 2 / 4);\r
+// memset32(g_screen_ptr, 0, g_screen_ppitch * g_screen_height * 2 / 4);\r
plat_status_msg_busy_next(msg);\r
}\r
\r
\r
void pemu_forced_frame(int no_scale, int do_emu)\r
{\r
- PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);\r
+ PicoDrawSetOutBuf(g_screen_ptr, g_screen_ppitch * 2);\r
PicoDrawSetCallbacks(NULL, NULL);\r
Pico.m.dirtyPal = 1;\r
\r
void emu_video_mode_change(int start_line, int line_count, int is_32cols)\r
{\r
// clear whole screen in all buffers\r
- memset32(g_screen_ptr, 0, g_screen_width * g_screen_height * 2 / 4);\r
+ memset32(g_screen_ptr, 0, g_screen_ppitch * g_screen_height * 2 / 4);\r
}\r
\r
void pemu_loop_prep(void)\r
XLockDisplay(xlib_display);
xstatus = XPutImage(xlib_display, xlib_window, DefaultGC(xlib_display, 0), ximage,
- 0, 0, 0, 0, g_screen_width, g_screen_height);
+ 0, 0, 0, 0, g_screen_ppitch, g_screen_height);
if (xstatus != 0)
fprintf(stderr, "XPutImage %d\n", xstatus);
int size = scr_w * scr_h * 2;
g_screen_width = g_menuscreen_w = scr_w;
g_screen_height = g_menuscreen_h = scr_h;
+ g_screen_ppitch = g_menuscreen_pp = scr_w;
g_screen_ptr = realloc(g_screen_ptr, size);
g_menubg_ptr = realloc(g_menubg_ptr, size);
memset(g_screen_ptr, 0, size);
if (ximage == NULL)
return;
- pixel_count = g_screen_width * g_screen_height;
+ pixel_count = g_screen_ppitch * g_screen_height;
image = (void *)ximage->data;
if (current_bpp == 8)
exit(1);
g_screen_width = g_menuscreen_w = w;
g_screen_height = g_menuscreen_h = h;
+ g_screen_ppitch = g_menuscreen_pp = w;
g_menubg_ptr = realloc(g_menubg_ptr, w * g_screen_height * 2);
#else
realloc_screen();
for (;;)
{
menu_draw_begin(0, 1);
- memset(g_menuscreen_ptr, 0, g_menuscreen_w * g_menuscreen_h * 2);
+ menuscreen_memset_lines(g_menuscreen_ptr, 0, g_menuscreen_h);
text_out16(2, 480 - 18, "%dx%d | d-pad to resize, R+d-pad to move", g_layer_cw, g_layer_ch);
menu_draw_end();
exit(1);\r
}\r
\r
- g_menuscreen_w = w;\r
+ g_menuscreen_w = g_menuscreen_pp = w;\r
g_menuscreen_h = h;\r
g_menuscreen_ptr = vout_fbdev_flip(main_fb);\r
\r
void pemu_loop_prep(void)
{
PicoDrawSetOutFormat(PDF_RGB555, 1);
- PicoDrawSetOutBuf(g_screen_ptr, g_screen_width * 2);
+ PicoDrawSetOutBuf(g_screen_ptr, g_screen_ppitch * 2);
pemu_sound_start();
}