Update to 20180729 release.
byuu wrote:
Sigh ...
asio.hpp needs #include <nall/windows/registry.hpp>
[Since the last WIP, byuu also posted the following message. -Ed.]
ruby drivers have all been updated (but not tested outside of BSD), and
I redesigned the settings window. The driver functionality all exists on
a new "Drivers" panel, the emulator/hack settings go to a
"Configuration" panel, and the video/audio panels lose driver settings.
As does the settings menu and its synchronize options.
I want to start pushing toward a v107 release. Critically, I will need
DirectSound and ALSA to support dynamic rate control. I'd also like to
eliminate the other system manifest.bml files. I need to update the
cheat code database format, and bundle at least a few quark shaders --
although I still need to default to Direct3D on Windows.
Turbo keys would be nice, if it's not too much effort. Aside from
netplay, it's the last significant feature I'm missing.
I think for v107, higan is going to be a bit rough around the edges
compared to bsnes. And I don't think it's practical to finish the bsnes
localization support.
I'm thinking we probably want another WIP to iron out any critical
issues, but this time there should be a feature freeze with the next
WIP.
2018-07-29 13:24:38 +00:00
|
|
|
#if defined(Hiro_Object)
|
|
|
|
struct mObject {
|
|
|
|
Declare(Object)
|
|
|
|
|
|
|
|
mObject();
|
|
|
|
virtual ~mObject();
|
|
|
|
mObject(const mObject&) = delete;
|
|
|
|
mObject& operator=(const mObject&) = delete;
|
|
|
|
|
|
|
|
explicit operator bool() const;
|
|
|
|
|
|
|
|
auto abstract() const -> bool;
|
|
|
|
auto adjustOffset(int displacement) -> type&;
|
|
|
|
auto enabled(bool recursive = false) const -> bool;
|
|
|
|
virtual auto focused() const -> bool;
|
|
|
|
auto font(bool recursive = false) const -> Font;
|
|
|
|
virtual auto group() const -> Group;
|
|
|
|
auto offset() const -> int;
|
|
|
|
auto parent() const -> mObject*;
|
|
|
|
auto parentComboButton(bool recursive = false) const -> mComboButton*;
|
|
|
|
auto parentComboEdit(bool recursive = false) const -> mComboEdit*;
|
|
|
|
auto parentFrame(bool recursive = false) const -> mFrame*;
|
|
|
|
auto parentIconView(bool recursive = false) const -> mIconView*;
|
|
|
|
auto parentMenu(bool recursive = false) const -> mMenu*;
|
|
|
|
auto parentMenuBar(bool recursive = false) const -> mMenuBar*;
|
|
|
|
auto parentPopupMenu(bool recursive = false) const -> mPopupMenu*;
|
|
|
|
auto parentSizable(bool recursive = false) const -> mSizable*;
|
|
|
|
auto parentTabFrame(bool recursive = false) const -> mTabFrame*;
|
|
|
|
auto parentTabFrameItem(bool recursive = false) const -> mTabFrameItem*;
|
|
|
|
auto parentTableView(bool recursive = false) const -> mTableView*;
|
|
|
|
auto parentTableViewItem(bool recursive = false) const -> mTableViewItem*;
|
|
|
|
auto parentTreeView(bool recursive = false) const -> mTreeView*;
|
|
|
|
auto parentTreeViewItem(bool recursive = false) const -> mTreeViewItem*;
|
|
|
|
auto parentWidget(bool recursive = false) const -> mWidget*;
|
|
|
|
auto parentWindow(bool recursive = false) const -> mWindow*;
|
|
|
|
virtual auto remove() -> type&;
|
|
|
|
virtual auto reset() -> type&;
|
|
|
|
virtual auto setEnabled(bool enabled = true) -> type&;
|
|
|
|
virtual auto setFocused() -> type&;
|
|
|
|
virtual auto setFont(const Font& font = {}) -> type&;
|
|
|
|
virtual auto setGroup(sGroup group = {}) -> type&;
|
|
|
|
virtual auto setParent(mObject* parent = nullptr, int offset = -1) -> type&;
|
|
|
|
virtual auto setVisible(bool visible = true) -> type&;
|
|
|
|
auto visible(bool recursive = false) const -> bool;
|
|
|
|
|
Update to bsnes v107.1 release.
byuu says:
Don't let the point release fool you, there are many significant changes in this
release. I will be keeping bsnes releases using a point system until the new
higan release is ready.
Changelog:
- GUI: added high DPI support
- GUI: fixed the state manager image preview
- Windows: added a new waveOut driver with support for dynamic rate control
- Windows: corrected the XAudio 2.1 dynamic rate control support [BearOso]
- Windows: corrected the Direct3D 9.0 fullscreen exclusive window centering
- Windows: fixed XInput controller support on Windows 10
- SFC: added high-level emulation for the DSP1, DSP2, DSP4, ST010, and Cx4
coprocessors
- SFC: fixed a slight rendering glitch in the intro to Megalomania
If the coprocessor firmware is missing, bsnes will fallback on HLE where it is
supported, which is everything other than SD Gundam GX and the two Hayazashi
Nidan Morita Shougi games.
The Windows dynamic rate control works best with Direct3D in fullscreen
exclusive mode. I recommend the waveOut driver over the XAudio 2.1 driver, as it
is not possible to target a single XAudio2 version on all Windows OS releases.
The waveOut driver should work everywhere out of the box.
Note that with DRC, the synchronization source is your monitor, so you will
want to be running at 60hz (NTSC) or 50hz (PAL). If you have an adaptive sync
monitor, you should instead use the WASAPI (exclusive) or ASIO audio driver.
2019-04-09 01:16:30 +00:00
|
|
|
template<typename T = string> auto property(const string& name) const -> T {
|
|
|
|
if(auto property = state.properties.find(name)) {
|
|
|
|
if(property->value().is<T>()) return property->value().get<T>();
|
|
|
|
}
|
|
|
|
return {};
|
|
|
|
}
|
|
|
|
|
|
|
|
//this template basically disables implicit template type deduction:
|
|
|
|
//if setProperty(name, value) is called without a type, the type will be a string, so property(name) will just work.
|
|
|
|
//if setProperty<T>(name, value) is called, the type will be T. as such, U must be cast to T on assignment.
|
|
|
|
//when T = string, value must be convertible to a string.
|
|
|
|
//U defaults to a string, so that setProperty(name, {values, ...}) will deduce U as a string.
|
|
|
|
template<typename T = string, typename U = string> auto setProperty(const string& name, const U& value) -> type& {
|
|
|
|
if constexpr(std::is_same_v<T, string> && !std::is_same_v<U, string>) {
|
|
|
|
return setProperty(name, string{value});
|
|
|
|
}
|
|
|
|
if(auto property = state.properties.find(name)) {
|
|
|
|
if((const T&)value) property->setValue((const T&)value);
|
|
|
|
else state.properties.remove(*property);
|
|
|
|
} else {
|
|
|
|
if((const T&)value) state.properties.insert({name, (const T&)value});
|
|
|
|
}
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
Update to 20180729 release.
byuu wrote:
Sigh ...
asio.hpp needs #include <nall/windows/registry.hpp>
[Since the last WIP, byuu also posted the following message. -Ed.]
ruby drivers have all been updated (but not tested outside of BSD), and
I redesigned the settings window. The driver functionality all exists on
a new "Drivers" panel, the emulator/hack settings go to a
"Configuration" panel, and the video/audio panels lose driver settings.
As does the settings menu and its synchronize options.
I want to start pushing toward a v107 release. Critically, I will need
DirectSound and ALSA to support dynamic rate control. I'd also like to
eliminate the other system manifest.bml files. I need to update the
cheat code database format, and bundle at least a few quark shaders --
although I still need to default to Direct3D on Windows.
Turbo keys would be nice, if it's not too much effort. Aside from
netplay, it's the last significant feature I'm missing.
I think for v107, higan is going to be a bit rough around the edges
compared to bsnes. And I don't think it's practical to finish the bsnes
localization support.
I'm thinking we probably want another WIP to iron out any critical
issues, but this time there should be a feature freeze with the next
WIP.
2018-07-29 13:24:38 +00:00
|
|
|
//private:
|
Update to v106r57 release.
byuu says:
I've added tool tips to hiro for Windows, GTK, and Qt. I'm unsure how to
add them for Cocoa. I wasted am embarrassing ~14 hours implementing tool
tips from scratch on Windows, because the `TOOLTIPS_CLASS` widget just
absolutely refused to show up, no matter what I tried. As such, they're
not quite 100% native, but I would really appreciate any patch
submissions to help improve my implementation.
I added tool tips to all of the confusing settings in bsnes. And of
course, for those of you who don't like them, there's a configuration
file setting to turn them off globally.
I also improved Mega Drive handling of the Game Genie a bit, and
restructured the way the Settings class works in bsnes.
Starting now, I'm feature-freezing bsnes and higan. From this point
forward:
- polishing up and fixing bugs caused by the ruby/hiro changes
- adding DRC to XAudio2, and maybe exclusive mode to WGL
- correcting FEoEZ (English) to load and work again out of the box
Once that's done, a final beta of bsnes will go out, I'll fix any
reported bugs that I'm able to, and then v107 should be ready. This time
with higan being functional, but marked as v107 beta. v108 will restore
higan to production status again, alongside bsnes.
2018-08-08 08:46:58 +00:00
|
|
|
//sizeof(mObject) == 88
|
Update to 20180729 release.
byuu wrote:
Sigh ...
asio.hpp needs #include <nall/windows/registry.hpp>
[Since the last WIP, byuu also posted the following message. -Ed.]
ruby drivers have all been updated (but not tested outside of BSD), and
I redesigned the settings window. The driver functionality all exists on
a new "Drivers" panel, the emulator/hack settings go to a
"Configuration" panel, and the video/audio panels lose driver settings.
As does the settings menu and its synchronize options.
I want to start pushing toward a v107 release. Critically, I will need
DirectSound and ALSA to support dynamic rate control. I'd also like to
eliminate the other system manifest.bml files. I need to update the
cheat code database format, and bundle at least a few quark shaders --
although I still need to default to Direct3D on Windows.
Turbo keys would be nice, if it's not too much effort. Aside from
netplay, it's the last significant feature I'm missing.
I think for v107, higan is going to be a bit rough around the edges
compared to bsnes. And I don't think it's practical to finish the bsnes
localization support.
I'm thinking we probably want another WIP to iron out any critical
issues, but this time there should be a feature freeze with the next
WIP.
2018-07-29 13:24:38 +00:00
|
|
|
struct State {
|
Update to v106r57 release.
byuu says:
I've added tool tips to hiro for Windows, GTK, and Qt. I'm unsure how to
add them for Cocoa. I wasted am embarrassing ~14 hours implementing tool
tips from scratch on Windows, because the `TOOLTIPS_CLASS` widget just
absolutely refused to show up, no matter what I tried. As such, they're
not quite 100% native, but I would really appreciate any patch
submissions to help improve my implementation.
I added tool tips to all of the confusing settings in bsnes. And of
course, for those of you who don't like them, there's a configuration
file setting to turn them off globally.
I also improved Mega Drive handling of the Game Genie a bit, and
restructured the way the Settings class works in bsnes.
Starting now, I'm feature-freezing bsnes and higan. From this point
forward:
- polishing up and fixing bugs caused by the ruby/hiro changes
- adding DRC to XAudio2, and maybe exclusive mode to WGL
- correcting FEoEZ (English) to load and work again out of the box
Once that's done, a final beta of bsnes will go out, I'll fix any
reported bugs that I'm able to, and then v107 should be ready. This time
with higan being functional, but marked as v107 beta. v108 will restore
higan to production status again, alongside bsnes.
2018-08-08 08:46:58 +00:00
|
|
|
Font font; //32
|
2018-08-04 11:44:00 +00:00
|
|
|
set<Property> properties; //16
|
|
|
|
mObject* parent = nullptr; // 8
|
|
|
|
int offset = -1; // 4
|
|
|
|
char enabled = true; // 1+
|
|
|
|
char visible = true; // 1=4
|
Update to 20180729 release.
byuu wrote:
Sigh ...
asio.hpp needs #include <nall/windows/registry.hpp>
[Since the last WIP, byuu also posted the following message. -Ed.]
ruby drivers have all been updated (but not tested outside of BSD), and
I redesigned the settings window. The driver functionality all exists on
a new "Drivers" panel, the emulator/hack settings go to a
"Configuration" panel, and the video/audio panels lose driver settings.
As does the settings menu and its synchronize options.
I want to start pushing toward a v107 release. Critically, I will need
DirectSound and ALSA to support dynamic rate control. I'd also like to
eliminate the other system manifest.bml files. I need to update the
cheat code database format, and bundle at least a few quark shaders --
although I still need to default to Direct3D on Windows.
Turbo keys would be nice, if it's not too much effort. Aside from
netplay, it's the last significant feature I'm missing.
I think for v107, higan is going to be a bit rough around the edges
compared to bsnes. And I don't think it's practical to finish the bsnes
localization support.
I'm thinking we probably want another WIP to iron out any critical
issues, but this time there should be a feature freeze with the next
WIP.
2018-07-29 13:24:38 +00:00
|
|
|
} state;
|
|
|
|
|
2018-08-04 11:44:00 +00:00
|
|
|
wObject instance; // 8
|
|
|
|
pObject* delegate = nullptr; // 8
|
|
|
|
//vtable // 8
|
Update to 20180729 release.
byuu wrote:
Sigh ...
asio.hpp needs #include <nall/windows/registry.hpp>
[Since the last WIP, byuu also posted the following message. -Ed.]
ruby drivers have all been updated (but not tested outside of BSD), and
I redesigned the settings window. The driver functionality all exists on
a new "Drivers" panel, the emulator/hack settings go to a
"Configuration" panel, and the video/audio panels lose driver settings.
As does the settings menu and its synchronize options.
I want to start pushing toward a v107 release. Critically, I will need
DirectSound and ALSA to support dynamic rate control. I'd also like to
eliminate the other system manifest.bml files. I need to update the
cheat code database format, and bundle at least a few quark shaders --
although I still need to default to Direct3D on Windows.
Turbo keys would be nice, if it's not too much effort. Aside from
netplay, it's the last significant feature I'm missing.
I think for v107, higan is going to be a bit rough around the edges
compared to bsnes. And I don't think it's practical to finish the bsnes
localization support.
I'm thinking we probably want another WIP to iron out any critical
issues, but this time there should be a feature freeze with the next
WIP.
2018-07-29 13:24:38 +00:00
|
|
|
|
|
|
|
virtual auto construct() -> void;
|
|
|
|
virtual auto destruct() -> void;
|
|
|
|
};
|
|
|
|
#endif
|