diff --git a/higan/emulator/emulator.hpp b/higan/emulator/emulator.hpp index 2e9adba5e..9c2baa65a 100755 --- a/higan/emulator/emulator.hpp +++ b/higan/emulator/emulator.hpp @@ -39,13 +39,13 @@ using namespace nall; namespace higan { static const string Name = "higan"; - static const string Version = "106.234"; + static const string Version = "107"; static const string Author = "byuu"; static const string License = "GPLv3"; static const string Website = "https://byuu.org"; //incremented only when serialization format changes - static const string SerializerVersion = "106.234"; + static const string SerializerVersion = "107"; namespace Constants { namespace Colorburst { diff --git a/higan/sfc/coprocessor/icd/icd.cpp b/higan/sfc/coprocessor/icd/icd.cpp index bfb7a3040..4ae40fb19 100755 --- a/higan/sfc/coprocessor/icd/icd.cpp +++ b/higan/sfc/coprocessor/icd/icd.cpp @@ -25,15 +25,6 @@ auto ICD::unload() -> void { } auto ICD::main() -> void { - #if 0 - static uint n = 0; - float x = sin((2*3.141592*(n++/64)*1000.0)/44100.0)*0.1; - GameBoy::apu.stream->sample(x, x); - Thread::step(2); - Thread::synchronize(cpu); - return; - #endif - if(r6003.bit(7)) { GameBoy::system.run(); Thread::step(GameBoy::system.clocksExecuted()); diff --git a/higan/target-higan/higan.cpp b/higan/target-higan/higan.cpp index 60d3d3189..26359a6c0 100644 --- a/higan/target-higan/higan.cpp +++ b/higan/target-higan/higan.cpp @@ -151,6 +151,25 @@ auto nall::main(Arguments arguments) -> void { emulator.inputUpdate(); inputManager.poll(); hotkeys.bind(); + + if(settings.prototypeWarning) { + MessageDialog dialog; + dialog.setTitle({"higan v", higan::Version, " (feedback prototype)"}); + dialog.setText( + "Note: this is a prototype release meant for feedback; not general use.\n" + "Compared to higan v106, a new tree-based user interface has been designed.\n" + "Please go to 'Help -> User Guide' for an overview on how to use this program.\n\n" + "As this is exerpimental, the next release will likely be quite different as well.\n" + "If you're not interested in this experiment, please continue using v106 for now.\n" + "Otherwise, I would appreciate any feedback on how to improve higan's usability.\n" + "Please go to 'Help -> Feedback' for ways to send me feedback.\n\n" + "Thank you!" + ); + dialog.setOption("Don't show this message again"); + dialog.information(); + if(dialog.checked()) settings.prototypeWarning = false; + } + Application::onMain({&Emulator::main, &emulator}); Application::run(); diff --git a/higan/target-higan/menus/help.cpp b/higan/target-higan/menus/help.cpp index 6883c4ce2..da6347f5a 100644 --- a/higan/target-higan/menus/help.cpp +++ b/higan/target-higan/menus/help.cpp @@ -6,6 +6,9 @@ HelpMenu::HelpMenu(MenuBar* parent) : Menu(parent) { userGuide.setIcon(Icon::Application::Browser).setText("User Guide ...").onActivate([&] { invoke("https://byuu.org/higan/user-guide"); }); + feedback.setIcon(Icon::Application::Browser).setText("Feedback ...").onActivate([&] { + invoke("https://byuu.org/higan/feedback"); + }); about.setIcon(Icon::Prompt::Question).setText("About ...").onActivate([&] { AboutDialog() .setLogo(Resource::Logo) diff --git a/higan/target-higan/menus/menus.hpp b/higan/target-higan/menus/menus.hpp index 866388bd0..5ecd4b8fc 100644 --- a/higan/target-higan/menus/menus.hpp +++ b/higan/target-higan/menus/menus.hpp @@ -61,6 +61,7 @@ struct HelpMenu : Menu { HelpMenu(MenuBar*); MenuItem webpage{this}; MenuItem userGuide{this}; + MenuItem feedback{this}; MenuSeparator separator{this}; MenuItem about{this}; }; diff --git a/higan/target-higan/program/system-overview.cpp b/higan/target-higan/program/system-overview.cpp index 10f036653..b804bde5f 100644 --- a/higan/target-higan/program/system-overview.cpp +++ b/higan/target-higan/program/system-overview.cpp @@ -1,6 +1,6 @@ SystemOverview::SystemOverview(View* parent) : PanelItem(parent, Size{~0, ~0}) { setCollapsible().setVisible(false); - header.setText("Overview").setFont(Font().setBold()); + header.setText("Preview (read-only)").setFont(Font().setBold()); } auto SystemOverview::show() -> void { diff --git a/higan/target-higan/settings/settings.cpp b/higan/target-higan/settings/settings.cpp index 9d225d577..464378cf9 100644 --- a/higan/target-higan/settings/settings.cpp +++ b/higan/target-higan/settings/settings.cpp @@ -16,8 +16,13 @@ auto Settings::save() -> void { auto Settings::properties(bool mode, Markup::Node document) -> void { #define s(name) \ - if(mode == 0) document[string{#name}.trimRight(".identifier", 1L).transform(".", "/")].value(name); \ - if(mode == 1) document(string{#name}.trimRight(".identifier", 1L).transform(".", "/")).setValue(name); + if(mode == 0 && document[string{#name}.trimRight(".identifier", 1L).transform(".", "/")]) { \ + document[string{#name}.trimRight(".identifier", 1L).transform(".", "/")].value(name); \ + } \ + if(mode == 1) { \ + document(string{#name}.trimRight(".identifier", 1L).transform(".", "/")).setValue(name); \ + } + s(prototypeWarning) s(video.driver) s(video.monitor) s(video.format) diff --git a/higan/target-higan/settings/settings.hpp b/higan/target-higan/settings/settings.hpp index c2d6de10f..3cf0adecc 100644 --- a/higan/target-higan/settings/settings.hpp +++ b/higan/target-higan/settings/settings.hpp @@ -3,6 +3,8 @@ struct Settings { auto save() -> void; auto properties(bool mode, Markup::Node document) -> void; + bool prototypeWarning = true; + struct { string driver = Video::safestDriver(); string monitor = "Primary"; diff --git a/icarus/icarus.hpp b/icarus/icarus.hpp index 5f8ff8be4..4ed483837 100644 --- a/icarus/icarus.hpp +++ b/icarus/icarus.hpp @@ -6,7 +6,7 @@ using namespace hiro; namespace icarus { static const string Name = "icarus"; - static const string Version = "106.234"; + static const string Version = "107"; static const string Author = "byuu"; static const string License = "GPLv3"; static const string Website = "https://byuu.org"; diff --git a/ruby/GNUmakefile b/ruby/GNUmakefile index 1450daf55..ceb6d5e63 100755 --- a/ruby/GNUmakefile +++ b/ruby/GNUmakefile @@ -13,7 +13,7 @@ ifeq ($(ruby),) ruby += input.sdl input.xlib input.udev else ifeq ($(platform),bsd) ruby += video.glx video.glx2 video.xvideo video.xshm - ruby += audio.oss #audio.pulseaudio + ruby += audio.oss audio.openal #audio.pulseaudio ruby += input.sdl input.xlib endif endif @@ -65,7 +65,8 @@ endif ifeq ($(platform),bsd) ruby.options += -lX11 -lXext -lXrandr - ruby.options += $(if $(findstring audio.openal,$(ruby)),-lopenal) + ruby.options += $(if $(findstring audio.openal,$(ruby)),-lopenal -fuse-ld=bfd) + # -fuse-ld=bfd: see FreeBSD bug 219089 endif ruby.objects := $(object.path)/ruby.o