2011-02-24 09:27:21 +00:00
|
|
|
struct Settings : public configuration {
|
2012-01-26 06:50:09 +00:00
|
|
|
bidirectional_map<Keyboard::Scancode, unsigned> keymap;
|
|
|
|
|
2011-02-24 09:27:21 +00:00
|
|
|
unsigned frameGeometryX;
|
|
|
|
unsigned frameGeometryY;
|
|
|
|
unsigned frameGeometryWidth;
|
|
|
|
unsigned frameGeometryHeight;
|
2011-02-27 09:11:01 +00:00
|
|
|
unsigned menuGeometryHeight;
|
|
|
|
unsigned statusGeometryHeight;
|
Update to v085r08 release.
byuu says:
Changelog:
- follow the Laevateinn topic to get most of it
- also added NMI, IRQ step buttons to CPU debugger
- also added trace masking + trace mask reset
- also added memory export
- cartridge loading is entirely folder-based now
FitzRoy, I'll go ahead and make a second compromise with you for v086:
I'll match the following:
/path/to/SNES.sfc/*.sfc
/path/to/NES.fc/*.prg, *.chr (split format)
/path/to/NES.fc/*.fc (merged format)
/path/to/GB.gb/*.gb
/path/to/GBC.gbc/*.gbc
Condition will be that there can only be one of each file. If there's
more than one, it'll abort. That lets me name my ROMs as
"Game.fc/Game.fc", and you can name yours as "Game.fc/cartridge.prg,
cartridge.chr". Or whatever you want.
We'll just go with that, see what fares out as the most popular, and
then restrict it back to that method.
The folder must have the .fc, etc extension though. That will be how we
avoid false-positive folder matches.
[Editor's note - the Laevateinn topic mentions these changes for
v085r08:
Added SMP/PPU breakpoints, SMP debugger, SMP stepping / tracing,
memory editing on APU-bus / VRAM / OAM / CGRAM, save state menu,
WRAM mirroring on breakpoints, protected MMIO memory regions
(otherwise, viewing $002100 could crash your game.)
Major missing components:
- trace mask
- trace mask clear / usage map clear
- window geometry caching / sizing improvements
- VRAM viewer
- properties viewer
- working memory export button
The rest will most likely appear after v086 is released.
]
2012-02-12 05:35:40 +00:00
|
|
|
unsigned windowBackgroundColor;
|
2011-02-24 09:27:21 +00:00
|
|
|
|
|
|
|
void load();
|
|
|
|
void save();
|
|
|
|
Settings();
|
|
|
|
};
|
|
|
|
|
|
|
|
struct pWindow;
|
|
|
|
struct pMenu;
|
|
|
|
struct pLayout;
|
|
|
|
struct pWidget;
|
|
|
|
|
2011-09-05 03:48:23 +00:00
|
|
|
struct pFont {
|
|
|
|
static Geometry geometry(const string &description, const string &text);
|
|
|
|
|
|
|
|
static PangoFontDescription* create(const string &description);
|
|
|
|
static void free(PangoFontDescription *font);
|
|
|
|
static Geometry geometry(PangoFontDescription *font, const string &text);
|
|
|
|
static void setFont(GtkWidget *widget, const string &font);
|
|
|
|
static void setFont(GtkWidget *widget, gpointer font);
|
|
|
|
};
|
|
|
|
|
2012-01-15 08:29:57 +00:00
|
|
|
struct pDesktop {
|
|
|
|
static Size size();
|
|
|
|
static Geometry workspace();
|
|
|
|
};
|
|
|
|
|
|
|
|
struct pKeyboard {
|
|
|
|
static bool pressed(Keyboard::Scancode scancode);
|
Update to v088r02 release.
byuu says:
Basically, the current implementation of nall/array is deprecated now.
The old method was for non-reference types, it acted like a vector for
POD types (raw memory allocation instead of placement new construction.)
And for reference types, it acted like an unordered set. Yeah, not good.
As of right now, nall/array is no longer used. The vector type usage was
replaced with actual vectors.
I've created nall/set, which now contains the specialization for
reference types.
nall/set basically acts much like std::unordered_set. No auto-sort, only
one of each type is allowed, automatic growth.
This will be the same both for reference and non-reference types ...
however, the non-reference type wasn't implemented just yet.
Future plans for nall/array are for it to be a statically allocated
block of memory, ala array<type, size>, which is meant for RAII memory
usage.
Have to work on the specifics, eg the size as a template parameter may
be problematic. I'd like to return allocated chunks of memory (eg
file::read) in this container so that I don't have to manually free the
data anymore.
I also removed nall/moduloarray, and moved that into the SNES DSP class,
since that's the only thing that uses it.
2012-04-26 10:56:15 +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);
|
|
|
|
};
|
|
|
|
|
|
|
|
struct pDialogWindow {
|
|
|
|
static string fileOpen(Window &parent, const string &path, const lstring &filter);
|
|
|
|
static string fileSave(Window &parent, const string &path, const lstring &filter);
|
|
|
|
static string folderSelect(Window &parent, const string &path);
|
|
|
|
};
|
|
|
|
|
|
|
|
struct pMessageWindow {
|
|
|
|
static MessageWindow::Response information(Window &parent, const string &text, MessageWindow::Buttons buttons);
|
|
|
|
static MessageWindow::Response question(Window &parent, const string &text, MessageWindow::Buttons buttons);
|
|
|
|
static MessageWindow::Response warning(Window &parent, const string &text, MessageWindow::Buttons buttons);
|
|
|
|
static MessageWindow::Response critical(Window &parent, const string &text, MessageWindow::Buttons buttons);
|
|
|
|
};
|
|
|
|
|
2011-02-24 09:27:21 +00:00
|
|
|
struct pObject {
|
2011-09-05 03:48:23 +00:00
|
|
|
Object &object;
|
2011-02-24 09:27:21 +00:00
|
|
|
bool locked;
|
|
|
|
|
2011-09-05 03:48:23 +00:00
|
|
|
pObject(Object &object) : object(object), locked(false) {}
|
|
|
|
virtual ~pObject() {}
|
|
|
|
|
|
|
|
void constructor() {}
|
|
|
|
void destructor() {}
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pOS : public pObject {
|
2012-01-15 08:29:57 +00:00
|
|
|
static XlibDisplay *display;
|
2011-03-22 12:56:49 +00:00
|
|
|
static Font defaultFont;
|
|
|
|
|
2011-02-24 09:27:21 +00:00
|
|
|
static void main();
|
2011-02-27 09:05:10 +00:00
|
|
|
static bool pendingEvents();
|
|
|
|
static void processEvents();
|
2011-02-24 09:27:21 +00:00
|
|
|
static void quit();
|
|
|
|
|
|
|
|
static void initialize();
|
|
|
|
};
|
|
|
|
|
2011-06-05 03:45:04 +00:00
|
|
|
struct pTimer : public pObject {
|
|
|
|
Timer &timer;
|
|
|
|
|
|
|
|
void setEnabled(bool enabled);
|
|
|
|
void setInterval(unsigned milliseconds);
|
|
|
|
|
2011-09-05 03:48:23 +00:00
|
|
|
pTimer(Timer &timer) : pObject(timer), timer(timer) {}
|
2011-06-05 03:45:04 +00:00
|
|
|
void constructor();
|
|
|
|
};
|
|
|
|
|
2011-02-24 09:27:21 +00:00
|
|
|
struct pWindow : public pObject {
|
|
|
|
Window &window;
|
|
|
|
GtkWidget *widget;
|
|
|
|
GtkWidget *menuContainer;
|
|
|
|
GtkWidget *formContainer;
|
|
|
|
GtkWidget *statusContainer;
|
|
|
|
GtkWidget *menu;
|
|
|
|
GtkWidget *status;
|
2012-03-26 10:13:02 +00:00
|
|
|
GtkAllocation lastAllocation;
|
|
|
|
bool onSizePending;
|
2011-02-24 09:27:21 +00:00
|
|
|
|
2012-08-07 13:28:00 +00:00
|
|
|
static Window& none();
|
|
|
|
|
2011-02-24 09:27:21 +00:00
|
|
|
void append(Layout &layout);
|
|
|
|
void append(Menu &menu);
|
|
|
|
void append(Widget &widget);
|
2011-08-06 14:03:52 +00:00
|
|
|
Color backgroundColor();
|
2011-02-24 09:27:21 +00:00
|
|
|
bool focused();
|
2011-02-27 09:05:10 +00:00
|
|
|
Geometry frameMargin();
|
2011-02-24 09:27:21 +00:00
|
|
|
Geometry geometry();
|
2011-09-05 03:48:23 +00:00
|
|
|
void remove(Layout &layout);
|
|
|
|
void remove(Menu &menu);
|
|
|
|
void remove(Widget &widget);
|
2011-08-06 14:03:52 +00:00
|
|
|
void setBackgroundColor(const Color &color);
|
2011-02-24 09:27:21 +00:00
|
|
|
void setFocused();
|
|
|
|
void setFullScreen(bool fullScreen);
|
|
|
|
void setGeometry(const Geometry &geometry);
|
2011-09-05 03:48:23 +00:00
|
|
|
void setMenuFont(const string &font);
|
2011-02-24 09:27:21 +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:27:21 +00:00
|
|
|
void setResizable(bool resizable);
|
2011-09-05 03:48:23 +00:00
|
|
|
void setStatusFont(const string &font);
|
2011-02-24 09:27:21 +00:00
|
|
|
void setStatusText(const string &text);
|
|
|
|
void setStatusVisible(bool visible);
|
|
|
|
void setTitle(const string &text);
|
|
|
|
void setVisible(bool visible);
|
2011-09-05 03:48:23 +00:00
|
|
|
void setWidgetFont(const string &font);
|
2011-02-24 09:27:21 +00:00
|
|
|
|
2011-09-05 03:48:23 +00:00
|
|
|
pWindow(Window &window) : pObject(window), window(window) {}
|
2011-02-24 09:27:21 +00:00
|
|
|
void constructor();
|
2011-02-27 09:11:01 +00:00
|
|
|
unsigned menuHeight();
|
|
|
|
unsigned statusHeight();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pAction : public pObject {
|
|
|
|
Action &action;
|
|
|
|
GtkWidget *widget;
|
|
|
|
|
|
|
|
void setEnabled(bool enabled);
|
|
|
|
void setVisible(bool visible);
|
|
|
|
|
2011-09-05 03:48:23 +00:00
|
|
|
pAction(Action &action) : pObject(action), action(action) {}
|
2011-02-24 09:27:21 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
virtual void orphan();
|
Update to v085r03 release.
byuu says:
Changelog:
- fixed cursor being visible under Metacity window manager (hopefully
doesn't cause regression with other WMs)
- show normal cursor when using SDL video driver
- added menu accelerators (meh, why not?)
- removed debugvirtual, ChipDebugger and chip/debugger functionality
entirely
- alt/smp disassembler moved up
- fixed alt/smp incw/decw instructions (unsigned->uint16 for internal
variables)
My plan going forward for a debugger is not to hardcode functionality
that causes the 10-15% slowdown right into the emulator itself.
Instead, I'm going to make a callback class, which will be a specialized
version of nall::function:
- can call function even if not assigned (results in no-op, return type
must have a trivial default constructor)
- if compiled without #define DEBUGGER, the entire thing turns into
a huge no-op; and will be eliminated entirely when compiled
- strategically place the functions: cb_step, cb_read, cb_write, etc.
From here, the ui-debugger GUI will bind the callbacks, implement
breakpoint checking, usage table generation, etc itself.
I'll probably have to add some breakout commands to exit the emulation
core prior to a frame event in some cases as well.
I didn't initially want any debugger-related stuff in the base cores,
but the #if debugger sCPUDebugger #else sCPU #endif stuff was already
more of a burden than this will be.
2012-02-04 09:23:53 +00:00
|
|
|
string mnemonic(string text);
|
2011-09-05 03:48:23 +00:00
|
|
|
virtual void setFont(const string &font);
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pMenu : public pAction {
|
|
|
|
Menu &menu;
|
2011-09-05 03:48:23 +00:00
|
|
|
GtkWidget *gtkMenu;
|
2011-02-24 09:27:21 +00:00
|
|
|
|
|
|
|
void append(Action &action);
|
2011-09-05 03:48:23 +00:00
|
|
|
void remove(Action &action);
|
2012-01-26 06:50:09 +00:00
|
|
|
void setImage(const image &image);
|
2011-02-24 09:27:21 +00:00
|
|
|
void setText(const string &text);
|
|
|
|
|
|
|
|
pMenu(Menu &menu) : pAction(menu), menu(menu) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
|
|
|
void setFont(const string &font);
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
2011-02-27 09:05:10 +00:00
|
|
|
struct pSeparator : public pAction {
|
|
|
|
Separator &separator;
|
2011-02-24 09:27:21 +00:00
|
|
|
|
2011-02-27 09:05:10 +00:00
|
|
|
pSeparator(Separator &separator) : pAction(separator), separator(separator) {}
|
2011-02-24 09:27:21 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
2011-02-27 09:05:10 +00:00
|
|
|
struct pItem : public pAction {
|
|
|
|
Item &item;
|
2011-02-24 09:27:21 +00:00
|
|
|
|
2012-01-15 08:29:57 +00:00
|
|
|
void setImage(const image &image);
|
2011-02-24 09:27:21 +00:00
|
|
|
void setText(const string &text);
|
|
|
|
|
2011-02-27 09:05:10 +00:00
|
|
|
pItem(Item &item) : pAction(item), item(item) {}
|
2011-02-24 09:27:21 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
2011-02-27 09:05:10 +00:00
|
|
|
struct pCheckItem : public pAction {
|
|
|
|
CheckItem &checkItem;
|
2011-02-24 09:27:21 +00:00
|
|
|
|
|
|
|
bool checked();
|
|
|
|
void setChecked(bool checked);
|
|
|
|
void setText(const string &text);
|
|
|
|
|
2011-02-27 09:05:10 +00:00
|
|
|
pCheckItem(CheckItem &checkItem) : pAction(checkItem), checkItem(checkItem) {}
|
2011-02-24 09:27:21 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
2011-02-27 09:05:10 +00:00
|
|
|
struct pRadioItem : public pAction {
|
|
|
|
RadioItem &radioItem;
|
2011-02-24 09:27:21 +00:00
|
|
|
|
|
|
|
bool checked();
|
|
|
|
void setChecked();
|
Update to v088r02 release.
byuu says:
Basically, the current implementation of nall/array is deprecated now.
The old method was for non-reference types, it acted like a vector for
POD types (raw memory allocation instead of placement new construction.)
And for reference types, it acted like an unordered set. Yeah, not good.
As of right now, nall/array is no longer used. The vector type usage was
replaced with actual vectors.
I've created nall/set, which now contains the specialization for
reference types.
nall/set basically acts much like std::unordered_set. No auto-sort, only
one of each type is allowed, automatic growth.
This will be the same both for reference and non-reference types ...
however, the non-reference type wasn't implemented just yet.
Future plans for nall/array are for it to be a statically allocated
block of memory, ala array<type, size>, which is meant for RAII memory
usage.
Have to work on the specifics, eg the size as a template parameter may
be problematic. I'd like to return allocated chunks of memory (eg
file::read) in this container so that I don't have to manually free the
data anymore.
I also removed nall/moduloarray, and moved that into the SNES DSP class,
since that's the only thing that uses it.
2012-04-26 10:56:15 +00:00
|
|
|
void setGroup(const set<RadioItem&> &group);
|
2011-02-24 09:27:21 +00:00
|
|
|
void setText(const string &text);
|
|
|
|
|
2011-02-27 09:05:10 +00:00
|
|
|
pRadioItem(RadioItem &radioItem) : pAction(radioItem), radioItem(radioItem) {}
|
2011-02-24 09:27:21 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
|
|
|
};
|
|
|
|
|
|
|
|
struct pSizable : public pObject {
|
|
|
|
Sizable &sizable;
|
|
|
|
|
|
|
|
pSizable(Sizable &sizable) : pObject(sizable), sizable(sizable) {}
|
|
|
|
};
|
|
|
|
|
|
|
|
struct pLayout : public pSizable {
|
|
|
|
Layout &layout;
|
|
|
|
|
|
|
|
pLayout(Layout &layout) : pSizable(layout), layout(layout) {}
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
2011-09-05 03:48:23 +00:00
|
|
|
struct pWidget : public pSizable {
|
2011-02-24 09:27:21 +00:00
|
|
|
Widget &widget;
|
|
|
|
GtkWidget *gtkWidget;
|
|
|
|
|
|
|
|
bool enabled();
|
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
|
|
|
virtual bool focused();
|
2011-03-22 12:56:49 +00:00
|
|
|
virtual Geometry minimumGeometry();
|
2011-02-24 09:27:21 +00:00
|
|
|
void setEnabled(bool enabled);
|
|
|
|
virtual void setFocused();
|
2011-09-05 03:48:23 +00:00
|
|
|
virtual void setFont(const string &font);
|
2011-03-26 11:31:07 +00:00
|
|
|
virtual void setGeometry(const Geometry &geometry);
|
2011-02-24 09:27:21 +00:00
|
|
|
void setVisible(bool visible);
|
|
|
|
|
2011-09-05 03:48:23 +00:00
|
|
|
pWidget(Widget &widget) : pSizable(widget), widget(widget) {}
|
2011-02-24 09:27:21 +00:00
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
virtual void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pButton : public pWidget {
|
|
|
|
Button &button;
|
|
|
|
|
2011-03-22 12:56:49 +00:00
|
|
|
Geometry minimumGeometry();
|
2012-01-15 08:29:57 +00:00
|
|
|
void setImage(const image &image, Orientation orientation);
|
2011-02-24 09:27:21 +00:00
|
|
|
void setText(const string &text);
|
|
|
|
|
|
|
|
pButton(Button &button) : pWidget(button), button(button) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
2011-03-26 11:31:07 +00:00
|
|
|
struct pCanvas : public pWidget {
|
|
|
|
Canvas &canvas;
|
2011-08-06 14:03:52 +00:00
|
|
|
cairo_surface_t *surface;
|
2011-03-26 11:31:07 +00:00
|
|
|
|
2011-11-04 11:57:54 +00:00
|
|
|
void setSize(const Size &size);
|
2011-03-26 11:31:07 +00:00
|
|
|
void update();
|
|
|
|
|
|
|
|
pCanvas(Canvas &canvas) : pWidget(canvas), canvas(canvas) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-03-26 11:31:07 +00:00
|
|
|
};
|
|
|
|
|
2011-02-24 09:27:21 +00:00
|
|
|
struct pCheckBox : public pWidget {
|
|
|
|
CheckBox &checkBox;
|
|
|
|
|
|
|
|
bool checked();
|
2011-03-22 12:56:49 +00:00
|
|
|
Geometry minimumGeometry();
|
2011-02-24 09:27:21 +00:00
|
|
|
void setChecked(bool checked);
|
|
|
|
void setText(const string &text);
|
|
|
|
|
|
|
|
pCheckBox(CheckBox &checkBox) : pWidget(checkBox), checkBox(checkBox) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pComboBox : public pWidget {
|
|
|
|
ComboBox &comboBox;
|
|
|
|
unsigned itemCounter;
|
|
|
|
|
|
|
|
void append(const string &text);
|
2012-06-25 12:49:39 +00:00
|
|
|
void modify(unsigned row, const string &text);
|
|
|
|
void remove(unsigned row);
|
2011-03-22 12:56:49 +00:00
|
|
|
Geometry minimumGeometry();
|
2011-02-24 09:27:21 +00:00
|
|
|
void reset();
|
|
|
|
unsigned selection();
|
|
|
|
void setSelection(unsigned row);
|
|
|
|
|
|
|
|
pComboBox(ComboBox &comboBox) : pWidget(comboBox), comboBox(comboBox) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pHexEdit : public pWidget {
|
|
|
|
HexEdit &hexEdit;
|
|
|
|
GtkWidget *container;
|
|
|
|
GtkWidget *subWidget;
|
|
|
|
GtkWidget *scrollBar;
|
|
|
|
GtkTextBuffer *textBuffer;
|
|
|
|
GtkTextMark *textCursor;
|
|
|
|
|
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();
|
2011-02-24 09:27:21 +00:00
|
|
|
void setColumns(unsigned columns);
|
|
|
|
void setLength(unsigned length);
|
|
|
|
void setOffset(unsigned offset);
|
|
|
|
void setRows(unsigned rows);
|
|
|
|
void update();
|
|
|
|
|
|
|
|
pHexEdit(HexEdit &hexEdit) : pWidget(hexEdit), hexEdit(hexEdit) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
unsigned cursorPosition();
|
|
|
|
bool keyPress(unsigned scancode);
|
|
|
|
void scroll(unsigned position);
|
|
|
|
void setCursorPosition(unsigned position);
|
|
|
|
void setScroll();
|
|
|
|
void updateScroll();
|
|
|
|
};
|
|
|
|
|
2011-08-06 14:03:52 +00:00
|
|
|
struct pHorizontalScrollBar : public pWidget {
|
|
|
|
HorizontalScrollBar &horizontalScrollBar;
|
|
|
|
|
|
|
|
Geometry minimumGeometry();
|
|
|
|
unsigned position();
|
|
|
|
void setLength(unsigned length);
|
|
|
|
void setPosition(unsigned position);
|
|
|
|
|
|
|
|
pHorizontalScrollBar(HorizontalScrollBar &horizontalScrollBar) : pWidget(horizontalScrollBar), horizontalScrollBar(horizontalScrollBar) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-08-06 14:03:52 +00:00
|
|
|
};
|
|
|
|
|
2011-02-24 09:27:21 +00:00
|
|
|
struct pHorizontalSlider : public pWidget {
|
|
|
|
HorizontalSlider &horizontalSlider;
|
|
|
|
|
2011-03-22 12:56:49 +00:00
|
|
|
Geometry minimumGeometry();
|
2011-02-24 09:27:21 +00:00
|
|
|
unsigned position();
|
|
|
|
void setLength(unsigned length);
|
|
|
|
void setPosition(unsigned position);
|
|
|
|
|
|
|
|
pHorizontalSlider(HorizontalSlider &horizontalSlider) : pWidget(horizontalSlider), horizontalSlider(horizontalSlider) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pLabel : public pWidget {
|
|
|
|
Label &label;
|
|
|
|
|
2011-03-22 12:56:49 +00:00
|
|
|
Geometry minimumGeometry();
|
2011-02-24 09:27:21 +00:00
|
|
|
void setText(const string &text);
|
|
|
|
|
|
|
|
pLabel(Label &label) : pWidget(label), label(label) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pLineEdit : public pWidget {
|
|
|
|
LineEdit &lineEdit;
|
|
|
|
|
2011-03-22 12:56:49 +00:00
|
|
|
Geometry minimumGeometry();
|
2011-02-24 09:27:21 +00:00
|
|
|
void setEditable(bool editable);
|
|
|
|
void setText(const string &text);
|
|
|
|
string text();
|
|
|
|
|
|
|
|
pLineEdit(LineEdit &lineEdit) : pWidget(lineEdit), lineEdit(lineEdit) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pListView : public pWidget {
|
|
|
|
ListView &listView;
|
|
|
|
GtkWidget *subWidget;
|
|
|
|
GtkListStore *store;
|
|
|
|
struct GtkColumn {
|
|
|
|
GtkTreeViewColumn *column;
|
2012-06-18 10:13:51 +00:00
|
|
|
GtkCellRenderer *checkbox, *icon, *text;
|
2011-02-24 09:27:21 +00:00
|
|
|
GtkWidget *label;
|
|
|
|
};
|
2012-06-18 10:13:51 +00:00
|
|
|
vector<GtkColumn> column;
|
2011-02-24 09:27:21 +00:00
|
|
|
|
|
|
|
void append(const lstring &text);
|
2011-02-27 09:05:10 +00:00
|
|
|
void autoSizeColumns();
|
2011-02-24 09:27:21 +00:00
|
|
|
bool checked(unsigned row);
|
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();
|
2011-02-24 09:27:21 +00:00
|
|
|
void modify(unsigned row, const lstring &text);
|
2012-06-25 12:49:39 +00:00
|
|
|
void remove(unsigned row);
|
2011-02-24 09:27:21 +00:00
|
|
|
void reset();
|
2011-02-27 09:05:10 +00:00
|
|
|
bool selected();
|
|
|
|
unsigned selection();
|
2011-02-24 09:27:21 +00:00
|
|
|
void setCheckable(bool checkable);
|
|
|
|
void setChecked(unsigned row, bool checked);
|
|
|
|
void setHeaderText(const lstring &text);
|
|
|
|
void setHeaderVisible(bool visible);
|
2012-06-18 10:13:51 +00:00
|
|
|
void setImage(unsigned row, unsigned column, const nall::image &image);
|
2011-02-27 09:05:10 +00:00
|
|
|
void setSelected(bool selected);
|
2011-02-24 09:27:21 +00:00
|
|
|
void setSelection(unsigned row);
|
|
|
|
|
|
|
|
pListView(ListView &listView) : pWidget(listView), listView(listView) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
void setFocused();
|
2011-09-05 03:48:23 +00:00
|
|
|
void setFont(const string &font);
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pProgressBar : public pWidget {
|
|
|
|
ProgressBar &progressBar;
|
|
|
|
|
2011-03-22 12:56:49 +00:00
|
|
|
Geometry minimumGeometry();
|
2011-02-24 09:27:21 +00:00
|
|
|
void setPosition(unsigned position);
|
|
|
|
|
|
|
|
pProgressBar(ProgressBar &progressBar) : pWidget(progressBar), progressBar(progressBar) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pRadioBox : public pWidget {
|
|
|
|
RadioBox &radioBox;
|
|
|
|
|
|
|
|
bool checked();
|
2011-03-22 12:56:49 +00:00
|
|
|
Geometry minimumGeometry();
|
2011-02-24 09:27:21 +00:00
|
|
|
void setChecked();
|
Update to v088r02 release.
byuu says:
Basically, the current implementation of nall/array is deprecated now.
The old method was for non-reference types, it acted like a vector for
POD types (raw memory allocation instead of placement new construction.)
And for reference types, it acted like an unordered set. Yeah, not good.
As of right now, nall/array is no longer used. The vector type usage was
replaced with actual vectors.
I've created nall/set, which now contains the specialization for
reference types.
nall/set basically acts much like std::unordered_set. No auto-sort, only
one of each type is allowed, automatic growth.
This will be the same both for reference and non-reference types ...
however, the non-reference type wasn't implemented just yet.
Future plans for nall/array are for it to be a statically allocated
block of memory, ala array<type, size>, which is meant for RAII memory
usage.
Have to work on the specifics, eg the size as a template parameter may
be problematic. I'd like to return allocated chunks of memory (eg
file::read) in this container so that I don't have to manually free the
data anymore.
I also removed nall/moduloarray, and moved that into the SNES DSP class,
since that's the only thing that uses it.
2012-04-26 10:56:15 +00:00
|
|
|
void setGroup(const set<RadioBox&> &group);
|
2011-02-24 09:27:21 +00:00
|
|
|
void setText(const string &text);
|
|
|
|
|
|
|
|
pRadioBox(RadioBox &radioBox) : pWidget(radioBox), radioBox(radioBox) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pTextEdit : public pWidget {
|
|
|
|
TextEdit &textEdit;
|
|
|
|
GtkWidget *subWidget;
|
|
|
|
GtkTextBuffer *textBuffer;
|
|
|
|
|
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();
|
2011-02-24 09:27:21 +00:00
|
|
|
void setCursorPosition(unsigned position);
|
|
|
|
void setEditable(bool editable);
|
|
|
|
void setText(const string &text);
|
|
|
|
void setWordWrap(bool wordWrap);
|
|
|
|
string text();
|
|
|
|
|
|
|
|
pTextEdit(TextEdit &textEdit) : pWidget(textEdit), textEdit(textEdit) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
2011-08-06 14:03:52 +00:00
|
|
|
struct pVerticalScrollBar : public pWidget {
|
|
|
|
VerticalScrollBar &verticalScrollBar;
|
|
|
|
|
|
|
|
Geometry minimumGeometry();
|
|
|
|
unsigned position();
|
|
|
|
void setLength(unsigned length);
|
|
|
|
void setPosition(unsigned position);
|
|
|
|
|
|
|
|
pVerticalScrollBar(VerticalScrollBar &verticalScrollBar) : pWidget(verticalScrollBar), verticalScrollBar(verticalScrollBar) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-08-06 14:03:52 +00:00
|
|
|
};
|
|
|
|
|
2011-02-24 09:27:21 +00:00
|
|
|
struct pVerticalSlider : public pWidget {
|
|
|
|
VerticalSlider &verticalSlider;
|
|
|
|
|
2011-03-22 12:56:49 +00:00
|
|
|
Geometry minimumGeometry();
|
2011-02-24 09:27:21 +00:00
|
|
|
unsigned position();
|
|
|
|
void setLength(unsigned length);
|
|
|
|
void setPosition(unsigned position);
|
|
|
|
|
|
|
|
pVerticalSlider(VerticalSlider &verticalSlider) : pWidget(verticalSlider), verticalSlider(verticalSlider) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct pViewport : public pWidget {
|
|
|
|
Viewport &viewport;
|
|
|
|
|
|
|
|
uintptr_t handle();
|
|
|
|
|
|
|
|
pViewport(Viewport &viewport) : pWidget(viewport), viewport(viewport) {}
|
|
|
|
void constructor();
|
2011-09-05 03:48:23 +00:00
|
|
|
void destructor();
|
|
|
|
void orphan();
|
2011-02-24 09:27:21 +00:00
|
|
|
};
|