mirror of https://github.com/bsnes-emu/bsnes.git
Update to v106r13 release.
byuu says: Changelog: - game/memory/category → game/memory/content - game/memory/model → game/memory/architecture - game/memory/identity → game/memory/identifier - Super Famicom: memory/content=Bitmap → memory/content=Save - Super Famicom: memory/architecture=DMG,MGB → memory/architecture=LR35902 The game manifest field names are now officially set in stone. I won't change them again, I'll only add new fields if required. As for the values in the field, I'm still undecided on the manufacturer of the ST018, and I could be talked into different identifiers for the Super Game Boy (SGB1/SGB2, DMG/MGB, or just ICD(2)?) The board manifest format is still in flux, as is the choice of what to name firmware files (it's between manufacturer and architecture, where I'm leaning toward the latter currently.) Board memory to Game memory mappings will require both the manufacturer and architecture fields to match. I'll be updating doc.byuu.org soon with the finalized game manifest format.
This commit is contained in:
parent
985610c167
commit
eaa2c1f6c0
|
@ -129,10 +129,10 @@ auto ListWindow::loadDatabase(string location) -> void {
|
||||||
component.memory.type = object["type"].text();
|
component.memory.type = object["type"].text();
|
||||||
component.memory.battery = (bool)object["type/battery"];
|
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.content = object["content"].text();
|
||||||
component.memory.manufacturer = object["manufacturer"].text();
|
component.memory.manufacturer = object["manufacturer"].text();
|
||||||
component.memory.model = object["model"].text();
|
component.memory.architecture = object["architecture"].text();
|
||||||
component.memory.identity = object["identity"].text();
|
component.memory.identifier = object["identifier"].text();
|
||||||
}
|
}
|
||||||
if(object.name() == "oscillator") {
|
if(object.name() == "oscillator") {
|
||||||
component.type = Component::Type::Oscillator;
|
component.type = Component::Type::Oscillator;
|
||||||
|
@ -187,13 +187,13 @@ auto ListWindow::saveDatabase(string location) -> void {
|
||||||
if(component.memory.battery)
|
if(component.memory.battery)
|
||||||
fp.print(" battery\n");
|
fp.print(" battery\n");
|
||||||
fp.print(" size: ", component.memory.size, "\n");
|
fp.print(" size: ", component.memory.size, "\n");
|
||||||
fp.print(" category: ", component.memory.category, "\n");
|
fp.print(" content: ", component.memory.content, "\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.model)
|
if(component.memory.architecture)
|
||||||
fp.print(" model: ", component.memory.model, "\n");
|
fp.print(" architecture: ", component.memory.architecture, "\n");
|
||||||
if(component.memory.identity)
|
if(component.memory.identifier)
|
||||||
fp.print(" identity: ", component.memory.identity, "\n");
|
fp.print(" identifier: ", component.memory.identifier, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(component.type == Component::Type::Oscillator) {
|
if(component.type == Component::Type::Oscillator) {
|
||||||
|
@ -369,13 +369,13 @@ auto GameWindow::reloadList() -> void {
|
||||||
item.setText({index, "Memory"});
|
item.setText({index, "Memory"});
|
||||||
item.append(TreeViewItem().setText({"Type: ", component.memory.type, component.memory.battery ? " + Battery" : ""}));
|
item.append(TreeViewItem().setText({"Type: ", component.memory.type, component.memory.battery ? " + Battery" : ""}));
|
||||||
item.append(TreeViewItem().setText({"Size: ", component.memory.size}));
|
item.append(TreeViewItem().setText({"Size: ", component.memory.size}));
|
||||||
item.append(TreeViewItem().setText({"Category: ", component.memory.category}));
|
item.append(TreeViewItem().setText({"Content: ", component.memory.content}));
|
||||||
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.model)
|
if(component.memory.architecture)
|
||||||
item.append(TreeViewItem().setText({"Model: ", component.memory.model}));
|
item.append(TreeViewItem().setText({"Architecture: ", component.memory.architecture}));
|
||||||
if(component.memory.identity)
|
if(component.memory.identifier)
|
||||||
item.append(TreeViewItem().setText({"Identity: ", component.memory.identity}));
|
item.append(TreeViewItem().setText({"Identifier: ", component.memory.identifier}));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(component.type == Component::Type::Oscillator) {
|
if(component.type == Component::Type::Oscillator) {
|
||||||
|
@ -460,19 +460,19 @@ MemoryWindow::MemoryWindow() {
|
||||||
typeEdit.onChange([&] { modified = true, updateWindow(); });
|
typeEdit.onChange([&] { modified = true, updateWindow(); });
|
||||||
sizeLabel.setText("Size:").setAlignment(1.0);
|
sizeLabel.setText("Size:").setAlignment(1.0);
|
||||||
sizeEdit.onChange([&] { modified = true, updateWindow(); });
|
sizeEdit.onChange([&] { modified = true, updateWindow(); });
|
||||||
categoryLabel.setText("Category:").setAlignment(1.0);
|
contentLabel.setText("Content:").setAlignment(1.0);
|
||||||
categoryEdit.append(ComboEditItem().setText("Program"));
|
contentEdit.append(ComboEditItem().setText("Program"));
|
||||||
categoryEdit.append(ComboEditItem().setText("Data"));
|
contentEdit.append(ComboEditItem().setText("Data"));
|
||||||
categoryEdit.append(ComboEditItem().setText("Character"));
|
contentEdit.append(ComboEditItem().setText("Character"));
|
||||||
categoryEdit.append(ComboEditItem().setText("Save"));
|
contentEdit.append(ComboEditItem().setText("Save"));
|
||||||
categoryEdit.append(ComboEditItem().setText("Time"));
|
contentEdit.append(ComboEditItem().setText("Time"));
|
||||||
categoryEdit.onChange([&] { modified = true, updateWindow(); });
|
contentEdit.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(); });
|
||||||
modelLabel.setText("Model:").setAlignment(1.0);
|
architectureLabel.setText("Architecture:").setAlignment(1.0);
|
||||||
modelEdit.onChange([&] { modified = true, updateWindow(); });
|
architectureEdit.onChange([&] { modified = true, updateWindow(); });
|
||||||
identityLabel.setText("Identity:").setAlignment(1.0);
|
identifierLabel.setText("Identifier:").setAlignment(1.0);
|
||||||
identityEdit.onChange([&] { modified = true, updateWindow(); });
|
identifierEdit.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(); });
|
||||||
|
@ -490,10 +490,10 @@ auto MemoryWindow::show(Memory memory) -> void {
|
||||||
|
|
||||||
typeEdit.setText(memory.type);
|
typeEdit.setText(memory.type);
|
||||||
sizeEdit.setText(memory.size);
|
sizeEdit.setText(memory.size);
|
||||||
categoryEdit.setText(memory.category);
|
contentEdit.setText(memory.content);
|
||||||
manufacturerEdit.setText(memory.manufacturer);
|
manufacturerEdit.setText(memory.manufacturer);
|
||||||
modelEdit.setText(memory.model);
|
architectureEdit.setText(memory.architecture);
|
||||||
identityEdit.setText(memory.identity);
|
identifierEdit.setText(memory.identifier);
|
||||||
batteryOption.setChecked(memory.battery);
|
batteryOption.setChecked(memory.battery);
|
||||||
|
|
||||||
updateWindow();
|
updateWindow();
|
||||||
|
@ -506,10 +506,10 @@ auto MemoryWindow::show(Memory memory) -> void {
|
||||||
auto MemoryWindow::accept() -> void {
|
auto MemoryWindow::accept() -> void {
|
||||||
memory.type = typeEdit.text().strip();
|
memory.type = typeEdit.text().strip();
|
||||||
memory.size = sizeEdit.text().strip();
|
memory.size = sizeEdit.text().strip();
|
||||||
memory.category = categoryEdit.text().strip();
|
memory.content = contentEdit.text().strip();
|
||||||
memory.manufacturer = manufacturerEdit.text().strip();
|
memory.manufacturer = manufacturerEdit.text().strip();
|
||||||
memory.model = modelEdit.text().strip();
|
memory.architecture = architectureEdit.text().strip();
|
||||||
memory.identity = identityEdit.text().strip();
|
memory.identifier = identifierEdit.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};
|
||||||
|
@ -539,10 +539,10 @@ auto MemoryWindow::updateWindow() -> void {
|
||||||
bool valid = true;
|
bool valid = true;
|
||||||
typeEdit.setBackgroundColor(typeEdit.text().strip() ? Color{} : (valid = false, Color{255, 224, 224}));
|
typeEdit.setBackgroundColor(typeEdit.text().strip() ? Color{} : (valid = false, Color{255, 224, 224}));
|
||||||
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}));
|
contentEdit.setBackgroundColor(contentEdit.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}));
|
||||||
modelEdit.setBackgroundColor(modelEdit.text().strip() ? Color{} : (Color{255, 255, 240}));
|
architectureEdit.setBackgroundColor(architectureEdit.text().strip() ? Color{} : (Color{255, 255, 240}));
|
||||||
identityEdit.setBackgroundColor(identityEdit.text().strip() ? Color{} : (Color{255, 255, 240}));
|
identifierEdit.setBackgroundColor(identifierEdit.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"});
|
||||||
|
|
|
@ -2,10 +2,10 @@ struct Memory {
|
||||||
string type;
|
string type;
|
||||||
boolean battery;
|
boolean battery;
|
||||||
string size;
|
string size;
|
||||||
string category;
|
string content;
|
||||||
string manufacturer;
|
string manufacturer;
|
||||||
string model;
|
string architecture;
|
||||||
string identity;
|
string identifier;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Oscillator {
|
struct Oscillator {
|
||||||
|
@ -136,18 +136,18 @@ private:
|
||||||
ComboEdit typeEdit{&infoLayout, Size{~0, 0}};
|
ComboEdit typeEdit{&infoLayout, Size{~0, 0}};
|
||||||
Label sizeLabel{&infoLayout, Size{0, 0}};
|
Label sizeLabel{&infoLayout, Size{0, 0}};
|
||||||
LineEdit sizeEdit{&infoLayout, Size{~0, 0}};
|
LineEdit sizeEdit{&infoLayout, Size{~0, 0}};
|
||||||
HorizontalLayout categoryLayout{&layout, Size{~0, 0}};
|
HorizontalLayout contentLayout{&layout, Size{~0, 0}};
|
||||||
Label categoryLabel{&categoryLayout, Size{80, 0}};
|
Label contentLabel{&contentLayout, Size{80, 0}};
|
||||||
ComboEdit categoryEdit{&categoryLayout, Size{~0, 0}};
|
ComboEdit contentEdit{&contentLayout, Size{~0, 0}};
|
||||||
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 modelLayout{&layout, Size{~0, 0}};
|
HorizontalLayout architectureLayout{&layout, Size{~0, 0}};
|
||||||
Label modelLabel{&modelLayout, Size{80, 0}};
|
Label architectureLabel{&architectureLayout, Size{80, 0}};
|
||||||
LineEdit modelEdit{&modelLayout, Size{~0, 0}};
|
LineEdit architectureEdit{&architectureLayout, Size{~0, 0}};
|
||||||
HorizontalLayout identityLayout{&layout, Size{~0, 0}};
|
HorizontalLayout identifierLayout{&layout, Size{~0, 0}};
|
||||||
Label identityLabel{&identityLayout, Size{80, 0}};
|
Label identifierLabel{&identifierLayout, Size{80, 0}};
|
||||||
LineEdit identityEdit{&identityLayout, Size{~0, 0}};
|
LineEdit identifierEdit{&identifierLayout, 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}};
|
||||||
|
|
|
@ -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.12";
|
static const string Version = "106.13";
|
||||||
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/";
|
||||||
|
|
|
@ -17,10 +17,10 @@ struct Game {
|
||||||
string type;
|
string type;
|
||||||
boolean battery;
|
boolean battery;
|
||||||
natural size;
|
natural size;
|
||||||
string category;
|
string content;
|
||||||
string manufacturer;
|
string manufacturer;
|
||||||
string model;
|
string architecture;
|
||||||
string identity;
|
string identifier;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Oscillator {
|
struct Oscillator {
|
||||||
|
@ -55,10 +55,10 @@ auto Game::load(string_view text) -> void {
|
||||||
memory.type = node["type"].text();
|
memory.type = node["type"].text();
|
||||||
memory.battery = (bool)node["type/battery"];
|
memory.battery = (bool)node["type/battery"];
|
||||||
memory.size = node["size"].natural();
|
memory.size = node["size"].natural();
|
||||||
memory.category = node["category"].text();
|
memory.content = node["content"].text();
|
||||||
memory.manufacturer = node["manufacturer"].text();
|
memory.manufacturer = node["manufacturer"].text();
|
||||||
memory.model = node["model"].text();
|
memory.architecture = node["architecture"].text();
|
||||||
memory.identity = node["identity"].text();
|
memory.identifier = node["identifier"].text();
|
||||||
memoryList.append(memory);
|
memoryList.append(memory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,16 +74,16 @@ auto Game::memory(Markup::Node node) -> maybe<Memory> {
|
||||||
for(auto& memory : memoryList) {
|
for(auto& memory : memoryList) {
|
||||||
auto type = node["type"].text();
|
auto type = node["type"].text();
|
||||||
auto size = node["size"].natural();
|
auto size = node["size"].natural();
|
||||||
auto category = node["category"].text();
|
auto content = node["content"].text();
|
||||||
auto manufacturer = node["manufacturer"].text();
|
auto manufacturer = node["manufacturer"].text();
|
||||||
auto model = node["model"].text();
|
auto architecture = node["architecture"].text();
|
||||||
auto identity = node["identity"].text();
|
auto identifier = node["identifier"].text();
|
||||||
if(type && type != memory.type) continue;
|
if(type && type != memory.type) continue;
|
||||||
if(size && size != memory.size) continue;
|
if(size && size != memory.size) continue;
|
||||||
if(category && category != memory.category) continue;
|
if(content && content != memory.content) continue;
|
||||||
if(manufacturer && manufacturer != memory.manufacturer) continue;
|
if(manufacturer && manufacturer != memory.manufacturer) continue;
|
||||||
if(model && model != memory.model) continue;
|
if(architecture && architecture != memory.architecture) continue;
|
||||||
if(identity && identity != memory.identity) continue;
|
if(identifier && identifier != memory.identifier) continue;
|
||||||
return memory;
|
return memory;
|
||||||
}
|
}
|
||||||
return nothing;
|
return nothing;
|
||||||
|
@ -95,8 +95,8 @@ auto Game::oscillator(natural index) -> maybe<Oscillator> {
|
||||||
}
|
}
|
||||||
|
|
||||||
auto Game::Memory::name() const -> string {
|
auto Game::Memory::name() const -> string {
|
||||||
if(manufacturer) return string{manufacturer, ".", category, ".", type}.downcase();
|
if(manufacturer) return string{manufacturer, ".", content, ".", type}.downcase();
|
||||||
return string{category, ".", type}.downcase();
|
return string{content, ".", type}.downcase();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
database
|
database
|
||||||
revision: 2018-04-03
|
revision: 2018-04-08
|
||||||
|
|
||||||
//Boards (Production)
|
//Boards (Production)
|
||||||
|
|
||||||
|
@ -533,86 +533,86 @@ board: SHVC-YJ0N-01
|
||||||
//Boards (Generic)
|
//Boards (Generic)
|
||||||
|
|
||||||
database
|
database
|
||||||
revision: 2018-04-03
|
revision: 2018-04-08
|
||||||
|
|
||||||
board: ARM-LOROM-RAM
|
board: ARM-LOROM-RAM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
||||||
map address=40-6f,c0-ef:0000-7fff mask=0x8000
|
map address=40-6f,c0-ef:0000-7fff mask=0x8000
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=70-7d,f0-ff:0000-ffff
|
map address=70-7d,f0-ff:0000-ffff
|
||||||
armdsp
|
armdsp
|
||||||
map address=00-3f,80-bf:3800-38ff
|
map address=00-3f,80-bf:3800-38ff
|
||||||
memory type=ROM category=Program manufacturer=ARM
|
memory type=ROM content=Program manufacturer=SETA
|
||||||
memory type=ROM category=Data manufacturer=ARM
|
memory type=ROM content=Data manufacturer=SETA
|
||||||
memory type=RAM category=Data manufacturer=ARM
|
memory type=RAM content=Data manufacturer=SETA
|
||||||
oscillator
|
oscillator
|
||||||
|
|
||||||
board: BS-HIROM-RAM
|
board: BS-HIROM-RAM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-1f,80-9f:8000-ffff
|
map address=00-1f,80-9f:8000-ffff
|
||||||
map address=40-5f,c0-df:0000-ffff
|
map address=40-5f,c0-df:0000-ffff
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
||||||
bsmemory
|
bsmemory
|
||||||
map address=20-3f,a0-bf:8000-ffff
|
map address=20-3f,a0-bf:8000-ffff
|
||||||
map address=60-7d,e0-ff:0000-ffff
|
map address=60-7d,e0-ff:0000-ffff
|
||||||
|
|
||||||
board: BS-LOROM-RAM
|
board: BS-LOROM-RAM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-1f:8000-ffff base=0x000000 mask=0x8000
|
map address=00-1f:8000-ffff base=0x000000 mask=0x8000
|
||||||
map address=20-3f:8000-ffff base=0x100000 mask=0x8000
|
map address=20-3f:8000-ffff base=0x100000 mask=0x8000
|
||||||
map address=80-9f:8000-ffff base=0x200000 mask=0x8000
|
map address=80-9f:8000-ffff base=0x200000 mask=0x8000
|
||||||
map address=a0-bf:8000-ffff base=0x100000 mask=0x8000
|
map address=a0-bf:8000-ffff base=0x100000 mask=0x8000
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=70-7d,f0-ff:0000-7fff mask=0x8000
|
map address=70-7d,f0-ff:0000-7fff mask=0x8000
|
||||||
bsmemory
|
bsmemory
|
||||||
map address=c0-ef:0000-ffff
|
map address=c0-ef:0000-ffff
|
||||||
|
|
||||||
board: BS-MCC-RAM
|
board: BS-MCC-RAM
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=10-1f:5000-5fff mask=0xf000
|
map address=10-1f:5000-5fff mask=0xf000
|
||||||
mcc
|
mcc
|
||||||
map address=00-0f:5000
|
map address=00-0f:5000
|
||||||
map=mcu address=00-3f,80-bf:8000-ffff mask=0x408000
|
map=mcu address=00-3f,80-bf:8000-ffff mask=0x408000
|
||||||
map=mcu address=40-7d,c0-ff:0000-ffff
|
map=mcu address=40-7d,c0-ff:0000-ffff
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
memory type=RAM category=Download
|
memory type=RAM content=Download
|
||||||
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
||||||
bsmemory
|
bsmemory
|
||||||
|
|
||||||
board: BS-SA1-RAM
|
board: BS-SA1-RAM
|
||||||
sa1
|
sa1
|
||||||
map address=00-3f,80-bf:2200-23ff
|
map address=00-3f,80-bf:2200-23ff
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff mask=0x408000
|
map address=00-3f,80-bf:8000-ffff mask=0x408000
|
||||||
map address=c0-ff:0000-ffff
|
map address=c0-ff:0000-ffff
|
||||||
memory type=RAM category=Bitmap
|
memory type=RAM content=Save
|
||||||
map address=00-3f,80-bf:6000-7fff size=0x2000
|
map address=00-3f,80-bf:6000-7fff size=0x2000
|
||||||
map address=40-4f:0000-ffff
|
map address=40-4f:0000-ffff
|
||||||
memory type=RAM category=Internal
|
memory type=RAM content=Internal
|
||||||
map address=00-3f,80-bf:3000-37ff size=0x800
|
map address=00-3f,80-bf:3000-37ff size=0x800
|
||||||
bsmemory
|
bsmemory
|
||||||
|
|
||||||
board: HIROM
|
board: HIROM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff
|
map address=00-3f,80-bf:8000-ffff
|
||||||
map address=40-7d,c0-ff:0000-ffff
|
map address=40-7d,c0-ff:0000-ffff
|
||||||
|
|
||||||
board: HIROM-RAM
|
board: HIROM-RAM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff
|
map address=00-3f,80-bf:8000-ffff
|
||||||
map address=40-7d,c0-ff:0000-ffff
|
map address=40-7d,c0-ff:0000-ffff
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
||||||
|
|
||||||
board: HIROMEX-RAM
|
board: HIROMEX-RAM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f:8000-ffff base=0x400000
|
map address=00-3f:8000-ffff base=0x400000
|
||||||
map address=40-7d:0000-ffff base=0x400000
|
map address=40-7d:0000-ffff base=0x400000
|
||||||
map address=80-bf:8000-ffff mask=0xc00000
|
map address=80-bf:8000-ffff mask=0xc00000
|
||||||
map address=c0-ff:0000-ffff mask=0xc00000
|
map address=c0-ff:0000-ffff mask=0xc00000
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
||||||
map address=70-7d:0000-7fff
|
map address=70-7d:0000-7fff
|
||||||
|
|
||||||
|
@ -620,113 +620,113 @@ board: HITACHI-LOROM
|
||||||
hitachidsp model=HG51BS169
|
hitachidsp model=HG51BS169
|
||||||
map address=00-3f,80-bf:6c00-6fff,7c00-7fff
|
map address=00-3f,80-bf:6c00-6fff,7c00-7fff
|
||||||
map address=70-77:0000-7fff
|
map address=70-77:0000-7fff
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
||||||
memory type=ROM category=Data manufacturer=Hitachi
|
memory type=ROM content=Data manufacturer=Hitachi
|
||||||
memory type=RAM category=Data manufacturer=Hitachi
|
memory type=RAM content=Data manufacturer=Hitachi
|
||||||
map address=00-3f,80-bf:6000-6bff,7000-7bff mask=0xf000
|
map address=00-3f,80-bf:6000-6bff,7000-7bff mask=0xf000
|
||||||
oscillator
|
oscillator
|
||||||
|
|
||||||
board: LOROM
|
board: LOROM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
||||||
|
|
||||||
board: LOROM-RAM
|
board: LOROM-RAM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=70-7d,f0-ff:0000-ffff mask=0x8000
|
map address=70-7d,f0-ff:0000-ffff mask=0x8000
|
||||||
|
|
||||||
board: LOROMEX-RAM
|
board: LOROMEX-RAM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=70-7d,f0-ff:0000-7fff mask=0x8000
|
map address=70-7d,f0-ff:0000-7fff mask=0x8000
|
||||||
|
|
||||||
board: NEC-HIROM
|
board: NEC-HIROM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff
|
map address=00-3f,80-bf:8000-ffff
|
||||||
map address=40-7d,c0-ff:0000-ffff
|
map address=40-7d,c0-ff:0000-ffff
|
||||||
necdsp model=uPD7725
|
necdsp model=uPD7725
|
||||||
map address=00-1f,80-9f:6000-7fff mask=0xfff
|
map address=00-1f,80-9f:6000-7fff mask=0xfff
|
||||||
memory type=ROM category=Program manufacturer=NEC
|
memory type=ROM content=Program manufacturer=NEC
|
||||||
memory type=ROM category=Data manufacturer=NEC
|
memory type=ROM content=Data manufacturer=NEC
|
||||||
memory type=RAM category=Data manufacturer=NEC
|
memory type=RAM content=Data manufacturer=NEC
|
||||||
oscillator
|
oscillator
|
||||||
|
|
||||||
board: NEC-HIROM-RAM
|
board: NEC-HIROM-RAM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff
|
map address=00-3f,80-bf:8000-ffff
|
||||||
map address=40-7d,c0-ff:0000-ffff
|
map address=40-7d,c0-ff:0000-ffff
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
||||||
necdsp model=uPD7725
|
necdsp model=uPD7725
|
||||||
map address=00-1f,80-9f:6000-7fff mask=0xfff
|
map address=00-1f,80-9f:6000-7fff mask=0xfff
|
||||||
memory type=ROM category=Program manufacturer=NEC
|
memory type=ROM content=Program manufacturer=NEC
|
||||||
memory type=ROM category=Data manufacturer=NEC
|
memory type=ROM content=Data manufacturer=NEC
|
||||||
memory type=RAM category=Data manufacturer=NEC
|
memory type=RAM content=Data manufacturer=NEC
|
||||||
oscillator
|
oscillator
|
||||||
|
|
||||||
board: NEC-LOROM
|
board: NEC-LOROM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-1f,80-9f:8000-ffff mask=0x8000
|
map address=00-1f,80-9f:8000-ffff mask=0x8000
|
||||||
necdsp model=uPD7725
|
necdsp model=uPD7725
|
||||||
map address=30-3f,b0-bf:8000-ffff mask=0x3fff
|
map address=30-3f,b0-bf:8000-ffff mask=0x3fff
|
||||||
memory type=ROM category=Program manufacturer=NEC
|
memory type=ROM content=Program manufacturer=NEC
|
||||||
memory type=ROM category=Data manufacturer=NEC
|
memory type=ROM content=Data manufacturer=NEC
|
||||||
memory type=RAM category=Data manufacturer=NEC
|
memory type=RAM content=Data manufacturer=NEC
|
||||||
oscillator
|
oscillator
|
||||||
|
|
||||||
board: NEC-LOROM-RAM
|
board: NEC-LOROM-RAM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-1f,80-9f:8000-ffff mask=0x8000
|
map address=00-1f,80-9f:8000-ffff mask=0x8000
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=70-7d,f0-ff:0000-ffff
|
map address=70-7d,f0-ff:0000-ffff
|
||||||
necdsp model=uPD7725
|
necdsp model=uPD7725
|
||||||
map address=20-3f,a0-bf:8000-ffff mask=0x3fff
|
map address=20-3f,a0-bf:8000-ffff mask=0x3fff
|
||||||
memory type=ROM category=Program manufacturer=NEC
|
memory type=ROM content=Program manufacturer=NEC
|
||||||
memory type=ROM category=Data manufacturer=NEC
|
memory type=ROM content=Data manufacturer=NEC
|
||||||
memory type=RAM category=Data manufacturer=NEC
|
memory type=RAM content=Data manufacturer=NEC
|
||||||
oscillator
|
oscillator
|
||||||
|
|
||||||
board: NEC-LOROMEX-RAM
|
board: NEC-LOROMEX-RAM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=70-7d,f0-ff:0000-7fff mask=0x8000
|
map address=70-7d,f0-ff:0000-7fff mask=0x8000
|
||||||
necdsp model=uPD7725
|
necdsp model=uPD7725
|
||||||
map address=60-6f,e0-ef:0000-7fff mask=0x3fff
|
map address=60-6f,e0-ef:0000-7fff mask=0x3fff
|
||||||
memory type=ROM category=Program manufacturer=NEC
|
memory type=ROM content=Program manufacturer=NEC
|
||||||
memory type=ROM category=Data manufacturer=NEC
|
memory type=ROM content=Data manufacturer=NEC
|
||||||
memory type=RAM category=Data manufacturer=NEC
|
memory type=RAM content=Data manufacturer=NEC
|
||||||
oscillator
|
oscillator
|
||||||
|
|
||||||
board: NECEX-LOROM-BATTERY
|
board: NECEX-LOROM-BATTERY
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
||||||
necdsp model=uPD96050
|
necdsp model=uPD96050
|
||||||
map address=60-67,e0-e7:0000-3fff
|
map address=60-67,e0-e7:0000-3fff
|
||||||
memory type=ROM category=Program manufacturer=NEC
|
memory type=ROM content=Program manufacturer=NEC
|
||||||
memory type=ROM category=Data manufacturer=NEC
|
memory type=ROM content=Data manufacturer=NEC
|
||||||
memory type=RAM category=Data manufacturer=NEC
|
memory type=RAM content=Data manufacturer=NEC
|
||||||
map address=68-6f,e8-ef:0000-7fff mask=0x8000
|
map address=68-6f,e8-ef:0000-7fff mask=0x8000
|
||||||
oscillator
|
oscillator
|
||||||
|
|
||||||
board: OBC1-LOROM-RAM
|
board: OBC1-LOROM-RAM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
||||||
obc1
|
obc1
|
||||||
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
||||||
map address=70-71,f0-f1:6000-7fff,e000-ffff mask=0xe000
|
map address=70-71,f0-f1:6000-7fff,e000-ffff mask=0xe000
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
|
|
||||||
board: RTC-HIROMEX-RAM
|
board: RTC-HIROMEX-RAM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f:8000-ffff base=0x400000
|
map address=00-3f:8000-ffff base=0x400000
|
||||||
map address=40-7d:0000-ffff base=0x400000
|
map address=40-7d:0000-ffff base=0x400000
|
||||||
map address=80-bf:8000-ffff mask=0xc00000
|
map address=80-bf:8000-ffff mask=0xc00000
|
||||||
map address=c0-ff:0000-ffff mask=0xc00000
|
map address=c0-ff:0000-ffff mask=0xc00000
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
||||||
map address=70-7d:0000-7fff
|
map address=70-7d:0000-7fff
|
||||||
sharprtc
|
sharprtc
|
||||||
|
@ -736,39 +736,39 @@ board: RTC-HIROMEX-RAM
|
||||||
board: SA1-RAM
|
board: SA1-RAM
|
||||||
sa1
|
sa1
|
||||||
map address=00-3f,80-bf:2200-23ff
|
map address=00-3f,80-bf:2200-23ff
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff mask=0x408000
|
map address=00-3f,80-bf:8000-ffff mask=0x408000
|
||||||
map address=c0-ff:0000-ffff
|
map address=c0-ff:0000-ffff
|
||||||
memory type=RAM category=Bitmap
|
memory type=RAM content=Save
|
||||||
map address=00-3f,80-bf:6000-7fff size=0x2000
|
map address=00-3f,80-bf:6000-7fff size=0x2000
|
||||||
map address=40-4f:0000-ffff
|
map address=40-4f:0000-ffff
|
||||||
memory type=RAM category=Internal
|
memory type=RAM content=Internal
|
||||||
map address=00-3f,80-bf:3000-37ff size=0x800
|
map address=00-3f,80-bf:3000-37ff size=0x800
|
||||||
|
|
||||||
board: SDD1
|
board: SDD1
|
||||||
sdd1
|
sdd1
|
||||||
map address=00-3f,80-bf:4800-480f
|
map address=00-3f,80-bf:4800-480f
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff
|
map address=00-3f,80-bf:8000-ffff
|
||||||
map address=c0-ff:0000-ffff
|
map address=c0-ff:0000-ffff
|
||||||
|
|
||||||
board: SDD1-RAM
|
board: SDD1-RAM
|
||||||
sdd1
|
sdd1
|
||||||
map address=00-3f,80-bf:4800-480f
|
map address=00-3f,80-bf:4800-480f
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff
|
map address=00-3f,80-bf:8000-ffff
|
||||||
map address=c0-ff:0000-ffff
|
map address=c0-ff:0000-ffff
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
||||||
map address=70-73:0000-ffff mask=0x8000
|
map address=70-73:0000-ffff mask=0x8000
|
||||||
|
|
||||||
board: SGB-LOROM
|
board: SGB-LOROM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
||||||
map address=40-7d,c0-ff:0000-7fff mask=0x8000
|
map address=40-7d,c0-ff:0000-7fff mask=0x8000
|
||||||
icd revision=2
|
icd revision=2
|
||||||
map address=00-3f,80-bf:6000-67ff,7000-7fff
|
map address=00-3f,80-bf:6000-67ff,7000-7fff
|
||||||
memory type=ROM category=Boot manufacturer=Nintendo
|
memory type=ROM content=Boot manufacturer=Nintendo
|
||||||
oscillator
|
oscillator
|
||||||
gameboy
|
gameboy
|
||||||
|
|
||||||
|
@ -778,9 +778,9 @@ board: SPC7110-RAM
|
||||||
map address=50,58:0000-ffff
|
map address=50,58:0000-ffff
|
||||||
map type=MCU address=00-3f,80-bf:8000-ffff mask=0x800000
|
map type=MCU address=00-3f,80-bf:8000-ffff mask=0x800000
|
||||||
map type=MCU address=c0-ff:0000-ffff mask=0xc00000
|
map type=MCU address=c0-ff:0000-ffff mask=0xc00000
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
memory type=ROM category=Data
|
memory type=ROM content=Data
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
||||||
|
|
||||||
board: SPC7110-RTC-RAM
|
board: SPC7110-RTC-RAM
|
||||||
|
@ -789,35 +789,35 @@ board: SPC7110-RTC-RAM
|
||||||
map address=50,58:0000-ffff
|
map address=50,58:0000-ffff
|
||||||
map type=MCU address=00-3f,80-bf:8000-ffff mask=0x800000
|
map type=MCU address=00-3f,80-bf:8000-ffff mask=0x800000
|
||||||
map type=MCU address=c0-ff:0000-ffff mask=0xc00000
|
map type=MCU address=c0-ff:0000-ffff mask=0xc00000
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
memory type=ROM category=Data
|
memory type=ROM content=Data
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
||||||
epsonrtc
|
epsonrtc
|
||||||
map address=00-3f,80-bf:4800-4842
|
map address=00-3f,80-bf:4800-4842
|
||||||
memory type=RTC manufacturer=Epson
|
memory type=RTC manufacturer=Epson
|
||||||
|
|
||||||
board: ST-LOROM
|
board: ST-LOROM
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-1f,80-9f:8000-ffff mask=0x8000
|
map address=00-1f,80-9f:8000-ffff mask=0x8000
|
||||||
sufamiturbo
|
sufamiturbo
|
||||||
memory type=ROM category=Program
|
rom
|
||||||
map address=20-3f,a0-bf:8000-ffff mask=0x8000
|
map address=20-3f,a0-bf:8000-ffff mask=0x8000
|
||||||
memory type=RAM category=Save
|
ram
|
||||||
map address=60-6f,e0-ef:0000-ffff
|
map address=60-6f,e0-ef:0000-ffff
|
||||||
sufamiturbo
|
sufamiturbo
|
||||||
memory type=ROM category=Program
|
rom
|
||||||
map address=40-5f,c0-df:0000-ffff mask=0x8000
|
map address=40-5f,c0-df:0000-ffff mask=0x8000
|
||||||
memory type=RAM category=Save
|
ram
|
||||||
map address=70-7d,f0-ff:0000-ffff
|
map address=70-7d,f0-ff:0000-ffff
|
||||||
|
|
||||||
board: SUPERFX-RAM
|
board: SUPERFX-RAM
|
||||||
superfx
|
superfx
|
||||||
map address=00-3f,80-bf:3000-34ff
|
map address=00-3f,80-bf:3000-34ff
|
||||||
memory type=ROM category=Program
|
memory type=ROM content=Program
|
||||||
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
||||||
map address=40-5f,c0-df:0000-ffff
|
map address=40-5f,c0-df:0000-ffff
|
||||||
memory type=RAM category=Save
|
memory type=RAM content=Save
|
||||||
map address=00-3f,80-bf:6000-7fff size=0x2000
|
map address=00-3f,80-bf:6000-7fff size=0x2000
|
||||||
map address=70-71,f0-f1:0000-ffff
|
map address=70-71,f0-f1:0000-ffff
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ auto BSMemory::manifest() const -> string {
|
||||||
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()).content("Program").text());
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -161,11 +161,11 @@ auto Famicom::manifest() const -> string {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(prgrom) output.append(Memory{}.type("ROM").size(prgrom).category("Program").text());
|
if(prgrom) output.append(Memory{}.type("ROM").size(prgrom).content("Program").text());
|
||||||
if(prgram) output.append(Memory{}.type("RAM").size(prgram).category("Save").battery().text());
|
if(prgram) output.append(Memory{}.type("RAM").size(prgram).content("Save").battery().text());
|
||||||
|
|
||||||
if(chrrom) output.append(Memory{}.type("ROM").size(chrrom).category("Character").text());
|
if(chrrom) output.append(Memory{}.type("ROM").size(chrrom).content("Character").text());
|
||||||
if(chrram) output.append(Memory{}.type("RAM").size(chrram).category("Character").text());
|
if(chrram) output.append(Memory{}.type("RAM").size(chrram).content("Character").text());
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,14 +53,14 @@ auto GameBoyAdvance::manifest() const -> string {
|
||||||
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()).content("Program").text());
|
||||||
if(!list);
|
if(!list);
|
||||||
else if(list.left().beginsWith("SRAM_V" )) output.append(Memory{}.type("RAM" ).size( 0x8000).category("Save").text());
|
else if(list.left().beginsWith("SRAM_V" )) output.append(Memory{}.type("RAM" ).size( 0x8000).content("Save").text());
|
||||||
else if(list.left().beginsWith("SRAM_F_V" )) output.append(Memory{}.type("RAM" ).size( 0x8000).category("Save").text());
|
else if(list.left().beginsWith("SRAM_F_V" )) output.append(Memory{}.type("RAM" ).size( 0x8000).content("Save").text());
|
||||||
else if(list.left().beginsWith("EEPROM_V" )) output.append(Memory{}.type("EEPROM").size( 0x0).category("Save").text());
|
else if(list.left().beginsWith("EEPROM_V" )) output.append(Memory{}.type("EEPROM").size( 0x0).content("Save").text());
|
||||||
else if(list.left().beginsWith("FLASH_V" )) output.append(Memory{}.type("Flash" ).size(0x10000).category("Save").text());
|
else if(list.left().beginsWith("FLASH_V" )) output.append(Memory{}.type("Flash" ).size(0x10000).content("Save").text());
|
||||||
else if(list.left().beginsWith("FLASH512_V")) output.append(Memory{}.type("Flash" ).size(0x10000).category("Save").text());
|
else if(list.left().beginsWith("FLASH512_V")) output.append(Memory{}.type("Flash" ).size(0x10000).content("Save").text());
|
||||||
else if(list.left().beginsWith("FLASH1M_V" )) output.append(Memory{}.type("Flash" ).size(0x20000).category("Save").text());
|
else if(list.left().beginsWith("FLASH1M_V" )) output.append(Memory{}.type("Flash" ).size(0x20000).content("Save").text());
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -241,13 +241,13 @@ auto GameBoy::manifest() const -> string {
|
||||||
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()).content("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).content("Save").battery(battery).text());
|
||||||
if(flash && flashSize)
|
if(flash && flashSize)
|
||||||
output.append(Memory{}.type("Flash").size(flashSize).category("Download").text());
|
output.append(Memory{}.type("Flash").size(flashSize).content("Download").text());
|
||||||
if(rtc && rtcSize)
|
if(rtc && rtcSize)
|
||||||
output.append(Memory{}.type("RTC").size(rtcSize).category("Time").battery().text());
|
output.append(Memory{}.type("RTC").size(rtcSize).content("Time").battery().text());
|
||||||
if(accelerometer)
|
if(accelerometer)
|
||||||
output.append(" accelerometer\n");
|
output.append(" accelerometer\n");
|
||||||
if(rumble)
|
if(rumble)
|
||||||
|
|
|
@ -24,8 +24,8 @@ auto GameGear::manifest() const -> string {
|
||||||
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()).content("Program").text());
|
||||||
output.append(Memory{}.type("RAM").size(0x8000).category("Save").battery().text());
|
output.append(Memory{}.type("RAM").size(0x8000).content("Save").battery().text());
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,13 +7,13 @@ auto Memory::text() const -> string {
|
||||||
if(_battery)
|
if(_battery)
|
||||||
output.append(" battery\n");
|
output.append(" battery\n");
|
||||||
output.append(" size: 0x", hex(_size), "\n");
|
output.append(" size: 0x", hex(_size), "\n");
|
||||||
output.append(" category: ", _category, "\n");
|
output.append(" content: ", _content, "\n");
|
||||||
if(_manufacturer)
|
if(_manufacturer)
|
||||||
output.append(" manufacturer: ", _manufacturer, "\n");
|
output.append(" manufacturer: ", _manufacturer, "\n");
|
||||||
if(_model)
|
if(_architecture)
|
||||||
output.append(" model: ", _model, "\n");
|
output.append(" architecture: ", _architecture, "\n");
|
||||||
if(_identity)
|
if(_identifier)
|
||||||
output.append(" identity: ", _identity, "\n");
|
output.append(" identifier: ", _identifier, "\n");
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,19 +4,19 @@ struct Memory {
|
||||||
auto& type(string type) { _type = type; return *this; }
|
auto& type(string type) { _type = type; return *this; }
|
||||||
auto& battery(boolean battery = true) { _battery = battery; return *this; }
|
auto& battery(boolean battery = true) { _battery = battery; return *this; }
|
||||||
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& content(string content) { _content = content; return *this; }
|
||||||
auto& manufacturer(string manufacturer) { _manufacturer = manufacturer; return *this; }
|
auto& manufacturer(string manufacturer) { _manufacturer = manufacturer; return *this; }
|
||||||
auto& model(string model) { _model = model; return *this; }
|
auto& architecture(string architecture) { _architecture = architecture; return *this; }
|
||||||
auto& identity(string identity) { _identity = identity; return *this; }
|
auto& identifier(string identifier) { _identifier = identifier; return *this; }
|
||||||
auto text() const -> string;
|
auto text() const -> string;
|
||||||
|
|
||||||
string _type;
|
string _type;
|
||||||
boolean _battery;
|
boolean _battery;
|
||||||
natural _size;
|
natural _size;
|
||||||
string _category;
|
string _content;
|
||||||
string _manufacturer;
|
string _manufacturer;
|
||||||
string _model;
|
string _architecture;
|
||||||
string _identity;
|
string _identifier;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Oscillator {
|
struct Oscillator {
|
||||||
|
|
|
@ -24,8 +24,8 @@ auto MasterSystem::manifest() const -> string {
|
||||||
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()).content("Program").text());
|
||||||
output.append(Memory{}.type("RAM").size(0x8000).category("Save").battery().text());
|
output.append(Memory{}.type("RAM").size(0x8000).content("Save").battery().text());
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,9 +75,9 @@ auto MegaDrive::manifest() const -> string {
|
||||||
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()).content("Program").text());
|
||||||
if(ramSize && ramMode != "none") {
|
if(ramSize && ramMode != "none") {
|
||||||
output.append(Memory{}.type("RAM").size(ramSize).category("Save").text());
|
output.append(Memory{}.type("RAM").size(ramSize).content("Save").text());
|
||||||
output.append(" mode: ", ramMode, "\n");
|
output.append(" mode: ", ramMode, "\n");
|
||||||
output.append(" offset: 0x", hex(ramFrom), "\n");
|
output.append(" offset: 0x", hex(ramFrom), "\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ auto PCEngine::manifest() const -> string {
|
||||||
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()).content("Program").text());
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,9 +30,9 @@ auto SufamiTurbo::manifest() const -> string {
|
||||||
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()).content("Program").text());
|
||||||
if(ramSize)
|
if(ramSize)
|
||||||
output.append(Memory{}.type("RAM").size(ramSize).category("Save").battery().text());
|
output.append(Memory{}.type("RAM").size(ramSize).content("Save").battery().text());
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,52 +68,51 @@ auto SuperFamicom::manifest() const -> string {
|
||||||
|
|
||||||
if(auto size = romSize()) {
|
if(auto size = romSize()) {
|
||||||
if(board(0) == "SPC7110") size = 0x100000;
|
if(board(0) == "SPC7110") size = 0x100000;
|
||||||
output.append(Memory{}.type("ROM").size(size).category("Program").text());
|
output.append(Memory{}.type("ROM").size(size).content("Program").text());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(auto size = ramSize()) {
|
if(auto size = ramSize()) {
|
||||||
output.append(Memory{}.type("RAM").size(size).category("Save").battery(battery()).text());
|
output.append(Memory{}.type("RAM").size(size).content("Save").battery(battery()).text());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(auto size = expansionRamSize()) {
|
if(auto size = expansionRamSize()) {
|
||||||
output.append(Memory{}.type("RAM").size(size).category("Save").battery(battery()).text());
|
output.append(Memory{}.type("RAM").size(size).content("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).category("Program").manufacturer("SETA").model("ARM6").identity(firmwareARM()).text());
|
output.append(Memory{}.type("ROM").size(0x20000).content("Program").manufacturer("SETA").architecture("ARM6").identifier(firmwareARM()).text());
|
||||||
output.append(Memory{}.type("ROM").size( 0x8000).category("Data" ).manufacturer("SETA").model("ARM6").identity(firmwareARM()).text());
|
output.append(Memory{}.type("ROM").size( 0x8000).content("Data" ).manufacturer("SETA").architecture("ARM6").identifier(firmwareARM()).text());
|
||||||
output.append(Memory{}.type("RAM").size( 0x4000).category("Data" ).manufacturer("SETA").model("ARM6").identity(firmwareARM()).text());
|
output.append(Memory{}.type("RAM").size( 0x4000).content("Data" ).manufacturer("SETA").architecture("ARM6").identifier(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).content("Download").battery().text());
|
||||||
} else if(board(0) == "HITACHI") {
|
} else if(board(0) == "HITACHI") {
|
||||||
output.append(Memory{}.type("ROM").size(0xc00).category("Data").manufacturer("Hitachi").model("HG51BS169").identity(firmwareHITACHI()).text());
|
output.append(Memory{}.type("ROM").size(0xc00).content("Data").manufacturer("Hitachi").architecture("HG51BS169").identifier(firmwareHITACHI()).text());
|
||||||
output.append(Memory{}.type("RAM").size(0xc00).category("Data").manufacturer("Hitachi").model("HG51BS169").identity(firmwareHITACHI()).text());
|
output.append(Memory{}.type("RAM").size(0xc00).content("Data").manufacturer("Hitachi").architecture("HG51BS169").identifier(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).category("Program").manufacturer("NEC").model("uPD7725").identity(firmwareNEC()).text());
|
output.append(Memory{}.type("ROM").size(0x1800).content("Program").manufacturer("NEC").architecture("uPD7725").identifier(firmwareNEC()).text());
|
||||||
output.append(Memory{}.type("ROM").size( 0x800).category("Data" ).manufacturer("NEC").model("uPD7725").identity(firmwareNEC()).text());
|
output.append(Memory{}.type("ROM").size( 0x800).content("Data" ).manufacturer("NEC").architecture("uPD7725").identifier(firmwareNEC()).text());
|
||||||
output.append(Memory{}.type("RAM").size( 0x200).category("Data" ).manufacturer("NEC").model("uPD7725").identity(firmwareNEC()).text());
|
output.append(Memory{}.type("RAM").size( 0x200).content("Data" ).manufacturer("NEC").architecture("uPD7725").identifier(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).category("Program").manufacturer("NEC").model("uPD96050").identity(firmwareNECEX()).text());
|
output.append(Memory{}.type("ROM").size(0xc000).content("Program").manufacturer("NEC").architecture("uPD96050").identifier(firmwareNECEX()).text());
|
||||||
output.append(Memory{}.type("ROM").size(0x1000).category("Data" ).manufacturer("NEC").model("uPD96050").identity(firmwareNECEX()).text());
|
output.append(Memory{}.type("ROM").size(0x1000).content("Data" ).manufacturer("NEC").architecture("uPD96050").identifier(firmwareNECEX()).text());
|
||||||
output.append(Memory{}.type("RAM").size(0x1000).category("Data" ).manufacturer("NEC").model("uPD96050").identity(firmwareNECEX()).text());
|
output.append(Memory{}.type("RAM").size(0x1000).content("Data" ).manufacturer("NEC").architecture("uPD96050").identifier(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).content("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).content("Internal").text());
|
||||||
} else if(board(0) == "SGB") {
|
} else if(board(0) == "SGB") {
|
||||||
string model = firmwareSGB() == "SGB1" ? "DMG" : "MGB";
|
output.append(Memory{}.type("ROM").size(0x100).content("Boot").manufacturer("Nintendo").architecture("LR35902").identifier(firmwareSGB()).text());
|
||||||
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") {
|
||||||
output.append(Memory{}.type("ROM").size(romSize() - 0x100000).category("Data").text());
|
output.append(Memory{}.type("ROM").size(romSize() - 0x100000).content("Data").text());
|
||||||
if(board(1) == "RTC")
|
if(board(1) == "RTC")
|
||||||
output.append(Memory{}.type("RTC").size(0x10).category("Time").battery().text());
|
output.append(Memory{}.type("RTC").size(0x10).content("Time").battery().text());
|
||||||
} else if(board(0) == "SUPERFX") {
|
} else if(board(0) == "SUPERFX") {
|
||||||
//todo: MARIO CHIP 1 uses CPU oscillator
|
//todo: MARIO CHIP 1 uses CPU oscillator
|
||||||
output.append(Oscillator{}.frequency(21'440'000).text());
|
output.append(Oscillator{}.frequency(21'440'000).text());
|
||||||
|
|
|
@ -24,7 +24,7 @@ auto SuperGrafx::manifest() const -> string {
|
||||||
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()).content("Program").text());
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,11 +47,11 @@ auto WonderSwan::manifest() const -> string {
|
||||||
output.append(" name: ", Location::prefix(location), "\n");
|
output.append(" name: ", Location::prefix(location), "\n");
|
||||||
output.append(" orientation: ", !orientation ? "horizontal" : "vertical", "\n");
|
output.append(" orientation: ", !orientation ? "horizontal" : "vertical", "\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()).content("Program").text());
|
||||||
if(ramType && ramSize)
|
if(ramType && ramSize)
|
||||||
output.append(Memory{}.type(ramType).size(ramSize).category("Save").battery(ramType == "RAM").text());
|
output.append(Memory{}.type(ramType).size(ramSize).content("Save").battery(ramType == "RAM").text());
|
||||||
if(hasRTC)
|
if(hasRTC)
|
||||||
output.append(Memory{}.type("RTC").size(0x10).category("Time").text());
|
output.append(Memory{}.type("RTC").size(0x10).content("Time").text());
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue