Halve the time necessary to take a screenshot
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
#include "menu.h"
|
||||
#include "utils.h"
|
||||
|
||||
u8 framebuffer_cache[FB_BOTTOM_SIZE];
|
||||
u8 framebufferCache[FB_BOTTOM_SIZE];
|
||||
|
||||
static u32 gpuSavedFramebufferAddr1, gpuSavedFramebufferAddr2, gpuSavedFramebufferFormat, gpuSavedFramebufferStride;
|
||||
|
||||
@@ -127,7 +127,7 @@ void Draw_SetupFramebuffer(void)
|
||||
while((GPU_PSC0_CNT | GPU_PSC1_CNT | GPU_TRANSFER_CNT | GPU_CMDLIST_CNT) & 1);
|
||||
|
||||
svcFlushEntireDataCache();
|
||||
memcpy(framebuffer_cache, FB_BOTTOM_VRAM_ADDR, FB_BOTTOM_SIZE);
|
||||
memcpy(framebufferCache, FB_BOTTOM_VRAM_ADDR, FB_BOTTOM_SIZE);
|
||||
gpuSavedFramebufferAddr1 = GPU_FB_BOTTOM_ADDR_1;
|
||||
gpuSavedFramebufferAddr2 = GPU_FB_BOTTOM_ADDR_2;
|
||||
gpuSavedFramebufferFormat = GPU_FB_BOTTOM_FMT;
|
||||
@@ -142,7 +142,7 @@ void Draw_SetupFramebuffer(void)
|
||||
|
||||
void Draw_RestoreFramebuffer(void)
|
||||
{
|
||||
memcpy(FB_BOTTOM_VRAM_ADDR, framebuffer_cache, FB_BOTTOM_SIZE);
|
||||
memcpy(FB_BOTTOM_VRAM_ADDR, framebufferCache, FB_BOTTOM_SIZE);
|
||||
|
||||
GPU_FB_BOTTOM_ADDR_1 = gpuSavedFramebufferAddr1;
|
||||
GPU_FB_BOTTOM_ADDR_2 = gpuSavedFramebufferAddr2;
|
||||
@@ -164,14 +164,14 @@ u32 Draw_GetCurrentFramebufferAddress(bool top, bool left)
|
||||
if(left)
|
||||
return top ? GPU_FB_TOP_LEFT_ADDR_2 : GPU_FB_BOTTOM_ADDR_2;
|
||||
else
|
||||
return top ? GPU_FB_TOP_RIGHT_ADDR_2 : GPU_FB_BOTTOM_ADDR_2;
|
||||
return top ? GPU_FB_TOP_RIGHT_ADDR_2 : GPU_FB_BOTTOM_ADDR_2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(left)
|
||||
return top ? GPU_FB_TOP_LEFT_ADDR_1 : GPU_FB_BOTTOM_ADDR_1;
|
||||
else
|
||||
return top ? GPU_FB_TOP_RIGHT_ADDR_1 : GPU_FB_BOTTOM_ADDR_1;
|
||||
return top ? GPU_FB_TOP_RIGHT_ADDR_1 : GPU_FB_BOTTOM_ADDR_1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,9 +260,7 @@ static inline void Draw_ConvertPixelToBGR8(u8 *dst, const u8 *src, GSPGPU_Frameb
|
||||
}
|
||||
}
|
||||
|
||||
static u8 line[3 * 400];
|
||||
|
||||
u8 *Draw_ConvertFrameBufferLine(bool top, bool left, u32 y)
|
||||
void Draw_ConvertFrameBufferLine(u8 *line, bool top, bool left, u32 y)
|
||||
{
|
||||
GSPGPU_FramebufferFormats fmt = top ? (GSPGPU_FramebufferFormats)(GPU_FB_TOP_FMT & 7) : (GSPGPU_FramebufferFormats)(GPU_FB_BOTTOM_FMT & 7);
|
||||
u32 width = top ? 400 : 320;
|
||||
@@ -273,5 +271,4 @@ u8 *Draw_ConvertFrameBufferLine(bool top, bool left, u32 y)
|
||||
|
||||
for(u32 x = 0; x < width; x++)
|
||||
Draw_ConvertPixelToBGR8(line + x * 3 , addr + (x * 240 + y) * formatSizes[(u8)fmt], fmt);
|
||||
return line;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user