Fixed dolphin aspect ratio

This commit is contained in:
2026-06-25 22:47:23 -05:00
parent 0c8c0d24ba
commit 24631990bd
3 changed files with 9 additions and 20 deletions
+5 -6
View File
@@ -57,9 +57,9 @@ errorret_t screenBind() {
switch(SCREEN.mode) { switch(SCREEN.mode) {
case SCREEN_MODE_BACKBUFFER: { case SCREEN_MODE_BACKBUFFER: {
#if defined(DUSK_DISPLAY_WIDTH) && defined(DUSK_DISPLAY_HEIGHT) #if defined(DUSK_DISPLAY_WIDTH) && defined(DUSK_DISPLAY_HEIGHT)
SCREEN.width = DUSK_DISPLAY_WIDTH;
SCREEN.height = DUSK_DISPLAY_HEIGHT; SCREEN.height = DUSK_DISPLAY_HEIGHT;
SCREEN.aspect = (float_t)DUSK_DISPLAY_WIDTH / (float_t)DUSK_DISPLAY_HEIGHT; SCREEN.aspect = frameBufferGetAspect(FRAMEBUFFER_BOUND);
SCREEN.width = SCREEN.height * SCREEN.aspect;
#else #else
SCREEN.width = frameBufferGetWidth(FRAMEBUFFER_BOUND); SCREEN.width = frameBufferGetWidth(FRAMEBUFFER_BOUND);
SCREEN.height = frameBufferGetHeight(FRAMEBUFFER_BOUND); SCREEN.height = frameBufferGetHeight(FRAMEBUFFER_BOUND);
@@ -415,15 +415,14 @@ void screenUpdateScan(void) {
#ifdef DUSK_DISPLAY_OVERSCAN #ifdef DUSK_DISPLAY_OVERSCAN
SCREEN.scanX = DUSK_DISPLAY_OVERSCAN; SCREEN.scanX = DUSK_DISPLAY_OVERSCAN;
SCREEN.scanY = DUSK_DISPLAY_OVERSCAN; SCREEN.scanY = DUSK_DISPLAY_OVERSCAN;
SCREEN.scanWidth = SCREEN.width - DUSK_DISPLAY_OVERSCAN * 2;
SCREEN.scanHeight = SCREEN.height - DUSK_DISPLAY_OVERSCAN * 2;
#else #else
SCREEN.scanX = 0; SCREEN.scanX = 0;
SCREEN.scanY = 0; SCREEN.scanY = 0;
SCREEN.scanWidth = SCREEN.width;
SCREEN.scanHeight = SCREEN.height;
#endif #endif
SCREEN.scanWidth = SCREEN.width - (SCREEN.scanX * 2);
SCREEN.scanHeight = SCREEN.height - (SCREEN.scanY * 2);
#ifdef DUSK_DISPLAY_SIZE_DYNAMIC #ifdef DUSK_DISPLAY_SIZE_DYNAMIC
// Find the smallest standard ratio >= the screen aspect. // Find the smallest standard ratio >= the screen aspect.
float_t targetRatio = -1.0f; float_t targetRatio = -1.0f;
+2 -2
View File
@@ -10,13 +10,13 @@
#define TILE_SIZE_PIXELS 24 #define TILE_SIZE_PIXELS 24
#define CHUNK_WIDTH 12 #define CHUNK_WIDTH 16
#define CHUNK_HEIGHT 16 #define CHUNK_HEIGHT 16
#define CHUNK_DEPTH 8 #define CHUNK_DEPTH 8
#define CHUNK_TILE_COUNT (CHUNK_WIDTH * CHUNK_HEIGHT * CHUNK_DEPTH) #define CHUNK_TILE_COUNT (CHUNK_WIDTH * CHUNK_HEIGHT * CHUNK_DEPTH)
#define MAP_CHUNK_WIDTH 5 #define MAP_CHUNK_WIDTH 4
#define MAP_CHUNK_HEIGHT 4 #define MAP_CHUNK_HEIGHT 4
#define MAP_CHUNK_DEPTH 3 #define MAP_CHUNK_DEPTH 3
#define MAP_CHUNK_COUNT (MAP_CHUNK_WIDTH * MAP_CHUNK_HEIGHT * MAP_CHUNK_DEPTH) #define MAP_CHUNK_COUNT (MAP_CHUNK_WIDTH * MAP_CHUNK_HEIGHT * MAP_CHUNK_DEPTH)
+2 -12
View File
@@ -50,7 +50,7 @@ errorret_t sceneOverworldRender(scenedata_t *sceneData) {
float_t fov = glm_rad(45.0f); float_t fov = glm_rad(45.0f);
glm_perspective( glm_perspective(
fov, fov,
(float_t)SCREEN.width / (float_t)SCREEN.height, SCREEN.aspect,
0.1f, 0.1f,
100.0f, 100.0f,
proj proj
@@ -63,17 +63,7 @@ errorret_t sceneOverworldRender(scenedata_t *sceneData) {
float_t z = (worldH * 0.5f) / tanf(fov * 0.5f); float_t z = (worldH * 0.5f) / tanf(fov * 0.5f);
vec3 worldPosVec; vec3 worldPosVec;
rpgCameraGetPosition(worldPosVec); rpgCameraGetPosition(worldPosVec);
float_t offset = -32.0f * (worldH / TILE_SIZE_PIXELS); float_t offset = -24.0f * (worldH / TILE_SIZE_PIXELS);
// consolePrint(
// "FOV: %f, Aspect: %f, WorldH: %f, Z: %f, Offset: %f, ScreenH: %d",
// fov,
// (float_t)SCREEN.width / (float_t)SCREEN.height,
// worldH,
// z,
// offset,
// SCREEN.height
// );
glm_vec3_add(worldPosVec, (vec3){ 0.5f, 0.5f, 0.5f }, worldPosVec); glm_vec3_add(worldPosVec, (vec3){ 0.5f, 0.5f, 0.5f }, worldPosVec);