Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,8 @@
"description": "Single-arch binary for building on Github Actions",
"inherits": ["ubuntu-ci"],
"cacheVariables": {
"USE_QT6": true
"USE_QT6": true,
"ARES_BUILD_OPTIONAL_TARGETS": false
}
}
],
Expand Down
8 changes: 5 additions & 3 deletions ares/ares/node/object.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,13 @@ struct Object : shared_pointer_this<Object> {
template<typename T = Node::Object>
auto find(string name) -> T {
using Type = typename T::type;
auto path = name.split("/");
name = path.takeFirst();
auto path = ::nall::split(name, "/");
if(path.empty()) return {};
name = path.front();
path.erase(path.begin());
for(auto& node : _nodes) {
if(node->_name != name) continue;
if(path) return node->find<T>(path.merge("/"));
if(!path.empty()) return node->find<T>(::nall::merge(path, "/"));
if(node->identity() == Type::identifier()) return node;
}
return {};
Expand Down
2 changes: 1 addition & 1 deletion ares/component/processor/huc6280/disassembler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ auto HuC6280::disassembleInstruction() -> string {

n8 opcode = readByte();

#define op(id, name, ...) case id: o = {name, " ", nall::merge({__VA_ARGS__}, ",")}; break;
#define op(id, name, ...) case id: o = {name, " ", ::nall::merge({__VA_ARGS__}, ",")}; break;
string o;

#define U
Expand Down
2 changes: 1 addition & 1 deletion ares/component/processor/i8080/disassembler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ auto I8080::disassembleContext() -> string {
return s;
}

#define op(id, name, ...) case id: return {name, " ", nall::merge({__VA_ARGS__}, ",")};
#define op(id, name, ...) case id: return {name, " ", ::nall::merge({__VA_ARGS__}, ",")};

#define N string{"$", hex(byte(), 2L)}
#define IN string{"(", N, ")"}
Expand Down
2 changes: 1 addition & 1 deletion ares/component/processor/sh2/disassembler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,7 @@ auto SH2::disassembleInstruction(u16 opcode) -> string {
if(s.empty()) s = {"illegal", {"0x", hex(opcode, 4L)}};
auto name = s.front(); s.erase(s.begin());
while(name.size() < 8) name.append(" ");
string r = {name, nall::merge(s, ",")};
string r = {name, ::nall::merge(s, ",")};
while(r.size() < 30) r.append(" ");
return r;
}
Expand Down
2 changes: 1 addition & 1 deletion ares/component/processor/v30mz/disassembler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ auto V30MZ::disassembleInstruction(u16 ps, u16 pc) -> string {
};

#define op(id, name, ...) case id: \
output.append(instruction(name), nall::merge({__VA_ARGS__}, ",")); \
output.append(instruction(name), ::nall::merge({__VA_ARGS__}, ",")); \
break

auto opcode = read(0);
Expand Down
2 changes: 1 addition & 1 deletion ares/component/processor/z80/disassembler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ auto Z80::disassembleContext() -> string {
return s;
}

#define op(id, name, ...) case id: return {name, " ", nall::merge({__VA_ARGS__}, ",")};
#define op(id, name, ...) case id: return {name, " ", ::nall::merge({__VA_ARGS__}, ",")};

#define N string{"$", hex(byte(), 2L)}
#define IN string{"(", N, ")"}
Expand Down
8 changes: 2 additions & 6 deletions ares/md/cartridge/cartridge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,8 @@ auto Cartridge::connect() -> void {

information = {};
information.title = pak->attribute("title");
//FIXME(stdc++): make sure we fix this later
auto temp_regions = pak->attribute("region").split(",").strip();
information.regions.clear();
for(auto& region : temp_regions) {
information.regions.push_back(region);
}
auto region = pak->attribute("region");
information.regions = ::nall::split_and_strip(region, ",");
information.bootable = pak->attribute("bootable").boolean();

if(pak->attribute("mega32x").boolean()) {
Expand Down
4 changes: 2 additions & 2 deletions ares/n64/ai/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ auto AI::Debugger::io(bool mode, u32 address, u32 data) -> void {
string message;
string name = (address < registerNames.size() ? registerNames[address] : string("AI_UNKNOWN"));
if(mode == Read) {
message = {name.split("|").first(), " => ", hex(data, 8L)};
message = {::nall::split(name, "|").front(), " => ", hex(data, 8L)};
}
if(mode == Write) {
message = {name.split("|").last(), " <= ", hex(data, 8L)};
message = {::nall::split(name, "|").back(), " <= ", hex(data, 8L)};
}
tracer.io->notify(message);
}
Expand Down
2 changes: 1 addition & 1 deletion ares/n64/cpu/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ auto CPU::Debugger::interrupt(u8 mask) -> void {
if(mask & 0x20) sources.push_back("read RDB");
if(mask & 0x40) sources.push_back("write RDB");
if(mask & 0x80) sources.push_back("timer");
tracer.interrupt->notify(nall::merge(sources, ","));
tracer.interrupt->notify(::nall::merge(sources, ","));
}
}

Expand Down
2 changes: 1 addition & 1 deletion ares/n64/cpu/disassembler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ auto CPU::Disassembler::disassemble(u32 address, u32 instruction) -> string {
if(!instruction) v = {"nop"};
auto s = pad(v.front(), -8L);
v.erase(v.begin());
return {s, nall::merge(v, ",")};
return {s, ::nall::merge(v, ",")};
}

auto CPU::Disassembler::EXECUTE() -> std::vector<string> {
Expand Down
4 changes: 2 additions & 2 deletions ares/n64/dd/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ auto DD::Debugger::io(bool mode, u32 address, u32 data) -> void {
string message;
string name = (address < registerNames.size() ? registerNames[address] : string("ASIC_UNKNOWN"));
if(mode == Read) {
message = {name.split("|").first(), " => ", hex(data, 8L)};
message = {::nall::split(name, "|").front(), " => ", hex(data, 8L)};
}
if(mode == Write) {
message = {name.split("|").last(), " <= ", hex(data, 8L)};
message = {::nall::split(name, "|").back(), " <= ", hex(data, 8L)};
}
tracer.io->notify(message);
}
Expand Down
4 changes: 2 additions & 2 deletions ares/n64/mi/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ auto MI::Debugger::io(bool mode, u32 address, u32 data) -> void {
string message;
string name = (address < registerNames.size() ? registerNames[address] : string("MI_UNKNOWN"));
if(mode == Read) {
message = {name.split("|").first(), " => ", hex(data, 8L)};
message = {::nall::split(name, "|").front(), " => ", hex(data, 8L)};
}
if(mode == Write) {
message = {name.split("|").last(), " <= ", hex(data, 8L)};
message = {::nall::split(name, "|").back(), " <= ", hex(data, 8L)};
}
tracer.io->notify(message);
}
Expand Down
4 changes: 2 additions & 2 deletions ares/n64/pi/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ auto PI::Debugger::io(bool mode, u32 address, u32 data) -> void {
string message;
string name = (address < registerNames.size() ? registerNames[address] : string("PI_UNKNOWN"));
if(mode == Read) {
message = {name.split("|").first(), " => ", hex(data, 8L)};
message = {::nall::split(name, "|").front(), " => ", hex(data, 8L)};
}
if(mode == Write) {
message = {name.split("|").last(), " <= ", hex(data, 8L)};
message = {::nall::split(name, "|").back(), " <= ", hex(data, 8L)};
}
tracer.io->notify(message);
}
Expand Down
8 changes: 4 additions & 4 deletions ares/n64/rdp/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ auto RDP::Debugger::ioDPC(bool mode, u32 address, u32 data) -> void {
string message;
string name = (address < registerNames.size() ? registerNames[address] : string("DPC_UNKNOWN"));
if(mode == Read) {
message = {name.split("|").first(), " => ", hex(data, 8L)};
message = {::nall::split(name, "|").front(), " => ", hex(data, 8L)};
}
if(mode == Write) {
message = {name.split("|").last(), " <= ", hex(data, 8L)};
message = {::nall::split(name, "|").back(), " <= ", hex(data, 8L)};
}
tracer.io->notify(message);
}
Expand All @@ -46,10 +46,10 @@ auto RDP::Debugger::ioDPS(bool mode, u32 address, u32 data) -> void {
string message;
string name = (address < registerNames.size() ? registerNames[address] : string("DPS_UNKNOWN"));
if(mode == Read) {
message = {name.split("|").first(), " => ", hex(data, 8L)};
message = {::nall::split(name, "|").front(), " => ", hex(data, 8L)};
}
if(mode == Write) {
message = {name.split("|").last(), " <= ", hex(data, 8L)};
message = {::nall::split(name, "|").back(), " <= ", hex(data, 8L)};
}
tracer.io->notify(message);
}
Expand Down
4 changes: 2 additions & 2 deletions ares/n64/rdram/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,10 @@ auto RDRAM::Debugger::io(bool mode, u32 chipID, u32 address, u32 data) -> void {
string name = (address < registerNames.size() ? registerNames[address] : string("RDRAM_UNKNOWN"));
name.append("[", chipID, "]");
if(mode == Read) {
message = {name.split("|").first(), " => ", hex(data, 8L)};
message = {::nall::split(name, "|").front(), " => ", hex(data, 8L)};
}
if(mode == Write) {
message = {name.split("|").last(), " <= ", hex(data, 8L)};
message = {::nall::split(name, "|").back(), " <= ", hex(data, 8L)};
}
tracer.io->notify(message);
}
Expand Down
4 changes: 2 additions & 2 deletions ares/n64/ri/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ auto RI::Debugger::io(bool mode, u32 address, u32 data) -> void {
string message;
string name = (address < registerNames.size() ? registerNames[address] : string("RI_UNKNOWN"));
if(mode == Read) {
message = {name.split("|").first(), " => ", hex(data, 8L)};
message = {::nall::split(name, "|").front(), " => ", hex(data, 8L)};
}
if(mode == Write) {
message = {name.split("|").last(), " <= ", hex(data, 8L)};
message = {::nall::split(name, "|").back(), " <= ", hex(data, 8L)};
}
tracer.io->notify(message);
}
Expand Down
8 changes: 4 additions & 4 deletions ares/n64/rsp/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,10 @@ auto RSP::Debugger::ioSCC(bool mode, u32 address, u32 data) -> void {
string message;
string name = (address < registerNames.size() ? registerNames[address] : string("SP_UNKNOWN"));
if(mode == Read) {
message = {name.split("|").first(), " => ", hex(data, 8L)};
message = {::nall::split(name, "|").front(), " => ", hex(data, 8L)};
}
if(mode == Write) {
message = {name.split("|").last(), " <= ", hex(data, 8L)};
message = {::nall::split(name, "|").back(), " <= ", hex(data, 8L)};
}
tracer.io->notify(message);
}
Expand All @@ -95,10 +95,10 @@ auto RSP::Debugger::ioStatus(bool mode, u32 address, u32 data) -> void {
string message;
string name = (address < registerNames.size() ? registerNames[address] : string("SP_UNKNOWN"));
if(mode == Read) {
message = {name.split("|").first(), " => ", hex(data, 8L)};
message = {::nall::split(name, "|").front(), " => ", hex(data, 8L)};
}
if(mode == Write) {
message = {name.split("|").last(), " <= ", hex(data, 8L)};
message = {::nall::split(name, "|").back(), " <= ", hex(data, 8L)};
}
tracer.io->notify(message);
}
Expand Down
4 changes: 2 additions & 2 deletions ares/n64/rsp/disassembler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ auto RSP::Disassembler::disassemble(u32 address, u32 instruction) -> string {
if(!instruction) v = {"nop"};
auto s = pad(v.front(), -8L);
v.erase(v.begin());
return {s, nall::merge(v, ",")};
return {s, ::nall::merge(v, ",")};
}

auto RSP::Disassembler::EXECUTE() -> std::vector<string> {
Expand Down Expand Up @@ -509,7 +509,7 @@ auto RSP::Disassembler::vpuRegisterValue(u32 index, u32 element) const -> string
std::vector<string> elements;
elements.reserve(8);
for(u32 e : range(8)) elements.push_back(hex(self.vpu.r[index].element(e), 4L));
return {vpuRegisterName(index, element), hint("{$", nall::merge(elements, "|"), "}")};
return {vpuRegisterName(index, element), hint("{$", ::nall::merge(elements, "|"), "}")};
}
return vpuRegisterName(index, element);
}
Expand Down
4 changes: 2 additions & 2 deletions ares/n64/si/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ auto SI::Debugger::io(bool mode, u32 address, u32 data) -> void {
string message;
string name = (address < registerNames.size() ? registerNames[address] : string("SI_UNKNOWN"));
if(mode == Read) {
message = {name.split("|").first(), " => ", hex(data, 8L)};
message = {::nall::split(name, "|").front(), " => ", hex(data, 8L)};
}
if(mode == Write) {
message = {name.split("|").last(), " <= ", hex(data, 8L)};
message = {::nall::split(name, "|").back(), " <= ", hex(data, 8L)};
}
tracer.io->notify(message);
}
Expand Down
4 changes: 2 additions & 2 deletions ares/n64/vi/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ auto VI::Debugger::io(bool mode, u32 address, u32 data) -> void {
string message;
string name = (address < registerNames.size() ? registerNames[address] : string("VI_UNKNOWN"));
if(mode == Read) {
message = {name.split("|").first(), " => ", hex(data, 8L)};
message = {::nall::split(name, "|").front(), " => ", hex(data, 8L)};
}
if(mode == Write) {
message = {name.split("|").last(), " <= ", hex(data, 8L)};
message = {::nall::split(name, "|").back(), " <= ", hex(data, 8L)};
}
tracer.io->notify(message);
}
Expand Down
4 changes: 2 additions & 2 deletions ares/ngp/cpu/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ auto CPU::Debugger::instruction() -> void {
if(unlikely(tracer.systemCall->enabled())) {
auto PC = self.TLCS900H::load(TLCS900H::PC);
if(!PC) return;
if(auto vectorID = nall::index_of(vectors, n24(PC))) {
if(auto vectorID = ::nall::index_of(vectors, n24(PC))) {
auto RA3 = self.TLCS900H::load(TLCS900H::RA3);
auto RC3 = self.TLCS900H::load(TLCS900H::RC3);
auto RB3 = self.TLCS900H::load(TLCS900H::RB3);
Expand Down Expand Up @@ -162,7 +162,7 @@ auto CPU::Debugger::instruction() -> void {
name = {"VECT_UNKNOWN[$", hex(*vectorID, 2L), "]"};
break;
}
tracer.systemCall->notify(string{name, "(", nall::merge(args, ", "), ")"});
tracer.systemCall->notify(string{name, "(", ::nall::merge(args, ", "), ")"});
}
}

Expand Down
14 changes: 10 additions & 4 deletions ares/ps1/peripheral/dualshock/dualshock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,8 @@ auto DualShock::bus(u8 data) -> u8 {

//if there is data in the output queue, return that
if(outputData.size() > 0) {
output = outputData.front(); outputData.erase(outputData.begin());
output = outputData.front();
outputData.erase(outputData.begin());
commandStep++;
if(outputData.size() == 0) {
commandStep = 0;
Expand Down Expand Up @@ -136,11 +137,16 @@ auto DualShock::bus(u8 data) -> u8 {

//Global commands: these work during any operation mode
switch(input) {
case 0x42: { auto v = readPad(); outputData.insert(outputData.end(), v.begin(), v.end()); } break;
case 0x42: {
auto v = readPad();
outputData.insert(outputData.end(), v.begin(), v.end());
} break;
case 0x43: {
if(configMode) { outputData.insert(outputData.end(), {0x00,0x00,0x00,0x00,0x00,0x00}); }
else { auto v = readPad(); outputData.insert(outputData.end(), v.begin(), v.end()); }
break;
else {
auto v = readPad();
outputData.insert(outputData.end(), v.begin(), v.end());
} break;
default:
if(configMode) {
switch(input) {
Expand Down
7 changes: 4 additions & 3 deletions ares/sfc/cartridge/load.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ auto Cartridge::loadBoard(string board) -> Markup::Node {
auto id = leaf.text();
bool matched = id == board;
if(!matched && id.match("*(*)*")) {
auto part = id.transform("()", "||").split("|");
for(auto& revision : part(1).split(",")) {
if(string{part(0), revision, part(2)} == board) matched = true;
auto part = ::nall::split(id.transform("()", "||"), "|");
part.resize(3);
for(auto& revision : ::nall::split(part[1], ",")) {
if(string{part[0], revision, part[2]} == board) matched = true;
}
}
if(matched) return leaf;
Expand Down
38 changes: 20 additions & 18 deletions ares/sfc/memory/memory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,18 @@ auto Bus::map(
reader[id] = read;
writer[id] = write;

auto p = addr.split(":", 1L);
auto banks = p(0).split(",");
auto addrs = p(1).split(",");
auto p = ::nall::split(addr, ":", 1L);
p.resize(2);
auto banks = ::nall::split(p[0], ",");
auto addrs = ::nall::split(p[1], ",");
for(auto& bank : banks) {
for(auto& addr : addrs) {
auto bankRange = bank.split("-", 1L);
auto addrRange = addr.split("-", 1L);
u32 bankLo = bankRange(0).hex();
u32 bankHi = bankRange(1, bankRange(0)).hex();
u32 addrLo = addrRange(0).hex();
u32 addrHi = addrRange(1, addrRange(0)).hex();
auto bankRange = ::nall::split(bank, "-", 1L);
auto addrRange = ::nall::split(addr, "-", 1L);
u32 bankLo = bankRange[0].hex();
u32 bankHi = bankRange.size() > 1 ? bankRange[1].hex() : bankRange[0].hex();
u32 addrLo = addrRange[0].hex();
u32 addrHi = addrRange.size() > 1 ? addrRange[1].hex() : addrRange[0].hex();

for(u32 bank = bankLo; bank <= bankHi; bank++) {
for(u32 addr = addrLo; addr <= addrHi; addr++) {
Expand All @@ -77,17 +78,18 @@ auto Bus::map(
}

auto Bus::unmap(const string& addr) -> void {
auto p = addr.split(":", 1L);
auto banks = p(0).split(",");
auto addrs = p(1).split(",");
auto p = ::nall::split(addr, ":", 1L);
p.resize(2);
auto banks = ::nall::split(p[0], ",");
auto addrs = ::nall::split(p[1], ",");
for(auto& bank : banks) {
for(auto& addr : addrs) {
auto bankRange = bank.split("-", 1L);
auto addrRange = addr.split("-", 1L);
u32 bankLo = bankRange(0).hex();
u32 bankHi = bankRange(1, bankRange(0)).hex();
u32 addrLo = addrRange(0).hex();
u32 addrHi = addrRange(1, addrRange(1)).hex();
auto bankRange = ::nall::split(bank, "-", 1L);
auto addrRange = ::nall::split(addr, "-", 1L);
u32 bankLo = bankRange[0].hex();
u32 bankHi = bankRange.size() > 1 ? bankRange[1].hex() : bankRange[0].hex();
u32 addrLo = addrRange[0].hex();
u32 addrHi = addrRange.size() > 1 ? addrRange[1].hex() : addrRange[0].hex();

for(u32 bank = bankLo; bank <= bankHi; bank++) {
for(u32 addr = addrLo; addr <= addrHi; addr++) {
Expand Down
Loading
Loading