mirror of https://github.com/bsnes-emu/bsnes.git
Update to v106r11 release.
byuu says: Changelog: - genius: improve sorting when game name is identical (eg revisions) - icarus, genius: update to finalized manifest syntax
This commit is contained in:
parent
2dd35f984d
commit
72b824cf1a
|
@ -127,17 +127,16 @@ auto ListWindow::loadDatabase(string location) -> void {
|
||||||
if(object.name() == "memory") {
|
if(object.name() == "memory") {
|
||||||
component.type = Component::Type::Memory;
|
component.type = Component::Type::Memory;
|
||||||
component.memory.type = object["type"].text();
|
component.memory.type = object["type"].text();
|
||||||
|
component.memory.battery = (bool)object["type/battery"];
|
||||||
component.memory.size = object["size"].text();
|
component.memory.size = object["size"].text();
|
||||||
component.memory.category = object["category"].text();
|
component.memory.category = object["category"].text();
|
||||||
component.memory.manufacturer = object["manufacturer"].text();
|
component.memory.manufacturer = object["manufacturer"].text();
|
||||||
component.memory.part = object["part"].text();
|
component.memory.model = object["model"].text();
|
||||||
component.memory.note = object["note"].text();
|
component.memory.identity = object["identity"].text();
|
||||||
component.memory.battery = (bool)object["type/battery"];
|
|
||||||
}
|
}
|
||||||
if(object.name() == "oscillator") {
|
if(object.name() == "oscillator") {
|
||||||
component.type = Component::Type::Oscillator;
|
component.type = Component::Type::Oscillator;
|
||||||
component.oscillator.frequency = object["frequency"].text();
|
component.oscillator.frequency = object["frequency"].text();
|
||||||
component.oscillator.note = object["note"].text();
|
|
||||||
}
|
}
|
||||||
game.components.append(component);
|
game.components.append(component);
|
||||||
}
|
}
|
||||||
|
@ -161,8 +160,8 @@ auto ListWindow::saveDatabase(string location) -> void {
|
||||||
auto copy = games;
|
auto copy = games;
|
||||||
copy.sort([](auto x, auto y) {
|
copy.sort([](auto x, auto y) {
|
||||||
return string::icompare(
|
return string::icompare(
|
||||||
{x.name, " ", x.region, " ", x.revision},
|
{x.name, "\n", x.region, "\n", x.revision},
|
||||||
{y.name, " ", y.region, " ", y.revision}
|
{y.name, "\n", y.region, "\n", y.revision}
|
||||||
) < 0;
|
) < 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -171,14 +170,14 @@ auto ListWindow::saveDatabase(string location) -> void {
|
||||||
|
|
||||||
for(auto& game : copy) {
|
for(auto& game : copy) {
|
||||||
fp.print("game\n");
|
fp.print("game\n");
|
||||||
fp.print(" sha256: ", game.sha256, "\n");
|
fp.print(" sha256: ", game.sha256, "\n");
|
||||||
if(game.label)
|
if(game.label)
|
||||||
fp.print(" label: ", game.label, "\n");
|
fp.print(" label: ", game.label, "\n");
|
||||||
fp.print(" name: ", game.name, "\n");
|
fp.print(" name: ", game.name, "\n");
|
||||||
fp.print(" region: ", game.region, "\n");
|
fp.print(" region: ", game.region, "\n");
|
||||||
fp.print(" revision: ", game.revision, "\n");
|
fp.print(" revision: ", game.revision, "\n");
|
||||||
if(game.board)
|
if(game.board)
|
||||||
fp.print(" board: ", game.board, "\n");
|
fp.print(" board: ", game.board, "\n");
|
||||||
else if(game.components)
|
else if(game.components)
|
||||||
fp.print(" board\n");
|
fp.print(" board\n");
|
||||||
for(auto& component : game.components) {
|
for(auto& component : game.components) {
|
||||||
|
@ -191,17 +190,15 @@ auto ListWindow::saveDatabase(string location) -> void {
|
||||||
fp.print(" category: ", component.memory.category, "\n");
|
fp.print(" category: ", component.memory.category, "\n");
|
||||||
if(component.memory.manufacturer)
|
if(component.memory.manufacturer)
|
||||||
fp.print(" manufacturer: ", component.memory.manufacturer, "\n");
|
fp.print(" manufacturer: ", component.memory.manufacturer, "\n");
|
||||||
if(component.memory.part)
|
if(component.memory.model)
|
||||||
fp.print(" part: ", component.memory.part, "\n");
|
fp.print(" model: ", component.memory.model, "\n");
|
||||||
if(component.memory.note)
|
if(component.memory.identity)
|
||||||
fp.print(" note: ", component.memory.note, "\n");
|
fp.print(" identity: ", component.memory.identity, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(component.type == Component::Type::Oscillator) {
|
if(component.type == Component::Type::Oscillator) {
|
||||||
fp.print(" oscillator\n");
|
fp.print(" oscillator\n");
|
||||||
fp.print(" frequency: ", component.oscillator.frequency, "\n");
|
fp.print(" frequency: ", component.oscillator.frequency, "\n");
|
||||||
if(component.oscillator.note)
|
|
||||||
fp.print(" note: ", component.oscillator.note, "\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(game.note)
|
if(game.note)
|
||||||
|
@ -375,17 +372,15 @@ auto GameWindow::reloadList() -> void {
|
||||||
item.append(TreeViewItem().setText({"Category: ", component.memory.category}));
|
item.append(TreeViewItem().setText({"Category: ", component.memory.category}));
|
||||||
if(component.memory.manufacturer)
|
if(component.memory.manufacturer)
|
||||||
item.append(TreeViewItem().setText({"Manufacturer: ", component.memory.manufacturer}));
|
item.append(TreeViewItem().setText({"Manufacturer: ", component.memory.manufacturer}));
|
||||||
if(component.memory.part)
|
if(component.memory.model)
|
||||||
item.append(TreeViewItem().setText({"Part: ", component.memory.part}));
|
item.append(TreeViewItem().setText({"Model: ", component.memory.model}));
|
||||||
if(component.memory.note)
|
if(component.memory.identity)
|
||||||
item.append(TreeViewItem().setText({"Note: ", component.memory.note}));
|
item.append(TreeViewItem().setText({"Identity: ", component.memory.identity}));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(component.type == Component::Type::Oscillator) {
|
if(component.type == Component::Type::Oscillator) {
|
||||||
item.setText({index, "Oscillator"});
|
item.setText({index, "Oscillator"});
|
||||||
item.append(TreeViewItem().setText({"Frequency: ", component.oscillator.frequency}));
|
item.append(TreeViewItem().setText({"Frequency: ", component.oscillator.frequency}));
|
||||||
if(component.oscillator.note)
|
|
||||||
item.append(TreeViewItem().setText({"Note: ", component.oscillator.note}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
componentTree.append(item);
|
componentTree.append(item);
|
||||||
|
@ -474,10 +469,10 @@ MemoryWindow::MemoryWindow() {
|
||||||
categoryEdit.onChange([&] { modified = true, updateWindow(); });
|
categoryEdit.onChange([&] { modified = true, updateWindow(); });
|
||||||
manufacturerLabel.setText("Manufacturer:").setAlignment(1.0);
|
manufacturerLabel.setText("Manufacturer:").setAlignment(1.0);
|
||||||
manufacturerEdit.onChange([&] { modified = true, updateWindow(); });
|
manufacturerEdit.onChange([&] { modified = true, updateWindow(); });
|
||||||
partLabel.setText("Part:").setAlignment(1.0);
|
modelLabel.setText("Model:").setAlignment(1.0);
|
||||||
partEdit.onChange([&] { modified = true, updateWindow(); });
|
modelEdit.onChange([&] { modified = true, updateWindow(); });
|
||||||
noteLabel.setText("Note:").setAlignment(1.0);
|
identityLabel.setText("Identity:").setAlignment(1.0);
|
||||||
noteEdit.onChange([&] { modified = true, updateWindow(); });
|
identityEdit.onChange([&] { modified = true, updateWindow(); });
|
||||||
batteryOption.setText("Battery").onToggle([&] { modified = true, updateWindow(); });
|
batteryOption.setText("Battery").onToggle([&] { modified = true, updateWindow(); });
|
||||||
acceptButton.setText("Accept").onActivate([&] { accept(); });
|
acceptButton.setText("Accept").onActivate([&] { accept(); });
|
||||||
cancelButton.setText("Cancel").onActivate([&] { cancel(); });
|
cancelButton.setText("Cancel").onActivate([&] { cancel(); });
|
||||||
|
@ -497,8 +492,8 @@ auto MemoryWindow::show(Memory memory) -> void {
|
||||||
sizeEdit.setText(memory.size);
|
sizeEdit.setText(memory.size);
|
||||||
categoryEdit.setText(memory.category);
|
categoryEdit.setText(memory.category);
|
||||||
manufacturerEdit.setText(memory.manufacturer);
|
manufacturerEdit.setText(memory.manufacturer);
|
||||||
partEdit.setText(memory.part);
|
modelEdit.setText(memory.model);
|
||||||
noteEdit.setText(memory.note);
|
identityEdit.setText(memory.identity);
|
||||||
batteryOption.setChecked(memory.battery);
|
batteryOption.setChecked(memory.battery);
|
||||||
|
|
||||||
updateWindow();
|
updateWindow();
|
||||||
|
@ -513,8 +508,8 @@ auto MemoryWindow::accept() -> void {
|
||||||
memory.size = sizeEdit.text().strip();
|
memory.size = sizeEdit.text().strip();
|
||||||
memory.category = categoryEdit.text().strip();
|
memory.category = categoryEdit.text().strip();
|
||||||
memory.manufacturer = manufacturerEdit.text().strip();
|
memory.manufacturer = manufacturerEdit.text().strip();
|
||||||
memory.part = partEdit.text().strip();
|
memory.model = modelEdit.text().strip();
|
||||||
memory.note = noteEdit.text().strip();
|
memory.identity = identityEdit.text().strip();
|
||||||
memory.battery = batteryOption.checked() && (memory.type == "RAM" || memory.type == "RTC");
|
memory.battery = batteryOption.checked() && (memory.type == "RAM" || memory.type == "RTC");
|
||||||
|
|
||||||
Component component{Component::Type::Memory};
|
Component component{Component::Type::Memory};
|
||||||
|
@ -546,8 +541,8 @@ auto MemoryWindow::updateWindow() -> void {
|
||||||
sizeEdit.setBackgroundColor(sizeEdit.text().strip() ? Color{} : (valid = false, Color{255, 224, 224}));
|
sizeEdit.setBackgroundColor(sizeEdit.text().strip() ? Color{} : (valid = false, Color{255, 224, 224}));
|
||||||
categoryEdit.setBackgroundColor(categoryEdit.text().strip() ? Color{} : (valid = false, Color{255, 224, 224}));
|
categoryEdit.setBackgroundColor(categoryEdit.text().strip() ? Color{} : (valid = false, Color{255, 224, 224}));
|
||||||
manufacturerEdit.setBackgroundColor(manufacturerEdit.text().strip() ? Color{} : (Color{255, 255, 240}));
|
manufacturerEdit.setBackgroundColor(manufacturerEdit.text().strip() ? Color{} : (Color{255, 255, 240}));
|
||||||
partEdit.setBackgroundColor(partEdit.text().strip() ? Color{} : (Color{255, 255, 240}));
|
modelEdit.setBackgroundColor(modelEdit.text().strip() ? Color{} : (Color{255, 255, 240}));
|
||||||
noteEdit.setBackgroundColor(noteEdit.text().strip() ? Color{} : (Color{255, 255, 240}));
|
identityEdit.setBackgroundColor(identityEdit.text().strip() ? Color{} : (Color{255, 255, 240}));
|
||||||
batteryOption.setEnabled(typeEdit.text().strip() == "RAM" || typeEdit.text().strip() == "RTC");
|
batteryOption.setEnabled(typeEdit.text().strip() == "RAM" || typeEdit.text().strip() == "RTC");
|
||||||
acceptButton.setEnabled(valid);
|
acceptButton.setEnabled(valid);
|
||||||
setTitle({modified ? "*" : "", create ? "Add New Memory" : "Modify Memory Details"});
|
setTitle({modified ? "*" : "", create ? "Add New Memory" : "Modify Memory Details"});
|
||||||
|
@ -561,8 +556,6 @@ OscillatorWindow::OscillatorWindow() {
|
||||||
layout.setMargin(5);
|
layout.setMargin(5);
|
||||||
frequencyLabel.setText("Frequency:").setAlignment(1.0);
|
frequencyLabel.setText("Frequency:").setAlignment(1.0);
|
||||||
frequencyEdit.onChange([&] { modified = true, updateWindow(); });
|
frequencyEdit.onChange([&] { modified = true, updateWindow(); });
|
||||||
noteLabel.setText("Note:").setAlignment(1.0);
|
|
||||||
noteEdit.onChange([&] { modified = true, updateWindow(); });
|
|
||||||
acceptButton.setText("Accept").onActivate([&] { accept(); });
|
acceptButton.setText("Accept").onActivate([&] { accept(); });
|
||||||
cancelButton.setText("Cancel").onActivate([&] { cancel(); });
|
cancelButton.setText("Cancel").onActivate([&] { cancel(); });
|
||||||
|
|
||||||
|
@ -578,7 +571,6 @@ auto OscillatorWindow::show(Oscillator oscillator) -> void {
|
||||||
create = !oscillator.frequency;
|
create = !oscillator.frequency;
|
||||||
|
|
||||||
frequencyEdit.setText(oscillator.frequency);
|
frequencyEdit.setText(oscillator.frequency);
|
||||||
noteEdit.setText(oscillator.note);
|
|
||||||
|
|
||||||
updateWindow();
|
updateWindow();
|
||||||
setCentered(*gameWindow);
|
setCentered(*gameWindow);
|
||||||
|
@ -589,7 +581,6 @@ auto OscillatorWindow::show(Oscillator oscillator) -> void {
|
||||||
|
|
||||||
auto OscillatorWindow::accept() -> void {
|
auto OscillatorWindow::accept() -> void {
|
||||||
oscillator.frequency = frequencyEdit.text().strip();
|
oscillator.frequency = frequencyEdit.text().strip();
|
||||||
oscillator.note = noteEdit.text().strip();
|
|
||||||
|
|
||||||
Component component{Component::Type::Oscillator};
|
Component component{Component::Type::Oscillator};
|
||||||
component.oscillator = oscillator;
|
component.oscillator = oscillator;
|
||||||
|
@ -617,7 +608,6 @@ auto OscillatorWindow::cancel() -> void {
|
||||||
auto OscillatorWindow::updateWindow() -> void {
|
auto OscillatorWindow::updateWindow() -> void {
|
||||||
bool valid = true;
|
bool valid = true;
|
||||||
frequencyEdit.setBackgroundColor(frequencyEdit.text().strip() ? Color{} : (valid = false, Color{255, 224, 224}));
|
frequencyEdit.setBackgroundColor(frequencyEdit.text().strip() ? Color{} : (valid = false, Color{255, 224, 224}));
|
||||||
noteEdit.setBackgroundColor(noteEdit.text().strip() ? Color{} : (Color{255, 255, 240}));
|
|
||||||
acceptButton.setEnabled(valid);
|
acceptButton.setEnabled(valid);
|
||||||
setTitle({modified ? "*" : "", create ? "Add New Property" : "Modify Property Details"});
|
setTitle({modified ? "*" : "", create ? "Add New Property" : "Modify Property Details"});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,15 @@
|
||||||
struct Memory {
|
struct Memory {
|
||||||
string type;
|
string type;
|
||||||
|
boolean battery;
|
||||||
string size;
|
string size;
|
||||||
string category;
|
string category;
|
||||||
string manufacturer;
|
string manufacturer;
|
||||||
string part;
|
string model;
|
||||||
string note;
|
string identity;
|
||||||
boolean battery;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Oscillator {
|
struct Oscillator {
|
||||||
string frequency;
|
string frequency;
|
||||||
string note;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//variant meta-class
|
//variant meta-class
|
||||||
|
@ -143,12 +142,12 @@ private:
|
||||||
HorizontalLayout manufacturerLayout{&layout, Size{~0, 0}};
|
HorizontalLayout manufacturerLayout{&layout, Size{~0, 0}};
|
||||||
Label manufacturerLabel{&manufacturerLayout, Size{80, 0}};
|
Label manufacturerLabel{&manufacturerLayout, Size{80, 0}};
|
||||||
LineEdit manufacturerEdit{&manufacturerLayout, Size{~0, 0}};
|
LineEdit manufacturerEdit{&manufacturerLayout, Size{~0, 0}};
|
||||||
HorizontalLayout partLayout{&layout, Size{~0, 0}};
|
HorizontalLayout modelLayout{&layout, Size{~0, 0}};
|
||||||
Label partLabel{&partLayout, Size{80, 0}};
|
Label modelLabel{&modelLayout, Size{80, 0}};
|
||||||
LineEdit partEdit{&partLayout, Size{~0, 0}};
|
LineEdit modelEdit{&modelLayout, Size{~0, 0}};
|
||||||
HorizontalLayout noteLayout{&layout, Size{~0, 0}};
|
HorizontalLayout identityLayout{&layout, Size{~0, 0}};
|
||||||
Label noteLabel{¬eLayout, Size{80, 0}};
|
Label identityLabel{&identityLayout, Size{80, 0}};
|
||||||
LineEdit noteEdit{¬eLayout, Size{~0, 0}};
|
LineEdit identityEdit{&identityLayout, Size{~0, 0}};
|
||||||
HorizontalLayout controlLayout{&layout, Size{~0, 0}};
|
HorizontalLayout controlLayout{&layout, Size{~0, 0}};
|
||||||
Widget controlSpacer{&controlLayout, Size{~0, 0}};
|
Widget controlSpacer{&controlLayout, Size{~0, 0}};
|
||||||
CheckLabel batteryOption{&controlLayout, Size{0, 0}};
|
CheckLabel batteryOption{&controlLayout, Size{0, 0}};
|
||||||
|
@ -172,9 +171,6 @@ private:
|
||||||
HorizontalLayout frequencyLayout{&layout, Size{~0, 0}};
|
HorizontalLayout frequencyLayout{&layout, Size{~0, 0}};
|
||||||
Label frequencyLabel{&frequencyLayout, Size{60, 0}};
|
Label frequencyLabel{&frequencyLayout, Size{60, 0}};
|
||||||
LineEdit frequencyEdit{&frequencyLayout, Size{~0, 0}};
|
LineEdit frequencyEdit{&frequencyLayout, Size{~0, 0}};
|
||||||
HorizontalLayout noteLayout{&layout, Size{~0, 0}};
|
|
||||||
Label noteLabel{¬eLayout, Size{60, 0}};
|
|
||||||
LineEdit noteEdit{¬eLayout, Size{~0, 0}};
|
|
||||||
HorizontalLayout controlLayout{&layout, Size{~0, 0}};
|
HorizontalLayout controlLayout{&layout, Size{~0, 0}};
|
||||||
Widget controlSpacer{&controlLayout, Size{~0, 0}};
|
Widget controlSpacer{&controlLayout, Size{~0, 0}};
|
||||||
Button acceptButton{&controlLayout, Size{80, 0}};
|
Button acceptButton{&controlLayout, Size{80, 0}};
|
||||||
|
|
|
@ -12,7 +12,7 @@ using namespace nall;
|
||||||
|
|
||||||
namespace Emulator {
|
namespace Emulator {
|
||||||
static const string Name = "higan";
|
static const string Name = "higan";
|
||||||
static const string Version = "106.10";
|
static const string Version = "106.11";
|
||||||
static const string Author = "byuu";
|
static const string Author = "byuu";
|
||||||
static const string License = "GPLv3";
|
static const string License = "GPLv3";
|
||||||
static const string Website = "https://byuu.org/";
|
static const string Website = "https://byuu.org/";
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
database
|
database
|
||||||
revision: 2018-03-04
|
revision: 2018-03-13
|
||||||
|
|
||||||
//Boards (Production)
|
//Boards (Production)
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
database
|
database
|
||||||
revision: 2018-03-01
|
revision: 2018-03-13
|
||||||
|
|
||||||
//BS Memory (JPN)
|
//BS Memory (JPN)
|
||||||
|
|
||||||
|
@ -8,37 +8,37 @@ database
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: 80c34b50817d58820bc8c88d2d9fa462550b4a76372e19c6467cbfbc8cf5d9ef
|
sha256: 80c34b50817d58820bc8c88d2d9fa462550b4a76372e19c6467cbfbc8cf5d9ef
|
||||||
|
label: 鮫亀 キャラカセット
|
||||||
|
name: Same Game - Chara Cassette
|
||||||
region: BSMC-ZS5J-JPN
|
region: BSMC-ZS5J-JPN
|
||||||
revision: BSMC-ZS5J-0
|
revision: BSMC-ZS5J-0
|
||||||
board: BSMC-CR-01
|
board: BSMC-CR-01
|
||||||
name: Same Game - Chara Cassette
|
memory
|
||||||
label: 鮫亀 キャラカセット
|
type: ROM
|
||||||
memory
|
size: 0x80000
|
||||||
type: ROM
|
category: Program
|
||||||
size: 0x80000
|
|
||||||
name: program.rom
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: 859c7f7b4771d920a5bdb11f1d247ab6b43fb026594d1062f6f72d32cd340a0a
|
sha256: 859c7f7b4771d920a5bdb11f1d247ab6b43fb026594d1062f6f72d32cd340a0a
|
||||||
|
label: 鮫亀 キャラデータ集
|
||||||
|
name: Same Game - Chara Data Shuu
|
||||||
region: BSMC-YS5J-JPN
|
region: BSMC-YS5J-JPN
|
||||||
revision: BSMC-YS5J-0
|
revision: BSMC-YS5J-0
|
||||||
board: BSMC-CR-01
|
board: BSMC-CR-01
|
||||||
name: Same Game - Chara Data Shuu
|
memory
|
||||||
label: 鮫亀 キャラデータ集
|
type: ROM
|
||||||
memory
|
size: 0x80000
|
||||||
type: ROM
|
category: Program
|
||||||
size: 0x80000
|
|
||||||
name: program.rom
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: c92a15fdd9b0133f9ea69105d0230a3acd1cdeef98567462eca86ea02a959e4e
|
sha256: c92a15fdd9b0133f9ea69105d0230a3acd1cdeef98567462eca86ea02a959e4e
|
||||||
|
label: SDガンダム ジーネクスト ユニット&マップコレクション
|
||||||
|
name: SD Gundam G Next - Unit & Map Collection
|
||||||
region: BSMC-ZX3J-JPN
|
region: BSMC-ZX3J-JPN
|
||||||
revision: BSMC-ZX3J-0
|
revision: BSMC-ZX3J-0
|
||||||
board: BSMC-BR-01
|
board: BSMC-BR-01
|
||||||
name: SD Gundam G Next - Unit & Map Collection
|
memory
|
||||||
label: SDガンダム ジーネクスト ユニット&マップコレクション
|
type: ROM
|
||||||
memory
|
size: 0x80000
|
||||||
type: ROM
|
category: Program
|
||||||
size: 0x80000
|
|
||||||
name: program.rom
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
database
|
database
|
||||||
revision: 2018-03-01
|
revision: 2018-03-13
|
||||||
|
|
||||||
//Sufami Turbo (JPN)
|
//Sufami Turbo (JPN)
|
||||||
|
|
||||||
|
@ -8,206 +8,215 @@ database
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: f73bda08743565e0bd101632ebbac2d363d703a3ab39d23f49d95217cab29269
|
sha256: f73bda08743565e0bd101632ebbac2d363d703a3ab39d23f49d95217cab29269
|
||||||
|
label: 美少女戦士セーラームーン セーラースターズ ふわふわパニック2
|
||||||
|
name: Bishoujo Senshi Sailor Moon Sailor Stars - Fuwafuwa Panic 2
|
||||||
region: SFT-0112-JPN
|
region: SFT-0112-JPN
|
||||||
revision: SAILOR MOON
|
revision: SAILOR MOON
|
||||||
board: PT-911
|
board: PT-911
|
||||||
name: Bishoujo Senshi Sailor Moon Sailor Stars - Fuwafuwa Panic 2
|
memory
|
||||||
label: 美少女戦士セーラームーン セーラースターズ ふわふわパニック2
|
type: ROM
|
||||||
note: Unlinkable
|
size: 0x100000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
note: Unlinkable
|
||||||
size: 0x100000
|
|
||||||
name: program.rom
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: afb3f2a83b5bfcb1b8829b6995f108cc4d64ca322d1ba4a50b83af6e1f2e89bd
|
sha256: afb3f2a83b5bfcb1b8829b6995f108cc4d64ca322d1ba4a50b83af6e1f2e89bd
|
||||||
|
label: クレヨンしんちゃん 長ぐつドボン!!
|
||||||
|
name: Crayon Shin-chan - Nagagutsu Dobon!!
|
||||||
region: SFT-0113-JPN
|
region: SFT-0113-JPN
|
||||||
revision: SHINCYAN
|
revision: SHINCYAN
|
||||||
board: PT-911
|
board: PT-911
|
||||||
name: Crayon Shin-chan - Nagagutsu Dobon!!
|
memory
|
||||||
label: クレヨンしんちゃん 長ぐつドボン!!
|
type: ROM
|
||||||
note: Unlinkable
|
size: 0x80000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
note: Unlinkable
|
||||||
size: 0x80000
|
|
||||||
name: program.rom
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: d93b3a570e7cf343f680ab0768a50b77e3577f9c555007e2de3decd6bc4765c8
|
sha256: d93b3a570e7cf343f680ab0768a50b77e3577f9c555007e2de3decd6bc4765c8
|
||||||
|
label: ゲゲゲの鬼太郎 妖怪ドンジャラ
|
||||||
|
name: Gegege no Kitarou - Youkai Donjara
|
||||||
region: SFT-0106-JPN
|
region: SFT-0106-JPN
|
||||||
revision: KITARO DONJYAR
|
revision: KITARO DONJYAR
|
||||||
board: PT-911
|
board: PT-911
|
||||||
name: Gegege no Kitarou - Youkai Donjara
|
memory
|
||||||
label: ゲゲゲの鬼太郎 妖怪ドンジャラ
|
type: ROM
|
||||||
note: Unlinkable
|
size: 0x80000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
note: Unlinkable
|
||||||
size: 0x80000
|
|
||||||
name: program.rom
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: 89aecd4e23d8219c8de3e71bb75db3dfe667d51c1eba4ea7239d2f772743d0cc
|
sha256: 89aecd4e23d8219c8de3e71bb75db3dfe667d51c1eba4ea7239d2f772743d0cc
|
||||||
|
label: 激走戦隊カーレンジャ 全開!レーサー戦士
|
||||||
|
name: Gekisou Sentai Carranger - Zenkai! Racer Senshi
|
||||||
region: SFT-0109-JPN
|
region: SFT-0109-JPN
|
||||||
revision: CAR RANGER
|
revision: CAR RANGER
|
||||||
board: PT-911
|
board: PT-911
|
||||||
name: Gekisou Sentai Carranger - Zenkai! Racer Senshi
|
memory
|
||||||
label: 激走戦隊カーレンジャ 全開!レーサー戦士
|
type: ROM
|
||||||
note: Unlinkable
|
size: 0x80000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
note: Unlinkable
|
||||||
size: 0x80000
|
|
||||||
name: program.rom
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: 602b20b788640f5743487108a10f3f77bca5ce2d24208b25b1ca498a96eb0d69
|
sha256: 602b20b788640f5743487108a10f3f77bca5ce2d24208b25b1ca498a96eb0d69
|
||||||
|
label: ぽいぽい忍者ワールド
|
||||||
|
name: Poi Poi Ninja World
|
||||||
region: SFT-0103-JPN
|
region: SFT-0103-JPN
|
||||||
revision: POI POI NINJYA
|
revision: POI POI NINJYA
|
||||||
board: PT-911
|
board: PT-911
|
||||||
name: Poi Poi Ninja World
|
memory
|
||||||
label: ぽいぽい忍者ワールド
|
type: ROM
|
||||||
note: Linkable: SFT-0103-JPN
|
size: 0x80000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
memory
|
||||||
size: 0x80000
|
type: RAM
|
||||||
name: program.rom
|
battery
|
||||||
memory
|
size: 0x800
|
||||||
type: NVRAM
|
category: Save
|
||||||
size: 0x800
|
note: Linkable: SFT-0103-JPN
|
||||||
name: save.ram
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: 2a9d7c9a61318861028a73ca03e32a48cff162d76cba36fbaab8690b212efe9b
|
sha256: 2a9d7c9a61318861028a73ca03e32a48cff162d76cba36fbaab8690b212efe9b
|
||||||
|
label: SDガンダムジェネレーション アクシズ戦記
|
||||||
|
name: SD Gundam Generation - Axis Senki
|
||||||
region: SFT-0107-JPN
|
region: SFT-0107-JPN
|
||||||
revision: GUNDAM C
|
revision: GUNDAM C
|
||||||
board: PT-912
|
board: PT-912
|
||||||
name: SD Gundam Generation - Axis Senki
|
memory
|
||||||
label: SDガンダムジェネレーション アクシズ戦記
|
type: ROM
|
||||||
note: Linkable: SFT-0104-JPN, SFT-0105-JPN, SFT-0107-JPN, SFT-0108-JPN, SFT-0110-JPN, SFT-0111-JPN
|
size: 0x80000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
memory
|
||||||
size: 0x80000
|
type: RAM
|
||||||
name: program.rom
|
battery
|
||||||
memory
|
size: 0x2000
|
||||||
type: NVRAM
|
category: Save
|
||||||
size: 0x2000
|
note: Linkable: SFT-0104-JPN, SFT-0105-JPN, SFT-0107-JPN, SFT-0108-JPN, SFT-0110-JPN, SFT-0111-JPN
|
||||||
name: save.ram
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: 60ac017c18f534e8cf24ca7f38e22ce92db95ea6c30b2d59d76f13c4f1c8a6e4
|
sha256: 60ac017c18f534e8cf24ca7f38e22ce92db95ea6c30b2d59d76f13c4f1c8a6e4
|
||||||
|
label: SDガンダムジェネレーション バビロニア建国戦記
|
||||||
|
name: SD Gundam Generation - Babylonia Kenkoku Senki
|
||||||
region: SFT-0108-JPN
|
region: SFT-0108-JPN
|
||||||
revision: GUNDAM D
|
revision: GUNDAM D
|
||||||
board: PT-912
|
board: PT-912
|
||||||
name: SD Gundam Generation - Babylonia Kenkoku Senki
|
memory
|
||||||
label: SDガンダムジェネレーション バビロニア建国戦記
|
type: ROM
|
||||||
note: Linkable: SFT-0104-JPN, SFT-0105-JPN, SFT-0107-JPN, SFT-0108-JPN, SFT-0110-JPN, SFT-0111-JPN
|
size: 0x80000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
memory
|
||||||
size: 0x80000
|
type: RAM
|
||||||
name: program.rom
|
battery
|
||||||
memory
|
size: 0x2000
|
||||||
type: NVRAM
|
category: Save
|
||||||
size: 0x2000
|
note: Linkable: SFT-0104-JPN, SFT-0105-JPN, SFT-0107-JPN, SFT-0108-JPN, SFT-0110-JPN, SFT-0111-JPN
|
||||||
name: save.ram
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: e639b5d5d722432b6809ccc6801dc584e1a3016379f34b335ed2dfa73b1ebf69
|
sha256: e639b5d5d722432b6809ccc6801dc584e1a3016379f34b335ed2dfa73b1ebf69
|
||||||
|
label: SDガンダムジェネレーション コロニー格闘記
|
||||||
|
name: SD Gundam Generation - Colony Kakutouki
|
||||||
region: SFT-0111-JPN
|
region: SFT-0111-JPN
|
||||||
revision: GUNDAM F
|
revision: GUNDAM F
|
||||||
board: PT-912
|
board: PT-912
|
||||||
name: SD Gundam Generation - Colony Kakutouki
|
memory
|
||||||
label: SDガンダムジェネレーション コロニー格闘記
|
type: ROM
|
||||||
note: Linkable: SFT-0104-JPN, SFT-0105-JPN, SFT-0107-JPN, SFT-0108-JPN, SFT-0110-JPN, SFT-0111-JPN
|
size: 0x80000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
memory
|
||||||
size: 0x80000
|
type: RAM
|
||||||
name: program.rom
|
battery
|
||||||
memory
|
size: 0x2000
|
||||||
type: NVRAM
|
category: Save
|
||||||
size: 0x2000
|
note: Linkable: SFT-0104-JPN, SFT-0105-JPN, SFT-0107-JPN, SFT-0108-JPN, SFT-0110-JPN, SFT-0111-JPN
|
||||||
name: save.ram
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: 8547a08ed11fe408eac282a90ac46654bd2e5f49bda3aec8e5edf166a0a4b9af
|
sha256: 8547a08ed11fe408eac282a90ac46654bd2e5f49bda3aec8e5edf166a0a4b9af
|
||||||
|
label: SDガンダムジェネレーション グリプス戦記
|
||||||
|
name: SD Gundam Generation - Gryps Senki
|
||||||
region: SFT-0105-JPN
|
region: SFT-0105-JPN
|
||||||
revision: GUNDAM B
|
revision: GUNDAM B
|
||||||
board: PT-912
|
board: PT-912
|
||||||
name: SD Gundam Generation - Gryps Senki
|
memory
|
||||||
label: SDガンダムジェネレーション グリプス戦記
|
type: ROM
|
||||||
note: Linkable: SFT-0104-JPN, SFT-0105-JPN, SFT-0107-JPN, SFT-0108-JPN, SFT-0110-JPN, SFT-0111-JPN
|
size: 0x80000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
memory
|
||||||
size: 0x80000
|
type: RAM
|
||||||
name: program.rom
|
battery
|
||||||
memory
|
size: 0x2000
|
||||||
type: NVRAM
|
category: Save
|
||||||
size: 0x2000
|
note: Linkable: SFT-0104-JPN, SFT-0105-JPN, SFT-0107-JPN, SFT-0108-JPN, SFT-0110-JPN, SFT-0111-JPN
|
||||||
name: save.ram
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: 3e82215bed08274874b30d461fc4a965c6bca932229da5d46d56e36f484d65eb
|
sha256: 3e82215bed08274874b30d461fc4a965c6bca932229da5d46d56e36f484d65eb
|
||||||
|
label: SDガンダムジェネレーション 一年戦争記
|
||||||
|
name: SD Gundam Generation - Ichinen Sensouki
|
||||||
region: SFT-0104-JPN
|
region: SFT-0104-JPN
|
||||||
revision: GUNDAM A
|
revision: GUNDAM A
|
||||||
board: PT-912
|
board: PT-912
|
||||||
name: SD Gundam Generation - Ichinen Sensouki
|
memory
|
||||||
label: SDガンダムジェネレーション 一年戦争記
|
type: ROM
|
||||||
note: Linkable: SFT-0104-JPN, SFT-0105-JPN, SFT-0107-JPN, SFT-0108-JPN, SFT-0110-JPN, SFT-0111-JPN
|
size: 0x80000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
memory
|
||||||
size: 0x80000
|
type: RAM
|
||||||
name: program.rom
|
battery
|
||||||
memory
|
size: 0x2000
|
||||||
type: NVRAM
|
category: Save
|
||||||
size: 0x2000
|
note: Linkable: SFT-0104-JPN, SFT-0105-JPN, SFT-0107-JPN, SFT-0108-JPN, SFT-0110-JPN, SFT-0111-JPN
|
||||||
name: save.ram
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: 5951a58a91d8e397d0a237ccc2b1248e17c7312cb9cc11cbc350200a97b4e021
|
sha256: 5951a58a91d8e397d0a237ccc2b1248e17c7312cb9cc11cbc350200a97b4e021
|
||||||
|
label: SDガンダムジェネレーション ザンスカール戦記
|
||||||
|
name: SD Gundam Generation - Zanscare Senki
|
||||||
region: SFT-0110-JPN
|
region: SFT-0110-JPN
|
||||||
revision: GUNDAM E
|
revision: GUNDAM E
|
||||||
board: PT-912
|
board: PT-912
|
||||||
name: SD Gundam Generation - Zanscare Senki
|
memory
|
||||||
label: SDガンダムジェネレーション ザンスカール戦記
|
type: ROM
|
||||||
note: Linkable: SFT-0104-JPN, SFT-0105-JPN, SFT-0107-JPN, SFT-0108-JPN, SFT-0110-JPN, SFT-0111-JPN
|
size: 0x80000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
memory
|
||||||
size: 0x80000
|
type: RAM
|
||||||
name: program.rom
|
battery
|
||||||
memory
|
size: 0x2000
|
||||||
type: NVRAM
|
category: Save
|
||||||
size: 0x2000
|
note: Linkable: SFT-0104-JPN, SFT-0105-JPN, SFT-0107-JPN, SFT-0108-JPN, SFT-0110-JPN, SFT-0111-JPN
|
||||||
name: save.ram
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: 2fec5f2bc7dee010af10569a3d2bc18715a79a126940800c3eade5abbd625e3f
|
sha256: 2fec5f2bc7dee010af10569a3d2bc18715a79a126940800c3eade5abbd625e3f
|
||||||
|
label: SDウルトラバトル セブン伝説
|
||||||
|
name: SD Ultra Battle - Seven Densetsu
|
||||||
region: SFT-0102-JPN
|
region: SFT-0102-JPN
|
||||||
revision: ULTRA SEVEN 1
|
revision: ULTRA SEVEN 1
|
||||||
board: PT-911
|
board: PT-911
|
||||||
name: SD Ultra Battle - Seven Densetsu
|
memory
|
||||||
label: SDウルトラバトル セブン伝説
|
type: ROM
|
||||||
note: Linkable: SFT-0101-JPN, SFT-0102-JPN
|
size: 0x80000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
memory
|
||||||
size: 0x80000
|
type: RAM
|
||||||
name: program.rom
|
battery
|
||||||
memory
|
size: 0x800
|
||||||
type: NVRAM
|
category: Save
|
||||||
size: 0x800
|
note: Linkable: SFT-0101-JPN, SFT-0102-JPN
|
||||||
name: save.ram
|
|
||||||
|
|
||||||
game
|
game
|
||||||
sha256: 2bb55214fb668ca603d7b944b14f105dfb10b987a8902d420fe4ae1cb69c1d4a
|
sha256: 2bb55214fb668ca603d7b944b14f105dfb10b987a8902d420fe4ae1cb69c1d4a
|
||||||
|
label: SDウルトラバトル ウルトラマン伝説
|
||||||
|
name: SD Ultra Battle - Ultraman Densetsu
|
||||||
region: SFT-0101-JPN
|
region: SFT-0101-JPN
|
||||||
revision: ULTRA MAN 1
|
revision: ULTRA MAN 1
|
||||||
board: PT-911
|
board: PT-911
|
||||||
name: SD Ultra Battle - Ultraman Densetsu
|
memory
|
||||||
label: SDウルトラバトル ウルトラマン伝説
|
type: ROM
|
||||||
note: Linkable: SFT-0101-JPN, SFT-0102-JPN
|
size: 0x80000
|
||||||
memory
|
category: Program
|
||||||
type: ROM
|
memory
|
||||||
size: 0x80000
|
type: RAM
|
||||||
name: program.rom
|
battery
|
||||||
memory
|
size: 0x800
|
||||||
type: NVRAM
|
category: Save
|
||||||
size: 0x800
|
note: Linkable: SFT-0101-JPN, SFT-0102-JPN
|
||||||
name: save.ram
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -23,8 +23,8 @@ auto BSMemory::manifest() const -> string {
|
||||||
string output;
|
string output;
|
||||||
output.append("game\n");
|
output.append("game\n");
|
||||||
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
||||||
output.append(" label: ", Location::prefix(location), "\n");
|
output.append(" label: ", Location::prefix(location), "\n");
|
||||||
output.append(" name: ", Location::prefix(location), "\n");
|
output.append(" name: ", Location::prefix(location), "\n");
|
||||||
output.append(" board\n");
|
output.append(" board\n");
|
||||||
output.append(Memory{}.type("Flash").size(data.size()).category("Program").text());
|
output.append(Memory{}.type("Flash").size(data.size()).category("Program").text());
|
||||||
return output;
|
return output;
|
||||||
|
|
|
@ -35,66 +35,66 @@ auto Famicom::manifest() const -> string {
|
||||||
string output;
|
string output;
|
||||||
output.append("game\n");
|
output.append("game\n");
|
||||||
output.append(" sha256: ", Hash::SHA256(&data[16], data.size() - 16).digest(), "\n");
|
output.append(" sha256: ", Hash::SHA256(&data[16], data.size() - 16).digest(), "\n");
|
||||||
output.append(" label: ", Location::prefix(location), "\n");
|
output.append(" label: ", Location::prefix(location), "\n");
|
||||||
output.append(" name: ", Location::prefix(location), "\n");
|
output.append(" name: ", Location::prefix(location), "\n");
|
||||||
|
|
||||||
switch(mapper) {
|
switch(mapper) {
|
||||||
default:
|
default:
|
||||||
output.append(" board: NES-NROM-256\n");
|
output.append(" board: NES-NROM-256\n");
|
||||||
output.append(" mirror mode=", mirror == 0 ? "horizontal" : "vertical", "\n");
|
output.append(" mirror mode=", mirror == 0 ? "horizontal" : "vertical", "\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
output.append(" board: NES-SXROM\n");
|
output.append(" board: NES-SXROM\n");
|
||||||
output.append(" chip type=MMC1B2\n");
|
output.append(" chip type=MMC1B2\n");
|
||||||
prgram = 8192;
|
prgram = 8192;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
output.append(" board: NES-UOROM\n");
|
output.append(" board: NES-UOROM\n");
|
||||||
output.append(" mirror mode=", mirror == 0 ? "horizontal" : "vertical", "\n");
|
output.append(" mirror mode=", mirror == 0 ? "horizontal" : "vertical", "\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
output.append(" board: NES-CNROM\n");
|
output.append(" board: NES-CNROM\n");
|
||||||
output.append(" mirror mode=", mirror == 0 ? "horizontal" : "vertical", "\n");
|
output.append(" mirror mode=", mirror == 0 ? "horizontal" : "vertical", "\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
//MMC3
|
//MMC3
|
||||||
output.append(" board: NES-TLROM\n");
|
output.append(" board: NES-TLROM\n");
|
||||||
output.append(" chip type=MMC3B\n");
|
output.append(" chip type=MMC3B\n");
|
||||||
prgram = 8192;
|
prgram = 8192;
|
||||||
//MMC6
|
//MMC6
|
||||||
//output.append(" board: NES-HKROM\n");
|
//output.append(" board: NES-HKROM\n");
|
||||||
//output.append(" chip type=MMC6\n");
|
//output.append(" chip type=MMC6\n");
|
||||||
//prgram = 1024;
|
//prgram = 1024;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
output.append(" board: NES-ELROM\n");
|
output.append(" board: NES-ELROM\n");
|
||||||
output.append(" chip type=MMC5\n");
|
output.append(" chip type=MMC5\n");
|
||||||
prgram = 65536;
|
prgram = 65536;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
output.append(" board: NES-AOROM\n");
|
output.append(" board: NES-AOROM\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 9:
|
case 9:
|
||||||
output.append(" board: NES-PNROM\n");
|
output.append(" board: NES-PNROM\n");
|
||||||
output.append(" chip type=MMC2\n");
|
output.append(" chip type=MMC2\n");
|
||||||
prgram = 8192;
|
prgram = 8192;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
output.append(" board: NES-FKROM\n");
|
output.append(" board: NES-FKROM\n");
|
||||||
output.append(" chip type=MMC4\n");
|
output.append(" chip type=MMC4\n");
|
||||||
prgram = 8192;
|
prgram = 8192;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 16:
|
case 16:
|
||||||
output.append(" board: BANDAI-FCG\n");
|
output.append(" board: BANDAI-FCG\n");
|
||||||
output.append(" chip type=LZ93D50\n");
|
output.append(" chip type=LZ93D50\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ auto Famicom::manifest() const -> string {
|
||||||
case 23:
|
case 23:
|
||||||
case 25:
|
case 25:
|
||||||
//VRC4
|
//VRC4
|
||||||
output.append(" board: KONAMI-VRC-4\n");
|
output.append(" board: KONAMI-VRC-4\n");
|
||||||
output.append(" chip type=VRC4\n");
|
output.append(" chip type=VRC4\n");
|
||||||
output.append(" pinout a0=1 a1=0\n");
|
output.append(" pinout a0=1 a1=0\n");
|
||||||
prgram = 8192;
|
prgram = 8192;
|
||||||
|
@ -110,52 +110,52 @@ auto Famicom::manifest() const -> string {
|
||||||
|
|
||||||
case 22:
|
case 22:
|
||||||
//VRC2
|
//VRC2
|
||||||
output.append(" board: KONAMI-VRC-2\n");
|
output.append(" board: KONAMI-VRC-2\n");
|
||||||
output.append(" chip type=VRC2\n");
|
output.append(" chip type=VRC2\n");
|
||||||
output.append(" pinout a0=0 a1=1\n");
|
output.append(" pinout a0=0 a1=1\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 24:
|
case 24:
|
||||||
output.append(" board: KONAMI-VRC-6\n");
|
output.append(" board: KONAMI-VRC-6\n");
|
||||||
output.append(" chip type=VRC6\n");
|
output.append(" chip type=VRC6\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 26:
|
case 26:
|
||||||
output.append(" board: KONAMI-VRC-6\n");
|
output.append(" board: KONAMI-VRC-6\n");
|
||||||
output.append(" chip type=VRC6\n");
|
output.append(" chip type=VRC6\n");
|
||||||
prgram = 8192;
|
prgram = 8192;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 34:
|
case 34:
|
||||||
output.append(" board: NES-BNROM\n");
|
output.append(" board: NES-BNROM\n");
|
||||||
output.append(" mirror mode=", mirror == 0 ? "horizontal" : "vertical", "\n");
|
output.append(" mirror mode=", mirror == 0 ? "horizontal" : "vertical", "\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 66:
|
case 66:
|
||||||
output.append(" board: NES-GNROM\n");
|
output.append(" board: NES-GNROM\n");
|
||||||
output.append(" mirror mode=", mirror == 0 ? "horizontal" : "vertical", "\n");
|
output.append(" mirror mode=", mirror == 0 ? "horizontal" : "vertical", "\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 69:
|
case 69:
|
||||||
output.append(" board: SUNSOFT-5B\n");
|
output.append(" board: SUNSOFT-5B\n");
|
||||||
output.append(" chip type=5B\n");
|
output.append(" chip type=5B\n");
|
||||||
prgram = 8192;
|
prgram = 8192;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 73:
|
case 73:
|
||||||
output.append(" board: KONAMI-VRC-3\n");
|
output.append(" board: KONAMI-VRC-3\n");
|
||||||
output.append(" chip type=VRC3\n");
|
output.append(" chip type=VRC3\n");
|
||||||
output.append(" mirror mode=", mirror == 0 ? "horizontal" : "vertical", "\n");
|
output.append(" mirror mode=", mirror == 0 ? "horizontal" : "vertical", "\n");
|
||||||
prgram = 8192;
|
prgram = 8192;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 75:
|
case 75:
|
||||||
output.append(" board: KONAMI-VRC-1\n");
|
output.append(" board: KONAMI-VRC-1\n");
|
||||||
output.append(" chip type=VRC1\n");
|
output.append(" chip type=VRC1\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 85:
|
case 85:
|
||||||
output.append(" board: KONAMI-VRC-7\n");
|
output.append(" board: KONAMI-VRC-7\n");
|
||||||
output.append(" chip type=VRC7\n");
|
output.append(" chip type=VRC7\n");
|
||||||
prgram = 8192;
|
prgram = 8192;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -238,9 +238,9 @@ auto GameBoy::manifest() const -> string {
|
||||||
string output;
|
string output;
|
||||||
output.append("game\n");
|
output.append("game\n");
|
||||||
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
||||||
output.append(" label: ", Location::prefix(location), "\n");
|
output.append(" label: ", Location::prefix(location), "\n");
|
||||||
output.append(" name: ", Location::prefix(location), "\n");
|
output.append(" name: ", Location::prefix(location), "\n");
|
||||||
output.append(" board: ", mapper, "\n");
|
output.append(" board: ", mapper, "\n");
|
||||||
output.append(Memory{}.type("ROM").size(data.size()).category("Program").text());
|
output.append(Memory{}.type("ROM").size(data.size()).category("Program").text());
|
||||||
if(ram && ramSize)
|
if(ram && ramSize)
|
||||||
output.append(Memory{}.type("RAM").size(ramSize).category("Save").battery(battery).text());
|
output.append(Memory{}.type("RAM").size(ramSize).category("Save").battery(battery).text());
|
||||||
|
|
|
@ -21,8 +21,8 @@ auto GameGear::manifest() const -> string {
|
||||||
string output;
|
string output;
|
||||||
output.append("game\n");
|
output.append("game\n");
|
||||||
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
||||||
output.append(" label: ", Location::prefix(location), "\n");
|
output.append(" label: ", Location::prefix(location), "\n");
|
||||||
output.append(" name: ", Location::prefix(location), "\n");
|
output.append(" name: ", Location::prefix(location), "\n");
|
||||||
output.append(" board\n");
|
output.append(" board\n");
|
||||||
output.append(Memory{}.type("ROM").size(data.size()).category("Program").text());
|
output.append(Memory{}.type("ROM").size(data.size()).category("Program").text());
|
||||||
output.append(Memory{}.type("RAM").size(0x8000).category("Save").battery().text());
|
output.append(Memory{}.type("RAM").size(0x8000).category("Save").battery().text());
|
||||||
|
|
|
@ -10,10 +10,10 @@ if(_battery)
|
||||||
output.append(" category: ", _category, "\n");
|
output.append(" category: ", _category, "\n");
|
||||||
if(_manufacturer)
|
if(_manufacturer)
|
||||||
output.append(" manufacturer: ", _manufacturer, "\n");
|
output.append(" manufacturer: ", _manufacturer, "\n");
|
||||||
if(_part)
|
if(_model)
|
||||||
output.append(" part: ", _part, "\n");
|
output.append(" model: ", _model, "\n");
|
||||||
if(_note)
|
if(_identity)
|
||||||
output.append(" note: ", _note, "\n");
|
output.append(" identity: ", _identity, "\n");
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,8 +21,6 @@ auto Oscillator::text() const -> string {
|
||||||
string output;
|
string output;
|
||||||
output.append(" oscillator\n");
|
output.append(" oscillator\n");
|
||||||
output.append(" frequency: ", _frequency, "\n");
|
output.append(" frequency: ", _frequency, "\n");
|
||||||
if(_note)
|
|
||||||
output.append(" note: ", _note, "\n");
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,8 +6,8 @@ struct Memory {
|
||||||
auto& size(natural size) { _size = size; return *this; }
|
auto& size(natural size) { _size = size; return *this; }
|
||||||
auto& category(string category) { _category = category; return *this; }
|
auto& category(string category) { _category = category; return *this; }
|
||||||
auto& manufacturer(string manufacturer) { _manufacturer = manufacturer; return *this; }
|
auto& manufacturer(string manufacturer) { _manufacturer = manufacturer; return *this; }
|
||||||
auto& part(string part) { _part = part; return *this; }
|
auto& model(string model) { _model = model; return *this; }
|
||||||
auto& note(string note) { _note = note; return *this; }
|
auto& identity(string identity) { _identity = identity; return *this; }
|
||||||
auto text() const -> string;
|
auto text() const -> string;
|
||||||
|
|
||||||
string _type;
|
string _type;
|
||||||
|
@ -15,17 +15,15 @@ struct Memory {
|
||||||
natural _size;
|
natural _size;
|
||||||
string _category;
|
string _category;
|
||||||
string _manufacturer;
|
string _manufacturer;
|
||||||
string _part;
|
string _model;
|
||||||
string _note;
|
string _identity;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Oscillator {
|
struct Oscillator {
|
||||||
auto& frequency(natural frequency) { _frequency = frequency; return *this; }
|
auto& frequency(natural frequency) { _frequency = frequency; return *this; }
|
||||||
auto& note(string note) { _note = note; return *this; }
|
|
||||||
auto text() const -> string;
|
auto text() const -> string;
|
||||||
|
|
||||||
natural _frequency;
|
natural _frequency;
|
||||||
string _note;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,8 +21,8 @@ auto MasterSystem::manifest() const -> string {
|
||||||
string output;
|
string output;
|
||||||
output.append("game\n");
|
output.append("game\n");
|
||||||
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
||||||
output.append(" label: ", Location::prefix(location), "\n");
|
output.append(" label: ", Location::prefix(location), "\n");
|
||||||
output.append(" name: ", Location::prefix(location), "\n");
|
output.append(" name: ", Location::prefix(location), "\n");
|
||||||
output.append(" board\n");
|
output.append(" board\n");
|
||||||
output.append(Memory{}.type("ROM").size(data.size()).category("Program").text());
|
output.append(Memory{}.type("ROM").size(data.size()).category("Program").text());
|
||||||
output.append(Memory{}.type("RAM").size(0x8000).category("Save").battery().text());
|
output.append(Memory{}.type("RAM").size(0x8000).category("Save").battery().text());
|
||||||
|
|
|
@ -71,8 +71,8 @@ auto MegaDrive::manifest() const -> string {
|
||||||
string output;
|
string output;
|
||||||
output.append("game\n");
|
output.append("game\n");
|
||||||
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
||||||
output.append(" label: ", Location::prefix(location), "\n");
|
output.append(" label: ", Location::prefix(location), "\n");
|
||||||
output.append(" name: ", Location::prefix(location), "\n");
|
output.append(" name: ", Location::prefix(location), "\n");
|
||||||
output.append(" region: ", regions.left(), "\n");
|
output.append(" region: ", regions.left(), "\n");
|
||||||
output.append(" board\n");
|
output.append(" board\n");
|
||||||
output.append(Memory{}.type("ROM").size(data.size()).category("Program").text());
|
output.append(Memory{}.type("ROM").size(data.size()).category("Program").text());
|
||||||
|
|
|
@ -26,8 +26,8 @@ auto PCEngine::manifest() const -> string {
|
||||||
string output;
|
string output;
|
||||||
output.append("game\n");
|
output.append("game\n");
|
||||||
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
||||||
output.append(" label:", Location::prefix(location), "\n");
|
output.append(" label: ", Location::prefix(location), "\n");
|
||||||
output.append(" name: ", Location::prefix(location), "\n");
|
output.append(" name: ", Location::prefix(location), "\n");
|
||||||
output.append(" board\n");
|
output.append(" board\n");
|
||||||
output.append(Memory{}.type("ROM").size(data.size()).category("Program").text());
|
output.append(Memory{}.type("ROM").size(data.size()).category("Program").text());
|
||||||
return output;
|
return output;
|
||||||
|
|
|
@ -57,12 +57,12 @@ auto SuperFamicom::manifest() const -> string {
|
||||||
|
|
||||||
string output;
|
string output;
|
||||||
output.append("game\n");
|
output.append("game\n");
|
||||||
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
||||||
output.append(" label: ", label(), "\n");
|
output.append(" label: ", label(), "\n");
|
||||||
output.append(" name: ", Location::prefix(location), "\n");
|
output.append(" name: ", Location::prefix(location), "\n");
|
||||||
output.append(" region: ", region(), "\n");
|
output.append(" region: ", region(), "\n");
|
||||||
output.append(" revision: ", revision(), "\n");
|
output.append(" revision: ", revision(), "\n");
|
||||||
output.append(" board: ", board(), "\n");
|
output.append(" board: ", board(), "\n");
|
||||||
|
|
||||||
auto board = this->board().split("-");
|
auto board = this->board().split("-");
|
||||||
|
|
||||||
|
@ -76,38 +76,38 @@ auto SuperFamicom::manifest() const -> string {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(auto size = expansionRamSize()) {
|
if(auto size = expansionRamSize()) {
|
||||||
output.append(Memory{}.type("RAM").size(size).category("Expansion").battery(battery()).text());
|
output.append(Memory{}.type("RAM").size(size).category("Save").battery(battery()).text());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(0) {
|
if(0) {
|
||||||
} else if(board(0) == "ARM") {
|
} else if(board(0) == "ARM") {
|
||||||
output.append(Memory{}.type("ROM").size(0x20000).manufacturer("SETA").part("ARM").category("Program").text());
|
output.append(Memory{}.type("ROM").size(0x20000).category("Program").manufacturer("SETA").model("ARM6").identity(firmwareARM()).text());
|
||||||
output.append(Memory{}.type("ROM").size( 0x8000).manufacturer("SETA").part("ARM").category("Data").text());
|
output.append(Memory{}.type("ROM").size( 0x8000).category("Data" ).manufacturer("SETA").model("ARM6").identity(firmwareARM()).text());
|
||||||
output.append(Memory{}.type("RAM").size( 0x4000).manufacturer("SETA").part("ARM").category("Data").text());
|
output.append(Memory{}.type("RAM").size( 0x4000).category("Data" ).manufacturer("SETA").model("ARM6").identity(firmwareARM()).text());
|
||||||
output.append(Oscillator{}.frequency(21'440'000).text());
|
output.append(Oscillator{}.frequency(21'440'000).text());
|
||||||
} else if(board(0) == "BS" && board(1) == "MCC") {
|
} else if(board(0) == "BS" && board(1) == "MCC") {
|
||||||
output.append(Memory{}.type("RAM").size(0x80000).category("Download").battery().text());
|
output.append(Memory{}.type("RAM").size(0x80000).category("Download").battery().text());
|
||||||
output.append(Memory{}.type("RTC").size(0x10).category("Time").text());
|
|
||||||
} else if(board(0) == "HITACHI") {
|
} else if(board(0) == "HITACHI") {
|
||||||
output.append(Memory{}.type("ROM").size(0xc00).manufacturer("Hitachi").part("HG51BS169").category("Data").note(firmwareHITACHI()).text());
|
output.append(Memory{}.type("ROM").size(0xc00).category("Data").manufacturer("Hitachi").model("HG51BS169").identity(firmwareHITACHI()).text());
|
||||||
output.append(Memory{}.type("RAM").size(0xc00).manufacturer("Hitachi").part("HG51BS169").category("Data").note(firmwareHITACHI()).text());
|
output.append(Memory{}.type("RAM").size(0xc00).category("Data").manufacturer("Hitachi").model("HG51BS169").identity(firmwareHITACHI()).text());
|
||||||
output.append(Oscillator{}.frequency(20'000'000).text());
|
output.append(Oscillator{}.frequency(20'000'000).text());
|
||||||
} else if(board(0) == "NEC") {
|
} else if(board(0) == "NEC") {
|
||||||
output.append(Memory{}.type("ROM").size(0x1800).manufacturer("NEC").part("uPD7725").category("Program").note(firmwareNEC()).text());
|
output.append(Memory{}.type("ROM").size(0x1800).category("Program").manufacturer("NEC").model("uPD7725").identity(firmwareNEC()).text());
|
||||||
output.append(Memory{}.type("ROM").size( 0x800).manufacturer("NEC").part("uPD7725").category("Data").note(firmwareNEC()).text());
|
output.append(Memory{}.type("ROM").size( 0x800).category("Data" ).manufacturer("NEC").model("uPD7725").identity(firmwareNEC()).text());
|
||||||
output.append(Memory{}.type("RAM").size( 0x200).manufacturer("NEC").part("uPD7725").category("Data").note(firmwareNEC()).text());
|
output.append(Memory{}.type("RAM").size( 0x200).category("Data" ).manufacturer("NEC").model("uPD7725").identity(firmwareNEC()).text());
|
||||||
output.append(Oscillator{}.frequency(7'600'000).text());
|
output.append(Oscillator{}.frequency(7'600'000).text());
|
||||||
} else if(board(0) == "NECEX") {
|
} else if(board(0) == "NECEX") {
|
||||||
output.append(Memory{}.type("ROM").size(0xc000).manufacturer("NEC").part("uPD96050").category("Program").note(firmwareNECEX()).text());
|
output.append(Memory{}.type("ROM").size(0xc000).category("Program").manufacturer("NEC").model("uPD96050").identity(firmwareNECEX()).text());
|
||||||
output.append(Memory{}.type("ROM").size(0x1000).manufacturer("NEC").part("uPD96050").category("Data").note(firmwareNECEX()).text());
|
output.append(Memory{}.type("ROM").size(0x1000).category("Data" ).manufacturer("NEC").model("uPD96050").identity(firmwareNECEX()).text());
|
||||||
output.append(Memory{}.type("RAM").size(0x1000).manufacturer("NEC").part("uPD96050").category("Data").note(firmwareNECEX()).text());
|
output.append(Memory{}.type("RAM").size(0x1000).category("Data" ).manufacturer("NEC").model("uPD96050").identity(firmwareNECEX()).text());
|
||||||
output.append(Oscillator{}.frequency(firmwareNECEX() == "ST010" ? 11'000'000 : 15'000'000).text());
|
output.append(Oscillator{}.frequency(firmwareNECEX() == "ST010" ? 11'000'000 : 15'000'000).text());
|
||||||
} else if(board(0) == "RTC") {
|
} else if(board(0) == "RTC") {
|
||||||
output.append(Memory{}.type("RTC").size(0x10).category("Time").battery().text());
|
output.append(Memory{}.type("RTC").size(0x10).category("Time").battery().text());
|
||||||
} else if(board(0) == "SA1") {
|
} else if(board(0) == "SA1") {
|
||||||
output.append(Memory{}.type("RAM").size(0x800).category("Internal").text());
|
output.append(Memory{}.type("RAM").size(0x800).category("Internal").text());
|
||||||
} else if(board(0) == "SGB") {
|
} else if(board(0) == "SGB") {
|
||||||
output.append(Memory{}.type("ROM").size(0x100).manufacturer("Nintendo").part("SGB").category("Boot").note(firmwareSGB()).text());
|
string model = firmwareSGB() == "SGB1" ? "DMG" : "MGB";
|
||||||
|
output.append(Memory{}.type("ROM").size(0x100).category("Boot").manufacturer("Nintendo").model(model).identity(firmwareSGB()).text());
|
||||||
if(firmwareSGB() == "SGB2")
|
if(firmwareSGB() == "SGB2")
|
||||||
output.append(Oscillator{}.frequency(20'971'520).text());
|
output.append(Oscillator{}.frequency(20'971'520).text());
|
||||||
} else if(board(0) == "SPC7110") {
|
} else if(board(0) == "SPC7110") {
|
||||||
|
|
|
@ -21,8 +21,8 @@ auto SuperGrafx::manifest() const -> string {
|
||||||
string output;
|
string output;
|
||||||
output.append("game\n");
|
output.append("game\n");
|
||||||
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
output.append(" sha256: ", Hash::SHA256(data).digest(), "\n");
|
||||||
output.append(" label: ", Location::prefix(location), "\n");
|
output.append(" label: ", Location::prefix(location), "\n");
|
||||||
output.append(" name: ", Location::prefix(location), "\n");
|
output.append(" name: ", Location::prefix(location), "\n");
|
||||||
output.append(" board\n");
|
output.append(" board\n");
|
||||||
output.append(Memory{}.type("ROM").size(data.size()).category("Program").text());
|
output.append(Memory{}.type("ROM").size(data.size()).category("Program").text());
|
||||||
return output;
|
return output;
|
||||||
|
|
Loading…
Reference in New Issue