mirror of https://github.com/bsnes-emu/bsnes.git
Update to v106r04 release.
byuu says: Changelog: - nall: `Markup::Node::operator[]` now uses `find()` instead of `lookup()` behind the scenes - Super Famicom: RAM memory ordering is now independent of ROM memory ordering - Super Famicom: added 19 new generic board definitions - icarus: improved Super Famicom heuristics generation Not putting it in the changelog, but the SPC7110 RAM now has write protection disabled again. 99% of games should now be playable with heuristics. The exceptions should be: - 4MB LoROM games with SRAM (Ys 3, FE: Thracia 776) - 2MB DSP LoROM games - BS-X Town - BS-X slotted games - SA1 BSX slotted games - SPC7110 games without the RTC (Momotarou Dentetsu Happy, Super Power League 4) - SPC7110 7MB fan translation (wasn't supported earlier either) - ExLoROM games (wasn't supported earlier either) - Sufami Turbo - Campus Challenge '92 and Powerfest '94 - ST010 is going to run at 15MHz instead of 11MHz - MSU1 (needs to be supported in higan, not icarus) I'll add support for most of these before the release of v107.
This commit is contained in:
parent
3d8be92550
commit
c38a771f22
|
@ -12,7 +12,7 @@ using namespace nall;
|
|||
|
||||
namespace Emulator {
|
||||
static const string Name = "higan";
|
||||
static const string Version = "106.03";
|
||||
static const string Version = "106.04";
|
||||
static const string Author = "byuu";
|
||||
static const string License = "GPLv3";
|
||||
static const string Website = "https://byuu.org/";
|
||||
|
|
|
@ -57,7 +57,7 @@ auto System::load(Emulator::Interface* interface, Model model_, maybe<uint> syst
|
|||
} else return false;
|
||||
|
||||
auto document = BML::unserialize(information.manifest);
|
||||
if(auto name = document["board/icd2/rom/name"].text()) {
|
||||
if(auto name = document["game/memory[1]/name"].text()) {
|
||||
if(auto fp = platform->open(systemID(), name, File::Read, File::Required)) {
|
||||
fp->read(bootROM.sgb, 256);
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ auto Cartridge::loadBoard(Markup::Node node) -> Markup::Node {
|
|||
}
|
||||
}
|
||||
if(!matched) continue;
|
||||
|
||||
if(region.endsWith("-USA")
|
||||
|| region.endsWith("-CAN")
|
||||
|| region.endsWith("-JPN")
|
||||
|
@ -30,17 +31,30 @@ auto Cartridge::loadBoard(Markup::Node node) -> Markup::Node {
|
|||
} else {
|
||||
output.append("region=pal\n");
|
||||
}
|
||||
uint counter = 0;
|
||||
|
||||
vector<Markup::Node> rom;
|
||||
vector<Markup::Node> ram;
|
||||
for(auto memory : node.find("game/memory")) {
|
||||
if(memory["type"].text() == "ROM" || memory["type"].text() == "EPROM") {
|
||||
rom.append(memory);
|
||||
}
|
||||
if(memory["type"].text() == "RAM" || memory["type"].text() == "NVRAM") {
|
||||
ram.append(memory);
|
||||
}
|
||||
}
|
||||
|
||||
for(auto& line : BML::serialize(leaf).split("\n")) {
|
||||
line.trimLeft(" ", 1L);
|
||||
if(line.endsWith("rom") || line.endsWith("ram")) {
|
||||
auto memory = node.find("game/memory");
|
||||
if(counter < memory.size()) {
|
||||
line.append(" name=", memory[counter]["name"].text());
|
||||
line.append(" size=", memory[counter]["size"].text());
|
||||
if(memory[counter]["type"].text() == "RAM") line.append(" volatile");
|
||||
counter++;
|
||||
}
|
||||
if(line.endsWith("rom") && rom) {
|
||||
line.append(" name=", rom.left()["name"].text());
|
||||
line.append(" size=", rom.left()["size"].text());
|
||||
rom.removeLeft();
|
||||
}
|
||||
if(line.endsWith("ram")) {
|
||||
line.append(" name=", ram.left()["name"].text());
|
||||
line.append(" size=", ram.left()["size"].text());
|
||||
if(ram.left()["type"].text() == "RAM") line.append(" volatile");
|
||||
ram.removeLeft();
|
||||
}
|
||||
output.append(line, "\n");
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ auto SPC7110::power() -> void {
|
|||
|
||||
prom.writeProtect(true);
|
||||
drom.writeProtect(true);
|
||||
ram.writeProtect(true);
|
||||
ram.writeProtect(false);
|
||||
|
||||
r4801 = 0x00;
|
||||
r4802 = 0x00;
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
database
|
||||
revision: 2018-02-08
|
||||
|
||||
//Boards (Production)
|
||||
|
||||
database
|
||||
revision: 2017-12-29
|
||||
|
||||
|
@ -406,3 +411,187 @@ board: YJ0N-01
|
|||
map address=00-3f,80-bf:8000-ffff
|
||||
map address=40-7d,c0-ff:0000-ffff
|
||||
|
||||
//Boards (Generic)
|
||||
|
||||
database
|
||||
revision: 2018-02-08
|
||||
|
||||
board: CX4
|
||||
hitachidsp model=HG51B169 frequency=20000000
|
||||
map address=00-3f,80-bf:6c00-6fff,7c00-7fff
|
||||
rom
|
||||
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
||||
ram
|
||||
map address=70-77:0000-7fff mask=0x8000
|
||||
drom
|
||||
dram
|
||||
map address=00-3f,80-bf:6000-6bff,7000-7bff mask=0xf000
|
||||
|
||||
board: DSP-HIROM-NVRAM
|
||||
rom
|
||||
map address=00-3f,80-bf:8000-ffff
|
||||
map address=40-7d,c0-ff:0000-ffff
|
||||
ram
|
||||
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
||||
necdsp model=uPD7725 frequency=8000000
|
||||
map address=00-1f,80-9f:6000-7fff mask=0xfff
|
||||
prom
|
||||
drom
|
||||
dram
|
||||
|
||||
board: DSP-LOROM
|
||||
rom
|
||||
map address=00-1f,80-9f:8000-ffff mask=0x8000
|
||||
necdsp model=uPD7725 frequency=8000000
|
||||
map address=30-3f,b0-bf:8000-ffff mask=0x3fff
|
||||
prom
|
||||
drom
|
||||
dram
|
||||
|
||||
board: DSP-LOROM-NVRAM
|
||||
rom
|
||||
map address=00-1f,80-9f:8000-ffff mask=0x8000
|
||||
ram
|
||||
map address=70-7d,f0-ff:0000-ffff
|
||||
necdsp model=uPD7725 frequency=8000000
|
||||
map address=20-3f,a0-bf:8000-ffff mask=0x3fff
|
||||
prom
|
||||
drom
|
||||
dram
|
||||
|
||||
board: EXHIROM-NVRAM
|
||||
rom
|
||||
map address=00-3f:8000-ffff base=0x400000
|
||||
map address=40-7d:0000-ffff base=0x400000
|
||||
map address=80-bf:8000-ffff mask=0xc00000
|
||||
map address=c0-ff:0000-ffff mask=0xc00000
|
||||
ram
|
||||
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
||||
map address=70-7d:0000-7fff
|
||||
|
||||
board: HIROM
|
||||
rom
|
||||
map address=00-3f,80-bf:8000-ffff
|
||||
map address=40-7d,c0-ff:0000-ffff
|
||||
|
||||
board: HIROM-NVRAM
|
||||
rom
|
||||
map address=00-3f,80-bf:8000-ffff
|
||||
map address=40-7d,c0-ff:0000-ffff
|
||||
ram
|
||||
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
||||
|
||||
board: LOROM
|
||||
rom
|
||||
map address=00-7d,f0-ff:8000-ffff mask=0x8000
|
||||
|
||||
board: LOROM-NVRAM
|
||||
rom
|
||||
map address=00-7d,f0-ff:8000-ffff mask=0x8000
|
||||
ram
|
||||
map address=70-7d,f0-ff:0000-7fff mask=0x8000
|
||||
|
||||
board: OBC1-LOROM-NVRAM
|
||||
rom
|
||||
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
||||
obc1
|
||||
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
||||
map address=70-71,f0-f1:6000-7fff,e000-ffff mask=0xe000
|
||||
ram
|
||||
|
||||
board: RTC-EXHIROM-NVRAM
|
||||
rom
|
||||
map address=00-3f:8000-ffff base=0x400000
|
||||
map address=40-7d:0000-ffff base=0x400000
|
||||
map address=80-bf:8000-ffff mask=0xc00000
|
||||
map address=c0-ff:0000-ffff mask=0xc00000
|
||||
ram
|
||||
map address=20-3f,a0-bf:6000-7fff mask=0xe000
|
||||
map address=70-7d:0000-7fff
|
||||
sharprtc
|
||||
map address=00-3f,80-bf:2800-2801
|
||||
ram
|
||||
|
||||
board: SA1-(RAM,NVRAM)
|
||||
sa1
|
||||
map address=00-3f,80-bf:2200-23ff
|
||||
rom
|
||||
map address=00-3f,80-bf:8000-ffff mask=0x408000
|
||||
map address=c0-ff:0000-ffff
|
||||
bwram
|
||||
map address=00-3f,80-bf:6000-7fff size=0x2000
|
||||
map address=40-4f:0000-ffff
|
||||
iram
|
||||
map address=00-3f,80-bf:3000-37ff size=0x800
|
||||
|
||||
board: SDD1
|
||||
sdd1
|
||||
map address=00-3f,80-bf:4800-480f
|
||||
rom
|
||||
map address=00-3f,80-bf:8000-ffff
|
||||
map address=c0-ff:0000-ffff
|
||||
|
||||
board: SDD1-NVRAM
|
||||
sdd1
|
||||
map address=00-3f,80-bf:4800-480f
|
||||
rom
|
||||
map address=00-3f,80-bf:8000-ffff
|
||||
map address=c0-ff:0000-ffff
|
||||
ram
|
||||
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
||||
map address=70-73:0000-ffff mask=0x8000
|
||||
|
||||
board: SETA-LOROM-NVRAM
|
||||
rom
|
||||
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
||||
map address=40-6f,c0-ef:0000-7fff mask=0x8000
|
||||
ram
|
||||
map address=70-7d,f0-ff:0000-ffff
|
||||
armdsp frequency=21477272
|
||||
map address=00-3f,80-bf:3800-38ff
|
||||
prom
|
||||
drom
|
||||
ram
|
||||
|
||||
board: SGB
|
||||
rom
|
||||
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
||||
map address=40-7d,c0-ff:0000-7fff mask=0x8000
|
||||
icd2 revision=1
|
||||
map address=00-3f,80-bf:6000-67ff,7000-7fff
|
||||
rom
|
||||
|
||||
board: SPC7110-RTC-NVRAM
|
||||
spc7110
|
||||
map address=00-3f,80-bf:4800-483f
|
||||
map address=50,58:0000-ffff
|
||||
map=mcu address=00-3f,80-bf:8000-ffff mask=0x800000
|
||||
map=mcu address=c0-ff:0000-ffff mask=0xc00000
|
||||
prom
|
||||
drom
|
||||
ram
|
||||
map address=00-3f,80-bf:6000-7fff mask=0xe000
|
||||
epsonrtc
|
||||
map address=00-3f,80-bf:4800-4842
|
||||
ram
|
||||
|
||||
board: ST-LOROM-BATTERY
|
||||
rom
|
||||
map address=00-7d,80-ff:8000-ffff mask=0x8000
|
||||
necdsp model=uPD96050 frequency=15000000
|
||||
map address=60-67,e0-e7:0000-3fff
|
||||
prom
|
||||
drom
|
||||
dram
|
||||
map address=68-6f,e8-ef:0000-7fff mask=0x8000
|
||||
|
||||
board: SUPERFX-(RAM,NVRAM)
|
||||
superfx
|
||||
map address=00-3f,80-bf:3000-34ff
|
||||
rom
|
||||
map address=00-3f,80-bf:8000-ffff mask=0x8000
|
||||
map address=40-5f,c0-df:0000-ffff
|
||||
ram
|
||||
map address=00-3f,80-bf:6000-7fff size=0x2000
|
||||
map address=70-71,f0-f1:0000-ffff
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -53,26 +53,26 @@ auto SuperFamicom::manifest() const -> string {
|
|||
output.append(" board: ", board(), "\n");
|
||||
output.append(" label: ", label(), "\n");
|
||||
|
||||
auto board = this->board();
|
||||
auto board = this->board().split("-");
|
||||
|
||||
if(board.beginsWith("CX4-")) {
|
||||
if(board.left() == "CX4") {
|
||||
output.append(memory("ROM", size - 0xc00, "program.rom"));
|
||||
output.append(memory("ROM", 0xc00, "cx4.data.rom"));
|
||||
} else if(board.beginsWith("DSP-")) {
|
||||
} else if(board.left() == "DSP") {
|
||||
output.append(memory("ROM", size - 0x2000, "program.rom"));
|
||||
output.append(memory("ROM", 0x1800, "dsp.program.rom"));
|
||||
output.append(memory("ROM", 0x800, "dsp.data.rom"));
|
||||
} else if(board.beginsWith("SETA-")) {
|
||||
} else if(board.left() == "SETA") {
|
||||
output.append(memory("ROM", size - 0x28000, "program.rom"));
|
||||
output.append(memory("ROM", 0x20000, "seta.program.rom"));
|
||||
output.append(memory("ROM", 0x8000, "seta.data.rom"));
|
||||
} else if(board.beginsWith("SGB-")) {
|
||||
} else if(board.left() == "SGB") {
|
||||
output.append(memory("ROM", size - 0x100, "program.rom"));
|
||||
output.append(memory("ROM", 0x100, "sgb.boot.rom"));
|
||||
} else if(board.beginsWith("SPC7110-")) {
|
||||
} else if(board.left() == "SPC7110") {
|
||||
output.append(memory("ROM", 0x100000, "program.rom"));
|
||||
output.append(memory("ROM", size - 0x100000, "data.rom"));
|
||||
} else if(board.beginsWith("ST-")) {
|
||||
} else if(board.left() == "ST") {
|
||||
output.append(memory("ROM", size - 0xd000, "program.rom"));
|
||||
output.append(memory("ROM", 0xc000, "st.program.rom"));
|
||||
output.append(memory("ROM", 0x1000, "st.data.rom"));
|
||||
|
@ -81,31 +81,31 @@ auto SuperFamicom::manifest() const -> string {
|
|||
}
|
||||
|
||||
if(auto size = ramSize()) {
|
||||
auto type = board.endsWith("-NVRAM") ? "NVRAM" : "RAM";
|
||||
auto type = board.right() == "NVRAM" ? "NVRAM" : "RAM";
|
||||
output.append(memory(type, size, "save.ram"));
|
||||
}
|
||||
|
||||
if(auto size = expansionRamSize()) {
|
||||
auto type = board.endsWith("-NVRAM") ? "NVRAM" : "RAM";
|
||||
auto type = board.right() == "NVRAM" ? "NVRAM" : "RAM";
|
||||
output.append(memory(type, size, "expansion.ram"));
|
||||
}
|
||||
|
||||
if(board.beginsWith("BSX-")) {
|
||||
if(board.left() == "BSX") {
|
||||
output.append(memory("NVRAM", 0x80000, "download.ram"));
|
||||
} else if(board.beginsWith("CX4-")) {
|
||||
} else if(board.left() == "CX4") {
|
||||
output.append(memory("RAM", 0, "save.ram"));
|
||||
output.append(memory("RAM", 0xc00, "cx4.data.ram"));
|
||||
} else if(board.beginsWith("DSP-")) {
|
||||
} else if(board.left() == "DSP") {
|
||||
output.append(memory("RAM", 0x200, "dsp.data.ram"));
|
||||
} else if(board.beginsWith("RTC-")) {
|
||||
} else if(board.left() == "RTC") {
|
||||
output.append(memory("NVRAM", 0x10, "rtc.ram"));
|
||||
} else if(board.beginsWith("SA1-")) {
|
||||
} else if(board.left() == "SA1") {
|
||||
output.append(memory("RAM", 0x800, "internal.ram"));
|
||||
} else if(board.beginsWith("SETA-")) {
|
||||
} else if(board.left() == "SETA") {
|
||||
output.append(memory("NVRAM", 0x4000, "seta.save.ram"));
|
||||
} else if(board.beginsWith("SPC7110-RTC-")) {
|
||||
} else if(board.left() == "SPC7110" && board(1) == "RTC") {
|
||||
output.append(memory("NVRAM", 0x10, "rtc.ram"));
|
||||
} else if(board.beginsWith("ST-")) {
|
||||
} else if(board.left() == "ST") {
|
||||
output.append(memory("NVRAM", 0x1000, "st.save.ram"));
|
||||
}
|
||||
|
||||
|
@ -158,20 +158,20 @@ auto SuperFamicom::region() const -> string {
|
|||
}
|
||||
|
||||
if(!region) {
|
||||
if(E == 0x00) region = {"SHVC-\?\?-JPN"}; //trigraphs: why is this still a thing?
|
||||
if(E == 0x01) region = { "SNS-\?\?-USA"};
|
||||
if(E == 0x02) region = {"SNSP-\?\?-EUR"};
|
||||
if(E == 0x03) region = {"SNSP-\?\?-SCN"};
|
||||
if(E == 0x06) region = {"SNSP-\?\?-FRA"};
|
||||
if(E == 0x07) region = {"SNSP-\?\?-HOL"};
|
||||
if(E == 0x08) region = {"SNSP-\?\?-ESP"};
|
||||
if(E == 0x09) region = {"SNSP-\?\?-NOE"};
|
||||
if(E == 0x0a) region = {"SNSP-\?\?-ITA"};
|
||||
if(E == 0x0b) region = {"SNSP-\?\?-ROC"};
|
||||
if(E == 0x0d) region = {"SNSP-\?\?-KOR"};
|
||||
if(E == 0x0f) region = { "SNS-\?\?-CAN"};
|
||||
if(E == 0x10) region = { "SNS-\?\?-BRA"};
|
||||
if(E == 0x11) region = {"SNSP-\?\?-AUS"};
|
||||
if(E == 0x00) region = {"SHVC-JPN"};
|
||||
if(E == 0x01) region = { "SNS-USA"};
|
||||
if(E == 0x02) region = {"SNSP-EUR"};
|
||||
if(E == 0x03) region = {"SNSP-SCN"};
|
||||
if(E == 0x06) region = {"SNSP-FRA"};
|
||||
if(E == 0x07) region = {"SNSP-HOL"};
|
||||
if(E == 0x08) region = {"SNSP-ESP"};
|
||||
if(E == 0x09) region = {"SNSP-NOE"};
|
||||
if(E == 0x0a) region = {"SNSP-ITA"};
|
||||
if(E == 0x0b) region = {"SNSP-ROC"};
|
||||
if(E == 0x0d) region = {"SNSP-KOR"};
|
||||
if(E == 0x0f) region = { "SNS-CAN"};
|
||||
if(E == 0x10) region = { "SNS-BRA"};
|
||||
if(E == 0x11) region = {"SNSP-AUS"};
|
||||
}
|
||||
|
||||
return region ? region : "NTSC";
|
||||
|
@ -207,41 +207,48 @@ auto SuperFamicom::revision() const -> string {
|
|||
}
|
||||
|
||||
if(!revision) {
|
||||
if(E == 0x00) revision = {"SHVC-\?\?-", F};
|
||||
if(E == 0x01) revision = { "SNS-\?\?-", F};
|
||||
if(E == 0x02) revision = {"SNSP-\?\?-", F};
|
||||
if(E == 0x03) revision = {"SSWE-\?\?-", F};
|
||||
if(E == 0x06) revision = {"SFRA-\?\?-", F};
|
||||
if(E == 0x07) revision = {"SHOL-\?\?-", F};
|
||||
if(E == 0x08) revision = {"SESP-\?\?-", F};
|
||||
if(E == 0x09) revision = {"SFRG-\?\?-", F};
|
||||
if(E == 0x0a) revision = {"SITA-\?\?-", F};
|
||||
if(E == 0x0b) revision = {"SSCN-\?\?-", F};
|
||||
if(E == 0x0d) revision = {"SKOR-\?\?-", F};
|
||||
if(E == 0x0f) revision = { "SNS-\?\?-", F};
|
||||
if(E == 0x10) revision = {"SBRA-\?\?-", F};
|
||||
if(E == 0x11) revision = {"SNSP-\?\?-", F};
|
||||
if(E == 0x00) revision = {"SHVC-", F};
|
||||
if(E == 0x01) revision = { "SNS-", F};
|
||||
if(E == 0x02) revision = {"SNSP-", F};
|
||||
if(E == 0x03) revision = {"SSWE-", F};
|
||||
if(E == 0x06) revision = {"SFRA-", F};
|
||||
if(E == 0x07) revision = {"SHOL-", F};
|
||||
if(E == 0x08) revision = {"SESP-", F};
|
||||
if(E == 0x09) revision = {"SFRG-", F};
|
||||
if(E == 0x0a) revision = {"SITA-", F};
|
||||
if(E == 0x0b) revision = {"SSCN-", F};
|
||||
if(E == 0x0d) revision = {"SKOR-", F};
|
||||
if(E == 0x0f) revision = { "SNS-", F};
|
||||
if(E == 0x10) revision = {"SBRA-", F};
|
||||
if(E == 0x11) revision = {"SNSP-", F};
|
||||
}
|
||||
|
||||
return revision ? revision : string{"1.", F};
|
||||
}
|
||||
|
||||
auto SuperFamicom::board() const -> string {
|
||||
auto mapModeLo = data[headerAddress + 0x25] & 15;
|
||||
auto mapMode = data[headerAddress + 0x25];
|
||||
auto cartridgeType = data[headerAddress + 0x26];
|
||||
auto cartridgeTypeLo = cartridgeType & 15;
|
||||
auto cartridgeTypeHi = cartridgeType >> 4;
|
||||
auto cartridgeSubType = data[headerAddress + 0x2f];
|
||||
auto cartridgeSubType = data[headerAddress + 0x0f];
|
||||
|
||||
string board;
|
||||
|
||||
string mode;
|
||||
if(mapModeLo == 0x0) mode = "LOROM-";
|
||||
if(mapModeLo == 0x1) mode = "HIROM-";
|
||||
if(mapModeLo == 0x2) mode = "SDD1-";
|
||||
if(mapModeLo == 0x3) mode = "SA1-";
|
||||
if(mapModeLo == 0x5) mode = "EXHIROM-";
|
||||
if(mapModeLo == 0xa) mode = "SPC7110-";
|
||||
if(mapMode == 0x20 || mapMode == 0x30) mode = "LOROM-";
|
||||
if(mapMode == 0x21 || mapMode == 0x31) mode = "HIROM-";
|
||||
if(mapMode == 0x22 || mapMode == 0x32) mode = "SDD1-";
|
||||
if(mapMode == 0x23 || mapMode == 0x33) mode = "SA1-";
|
||||
if(mapMode == 0x25 || mapMode == 0x35) mode = "EXHIROM-";
|
||||
if(mapMode == 0x2a || mapMode == 0x3a) mode = "SPC7110-";
|
||||
|
||||
//many games will store an extra title character, overwriting the map mode
|
||||
if(!mode) {
|
||||
if(headerAddress == 0x7fb0) mode = "LOROM-";
|
||||
if(headerAddress == 0xffb0) mode = "HIROM-";
|
||||
if(headerAddress == 0x40ffb0) mode = "EXHIROM-";
|
||||
}
|
||||
|
||||
if(serial() == "A9PJ") {
|
||||
board.append("ST-");
|
||||
|
|
|
@ -96,7 +96,12 @@ auto ManagedNode::_find(const string& query) const -> vector<Node> {
|
|||
return result;
|
||||
}
|
||||
|
||||
//operator[](string)
|
||||
auto ManagedNode::_lookup(const string& path) const -> Node {
|
||||
auto result = _find(path);
|
||||
return result ? result[0] : Node{};
|
||||
|
||||
/*//faster, but cannot search
|
||||
if(auto position = path.find("/")) {
|
||||
auto name = slice(path, 0, *position);
|
||||
for(auto& node : _children) {
|
||||
|
@ -108,6 +113,7 @@ auto ManagedNode::_lookup(const string& path) const -> Node {
|
|||
if(path == node->_name) return node;
|
||||
}
|
||||
return {};
|
||||
*/
|
||||
}
|
||||
|
||||
auto ManagedNode::_create(const string& path) -> Node {
|
||||
|
|
Loading…
Reference in New Issue