Rakashazi / emu-ex-plus-alpha

Multi-platform computer & game console emulation system including supporting code (EmuFramework) and core engine (Imagine)
GNU General Public License v3.0
600 stars 145 forks source link

[Feature request]: wonderswan numerous fixes and improvements #670

Open soundsnow opened 1 year ago

soundsnow commented 1 year ago

Describe the feature

Your 'Content Rotation' option will not work for these games For Vertical games or 'Kaze no Klonoa - Moonlight Museum' these options are necessary Some levels (Visions) of 'Kaze no Klonoa - Moonlight Museum' will change the game from Horizontal to Vertical, so manual options are required. Six-button layout for fighting games, e.g. Ultraman - Hikari no Kuni no Shisha Here are my save and state, Klonoa is a Vertical and Horizontal game, Horizontal default

https://github.com/libretro/beetle-wswan-libretro/blob/master/libretro.c

buttons and palette 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "X Cursor Left" }, 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "X Cursor Up" }, 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "X Cursor Down" }, 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "X Cursor Right" }, 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "Y Cursor Left" }, 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "Y Cursor Up" }, 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Y Cursor Down" }, 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "Y Cursor Right" }, 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Rotate screen + active D-Pad" }, RETRO_DEVICE_ID_JOYPAD_UP, /* X Cursor horizontal-layout games */ RETRO_DEVICE_ID_JOYPAD_RIGHT, /* X Cursor horizontal-layout games */ RETRO_DEVICE_ID_JOYPAD_DOWN, /* X Cursor horizontal-layout games */ RETRO_DEVICE_ID_JOYPAD_LEFT, /* X Cursor horizontal-layout games */ RETRO_DEVICE_ID_JOYPAD_R2, /* Y Cursor UP vertical-layout games */ RETRO_DEVICE_ID_JOYPAD_R, /* Y Cursor RIGHT vertical-layout games */ RETRO_DEVICE_ID_JOYPAD_L2, /* Y Cursor DOWN vertical-layout games */ RETRO_DEVICE_ID_JOYPAD_L, /* Y Cursor LEFT vertical-layout games */ RETRO_DEVICE_ID_JOYPAD_START, RETRO_DEVICE_ID_JOYPAD_A, RETRO_DEVICE_ID_JOYPAD_B, }, RETRO_DEVICE_ID_JOYPAD_Y, /* X Cursor horizontal-layout games */ RETRO_DEVICE_ID_JOYPAD_X, /* X Cursor horizontal-layout games */ RETRO_DEVICE_ID_JOYPAD_A, /* X Cursor horizontal-layout games */ RETRO_DEVICE_ID_JOYPAD_B, /* X Cursor horizontal-layout games */ RETRO_DEVICE_ID_JOYPAD_LEFT, /* Y Cursor UP vertical-layout games */ RETRO_DEVICE_ID_JOYPAD_UP, /* Y Cursor RIGHT vertical-layout games */ RETRO_DEVICE_ID_JOYPAD_RIGHT, /* Y Cursor DOWN vertical-layout games */ RETRO_DEVICE_ID_JOYPAD_DOWN, /* Y Cursor LEFT vertical-layout games */ RETRO_DEVICE_ID_JOYPAD_START, RETRO_DEVICE_ID_JOYPAD_L, RETRO_DEVICE_ID_JOYPAD_R, "default", 0x000000, 0xFFFFFF }, "wonderswan", 0x3E3D20, 0x9B9D66 }, "wondeswan_color", 0x1B201E, 0xD7D49D }, "swancrystal", 0x151108, 0xFFFCCA }, "gb_dmg", 0x00420C, 0x578200 }, "gb_pocket", 0x2A3325, 0xA7B19A }, "gb_light", 0x00778D, 0x01CBDF }, "blossom_pink", 0x180F0F, 0xF09898 }, "bubbles_blue", 0x0D1418, 0x88D0F0 }, "buttercup_green", 0x12160D, 0xB8E088 }, "digivice", 0x000000, 0x8C8C73 }, "game_com", 0x000000, 0xA7BF6B }, "gameking", 0x184221, 0x8CCE94 }, "game_master", 0x2D2D2B, 0x829FA6 }, "golden_wild", 0x120F0A, 0xB99F65 }, "greenscale", 0x0C360C, 0x9CBE0C }, "hokage_orange", 0x170D08, 0xEA8352 }, "labo_fawn", 0x15110B, 0xD7AA73 }, "legendary_super_saiyan", 0x101509, 0xA5DB5A }, "microvision", 0x303030, 0xA0A0A0 }, "million_live_gold", 0x141109, 0xCDB261 }, "odyssey_gold", 0x131000, 0xC2A000 }, "shiny_sky_blue", 0x0E1216, 0x8CB6DF }, "slime_blue", 0x040E14, 0x2F8CCC }, "ti_83", 0x181810, 0x9CA684 }, "travel_wood", 0x482810, 0xF8D8B0 }, "virtual_boy", 0x000000, 0xE30000 },

https://github.com/libretro/beetle-wswan-libretro/blob/master/libretro_core_options.h

libretro options "wswan_rotate_display", "Display Rotation", NULL, "Choose the orientation of the console screen. 'Portrait' can be used to achieve the correct layout of portrait oriented games on a conventional (landscape) display. 'Manual' enables rotation via the controller (default button: SELECT).", NULL, NULL, "manual", "Manual" }, "landscape", "Landscape" }, "portrait", "Portrait" }, NULL, NULL }, }, "manual", }, "wswan_rotate_keymap", "Rotate Button Mappings", NULL, "Choose the preferred button mapping. 'Auto' adjusts button mapping to match the current display rotation.", NULL, NULL, "auto", "Auto" }, "disabled", "Landscape" }, "enabled", "Portrait" }, NULL, NULL}, }, "auto", }, "wswan_mono_palette", "Color Palette", NULL, "Choose the colorization of WonderSwan (Mono) games. 'WS' palettes mimic the display of the original WonderSwan hardware.", NULL, NULL, "default", "Grayscale" }, "wonderswan", "WS - WonderSwan" }, "wondeswan_color", "WS - WonderSwan Color" }, "swancrystal", "WS - SwanCrystal" }, "gb_dmg", "Game Boy DMG" }, "gb_pocket", "Game Boy Pocket" }, "gb_light", "Game Boy Light" }, "blossom_pink", "Blossom Pink" }, "bubbles_blue", "Bubbles Blue" }, "buttercup_green", "Buttercup Green" }, "digivice", "Digivice" }, "game_com", "Game.com" }, "gameking", "GameKing" }, "game_master", "Game Master" }, "golden_wild", "Golden Wild" }, "greenscale", "Greenscale" }, "hokage_orange", "Hokage Orange" }, "labo_fawn", "Labo Fawn" }, "legendary_super_saiyan", "Legendary Super Saiyan" }, "microvision", "Microvision" }, "million_live_gold", "Million Live Gold" }, "odyssey_gold", "Odyssey Gold" }, "shiny_sky_blue", "Shiny Sky Blue" }, "slime_blue", "Slime Blue" }, "ti_83", "TI-83" }, "travel_wood", "Travel Wood" }, "virtual_boy", "Virtual Boy" }, NULL, NULL }, }, "default" }, "wswan_gfx_colors", "Color Depth (Restart Required)", NULL, "24-bit is slower and not available on all platforms.", NULL, NULL, "16bit", "Thousands (16-bit)" }, "24bit", "Millions (24-bit)" }, NULL, NULL }, }, "16bit" }, "wswan_frameskip", "Frameskip", NULL, "Skip frames to avoid audio buffer under-run (crackling). Improves performance at the expense of visual smoothness. 'Auto' skips frames when advised by the frontend. 'Manual' utilizes the 'Frameskip Threshold (%)' setting.", NULL, NULL, "disabled", NULL }, "auto", "Auto" }, "manual", "Manual" }, NULL, NULL }, }, "disabled" }, "wswan_frameskip_threshold", "Frameskip Threshold (%)", NULL, "When 'Frameskip' is set to 'Manual', this specifies the audio buffer occupancy threshold (percentage) below which frames will be skipped. Higher values reduce the risk of crackling by causing frames to be dropped more frequently.", NULL, NULL, "15", NULL }, "18", NULL }, "21", NULL }, "24", NULL }, "27", NULL }, "30", NULL }, "33", NULL }, "36", NULL }, "39", NULL }, "42", NULL }, "45", NULL }, "48", NULL }, "51", NULL }, "54", NULL }, "57", NULL }, "60", NULL }, NULL, NULL }, }, "33" }, "wswan_60hz_mode", "60Hz Mode", NULL, "Update the display at 60Hz instead of the native 75Hz WonderSwan refresh rate by dropping every fifth frame. Reduces video smoothness, but avoids screen tearing on displays that do not support native operation above 60Hz.", NULL, NULL, "disabled", NULL }, "enabled", NULL }, NULL, NULL }, }, "enabled", }, "wswan_sound_sample_rate", "Sound Output Sample Rate", NULL, "Higher values improve sound quality slightly at the expense of performance.", NULL, NULL, "11025", NULL }, "22050", NULL }, "44100", NULL }, "48000", NULL }, NULL, NULL }, }, "44100", }, "wswan_sound_low_pass", "Audio Filter", NULL, "Apply a low pass audio filter to 'soften' the sometimes harsh chiptunes produced by the WonderSwan.", NULL, NULL, "disabled", NULL }, "enabled", NULL }, NULL, NULL }, }, "disabled",

Add screenshots

Klonoa save and state.zip image50 image51 image52

soundsnow commented 1 year ago

Add Dark Filter, because Wonderswan is also a monochrome handheld (Game Boy and Neo Geo Pocket) Add a Rotate (Active D-Pad) Button image53

soundsnow commented 1 year ago

Benesse - Pocket Challenge V2 file extension: .pc2 Wonderswan is compatible with Pocket Challenge V2 roms

soundsnow commented 1 year ago

pcv2_8 pcv2_2

soundsnow commented 1 year ago

A is at the upper right of B instead of the lower right

soundsnow commented 1 year ago

Y buttons are at the top left of A, B instead of the top right

soundsnow commented 1 year ago

Dicing Knight. Y buttons are the item slots, some people are used to left-handed, some people are used to right-handed Ultraman - Hikari no Kuni no Shisha But for fighting games, the left hand seems very busy

soundsnow commented 1 year ago

are my thumbs too big? image56

Rakashazi commented 1 year ago

Thanks for the info, I added a manual rotation option for Klonoa in console options menu. The other on-screen control changes will come in a future version when I do a big update of the related code.