2013-03-15 13:11:33 +00:00
|
|
|
namespace phoenix {
|
|
|
|
|
Update to v094 release.
byuu says:
This release adds support for game libraries, and substantially improves
Game Boy and Game Boy Color emulation with cycle-based renderers. Many
other changes are also present.
It's very important to note that this release now defaults to optimal
drivers rather than safe drivers. This is particularly important if you
do not have strong OpenGL 3.2 drivers. If performance is bad, go to
Settings -> Configuration -> Advanced, change the video driver, and
restart higan. In the rare case that you have trouble opening higan, you
can edit settings.bml directly and change the setting there. The Windows
safe driver is Direct3D, and the Linux safe driver is XShm.
Also note that although display emulation shaders are now supported,
they have not been included in this release as they are not ready yet.
The support has been built-in anyway, so that they can be tested by
everyone. Once refined, future releases of higan will come with built-in
shaders for each emulated system that simulates the unique display
characteristics of each.
Changelog (since v093):
- sfc: added SA-1 MDR support (fixes SD Gundam G-Next bug)
- sfc: remove random/ and config/, merge to system/ with better
randomization
- gb: improved color emulation palette contrast
- gbc: do not sort sprites by X-priority
- gbc: allow transparency on BG priority pixels
- gbc: VRAM DMA timing and register fixes
- gbc: block invalid VRAM DMA transfer source and target addresses
- gba: added LCD color emulation (without it, colors are grossly
over-saturated)
- gba: removed internal frame blending (use shaders to simulate motion
blur if desired)
- gba: added Game Boy Player support (adds joypad rumble support to
supported games)
- gba: SOUND_CTL_H is readable
- gb/gbc: PPU renderer is now cycle-based (major accuracy improvement)
- gb/gbc: OAM DMA runs in parallel with the CPU
- gb/gbc: only HRAM can be accessed during OAM DMA
- gb/gbc: fixed serialization of games with SRAM
- gb/gbc: disallow up+down or left+right at the same time
- gb/gbc: added weak hipass filter to remove DC bias
- gb/gbc: STAT OAM+Hblank IRQs only trigger during active display
- gb/gbc: fixed underflow in window clamping
- gb/gbc/gba: audio mixes internally at 2MHz now instead of 4MHz (does
not affect accuracy)
- gb/gbc/gba: audio volume reduced for consistency with other systems
- fc/sfc/gb/gbc/gba: cheat codes are now stored in universal, decrypted
format
- ethos: replaced file loader with a proper game library
- ethos: added display emulation shader support
- ethos: added color emulation option to video settings
- ethos: program icon upgraded from 48x48 to 512x512
- ethos: settings and tools windows now use tab frames (less wasted
screen space)
- ethos: default to optimal (video, audio, input) drivers instead of
safest drivers
- ethos: input mapping system completely rewritten to support
hotplugging and unique device mappings
- ruby: added fixes for OpenGL 3.2 on AMD graphics cards
- ruby: quark shaders now support user settings inside of manifest
- ruby: quark shaders can use integral textures (allows display
emulation shaders to work with raw colors)
- ruby: add joypad rumble support
- ruby: XInput (Xbox 360) controllers now support hotplugging
- ruby: added Linux udev joypad driver with hotplug support
- phoenix: fixed a rare null pointer dereference issue on Windows
- port: target -std=c++11 instead of -std=gnu++11 (do not rely on GNU
C++ extensions)
- port: added out-of-the-box compilation support for BSD/Clang 3.3+
- port: applied a few Debian upstream patches
- cheats: updated to mightymo's 2014-01-02 release; decrypted all Game
Genie codes
2014-01-20 08:55:17 +00:00
|
|
|
struct AppMessage {
|
|
|
|
enum : unsigned {
|
|
|
|
ListView_onActivate = 0,
|
2013-12-21 10:45:58 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
Update to v094 release.
byuu says:
This release adds support for game libraries, and substantially improves
Game Boy and Game Boy Color emulation with cycle-based renderers. Many
other changes are also present.
It's very important to note that this release now defaults to optimal
drivers rather than safe drivers. This is particularly important if you
do not have strong OpenGL 3.2 drivers. If performance is bad, go to
Settings -> Configuration -> Advanced, change the video driver, and
restart higan. In the rare case that you have trouble opening higan, you
can edit settings.bml directly and change the setting there. The Windows
safe driver is Direct3D, and the Linux safe driver is XShm.
Also note that although display emulation shaders are now supported,
they have not been included in this release as they are not ready yet.
The support has been built-in anyway, so that they can be tested by
everyone. Once refined, future releases of higan will come with built-in
shaders for each emulated system that simulates the unique display
characteristics of each.
Changelog (since v093):
- sfc: added SA-1 MDR support (fixes SD Gundam G-Next bug)
- sfc: remove random/ and config/, merge to system/ with better
randomization
- gb: improved color emulation palette contrast
- gbc: do not sort sprites by X-priority
- gbc: allow transparency on BG priority pixels
- gbc: VRAM DMA timing and register fixes
- gbc: block invalid VRAM DMA transfer source and target addresses
- gba: added LCD color emulation (without it, colors are grossly
over-saturated)
- gba: removed internal frame blending (use shaders to simulate motion
blur if desired)
- gba: added Game Boy Player support (adds joypad rumble support to
supported games)
- gba: SOUND_CTL_H is readable
- gb/gbc: PPU renderer is now cycle-based (major accuracy improvement)
- gb/gbc: OAM DMA runs in parallel with the CPU
- gb/gbc: only HRAM can be accessed during OAM DMA
- gb/gbc: fixed serialization of games with SRAM
- gb/gbc: disallow up+down or left+right at the same time
- gb/gbc: added weak hipass filter to remove DC bias
- gb/gbc: STAT OAM+Hblank IRQs only trigger during active display
- gb/gbc: fixed underflow in window clamping
- gb/gbc/gba: audio mixes internally at 2MHz now instead of 4MHz (does
not affect accuracy)
- gb/gbc/gba: audio volume reduced for consistency with other systems
- fc/sfc/gb/gbc/gba: cheat codes are now stored in universal, decrypted
format
- ethos: replaced file loader with a proper game library
- ethos: added display emulation shader support
- ethos: added color emulation option to video settings
- ethos: program icon upgraded from 48x48 to 512x512
- ethos: settings and tools windows now use tab frames (less wasted
screen space)
- ethos: default to optimal (video, audio, input) drivers instead of
safest drivers
- ethos: input mapping system completely rewritten to support
hotplugging and unique device mappings
- ruby: added fixes for OpenGL 3.2 on AMD graphics cards
- ruby: quark shaders now support user settings inside of manifest
- ruby: quark shaders can use integral textures (allows display
emulation shaders to work with raw colors)
- ruby: add joypad rumble support
- ruby: XInput (Xbox 360) controllers now support hotplugging
- ruby: added Linux udev joypad driver with hotplug support
- phoenix: fixed a rare null pointer dereference issue on Windows
- port: target -std=c++11 instead of -std=gnu++11 (do not rely on GNU
C++ extensions)
- port: added out-of-the-box compilation support for BSD/Clang 3.3+
- port: applied a few Debian upstream patches
- cheats: updated to mightymo's 2014-01-02 release; decrypted all Game
Genie codes
2014-01-20 08:55:17 +00:00
|
|
|
typedef LRESULT CALLBACK (*WindowProc)(HWND, UINT, WPARAM, LPARAM);
|
2013-12-21 10:45:58 +00:00
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
struct pApplication {
|
|
|
|
static void run();
|
|
|
|
static bool pendingEvents();
|
|
|
|
static void processEvents();
|
|
|
|
static void quit();
|
|
|
|
|
|
|
|
static void initialize();
|
|
|
|
};
|
|
|
|
|
2012-01-26 06:50:09 +00:00
|
|
|
struct Settings {
|
2013-05-02 11:25:45 +00:00
|
|
|
bimap<Keyboard::Scancode, unsigned> keymap;
|
2012-01-26 06:50:09 +00:00
|
|
|
};
|
|
|
|
|
2011-02-24 09:25:20 +00:00
|
|
|
struct pFont;
|
Update to v088r11 release.
byuu says:
Changelog:
- phoenix has added Window::setModal(bool modal = true);
- file dialog is now modal. This allows emulation cores to request data
and get it immediately before continuing the loading process
- save data is hooked up for most systems, still need to handle
subsystem slot saves (Sufami Turbo, basically.)
- toggle fullscreen key binding added (Alt+Enter for now. I think F11 is
probably better though, Enter is often mapped to game start button.)
- video scaling is in (center, scale, stretch), works the same in
windowed and fullscreen mode (stretch hides resize window option), all
in the settings menu now
- enough structure to map all saved paths for the browser and to load
BS-X slotted carts, BS-X carts, single Sufami Turbo carts
Caveats / Missing:
- Super Game Boy input doesn't work yet (due to change in callback
binding)
- doesn't load secondary Sufami Turbo slot yet
- BS-X BIOS isn't show the data pack games to load for some reason (ugh,
I hate the shit out of debugging BS-X stuff ...)
- need mute audio, sync audio+video toggle, save/load state menu and
quick keys, XML mapping information window
- need cheat editor and cheat database
- need state manager
- need to sort subsystems below main systems in load menu (basically
just see if media.slot.size() > 0)
- need video shaders (will probably leave off filters for the time being
... due to that 24/30-bit thing)
- need video adjustments (contrast etc, overscan masks)
- need audio adjustments (frequency, latency, resampler, volume,
per-system frequency)
- need driver selection and input focus policy (driver crash detection
would be nice too)
- need NSS DIP switch settings (that one will be really fun)
- need to save and load window geometry settings
- need to hook up controller selection (won't be fun), create a map to
hide controllers with no inputs to reassign
2012-05-03 12:36:47 +00:00
|
|
|
struct pObject;
|
2011-02-24 09:25:20 +00:00
|
|
|
struct pWindow;
|
|
|
|
struct pMenu;
|
|
|
|
struct pLayout;
|
|
|
|
struct pWidget;
|
|
|
|
|
2011-09-05 03:48:23 +00:00
|
|
|
struct pFont {
|
2013-03-15 13:11:33 +00:00
|
|
|
static string serif(unsigned size, string style);
|
|
|
|
static string sans(unsigned size, string style);
|
|
|
|
static string monospace(unsigned size, string style);
|
2013-07-29 09:42:45 +00:00
|
|
|
static Size size(string font, string text);
|
2011-09-05 03:48:23 +00:00
|
|
|
|
2013-07-29 09:42:45 +00:00
|
|
|
static HFONT create(string description);
|
2011-09-05 03:48:23 +00:00
|
|
|
static void free(HFONT hfont);
|
2013-07-29 09:42:45 +00:00
|
|
|
static Size size(HFONT hfont, string text);
|
2011-09-05 03:48:23 +00:00
|
|
|
};
|
|
|
|
|
2012-01-15 08:29:57 +00:00
|
|
|
struct pDesktop {
|
|
|
|
static Size size();
|
|
|
|
static Geometry workspace();
|
|
|
|
};
|
|
|
|
|
2014-01-05 09:59:17 +00:00
|
|
|
struct pMonitor {
|
|
|
|
static unsigned count();
|
|
|
|
static Geometry geometry(unsigned monitor);
|
|
|
|
static unsigned primary();
|
|
|
|
};
|
|
|
|
|
2012-01-15 08:29:57 +00:00
|
|
|
struct pKeyboard {
|
|
|
|
static bool pressed(Keyboard::Scancode scancode);
|
Update to v088r11 release.
byuu says:
Changelog:
- phoenix has added Window::setModal(bool modal = true);
- file dialog is now modal. This allows emulation cores to request data
and get it immediately before continuing the loading process
- save data is hooked up for most systems, still need to handle
subsystem slot saves (Sufami Turbo, basically.)
- toggle fullscreen key binding added (Alt+Enter for now. I think F11 is
probably better though, Enter is often mapped to game start button.)
- video scaling is in (center, scale, stretch), works the same in
windowed and fullscreen mode (stretch hides resize window option), all
in the settings menu now
- enough structure to map all saved paths for the browser and to load
BS-X slotted carts, BS-X carts, single Sufami Turbo carts
Caveats / Missing:
- Super Game Boy input doesn't work yet (due to change in callback
binding)
- doesn't load secondary Sufami Turbo slot yet
- BS-X BIOS isn't show the data pack games to load for some reason (ugh,
I hate the shit out of debugging BS-X stuff ...)
- need mute audio, sync audio+video toggle, save/load state menu and
quick keys, XML mapping information window
- need cheat editor and cheat database
- need state manager
- need to sort subsystems below main systems in load menu (basically
just see if media.slot.size() > 0)
- need video shaders (will probably leave off filters for the time being
... due to that 24/30-bit thing)
- need video adjustments (contrast etc, overscan masks)
- need audio adjustments (frequency, latency, resampler, volume,
per-system frequency)
- need driver selection and input focus policy (driver crash detection
would be nice too)
- need NSS DIP switch settings (that one will be really fun)
- need to save and load window geometry settings
- need to hook up controller selection (won't be fun), create a map to
hide controllers with no inputs to reassign
2012-05-03 12:36:47 +00:00
|
|
|
static vector<bool> state();
|
2012-01-15 08:29:57 +00:00
|
|
|
|
|
|
|
static void initialize();
|
|
|
|
};
|
|
|
|
|
|
|
|
struct pMouse {
|
|
|
|
static Position position();
|
|
|
|
static bool pressed(Mouse::Button button);
|
|
|
|
};
|
|
|
|
|
2013-03-19 08:48:50 +00:00
|
|
|
struct pBrowserWindow {
|
2013-05-02 11:25:45 +00:00
|
|
|
static string directory(BrowserWindow::State& state);
|
|
|
|
static string open(BrowserWindow::State& state);
|
|
|
|
static string save(BrowserWindow::State& state);
|
2012-01-15 08:29:57 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pMessageWindow {
|
2013-05-02 11:25:45 +00:00
|
|
|
static MessageWindow::Response error(MessageWindow::State& state);
|
|
|
|
static MessageWindow::Response information(MessageWindow::State& state);
|
|
|
|
static MessageWindow::Response question(MessageWindow::State& state);
|
|
|
|
static MessageWindow::Response warning(MessageWindow::State& state);
|
2012-01-15 08:29:57 +00:00
|
|
|
};
|
|
|
|
|
2011-02-24 09:25:20 +00:00
|
|
|
struct pObject {
|
Update to v088r11 release.
byuu says:
Changelog:
- phoenix has added Window::setModal(bool modal = true);
- file dialog is now modal. This allows emulation cores to request data
and get it immediately before continuing the loading process
- save data is hooked up for most systems, still need to handle
subsystem slot saves (Sufami Turbo, basically.)
- toggle fullscreen key binding added (Alt+Enter for now. I think F11 is
probably better though, Enter is often mapped to game start button.)
- video scaling is in (center, scale, stretch), works the same in
windowed and fullscreen mode (stretch hides resize window option), all
in the settings menu now
- enough structure to map all saved paths for the browser and to load
BS-X slotted carts, BS-X carts, single Sufami Turbo carts
Caveats / Missing:
- Super Game Boy input doesn't work yet (due to change in callback
binding)
- doesn't load secondary Sufami Turbo slot yet
- BS-X BIOS isn't show the data pack games to load for some reason (ugh,
I hate the shit out of debugging BS-X stuff ...)
- need mute audio, sync audio+video toggle, save/load state menu and
quick keys, XML mapping information window
- need cheat editor and cheat database
- need state manager
- need to sort subsystems below main systems in load menu (basically
just see if media.slot.size() > 0)
- need video shaders (will probably leave off filters for the time being
... due to that 24/30-bit thing)
- need video adjustments (contrast etc, overscan masks)
- need audio adjustments (frequency, latency, resampler, volume,
per-system frequency)
- need driver selection and input focus policy (driver crash detection
would be nice too)
- need NSS DIP switch settings (that one will be really fun)
- need to save and load window geometry settings
- need to hook up controller selection (won't be fun), create a map to
hide controllers with no inputs to reassign
2012-05-03 12:36:47 +00:00
|
|
|
static vector<pObject*> objects;
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
Object& object;
|
2011-09-05 03:48:23 +00:00
|
|
|
uintptr_t id;
|
2011-02-24 09:25:20 +00:00
|
|
|
bool locked;
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pObject(Object& object);
|
2013-12-10 12:12:54 +00:00
|
|
|
static Object* find(unsigned id);
|
2011-09-05 03:48:23 +00:00
|
|
|
virtual ~pObject() {}
|
|
|
|
|
|
|
|
void constructor() {}
|
|
|
|
void destructor() {}
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
2011-06-05 03:45:04 +00:00
|
|
|
struct pTimer : public pObject {
|
2013-05-02 11:25:45 +00:00
|
|
|
Timer& timer;
|
2011-06-05 03:45:04 +00:00
|
|
|
UINT_PTR htimer;
|
|
|
|
|
|
|
|
void setEnabled(bool enabled);
|
2013-11-28 10:29:01 +00:00
|
|
|
void setInterval(unsigned interval);
|
2011-06-05 03:45:04 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pTimer(Timer& timer) : pObject(timer), timer(timer) {}
|
2011-06-05 03:45:04 +00:00
|
|
|
void constructor();
|
|
|
|
};
|
|
|
|
|
2011-02-24 09:25:20 +00:00
|
|
|
struct pWindow : public pObject {
|
Update to v088r11 release.
byuu says:
Changelog:
- phoenix has added Window::setModal(bool modal = true);
- file dialog is now modal. This allows emulation cores to request data
and get it immediately before continuing the loading process
- save data is hooked up for most systems, still need to handle
subsystem slot saves (Sufami Turbo, basically.)
- toggle fullscreen key binding added (Alt+Enter for now. I think F11 is
probably better though, Enter is often mapped to game start button.)
- video scaling is in (center, scale, stretch), works the same in
windowed and fullscreen mode (stretch hides resize window option), all
in the settings menu now
- enough structure to map all saved paths for the browser and to load
BS-X slotted carts, BS-X carts, single Sufami Turbo carts
Caveats / Missing:
- Super Game Boy input doesn't work yet (due to change in callback
binding)
- doesn't load secondary Sufami Turbo slot yet
- BS-X BIOS isn't show the data pack games to load for some reason (ugh,
I hate the shit out of debugging BS-X stuff ...)
- need mute audio, sync audio+video toggle, save/load state menu and
quick keys, XML mapping information window
- need cheat editor and cheat database
- need state manager
- need to sort subsystems below main systems in load menu (basically
just see if media.slot.size() > 0)
- need video shaders (will probably leave off filters for the time being
... due to that 24/30-bit thing)
- need video adjustments (contrast etc, overscan masks)
- need audio adjustments (frequency, latency, resampler, volume,
per-system frequency)
- need driver selection and input focus policy (driver crash detection
would be nice too)
- need NSS DIP switch settings (that one will be really fun)
- need to save and load window geometry settings
- need to hook up controller selection (won't be fun), create a map to
hide controllers with no inputs to reassign
2012-05-03 12:36:47 +00:00
|
|
|
static vector<pWindow*> modal;
|
|
|
|
static void updateModality();
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
Window& window;
|
2011-02-24 09:25:20 +00:00
|
|
|
HWND hwnd;
|
|
|
|
HMENU hmenu;
|
|
|
|
HWND hstatus;
|
2011-09-05 03:48:23 +00:00
|
|
|
HFONT hstatusfont;
|
2011-02-24 09:25:20 +00:00
|
|
|
HBRUSH brush;
|
|
|
|
COLORREF brushColor;
|
|
|
|
|
2012-08-07 13:28:00 +00:00
|
|
|
static Window& none();
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
void append(Layout& layout);
|
|
|
|
void append(Menu& menu);
|
|
|
|
void append(Widget& widget);
|
2011-02-24 09:25:20 +00:00
|
|
|
bool focused();
|
2011-02-27 09:05:10 +00:00
|
|
|
Geometry frameMargin();
|
2011-02-24 09:25:20 +00:00
|
|
|
Geometry geometry();
|
2013-05-02 11:25:45 +00:00
|
|
|
void remove(Layout& layout);
|
|
|
|
void remove(Menu& menu);
|
|
|
|
void remove(Widget& widget);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setBackgroundColor(Color color);
|
|
|
|
void setDroppable(bool droppable);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setFocused();
|
|
|
|
void setFullScreen(bool fullScreen);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setGeometry(Geometry geometry);
|
|
|
|
void setMenuFont(string font);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setMenuVisible(bool visible);
|
Update to v088r11 release.
byuu says:
Changelog:
- phoenix has added Window::setModal(bool modal = true);
- file dialog is now modal. This allows emulation cores to request data
and get it immediately before continuing the loading process
- save data is hooked up for most systems, still need to handle
subsystem slot saves (Sufami Turbo, basically.)
- toggle fullscreen key binding added (Alt+Enter for now. I think F11 is
probably better though, Enter is often mapped to game start button.)
- video scaling is in (center, scale, stretch), works the same in
windowed and fullscreen mode (stretch hides resize window option), all
in the settings menu now
- enough structure to map all saved paths for the browser and to load
BS-X slotted carts, BS-X carts, single Sufami Turbo carts
Caveats / Missing:
- Super Game Boy input doesn't work yet (due to change in callback
binding)
- doesn't load secondary Sufami Turbo slot yet
- BS-X BIOS isn't show the data pack games to load for some reason (ugh,
I hate the shit out of debugging BS-X stuff ...)
- need mute audio, sync audio+video toggle, save/load state menu and
quick keys, XML mapping information window
- need cheat editor and cheat database
- need state manager
- need to sort subsystems below main systems in load menu (basically
just see if media.slot.size() > 0)
- need video shaders (will probably leave off filters for the time being
... due to that 24/30-bit thing)
- need video adjustments (contrast etc, overscan masks)
- need audio adjustments (frequency, latency, resampler, volume,
per-system frequency)
- need driver selection and input focus policy (driver crash detection
would be nice too)
- need NSS DIP switch settings (that one will be really fun)
- need to save and load window geometry settings
- need to hook up controller selection (won't be fun), create a map to
hide controllers with no inputs to reassign
2012-05-03 12:36:47 +00:00
|
|
|
void setModal(bool modal);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setResizable(bool resizable);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setStatusFont(string font);
|
|
|
|
void setStatusText(string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setStatusVisible(bool visible);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setTitle(string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setVisible(bool visible);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setWidgetFont(string font);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pWindow(Window& window) : pObject(window), window(window) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
2011-02-24 09:25:20 +00:00
|
|
|
void updateMenu();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onClose();
|
|
|
|
void onDrop(WPARAM wparam);
|
|
|
|
bool onEraseBackground();
|
|
|
|
void onModalBegin();
|
|
|
|
void onModalEnd();
|
|
|
|
void onMove();
|
|
|
|
void onSize();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pAction : public pObject {
|
2013-05-02 11:25:45 +00:00
|
|
|
Action& action;
|
|
|
|
Menu* parentMenu;
|
|
|
|
Window* parentWindow;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
|
|
|
void setEnabled(bool enabled);
|
|
|
|
void setVisible(bool visible);
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pAction(Action& action) : pObject(action), action(action) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
|
|
|
};
|
|
|
|
|
|
|
|
struct pMenu : public pAction {
|
2013-05-02 11:25:45 +00:00
|
|
|
Menu& menu;
|
2011-02-24 09:25:20 +00:00
|
|
|
HMENU hmenu;
|
2012-01-26 06:50:09 +00:00
|
|
|
HBITMAP hbitmap;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
void append(Action& action);
|
|
|
|
void remove(Action& action);
|
|
|
|
void setImage(const image& image);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setText(string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pMenu(Menu& menu) : pAction(menu), menu(menu), hbitmap(0) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
2012-01-26 06:50:09 +00:00
|
|
|
void createBitmap();
|
2013-05-02 11:25:45 +00:00
|
|
|
void update(Window& parentWindow, Menu* parentMenu = nullptr);
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
2011-02-27 09:05:10 +00:00
|
|
|
struct pSeparator : public pAction {
|
2013-05-02 11:25:45 +00:00
|
|
|
Separator& separator;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pSeparator(Separator& separator) : pAction(separator), separator(separator) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
2011-02-27 09:05:10 +00:00
|
|
|
struct pItem : public pAction {
|
2013-05-02 11:25:45 +00:00
|
|
|
Item& item;
|
2012-01-15 08:29:57 +00:00
|
|
|
HBITMAP hbitmap;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
void setImage(const image& image);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setText(string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pItem(Item& item) : pAction(item), item(item), hbitmap(0) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
2012-01-15 08:29:57 +00:00
|
|
|
void createBitmap();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onActivate();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
2011-02-27 09:05:10 +00:00
|
|
|
struct pCheckItem : public pAction {
|
2013-05-02 11:25:45 +00:00
|
|
|
CheckItem& checkItem;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
|
|
|
void setChecked(bool checked);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setText(string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pCheckItem(CheckItem& checkItem) : pAction(checkItem), checkItem(checkItem) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onToggle();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
2011-02-27 09:05:10 +00:00
|
|
|
struct pRadioItem : public pAction {
|
2013-05-02 11:25:45 +00:00
|
|
|
RadioItem& radioItem;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
|
|
|
void setChecked();
|
2013-05-02 11:25:45 +00:00
|
|
|
void setGroup(const group<RadioItem>& group);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setText(string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pRadioItem(RadioItem& radioItem) : pAction(radioItem), radioItem(radioItem) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onActivate();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
2011-09-05 03:48:23 +00:00
|
|
|
struct pSizable : public pObject {
|
2013-05-02 11:25:45 +00:00
|
|
|
Sizable& sizable;
|
2011-09-05 03:48:23 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pSizable(Sizable& sizable) : pObject(sizable), sizable(sizable) {}
|
2011-09-05 03:48:23 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pLayout : public pSizable {
|
2013-05-02 11:25:45 +00:00
|
|
|
Layout& layout;
|
2011-09-05 03:48:23 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pLayout(Layout& layout) : pSizable(layout), layout(layout) {}
|
2011-09-05 03:48:23 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pWidget : public pSizable {
|
2013-05-02 11:25:45 +00:00
|
|
|
Widget& widget;
|
2013-11-28 10:29:01 +00:00
|
|
|
HWND parentHwnd;
|
2011-02-24 09:25:20 +00:00
|
|
|
HWND hwnd;
|
2011-09-05 03:48:23 +00:00
|
|
|
HFONT hfont;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
Update to higan v091r14 and ananke v00r03 releases.
byuu says:
higan changelog:
- generates title displayed in emulator window by asking the core
- core builds title solely from "information/title" ... if it's not
there, you don't get a title at all
- sub-system load menu is gone ... since there are multiple revisions of
the SGB, this never really worked well anyway
- to load an SGB, BS-X or ST cartridge, load the base cartridge first
- "File->Load Game" moved to "Load->Import Game" ... may cause a bit of
confusion to new users, but I don't like having a single-item menu,
we'll just have to explain it to new users
- browser window redone to look like ananke
- home button here goes to ~/Emulation rather than just ~ like ananke,
since this is the home of game folders
- game folder icon is now the executable icon for the Tango theme
(orange diamond), meant to represent a complete game rather than
a game file or archive
ananke changelog:
- outputs GBC games to "Game Boy Color/" instead of "Game Boy/"
- adds the file basename to "information/title"
Known issues:
- using ananke to load a GB game trips the Super Famicom SGB mode and
fails (need to make the full-path auto-detection ignore non-bootable
systems)
- need to dump and test some BS-X media before releasing
- ananke lacks BS-X Satellaview cartridge support
- v092 isn't going to let you retarget the ananke/higan game folder path
of ~/Emulation, you will have to wait for a future version if that
bothers you so greatly
[Later, after the v092 release, byuu posted this additional changelog:
- kill laevateinn
- add title()
- add bootable, remove load
- combine file, library
- combine [][][] paths
- fix SFC subtype handling XML->BML
- update file browser to use buttons
- update file browser keyboard handling
- update system XML->BML
- fix sufami turbo hashing
- remove Cartridge::manifest
]
2012-12-25 05:31:55 +00:00
|
|
|
bool focused();
|
2013-03-15 13:11:33 +00:00
|
|
|
virtual Size minimumSize();
|
2013-11-28 10:29:01 +00:00
|
|
|
virtual void setEnabled(bool enabled);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setFocused();
|
2013-07-29 09:42:45 +00:00
|
|
|
void setFont(string font);
|
|
|
|
virtual void setGeometry(Geometry geometry);
|
2013-11-28 10:29:01 +00:00
|
|
|
virtual void setVisible(bool visible);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-11-28 10:29:01 +00:00
|
|
|
pWidget(Widget& widget) : pSizable(widget), widget(widget) { parentHwnd = pWindow::none().p.hwnd; }
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
virtual void orphan();
|
2011-02-24 09:25:20 +00:00
|
|
|
void setDefaultFont();
|
2011-09-05 03:48:23 +00:00
|
|
|
void synchronize();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pButton : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
Button& button;
|
2012-01-15 08:29:57 +00:00
|
|
|
HBITMAP hbitmap;
|
|
|
|
HIMAGELIST himagelist;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
Size minimumSize();
|
Update to v094r09 release.
byuu says:
This will easily be the biggest diff in the history of higan. And not in
a good way.
* target-higan and target-loki have been blown away completely
* nall and ruby massively updated
* phoenix replaced with hiro (pretty near a total rewrite)
* target-higan restarted using hiro (just a window for now)
* all emulation cores updated to compile again
* installation changed to not require root privileges (installs locally)
For the foreseeable future (maybe even permanently?), the new higan UI
will only build under Linux/BSD with GTK+ 2.20+. Probably the most
likely route for Windows/OS X will be to try and figure out how to build
hiro/GTK on those platforms, as awful as that would be. The other
alternative would be to produce new UIs for those platforms ... which
would actually be a good opportunity to make something much more user
friendly.
Being that I just started on this a few hours ago, that means that for
at least a few weeks, don't expect to be able to actually play any
games. Right now, you can pretty much just compile the binary and that's
it. It's quite possible that some nall changes didn't produce
compilation errors, but will produce runtime errors. So until the UI can
actually load games, we won't know if anything is broken. But we should
mostly be okay. It was mostly just trim<1> -> trim changes, moving to
Hash::SHA256 (much cleaner), and patching some reckless memory copy
functions enough to compile.
Progress isn't going to be like it was before: I'm now dividing my time
much thinner between studying and other hobbies.
My aim this time is not to produce a binary for everyone to play games
on. Rather, it's to keep the emulator alive. I want to be able to apply
critical patches again. And I would also like the base of the emulator
to live on, for use in other emulator frontends that utilize higan.
2015-02-26 10:10:46 +00:00
|
|
|
void setBordered(bool bordered);
|
2013-05-02 11:25:45 +00:00
|
|
|
void setImage(const image& image, Orientation orientation);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setText(string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pButton(Button& button) : pWidget(button), button(button), hbitmap(0), himagelist(0) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onActivate();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
2011-03-26 11:31:07 +00:00
|
|
|
struct pCanvas : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
Canvas& canvas;
|
2013-11-28 10:29:01 +00:00
|
|
|
uint32_t* surface = nullptr;
|
|
|
|
unsigned surfaceWidth = 0;
|
|
|
|
unsigned surfaceHeight = 0;
|
2011-03-26 11:31:07 +00:00
|
|
|
|
2013-07-29 09:42:45 +00:00
|
|
|
void setDroppable(bool droppable);
|
2013-11-28 10:29:01 +00:00
|
|
|
void setGeometry(Geometry geometry);
|
|
|
|
void setMode(Canvas::Mode mode);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setSize(Size size);
|
2011-03-26 11:31:07 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pCanvas(Canvas& canvas) : pWidget(canvas), canvas(canvas) {}
|
2011-03-26 11:31:07 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-12-12 10:59:53 +00:00
|
|
|
void paint();
|
2013-11-28 10:29:01 +00:00
|
|
|
void rasterize();
|
|
|
|
void redraw();
|
|
|
|
void release();
|
2011-03-26 11:31:07 +00:00
|
|
|
};
|
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
struct pCheckButton : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
CheckButton& checkButton;
|
2013-11-28 10:29:01 +00:00
|
|
|
HBITMAP hbitmap;
|
|
|
|
HIMAGELIST himagelist;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
Size minimumSize();
|
2011-02-24 09:25:20 +00:00
|
|
|
void setChecked(bool checked);
|
2013-11-28 10:29:01 +00:00
|
|
|
void setImage(const image& image, Orientation orientation);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setText(string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pCheckButton(CheckButton& checkButton) : pWidget(checkButton), checkButton(checkButton) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onToggle();
|
|
|
|
};
|
|
|
|
|
|
|
|
struct pCheckLabel : public pWidget {
|
|
|
|
CheckLabel& checkLabel;
|
|
|
|
|
|
|
|
Size minimumSize();
|
|
|
|
void setChecked(bool checked);
|
|
|
|
void setText(string text);
|
|
|
|
|
|
|
|
pCheckLabel(CheckLabel& checkLabel) : pWidget(checkLabel), checkLabel(checkLabel) {}
|
|
|
|
void constructor();
|
|
|
|
void destructor();
|
|
|
|
void orphan();
|
|
|
|
|
|
|
|
void onToggle();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
struct pComboButton : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
ComboButton& comboButton;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-07-29 09:42:45 +00:00
|
|
|
void append(string text);
|
2013-11-28 10:29:01 +00:00
|
|
|
void remove(unsigned selection);
|
2013-03-15 13:11:33 +00:00
|
|
|
Size minimumSize();
|
2011-02-24 09:25:20 +00:00
|
|
|
void reset();
|
2013-11-28 10:29:01 +00:00
|
|
|
void setGeometry(Geometry geometry);
|
|
|
|
void setSelection(unsigned selection);
|
|
|
|
void setText(unsigned selection, string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pComboButton(ComboButton& comboButton) : pWidget(comboButton), comboButton(comboButton) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onChange();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
Update to v093r02 release.
byuu says:
Changelog:
- nall: fixed major memory leak in string class
- ruby: video shaders support #define-based settings now
- phoenix/GTK+: support > 256x256 icons for window / task bar / alt-tab
- sfc: remove random/ and config/, merge into system/
- ethos: delete higan.png (48x48), replace with higan512.png (512x512)
as new higan.png
- ethos: default gamma to 100% (no color adjustment)
- ethos: use "Video Shaders/Display Emulation/" instead of "Video
Shaders/Emulation/"
- use g++ instead of g++-4.7 (g++ -v must be >= 4.7)
- use -std=c++11 instead of -std=gnu++11
- applied a few patches from Debian upstream to make their packaging job
easier
So because colors are normalized in GLSL, I won't be able to offer video
shaders absolute color literals. We will have to perform basic color
conversion inside the core.
As such, the current plan is to create some sort of Emulator::Settings
interface. With that, I'll connect an option for color correction, which
will be on by default. For FC/SFC, that will mean gamma correction
(darker / stronger colors), and for GB/GBC/GBA, it will mean simulating
the weird brightness levels of the displays. I am undecided on whether
to use pea soup green for the GB or not. By not doing so, it'll be
easier for the display emulation shader to do it.
2013-11-09 11:45:54 +00:00
|
|
|
struct pConsole : public pWidget {
|
|
|
|
Console& console;
|
|
|
|
LRESULT CALLBACK (*windowProc)(HWND, UINT, LPARAM, WPARAM);
|
Update to v094r09 release.
byuu says:
This will easily be the biggest diff in the history of higan. And not in
a good way.
* target-higan and target-loki have been blown away completely
* nall and ruby massively updated
* phoenix replaced with hiro (pretty near a total rewrite)
* target-higan restarted using hiro (just a window for now)
* all emulation cores updated to compile again
* installation changed to not require root privileges (installs locally)
For the foreseeable future (maybe even permanently?), the new higan UI
will only build under Linux/BSD with GTK+ 2.20+. Probably the most
likely route for Windows/OS X will be to try and figure out how to build
hiro/GTK on those platforms, as awful as that would be. The other
alternative would be to produce new UIs for those platforms ... which
would actually be a good opportunity to make something much more user
friendly.
Being that I just started on this a few hours ago, that means that for
at least a few weeks, don't expect to be able to actually play any
games. Right now, you can pretty much just compile the binary and that's
it. It's quite possible that some nall changes didn't produce
compilation errors, but will produce runtime errors. So until the UI can
actually load games, we won't know if anything is broken. But we should
mostly be okay. It was mostly just trim<1> -> trim changes, moving to
Hash::SHA256 (much cleaner), and patching some reckless memory copy
functions enough to compile.
Progress isn't going to be like it was before: I'm now dividing my time
much thinner between studying and other hobbies.
My aim this time is not to produce a binary for everyone to play games
on. Rather, it's to keep the emulator alive. I want to be able to apply
critical patches again. And I would also like the base of the emulator
to live on, for use in other emulator frontends that utilize higan.
2015-02-26 10:10:46 +00:00
|
|
|
HBRUSH backgroundBrush = nullptr;
|
Update to v093r02 release.
byuu says:
Changelog:
- nall: fixed major memory leak in string class
- ruby: video shaders support #define-based settings now
- phoenix/GTK+: support > 256x256 icons for window / task bar / alt-tab
- sfc: remove random/ and config/, merge into system/
- ethos: delete higan.png (48x48), replace with higan512.png (512x512)
as new higan.png
- ethos: default gamma to 100% (no color adjustment)
- ethos: use "Video Shaders/Display Emulation/" instead of "Video
Shaders/Emulation/"
- use g++ instead of g++-4.7 (g++ -v must be >= 4.7)
- use -std=c++11 instead of -std=gnu++11
- applied a few patches from Debian upstream to make their packaging job
easier
So because colors are normalized in GLSL, I won't be able to offer video
shaders absolute color literals. We will have to perform basic color
conversion inside the core.
As such, the current plan is to create some sort of Emulator::Settings
interface. With that, I'll connect an option for color correction, which
will be on by default. For FC/SFC, that will mean gamma correction
(darker / stronger colors), and for GB/GBC/GBA, it will mean simulating
the weird brightness levels of the displays. I am undecided on whether
to use pea soup green for the GB or not. By not doing so, it'll be
easier for the display emulation shader to do it.
2013-11-09 11:45:54 +00:00
|
|
|
|
|
|
|
void print(string text);
|
|
|
|
void reset();
|
Update to v094r08 release.
byuu says:
Lots of changes this time around. FreeBSD stability and compilation is
still a work in progress.
FreeBSD 10 + Clang 3.3 = 108fps
FreeBSD 10 + GCC 4.7 = 130fps
Errata 1: I've been fighting that god-damned endian.h header for the
past nine WIPs now. The above WIP isn't building now because FreeBSD
isn't including headers before using certain types, and you end up with
a trillion error messages. So just delete all the endian.h includes from
nall/intrinsics.hpp to build.
Errata 2: I was trying to match g++ and g++47, so I used $(findstring
g++,$(compiler)), which ends up also matching clang++. Oops. Easy fix,
put Clang first and then else if g++ next. Not ideal, but oh well. All
it's doing for now is declaring -fwrapv twice, so you don't have to fix
it just yet. Probably just going to alias g++="g++47" and do exact
matching instead.
Errata 3: both OpenGL::term and VideoGLX::term are causing a core dump
on BSD. No idea why. The resources are initialized and valid, but
releasing them crashes the application.
Changelog:
- nall/Makefile is more flexible with overriding $(compiler), so you can
build with GCC or Clang on BSD (defaults to GCC now)
- PLATFORM_X was renamed to PLATFORM_XORG, and it's also declared with
PLATFORM_LINUX or PLATFORM_BSD
- PLATFORM_XORG probably isn't the best name ... still thinking about
what best to call LINUX|BSD|SOLARIS or ^(WINDOWS|MACOSX)
- fixed a few legitimate Clang warning messages in nall
- Compiler::VisualCPP is ugly as hell, renamed to Compiler::CL
- nall/platform includes nall/intrinsics first. Trying to move away from
testing for _WIN32, etc directly in all files. Work in progress.
- nall turns off Clang warnings that I won't "fix", because they aren't
broken. It's much less noisy to compile with warnings on now.
- phoenix gains the ability to set background and foreground colors on
various text container widgets (GTK only for now.)
- rewrote a lot of the MSU1 code to try and simplify it. Really hope
I didn't break anything ... I don't have any MSU1 test ROMs handy
- SNES coprocessor audio is now mixed as sclamp<16>(system_sample
+ coprocessor_sample) instead of sclamp<16>((sys + cop) / 2)
- allows for greater chance of aliasing (still low, SNES audio is
quiet), but doesn't cut base system volume in half anymore
- fixed Super Scope and Justifier cursor colors
- use input.xlib instead of input.x ... allows Xlib input driver to be
visible on Linux and BSD once again
- make install and make uninstall must be run as root again; no longer
using install but cp instead for BSD compatibility
- killed $(DESTDIR) ... use make prefix=$DESTDIR$prefix instead
- you can now set text/background colors for the loki console via (eg):
- settings.terminal.background-color 0x000000
- settings.terminal.foreground-color 0xffffff
2014-02-24 09:39:09 +00:00
|
|
|
void setBackgroundColor(Color color);
|
|
|
|
void setForegroundColor(Color color);
|
2014-02-02 21:02:18 +00:00
|
|
|
void setPrompt(string prompt);
|
Update to v093r02 release.
byuu says:
Changelog:
- nall: fixed major memory leak in string class
- ruby: video shaders support #define-based settings now
- phoenix/GTK+: support > 256x256 icons for window / task bar / alt-tab
- sfc: remove random/ and config/, merge into system/
- ethos: delete higan.png (48x48), replace with higan512.png (512x512)
as new higan.png
- ethos: default gamma to 100% (no color adjustment)
- ethos: use "Video Shaders/Display Emulation/" instead of "Video
Shaders/Emulation/"
- use g++ instead of g++-4.7 (g++ -v must be >= 4.7)
- use -std=c++11 instead of -std=gnu++11
- applied a few patches from Debian upstream to make their packaging job
easier
So because colors are normalized in GLSL, I won't be able to offer video
shaders absolute color literals. We will have to perform basic color
conversion inside the core.
As such, the current plan is to create some sort of Emulator::Settings
interface. With that, I'll connect an option for color correction, which
will be on by default. For FC/SFC, that will mean gamma correction
(darker / stronger colors), and for GB/GBC/GBA, it will mean simulating
the weird brightness levels of the displays. I am undecided on whether
to use pea soup green for the GB or not. By not doing so, it'll be
easier for the display emulation shader to do it.
2013-11-09 11:45:54 +00:00
|
|
|
|
|
|
|
pConsole(Console& console) : pWidget(console), console(console) {}
|
|
|
|
void constructor();
|
|
|
|
void destructor();
|
|
|
|
void orphan();
|
|
|
|
bool keyPress(unsigned key);
|
|
|
|
};
|
|
|
|
|
2013-11-28 10:29:01 +00:00
|
|
|
struct pFrame : public pWidget {
|
|
|
|
Frame& frame;
|
|
|
|
|
|
|
|
void setEnabled(bool enabled);
|
|
|
|
void setGeometry(Geometry geometry);
|
|
|
|
void setText(string text);
|
|
|
|
void setVisible(bool visible);
|
|
|
|
|
|
|
|
pFrame(Frame& frame) : pWidget(frame), frame(frame) {}
|
|
|
|
void constructor();
|
|
|
|
void destructor();
|
|
|
|
void orphan();
|
|
|
|
};
|
|
|
|
|
2011-02-24 09:25:20 +00:00
|
|
|
struct pHexEdit : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
HexEdit& hexEdit;
|
2013-11-28 10:32:53 +00:00
|
|
|
WindowProc windowProc = nullptr;
|
|
|
|
HWND scrollBar = nullptr;
|
Update to v094r09 release.
byuu says:
This will easily be the biggest diff in the history of higan. And not in
a good way.
* target-higan and target-loki have been blown away completely
* nall and ruby massively updated
* phoenix replaced with hiro (pretty near a total rewrite)
* target-higan restarted using hiro (just a window for now)
* all emulation cores updated to compile again
* installation changed to not require root privileges (installs locally)
For the foreseeable future (maybe even permanently?), the new higan UI
will only build under Linux/BSD with GTK+ 2.20+. Probably the most
likely route for Windows/OS X will be to try and figure out how to build
hiro/GTK on those platforms, as awful as that would be. The other
alternative would be to produce new UIs for those platforms ... which
would actually be a good opportunity to make something much more user
friendly.
Being that I just started on this a few hours ago, that means that for
at least a few weeks, don't expect to be able to actually play any
games. Right now, you can pretty much just compile the binary and that's
it. It's quite possible that some nall changes didn't produce
compilation errors, but will produce runtime errors. So until the UI can
actually load games, we won't know if anything is broken. But we should
mostly be okay. It was mostly just trim<1> -> trim changes, moving to
Hash::SHA256 (much cleaner), and patching some reckless memory copy
functions enough to compile.
Progress isn't going to be like it was before: I'm now dividing my time
much thinner between studying and other hobbies.
My aim this time is not to produce a binary for everyone to play games
on. Rather, it's to keep the emulator alive. I want to be able to apply
critical patches again. And I would also like the base of the emulator
to live on, for use in other emulator frontends that utilize higan.
2015-02-26 10:10:46 +00:00
|
|
|
HBRUSH backgroundBrush = nullptr;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
Update to v094r08 release.
byuu says:
Lots of changes this time around. FreeBSD stability and compilation is
still a work in progress.
FreeBSD 10 + Clang 3.3 = 108fps
FreeBSD 10 + GCC 4.7 = 130fps
Errata 1: I've been fighting that god-damned endian.h header for the
past nine WIPs now. The above WIP isn't building now because FreeBSD
isn't including headers before using certain types, and you end up with
a trillion error messages. So just delete all the endian.h includes from
nall/intrinsics.hpp to build.
Errata 2: I was trying to match g++ and g++47, so I used $(findstring
g++,$(compiler)), which ends up also matching clang++. Oops. Easy fix,
put Clang first and then else if g++ next. Not ideal, but oh well. All
it's doing for now is declaring -fwrapv twice, so you don't have to fix
it just yet. Probably just going to alias g++="g++47" and do exact
matching instead.
Errata 3: both OpenGL::term and VideoGLX::term are causing a core dump
on BSD. No idea why. The resources are initialized and valid, but
releasing them crashes the application.
Changelog:
- nall/Makefile is more flexible with overriding $(compiler), so you can
build with GCC or Clang on BSD (defaults to GCC now)
- PLATFORM_X was renamed to PLATFORM_XORG, and it's also declared with
PLATFORM_LINUX or PLATFORM_BSD
- PLATFORM_XORG probably isn't the best name ... still thinking about
what best to call LINUX|BSD|SOLARIS or ^(WINDOWS|MACOSX)
- fixed a few legitimate Clang warning messages in nall
- Compiler::VisualCPP is ugly as hell, renamed to Compiler::CL
- nall/platform includes nall/intrinsics first. Trying to move away from
testing for _WIN32, etc directly in all files. Work in progress.
- nall turns off Clang warnings that I won't "fix", because they aren't
broken. It's much less noisy to compile with warnings on now.
- phoenix gains the ability to set background and foreground colors on
various text container widgets (GTK only for now.)
- rewrote a lot of the MSU1 code to try and simplify it. Really hope
I didn't break anything ... I don't have any MSU1 test ROMs handy
- SNES coprocessor audio is now mixed as sclamp<16>(system_sample
+ coprocessor_sample) instead of sclamp<16>((sys + cop) / 2)
- allows for greater chance of aliasing (still low, SNES audio is
quiet), but doesn't cut base system volume in half anymore
- fixed Super Scope and Justifier cursor colors
- use input.xlib instead of input.x ... allows Xlib input driver to be
visible on Linux and BSD once again
- make install and make uninstall must be run as root again; no longer
using install but cp instead for BSD compatibility
- killed $(DESTDIR) ... use make prefix=$DESTDIR$prefix instead
- you can now set text/background colors for the loki console via (eg):
- settings.terminal.background-color 0x000000
- settings.terminal.foreground-color 0xffffff
2014-02-24 09:39:09 +00:00
|
|
|
void setBackgroundColor(Color color);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setColumns(unsigned columns);
|
Update to v094r08 release.
byuu says:
Lots of changes this time around. FreeBSD stability and compilation is
still a work in progress.
FreeBSD 10 + Clang 3.3 = 108fps
FreeBSD 10 + GCC 4.7 = 130fps
Errata 1: I've been fighting that god-damned endian.h header for the
past nine WIPs now. The above WIP isn't building now because FreeBSD
isn't including headers before using certain types, and you end up with
a trillion error messages. So just delete all the endian.h includes from
nall/intrinsics.hpp to build.
Errata 2: I was trying to match g++ and g++47, so I used $(findstring
g++,$(compiler)), which ends up also matching clang++. Oops. Easy fix,
put Clang first and then else if g++ next. Not ideal, but oh well. All
it's doing for now is declaring -fwrapv twice, so you don't have to fix
it just yet. Probably just going to alias g++="g++47" and do exact
matching instead.
Errata 3: both OpenGL::term and VideoGLX::term are causing a core dump
on BSD. No idea why. The resources are initialized and valid, but
releasing them crashes the application.
Changelog:
- nall/Makefile is more flexible with overriding $(compiler), so you can
build with GCC or Clang on BSD (defaults to GCC now)
- PLATFORM_X was renamed to PLATFORM_XORG, and it's also declared with
PLATFORM_LINUX or PLATFORM_BSD
- PLATFORM_XORG probably isn't the best name ... still thinking about
what best to call LINUX|BSD|SOLARIS or ^(WINDOWS|MACOSX)
- fixed a few legitimate Clang warning messages in nall
- Compiler::VisualCPP is ugly as hell, renamed to Compiler::CL
- nall/platform includes nall/intrinsics first. Trying to move away from
testing for _WIN32, etc directly in all files. Work in progress.
- nall turns off Clang warnings that I won't "fix", because they aren't
broken. It's much less noisy to compile with warnings on now.
- phoenix gains the ability to set background and foreground colors on
various text container widgets (GTK only for now.)
- rewrote a lot of the MSU1 code to try and simplify it. Really hope
I didn't break anything ... I don't have any MSU1 test ROMs handy
- SNES coprocessor audio is now mixed as sclamp<16>(system_sample
+ coprocessor_sample) instead of sclamp<16>((sys + cop) / 2)
- allows for greater chance of aliasing (still low, SNES audio is
quiet), but doesn't cut base system volume in half anymore
- fixed Super Scope and Justifier cursor colors
- use input.xlib instead of input.x ... allows Xlib input driver to be
visible on Linux and BSD once again
- make install and make uninstall must be run as root again; no longer
using install but cp instead for BSD compatibility
- killed $(DESTDIR) ... use make prefix=$DESTDIR$prefix instead
- you can now set text/background colors for the loki console via (eg):
- settings.terminal.background-color 0x000000
- settings.terminal.foreground-color 0xffffff
2014-02-24 09:39:09 +00:00
|
|
|
void setForegroundColor(Color color);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setLength(unsigned length);
|
|
|
|
void setOffset(unsigned offset);
|
|
|
|
void setRows(unsigned rows);
|
|
|
|
void update();
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pHexEdit(HexEdit& hexEdit) : pWidget(hexEdit), hexEdit(hexEdit) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:25:20 +00:00
|
|
|
bool keyPress(unsigned key);
|
Update to v093r02 release.
byuu says:
Changelog:
- nall: fixed major memory leak in string class
- ruby: video shaders support #define-based settings now
- phoenix/GTK+: support > 256x256 icons for window / task bar / alt-tab
- sfc: remove random/ and config/, merge into system/
- ethos: delete higan.png (48x48), replace with higan512.png (512x512)
as new higan.png
- ethos: default gamma to 100% (no color adjustment)
- ethos: use "Video Shaders/Display Emulation/" instead of "Video
Shaders/Emulation/"
- use g++ instead of g++-4.7 (g++ -v must be >= 4.7)
- use -std=c++11 instead of -std=gnu++11
- applied a few patches from Debian upstream to make their packaging job
easier
So because colors are normalized in GLSL, I won't be able to offer video
shaders absolute color literals. We will have to perform basic color
conversion inside the core.
As such, the current plan is to create some sort of Emulator::Settings
interface. With that, I'll connect an option for color correction, which
will be on by default. For FC/SFC, that will mean gamma correction
(darker / stronger colors), and for GB/GBC/GBA, it will mean simulating
the weird brightness levels of the displays. I am undecided on whether
to use pea soup green for the GB or not. By not doing so, it'll be
easier for the display emulation shader to do it.
2013-11-09 11:45:54 +00:00
|
|
|
signed rows();
|
|
|
|
signed rowsScrollable();
|
|
|
|
signed scrollPosition();
|
|
|
|
void scrollTo(signed position);
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
struct pHorizontalScroller : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
HorizontalScroller& horizontalScroller;
|
2011-08-06 14:03:52 +00:00
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
Size minimumSize();
|
2011-08-06 14:03:52 +00:00
|
|
|
void setLength(unsigned length);
|
|
|
|
void setPosition(unsigned position);
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pHorizontalScroller(HorizontalScroller& horizontalScroller) : pWidget(horizontalScroller), horizontalScroller(horizontalScroller) {}
|
2011-08-06 14:03:52 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onChange(WPARAM wparam);
|
2011-08-06 14:03:52 +00:00
|
|
|
};
|
|
|
|
|
2011-02-24 09:25:20 +00:00
|
|
|
struct pHorizontalSlider : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
HorizontalSlider& horizontalSlider;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
Size minimumSize();
|
2011-02-24 09:25:20 +00:00
|
|
|
void setLength(unsigned length);
|
|
|
|
void setPosition(unsigned position);
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pHorizontalSlider(HorizontalSlider& horizontalSlider) : pWidget(horizontalSlider), horizontalSlider(horizontalSlider) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onChange();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pLabel : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
Label& label;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
Size minimumSize();
|
2013-07-29 09:42:45 +00:00
|
|
|
void setText(string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pLabel(Label& label) : pWidget(label), label(label) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pLineEdit : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
LineEdit& lineEdit;
|
Update to v094r09 release.
byuu says:
This will easily be the biggest diff in the history of higan. And not in
a good way.
* target-higan and target-loki have been blown away completely
* nall and ruby massively updated
* phoenix replaced with hiro (pretty near a total rewrite)
* target-higan restarted using hiro (just a window for now)
* all emulation cores updated to compile again
* installation changed to not require root privileges (installs locally)
For the foreseeable future (maybe even permanently?), the new higan UI
will only build under Linux/BSD with GTK+ 2.20+. Probably the most
likely route for Windows/OS X will be to try and figure out how to build
hiro/GTK on those platforms, as awful as that would be. The other
alternative would be to produce new UIs for those platforms ... which
would actually be a good opportunity to make something much more user
friendly.
Being that I just started on this a few hours ago, that means that for
at least a few weeks, don't expect to be able to actually play any
games. Right now, you can pretty much just compile the binary and that's
it. It's quite possible that some nall changes didn't produce
compilation errors, but will produce runtime errors. So until the UI can
actually load games, we won't know if anything is broken. But we should
mostly be okay. It was mostly just trim<1> -> trim changes, moving to
Hash::SHA256 (much cleaner), and patching some reckless memory copy
functions enough to compile.
Progress isn't going to be like it was before: I'm now dividing my time
much thinner between studying and other hobbies.
My aim this time is not to produce a binary for everyone to play games
on. Rather, it's to keep the emulator alive. I want to be able to apply
critical patches again. And I would also like the base of the emulator
to live on, for use in other emulator frontends that utilize higan.
2015-02-26 10:10:46 +00:00
|
|
|
HBRUSH backgroundBrush = nullptr;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
Size minimumSize();
|
Update to v094r08 release.
byuu says:
Lots of changes this time around. FreeBSD stability and compilation is
still a work in progress.
FreeBSD 10 + Clang 3.3 = 108fps
FreeBSD 10 + GCC 4.7 = 130fps
Errata 1: I've been fighting that god-damned endian.h header for the
past nine WIPs now. The above WIP isn't building now because FreeBSD
isn't including headers before using certain types, and you end up with
a trillion error messages. So just delete all the endian.h includes from
nall/intrinsics.hpp to build.
Errata 2: I was trying to match g++ and g++47, so I used $(findstring
g++,$(compiler)), which ends up also matching clang++. Oops. Easy fix,
put Clang first and then else if g++ next. Not ideal, but oh well. All
it's doing for now is declaring -fwrapv twice, so you don't have to fix
it just yet. Probably just going to alias g++="g++47" and do exact
matching instead.
Errata 3: both OpenGL::term and VideoGLX::term are causing a core dump
on BSD. No idea why. The resources are initialized and valid, but
releasing them crashes the application.
Changelog:
- nall/Makefile is more flexible with overriding $(compiler), so you can
build with GCC or Clang on BSD (defaults to GCC now)
- PLATFORM_X was renamed to PLATFORM_XORG, and it's also declared with
PLATFORM_LINUX or PLATFORM_BSD
- PLATFORM_XORG probably isn't the best name ... still thinking about
what best to call LINUX|BSD|SOLARIS or ^(WINDOWS|MACOSX)
- fixed a few legitimate Clang warning messages in nall
- Compiler::VisualCPP is ugly as hell, renamed to Compiler::CL
- nall/platform includes nall/intrinsics first. Trying to move away from
testing for _WIN32, etc directly in all files. Work in progress.
- nall turns off Clang warnings that I won't "fix", because they aren't
broken. It's much less noisy to compile with warnings on now.
- phoenix gains the ability to set background and foreground colors on
various text container widgets (GTK only for now.)
- rewrote a lot of the MSU1 code to try and simplify it. Really hope
I didn't break anything ... I don't have any MSU1 test ROMs handy
- SNES coprocessor audio is now mixed as sclamp<16>(system_sample
+ coprocessor_sample) instead of sclamp<16>((sys + cop) / 2)
- allows for greater chance of aliasing (still low, SNES audio is
quiet), but doesn't cut base system volume in half anymore
- fixed Super Scope and Justifier cursor colors
- use input.xlib instead of input.x ... allows Xlib input driver to be
visible on Linux and BSD once again
- make install and make uninstall must be run as root again; no longer
using install but cp instead for BSD compatibility
- killed $(DESTDIR) ... use make prefix=$DESTDIR$prefix instead
- you can now set text/background colors for the loki console via (eg):
- settings.terminal.background-color 0x000000
- settings.terminal.foreground-color 0xffffff
2014-02-24 09:39:09 +00:00
|
|
|
void setBackgroundColor(Color color);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setEditable(bool editable);
|
Update to v094r08 release.
byuu says:
Lots of changes this time around. FreeBSD stability and compilation is
still a work in progress.
FreeBSD 10 + Clang 3.3 = 108fps
FreeBSD 10 + GCC 4.7 = 130fps
Errata 1: I've been fighting that god-damned endian.h header for the
past nine WIPs now. The above WIP isn't building now because FreeBSD
isn't including headers before using certain types, and you end up with
a trillion error messages. So just delete all the endian.h includes from
nall/intrinsics.hpp to build.
Errata 2: I was trying to match g++ and g++47, so I used $(findstring
g++,$(compiler)), which ends up also matching clang++. Oops. Easy fix,
put Clang first and then else if g++ next. Not ideal, but oh well. All
it's doing for now is declaring -fwrapv twice, so you don't have to fix
it just yet. Probably just going to alias g++="g++47" and do exact
matching instead.
Errata 3: both OpenGL::term and VideoGLX::term are causing a core dump
on BSD. No idea why. The resources are initialized and valid, but
releasing them crashes the application.
Changelog:
- nall/Makefile is more flexible with overriding $(compiler), so you can
build with GCC or Clang on BSD (defaults to GCC now)
- PLATFORM_X was renamed to PLATFORM_XORG, and it's also declared with
PLATFORM_LINUX or PLATFORM_BSD
- PLATFORM_XORG probably isn't the best name ... still thinking about
what best to call LINUX|BSD|SOLARIS or ^(WINDOWS|MACOSX)
- fixed a few legitimate Clang warning messages in nall
- Compiler::VisualCPP is ugly as hell, renamed to Compiler::CL
- nall/platform includes nall/intrinsics first. Trying to move away from
testing for _WIN32, etc directly in all files. Work in progress.
- nall turns off Clang warnings that I won't "fix", because they aren't
broken. It's much less noisy to compile with warnings on now.
- phoenix gains the ability to set background and foreground colors on
various text container widgets (GTK only for now.)
- rewrote a lot of the MSU1 code to try and simplify it. Really hope
I didn't break anything ... I don't have any MSU1 test ROMs handy
- SNES coprocessor audio is now mixed as sclamp<16>(system_sample
+ coprocessor_sample) instead of sclamp<16>((sys + cop) / 2)
- allows for greater chance of aliasing (still low, SNES audio is
quiet), but doesn't cut base system volume in half anymore
- fixed Super Scope and Justifier cursor colors
- use input.xlib instead of input.x ... allows Xlib input driver to be
visible on Linux and BSD once again
- make install and make uninstall must be run as root again; no longer
using install but cp instead for BSD compatibility
- killed $(DESTDIR) ... use make prefix=$DESTDIR$prefix instead
- you can now set text/background colors for the loki console via (eg):
- settings.terminal.background-color 0x000000
- settings.terminal.foreground-color 0xffffff
2014-02-24 09:39:09 +00:00
|
|
|
void setForegroundColor(Color color);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setText(string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
string text();
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pLineEdit(LineEdit& lineEdit) : pWidget(lineEdit), lineEdit(lineEdit) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onChange();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pListView : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
ListView& listView;
|
2012-06-18 10:13:51 +00:00
|
|
|
HIMAGELIST imageList;
|
2012-08-11 02:18:19 +00:00
|
|
|
vector<vector<unsigned>> imageMap;
|
|
|
|
vector<image> images;
|
2011-02-24 09:25:20 +00:00
|
|
|
bool lostFocus;
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
void append(const lstring& text);
|
2011-02-27 09:05:10 +00:00
|
|
|
void autoSizeColumns();
|
2013-11-28 10:29:01 +00:00
|
|
|
void remove(unsigned selection);
|
2011-02-24 09:25:20 +00:00
|
|
|
void reset();
|
Update to v094r08 release.
byuu says:
Lots of changes this time around. FreeBSD stability and compilation is
still a work in progress.
FreeBSD 10 + Clang 3.3 = 108fps
FreeBSD 10 + GCC 4.7 = 130fps
Errata 1: I've been fighting that god-damned endian.h header for the
past nine WIPs now. The above WIP isn't building now because FreeBSD
isn't including headers before using certain types, and you end up with
a trillion error messages. So just delete all the endian.h includes from
nall/intrinsics.hpp to build.
Errata 2: I was trying to match g++ and g++47, so I used $(findstring
g++,$(compiler)), which ends up also matching clang++. Oops. Easy fix,
put Clang first and then else if g++ next. Not ideal, but oh well. All
it's doing for now is declaring -fwrapv twice, so you don't have to fix
it just yet. Probably just going to alias g++="g++47" and do exact
matching instead.
Errata 3: both OpenGL::term and VideoGLX::term are causing a core dump
on BSD. No idea why. The resources are initialized and valid, but
releasing them crashes the application.
Changelog:
- nall/Makefile is more flexible with overriding $(compiler), so you can
build with GCC or Clang on BSD (defaults to GCC now)
- PLATFORM_X was renamed to PLATFORM_XORG, and it's also declared with
PLATFORM_LINUX or PLATFORM_BSD
- PLATFORM_XORG probably isn't the best name ... still thinking about
what best to call LINUX|BSD|SOLARIS or ^(WINDOWS|MACOSX)
- fixed a few legitimate Clang warning messages in nall
- Compiler::VisualCPP is ugly as hell, renamed to Compiler::CL
- nall/platform includes nall/intrinsics first. Trying to move away from
testing for _WIN32, etc directly in all files. Work in progress.
- nall turns off Clang warnings that I won't "fix", because they aren't
broken. It's much less noisy to compile with warnings on now.
- phoenix gains the ability to set background and foreground colors on
various text container widgets (GTK only for now.)
- rewrote a lot of the MSU1 code to try and simplify it. Really hope
I didn't break anything ... I don't have any MSU1 test ROMs handy
- SNES coprocessor audio is now mixed as sclamp<16>(system_sample
+ coprocessor_sample) instead of sclamp<16>((sys + cop) / 2)
- allows for greater chance of aliasing (still low, SNES audio is
quiet), but doesn't cut base system volume in half anymore
- fixed Super Scope and Justifier cursor colors
- use input.xlib instead of input.x ... allows Xlib input driver to be
visible on Linux and BSD once again
- make install and make uninstall must be run as root again; no longer
using install but cp instead for BSD compatibility
- killed $(DESTDIR) ... use make prefix=$DESTDIR$prefix instead
- you can now set text/background colors for the loki console via (eg):
- settings.terminal.background-color 0x000000
- settings.terminal.foreground-color 0xffffff
2014-02-24 09:39:09 +00:00
|
|
|
void setBackgroundColor(Color color);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setCheckable(bool checkable);
|
2013-11-28 10:29:01 +00:00
|
|
|
void setChecked(unsigned selection, bool checked);
|
Update to v094r08 release.
byuu says:
Lots of changes this time around. FreeBSD stability and compilation is
still a work in progress.
FreeBSD 10 + Clang 3.3 = 108fps
FreeBSD 10 + GCC 4.7 = 130fps
Errata 1: I've been fighting that god-damned endian.h header for the
past nine WIPs now. The above WIP isn't building now because FreeBSD
isn't including headers before using certain types, and you end up with
a trillion error messages. So just delete all the endian.h includes from
nall/intrinsics.hpp to build.
Errata 2: I was trying to match g++ and g++47, so I used $(findstring
g++,$(compiler)), which ends up also matching clang++. Oops. Easy fix,
put Clang first and then else if g++ next. Not ideal, but oh well. All
it's doing for now is declaring -fwrapv twice, so you don't have to fix
it just yet. Probably just going to alias g++="g++47" and do exact
matching instead.
Errata 3: both OpenGL::term and VideoGLX::term are causing a core dump
on BSD. No idea why. The resources are initialized and valid, but
releasing them crashes the application.
Changelog:
- nall/Makefile is more flexible with overriding $(compiler), so you can
build with GCC or Clang on BSD (defaults to GCC now)
- PLATFORM_X was renamed to PLATFORM_XORG, and it's also declared with
PLATFORM_LINUX or PLATFORM_BSD
- PLATFORM_XORG probably isn't the best name ... still thinking about
what best to call LINUX|BSD|SOLARIS or ^(WINDOWS|MACOSX)
- fixed a few legitimate Clang warning messages in nall
- Compiler::VisualCPP is ugly as hell, renamed to Compiler::CL
- nall/platform includes nall/intrinsics first. Trying to move away from
testing for _WIN32, etc directly in all files. Work in progress.
- nall turns off Clang warnings that I won't "fix", because they aren't
broken. It's much less noisy to compile with warnings on now.
- phoenix gains the ability to set background and foreground colors on
various text container widgets (GTK only for now.)
- rewrote a lot of the MSU1 code to try and simplify it. Really hope
I didn't break anything ... I don't have any MSU1 test ROMs handy
- SNES coprocessor audio is now mixed as sclamp<16>(system_sample
+ coprocessor_sample) instead of sclamp<16>((sys + cop) / 2)
- allows for greater chance of aliasing (still low, SNES audio is
quiet), but doesn't cut base system volume in half anymore
- fixed Super Scope and Justifier cursor colors
- use input.xlib instead of input.x ... allows Xlib input driver to be
visible on Linux and BSD once again
- make install and make uninstall must be run as root again; no longer
using install but cp instead for BSD compatibility
- killed $(DESTDIR) ... use make prefix=$DESTDIR$prefix instead
- you can now set text/background colors for the loki console via (eg):
- settings.terminal.background-color 0x000000
- settings.terminal.foreground-color 0xffffff
2014-02-24 09:39:09 +00:00
|
|
|
void setForegroundColor(Color color);
|
2013-11-28 10:29:01 +00:00
|
|
|
void setGeometry(Geometry geometry);
|
2013-05-02 11:25:45 +00:00
|
|
|
void setHeaderText(const lstring& text);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setHeaderVisible(bool visible);
|
2013-11-28 10:29:01 +00:00
|
|
|
void setImage(unsigned selection, unsigned position, const image& image);
|
2011-02-27 09:05:10 +00:00
|
|
|
void setSelected(bool selected);
|
2013-11-28 10:29:01 +00:00
|
|
|
void setSelection(unsigned selection);
|
|
|
|
void setText(unsigned selection, unsigned position, string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pListView(ListView& listView) : pWidget(listView), listView(listView), imageList(nullptr) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2012-08-11 02:18:19 +00:00
|
|
|
void buildImageList();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onActivate(LPARAM lparam);
|
|
|
|
void onChange(LPARAM lparam);
|
|
|
|
LRESULT onCustomDraw(LPARAM lparam);
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pProgressBar : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
ProgressBar& progressBar;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
Size minimumSize();
|
2011-02-24 09:25:20 +00:00
|
|
|
void setPosition(unsigned position);
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pProgressBar(ProgressBar& progressBar) : pWidget(progressBar), progressBar(progressBar) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
struct pRadioButton : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
RadioButton& radioButton;
|
2013-11-28 10:29:01 +00:00
|
|
|
HBITMAP hbitmap;
|
|
|
|
HIMAGELIST himagelist;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
Size minimumSize();
|
2011-02-24 09:25:20 +00:00
|
|
|
void setChecked();
|
2013-05-02 11:25:45 +00:00
|
|
|
void setGroup(const group<RadioButton>& group);
|
2013-11-28 10:29:01 +00:00
|
|
|
void setImage(const image& image, Orientation orientation);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setText(string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pRadioButton(RadioButton& radioButton) : pWidget(radioButton), radioButton(radioButton) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onActivate();
|
|
|
|
};
|
|
|
|
|
|
|
|
struct pRadioLabel : public pWidget {
|
|
|
|
RadioLabel& radioLabel;
|
|
|
|
|
|
|
|
Size minimumSize();
|
|
|
|
void setChecked();
|
|
|
|
void setGroup(const group<RadioLabel>& group);
|
|
|
|
void setText(string text);
|
|
|
|
|
|
|
|
pRadioLabel(RadioLabel& radioLabel) : pWidget(radioLabel), radioLabel(radioLabel) {}
|
|
|
|
void constructor();
|
|
|
|
void destructor();
|
|
|
|
void orphan();
|
|
|
|
|
|
|
|
void onActivate();
|
|
|
|
};
|
|
|
|
|
|
|
|
struct pTabFrame : public pWidget {
|
|
|
|
TabFrame& tabFrame;
|
|
|
|
WindowProc windowProc = nullptr;
|
|
|
|
HIMAGELIST imageList = nullptr;
|
|
|
|
|
|
|
|
void append(string text, const image& image);
|
|
|
|
void remove(unsigned selection);
|
|
|
|
void setEnabled(bool enabled);
|
|
|
|
void setGeometry(Geometry geometry);
|
|
|
|
void setImage(unsigned selection, const image& image);
|
|
|
|
void setSelection(unsigned selection);
|
|
|
|
void setText(unsigned selection, string text);
|
|
|
|
void setVisible(bool visible);
|
|
|
|
|
|
|
|
pTabFrame(TabFrame& tabFrame) : pWidget(tabFrame), tabFrame(tabFrame) {}
|
|
|
|
void constructor();
|
|
|
|
void destructor();
|
|
|
|
void orphan();
|
|
|
|
void buildImageList();
|
|
|
|
void synchronizeLayout();
|
|
|
|
|
|
|
|
void onChange();
|
|
|
|
void onDrawItem(LPARAM lparam);
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pTextEdit : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
TextEdit& textEdit;
|
Update to v094r09 release.
byuu says:
This will easily be the biggest diff in the history of higan. And not in
a good way.
* target-higan and target-loki have been blown away completely
* nall and ruby massively updated
* phoenix replaced with hiro (pretty near a total rewrite)
* target-higan restarted using hiro (just a window for now)
* all emulation cores updated to compile again
* installation changed to not require root privileges (installs locally)
For the foreseeable future (maybe even permanently?), the new higan UI
will only build under Linux/BSD with GTK+ 2.20+. Probably the most
likely route for Windows/OS X will be to try and figure out how to build
hiro/GTK on those platforms, as awful as that would be. The other
alternative would be to produce new UIs for those platforms ... which
would actually be a good opportunity to make something much more user
friendly.
Being that I just started on this a few hours ago, that means that for
at least a few weeks, don't expect to be able to actually play any
games. Right now, you can pretty much just compile the binary and that's
it. It's quite possible that some nall changes didn't produce
compilation errors, but will produce runtime errors. So until the UI can
actually load games, we won't know if anything is broken. But we should
mostly be okay. It was mostly just trim<1> -> trim changes, moving to
Hash::SHA256 (much cleaner), and patching some reckless memory copy
functions enough to compile.
Progress isn't going to be like it was before: I'm now dividing my time
much thinner between studying and other hobbies.
My aim this time is not to produce a binary for everyone to play games
on. Rather, it's to keep the emulator alive. I want to be able to apply
critical patches again. And I would also like the base of the emulator
to live on, for use in other emulator frontends that utilize higan.
2015-02-26 10:10:46 +00:00
|
|
|
HBRUSH backgroundBrush = nullptr;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
Update to v094r08 release.
byuu says:
Lots of changes this time around. FreeBSD stability and compilation is
still a work in progress.
FreeBSD 10 + Clang 3.3 = 108fps
FreeBSD 10 + GCC 4.7 = 130fps
Errata 1: I've been fighting that god-damned endian.h header for the
past nine WIPs now. The above WIP isn't building now because FreeBSD
isn't including headers before using certain types, and you end up with
a trillion error messages. So just delete all the endian.h includes from
nall/intrinsics.hpp to build.
Errata 2: I was trying to match g++ and g++47, so I used $(findstring
g++,$(compiler)), which ends up also matching clang++. Oops. Easy fix,
put Clang first and then else if g++ next. Not ideal, but oh well. All
it's doing for now is declaring -fwrapv twice, so you don't have to fix
it just yet. Probably just going to alias g++="g++47" and do exact
matching instead.
Errata 3: both OpenGL::term and VideoGLX::term are causing a core dump
on BSD. No idea why. The resources are initialized and valid, but
releasing them crashes the application.
Changelog:
- nall/Makefile is more flexible with overriding $(compiler), so you can
build with GCC or Clang on BSD (defaults to GCC now)
- PLATFORM_X was renamed to PLATFORM_XORG, and it's also declared with
PLATFORM_LINUX or PLATFORM_BSD
- PLATFORM_XORG probably isn't the best name ... still thinking about
what best to call LINUX|BSD|SOLARIS or ^(WINDOWS|MACOSX)
- fixed a few legitimate Clang warning messages in nall
- Compiler::VisualCPP is ugly as hell, renamed to Compiler::CL
- nall/platform includes nall/intrinsics first. Trying to move away from
testing for _WIN32, etc directly in all files. Work in progress.
- nall turns off Clang warnings that I won't "fix", because they aren't
broken. It's much less noisy to compile with warnings on now.
- phoenix gains the ability to set background and foreground colors on
various text container widgets (GTK only for now.)
- rewrote a lot of the MSU1 code to try and simplify it. Really hope
I didn't break anything ... I don't have any MSU1 test ROMs handy
- SNES coprocessor audio is now mixed as sclamp<16>(system_sample
+ coprocessor_sample) instead of sclamp<16>((sys + cop) / 2)
- allows for greater chance of aliasing (still low, SNES audio is
quiet), but doesn't cut base system volume in half anymore
- fixed Super Scope and Justifier cursor colors
- use input.xlib instead of input.x ... allows Xlib input driver to be
visible on Linux and BSD once again
- make install and make uninstall must be run as root again; no longer
using install but cp instead for BSD compatibility
- killed $(DESTDIR) ... use make prefix=$DESTDIR$prefix instead
- you can now set text/background colors for the loki console via (eg):
- settings.terminal.background-color 0x000000
- settings.terminal.foreground-color 0xffffff
2014-02-24 09:39:09 +00:00
|
|
|
void setBackgroundColor(Color color);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setCursorPosition(unsigned position);
|
|
|
|
void setEditable(bool editable);
|
Update to v094r08 release.
byuu says:
Lots of changes this time around. FreeBSD stability and compilation is
still a work in progress.
FreeBSD 10 + Clang 3.3 = 108fps
FreeBSD 10 + GCC 4.7 = 130fps
Errata 1: I've been fighting that god-damned endian.h header for the
past nine WIPs now. The above WIP isn't building now because FreeBSD
isn't including headers before using certain types, and you end up with
a trillion error messages. So just delete all the endian.h includes from
nall/intrinsics.hpp to build.
Errata 2: I was trying to match g++ and g++47, so I used $(findstring
g++,$(compiler)), which ends up also matching clang++. Oops. Easy fix,
put Clang first and then else if g++ next. Not ideal, but oh well. All
it's doing for now is declaring -fwrapv twice, so you don't have to fix
it just yet. Probably just going to alias g++="g++47" and do exact
matching instead.
Errata 3: both OpenGL::term and VideoGLX::term are causing a core dump
on BSD. No idea why. The resources are initialized and valid, but
releasing them crashes the application.
Changelog:
- nall/Makefile is more flexible with overriding $(compiler), so you can
build with GCC or Clang on BSD (defaults to GCC now)
- PLATFORM_X was renamed to PLATFORM_XORG, and it's also declared with
PLATFORM_LINUX or PLATFORM_BSD
- PLATFORM_XORG probably isn't the best name ... still thinking about
what best to call LINUX|BSD|SOLARIS or ^(WINDOWS|MACOSX)
- fixed a few legitimate Clang warning messages in nall
- Compiler::VisualCPP is ugly as hell, renamed to Compiler::CL
- nall/platform includes nall/intrinsics first. Trying to move away from
testing for _WIN32, etc directly in all files. Work in progress.
- nall turns off Clang warnings that I won't "fix", because they aren't
broken. It's much less noisy to compile with warnings on now.
- phoenix gains the ability to set background and foreground colors on
various text container widgets (GTK only for now.)
- rewrote a lot of the MSU1 code to try and simplify it. Really hope
I didn't break anything ... I don't have any MSU1 test ROMs handy
- SNES coprocessor audio is now mixed as sclamp<16>(system_sample
+ coprocessor_sample) instead of sclamp<16>((sys + cop) / 2)
- allows for greater chance of aliasing (still low, SNES audio is
quiet), but doesn't cut base system volume in half anymore
- fixed Super Scope and Justifier cursor colors
- use input.xlib instead of input.x ... allows Xlib input driver to be
visible on Linux and BSD once again
- make install and make uninstall must be run as root again; no longer
using install but cp instead for BSD compatibility
- killed $(DESTDIR) ... use make prefix=$DESTDIR$prefix instead
- you can now set text/background colors for the loki console via (eg):
- settings.terminal.background-color 0x000000
- settings.terminal.foreground-color 0xffffff
2014-02-24 09:39:09 +00:00
|
|
|
void setForegroundColor(Color color);
|
2013-07-29 09:42:45 +00:00
|
|
|
void setText(string text);
|
2011-02-24 09:25:20 +00:00
|
|
|
void setWordWrap(bool wordWrap);
|
|
|
|
string text();
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pTextEdit(TextEdit& textEdit) : pWidget(textEdit), textEdit(textEdit) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onChange();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
struct pVerticalScroller : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
VerticalScroller& verticalScroller;
|
2011-08-06 14:03:52 +00:00
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
Size minimumSize();
|
2011-08-06 14:03:52 +00:00
|
|
|
void setLength(unsigned length);
|
|
|
|
void setPosition(unsigned position);
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pVerticalScroller(VerticalScroller& verticalScroller) : pWidget(verticalScroller), verticalScroller(verticalScroller) {}
|
2011-08-06 14:03:52 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onChange(WPARAM wparam);
|
2011-08-06 14:03:52 +00:00
|
|
|
};
|
|
|
|
|
2011-02-24 09:25:20 +00:00
|
|
|
struct pVerticalSlider : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
VerticalSlider& verticalSlider;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
Size minimumSize();
|
2011-02-24 09:25:20 +00:00
|
|
|
void setLength(unsigned length);
|
|
|
|
void setPosition(unsigned position);
|
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pVerticalSlider(VerticalSlider& verticalSlider) : pWidget(verticalSlider), verticalSlider(verticalSlider) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2013-11-28 10:29:01 +00:00
|
|
|
|
|
|
|
void onChange();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pViewport : public pWidget {
|
2013-05-02 11:25:45 +00:00
|
|
|
Viewport& viewport;
|
2011-02-24 09:25:20 +00:00
|
|
|
|
|
|
|
uintptr_t handle();
|
2013-07-29 09:42:45 +00:00
|
|
|
void setDroppable(bool droppable);
|
2011-02-24 09:25:20 +00:00
|
|
|
|
2013-05-02 11:25:45 +00:00
|
|
|
pViewport(Viewport& viewport) : pWidget(viewport), viewport(viewport) {}
|
2011-02-24 09:25:20 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
2013-03-15 13:11:33 +00:00
|
|
|
|
|
|
|
}
|