From 1c351d92c74faf2ed8ebbdc493de359383a79414 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Sun, 30 Aug 2015 11:58:09 -0700 Subject: [PATCH] PSP2: Triangle suspends instead of quitting --- src/platform/psp2/main.c | 28 ++++++++++++++++++++++++++-- src/platform/psp2/psp2-context.c | 10 +++++----- src/platform/psp2/psp2-context.h | 2 +- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/platform/psp2/main.c b/src/platform/psp2/main.c index 2a3a33a9c..91cffe8b3 100644 --- a/src/platform/psp2/main.c +++ b/src/platform/psp2/main.c @@ -12,6 +12,7 @@ #include #include +#include #include #include @@ -65,11 +66,14 @@ int main() { GBAPSP2Setup(); struct GUIParams params = { PSP2_HORIZONTAL_PIXELS, PSP2_VERTICAL_PIXELS, - font, "cache0:", _drawStart, _drawEnd, _pollInput + font, "cache0:", _drawStart, _drawEnd, _pollInput, + + GUI_PARAMS_TRAIL }; GUIInit(¶ms); while (true) { + bool running = true; char path[256]; if (!GUISelectFile(¶ms, path, sizeof(path), GBAIsROM)) { break; @@ -77,7 +81,27 @@ int main() { if (!GBAPSP2LoadROM(path)) { continue; } - GBAPSP2Runloop(); + while (running) { + GBAPSP2Runloop(); + GUIInvalidateKeys(¶ms); + while (true) { + int keys = 0; + _drawStart(); + GBAPSP2Draw(0x80); + _drawEnd(); + GUIPollInput(¶ms, &keys, 0); + if (keys & (1 << GUI_INPUT_CANCEL)) { + running = false; + break; + } + if (keys & (1 << GUI_INPUT_SELECT)) { + while (keys & (1 << GUI_INPUT_SELECT)) { + GUIPollInput(¶ms, 0, &keys); + } + break; + } + } + } GBAPSP2UnloadROM(); } diff --git a/src/platform/psp2/psp2-context.c b/src/platform/psp2/psp2-context.c index 989ca5834..1f9581365 100644 --- a/src/platform/psp2/psp2-context.c +++ b/src/platform/psp2/psp2-context.c @@ -242,7 +242,7 @@ void GBAPSP2Runloop(void) { vita2d_start_drawing(); vita2d_clear_screen(); - GBAPSP2Draw(); + GBAPSP2Draw(0xFF); vita2d_end_drawing(); vita2d_swap_buffers(); } @@ -263,16 +263,16 @@ void GBAPSP2Teardown(void) { vita2d_free_texture(backdrop); } -void GBAPSP2Draw(void) { +void GBAPSP2Draw(uint8_t alpha) { switch (screenMode) { case SM_BACKDROP: - vita2d_draw_texture(backdrop, 0, 0); + vita2d_draw_texture_tint(backdrop, 0, 0, (alpha << 24) | 0xFFFFFF); // Fall through case SM_PLAIN: - vita2d_draw_texture_part_scale(tex, 120, 32, 0, 0, 240, 160, 3.0f, 3.0f); + vita2d_draw_texture_tint_part_scale(tex, 120, 32, 0, 0, 240, 160, 3.0f, 3.0f, (alpha << 24) | 0xFFFFFF); break; case SM_FULL: - vita2d_draw_texture_scale(tex, 0, 0, 960.0f / 240.0f, 544.0f / 160.0f); + vita2d_draw_texture_tint_scale(tex, 0, 0, 960.0f / 240.0f, 544.0f / 160.0f, (alpha << 24) | 0xFFFFFF); break; } } diff --git a/src/platform/psp2/psp2-context.h b/src/platform/psp2/psp2-context.h index 9680b20ff..de05d4683 100644 --- a/src/platform/psp2/psp2-context.h +++ b/src/platform/psp2/psp2-context.h @@ -15,6 +15,6 @@ bool GBAPSP2LoadROM(const char* path); void GBAPSP2Runloop(void); void GBAPSP2UnloadROM(void); -void GBAPSP2Draw(void); +void GBAPSP2Draw(uint8_t alpha); #endif