void VID_Init (unsigned char *palette) { // Configurating vita2d environment vita2d_set_vblank_wait(0); tex_buffer = vita2d_create_empty_texture_format(widths[3], heights[3], SCE_GXM_TEXTURE_BASE_FORMAT_P8); vid.maxwarpwidth = vid.width = vid.conwidth = widths[3]; vid.maxwarpheight = vid.height = vid.conheight = heights[3]; vid.rowbytes = vid.conrowbytes = widths[3]; vid.aspect = ((float)vid.height / (float)vid.width) * (320.0 / 240.0); vid.numpages = 2; vid.colormap = host_colormap; vid.fullbright = 256 - LittleLong (*((int *)vid.colormap + 2048)); vid.buffer = vid.conbuffer = vid.direct = vita2d_texture_get_datap(tex_buffer); // Set correct palette for the texture VID_SetPalette(palette); // Init Quake Cache d_pzbuffer = zbuffer; surfcache = malloc(SURFCACHE_SIZE); D_InitCaches (surfcache, SURFCACHE_SIZE); sprintf(res_string,"Current Resolution: %ld x %ld", widths[3], heights[3]); Cvar_RegisterVariable (&res_val); Cvar_RegisterVariable(&vid_vsync); }
Psp2Ui::Psp2Ui(int width, int height) : BaseUi() { starttick = sceKernelGetProcessTimeWide() / 1000; frame = 0; zoom_state = 0; in_use_shader = 0; touch_x_start = -1; trigger_state = false; set_shader = true; vita2d_init(); vita2d_set_vblank_wait(0); shaders[0] = vita2d_create_shader((SceGxmProgram*) opaque_v, (SceGxmProgram*) texture_f); shaders[1] = vita2d_create_shader((SceGxmProgram*) sharp_bilinear_v, (SceGxmProgram*) sharp_bilinear_f); shaders[2] = vita2d_create_shader((SceGxmProgram*) lcd3x_v, (SceGxmProgram*) lcd3x_f); shaders[3] = vita2d_create_shader((SceGxmProgram*) xbr_2x_fast_v, (SceGxmProgram*) xbr_2x_fast_f); gpu_texture = vita2d_create_empty_texture_format( width, height, SCE_GXM_TEXTURE_FORMAT_A8B8G8R8); vita2d_texture_set_alloc_memblock_type(SCE_KERNEL_MEMBLOCK_TYPE_USER_RW); current_display_mode.width = width; current_display_mode.height = height; current_display_mode.bpp = 32; const DynamicFormat format( 32, 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000, PF::Alpha); main_texture = vita2d_create_empty_texture_format( width, height, SCE_GXM_TEXTURE_FORMAT_A8B8G8R8); next_texture = vita2d_create_empty_texture_format( width, height, SCE_GXM_TEXTURE_FORMAT_A8B8G8R8); Bitmap::SetFormat(Bitmap::ChooseFormat(format)); main_surface = Bitmap::Create(vita2d_texture_get_datap(main_texture),width, height, vita2d_texture_get_stride(main_texture), format); #ifdef SUPPORT_AUDIO audio_.reset(new Psp2Audio()); #endif scePowerSetArmClockFrequency(444); scePowerSetBusClockFrequency(222); scePowerSetGpuClockFrequency(222); scePowerSetGpuXbarClockFrequency(222); sceCtrlSetSamplingMode(SCE_CTRL_MODE_ANALOG); sceTouchSetSamplingState(SCE_TOUCH_PORT_FRONT, SCE_TOUCH_SAMPLING_STATE_START); GPU_Mutex = sceKernelCreateSema("GPU Mutex", 0, 1, 1, NULL); GPU_Cleanup_Mutex = sceKernelCreateSema("GPU Cleanup Mutex", 0, 1, 1, NULL); GPU_Thread = sceKernelCreateThread("GPU Thread", &renderThread, 0x10000100, 0x10000, 0, 0, NULL); sceKernelStartThread(GPU_Thread, sizeof(GPU_Thread), &GPU_Thread); }
static void *vita2d_gfx_init(const video_info_t *video, const input_driver_t **input, void **input_data) { vita_video_t *vita = (vita_video_t *)calloc(1, sizeof(vita_video_t)); if (!vita) return NULL; *input = NULL; *input_data = NULL; RARCH_LOG("vita2d_gfx_init: w: %i h: %i\n", video->width, video->height); RARCH_LOG("RARCH_SCALE_BASE: %i input_scale: %i = %i\n", RARCH_SCALE_BASE, video->input_scale, RARCH_SCALE_BASE * video->input_scale); vita2d_init(); vita2d_set_clear_color(RGBA8(0x00, 0x00, 0x00, 0xFF)); vita2d_set_vblank_wait(video->vsync); if (vita->rgb32) { RARCH_LOG("Format: SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB\n"); vita->format = SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB; } else { RARCH_LOG("Format: SCE_GXM_TEXTURE_FORMAT_R5G6B5\n"); vita->format = SCE_GXM_TEXTURE_FORMAT_R5G6B5; } vita->fullscreen = video->fullscreen; vita->texture = NULL; vita->menu.texture = NULL; vita->menu.active = 0; vita->menu.width = 0; vita->menu.height = 0; vita->vsync = video->vsync; vita->rgb32 = video->rgb32; vita->tex_filter = video->smooth? SCE_GXM_TEXTURE_FILTER_LINEAR : SCE_GXM_TEXTURE_FILTER_POINT; if (input && input_data) { void *pspinput = input_psp.init(); *input = pspinput ? &input_psp : NULL; *input_data = pspinput; } vita->keep_aspect = true; vita->should_resize = true; #ifdef HAVE_OVERLAY vita->overlay_enable = false; #endif return vita; }
static void vita2d_gfx_set_nonblock_state(void *data, bool toggle) { vita_video_t *vita = (vita_video_t *)data; if (vita) { vita->vsync = !toggle; vita2d_set_vblank_wait(vita->vsync); } }
void video_Init(){ vita2d_init(); vita2d_set_vblank_wait(0); vita2d_set_clear_color(RGBA8(0, 0, 0, 0xFF)); fb = vita2d_create_empty_texture_format(256, 192*2, SCE_GXM_TEXTURE_FORMAT_U1U5U5U5_ABGR); data = vita2d_texture_get_datap(fb); }
static void update_input(void) { unsigned int i; unsigned int pressed; unsigned int released; sceCtrlPeekBufferPositive(0, &pad, 1); if (pad.lx < (128 - JOY_THRESHOLD)) pad.buttons |= SCE_CTRL_LEFT; else if (pad.lx > (128 + JOY_THRESHOLD)) pad.buttons |= SCE_CTRL_RIGHT; if (pad.ly < (128 - JOY_THRESHOLD)) pad.buttons |= SCE_CTRL_UP; else if (pad.ly > (128 + JOY_THRESHOLD)) pad.buttons |= SCE_CTRL_DOWN; pressed = pad.buttons & ~old_pad.buttons; released = ~pad.buttons & old_pad.buttons; if ((pad.buttons & EXIT_MASK) == EXIT_MASK) { running = false; } else if ((pressed & FULLSCREEN_MASK) == FULLSCREEN_MASK) { fullscreen = !fullscreen; } else if ((pressed & TURBO_MASK) == TURBO_MASK) { vita2d_set_vblank_wait(0); } else if ((released & TURBO_MASK) == TURBO_MASK) { vita2d_set_vblank_wait(1); } for (i = 0; i < KEY_MAP_SIZE; i++) { if (pressed & key_map[i].vita) theGearboyCore->KeyPressed(key_map[i].gb); else if (released & key_map[i].vita) theGearboyCore->KeyReleased(key_map[i].gb); } old_pad = pad; }
void pspVideoInit() { vita2d_init_advanced(10*1024*1024); vita2d_set_vblank_wait(0); /* Compute VBlank frequency */ uint64_t t[2]; int i; for (i = 0; i < 2; i++) { sceDisplayWaitVblankStart(); sceRtcGetCurrentTick(&t[i]); } VBlankFreq = round(1.00 / ((double)(t[1] - t[0]) * (1.00 / (double)sceRtcGetTickResolution()))); }
static void *vita2d_gfx_init(const video_info_t *video, const input_driver_t **input, void **input_data) { vita_video_t *vita = (vita_video_t *)calloc(1, sizeof(vita_video_t)); unsigned temp_width = PSP_FB_WIDTH; unsigned temp_height = PSP_FB_HEIGHT; if (!vita) return NULL; *input = NULL; *input_data = NULL; RARCH_LOG("vita2d_gfx_init: w: %i h: %i\n", video->width, video->height); RARCH_LOG("RARCH_SCALE_BASE: %i input_scale: %i = %i\n", RARCH_SCALE_BASE, video->input_scale, RARCH_SCALE_BASE * video->input_scale); vita2d_init(); vita2d_set_clear_color(RGBA8(0x00, 0x00, 0x00, 0xFF)); vita2d_set_vblank_wait(video->vsync); if (video->rgb32) { RARCH_LOG("Format: SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB\n"); vita->format = SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB; } else { RARCH_LOG("Format: SCE_GXM_TEXTURE_FORMAT_R5G6B5\n"); vita->format = SCE_GXM_TEXTURE_FORMAT_R5G6B5; } vita->fullscreen = video->fullscreen; vita->texture = NULL; vita->menu.texture = NULL; vita->menu.active = 0; vita->menu.width = 0; vita->menu.height = 0; vita->vsync = video->vsync; vita->rgb32 = video->rgb32; vita->tex_filter = video->smooth ? SCE_GXM_TEXTURE_FILTER_LINEAR : SCE_GXM_TEXTURE_FILTER_POINT; video_driver_set_size(&temp_width, &temp_height); vita2d_gfx_set_viewport(vita, temp_width, temp_height, false, true); if (input && input_data) { settings_t *settings = config_get_ptr(); void *pspinput = input_psp.init(settings->input.joypad_driver); *input = pspinput ? &input_psp : NULL; *input_data = pspinput; } vita->keep_aspect = true; vita->should_resize = true; #ifdef HAVE_OVERLAY vita->overlay_enable = false; #endif font_driver_init_osd(vita, false, FONT_DRIVER_RENDER_VITA2D); return vita; }
static void *vita2d_gfx_init(const video_info_t *video, const input_driver_t **input, void **input_data) { vita_video_t *vita = (vita_video_t *)calloc(1, sizeof(vita_video_t)); settings_t *settings = config_get_ptr(); if (!vita) return NULL; *input = NULL; *input_data = NULL; RARCH_LOG("vita2d_gfx_init: w: %i h: %i\n", video->width, video->height); RARCH_LOG("RARCH_SCALE_BASE: %i input_scale: %i = %i\n", RARCH_SCALE_BASE, video->input_scale, RARCH_SCALE_BASE * video->input_scale); vita2d_init(); vita2d_set_clear_color(RGBA8(0x00, 0x00, 0x00, 0xFF)); vita2d_set_vblank_wait(video->vsync); if (vita->rgb32) { RARCH_LOG("Format: SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB\n"); vita->format = SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB; } else { RARCH_LOG("Format: SCE_GXM_TEXTURE_FORMAT_R5G6B5\n"); vita->format = SCE_GXM_TEXTURE_FORMAT_R5G6B5; } vita->fullscreen = video->fullscreen; vita->texture = NULL; vita->menu.texture = NULL; vita->menu.active = 0; vita->menu.width = 0; vita->menu.height = 0; vita->vsync = video->vsync; vita->rgb32 = video->rgb32; vita->tex_filter = video->smooth? SCE_GXM_TEXTURE_FILTER_LINEAR : SCE_GXM_TEXTURE_FILTER_POINT; if (input && input_data) { void *pspinput = input_psp.init(); *input = pspinput ? &input_psp : NULL; *input_data = pspinput; } vita->keep_aspect = true; vita->should_resize = true; #ifdef HAVE_OVERLAY vita->overlay_enable = false; #endif if (!font_driver_init_first(NULL, NULL, vita, *settings->path.font ? settings->path.font : NULL, settings->video.font_size, false, FONT_DRIVER_RENDER_VITA2D)) { RARCH_ERR("Font: Failed to initialize font renderer.\n"); return false; } return vita; }