2015-04-21 11:51:57 +00:00
|
|
|
struct CheatDatabase : Window {
|
|
|
|
CheatDatabase();
|
|
|
|
auto findCodes() -> void;
|
|
|
|
auto addCodes() -> void;
|
|
|
|
|
|
|
|
vector<string> codes;
|
|
|
|
|
|
|
|
VerticalLayout layout{this};
|
|
|
|
ListView cheatList{&layout, Size{~0, ~0}};
|
|
|
|
HorizontalLayout controlLayout{&layout, Size{~0, 0}};
|
|
|
|
Button selectAllButton{&controlLayout, Size{100, 0}};
|
|
|
|
Button unselectAllButton{&controlLayout, Size{100, 0}};
|
|
|
|
Widget spacer{&controlLayout, Size{~0, 0}};
|
2016-01-08 09:23:46 +00:00
|
|
|
Button addCodesButton{&controlLayout, Size{100, 0}};
|
2015-04-21 11:51:57 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct CheatEditor : TabFrameItem {
|
2015-12-21 09:16:47 +00:00
|
|
|
enum : uint { Slots = 128 };
|
2015-04-21 11:51:57 +00:00
|
|
|
|
|
|
|
CheatEditor(TabFrame*);
|
2015-04-21 11:58:59 +00:00
|
|
|
auto doChangeSelected() -> void;
|
2015-04-21 11:51:57 +00:00
|
|
|
auto doModify() -> void;
|
|
|
|
auto doRefresh() -> void;
|
2015-04-21 11:58:59 +00:00
|
|
|
auto doReset(bool force = false) -> void;
|
2015-04-21 11:51:57 +00:00
|
|
|
auto doErase() -> void;
|
|
|
|
auto synchronizeCodes() -> void;
|
2015-04-21 11:58:59 +00:00
|
|
|
auto addCode(const string& code, const string& description, bool enabled = false) -> bool;
|
|
|
|
auto loadCheats() -> void;
|
|
|
|
auto saveCheats() -> void;
|
2015-04-21 11:51:57 +00:00
|
|
|
|
|
|
|
struct Cheat {
|
2015-04-21 11:58:59 +00:00
|
|
|
bool enabled = false;
|
2015-04-21 11:51:57 +00:00
|
|
|
string code;
|
|
|
|
string description;
|
|
|
|
};
|
|
|
|
Cheat cheats[Slots];
|
|
|
|
|
|
|
|
VerticalLayout layout{this};
|
|
|
|
ListView cheatList{&layout, Size{~0, ~0}};
|
|
|
|
HorizontalLayout codeLayout{&layout, Size{~0, 0}};
|
|
|
|
Label codeLabel{&codeLayout, Size{70, 0}};
|
|
|
|
LineEdit codeValue{&codeLayout, Size{~0, 0}};
|
|
|
|
HorizontalLayout descriptionLayout{&layout, Size{~0, 0}};
|
|
|
|
Label descriptionLabel{&descriptionLayout, Size{70, 0}};
|
|
|
|
LineEdit descriptionValue{&descriptionLayout, Size{~0, 0}};
|
|
|
|
HorizontalLayout controlLayout{&layout, Size{~0, 0}};
|
|
|
|
Button findCodesButton{&controlLayout, Size{120, 0}};
|
|
|
|
Widget spacer{&controlLayout, Size{~0, 0}};
|
|
|
|
Button resetButton{&controlLayout, Size{80, 0}};
|
|
|
|
Button eraseButton{&controlLayout, Size{80, 0}};
|
|
|
|
};
|
|
|
|
|
|
|
|
struct StateManager : TabFrameItem {
|
2015-12-21 09:16:47 +00:00
|
|
|
enum : uint { Slots = 32 };
|
2015-04-21 11:51:57 +00:00
|
|
|
|
|
|
|
StateManager(TabFrame*);
|
2015-06-18 10:48:53 +00:00
|
|
|
auto doChangeSelected() -> void;
|
2015-04-21 11:51:57 +00:00
|
|
|
auto doRefresh() -> void;
|
2015-06-18 10:48:53 +00:00
|
|
|
auto doUpdateControls() -> void;
|
|
|
|
auto doChangeDescription() -> void;
|
2015-04-21 11:51:57 +00:00
|
|
|
auto doLoad() -> void;
|
|
|
|
auto doSave() -> void;
|
|
|
|
auto doReset() -> void;
|
|
|
|
auto doErase() -> void;
|
|
|
|
|
|
|
|
VerticalLayout layout{this};
|
|
|
|
ListView stateList{&layout, Size{~0, ~0}};
|
|
|
|
HorizontalLayout descriptionLayout{&layout, Size{~0, 0}};
|
|
|
|
Label descriptionLabel{&descriptionLayout, Size{70, 0}};
|
|
|
|
LineEdit descriptionValue{&descriptionLayout, Size{~0, 0}};
|
|
|
|
HorizontalLayout controlLayout{&layout, Size{~0, 0}};
|
|
|
|
Button saveButton{&controlLayout, Size{80, 0}};
|
|
|
|
Button loadButton{&controlLayout, Size{80, 0}};
|
|
|
|
Widget spacer{&controlLayout, Size{~0, 0}};
|
|
|
|
Button resetButton{&controlLayout, Size{80, 0}};
|
|
|
|
Button eraseButton{&controlLayout, Size{80, 0}};
|
|
|
|
};
|
|
|
|
|
Update to higan and icarus v095r15 release.
r13 and r14 weren't posted as individual releases, but their changelogs
were posted.
byuu says about r13:
I'm not going to be posting WIPs for r13 and above for a while.
The reason is that I'm working on the major manifest overhaul I've
discussed previously on the icarus subforum.
I'm recreating my boards database from scratch using the map files
and the new map analyzer. The only games that will load are ones
I've created board definitions for, and updated
sfc/cartridge/markup.cpp to parse. Once I've finished all the
boards, then I'll update the heuristics.
Then finally, I'll sync the syntax changes over to the fc, gb, gba
cores.
Once that's done, I'll start posting WIPs again, along with a new
build of icarus.
But I'll still post changelogs as I work through things.
Changelog (r13):
- preservation: created new database-builder tool (merges
region-specific databases with boards)
- icarus: support new, external database format
(~/.config/icarus/Database/(Super Famicom.bml, ...)
- added 1A3B-(10,11,12); 1A3B-20
byuu says about r14:
r14 work:
I successfully created mappings for every board used in the US set.
I also updated icarus' heuristics to use the new mappings, and
created ones there for the boards that are only in the JP set.
Then I patched icarus to support pulling games out of the database
when it's used on a game folder to generate a manifest file.
Then I updated a lot of code in higan/sfc to support the new mapping
syntax. sfc/cartridge/markup.cpp is about half the size it used to
be with the new mappings, and I was able to kill off both map/id and
map/select entirely.
Then I updated all four emulated systems (and both subsystems) to
use "board" as the root node, and harmonized their syntax (made them
all more consistent with each other.)
Then I added a manifest viewer to the tools window+menu. It's kind
of an advanced user feature, but oh well. No reason to coddle people
when the feature is very useful for developers. The viewer will show
all manifests in order when you load multi-cart games as well.
Still not going to call any syntax 100% done right now, but
thankfully with the new manifest-free folders, nobody will have to
do anything to use the new format. Just download the new version and
go.
The Super Famicom Event stuff is currently broken (CC92/PF94
boards). That's gonna be fun to support.
byuu says about r15:
EDIT: small bug in icarus with heuristics. Edit
core/super-famicom.cpp line 27:
if(/*auto*/ markup = cartridge.markup) {
Gotta remove that "auto" so that it returns valid markup.
Resolved the final concerns I had with the new manifest format.
Right now there are two things that are definitely broken: MCC (BS-X
Town cart) and Event (CC '92 and PF'94).
And there are a few things that are untested: SPC7110, EpsonRTC,
SharpRTC, SDD1+RAM, SufamiTurbo, BS-X slotted carts.
2015-12-19 08:52:34 +00:00
|
|
|
struct ManifestViewer : TabFrameItem {
|
|
|
|
ManifestViewer(TabFrame*);
|
|
|
|
auto doRefresh() -> void;
|
|
|
|
|
|
|
|
VerticalLayout layout{this};
|
|
|
|
TextEdit manifestView{&layout, Size{~0, ~0}};
|
|
|
|
};
|
|
|
|
|
2015-04-21 11:51:57 +00:00
|
|
|
struct ToolsManager : Window {
|
|
|
|
ToolsManager();
|
2015-12-21 09:16:47 +00:00
|
|
|
auto show(uint tool) -> void;
|
2015-04-21 11:51:57 +00:00
|
|
|
|
|
|
|
VerticalLayout layout{this};
|
|
|
|
TabFrame panel{&layout, Size{~0, ~0}};
|
|
|
|
CheatEditor cheatEditor{&panel};
|
|
|
|
StateManager stateManager{&panel};
|
Update to higan and icarus v095r15 release.
r13 and r14 weren't posted as individual releases, but their changelogs
were posted.
byuu says about r13:
I'm not going to be posting WIPs for r13 and above for a while.
The reason is that I'm working on the major manifest overhaul I've
discussed previously on the icarus subforum.
I'm recreating my boards database from scratch using the map files
and the new map analyzer. The only games that will load are ones
I've created board definitions for, and updated
sfc/cartridge/markup.cpp to parse. Once I've finished all the
boards, then I'll update the heuristics.
Then finally, I'll sync the syntax changes over to the fc, gb, gba
cores.
Once that's done, I'll start posting WIPs again, along with a new
build of icarus.
But I'll still post changelogs as I work through things.
Changelog (r13):
- preservation: created new database-builder tool (merges
region-specific databases with boards)
- icarus: support new, external database format
(~/.config/icarus/Database/(Super Famicom.bml, ...)
- added 1A3B-(10,11,12); 1A3B-20
byuu says about r14:
r14 work:
I successfully created mappings for every board used in the US set.
I also updated icarus' heuristics to use the new mappings, and
created ones there for the boards that are only in the JP set.
Then I patched icarus to support pulling games out of the database
when it's used on a game folder to generate a manifest file.
Then I updated a lot of code in higan/sfc to support the new mapping
syntax. sfc/cartridge/markup.cpp is about half the size it used to
be with the new mappings, and I was able to kill off both map/id and
map/select entirely.
Then I updated all four emulated systems (and both subsystems) to
use "board" as the root node, and harmonized their syntax (made them
all more consistent with each other.)
Then I added a manifest viewer to the tools window+menu. It's kind
of an advanced user feature, but oh well. No reason to coddle people
when the feature is very useful for developers. The viewer will show
all manifests in order when you load multi-cart games as well.
Still not going to call any syntax 100% done right now, but
thankfully with the new manifest-free folders, nobody will have to
do anything to use the new format. Just download the new version and
go.
The Super Famicom Event stuff is currently broken (CC92/PF94
boards). That's gonna be fun to support.
byuu says about r15:
EDIT: small bug in icarus with heuristics. Edit
core/super-famicom.cpp line 27:
if(/*auto*/ markup = cartridge.markup) {
Gotta remove that "auto" so that it returns valid markup.
Resolved the final concerns I had with the new manifest format.
Right now there are two things that are definitely broken: MCC (BS-X
Town cart) and Event (CC '92 and PF'94).
And there are a few things that are untested: SPC7110, EpsonRTC,
SharpRTC, SDD1+RAM, SufamiTurbo, BS-X slotted carts.
2015-12-19 08:52:34 +00:00
|
|
|
ManifestViewer manifestViewer{&panel};
|
2015-04-21 11:51:57 +00:00
|
|
|
};
|
|
|
|
|
Update to v097r02 release.
byuu says:
Note: balanced/performance profiles still broken, sorry.
Changelog:
- added nall/GNUmakefile unique() function; used on linking phase of
higan
- added nall/unique_pointer
- target-tomoko and {System}::Video updated to use
unique_pointer<ClassName> instead of ClassName* [1]
- locate() updated to search multiple paths [2]
- GB: pass gekkio's if_ie_registers and boot_hwio-G test ROMs
- FC, GB, GBA: merge video/ into the PPU cores
- ruby: fixed ~AudioXAudio2() typo
[1] I expected this to cause new crashes on exit due to changing the
order of destruction of objects (and deleting things that weren't
deleted before), but ... so far, so good. I guess we'll see what crops
up, especially on OS X (which is already crashing for unknown reasons on
exit.)
[2] right now, the search paths are: programpath(), {configpath(),
"higan/"}, {localpath(), "higan/"}; but we can add as many more as we
want, and we can also add platform-specific versions.
2016-01-25 11:27:18 +00:00
|
|
|
extern unique_pointer<CheatDatabase> cheatDatabase;
|
|
|
|
extern unique_pointer<ToolsManager> toolsManager;
|