void psp_init(void) { SceUID thid; char buff[128], *r; /* fw 1.5 sometimes returns 8002032c, although getcwd works */ r = getcwd(buff, sizeof(buff)); if (r) sceIoChdir(buff); main_thread_id = sceKernelGetThreadId(); lprintf("running on %08x kernel\n", sceKernelDevkitVersion()), lprintf("entered psp_init, threadId %08x, priority %i\n", main_thread_id, sceKernelGetThreadCurrentPriority()); thid = sceKernelCreateThread("update_thread", callback_thread, 0x11, 0xFA0, 0, NULL); if (thid >= 0) { sceKernelStartThread(thid, 0, 0); } /* video */ sceDisplaySetMode(0, 480, 272); sceDisplaySetFrameBuf(VRAM_FB1, 512, PSP_DISPLAY_PIXEL_FORMAT_565, PSP_DISPLAY_SETBUF_NEXTFRAME); current_screen = 1; psp_screen = VRAM_FB0; /* gu */ sceGuInit(); sceGuStart(GU_DIRECT, guCmdList); sceGuDrawBuffer(GU_PSM_5650, (void *)VRAMOFFS_FB0, 512); sceGuDispBuffer(480, 272, (void *)VRAMOFFS_FB1, 512); // don't care sceGuClear(GU_COLOR_BUFFER_BIT | GU_DEPTH_BUFFER_BIT); sceGuDepthBuffer((void *)VRAMOFFS_DEPTH, 512); sceGuOffset(2048 - (480 / 2), 2048 - (272 / 2)); sceGuViewport(2048, 2048, 480, 272); sceGuDepthRange(0xc350, 0x2710); sceGuScissor(0, 0, 480, 272); sceGuEnable(GU_SCISSOR_TEST); sceGuDepthMask(0xffff); sceGuDisable(GU_DEPTH_TEST); sceGuFrontFace(GU_CW); sceGuEnable(GU_TEXTURE_2D); sceGuTexFunc(GU_TFX_REPLACE, GU_TCC_RGB); sceGuAmbientColor(0xffffffff); sceGuColor(0xffffffff); sceGuFinish(); sceGuSync(0, 0); sceDisplayWaitVblankStart(); sceGuDisplay(GU_TRUE); /* input */ sceCtrlSetSamplingCycle(0); sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG); }
void vidgu_init() { g_pBlitBuff = (unsigned short *)(0x40000000 | (unsigned int)&g_BlitBuff); sceGuInit(); // setup sceGuStart(GU_DIRECT,list); sceGuDrawBuffer(GU_PSM_5650,(void*)0,512); sceGuDispBuffer(480,272,(void*)0x88000,512); sceGuDepthBuffer((void*)0x110000,512); sceGuOffset(2048 - (480/2),2048 - (272/2)); sceGuViewport(2048,2048,480,272); sceGuDepthRange(0xc350,0x2710); sceGuScissor(0,0,480,272); sceGuEnable(GU_SCISSOR_TEST); sceGuFrontFace(GU_CW); sceGuEnable(GU_TEXTURE_2D); sceGuClear(GU_COLOR_BUFFER_BIT|GU_DEPTH_BUFFER_BIT); sceGuFinish(); sceGuSync(0,0); sceDisplayWaitVblankStart(); sceGuDisplay(1); }
void MasterGuRenderer::guInit() { DEBUG_ENTER_FUNC(); sceGuInit(); sceGuStart(0, _displayList); guProgramDisplayBufferSizes(); sceGuOffset(2048 - (PSP_SCREEN_WIDTH / 2), 2048 - (PSP_SCREEN_HEIGHT / 2)); sceGuViewport(2048, 2048, PSP_SCREEN_WIDTH, PSP_SCREEN_HEIGHT); sceGuDepthRange(0xC350, 0x2710); sceGuDisable(GU_DEPTH_TEST); // We'll use depth buffer area sceGuDepthMask(GU_TRUE); // Prevent writes to depth buffer sceGuScissor(0, 0, PSP_SCREEN_WIDTH, PSP_SCREEN_HEIGHT); sceGuEnable(GU_SCISSOR_TEST); sceGuFrontFace(GU_CW); sceGuEnable(GU_TEXTURE_2D); sceGuClear(GU_COLOR_BUFFER_BIT | GU_DEPTH_BUFFER_BIT); sceGuFinish(); sceGuSync(0, 0); sceDisplayWaitVblankStart(); sceGuDisplay(1); }
void vidgu_render_nostretch(int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh) { int start, end; sceGuStart(GU_DIRECT,list); sceGuTexMode(GU_PSM_5650,0,0,0); // 16-bit RGBA sceGuTexImage(0,512,512,512,g_pBlitBuff); // setup texture as a 256x256 texture //sceKernelDcacheWritebackAll(); sceGuTexFunc(GU_TFX_REPLACE,GU_TCC_RGBA); // don't get influenced by any vertex colors sceGuTexFilter(GU_NEAREST,GU_NEAREST); // point-filtered sampling for (start = sx, end = sx+sw; start < end; start += SLICE_SIZE, dx += SLICE_SIZE) { struct Vertex* vertices = (struct Vertex*)sceGuGetMemory(2 * sizeof(struct Vertex)); int width = (start + SLICE_SIZE) < end ? SLICE_SIZE : end-start; vertices[0].u = start; vertices[0].v = sy; vertices[0].color = 0; vertices[0].x = dx; vertices[0].y = dy; vertices[0].z = 0; vertices[1].u = start + width; vertices[1].v = sy + sh; vertices[1].color = 0; vertices[1].x = dx + width; vertices[1].y = dy + sh; vertices[1].z = 0; sceGuDrawArray(GU_SPRITES,GU_TEXTURE_16BIT|GU_COLOR_5650|GU_VERTEX_16BIT|GU_TRANSFORM_2D,2,0,vertices); } sceGuFinish(); sceGuSync(0,0); sceDisplayWaitVblankStart(); sceGuSwapBuffers(); //sceGuSwapBuffers(); }
void psp_init() { SetupCallbacks(); sceGuInit(); //sceGuStart(GU_DIRECT,list); //sceGuDrawBuffer(GU_PSM_5650,(void*)0,512); //sceGuDispBuffer(SCR_WIDTH,SCR_HEIGHT,(void*)0x44000,512); //sceGuViewport(0,0,SCR_WIDTH,SCR_HEIGHT); //sceGuScissor(0,0,SCR_WIDTH,SCR_HEIGHT); //sceGuEnable(GU_SCISSOR_TEST); //sceGuFrontFace(GU_CW); //sceGuShadeModel(GU_SMOOTH); //sceGuEnable(GU_CULL_FACE); //sceGuEnable(GU_TEXTURE_2D); //sceGuFinish(); //sceGuSync(0,0); //sceGuDisplay(GU_TRUE); sceGuStart(GU_DIRECT,list); sceGuDrawBuffer(GU_PSM_5650,(void*)0,512); sceGuDispBuffer(SCR_WIDTH,SCR_HEIGHT,(void*)0x44000,512); //sceGuViewport(0,0,SCR_WIDTH,SCR_HEIGHT); //sceGuScissor(0,0,SCR_WIDTH,SCR_HEIGHT); //sceGuEnable(GU_SCISSOR_TEST); //sceGuFrontFace(GU_CW); //sceGuShadeModel(GU_SMOOTH); //sceGuEnable(GU_CULL_FACE); //sceGuEnable(GU_TEXTURE_2D); sceGuFinish(); sceGuSync(0,0); sceGuDisplay(GU_TRUE); }
void _gInit() { // Init & setup GU sceGuInit(); sceGuStart(GU_DIRECT,list); sceGuDrawBuffer(GU_PSM_8888,(void*)FRAMEBUFFER_SIZE,PSP_LINE_SIZE); sceGuDispBuffer(G_SCR_W,G_SCR_H,(void*)0,PSP_LINE_SIZE); sceGuDepthBuffer((void*)(FRAMEBUFFER_SIZE*2),PSP_LINE_SIZE); sceGuOffset(2048-(G_SCR_W/2),2048-(G_SCR_H/2)); sceGuViewport(2048,2048,G_SCR_W,G_SCR_H); gResetScissor(); sceGuDepthRange(65535,0); sceGuClearDepth(65535); sceGuAlphaFunc(GU_GREATER,0,0xff); sceGuDepthFunc(GU_LEQUAL); sceGuBlendFunc(GU_ADD,GU_SRC_ALPHA,GU_ONE_MINUS_SRC_ALPHA,0,0); sceGuTexFunc(GU_TFX_MODULATE,GU_TCC_RGBA); sceGuTexFilter(GU_LINEAR,GU_LINEAR); sceGuShadeModel(GU_FLAT); sceGuDisable(GU_CULL_FACE); sceGuDisable(GU_CLIP_PLANES); sceGuDisable(GU_DITHER); sceGuEnable(GU_ALPHA_TEST); sceGuEnable(GU_SCISSOR_TEST); sceGuFinish(); sceGuSync(0,0); sceDisplayWaitVblankStart(); sceGuDisplay(GU_TRUE); init = G_TRUE; }
void drawUploadTransfer() { sceDisplaySetMode(0, SCR_WIDTH, SCR_HEIGHT); sceGuStart(GU_DIRECT, list); sceGuTexFilter(GU_LINEAR, GU_LINEAR); sceGuFinish(); sceGuSync(0, 0); // This time, we only need one buffer. switchBuf(0, GU_PSM_8888); drawTexFlush(2, 2, 16, GU_PSM_T8, imageData, clutAddOne, vertices1); sceDisplayWaitVblank(); // Okay, let's draw a totally different pattern in memory. for (int y = 0; y < 272; ++y) { for (int x = 0; x < 512; ++x) { copybuf[y * 512 + x] = (x & 1) + (y & 1); } } sceKernelDcacheWritebackInvalidateAll(); sceDmacMemcpy(getBufAddr(0), copybuf, sizeof(copybuf)); sceKernelDcacheWritebackInvalidateAll(); // Now download should display out pattern. displayBuffer("Pattern"); }
void testBlendFunc(const char *title, u32 prev, u32 c, int op, int src, int dst, u32 fixa, u32 fixb) { for (size_t i = 0; i < sizeof(copybuf) / 4; ++i) { copybuf[i] = prev; } sceKernelDcacheWritebackInvalidateAll(); sceDmacMemcpy(sceGeEdramGetAddr(), copybuf, sizeof(copybuf)); sceKernelDcacheWritebackInvalidateAll(); sceGuStart(GU_DIRECT, list); sceGuEnable(GU_BLEND); sceGuBlendFunc(op, src, dst, fixa, fixb); sceGuEnable(GU_STENCIL_TEST); sceGuStencilFunc(GU_ALWAYS, 0xAA, 0xFF); sceGuStencilOp(GU_REPLACE, GU_REPLACE, GU_REPLACE); drawBoxCommands(c); sceGuFinish(); sceGuSync(GU_SYNC_WAIT, GU_SYNC_WHAT_DONE); displayBuffer(title); sceGuDisable(GU_BLEND); }
void nextBoxHasColor(int *x, int *y, HasColorMode mode) { VertexColor *sendVertices = mode & HASCOLOR_RGBA_TRANSPARENT ? transparentColorVertices : colorVertices; sendVertices[0].x = *x; sendVertices[0].y = *y; sendVertices[1].x = *x + 40; sendVertices[1].y = *y + 20; *x += 47; if (*x >= 470) { *x = 10; *y += 26; } sceKernelDcacheWritebackRange(sendVertices, sizeof(colorVertices)); sceGuEnable(GU_TEXTURE_2D); sceGuTexMode(GU_PSM_T8, 0, 0, GU_FALSE); sceGuTexFunc(GU_TFX_DECAL, mode & HASCOLOR_RGB ? GU_TCC_RGB : GU_TCC_RGBA); sceGuTexImage(0, 4, 4, 16, imageData); sceGuDrawArray(GU_SPRITES, GU_COLOR_8888 | GU_TEXTURE_16BIT | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 2, NULL, sendVertices); sceGuFinish(); sceGuSync(GU_SYNC_LIST, GU_SYNC_WHAT_DONE); sceGuSync(0, 0); sceGuStart(GU_DIRECT, list); }
// These are GU commands that should always stay the same inline void MasterGuRenderer::guPreRender() { DEBUG_ENTER_FUNC(); #ifdef USE_DISPLAY_CALLBACK _renderSema.take(); // Take the semaphore to prevent writes // to the palette/screen before we're done _renderFinished = false; // set to synchronize with callback thread #endif #ifdef ENABLE_RENDER_MEASURE _lastRenderTime = g_system->getMillis(); #endif /* ENABLE_RENDER_MEASURE */ sceGuStart(0, _displayList); sceGuClearColor(0xFF000000); sceGuClear(GU_COLOR_BUFFER_BIT); sceGuAmbientColor(0xFFFFFFFF); sceGuColor(0xFFFFFFFF); sceGuTexOffset(0, 0); sceGuTexFilter(GU_LINEAR, GU_LINEAR); sceGuTexFunc(GU_TFX_REPLACE, GU_TCC_RGBA); // Also good enough for all purposes sceGuAlphaFunc(GU_GREATER, 0, 0xFF); // Also good enough for all purposes }
void MFRenderer_BeginFramePlatformSpecific() { MFCALLSTACK; currentVert = 0; sceGuStart(0, displayList); }
void _gStart() { if (!init) _gInit(); sceKernelDcacheWritebackAll(); sceGuStart(GU_DIRECT,list); start = G_TRUE; }
void clearScreenPrintHeader(int y) { i = 0; sceGuStart(GU_DIRECT, list); sceGuClear(GU_COLOR_BUFFER_BIT); drawStringCenter("warPSP", y, 0xFF990000, 0); drawStringCenter("warXing Suite", y ? y + 20 : y + 10, 0xFF550000, 0); drawStringCenter("Easy Installation Program", y ? y + 40 : y + 30, 0xFF000000, 0); drawStringCenter("by caliFrag", y ? y + 80 : y + 20, 0xFF006600, 0); }
static void psp_set_texture_frame(void *data, const void *frame, bool rgb32, unsigned width, unsigned height, float alpha) { psp1_video_t *psp = (psp1_video_t*)data; (void) rgb32; (void) alpha; #ifdef DEBUG /* psp->menu.frame buffer size is (480 * 272)*2 Bytes */ rarch_assert((width*height) < (480 * 272)); #endif psp_set_screen_coords(psp->menu.frame_coords, 0, 0, SCEGU_SCR_WIDTH, SCEGU_SCR_HEIGHT, 0); psp_set_tex_coords(psp->menu.frame_coords, width, height); sceKernelDcacheWritebackRange(frame, width * height * 2); sceGuStart(GU_DIRECT, psp->main_dList); sceGuCopyImage(GU_PSM_4444, 0, 0, width, height, width, (void*)frame, 0, 0, width, psp->menu.frame); sceGuFinish(); sceGuStart(GU_SEND, psp->menu.dList); sceGuTexMode(GU_PSM_4444, 0, 0, GU_FALSE); sceGuTexFunc(GU_TFX_REPLACE, GU_TCC_RGB); sceGuTexFilter(GU_LINEAR, GU_LINEAR); sceGuTexImage(0, next_pow2(width), next_pow2(height), width, psp->menu.frame); sceGuEnable(GU_BLEND); #if 0 /* default blending */ sceGuBlendFunc(GU_ADD, GU_SRC_ALPHA, GU_ONE_MINUS_SRC_ALPHA, 0, 0); #endif sceGuBlendFunc(GU_ADD, GU_FIX, GU_FIX, 0xF0F0F0F0, 0x0F0F0F0F); ; sceGuDrawArray(GU_SPRITES, GU_TEXTURE_32BITF | GU_VERTEX_32BITF | GU_TRANSFORM_2D, PSP_FRAME_VERTEX_COUNT, NULL, psp->menu.frame_coords); sceGuFinish(); }
void switchBuf(int i, int fmt) { int off = (i * 512 * 272 * 4); void *p = (void *)off; drawbuf = (u32 *)getBufAddr(i); sceGuStart(GU_DIRECT, list); sceGuDrawBuffer(fmt, p, BUF_WIDTH); sceGuDispBuffer(SCR_WIDTH, SCR_HEIGHT, p, BUF_WIDTH); sceGuFinish(); sceGuSync(0, 0); }
/* Write files to or from the flash0. */ int fileCopy(const char* sFileSrc , const char* sFileDest) { if (fileExist(sFileSrc)) { int fd1, fd2, len; char buf[128*1024]; sceIoUnassign("flash0:"); sceIoAssign("flash0:", "lflash0:0,0", "flashfat0:", 0, NULL, 0); fd1 = sceIoOpen(sFileSrc, PSP_O_RDONLY, 0); fd2 = sceIoOpen(sFileDest, PSP_O_WRONLY | PSP_O_CREAT | PSP_O_TRUNC, 0777); while(1) { len = sceIoRead(fd1, buf, sizeof(buf)); if (len == 0) break; sceIoWrite(fd2, buf, len); } sceIoClose(fd1); sceIoClose(fd2); sceIoUnassign("flash0:"); sprintf(buffer, " %s > %s Done.", sFileSrc, sFileDest); swapBuffers(); sceGuStart(GU_DIRECT, list); drawStringCenter(buffer, 50 + (10 * i), 0xFF000000, 7); drawObjects(); i++; return 1; } else { sprintf(buffer, " File not found: %s", sFileSrc); swapBuffers(); sceGuStart(GU_DIRECT, list); drawStringCenter(buffer, 50 + (10 * i), 0xFF000099, 7); drawObjects(); i++; return 0; } i++; }
void vidgu_render(int sx, int sy, int sw,int sh,int dx, int dy, int dw,int dh) { unsigned int j,cx,cy; struct Vertex* vertices; cx=(480-dw)/2; cy=(272-dh)/2; sceGuStart(GU_DIRECT,list); sceGuTexMode(GU_PSM_5650,0,0,0); // 16-bit RGBA sceGuTexImage(0,512,512,512,g_pBlitBuff); // setup texture as a 256x256 texture //sceKernelDcacheWritebackAll(); sceGuTexFunc(GU_TFX_REPLACE,GU_TCC_RGBA); // don't get influenced by any vertex colors sceGuTexFilter(GU_LINEAR,GU_LINEAR); // point-filtered sampling int start, end; float ustart = (float)sx; float ustep = (float)sw / (float)(dw / SLICE_SIZE); // blit maximizing the use of the texture-cache for (start = sx, end = sx+dw; start < end; start += SLICE_SIZE, dx += SLICE_SIZE) { struct Vertex* vertices = (struct Vertex*)sceGuGetMemory(2 * sizeof(struct Vertex)); int width = (start + SLICE_SIZE) < end ? SLICE_SIZE : end-start; vertices[0].u = ustart; vertices[0].v = (float)sy; vertices[0].color = 0; vertices[0].x = dx; vertices[0].y = dy; vertices[0].z = 0; vertices[1].u = ustart + ustep; vertices[1].v = (float)(sy + sh); vertices[1].color = 0; vertices[1].x = dx + width; vertices[1].y = dy + dh; vertices[1].z = 0; sceGuDrawArray(GU_SPRITES,GU_TEXTURE_16BIT|GU_COLOR_5650|GU_VERTEX_16BIT|GU_TRANSFORM_2D,2,0,vertices); ustart += ustep; } sceGuFinish(); sceGuSync(0,0); sceDisplayWaitVblankStart(); sceGuSwapBuffers(); }
void oslDrawDialog() { if (dialogType == OSL_DIALOG_MESSAGE || dialogType == OSL_DIALOG_ERROR){ switch(sceUtilityMsgDialogGetStatus()) { case PSP_UTILITY_DIALOG_INIT: case PSP_UTILITY_DIALOG_VISIBLE: sceGuFinish(); sceGuSync(0,0); sceUtilityMsgDialogUpdate(1); sceGuStart(GU_DIRECT, osl_list); oslSetAlpha(OSL_FX_RGBA, 0xff); break; case PSP_UTILITY_DIALOG_QUIT: sceUtilityMsgDialogShutdownStart(); break; case PSP_UTILITY_DIALOG_NONE: break; } }else if (dialogType == OSL_DIALOG_NETCONF){ switch(sceUtilityNetconfGetStatus()){ case PSP_UTILITY_DIALOG_INIT: case PSP_UTILITY_DIALOG_VISIBLE: sceGuFinish(); sceGuSync(0,0); sceUtilityNetconfUpdate(1); sceGuStart(GU_DIRECT, osl_list); oslSetAlpha(OSL_FX_RGBA, 0xff); break; case PSP_UTILITY_DIALOG_QUIT: sceUtilityNetconfShutdownStart(); break; case PSP_UTILITY_DIALOG_NONE: case PSP_UTILITY_DIALOG_FINISHED: break; } } }
//********************************************************************************** // //********************************************************************************** void CTexture::Upload() { // Swizzle(); sceGuStart( GU_DIRECT, CGfx::GetDrawList() ); sceGuCopyImage( GU_PSM_8888, 0, 0, m_nWidth, m_nHeight, m_nCanvasWidth, m_pBuffer, 0, 0, m_nCanvasWidth, s_pVRAM ); sceGuFinish(); sceGuSync( 0, 0 ); m_pVRAM = s_pVRAM; s_pVRAM += m_nCanvasWidth * m_nHeight * 4; }
void psp_sdl_gu_init(void) { sceGuStart(GU_DIRECT,list); sceGuEnable(GU_TEXTURE_2D); sceGuTexMode(GU_PSM_5650, 0, 0, GU_FALSE); sceGuTexFunc(GU_TFX_REPLACE, GU_TCC_RGB); sceGuTexFilter(GU_LINEAR, GU_LINEAR); sceGuDisable(GU_BLEND); sceGuDisable(GU_DEPTH_TEST); sceGuFinish(); sceGuSync(0, 0); sceDisplayWaitVblankStart(); }
void drawWithIndexOffsets() { sceDisplaySetMode(0, SCR_WIDTH, SCR_HEIGHT); sceGuStart(GU_DIRECT, list); sceGuTexFilter(GU_NEAREST, GU_NEAREST); sceGuFinish(); sceGuSync(0, 0); checkpointNext("Index shifts 8888:"); drawWithIndexOffsetsFmt(GU_PSM_8888); schedf("\n"); checkpointNext("Index shifts 4444:"); drawWithIndexOffsetsFmt(GU_PSM_4444); }
void drawTexFlush(int width, int height, int stride, int texfmt, const void *tex, const void *clut, int clutfmt, int blocks, const void *verts, int indexMask) { sceGuStart(GU_DIRECT, list); sceGuEnable(GU_TEXTURE_2D); sceGuTexMode(texfmt, 0, 0, GU_FALSE); sceGuTexFunc(GU_TFX_DECAL, GU_TCC_RGB); sceGuTexImage(0, width, height, stride, tex); sceGuClutLoad(blocks, clut); sceGuClutMode(clutfmt, 0, indexMask, 0); sceGuDrawArray(GU_SPRITES, GU_TEXTURE_16BIT | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 2, NULL, verts); sceGuFinish(); sceGuSync(0, 0); }
void DrawScene( void ) { sceGuStart( GU_DIRECT, sceneList ); sceGuViewport( 2048, 2048, SCR_WIDTH, SCR_HEIGHT); sceGuClear(GU_COLOR_BUFFER_BIT|GU_DEPTH_BUFFER_BIT); sceGumMatrixMode(GU_MODEL); sceGumLoadIdentity(); // Reset the Matrix myScene->render(); // Render the scene sceGuFinish(); sceGuSync(0,0); }
void init() { void *fbp0 = 0; sceGuInit(); sceGuStart(GU_DIRECT, list); sceGuDrawBuffer(GU_PSM_8888, fbp0, BUF_WIDTH); sceGuDispBuffer(SCR_WIDTH, SCR_HEIGHT, fbp0, BUF_WIDTH); sceGuScissor(0, 0, SCR_WIDTH, SCR_HEIGHT); sceGuEnable(GU_SCISSOR_TEST); sceGuFinish(); sceGuSync(0, 0); sceDisplayWaitVblankStart(); sceGuDisplay(1); }
void DrawScene( void ) { #warning Try taking out this display list at some point sceGuStart( GU_DIRECT, sceneList ); sceGuViewport( 2048, 2048, SCR_WIDTH, SCR_HEIGHT); sceGuClear(GU_COLOR_BUFFER_BIT|GU_DEPTH_BUFFER_BIT); sceGumMatrixMode(GU_MODEL); sceGumLoadIdentity(); // Reset the Matrix myScene.render(); // Render the scene sceGuFinish(); sceGuSync(0,0); }
void Red3dInitScreen() { intraFontInit(); ltn = intraFontLoad("flash0:/font/ltn8.pgf", 0); if(!ltn) sceKernelExitGame(); intraFontSetStyle(ltn, 1.0f, 0xFFFFFFFF, 0xBFBFBFBF, 0); void *fbp0 = vrelptr(valloc((FRAMEBUFFER_WIDTH * sizeof(unsigned int)) * SCREEN_HEIGHT)); void *fbp1 = vrelptr(valloc((FRAMEBUFFER_WIDTH * sizeof(unsigned int)) * SCREEN_HEIGHT)); void *zbp = vrelptr(valloc((FRAMEBUFFER_WIDTH * sizeof(unsigned short)) * SCREEN_HEIGHT)); pspDebugScreenInit(); sceGuInit(); sceGuStart(GU_DIRECT,list); sceGuDrawBuffer(GU_PSM_8888, fbp0, FRAMEBUFFER_WIDTH); sceGuDispBuffer(SCREEN_WIDTH, SCREEN_HEIGHT, fbp1, FRAMEBUFFER_WIDTH); sceGuDepthBuffer(zbp, FRAMEBUFFER_WIDTH); sceGuOffset(2048 - (SCREEN_WIDTH/2),2048 - (SCREEN_HEIGHT/2)); sceGuViewport(2048, 2048, SCREEN_WIDTH, SCREEN_HEIGHT); sceGuDepthRange(65535, 0); sceGuScissor(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); sceGuDepthFunc(GU_GEQUAL); sceGuEnable(GU_DEPTH_TEST); sceGuEnable(GU_SCISSOR_TEST); sceGuFrontFace(GU_CCW); sceGuShadeModel(GU_SMOOTH); sceGuEnable(GU_CULL_FACE); sceGuEnable(GU_CLIP_PLANES); sceGuEnable(GU_BLEND); sceGuBlendFunc(GU_ADD, GU_SRC_ALPHA, GU_ONE_MINUS_SRC_ALPHA, 0, 0); sceGuEnable(GU_TEXTURE_2D); sceGuTexFunc(GU_TFX_ADD,GU_TCC_RGBA); sceGuTexFilter(GU_LINEAR,GU_LINEAR); sceGuFinish(); sceGuSync(0,0); Red3dSetupScreen(); }
void Red3dSetupScreen() { sceGuDisplay(GU_TRUE); sceGuStart(GU_DIRECT,list); sceGuClearColor(GRAY); sceGuClearDepth(0); sceGuClear(GU_COLOR_BUFFER_BIT|GU_DEPTH_BUFFER_BIT); sceGumMatrixMode(GU_VIEW); sceGumLoadIdentity(); { sceGumTranslate(&CameraPosition); sceGumRotateXYZ(&CameraRotation); } sceGumMatrixMode(GU_PROJECTION); sceGumLoadIdentity(); sceGumPerspective(25.0f,16.0f/9.0f,0.5f,1000.0f); }
void InitGU( void ) { // Init GU sceGuInit(); sceGuStart( GU_DIRECT, dList ); // Set Buffers sceGuDrawBuffer( GU_PSM_8888, fbp0, BUF_WIDTH ); sceGuDispBuffer( SCR_WIDTH, SCR_HEIGHT, (void*)0x88000, BUF_WIDTH); sceGuDepthBuffer( (void*)0x110000, BUF_WIDTH); sceGuOffset( 2048 - (SCR_WIDTH/2), 2048 - (SCR_HEIGHT/2)); sceGuDepthRange( 65535, 0); // Set Render States sceGuScissor( 0, 0, SCR_WIDTH, SCR_HEIGHT); sceGuEnable( GU_SCISSOR_TEST ); sceGuDepthFunc( GU_GEQUAL ); sceGuEnable( GU_DEPTH_TEST ); sceGuFrontFace( GU_CW ); sceGuEnable( GU_CULL_FACE ); sceGuShadeModel( GU_SMOOTH ); sceGuEnable( GU_CLIP_PLANES ); sceGuEnable( GU_TEXTURE_2D ); sceGuEnable( GU_LIGHTING ); sceGuEnable( GU_LIGHT0 ); // Enable Light 1 (NEW) // setup texture // 32-bit image, if we swizzled the texture will return true, otherwise false (NEW) sceGuTexMode( GU_PSM_8888, 0, 0, true ); sceGuTexFunc( GU_TFX_MODULATE, GU_TCC_RGB ); // Modulate the color of the image sceGuTexScale( 1.0f, 1.0f ); // No scaling sceGuTexOffset( 0.0f, 0.0f ); sceGuFinish(); sceGuSync(0,0); sceDisplayWaitVblankStart(); sceGuDisplay(GU_TRUE); // finish }
int os_fb_init(int argc, char** argv) { int i; if (os_byte_fb != NULL) return 1; //os_byte_fb = //(os_byte_t*) malloc(640*480*4); os_byte_fb = pixels; for (i = 0; i < 256; ++i) { os_fb_palette[i].r = 0; os_fb_palette[i].g = 0; os_fb_palette[i].b = 0; } pspDebugScreenInit(); SetupCallbacks(); sceGuInit(); // setup sceGuStart(0,list); sceGuDrawBuffer(GE_PSM_4444,(void*)0,512); sceGuDispBuffer(480,272,(void*)0x88000,512); sceGuDepthBuffer((void*)0x110000,512); sceGuOffset(2048 - (480/2),2048 - (272/2)); sceGuViewport(2048,2048,480,272); sceGuDepthRange(0xc350,0x2710); sceGuScissor(0,0,480,272); sceGuEnable(GU_STATE_SCISSOR); sceGuFrontFace(GE_FACE_CW); sceGuEnable(GU_STATE_TEXTURE); sceGuClear(GE_CLEAR_COLOR|GE_CLEAR_DEPTH); sceGuFinish(); sceGuSync(0,0); sceDisplayWaitVblankStart(); sceGuDisplay(1); return 0; /// return x11_display_init(640, 480, "dacube2", argc, argv); }
void init() { sceGuInit(); sceGuStart(GU_DIRECT, list); sceGuDrawBuffer(GU_PSM_8888, fbp0, 512); sceGuDispBuffer(480, 272, fbp0, 512); sceGuDepthBuffer(dbp0, 512); sceGuOffset(2048 - (240 / 2), 2048 - (136 / 2)); sceGuViewport(2048, 2048, 240, 136); sceGuDepthRange(65535, 0); sceGuDepthMask(0); sceGuScissor(0, 0, 480, 272); sceGuEnable(GU_SCISSOR_TEST); sceGuFrontFace(GU_CW); sceGuShadeModel(GU_SMOOTH); sceGuDisable(GU_TEXTURE_2D); ScePspFMatrix4 ones = { {1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}, }; sceGuSetMatrix(GU_MODEL, &ones); sceGuSetMatrix(GU_VIEW, &ones); sceGuSetMatrix(GU_PROJECTION, &ones); sceGuFinish(); sceGuSync(0, 0); sceDisplayWaitVblankStart(); sceGuDisplay(1); memset(copybuf, 0x44, sizeof(copybuf)); sceKernelDcacheWritebackInvalidateAll(); sceDmacMemcpy(sceGeEdramGetAddr(), copybuf, sizeof(copybuf)); sceKernelDcacheWritebackInvalidateAll(); displayBuffer("Initial"); }