(GX) Add rotation options in settings menu

This commit is contained in:
Twinaphex 2012-08-08 18:46:48 +02:00
parent 2f9585829e
commit 5e2307d9c9
4 changed files with 55 additions and 9 deletions

View File

@ -319,6 +319,13 @@ static void render_text(rgui_handle_t *rgui)
case RGUI_SETTINGS_VIDEO_FILTER:
snprintf(type_str, sizeof(type_str), g_settings.video.smooth ? "Bilinear filtering" : "Point filtering");
break;
case RGUI_SETTINGS_VIDEO_ROTATION:
{
char rotate_msg[64];
rarch_settings_create_menu_item_label(rotate_msg, S_LBL_ROTATION, sizeof(rotate_msg));
snprintf(type_str, sizeof(type_str), rotate_msg);
}
break;
case RGUI_SETTINGS_AUDIO_MUTE:
snprintf(type_str, sizeof(type_str), g_extern.audio_data.mute ? "ON" : "OFF");
break;
@ -382,6 +389,29 @@ static void rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t
else
rarch_settings_change(S_HW_TEXTURE_FILTER);
break;
case RGUI_SETTINGS_VIDEO_ROTATION:
if (action == RGUI_ACTION_START)
{
rarch_settings_default(S_DEF_AUDIO_CONTROL_RATE);
#ifdef GEKKO
video_wii.set_rotation(NULL, g_console.screen_orientation);
#endif
}
else if (action == RGUI_ACTION_LEFT)
{
rarch_settings_change(S_ROTATION_DECREMENT);
#ifdef GEKKO
video_wii.set_rotation(NULL, g_console.screen_orientation);
#endif
}
else if (action == RGUI_ACTION_RIGHT)
{
rarch_settings_change(S_ROTATION_INCREMENT);
#ifdef GEKKO
video_wii.set_rotation(NULL, g_console.screen_orientation);
#endif
}
break;
case RGUI_SETTINGS_AUDIO_MUTE:
if (action == RGUI_ACTION_START)
rarch_settings_default(S_DEF_AUDIO_MUTE);
@ -470,6 +500,7 @@ static void rgui_settings_populate_entries(rgui_handle_t *rgui)
rgui_list_clear(rgui->folder_buf);
RGUI_MENU_ITEM("Hardware filtering", RGUI_SETTINGS_VIDEO_FILTER);
RGUI_MENU_ITEM("Rotation", RGUI_SETTINGS_VIDEO_ROTATION);
RGUI_MENU_ITEM("Mute Audio", RGUI_SETTINGS_AUDIO_MUTE);
RGUI_MENU_ITEM("Audio Control Rate", RGUI_SETTINGS_AUDIO_CONTROL_RATE);
RGUI_MENU_ITEM("Core", RGUI_SETTINGS_CORE);

View File

@ -34,6 +34,7 @@ typedef enum
// settings options are done here too
RGUI_SETTINGS_VIDEO_FILTER,
RGUI_SETTINGS_VIDEO_ROTATION,
RGUI_SETTINGS_AUDIO_MUTE,
RGUI_SETTINGS_AUDIO_CONTROL_RATE,
RGUI_SETTINGS_CORE,

View File

@ -61,27 +61,29 @@ float tex_coords[8] ATTRIBUTE_ALIGN(32) = {
1, 0,
};
float vertexes_90[8] ATTRIBUTE_ALIGN(32) = {
float tex_coords_90[8] ATTRIBUTE_ALIGN(32) = {
0, 1,
1, 1,
1, 0,
0, 0
};
float vertexes_180[8] ATTRIBUTE_ALIGN(32) = {
float tex_coords_180[8] ATTRIBUTE_ALIGN(32) = {
1, 1,
1, 0,
0, 0,
0, 1
};
float vertexes_270[8] ATTRIBUTE_ALIGN(32) = {
float tex_coords_270[8] ATTRIBUTE_ALIGN(32) = {
1, 0,
0, 0,
0, 1,
1, 1
};
float *vertex_ptr = tex_coords;
static void retrace_callback(u32 retrace_count)
{
(void)retrace_count;
@ -138,7 +140,7 @@ static void init_vtx(GXRModeObj *mode)
GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GX_SetArray(GX_VA_POS, verts, 3 * sizeof(float));
GX_SetArray(GX_VA_TEX0, tex_coords, 2 * sizeof(float));
GX_SetArray(GX_VA_TEX0, vertex_ptr, 2 * sizeof(float));
GX_SetNumTexGens(1);
GX_SetNumChans(0);
@ -485,7 +487,23 @@ static void wii_set_rotation(void * data, uint32_t orientation)
(void)data;
(void)orientation;
/* TODO */
switch(orientation)
{
case ORIENTATION_NORMAL:
vertex_ptr = tex_coords;
break;
case ORIENTATION_VERTICAL:
vertex_ptr = tex_coords_90;
break;
case ORIENTATION_FLIPPED:
vertex_ptr = tex_coords_180;
break;
case ORIENTATION_FLIPPED_ROTATED:
vertex_ptr = tex_coords_270;
break;
}
GX_SetArray(GX_VA_TEX0, vertex_ptr, 2 * sizeof(float));
}
const video_driver_t video_wii = {

View File

@ -153,19 +153,15 @@ static void xdk_d3d_set_rotation(void * data, unsigned orientation)
{
case ORIENTATION_NORMAL:
angle = M_PI * 0 / 180;
RARCH_LOG("D3D8: Set rotation to ORIENTATION_NORMAL\n");
break;
case ORIENTATION_VERTICAL:
angle = M_PI * 270 / 180;
RARCH_LOG("D3D8: Set rotation to ORIENTATION_VERTICAL\n");
break;
case ORIENTATION_FLIPPED:
angle = M_PI * 180 / 180;
RARCH_LOG("D3D8: Set rotation to ORIENTATION_FLIPPED\n");
break;
case ORIENTATION_FLIPPED_ROTATED:
angle = M_PI * 90 / 180;
RARCH_LOG("D3D8: Set rotation to ORIENTATION_FLIPPED_ROTATED\n");
break;
}
}