Hello community, here is the log from the commit of package libretro-beetle-wswan for openSUSE:Factory checked in at 2020-06-07 21:36:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libretro-beetle-wswan (Old) and /work/SRC/openSUSE:Factory/.libretro-beetle-wswan.new.3606 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libretro-beetle-wswan" Sun Jun 7 21:36:51 2020 rev:2 rq:812090 version:0~git20200518 Changes: -------- --- /work/SRC/openSUSE:Factory/libretro-beetle-wswan/libretro-beetle-wswan.changes 2020-02-11 22:22:57.507487140 +0100 +++ /work/SRC/openSUSE:Factory/.libretro-beetle-wswan.new.3606/libretro-beetle-wswan.changes 2020-06-07 21:37:22.537270798 +0200 @@ -1,0 +2,8 @@ +Sat May 30 16:48:02 UTC 2020 - i...@guoyunhe.me + +- Update to version 0~git20200518: + * Silence some warnings + * fix refresh rate + * backport variable color depth + +------------------------------------------------------------------- Old: ---- libretro-beetle-wswan-0~git20200120.tar.xz New: ---- libretro-beetle-wswan-0~git20200518.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libretro-beetle-wswan.spec ++++++ --- /var/tmp/diff_new_pack.DBoTjO/_old 2020-06-07 21:37:23.721274551 +0200 +++ /var/tmp/diff_new_pack.DBoTjO/_new 2020-06-07 21:37:23.721274551 +0200 @@ -1,7 +1,7 @@ # # spec file for package libretro-beetle-wswan # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,10 +17,10 @@ Name: libretro-beetle-wswan -Version: 0~git20200120 +Version: 0~git20200518 Release: 0 Summary: Mednafen WonderSwan libretro core for WonderSwan emulation -License: GPL-2.0 +License: GPL-2.0-only Group: System/Emulators/Other URL: http://www.retroarch.com Source: %{name}-%{version}.tar.xz ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.DBoTjO/_old 2020-06-07 21:37:23.769274703 +0200 +++ /var/tmp/diff_new_pack.DBoTjO/_new 2020-06-07 21:37:23.773274716 +0200 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/libretro/beetle-wswan-libretro.git</param> - <param name="changesrevision">33806930cc404dde0a36565abd482a08829c2f5a</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">29acc9d01bb475479096885afc4e12bb40dda8e4</param></service></servicedata> \ No newline at end of file ++++++ libretro-beetle-wswan-0~git20200120.tar.xz -> libretro-beetle-wswan-0~git20200518.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libretro-beetle-wswan-0~git20200120/libretro.cpp new/libretro-beetle-wswan-0~git20200518/libretro.cpp --- old/libretro-beetle-wswan-0~git20200120/libretro.cpp 2020-01-20 00:59:51.000000000 +0100 +++ new/libretro-beetle-wswan-0~git20200518/libretro.cpp 2020-05-18 15:46:36.000000000 +0200 @@ -11,6 +11,9 @@ /* core options */ static int RETRO_SAMPLE_RATE = 44100; +static int RETRO_PIX_BYTES = 2; +static int RETRO_PIX_DEPTH = 15; + static MDFNGI *game; struct retro_perf_callback perf_cb; @@ -105,6 +108,8 @@ espec->DisplayRect.w = 224; espec->DisplayRect.h = 144; + if(espec->VideoFormatChanged) + WSwan_SetPixelFormat(espec->surface->depth); if(espec->SoundFormatChanged) WSwan_SetSoundRate(espec->SoundRate); @@ -511,45 +516,53 @@ environ_cb(RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL, &level); } -void retro_init(void) +static void check_depth(void) { - struct retro_log_callback log; - if (environ_cb(RETRO_ENVIRONMENT_GET_LOG_INTERFACE, &log)) - log_cb = log.log; - else - log_cb = NULL; + if (RETRO_PIX_DEPTH == 24) + { + enum retro_pixel_format rgb888 = RETRO_PIXEL_FORMAT_XRGB8888; -#if defined(WANT_16BPP) && defined(FRONTEND_SUPPORTS_RGB565) - enum retro_pixel_format rgb565 = RETRO_PIXEL_FORMAT_RGB565; - if (environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &rgb565) && log_cb) - log_cb(RETRO_LOG_INFO, "Frontend supports RGB565 - will use that instead of XRGB1555.\n"); -#endif + if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &rgb888)) + { + if (log_cb) log_cb(RETRO_LOG_ERROR, "Pixel format XRGB8888 not supported by platform.\n"); - if (environ_cb(RETRO_ENVIRONMENT_GET_PERF_INTERFACE, &perf_cb)) - perf_get_cpu_features_cb = perf_cb.get_cpu_features; - else - perf_get_cpu_features_cb = NULL; + RETRO_PIX_BYTES = 2; + RETRO_PIX_DEPTH = 15; + } + } - check_system_specs(); -} +#if defined(FRONTEND_SUPPORTS_RGB565) + if (RETRO_PIX_BYTES == 2) + { + enum retro_pixel_format rgb565 = RETRO_PIXEL_FORMAT_RGB565; -void retro_reset(void) -{ - DoSimpleCommand(MDFN_MSC_RESET); -} + if (environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &rgb565)) + { + if (log_cb) log_cb(RETRO_LOG_INFO, "Frontend supports RGB565 - will use that instead of XRGB1555.\n"); -bool retro_load_game_special(unsigned, const struct retro_game_info *, size_t) -{ - return false; + RETRO_PIX_DEPTH = 16; + } + } +#endif } -static void set_volume (uint32_t *ptr, unsigned number) +static void rotate_display(void) { - switch(number) + if (rotate_tall) { - default: - *ptr = number; - break; + struct retro_game_geometry new_geom = {FB_WIDTH, FB_HEIGHT, FB_WIDTH, FB_HEIGHT, (9.0 / 14.0)}; + const unsigned rot_angle = 1;/*90 degrees*/ + + environ_cb(RETRO_ENVIRONMENT_SET_GEOMETRY, (void*)&new_geom); + environ_cb(RETRO_ENVIRONMENT_SET_ROTATION, (void*)&rot_angle); + } + else + { + struct retro_game_geometry new_geom = {FB_WIDTH, FB_HEIGHT, FB_WIDTH, FB_HEIGHT, (14.0 / 9.0)}; + const unsigned rot_angle = 0;/*0 degrees*/ + + environ_cb(RETRO_ENVIRONMENT_SET_GEOMETRY, (void*)&new_geom); + environ_cb(RETRO_ENVIRONMENT_SET_ROTATION, (void*)&rot_angle); } } @@ -581,6 +594,66 @@ if (old_value != RETRO_SAMPLE_RATE) update_audio = true; } + + var.key = "wswan_gfx_colors"; + var.value = NULL; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + unsigned old_value = RETRO_PIX_BYTES; + + if (strcmp(var.value, "16bit") == 0) + { + RETRO_PIX_BYTES = 2; + RETRO_PIX_DEPTH = 16; + } + else if (strcmp(var.value, "24bit") == 0) + { + RETRO_PIX_BYTES = 4; + RETRO_PIX_DEPTH = 24; + } + + if (old_value != RETRO_PIX_BYTES) + update_video = true; + } +} + +void retro_init(void) +{ + struct retro_log_callback log; + if (environ_cb(RETRO_ENVIRONMENT_GET_LOG_INTERFACE, &log)) + log_cb = log.log; + else + log_cb = NULL; + + if (environ_cb(RETRO_ENVIRONMENT_GET_PERF_INTERFACE, &perf_cb)) + perf_get_cpu_features_cb = perf_cb.get_cpu_features; + else + perf_get_cpu_features_cb = NULL; + + check_system_specs(); + check_variables(); + check_depth(); +} + +void retro_reset(void) +{ + DoSimpleCommand(MDFN_MSC_RESET); +} + +bool retro_load_game_special(unsigned, const struct retro_game_info *, size_t) +{ + return false; +} + +static void set_volume (uint32_t *ptr, unsigned number) +{ + switch(number) + { + default: + *ptr = number; + break; + } } #define MAX_PLAYERS 1 @@ -630,26 +703,25 @@ surf->width = FB_WIDTH; surf->height = FB_HEIGHT; surf->pitch = FB_WIDTH; + surf->depth = RETRO_PIX_DEPTH; - surf->pixels = (uint16_t*)calloc(1, FB_WIDTH * FB_HEIGHT * 2); + surf->pixels = (uint16_t*)calloc(1, FB_WIDTH * FB_HEIGHT * sizeof(uint32_t)); if (!surf->pixels) { free(surf); return false; } - + rotate_tall = false; select_pressed_last_frame = false; rotate_joymap = 0; check_variables(); - WSwan_SetPixelFormat(); + WSwan_SetPixelFormat(RETRO_PIX_DEPTH); -#if 0 update_video = false; -#endif update_audio = true; return true; @@ -703,30 +775,15 @@ RETRO_DEVICE_ID_JOYPAD_R, } }; - + bool select_button = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT); - + if(select_button && !select_pressed_last_frame) { rotate_tall = !rotate_tall; - if(rotate_tall) - { - struct retro_game_geometry new_geom = {FB_WIDTH, FB_HEIGHT, FB_WIDTH, FB_HEIGHT, (9.0 / 14.0)}; - const unsigned rot_angle = 1;/*90 degrees*/ - - environ_cb(RETRO_ENVIRONMENT_SET_GEOMETRY, (void*)&new_geom); - environ_cb(RETRO_ENVIRONMENT_SET_ROTATION, (void*)&rot_angle); - } - else - { - struct retro_game_geometry new_geom = {FB_WIDTH, FB_HEIGHT, FB_WIDTH, FB_HEIGHT, (14.0 / 9.0)}; - const unsigned rot_angle = 0;/*0 degrees*/ - - environ_cb(RETRO_ENVIRONMENT_SET_GEOMETRY, (void*)&new_geom); - environ_cb(RETRO_ENVIRONMENT_SET_ROTATION, (void*)&rot_angle); - } + rotate_display(); } - + select_pressed_last_frame = select_button; bool joymap = (rotate_joymap == 2) ? rotate_tall : (rotate_joymap ? true : false); @@ -774,34 +831,28 @@ spec.SoundVolume = 1.0; spec.soundmultiplier = 1.0; spec.SoundBufSize = 0; - spec.VideoFormatChanged = false; + spec.VideoFormatChanged = update_video; spec.SoundFormatChanged = update_audio; -#if 0 if (update_video || update_audio) -#else - if (update_audio) -#endif { struct retro_system_av_info system_av_info; -#if 0 if (update_video) { memset(&system_av_info, 0, sizeof(system_av_info)); environ_cb(RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO, &system_av_info); } -#endif retro_get_system_av_info(&system_av_info); environ_cb(RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO, &system_av_info); -#if 0 if (update_video) rotate_display(); + surf->depth = RETRO_PIX_DEPTH; + update_video = false; -#endif update_audio = false; } @@ -813,15 +864,14 @@ unsigned width = spec.DisplayRect.w; unsigned height = spec.DisplayRect.h; - - video_cb(surf->pixels, width, height, FB_WIDTH << 1); + + video_cb(surf->pixels, width, height, FB_WIDTH * RETRO_PIX_BYTES); video_frames++; audio_frames += spec.SoundBufSize; for (total = 0; total < spec.SoundBufSize; ) total += audio_batch_cb(spec.SoundBuf + total*2, spec.SoundBufSize - total); - } void retro_get_system_info(struct retro_system_info *info) @@ -847,6 +897,8 @@ info->geometry.max_width = MEDNAFEN_CORE_GEOMETRY_MAX_W; info->geometry.max_height = MEDNAFEN_CORE_GEOMETRY_MAX_H; info->geometry.aspect_ratio = MEDNAFEN_CORE_GEOMETRY_ASPECT_RATIO; + + check_depth(); } void retro_deinit(void) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libretro-beetle-wswan-0~git20200120/libretro_core_options.h new/libretro-beetle-wswan-0~git20200518/libretro_core_options.h --- old/libretro-beetle-wswan-0~git20200120/libretro_core_options.h 2020-01-20 00:59:51.000000000 +0100 +++ new/libretro-beetle-wswan-0~git20200518/libretro_core_options.h 2020-05-18 15:46:36.000000000 +0200 @@ -77,6 +77,17 @@ }, "44100", }, + { + "wswan_gfx_colors", + "Color Depth", + "24-bit is slower and not available on all platforms.", + { + { "16bit", "Thousands (16-bit)" }, + { "24bit", "Millions (24-bit)" }, + { NULL, NULL }, + }, + "16bit" + }, { NULL, NULL, NULL, { NULL, NULL }, NULL }, }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libretro-beetle-wswan-0~git20200120/mednafen/mempatcher.cpp new/libretro-beetle-wswan-0~git20200518/mednafen/mempatcher.cpp --- old/libretro-beetle-wswan-0~git20200120/mednafen/mempatcher.cpp 2020-01-20 00:59:51.000000000 +0100 +++ new/libretro-beetle-wswan-0~git20200518/mednafen/mempatcher.cpp 2020-05-18 15:46:36.000000000 +0200 @@ -271,14 +271,16 @@ //printf("TR: %s\n", string); while(sscanf(string, "%u %c %63s %63s %63s", &bytelen, &endian, address, operation, value) == 5 && passed) { - uint32 v_address; uint64 v_value; uint64 value_at_address; +#if 0 + uint32 v_address; if(address[0] == '0' && address[1] == 'x') v_address = strtoul(address + 2, NULL, 16); else v_address = strtoul(address, NULL, 10); +#endif if(value[0] == '0' && value[1] == 'x') v_value = strtoull(value + 2, NULL, 16); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libretro-beetle-wswan-0~git20200120/mednafen/state.cpp new/libretro-beetle-wswan-0~git20200518/mednafen/state.cpp --- old/libretro-beetle-wswan-0~git20200120/mednafen/state.cpp 2020-01-20 00:59:51.000000000 +0100 +++ new/libretro-beetle-wswan-0~git20200518/mednafen/state.cpp 2020-05-18 15:46:36.000000000 +0200 @@ -228,10 +228,7 @@ nameo[0] = slen; if(slen >= 255) - { - printf("Warning: state variable name possibly too long: %s %s %s %d\n", sf->name, name_prefix, nameo, slen); slen = 255; - } smem_write(st, nameo, 1 + nameo[0]); smem_write32le(st, bytesize); @@ -295,7 +292,7 @@ uint8_t sname_tmp[32]; memset(sname_tmp, 0, sizeof(sname_tmp)); - strncpy((char *)sname_tmp, sname, 32); + memcpy((char *)sname_tmp, sname, 32); if(strlen(sname) > 32) printf("Warning: section name is too long: %s\n", sname); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libretro-beetle-wswan-0~git20200120/mednafen/video.h new/libretro-beetle-wswan-0~git20200518/mednafen/video.h --- old/libretro-beetle-wswan-0~git20200120/mednafen/video.h 2020-01-20 00:59:51.000000000 +0100 +++ new/libretro-beetle-wswan-0~git20200518/mednafen/video.h 2020-05-18 15:46:36.000000000 +0200 @@ -3,31 +3,36 @@ #include <stdint.h> -#if defined(FRONTEND_SUPPORTS_RGB565) + +#define RED_SHIFT_24 16 +#define GREEN_SHIFT_24 8 +#define BLUE_SHIFT_24 0 +#define ALPHA_SHIFT_24 24 +#define MAKECOLOR_24(r, g, b, a) ((r << RED_SHIFT_24) | (g << GREEN_SHIFT_24) | (b << BLUE_SHIFT_24) | (a << ALPHA_SHIFT_24)) + /* 16bit color - RGB565 */ -#define RED_MASK 0xf800 -#define GREEN_MASK 0x7e0 -#define BLUE_MASK 0x1f -#define RED_EXPAND 3 -#define GREEN_EXPAND 2 -#define BLUE_EXPAND 3 -#define RED_SHIFT 11 -#define GREEN_SHIFT 5 -#define BLUE_SHIFT 0 -#define MAKECOLOR(r, g, b, a) (((r >> RED_EXPAND) << RED_SHIFT) | ((g >> GREEN_EXPAND) << GREEN_SHIFT) | ((b >> BLUE_EXPAND) << BLUE_SHIFT)) -#else +#define RED_MASK_16 0xf800 +#define GREEN_MASK_16 0x7e0 +#define BLUE_MASK_16 0x1f +#define RED_EXPAND_16 3 +#define GREEN_EXPAND_16 2 +#define BLUE_EXPAND_16 3 +#define RED_SHIFT_16 11 +#define GREEN_SHIFT_16 5 +#define BLUE_SHIFT_16 0 +#define MAKECOLOR_16(r, g, b, a) (((r >> RED_EXPAND_16) << RED_SHIFT_16) | ((g >> GREEN_EXPAND_16) << GREEN_SHIFT_16) | ((b >> BLUE_EXPAND_16) << BLUE_SHIFT_16)) + /* 16bit color - RGB555 */ -#define RED_MASK 0x7c00 -#define GREEN_MASK 0x3e0 -#define BLUE_MASK 0x1f -#define RED_EXPAND 3 -#define GREEN_EXPAND 3 -#define BLUE_EXPAND 3 -#define RED_SHIFT 10 -#define GREEN_SHIFT 5 -#define BLUE_SHIFT 0 -#define MAKECOLOR(r, g, b, a) (((r >> RED_EXPAND) << RED_SHIFT) | ((g >> GREEN_EXPAND) << GREEN_SHIFT) | ((b >> BLUE_EXPAND) << BLUE_SHIFT)) -#endif +#define RED_MASK_15 0x7c00 +#define GREEN_MASK_15 0x3e0 +#define BLUE_MASK_15 0x1f +#define RED_EXPAND_15 3 +#define GREEN_EXPAND_15 3 +#define BLUE_EXPAND_15 3 +#define RED_SHIFT_15 10 +#define GREEN_SHIFT_15 5 +#define BLUE_SHIFT_15 0 +#define MAKECOLOR_15(r, g, b, a) (((r >> RED_EXPAND_15) << RED_SHIFT_15) | ((g >> GREEN_EXPAND_15) << GREEN_SHIFT_15) | ((b >> BLUE_EXPAND_15) << BLUE_SHIFT_15)) #ifdef __cplusplus extern "C" { @@ -53,6 +58,7 @@ int32_t width; int32_t height; int32_t pitch; + int32_t depth; } MDFN_Surface; #ifdef __cplusplus diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libretro-beetle-wswan-0~git20200120/mednafen/wswan/gfx.cpp new/libretro-beetle-wswan-0~git20200518/mednafen/wswan/gfx.cpp --- old/libretro-beetle-wswan-0~git20200120/mednafen/wswan/gfx.cpp 2020-01-20 00:59:51.000000000 +0100 +++ new/libretro-beetle-wswan-0~git20200518/mednafen/wswan/gfx.cpp 2020-05-18 15:46:36.000000000 +0200 @@ -29,8 +29,8 @@ static uint32 wsColors[8]; static uint32 wsCols[16][16]; -static uint16 ColorMapG[16]; -static uint16 ColorMap[4096]; +static uint32 ColorMapG[16]; +static uint32 ColorMap[4096]; static uint32 LayerEnabled; static uint8 wsLine; /*current scanline*/ @@ -179,7 +179,19 @@ if(wsLine < 144) { if(!skip) - wsScanline(surface->pixels + wsLine * surface->pitch); + { + switch(surface->depth) + { + case 15: + case 16: + wsScanline(surface->pixels + wsLine * surface->pitch, surface->depth); + break; + + case 24: + wsScanline(surface->pixels + wsLine * surface->pitch * 2, surface->depth); + break; + } + } } WSwan_CheckSoundDMA(); @@ -232,7 +244,7 @@ WSwan_CheckSoundDMA(); -#define MAX(a,b) ((a < b) ? a : b) +#define MAX(a,b) ((a >= b) ? a : b) v30mz_execute(96); @@ -254,19 +266,45 @@ LayerEnabled = mask; } -void WSwan_SetPixelFormat(void) +void WSwan_SetPixelFormat(int depth) { unsigned r, g, b, i; for(r = 0; r < 16; r++) for(g = 0; g < 16; g++) for(b = 0; b < 16; b++) - ColorMap[(r << 8) | (g << 4) | (b << 0)] = MAKECOLOR((r * 17), (g * 17), (b * 17), 0); //(neo_r << rs) | (neo_g << gs) | (neo_b << bs); + { + uint32 neo_r, neo_g, neo_b; + + neo_r = r * 17; + neo_g = g * 17; + neo_b = b * 17; + + switch(depth) + { + case 15: ColorMap[(r << 8) | (g << 4) | (b << 0)] = MAKECOLOR_15(neo_r, neo_g, neo_b, 0); break; + case 16: ColorMap[(r << 8) | (g << 4) | (b << 0)] = MAKECOLOR_16(neo_r, neo_g, neo_b, 0); break; + case 24: ColorMap[(r << 8) | (g << 4) | (b << 0)] = MAKECOLOR_24(neo_r, neo_g, neo_b, 0); break; + } + } for(i = 0; i < 16; i++) - ColorMapG[i] = MAKECOLOR((i * 17), (i * 17), (i * 17), 0); //(neo_r << rs) | (neo_g << gs) | (neo_b << bs); + { + uint32 neo_r, neo_g, neo_b; + + neo_r = i * 17; + neo_g = i * 17; + neo_b = i * 17; + + switch(depth) + { + case 15: ColorMapG[i] = MAKECOLOR_15(neo_r, neo_g, neo_b, 0); break; + case 16: ColorMapG[i] = MAKECOLOR_16(neo_r, neo_g, neo_b, 0); break; + case 24: ColorMapG[i] = MAKECOLOR_24(neo_r, neo_g, neo_b, 0); break; + } + } } -void wsScanline(uint16 *target) +void wsScanline(uint16 *target, int depth) { uint32 start_tile_n,map_a,startindex,adrbuf,b1,b2,j,t,l; uint8 b_bg[256]; @@ -530,13 +568,35 @@ if(wsVMode) { - for(l=0;l<224;l++) - target[l] = ColorMap[wsCols[b_bg_pal[l+7]][b_bg[(l+7)]&0xf]]; + switch(depth) + { + case 15: + case 16: { + for(l=0;l<224;l++) + target[l] = ColorMap[wsCols[b_bg_pal[l+7]][b_bg[(l+7)]&0xf]]; + } break; + + case 24: { + for(l=0;l<224;l++) + ((uint32_t*)target)[l] = ColorMap[wsCols[b_bg_pal[l+7]][b_bg[(l+7)]&0xf]]; + } break; + } } else { - for(l=0;l<224;l++) - target[l] = ColorMapG[(b_bg[l+7])&15]; + switch(depth) + { + case 15: + case 16: { + for(l=0;l<224;l++) + target[l] = ColorMapG[(b_bg[l+7])&15]; + } break; + + case 24: { + for(l=0;l<224;l++) + ((uint32_t*)target)[l] = ColorMapG[(b_bg[l+7])&15]; + } break; + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libretro-beetle-wswan-0~git20200120/mednafen/wswan/gfx.h new/libretro-beetle-wswan-0~git20200518/mednafen/wswan/gfx.h --- old/libretro-beetle-wswan-0~git20200120/mednafen/wswan/gfx.h 2020-01-20 00:59:51.000000000 +0100 +++ new/libretro-beetle-wswan-0~git20200518/mednafen/wswan/gfx.h 2020-05-18 15:46:36.000000000 +0200 @@ -16,13 +16,13 @@ void wsGetTile(uint32,uint32,int,int,int); void wsSetVideo(int, bool); -void wsScanline(uint16 *target); +void wsScanline(uint16 *target, int depth); extern uint32 dx_r,dx_g,dx_b,dx_sr,dx_sg,dx_sb; extern uint32 dx_bits,dx_pitch,cmov,dx_linewidth_blit,dx_buffer_line; -void WSwan_SetPixelFormat(void); +void WSwan_SetPixelFormat(int depth); void WSwan_GfxInit(void); void WSwan_GfxReset(void);