mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-08-31 13:42:33 +02:00
Update to v106r69 release.
byuu says: The biggest change was improving WonderSwan emulation. With help from trap15, I tracked down a bug where I was checking the wrong bit for reverse DMA transfers. Then I also emulated VTOTAL to support variable refresh rate. Then I improved HyperVoice emulation which should be unsigned samples in three of four modes. That got Fire Lancer running great. I also rewrote the disassembler. The old one disassembled many instructions completely wrong, and deviated too much from any known x86 syntax. I also emulated some of the quirks of the V30 (two-byte POP into registers fails, SALC is just XLAT mirrored, etc) which probably don't matter unless someone tries to run code to verify it's a NEC CPU and not an Intel CPU, but hey, why not? I also put more work into the MSX skeleton, but it's still just a skeleton with no real emulation yet.
This commit is contained in:
@@ -12,6 +12,9 @@ auto pSizable::minimumSize() const -> Size {
|
||||
return {0, 0};
|
||||
}
|
||||
|
||||
auto pSizable::setCollapsible(bool collapsible) -> void {
|
||||
}
|
||||
|
||||
auto pSizable::setGeometry(Geometry geometry) -> void {
|
||||
self().doSize();
|
||||
}
|
||||
|
@@ -6,6 +6,7 @@ struct pSizable : pObject {
|
||||
Declare(Sizable, Object)
|
||||
|
||||
virtual auto minimumSize() const -> Size;
|
||||
virtual auto setCollapsible(bool collapsible) -> void;
|
||||
virtual auto setGeometry(Geometry geometry) -> void;
|
||||
};
|
||||
|
||||
|
@@ -8,6 +8,8 @@ namespace hiro {
|
||||
static vector<pTimer*> timers;
|
||||
|
||||
static auto CALLBACK Timer_timeoutProc(HWND hwnd, UINT msg, UINT_PTR timerID, DWORD time) -> void {
|
||||
if(Application::state().quit) return;
|
||||
|
||||
for(auto& timer : timers) {
|
||||
if(timer->htimer == timerID) return timer->self().doActivate();
|
||||
}
|
||||
|
@@ -95,6 +95,22 @@ auto pLabel::windowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) -> ma
|
||||
return msg == WM_ERASEBKGND;
|
||||
}
|
||||
|
||||
if(msg == WM_LBUTTONDOWN || msg == WM_MBUTTONDOWN || msg == WM_RBUTTONDOWN) {
|
||||
switch(msg) {
|
||||
case WM_LBUTTONDOWN: self().doMousePress(Mouse::Button::Left); break;
|
||||
case WM_MBUTTONDOWN: self().doMousePress(Mouse::Button::Middle); break;
|
||||
case WM_RBUTTONDOWN: self().doMousePress(Mouse::Button::Right); break;
|
||||
}
|
||||
}
|
||||
|
||||
if(msg == WM_LBUTTONUP || msg == WM_MBUTTONUP || msg == WM_RBUTTONUP) {
|
||||
switch(msg) {
|
||||
case WM_LBUTTONUP: self().doMouseRelease(Mouse::Button::Left); break;
|
||||
case WM_MBUTTONUP: self().doMouseRelease(Mouse::Button::Middle); break;
|
||||
case WM_RBUTTONUP: self().doMouseRelease(Mouse::Button::Right); break;
|
||||
}
|
||||
}
|
||||
|
||||
return pWidget::windowProc(hwnd, msg, wparam, lparam);
|
||||
}
|
||||
|
||||
|
@@ -51,10 +51,9 @@ auto pLineEdit::onChange() -> void {
|
||||
}
|
||||
|
||||
auto pLineEdit::windowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) -> maybe<LRESULT> {
|
||||
if(msg == WM_KEYDOWN) {
|
||||
if(msg == WM_KEYDOWN && wparam == VK_RETURN) {
|
||||
self().doActivate();
|
||||
}
|
||||
|
||||
return pWidget::windowProc(hwnd, msg, wparam, lparam);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user