bsnes/higan/phoenix/core/state.hpp

175 lines
3.2 KiB
C++
Raw Normal View History

struct Application::State {
string name;
bool quit = false;
} applicationState;
Update to v079 release. byuu says: This release includes Nintendo Super System DIP switch emulation and improved PPU rendering accuracy, among other things. Changelog: - added Nintendo Super System DIP switch emulation [requires XML setting maps] - emulated Super Game Boy $6001 VRAM offset selection port [ikari_01] - fixed randomness initialization of S-SMP port registers [fixes DBZ:Hyper Dimension and Ninja Warriors] - mosaic V-countdown caches BGOFS registers (fixes Super Turrican 2 effect) [reported by zal16] - non-mosaic BGOFS registers are always cached at H=60 (fixes NHL '94 and Super Mario World flickering) - fixed 2xSaI family of renderers on 64-bit systems - cleaned up SMP source code - phoenix: fixed a bug when closing bsnes while minimized Please note that the mosaic BGOFS fix is only for the accuracy profile. Unfortunately the older scanline-based compatibility renderer's code is nearly unmaintainable at this point, so I haven't yet been able to backport the fixes. Also, I have written a new cycle-accurate SMP core that does not use libco. The aim is to implement it into Snes9X v1.54. But it would of course be prudent to test the new core first. [...then in the next post...] Decided to keep that Super Mario World part a surprise, so ... surprise! Realized while working on the Super Turrican 2 mosaic fix, and from looking at NHL '94 and Dai Kaijuu Monogatari 2's behavior, that BGOFS registers must be cached between H=0 and H=88 for the entire scanline ... they can't work otherwise, and it'd be stupid for the PPU to re-add the offset to the position on every pixel anyway. I chose H=60 for now. Once I am set up with the RGB monitor and the North American cartridge dumping is completed, I'll set it on getting exact timings for all these things. It'll probably require a smallish speed hit to allow exact-cycle timing events for everything in the PPU.
2011-06-05 03:45:04 +00:00
struct Timer::State {
bool enabled = false;
unsigned milliseconds = 0;
Update to v079 release. byuu says: This release includes Nintendo Super System DIP switch emulation and improved PPU rendering accuracy, among other things. Changelog: - added Nintendo Super System DIP switch emulation [requires XML setting maps] - emulated Super Game Boy $6001 VRAM offset selection port [ikari_01] - fixed randomness initialization of S-SMP port registers [fixes DBZ:Hyper Dimension and Ninja Warriors] - mosaic V-countdown caches BGOFS registers (fixes Super Turrican 2 effect) [reported by zal16] - non-mosaic BGOFS registers are always cached at H=60 (fixes NHL '94 and Super Mario World flickering) - fixed 2xSaI family of renderers on 64-bit systems - cleaned up SMP source code - phoenix: fixed a bug when closing bsnes while minimized Please note that the mosaic BGOFS fix is only for the accuracy profile. Unfortunately the older scanline-based compatibility renderer's code is nearly unmaintainable at this point, so I haven't yet been able to backport the fixes. Also, I have written a new cycle-accurate SMP core that does not use libco. The aim is to implement it into Snes9X v1.54. But it would of course be prudent to test the new core first. [...then in the next post...] Decided to keep that Super Mario World part a surprise, so ... surprise! Realized while working on the Super Turrican 2 mosaic fix, and from looking at NHL '94 and Dai Kaijuu Monogatari 2's behavior, that BGOFS registers must be cached between H=0 and H=88 for the entire scanline ... they can't work otherwise, and it'd be stupid for the PPU to re-add the offset to the position on every pixel anyway. I chose H=60 for now. Once I am set up with the RGB monitor and the North American cartridge dumping is completed, I'll set it on getting exact timings for all these things. It'll probably require a smallish speed hit to allow exact-cycle timing events for everything in the PPU.
2011-06-05 03:45:04 +00:00
};
struct BrowserWindow::State {
lstring filters;
Window *parent = nullptr;
string path;
string title;
};
struct MessageWindow::State {
MessageWindow::Buttons buttons = MessageWindow::Buttons::Ok;
Window *parent = nullptr;
string text;
string title;
};
struct Window::State {
bool backgroundColorOverride = false;
Color backgroundColor = {0, 0, 0, 255};
bool fullScreen = false;
Geometry geometry = {128, 128, 256, 256};
set<Layout&> layout;
set<Menu&> menu;
string menuFont;
bool menuVisible = false;
bool modal = false;
bool resizable = true;
string statusFont;
string statusText;
bool statusVisible = false;
string title;
bool visible = false;
set<Widget&> widget;
string widgetFont;
};
struct Action::State {
bool enabled = true;
Menu *menu = nullptr;
bool visible = true;
Window *window = nullptr;
};
struct Menu::State {
set<Action&> action;
nall::image image = {0, 32, 255u << 24, 255u << 16, 255u << 8, 255u << 0};
string text;
};
struct Item::State {
nall::image image = {0, 32, 255u << 24, 255u << 16, 255u << 8, 255u << 0};
string text;
};
struct CheckItem::State {
bool checked = false;
string text;
};
struct RadioItem::State {
bool checked = true;
set<RadioItem&> group;
string text;
};
struct Sizable::State {
Layout *layout = nullptr;
Window *window = nullptr;
};
struct Layout::State {
};
struct Widget::State {
bool abstract = false;
bool enabled = true;
string font;
Geometry geometry = {0, 0, 0, 0};
bool visible = true;
};
struct Button::State {
nall::image image = {0, 32, 255u << 24, 255u << 16, 255u << 8, 255u << 0};
Orientation orientation = Orientation::Horizontal;
string text;
};
struct Canvas::State {
uint32_t *data = nullptr;
unsigned width = 256;
unsigned height = 256;
};
struct CheckButton::State {
bool checked = false;
string text;
};
struct ComboButton::State {
unsigned selection = 0;
vector<string> text;
};
struct HexEdit::State {
unsigned columns = 16;
unsigned length = 0;
unsigned offset = 0;
unsigned rows = 16;
};
struct HorizontalScroller::State {
unsigned length = 101;
unsigned position = 0;
};
struct HorizontalSlider::State {
unsigned length = 101;
unsigned position = 0;
};
struct Label::State {
string text;
};
struct LineEdit::State {
bool editable = true;
string text;
};
struct ListView::State {
bool checkable = false;
vector<bool> checked;
lstring headerText;
bool headerVisible = false;
vector<vector<nall::image>> image;
bool selected = false;
unsigned selection = 0;
vector<lstring> text;
};
struct ProgressBar::State {
unsigned position = 0;
};
struct RadioButton::State {
bool checked = true;
set<RadioButton&> group;
string text;
};
struct TextEdit::State {
unsigned cursorPosition = 0;
bool editable = true;
string text;
bool wordWrap = true;
};
struct VerticalScroller::State {
unsigned length = 101;
unsigned position = 0;
};
struct VerticalSlider::State {
unsigned length = 101;
unsigned position = 0;
};