Fix scaling VS aspect ratio things, fix P2D data problems

This commit is contained in:
beeanyew
2021-05-12 02:49:25 +02:00
parent c53659d310
commit c4e744d2ed
2 changed files with 26 additions and 7 deletions

View File

@@ -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);
}
}

View File

@@ -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;
}