mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-02-23 14:42:33 +01:00
byuu says: Changelog: - nall: merged Path::config() and Path::local() to Path::userData() - ~/.local/share or %appdata or ~/Library/ApplicationSupport - higan, bsnes: render main window icon onto viewport instead of canvas - should hopefully fix a brief flickering glitch that appears on Windows - icarus: improved Super Famicom heuristics for Starfox / Starwing RAM - ruby/Direct3D: handle viewport size changes in lock() instead of output() - fixes icon disappearing when resizing main window - hiro/Windows: remove WS_DISABLED from StatusBar to fix window resize grip - this is experimental: I initially used WS_DISABLED to work around a focus bug - yet trying things now, said bug seems(?) to have gone away at some point ... - bsnes: added advanced settings panel with real-time driver change support I'd like feedback on the real-time driver change, for possible consideration into adding this to higan as well. Some drivers just crash, it's a fact of life. The ASIO driver in particular likes to crash inside the driver itself, without any error messages ever returned to try and catch. When you try to change a driver with a game loaded, it gives you a scary warning, asking if you want to proceed. When you change a driver, it sets a crash flag, and if the driver crashes while initializing, then restarting bsnes will disable the errant driver. If it fails in a recoverable way, then it sets the driver to “None” and warns you that the driver cannot be used. What I'm thinking of further adding is to call emulator→save() to write out the save RAM contents beforehand (although the periodic auto-saving RAM will handle this anyway when it's enabled), and possibly it might be wise to capture an emulator save state, although those can't be taken without advancing the emulator to the next frame, so that might not be a good idea. I'm also thinking we should show some kind of message somewhere when a driver is set to “None”. The status bar can be hidden, so perhaps on the title bar? Or maybe just a warning on startup that a driver is set to “None”.
90 lines
3.6 KiB
C++
90 lines
3.6 KiB
C++
struct AboutWindow : Window {
|
|
AboutWindow();
|
|
|
|
VerticalLayout layout{this};
|
|
Canvas canvas{&layout, Size{399, 95}, 15};
|
|
HorizontalLayout informationLayout{&layout, Size{~0, 0}};
|
|
Label informationLeft{&informationLayout, Size{~0, 0}, 3};
|
|
Label informationRight{&informationLayout, Size{~0, 0}};
|
|
};
|
|
|
|
struct Presentation : Window {
|
|
Presentation();
|
|
auto updateEmulator() -> void;
|
|
auto drawIcon(uint32_t* output, uint length, uint width, uint height) -> void;
|
|
auto clearViewport() -> void;
|
|
auto resizeViewport(bool resizeWindow = true) -> void;
|
|
auto toggleFullScreen() -> void;
|
|
auto loadSystems() -> void;
|
|
auto loadShaders() -> void;
|
|
|
|
MenuBar menuBar{this};
|
|
Menu systemsMenu{&menuBar};
|
|
Menu systemMenu{&menuBar};
|
|
Menu inputPort1{&systemMenu};
|
|
Menu inputPort2{&systemMenu};
|
|
Menu inputPort3{&systemMenu};
|
|
MenuSeparator systemMenuSeparatorPorts{&systemMenu};
|
|
MenuItem resetSystem{&systemMenu};
|
|
MenuItem powerSystem{&systemMenu};
|
|
MenuItem unloadSystem{&systemMenu};
|
|
Menu settingsMenu{&menuBar};
|
|
Menu videoScaleMenu{&settingsMenu};
|
|
MenuItem videoScaleSmall{&videoScaleMenu};
|
|
MenuItem videoScaleMedium{&videoScaleMenu};
|
|
MenuItem videoScaleLarge{&videoScaleMenu};
|
|
Menu videoEmulationMenu{&settingsMenu};
|
|
MenuCheckItem blurEmulation{&videoEmulationMenu};
|
|
MenuCheckItem colorEmulation{&videoEmulationMenu};
|
|
MenuCheckItem scanlineEmulation{&videoEmulationMenu};
|
|
Menu videoShaderMenu{&settingsMenu};
|
|
MenuRadioItem videoShaderNone{&videoShaderMenu};
|
|
MenuRadioItem videoShaderBlur{&videoShaderMenu};
|
|
Group videoShaders{&videoShaderNone, &videoShaderBlur};
|
|
MenuSeparator videoSettingsSeparator{&settingsMenu};
|
|
MenuCheckItem synchronizeVideo{&settingsMenu};
|
|
MenuCheckItem synchronizeAudio{&settingsMenu};
|
|
MenuCheckItem muteAudio{&settingsMenu};
|
|
MenuCheckItem showStatusBar{&settingsMenu};
|
|
MenuSeparator settingsSeparator{&settingsMenu};
|
|
MenuItem showSystemSettings{&settingsMenu};
|
|
MenuItem showVideoSettings{&settingsMenu};
|
|
MenuItem showAudioSettings{&settingsMenu};
|
|
MenuItem showInputSettings{&settingsMenu};
|
|
MenuItem showHotkeySettings{&settingsMenu};
|
|
MenuItem showAdvancedSettings{&settingsMenu};
|
|
Menu toolsMenu{&menuBar};
|
|
Menu saveQuickStateMenu{&toolsMenu};
|
|
MenuItem saveSlot1{&saveQuickStateMenu};
|
|
MenuItem saveSlot2{&saveQuickStateMenu};
|
|
MenuItem saveSlot3{&saveQuickStateMenu};
|
|
MenuItem saveSlot4{&saveQuickStateMenu};
|
|
MenuItem saveSlot5{&saveQuickStateMenu};
|
|
Menu loadQuickStateMenu{&toolsMenu};
|
|
MenuItem loadSlot1{&loadQuickStateMenu};
|
|
MenuItem loadSlot2{&loadQuickStateMenu};
|
|
MenuItem loadSlot3{&loadQuickStateMenu};
|
|
MenuItem loadSlot4{&loadQuickStateMenu};
|
|
MenuItem loadSlot5{&loadQuickStateMenu};
|
|
MenuCheckItem pauseEmulation{&toolsMenu};
|
|
MenuSeparator toolsMenuSeparator{&toolsMenu};
|
|
MenuItem cheatEditor{&toolsMenu};
|
|
MenuItem stateManager{&toolsMenu};
|
|
MenuItem manifestViewer{&toolsMenu};
|
|
MenuItem gameNotes{&toolsMenu};
|
|
Menu helpMenu{&menuBar};
|
|
MenuItem documentation{&helpMenu};
|
|
MenuItem credits{&helpMenu};
|
|
MenuSeparator helpMenuSeparator{&helpMenu};
|
|
MenuItem about{&helpMenu};
|
|
|
|
FixedLayout layout{this};
|
|
Canvas canvas{&layout, Geometry{0, 0, 1, 1}};
|
|
Viewport viewport{&layout, Geometry{0, 0, 1, 1}};
|
|
|
|
StatusBar statusBar{this};
|
|
};
|
|
|
|
extern unique_pointer<AboutWindow> aboutWindow;
|
|
extern unique_pointer<Presentation> presentation;
|