From 006478c4f35589db6e2f8a3a14ef09c123518457 Mon Sep 17 00:00:00 2001 From: kub Date: Thu, 2 Jul 2020 09:30:56 +0200 Subject: [PATCH 1/3] font array size adaption to avoid a compiler warning in picodrive --- fonts.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fonts.h b/fonts.h index e565c93..e4870d6 100644 --- a/fonts.h +++ b/fonts.h @@ -1,6 +1,6 @@ extern unsigned char fontdata8x8[64*16]; -extern unsigned char fontdata6x8[256-32][8]; +extern unsigned char fontdata6x8[256][8]; void basic_text_out16_nf(void *fb, int w, int x, int y, const char *text); void basic_text_out16(void *fb, int w, int x, int y, const char *texto, ...); From a7a40556a936f03daa01b9723c096dad76ca79cd Mon Sep 17 00:00:00 2001 From: kub Date: Thu, 2 Jul 2020 09:32:08 +0200 Subject: [PATCH 2/3] add more host disassembler platforms for picodrive DRC --- linux/host_dasm.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/linux/host_dasm.c b/linux/host_dasm.c index 66a83ea..24af1b8 100644 --- a/linux/host_dasm.c +++ b/linux/host_dasm.c @@ -22,11 +22,31 @@ extern char **g_argv; static struct disassemble_info di; -#ifdef __arm__ +#if defined __arm__ #define print_insn_func print_insn_little_arm #define BFD_ARCH bfd_arch_arm #define BFD_MACH bfd_mach_arm_unknown #define DASM_OPTS "reg-names-std" +#elif defined __aarch64__ +#define print_insn_func print_insn_aarch64 +#define BFD_ARCH bfd_arch_aarch64 +#define BFD_MACH bfd_mach_aarch64 +#define DASM_OPTS NULL +#elif defined __mips__ +#define print_insn_func print_insn_little_mips +#define BFD_ARCH bfd_arch_mips +#define BFD_MACH bfd_mach_mipsisa32 +#define DASM_OPTS NULL +#elif defined __riscv +#define print_insn_func print_insn_riscv +#define BFD_ARCH bfd_arch_riscv +#define BFD_MACH bfd_mach_riscv64 +#define DASM_OPTS NULL +#elif defined __powerpc__ +#define print_insn_func print_insn_little_powerpc +#define BFD_ARCH bfd_arch_powerpc +#define BFD_MACH bfd_mach_ppc64 +#define DASM_OPTS NULL #elif defined(__x86_64__) || defined(__i386__) #define print_insn_func print_insn_i386_intel #define BFD_ARCH bfd_arch_i386 From 9ba0831411aae044a737d7aeac30edbd12be6521 Mon Sep 17 00:00:00 2001 From: kub Date: Thu, 2 Jul 2020 09:34:11 +0200 Subject: [PATCH 3/3] add 2x overlay for SDL to improve color resolution --- plat_sdl.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/plat_sdl.c b/plat_sdl.c index bbb466e..9b78d05 100644 --- a/plat_sdl.c +++ b/plat_sdl.c @@ -31,7 +31,7 @@ static char vid_drv_name[32]; static int window_w, window_h; static int fs_w, fs_h; static int old_fullscreen; -static int vout_mode_overlay = -1, vout_mode_gl = -1; +static int vout_mode_overlay = -1, vout_mode_overlay2x = -1, vout_mode_gl = -1; static void *display, *window; static int gl_quirks; @@ -52,6 +52,7 @@ int plat_sdl_change_video_mode(int w, int h, int force) // invalid method might come from config.. if (plat_target.vout_method != 0 && plat_target.vout_method != vout_mode_overlay + && plat_target.vout_method != vout_mode_overlay2x && plat_target.vout_method != vout_mode_gl) { fprintf(stderr, "invalid vout_method: %d\n", plat_target.vout_method); @@ -96,8 +97,10 @@ int plat_sdl_change_video_mode(int w, int h, int force) } } - if (plat_target.vout_method == vout_mode_overlay) { - plat_sdl_overlay = SDL_CreateYUVOverlay(w, h, SDL_UYVY_OVERLAY, plat_sdl_screen); + if (plat_target.vout_method == vout_mode_overlay + || plat_target.vout_method == vout_mode_overlay2x) { + int W = plat_target.vout_method == vout_mode_overlay2x && w == 320 ? 2*w : w; + plat_sdl_overlay = SDL_CreateYUVOverlay(W, h, SDL_UYVY_OVERLAY, plat_sdl_screen); if (plat_sdl_overlay != NULL) { if ((long)plat_sdl_overlay->pixels[0] & 3) fprintf(stderr, "warning: overlay pointer is unaligned\n"); @@ -176,7 +179,7 @@ void plat_sdl_event_handler(void *event_) int plat_sdl_init(void) { - static const char *vout_list[] = { NULL, NULL, NULL, NULL }; + static const char *vout_list[] = { NULL, NULL, NULL, NULL, NULL }; const SDL_VideoInfo *info; SDL_SysWMinfo wminfo; int overlay_works = 0; @@ -277,6 +280,10 @@ int plat_sdl_init(void) if (overlay_works) { plat_target.vout_method = vout_mode_overlay = i; vout_list[i++] = "Video Overlay"; +#ifdef SDL_OVERLAY_2X + vout_mode_overlay2x = i; + vout_list[i++] = "Video Overlay 2x"; +#endif } if (gl_works) { plat_target.vout_method = vout_mode_gl = i;