From 42aade1988bec77329c3014c11395bb57f659bea Mon Sep 17 00:00:00 2001 From: radius Date: Tue, 7 Feb 2017 22:54:50 -0500 Subject: [PATCH] try to fix the framebuffer --- libretro.cpp | 23 +++++++++++++++-------- libretro.o | Bin 9384 -> 9642 bytes 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/libretro.cpp b/libretro.cpp index 94d03d27..318078a5 100644 --- a/libretro.cpp +++ b/libretro.cpp @@ -11,7 +11,7 @@ #include "GPU.h" #include "libretro.h" -static uint32_t *frame_buf; +static uint16_t *frame_buf; static struct retro_log_callback logging; static retro_log_printf_t log_cb; static bool use_audio_cb; @@ -33,7 +33,7 @@ static retro_environment_t environ_cb; void retro_init(void) { - frame_buf = (uint32_t*)malloc(320 * 240 * sizeof(uint32_t)); + frame_buf = (uint16_t*)malloc(256 * 384 * sizeof(uint16_t)); const char *dir = NULL; if (environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &dir) && dir) { @@ -76,14 +76,14 @@ static retro_input_state_t input_state_cb; void retro_get_system_av_info(struct retro_system_av_info *info) { - float aspect = 4.0f / 3.0f; + float aspect = 0.0f; float sampling_rate = 30000.0f; info->geometry = (struct retro_game_geometry) { - .base_width = 320, - .base_height = 240, - .max_width = 320, - .max_height = 240, + .base_width = 256, + .base_height = 386, + .max_width = 256, + .max_height = 384, .aspect_ratio = aspect, }; @@ -264,10 +264,17 @@ static void audio_set_state(bool enable) (void)enable; } +WORD red_mask = 0x7C00; +WORD green_mask = 0x3E0; +WORD blue_mask = 0x1F; + void retro_run(void) { update_input(); NDS::RunFrame(); + memcpy(frame_buf, GPU::Framebuffer, sizeof(GPU::Framebuffer)); + + video_cb(frame_buf, 256, 384, 0); if (!use_audio_cb) audio_callback(); @@ -288,7 +295,7 @@ bool retro_load_game(const struct retro_game_info *info) environ_cb(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, desc); - enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_XRGB8888; + enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565; if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt)) { log_cb(RETRO_LOG_INFO, "XRGB8888 is not supported.\n"); diff --git a/libretro.o b/libretro.o index ba17efb34e0a8309c4388ec93246862f4bdcf025..2b4a261742c2594ba8e82cfaba70d96339214dfd 100644 GIT binary patch literal 9642 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 G0`=eNTU+P=