void gles2n64_reset(void) { // HACK: Check for leaks! OGL_Stop(); OGL_Start(); RSP_Init(); }
void RSP_Init() { u8 test; u32 testAddress; // Calculate RDRAM size by intentionally causing an access violation #ifndef __LINUX__ __try { testAddress = 0; while (TRUE) { test = RDRAM[testAddress]; testAddress++; } } __except (EXCEPTION_EXECUTE_HANDLER) { RDRAMSize = testAddress; } #else // !__LINUX__ RDRAMSize = 1024 * 1024 * 8; #endif // __LINUX__ RSP.DList = 0; RSP.uc_start = RSP.uc_dstart = 0; gDP.loadTile = &gDP.tiles[7]; gSP.textureTile[0] = &gDP.tiles[0]; gSP.textureTile[1] = &gDP.tiles[1]; DepthBuffer_Init(); GBI_Init(); OGL_Start(); }
EXPORT int CALL RomOpen (void) { OGL_Start(); RSP_Init(); OGL.frame_vsync = 0; OGL.frame_dl = 0; OGL.frame_prevdl = -1; OGL.mustRenderDlist = false; }
EXPORT int CALL InitiateGFX (GFX_INFO Gfx_Info) { Config_gln64_LoadConfig(); Config_gln64_LoadRomConfig(Gfx_Info.HEADER); OGL_Start(); return 1; }
void RSP_Init() { RDRAMSize = 1024 * 1024 * 8; RSP.DList = 0; RSP.uc_start = RSP.uc_dstart = 0; gDP.loadTile = &gDP.tiles[7]; gSP.textureTile[0] = &gDP.tiles[0]; gSP.textureTile[1] = &gDP.tiles[1]; DepthBuffer_Init(); GBI_Init(); OGL_Start(); }
EXPORT int CALL InitiateGFX (GFX_INFO Gfx_Info) { DMEM = Gfx_Info.DMEM; IMEM = Gfx_Info.IMEM; RDRAM = Gfx_Info.RDRAM; REG.MI_INTR = (u32*) Gfx_Info.MI_INTR_REG; REG.DPC_START = (u32*) Gfx_Info.DPC_START_REG; REG.DPC_END = (u32*) Gfx_Info.DPC_END_REG; REG.DPC_CURRENT = (u32*) Gfx_Info.DPC_CURRENT_REG; REG.DPC_STATUS = (u32*) Gfx_Info.DPC_STATUS_REG; REG.DPC_CLOCK = (u32*) Gfx_Info.DPC_CLOCK_REG; REG.DPC_BUFBUSY = (u32*) Gfx_Info.DPC_BUFBUSY_REG; REG.DPC_PIPEBUSY = (u32*) Gfx_Info.DPC_PIPEBUSY_REG; REG.DPC_TMEM = (u32*) Gfx_Info.DPC_TMEM_REG; REG.VI_STATUS = (u32*) Gfx_Info.VI_STATUS_REG; REG.VI_ORIGIN = (u32*) Gfx_Info.VI_ORIGIN_REG; REG.VI_WIDTH = (u32*) Gfx_Info.VI_WIDTH_REG; REG.VI_INTR = (u32*) Gfx_Info.VI_INTR_REG; REG.VI_V_CURRENT_LINE = (u32*) Gfx_Info.VI_V_CURRENT_LINE_REG; REG.VI_TIMING = (u32*) Gfx_Info.VI_TIMING_REG; REG.VI_V_SYNC = (u32*) Gfx_Info.VI_V_SYNC_REG; REG.VI_H_SYNC = (u32*) Gfx_Info.VI_H_SYNC_REG; REG.VI_LEAP = (u32*) Gfx_Info.VI_LEAP_REG; REG.VI_H_START = (u32*) Gfx_Info.VI_H_START_REG; REG.VI_V_START = (u32*) Gfx_Info.VI_V_START_REG; REG.VI_V_BURST = (u32*) Gfx_Info.VI_V_BURST_REG; REG.VI_X_SCALE = (u32*) Gfx_Info.VI_X_SCALE_REG; REG.VI_Y_SCALE = (u32*) Gfx_Info.VI_Y_SCALE_REG; CheckInterrupts = Gfx_Info.CheckInterrupts; Config_LoadConfig(); Config_LoadRomConfig(Gfx_Info.HEADER); ticksInitialize(); if( config.autoFrameSkip ) frameSkipper.setSkips( FrameSkipper::AUTO, config.maxFrameSkip ); else frameSkipper.setSkips( FrameSkipper::MANUAL, config.maxFrameSkip ); OGL_Start(); return 1; }
EXPORT int CALL InitiateGFX (GFX_INFO Gfx_Info) { DMEM = Gfx_Info.DMEM; IMEM = Gfx_Info.IMEM; RDRAM = Gfx_Info.RDRAM; REG.MI_INTR = (u32*) Gfx_Info.MI_INTR_REG; REG.DPC_START = (u32*) Gfx_Info.DPC_START_REG; REG.DPC_END = (u32*) Gfx_Info.DPC_END_REG; REG.DPC_CURRENT = (u32*) Gfx_Info.DPC_CURRENT_REG; REG.DPC_STATUS = (u32*) Gfx_Info.DPC_STATUS_REG; REG.DPC_CLOCK = (u32*) Gfx_Info.DPC_CLOCK_REG; REG.DPC_BUFBUSY = (u32*) Gfx_Info.DPC_BUFBUSY_REG; REG.DPC_PIPEBUSY = (u32*) Gfx_Info.DPC_PIPEBUSY_REG; REG.DPC_TMEM = (u32*) Gfx_Info.DPC_TMEM_REG; REG.VI_STATUS = (u32*) Gfx_Info.VI_STATUS_REG; REG.VI_ORIGIN = (u32*) Gfx_Info.VI_ORIGIN_REG; REG.VI_WIDTH = (u32*) Gfx_Info.VI_WIDTH_REG; REG.VI_INTR = (u32*) Gfx_Info.VI_INTR_REG; REG.VI_V_CURRENT_LINE = (u32*) Gfx_Info.VI_V_CURRENT_LINE_REG; REG.VI_TIMING = (u32*) Gfx_Info.VI_TIMING_REG; REG.VI_V_SYNC = (u32*) Gfx_Info.VI_V_SYNC_REG; REG.VI_H_SYNC = (u32*) Gfx_Info.VI_H_SYNC_REG; REG.VI_LEAP = (u32*) Gfx_Info.VI_LEAP_REG; REG.VI_H_START = (u32*) Gfx_Info.VI_H_START_REG; REG.VI_V_START = (u32*) Gfx_Info.VI_V_START_REG; REG.VI_V_BURST = (u32*) Gfx_Info.VI_V_BURST_REG; REG.VI_X_SCALE = (u32*) Gfx_Info.VI_X_SCALE_REG; REG.VI_Y_SCALE = (u32*) Gfx_Info.VI_Y_SCALE_REG; CheckInterrupts = Gfx_Info.CheckInterrupts; Config_LoadConfig(); Config_LoadRomConfig(Gfx_Info.HEADER); OGL_Start(); return 1; }
EXPORT void CALL StartGL(void) { OGL_Start(); }