From: beeanyew Date: Wed, 12 May 2021 00:49:25 +0000 (+0200) Subject: Fix scaling VS aspect ratio things, fix P2D data problems X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=c4e744d2eda9e866b92e90c0cdc119cdbaf3d122;p=pistorm Fix scaling VS aspect ratio things, fix P2D data problems --- diff --git a/platforms/amiga/rtg/rtg-output-raylib.c b/platforms/amiga/rtg/rtg-output-raylib.c index 672eab7..8fd02c7 100644 --- a/platforms/amiga/rtg/rtg-output-raylib.c +++ b/platforms/amiga/rtg/rtg-output-raylib.c @@ -15,6 +15,14 @@ #define RTG_INIT_ERR(a) { printf(a); *data->running = 0; } +//#define DEBUG_RAYLIB_RTG + +#ifdef DEBUG_RAYLIB_RTG +#define DEBUG printf +#else +#define DEBUG(...) +#endif + uint8_t busy = 0, rtg_on = 0, rtg_initialized = 0; extern uint8_t *rtg_mem; extern uint32_t framebuffer_addr; @@ -179,13 +187,26 @@ reinit_raylib:; } } } else if (dstscale.width > GetScreenWidth() || dstscale.height > GetScreenHeight()) { - if (dstscale.width > GetScreenWidth()) { - dstscale.height = dstscale.height * ((float)GetScreenWidth() / (float)width); - dstscale.width = GetScreenWidth(); - } if (dstscale.height > GetScreenHeight()) { + DEBUG("[H > SH]\n"); + DEBUG("Adjusted width from %d to", (int)dstscale.width); dstscale.width = dstscale.width * ((float)GetScreenHeight() / (float)height); + DEBUG("%d.\n", (int)dstscale.width); + DEBUG("Adjusted height from %d to", (int)dstscale.height); dstscale.height = GetScreenHeight(); + DEBUG("%d.\n", (int)dstscale.height); + } + if (dstscale.width > GetScreenWidth()) { + // First scaling attempt failed, do not double adjust, re-adjust + dstscale.width = width; + dstscale.height = height; + DEBUG("[W > SW]\n"); + DEBUG("Adjusted height from %d to", (int)dstscale.height); + dstscale.height = dstscale.height * ((float)GetScreenWidth() / (float)width); + DEBUG("%d.\n", (int)dstscale.height); + DEBUG("Adjusted width from %d to", (int)dstscale.width); + dstscale.width = GetScreenWidth(); + DEBUG("%d.\n", (int)dstscale.width); } } diff --git a/platforms/amiga/rtg/rtg.c b/platforms/amiga/rtg/rtg.c index 8ef6a01..2f82392 100644 --- a/platforms/amiga/rtg/rtg.c +++ b/platforms/amiga/rtg/rtg.c @@ -59,7 +59,7 @@ int init_rtg_data(struct emulator_config *cfg_) { return 0; } - m68k_add_ram_range(PIGFX_RTG_BASE + PIGFX_REG_SIZE, 40 * SIZE_MEGA - PIGFX_REG_SIZE, rtg_mem); + m68k_add_ram_range(PIGFX_RTG_BASE + PIGFX_REG_SIZE, 32 * SIZE_MEGA - PIGFX_REG_SIZE, rtg_mem); add_mapping(cfg_, MAPTYPE_RAM_NOALLOC, PIGFX_RTG_BASE + PIGFX_REG_SIZE, 40 * SIZE_MEGA - PIGFX_REG_SIZE, -1, (char *)rtg_mem, "rtg_mem"); return 1; } @@ -76,8 +76,6 @@ void shutdown_rtg() { } } -//void rtg_update_screen(); - unsigned int rtg_get_fb() { return PIGFX_RTG_BASE + PIGFX_REG_SIZE + framebuffer_addr_adj; }