mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
(3DS) 3D slider display mode selection tweaks.
This commit is contained in:
parent
0f8895bcc3
commit
4f54025a50
@ -119,44 +119,40 @@ static INLINE void ctr_check_3D_slider(ctr_video_t* ctr)
|
||||
|
||||
if (slider_val == 0.0)
|
||||
ctr->video_mode = CTR_VIDEO_MODE_NORMAL;
|
||||
else if (slider_val < 0.1)
|
||||
else if (slider_val < 0.2)
|
||||
ctr->video_mode = CTR_VIDEO_MODE_800x240;
|
||||
else if (slider_val < 0.6)
|
||||
else if (slider_val < 0.5)
|
||||
ctr->video_mode = CTR_VIDEO_MODE_400x240;
|
||||
else
|
||||
ctr->video_mode = CTR_VIDEO_MODE_3D;
|
||||
|
||||
if (old_mode != ctr->video_mode)
|
||||
if (ctr->video_mode)
|
||||
{
|
||||
switch (ctr->video_mode)
|
||||
{
|
||||
case CTR_VIDEO_MODE_800x240:
|
||||
case CTR_VIDEO_MODE_400x240:
|
||||
if (ctr_set_parallax_layer(false))
|
||||
ctr->video_mode = CTR_VIDEO_MODE_3D;
|
||||
ctr_set_parallax_layer(false);
|
||||
break;
|
||||
case CTR_VIDEO_MODE_3D:
|
||||
{
|
||||
s16 offset = (slider_val - 0.6) * 10.0;
|
||||
ctr->frame_coords[1] = ctr->frame_coords[0];
|
||||
ctr->frame_coords[2] = ctr->frame_coords[0];
|
||||
|
||||
ctr->frame_coords[1].x0 -= offset;
|
||||
ctr->frame_coords[1].x1 -= offset;
|
||||
ctr->frame_coords[2].x0 += offset;
|
||||
ctr->frame_coords[2].x1 += offset;
|
||||
|
||||
GSPGPU_FlushDataCache(ctr->frame_coords, 3 * sizeof(ctr_vertex_t));
|
||||
ctr_set_parallax_layer(true);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ctr->video_mode == CTR_VIDEO_MODE_3D)
|
||||
{
|
||||
s16 offset = (slider_val - 0.6) * 10.0;
|
||||
ctr->menu.frame_coords[1] = ctr->menu.frame_coords[0];
|
||||
ctr->menu.frame_coords[2] = ctr->menu.frame_coords[0];
|
||||
|
||||
ctr->menu.frame_coords[1].x0 += offset;
|
||||
ctr->menu.frame_coords[1].x1 += offset;
|
||||
ctr->menu.frame_coords[2].x0 -= offset;
|
||||
ctr->menu.frame_coords[2].x1 -= offset;
|
||||
|
||||
GSPGPU_FlushDataCache(ctr->menu.frame_coords, 3 * sizeof(ctr_vertex_t));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static INLINE void ctr_set_scale_vector(ctr_scale_vector_t* vec,
|
||||
@ -336,7 +332,7 @@ static void* ctr_init(const video_info_t* video,
|
||||
ctr->texture_swizzled =
|
||||
linearMemAlign(ctr->texture_width * ctr->texture_height * (ctr->rgb32? 4:2), 128);
|
||||
|
||||
ctr->frame_coords = linearAlloc(sizeof(ctr_vertex_t));
|
||||
ctr->frame_coords = linearAlloc(3 * sizeof(ctr_vertex_t));
|
||||
ctr->frame_coords->x0 = 0;
|
||||
ctr->frame_coords->y0 = 0;
|
||||
ctr->frame_coords->x1 = CTR_TOP_FRAMEBUFFER_WIDTH;
|
||||
@ -354,7 +350,7 @@ static void* ctr_init(const video_info_t* video,
|
||||
ctr->menu.texture_swizzled =
|
||||
linearMemAlign(ctr->menu.texture_width * ctr->menu.texture_height * sizeof(uint16_t), 128);
|
||||
|
||||
ctr->menu.frame_coords = linearAlloc(3 * sizeof(ctr_vertex_t));
|
||||
ctr->menu.frame_coords = linearAlloc(sizeof(ctr_vertex_t));
|
||||
|
||||
ctr->menu.frame_coords->x0 = 40;
|
||||
ctr->menu.frame_coords->y0 = 0;
|
||||
@ -501,8 +497,6 @@ static bool ctr_frame(void* data, const void* frame,
|
||||
ctr->lcd_buttom_on = !ctr->lcd_buttom_on;
|
||||
}
|
||||
|
||||
ctr_check_3D_slider(ctr);
|
||||
|
||||
svcWaitSynchronization(gspEvents[GSPGPU_EVENT_P3D], 20000000);
|
||||
svcClearEvent(gspEvents[GSPGPU_EVENT_P3D]);
|
||||
svcWaitSynchronization(gspEvents[GSPGPU_EVENT_PPF], 20000000);
|
||||
@ -633,8 +627,6 @@ static bool ctr_frame(void* data, const void* frame,
|
||||
ctr->frame_coords->u1 = width;
|
||||
ctr->frame_coords->v1 = height;
|
||||
GSPGPU_FlushDataCache(ctr->frame_coords, sizeof(ctr_vertex_t));
|
||||
|
||||
ctrGuSetAttributeBuffersAddress(VIRT_TO_PHYS(ctr->frame_coords));
|
||||
ctrGuSetVertexShaderFloatUniform(0, (float*)&ctr->scale_vector, 1);
|
||||
}
|
||||
|
||||
@ -644,6 +636,8 @@ static bool ctr_frame(void* data, const void* frame,
|
||||
GPU_TEXTURE_WRAP_S(GPU_CLAMP_TO_EDGE) | GPU_TEXTURE_WRAP_T(GPU_CLAMP_TO_EDGE),
|
||||
ctr->rgb32 ? GPU_RGBA8: GPU_RGB565);
|
||||
|
||||
ctr_check_3D_slider(ctr);
|
||||
|
||||
/* ARGB --> RGBA */
|
||||
if (ctr->rgb32)
|
||||
{
|
||||
@ -675,16 +669,28 @@ static bool ctr_frame(void* data, const void* frame,
|
||||
0, 0, CTR_TOP_FRAMEBUFFER_HEIGHT,
|
||||
ctr->video_mode == CTR_VIDEO_MODE_800x240 ? CTR_TOP_FRAMEBUFFER_WIDTH * 2 : CTR_TOP_FRAMEBUFFER_WIDTH);
|
||||
|
||||
GPU_DrawArray(GPU_GEOMETRY_PRIM, 0, 1);
|
||||
|
||||
if(ctr->video_mode == CTR_VIDEO_MODE_3D)
|
||||
if (ctr->video_mode == CTR_VIDEO_MODE_3D)
|
||||
{
|
||||
if (ctr->menu_texture_enable)
|
||||
{
|
||||
ctrGuSetAttributeBuffersAddress(VIRT_TO_PHYS(&ctr->frame_coords[1]));
|
||||
GPU_DrawArray(GPU_GEOMETRY_PRIM, 0, 1);
|
||||
ctrGuSetAttributeBuffersAddress(VIRT_TO_PHYS(&ctr->frame_coords[2]));
|
||||
}
|
||||
else
|
||||
{
|
||||
ctrGuSetAttributeBuffersAddress(VIRT_TO_PHYS(ctr->frame_coords));
|
||||
GPU_DrawArray(GPU_GEOMETRY_PRIM, 0, 1);
|
||||
}
|
||||
GPU_SetViewport(VIRT_TO_PHYS(CTR_GPU_DEPTHBUFFER),
|
||||
VIRT_TO_PHYS(CTR_TOP_FRAMEBUFFER_RIGHT),
|
||||
0, 0, CTR_TOP_FRAMEBUFFER_HEIGHT,
|
||||
CTR_TOP_FRAMEBUFFER_WIDTH);
|
||||
GPU_DrawArray(GPU_GEOMETRY_PRIM, 0, 1);
|
||||
}
|
||||
else
|
||||
ctrGuSetAttributeBuffersAddress(VIRT_TO_PHYS(ctr->frame_coords));
|
||||
|
||||
GPU_DrawArray(GPU_GEOMETRY_PRIM, 0, 1);
|
||||
|
||||
/* restore */
|
||||
if (ctr->rgb32)
|
||||
@ -714,22 +720,15 @@ static bool ctr_frame(void* data, const void* frame,
|
||||
0, 0, CTR_TOP_FRAMEBUFFER_HEIGHT,
|
||||
ctr->video_mode == CTR_VIDEO_MODE_800x240 ? CTR_TOP_FRAMEBUFFER_WIDTH * 2 : CTR_TOP_FRAMEBUFFER_WIDTH);
|
||||
|
||||
ctrGuSetAttributeBuffersAddress(VIRT_TO_PHYS(ctr->menu.frame_coords));
|
||||
GPU_DrawArray(GPU_GEOMETRY_PRIM, 0, 1);
|
||||
|
||||
if (ctr->video_mode == CTR_VIDEO_MODE_3D)
|
||||
{
|
||||
ctrGuSetAttributeBuffersAddress(VIRT_TO_PHYS(&ctr->menu.frame_coords[1]));
|
||||
GPU_DrawArray(GPU_GEOMETRY_PRIM, 0, 1);
|
||||
|
||||
GPU_SetViewport(VIRT_TO_PHYS(CTR_GPU_DEPTHBUFFER),
|
||||
VIRT_TO_PHYS(CTR_TOP_FRAMEBUFFER_RIGHT),
|
||||
0, 0, CTR_TOP_FRAMEBUFFER_HEIGHT,
|
||||
CTR_TOP_FRAMEBUFFER_WIDTH);
|
||||
ctrGuSetAttributeBuffersAddress(VIRT_TO_PHYS(&ctr->menu.frame_coords[2]));
|
||||
GPU_DrawArray(GPU_GEOMETRY_PRIM, 0, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
ctrGuSetAttributeBuffersAddress(VIRT_TO_PHYS(ctr->menu.frame_coords));
|
||||
GPU_DrawArray(GPU_GEOMETRY_PRIM, 0, 1);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user