From 79383681e27cc9af31e0c1464bb9fcb3bc523d51 Mon Sep 17 00:00:00 2001 From: TheFloW Date: Sun, 10 Mar 2019 20:41:14 +0100 Subject: [PATCH] Added support for native resolution patches --- adrenaline_compat.h | 3 +++ cef/systemctrl/adrenaline.c | 2 ++ cef/systemctrl/rebootex.h | 20 ++++++++++---------- cef/systemctrl/sysmodpatches.c | 5 +++-- user/CMakeLists.txt | 2 +- user/flash0/kd/systemctrl.prx | Bin 29465 -> 29468 bytes user/menu.c | 13 ++++++++++--- user/states.c | 25 ++++++++++++++++++++++++- 8 files changed, 53 insertions(+), 17 deletions(-) diff --git a/adrenaline_compat.h b/adrenaline_compat.h index 790e945..5adee2d 100644 --- a/adrenaline_compat.h +++ b/adrenaline_compat.h @@ -182,6 +182,9 @@ typedef struct { #define ADRENALINE_SIZE 0x2000 #define ADRENALINE_ADDRESS 0xABCDE000 +#define DRAW_NATIVE 0xABCDEF00 +#define NATIVE_FRAMEBUFFER 0x0A000000 + #define CONVERT_ADDRESS(addr) (0x68000000 + (addr & 0x0FFFFFFF)) #endif diff --git a/cef/systemctrl/adrenaline.c b/cef/systemctrl/adrenaline.c index e081bf5..d9eb9f6 100644 --- a/cef/systemctrl/adrenaline.c +++ b/cef/systemctrl/adrenaline.c @@ -323,5 +323,7 @@ int initAdrenaline() { sceKernelStartThread(thid, 0, NULL); + *(u32 *)DRAW_NATIVE = 0; + return 0; } \ No newline at end of file diff --git a/cef/systemctrl/rebootex.h b/cef/systemctrl/rebootex.h index e9d7d81..8041ff0 100644 --- a/cef/systemctrl/rebootex.h +++ b/cef/systemctrl/rebootex.h @@ -35,16 +35,16 @@ static unsigned char rebootex[] __attribute__((aligned(16))) = { 0xf8, 0x08, 0x42, 0x8c, 0xf8, 0xff, 0xbd, 0x27, 0x04, 0x00, 0xbf, 0xaf, 0x00, 0x00, 0xb0, 0xaf, 0x09, 0xf8, 0x40, 0x00, 0x21, 0x80, 0xa0, 0x00, 0x04, 0x00, 0xbf, 0x8f, 0x40, 0x01, 0x02, 0x3c, 0x50, 0x00, 0x02, 0xae, 0x00, 0x8a, 0x02, 0x3c, 0x4c, 0x00, 0x02, 0xae, 0x00, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x08, 0x00, 0xbd, 0x27, 0xfc, 0x88, 0x03, 0x3c, 0xcc, 0x01, 0x63, 0x24, - 0xff, 0x03, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x82, 0x18, 0x03, 0x00, 0x24, 0x18, 0x62, 0x00, - 0x00, 0x0c, 0x02, 0x3c, 0x25, 0x18, 0x62, 0x00, 0x60, 0x14, 0x02, 0x3c, 0x03, 0x00, 0x49, 0x34, - 0xff, 0xf3, 0x02, 0x3c, 0xf0, 0xff, 0xbd, 0x27, 0xff, 0xff, 0x48, 0x34, 0x01, 0x88, 0x02, 0x3c, - 0x08, 0x00, 0xb1, 0xaf, 0x04, 0x00, 0xb0, 0xaf, 0x28, 0x00, 0x91, 0x8c, 0x21, 0x80, 0xa0, 0x00, - 0x0c, 0x00, 0xbf, 0xaf, 0x00, 0x40, 0x47, 0x34, 0x00, 0x88, 0x04, 0x3c, 0xfc, 0x88, 0x06, 0x3c, - 0x00, 0x80, 0x05, 0x3c, 0x00, 0x00, 0x82, 0x8c, 0x08, 0x00, 0x49, 0x54, 0x04, 0x00, 0x84, 0x24, - 0xe4, 0xff, 0x82, 0x8c, 0xe4, 0xff, 0x83, 0xac, 0x24, 0x10, 0x48, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x25, 0x10, 0x45, 0x00, 0xf8, 0x08, 0xc2, 0xac, 0x04, 0x00, 0x84, 0x24, 0xf5, 0xff, 0x87, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x3f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x00, 0x02, + 0x08, 0x00, 0xe0, 0x03, 0x08, 0x00, 0xbd, 0x27, 0xfc, 0x88, 0x02, 0x3c, 0xfc, 0x88, 0x03, 0x3c, + 0xcc, 0x01, 0x63, 0x24, 0xf8, 0x08, 0x46, 0x8c, 0xff, 0x03, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, + 0x82, 0x18, 0x03, 0x00, 0x24, 0x18, 0x62, 0x00, 0x00, 0x0c, 0x02, 0x3c, 0x25, 0x18, 0x62, 0x00, + 0x60, 0x14, 0x02, 0x3c, 0x03, 0x00, 0x49, 0x34, 0xff, 0xf3, 0x02, 0x3c, 0xf0, 0xff, 0xbd, 0x27, + 0xff, 0xff, 0x48, 0x34, 0x01, 0x88, 0x02, 0x3c, 0x08, 0x00, 0xb1, 0xaf, 0x04, 0x00, 0xb0, 0xaf, + 0x28, 0x00, 0x91, 0x8c, 0x21, 0x80, 0xa0, 0x00, 0x0c, 0x00, 0xbf, 0xaf, 0x00, 0x40, 0x47, 0x34, + 0x00, 0x88, 0x04, 0x3c, 0x00, 0x80, 0x05, 0x3c, 0x00, 0x00, 0x82, 0x8c, 0x07, 0x00, 0x49, 0x54, + 0x04, 0x00, 0x84, 0x24, 0xe4, 0xff, 0x82, 0x8c, 0xe4, 0xff, 0x83, 0xac, 0x24, 0x10, 0x48, 0x00, + 0x80, 0x10, 0x02, 0x00, 0x25, 0x30, 0x45, 0x00, 0x04, 0x00, 0x84, 0x24, 0xf6, 0xff, 0x87, 0x14, + 0xfc, 0x88, 0x02, 0x3c, 0x68, 0x00, 0x3f, 0x0e, 0xf8, 0x08, 0x46, 0xac, 0x21, 0x28, 0x00, 0x02, 0x21, 0xc8, 0x20, 0x02, 0x0c, 0x00, 0xbf, 0x8f, 0x08, 0x00, 0xb1, 0x8f, 0x04, 0x00, 0xb0, 0x8f, 0x04, 0x00, 0x04, 0x24, 0x08, 0x00, 0x20, 0x03, 0x10, 0x00, 0xbd, 0x27, 0xf0, 0xff, 0xbd, 0x27, 0x04, 0x00, 0xb0, 0xaf, 0x2d, 0xae, 0x02, 0x3c, 0x21, 0x80, 0x80, 0x00, 0x08, 0x00, 0xb1, 0xaf, diff --git a/cef/systemctrl/sysmodpatches.c b/cef/systemctrl/sysmodpatches.c index 1d7da6f..0739f99 100644 --- a/cef/systemctrl/sysmodpatches.c +++ b/cef/systemctrl/sysmodpatches.c @@ -330,9 +330,10 @@ void PatchImposeDriver(u32 text_addr) { if (sceKernelInitKeyConfig() == PSP_INIT_KEYCONFIG_POPS) { SetupCallbacks(); MAKE_DUMMY_FUNCTION(text_addr + 0x91C8, PSP_INIT_KEYCONFIG_GAME); - REDIRECT_FUNCTION(text_addr + 0x92B0, sceKernelWaitEventFlagPatched); } + REDIRECT_FUNCTION(text_addr + 0x92B0, sceKernelWaitEventFlagPatched); + ClearCaches(); } @@ -354,7 +355,7 @@ void PatchMediaSync(u32 text_addr) { } void SetSpeed(int cpu, int bus) { - if (cpu == 20 || cpu == 75 || cpu == 100 || cpu == 133 || cpu == 333 || cpu == 300 || cpu == 266 || cpu == 222) { + if (cpu == 20 || cpu == 75 || cpu == 100 || cpu == 133 || cpu == 333 || cpu == 300 || cpu == 266 || cpu == 222) { scePowerSetClockFrequency_k = (void *)FindPowerFunction(0x737486F2); scePowerSetClockFrequency_k(cpu, cpu, bus); diff --git a/user/CMakeLists.txt b/user/CMakeLists.txt index d697b46..50013ac 100644 --- a/user/CMakeLists.txt +++ b/user/CMakeLists.txt @@ -96,7 +96,7 @@ vita_create_self(adrenaline_user.suprx adrenaline_user CONFIG exports.yml UNSAFE vita_create_stubs(stubs adrenaline_user ${CMAKE_SOURCE_DIR}/exports.yml) add_custom_target(copy - COMMAND cp adrenaline_user.suprx H:/app/PSPEMUCFW/sce_module/adrenaline_user.suprx + COMMAND cp adrenaline_user.suprx F:/app/PSPEMUCFW/sce_module/adrenaline_user.suprx DEPENDS adrenaline_user.suprx ) diff --git a/user/flash0/kd/systemctrl.prx b/user/flash0/kd/systemctrl.prx index acf8cbcee4ce958222432fd9f3ffe2df8ece951b..22d95f26b33cfa9e0fd64f1ec7a817c995002b1b 100644 GIT binary patch literal 29468 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 Up?$9V9i4kfU?#KR&&MwR5AQX$00000 diff --git a/user/menu.c b/user/menu.c index f6b737d..f2dc1b6 100644 --- a/user/menu.c +++ b/user/menu.c @@ -389,6 +389,10 @@ int AdrenalineDraw(SceSize args, void *argp) { vita2d_init(); font = vita2d_load_default_pgf(); + vita2d_texture *native_tex = vita2d_create_empty_texture_data(SCREEN_WIDTH, SCREEN_HEIGHT, CONVERT_ADDRESS(NATIVE_FRAMEBUFFER), SCE_GXM_TEXTURE_FORMAT_U5U6U5_BGR); + if (!native_tex) + return -1; + vita2d_texture *psp_tex = vita2d_create_empty_texture(PSP_SCREEN_LINE, PSP_SCREEN_HEIGHT); if (!psp_tex) return -1; @@ -471,6 +475,7 @@ int AdrenalineDraw(SceSize args, void *argp) { int lastPops = 0; while (1) { + int draw_native = *(uint32_t *)CONVERT_ADDRESS(DRAW_NATIVE); SceAdrenaline *adrenaline = (SceAdrenaline *)CONVERT_ADDRESS(ADRENALINE_ADDRESS); // pause/unpause pops once after switching from psp to pops mode @@ -541,7 +546,7 @@ int AdrenalineDraw(SceSize args, void *argp) { } // Do not draw if dialog is running - if (sceCommonDialogIsRunning() || (config.graphics_filtering == 0 && menu_open == 0)) { + if (sceCommonDialogIsRunning() || (config.graphics_filtering == 0 && menu_open == 0 && draw_native == 0)) { sceDisplayWaitVblankStart(); continue; } @@ -578,7 +583,7 @@ int AdrenalineDraw(SceSize args, void *argp) { vita2d_texture_set_filters(pops_tex, SCE_GXM_TEXTURE_FILTER_POINT, SCE_GXM_TEXTURE_FILTER_POINT); } - if (!adrenaline->pops_mode || adrenaline->draw_psp_screen_in_pops) { + if ((!adrenaline->pops_mode && !draw_native) || adrenaline->draw_psp_screen_in_pops) { // Copy PSP framebuffer sceDmacMemcpy(psp_data, (void *)SCE_PSPEMU_FRAMEBUFFER, SCE_PSPEMU_FRAMEBUFFER_SIZE); @@ -587,6 +592,8 @@ int AdrenalineDraw(SceSize args, void *argp) { float scale_y = 2.00f; getPspScreenScale(&scale_x, &scale_y); vita2d_draw_texture_scale_rotate_hotspot(psp_tex, 480.0f, 272.0f, scale_x, scale_y, 0.0, 240.0, 136.0); + } else if (draw_native) { + vita2d_draw_texture_scale_rotate_hotspot(native_tex, 480.0f, 272.0f, 1.0f, 1.0f, 0.0, 480.0, 272.0); } else { // Draw pops screen float scale_x = 1.0f; @@ -653,7 +660,7 @@ int AdrenalineDraw(SceSize args, void *argp) { frames++; // Sync - if (!adrenaline->pops_mode || adrenaline->draw_psp_screen_in_pops) + if ((!adrenaline->pops_mode && !draw_native) || adrenaline->draw_psp_screen_in_pops) sceCompatLCDCSync(); else sceDisplayWaitVblankStart(); diff --git a/user/states.c b/user/states.c index 621cb27..218eade 100644 --- a/user/states.c +++ b/user/states.c @@ -78,6 +78,19 @@ void makeSaveStatePath(char *path, int num) { extern void *pops_data; +static uint32_t convert565To8888(uint16_t color) { + uint8_t red_value = (color & 0xF800) >> 11; + uint8_t green_value = (color & 0x7E0) >> 5; + uint8_t blue_value = (color & 0x1F); + + uint8_t alpha = 0xFF; + uint8_t red = red_value << 3; + uint8_t green = green_value << 2; + uint8_t blue = blue_value << 3; + + return (alpha << 24) | (red << 16) | (green << 8) | blue; +} + int saveFrameBuffer(SceUID fd) { sceCompatLCDCSync(); @@ -87,9 +100,19 @@ int saveFrameBuffer(SceUID fd) { int i = 0; + int draw_native = *(uint32_t *)CONVERT_ADDRESS(DRAW_NATIVE); SceAdrenaline *adrenaline = (SceAdrenaline *)ScePspemuConvertAddress(ADRENALINE_ADDRESS, KERMIT_INPUT_MODE, ADRENALINE_SIZE); - if (adrenaline->pops_mode) { + if (draw_native) { + int y; + for (y = 0; y < SCREEN_HEIGHT; y += 4) { + int x; + for (x = 0; x < SCREEN_WIDTH; x += 4) { + uint16_t color = ((uint16_t *)CONVERT_ADDRESS(NATIVE_FRAMEBUFFER))[x + SCREEN_WIDTH * y]; + buf[i++] = convert565To8888(color); + } + } + } else if (adrenaline->pops_mode) { int y; for (y = 0; y < SCREEN_HEIGHT; y += 4) { int x;