attempt at auto-emphasis mode, emphasizing main screen

This commit is contained in:
StapleButter 2017-10-30 05:45:26 +01:00
parent 85d823d4c7
commit 0a04efc33e
2 changed files with 43 additions and 4 deletions

View File

@ -92,6 +92,8 @@ extern u32 IE[2];
extern u32 IF[2];
extern Timer Timers[8];
extern u16 PowerControl9;
extern u16 ExMemCnt[2];
extern u8 ROMSeed0[2*8];
extern u8 ROMSeed1[2*8];

View File

@ -64,6 +64,9 @@ int ScreenGap = 0;
int ScreenLayout = 0;
int ScreenSizing = 0;
int MainScreenPos[3];
int AutoScreenSizing;
uiRect TopScreenRect;
uiRect BottomScreenRect;
@ -73,6 +76,9 @@ u32 KeyInputMask;
SDL_Joystick* Joystick;
void SetupScreenRects(int width, int height);
void UpdateWindowTitle(void* data)
{
@ -88,6 +94,11 @@ int EmuThreadFunc(void* burp)
{
NDS::Init();
MainScreenPos[0] = 0;
MainScreenPos[1] = 0;
MainScreenPos[2] = 0;
AutoScreenSizing = 0;
ScreenDrawInited = false;
Touching = false;
@ -174,6 +185,35 @@ int EmuThreadFunc(void* burp)
if (EmuRunning == 0) break;
// auto screen layout
{
MainScreenPos[2] = MainScreenPos[1];
MainScreenPos[1] = MainScreenPos[0];
MainScreenPos[0] = NDS::PowerControl9 >> 15;
int guess;
if (MainScreenPos[0] == MainScreenPos[2] &&
MainScreenPos[0] != MainScreenPos[1])
{
// constant flickering, likely displaying 3D on both screens
// TODO: when both screens are used for 2D only...???
guess = 0;
}
else
{
if (MainScreenPos[0] == 1)
guess = 1;
else
guess = 2;
}
if (guess != AutoScreenSizing)
{
AutoScreenSizing = guess;
SetupScreenRects(Config::WindowWidth, Config::WindowHeight);
}
}
memcpy(ScreenBuffer, GPU::Framebuffer, 256*384*4);
uiAreaQueueRedrawAll(MainDrawArea);
@ -346,10 +386,7 @@ void SetupScreenRects(int width, int height)
int sizemode;
if (ScreenSizing == 3)
{
// TODO!! auto mode
sizemode = 0;
}
sizemode = AutoScreenSizing;
else
sizemode = ScreenSizing;