void SelectDisplayContext(int context_id) { // the CRTC is used to select which contex we see on our TV/VGA/HDTV if(context_id==0) GsSetCRTCSettings(CRTC_SETTINGS_DEFAULT1, 255); if(context_id==1) GsSetCRTCSettings(CRTC_SETTINGS_DEFAULT2, 255); }
void GsResetGraph(short int mode, short int interlace, short int omode, short int ffmode) { GsGParam_t *pGParams; switch(mode){ case GS_INIT_RESET: GsDmaInit(); //It seems like the Sony developers reset the GIF DMA channel with their libdma library, but a lot of homebrew GS libraries will do this on their own. pGParams=GsGetGParam(); GS_SET_CSR_reset(1); pGParams->ffmode=ffmode; pGParams->interlace=interlace; pGParams->omode=omode; pGParams->version=GS_GET_CSR_gs_rev_number>>16; GsPutIMR(0xFF00); SetGsCrt(interlace&1, omode&0xFF, ffmode&1); GsSetCRTCSettings(CRTC_SETTINGS_DEFAULT1, 0x80); break; case GS_INIT_DRAW_RESET: GS_SET_CSR_flush(1); break; /* There is a mode 5 present in the Sony sceGsResetGraph, but is not documented. It seems to change the video mode without resetting anything. */ } }
int InitGraphics() { GsInit(); GsSetVideoMode(1, 2, 0); GsSetCRTCSettings(CRTC_SETTINGS_DEFAULT1, 255); //display context 1 on tv GsSetDefaultDrawEnv(&draw_env, SCREEN_OFFSET_X, SCREEN_OFFSET_Y, SCREEN_WIDTH, SCREEN_HEIGHT); GsSetDefaultDrawEnvAddress(&draw_env, 0, SCREEN_WIDTH/64, GS_PIXMODE_32); GsSetDefaultDisplayEnv(&disp_env, 656, 36+(36/2), SCREEN_WIDTH, SCREEN_HEIGHT); GsSetDefaultDisplayEnvAddress(&disp_env, 0, SCREEN_WIDTH/64, GS_PIXMODE_32); //execute draw/display environment(s) (context 1) GsPutDrawEnv1(&draw_env); GsPutDisplayEnv1(&disp_env); //set some common stuff GsOverridePrimAttributes(GS_DISABLE, 0, 0, 0, 0, 0, 0, 0, 0); // contex 1 GsEnableAlphaTransparency1(GS_ENABLE, GS_ALPHA_GEQUAL, 0x01, 0x00); // contex 2 GsEnableAlphaTransparency2(GS_ENABLE, GS_ALPHA_GEQUAL, 0x01, 0x00); GsEnableAlphaBlending1(GS_ENABLE, 0); GsEnableAlphaBlending2(GS_ENABLE, 0); return 0; }
int InitGraphics() { static int env0_address; static int env1_address; GsInit(); GsSetVideoMode(1, 2, 0); GsSetCRTCSettings(CRTC_SETTINGS_DEFAULT1, 255); //display contex 1 //alloc 2 buffers in vram env0_address = GsVramAllocFrameBuffer(SCREEN_WIDTH, SCREEN_HEIGHT, GS_PIXMODE_32); env1_address = GsVramAllocFrameBuffer(SCREEN_WIDTH, SCREEN_HEIGHT, GS_PIXMODE_32); /*********SETUP CONTEX 1 ENVIRONMENT*************/ GsSetDefaultDrawEnv (&draw_env[0], SCREEN_OFFSET_X, SCREEN_OFFSET_Y, SCREEN_WIDTH, SCREEN_HEIGHT); GsSetDefaultDrawEnvAddress(&draw_env[0], env0_address, SCREEN_WIDTH/64, GS_PIXMODE_32); GsSetDefaultDisplayEnv (&disp_env[0], 656, 36+(36/2), SCREEN_WIDTH, SCREEN_HEIGHT); GsSetDefaultDisplayEnvAddress(&disp_env[0], env1_address, SCREEN_WIDTH/64, GS_PIXMODE_32); /*********SETUP CONTEX 2 ENVIRONMENT*************/ GsSetDefaultDrawEnv (&draw_env[1], SCREEN_OFFSET_X, SCREEN_OFFSET_Y, SCREEN_WIDTH, SCREEN_HEIGHT); GsSetDefaultDrawEnvAddress(&draw_env[1], env1_address, SCREEN_WIDTH/64, GS_PIXMODE_32); GsSetDefaultDisplayEnv (&disp_env[1], 656, 36+(36/2), SCREEN_WIDTH, SCREEN_HEIGHT); GsSetDefaultDisplayEnvAddress(&disp_env[1], env0_address, SCREEN_WIDTH/64, GS_PIXMODE_32); //execute draw/display environment(s) (contex 1) GsPutDrawEnv1 (&draw_env[0]); GsPutDisplayEnv1(&disp_env[0]); //execute draw/display environment(s) (contex 2) GsPutDrawEnv2 (&draw_env[1]); GsPutDisplayEnv2(&disp_env[1]); //set some common stuff GsOverridePrimAttributes(GS_DISABLE, 0, 0, 0, 0, 0, 0, 0, 0); // contex 1 GsEnableAlphaTransparency1(GS_ENABLE, GS_ALPHA_GEQUAL, 0x01, 0x00); // contex 2 GsEnableAlphaTransparency2(GS_ENABLE, GS_ALPHA_GEQUAL, 0x01, 0x00); GsEnableAlphaBlending1(GS_ENABLE, 0); GsEnableAlphaBlending2(GS_ENABLE, 0); return 0; }