diff --git a/higan/emulator/emulator.hpp b/higan/emulator/emulator.hpp index 40b6ad4c..8a7619ab 100644 --- a/higan/emulator/emulator.hpp +++ b/higan/emulator/emulator.hpp @@ -12,7 +12,7 @@ using namespace nall; namespace Emulator { static const string Name = "higan"; - static const string Version = "101.18"; + static const string Version = "101.19"; static const string Author = "byuu"; static const string License = "GPLv3"; static const string Website = "http://byuu.org/"; diff --git a/higan/fc/cartridge/cartridge.cpp b/higan/fc/cartridge/cartridge.cpp index 3f5dcec0..6c40e570 100644 --- a/higan/fc/cartridge/cartridge.cpp +++ b/higan/fc/cartridge/cartridge.cpp @@ -29,8 +29,8 @@ auto Cartridge::load() -> bool { if(!board) return false; Hash::SHA256 sha; - sha.data(board->prgrom.data, board->prgrom.size); - sha.data(board->chrrom.data, board->chrrom.size); + sha.input(board->prgrom.data, board->prgrom.size); + sha.input(board->chrrom.data, board->chrrom.size); information.sha256 = sha.digest(); return true; } diff --git a/higan/processor/lr35902/disassembler.cpp b/higan/processor/lr35902/disassembler.cpp index 8cc962f8..68fefd09 100644 --- a/higan/processor/lr35902/disassembler.cpp +++ b/higan/processor/lr35902/disassembler.cpp @@ -1,3 +1,7 @@ +static auto hex(uintmax value, long precision = 0, char padchar = '0') -> string { + return nall::hex(value, precision, padchar); +} + auto LR35902::disassemble(uint16 pc) -> string { char output[80]; memset(output, ' ', sizeof output); diff --git a/higan/processor/r65816/disassembler.cpp b/higan/processor/r65816/disassembler.cpp index 991e8a1b..c7c0c8af 100644 --- a/higan/processor/r65816/disassembler.cpp +++ b/higan/processor/r65816/disassembler.cpp @@ -1,3 +1,7 @@ +static auto hex(uintmax value, long precision = 0, char padchar = '0') -> string { + return nall::hex(value, precision, padchar); +} + auto R65816::dreadb(uint24 addr) -> uint8 { if((addr & 0x40ffff) >= 0x2000 && (addr & 0x40ffff) <= 0x5fff) { //$00-3f|80-bf:2000-5fff diff --git a/higan/sfc/GNUmakefile b/higan/sfc/GNUmakefile index a47a9734..045a9cf6 100644 --- a/higan/sfc/GNUmakefile +++ b/higan/sfc/GNUmakefile @@ -3,14 +3,13 @@ processors += r65816 spc700 arm gsu hg51b upd96050 objects += sfc-interface sfc-system sfc-controller objects += sfc-cartridge sfc-memory objects += sfc-cpu sfc-smp sfc-dsp sfc-ppu -objects += sfc-expansion sfc-satellaview sfc-superdisc -objects += sfc-21fx +objects += sfc-expansion sfc-satellaview sfc-21fx objects += sfc-icd2 sfc-mcc sfc-nss sfc-event objects += sfc-sa1 sfc-superfx objects += sfc-armdsp sfc-hitachidsp sfc-necdsp objects += sfc-epsonrtc sfc-sharprtc -objects += sfc-spc7110 sfc-sdd1 sfc-obc1 -objects += sfc-msu1 +objects += sfc-spc7110 sfc-sdd1 +objects += sfc-obc1 sfc-msu1 objects += sfc-bsmemory sfc-sufamiturbo obj/sfc-interface.o: sfc/interface/interface.cpp $(call rwildcard,sfc/interface) @@ -26,7 +25,6 @@ obj/sfc-ppu.o: sfc/ppu/ppu.cpp $(call rwildcard,sfc/ppu/) obj/sfc-expansion.o: sfc/expansion/expansion.cpp $(call rwildcard,sfc/expansion/) obj/sfc-satellaview.o: sfc/expansion/satellaview/satellaview.cpp $(call rwildcard,sfc/expansion/satellaview/) -obj/sfc-superdisc.o: sfc/expansion/superdisc/superdisc.cpp $(call rwildcard,sfc/expansion/superdisc/) obj/sfc-21fx.o: sfc/expansion/21fx/21fx.cpp $(call rwildcard,sfc/expansion/21fx/) obj/sfc-icd2.o: sfc/coprocessor/icd2/icd2.cpp $(call rwildcard,sfc/coprocessor/icd2/) diff --git a/higan/sfc/cartridge/cartridge.cpp b/higan/sfc/cartridge/cartridge.cpp index 62510053..959ae662 100644 --- a/higan/sfc/cartridge/cartridge.cpp +++ b/higan/sfc/cartridge/cartridge.cpp @@ -52,8 +52,8 @@ auto Cartridge::load() -> bool { //Sufami Turbo else if(cartridge.has.SufamiTurboSlots) { Hash::SHA256 sha; - sha.data(sufamiturboA.rom.data(), sufamiturboA.rom.size()); - sha.data(sufamiturboB.rom.data(), sufamiturboB.rom.size()); + sha.input(sufamiturboA.rom.data(), sufamiturboA.rom.size()); + sha.input(sufamiturboB.rom.data(), sufamiturboB.rom.size()); information.sha256 = sha.digest(); } @@ -61,22 +61,22 @@ auto Cartridge::load() -> bool { else { Hash::SHA256 sha; //hash each ROM image that exists; any with size() == 0 is ignored by sha256_chunk() - sha.data(rom.data(), rom.size()); - sha.data(mcc.rom.data(), mcc.rom.size()); - sha.data(sa1.rom.data(), sa1.rom.size()); - sha.data(superfx.rom.data(), superfx.rom.size()); - sha.data(hitachidsp.rom.data(), hitachidsp.rom.size()); - sha.data(spc7110.prom.data(), spc7110.prom.size()); - sha.data(spc7110.drom.data(), spc7110.drom.size()); - sha.data(sdd1.rom.data(), sdd1.rom.size()); + sha.input(rom.data(), rom.size()); + sha.input(mcc.rom.data(), mcc.rom.size()); + sha.input(sa1.rom.data(), sa1.rom.size()); + sha.input(superfx.rom.data(), superfx.rom.size()); + sha.input(hitachidsp.rom.data(), hitachidsp.rom.size()); + sha.input(spc7110.prom.data(), spc7110.prom.size()); + sha.input(spc7110.drom.data(), spc7110.drom.size()); + sha.input(sdd1.rom.data(), sdd1.rom.size()); //hash all firmware that exists vector buffer; buffer = armdsp.firmware(); - sha.data(buffer.data(), buffer.size()); + sha.input(buffer.data(), buffer.size()); buffer = hitachidsp.firmware(); - sha.data(buffer.data(), buffer.size()); + sha.input(buffer.data(), buffer.size()); buffer = necdsp.firmware(); - sha.data(buffer.data(), buffer.size()); + sha.input(buffer.data(), buffer.size()); //finalize hash information.sha256 = sha.digest(); } diff --git a/higan/sfc/coprocessor/msu1/msu1.cpp b/higan/sfc/coprocessor/msu1/msu1.cpp index 2a9355eb..f7912c66 100644 --- a/higan/sfc/coprocessor/msu1/msu1.cpp +++ b/higan/sfc/coprocessor/msu1/msu1.cpp @@ -116,9 +116,8 @@ auto MSU1::audioOpen() -> void { auto MSU1::readIO(uint24 addr, uint8) -> uint8 { cpu.synchronize(*this); - addr = 0x2000 | (addr & 7); - switch(addr) { + switch(0x2000 | (addr & 7)) { case 0x2000: return ( Revision << 0 @@ -145,9 +144,8 @@ auto MSU1::readIO(uint24 addr, uint8) -> uint8 { auto MSU1::writeIO(uint24 addr, uint8 data) -> void { cpu.synchronize(*this); - addr = 0x2000 | (addr & 7); - switch(addr) { + switch(0x2000 | (addr & 7)) { case 0x2000: io.dataSeekOffset.byte(0) = data; break; case 0x2001: io.dataSeekOffset.byte(1) = data; break; case 0x2002: io.dataSeekOffset.byte(2) = data; break; @@ -157,6 +155,8 @@ auto MSU1::writeIO(uint24 addr, uint8 data) -> void { break; case 0x2004: io.audioTrack.byte(0) = data; break; case 0x2005: io.audioTrack.byte(1) = data; + io.audioPlay = false; + io.audioRepeat = false; io.audioPlayOffset = 8; if(io.audioTrack == io.audioResumeTrack) { io.audioPlayOffset = io.audioResumeOffset; @@ -171,7 +171,7 @@ auto MSU1::writeIO(uint24 addr, uint8 data) -> void { case 0x2007: if(io.audioBusy) break; if(io.audioError) break; - io.audioPlay = data.bit(0); + io.audioPlay = data.bit(0); io.audioRepeat = data.bit(1); bool audioResume = data.bit(2); if(!io.audioPlay && audioResume) { diff --git a/higan/sfc/expansion/expansion.hpp b/higan/sfc/expansion/expansion.hpp index f4ed51f5..63982a69 100644 --- a/higan/sfc/expansion/expansion.hpp +++ b/higan/sfc/expansion/expansion.hpp @@ -5,5 +5,4 @@ struct Expansion : Thread { }; #include -#include #include diff --git a/higan/sfc/expansion/superdisc/nec.cpp b/higan/sfc/expansion/superdisc/nec.cpp deleted file mode 100644 index fd68215e..00000000 --- a/higan/sfc/expansion/superdisc/nec.cpp +++ /dev/null @@ -1,202 +0,0 @@ -//NEC D75P308GF -//4-bit microcontroller -//CD-player interface - -auto SuperDisc::necPollIRQ() -> uint8 { - auto match = [&](const string& compare) -> bool { - if(nec.command.size() != compare.size()) return false; - for(auto n : range(nec.command)) { - char c = compare[n]; - if(c == '?') continue; - if(c >= '0' && c <= '9') c -= '0'; - if(c >= 'a' && c <= 'f') c -= 'a' - 10; - if(nec.command[n] != c) return false; - } - return true; - }; - - //access ??/??/?? - if(match("b" )) return 0x8f; - if(match("b?" )) return 0x8f; - if(match("b??" )) return 0x8f; - if(match("b???" )) return 0x8f; - if(match("b????" )) return 0x8f; - if(match("b?????" )) return 0x8f; - if(match("b??????" )) return 0x8f; - if(match("b??????f")) { - nec.command.reset(); - return 0x8f; - } - - //access t??/i?? - if(match("c" )) return 0x8f; - if(match("c?" )) return 0x8f; - if(match("c??" )) return 0x8f; - if(match("c???" )) return 0x8f; - if(match("c????" )) return 0x8f; - if(match("c????f")) { - nec.command.reset(); - return 0x8f; - } - - //d-prefixes - if(match("d" )) return 0x8f; - if(match("d0")) return 0x8f; - if(match("d1")) return 0x8f; - if(match("d4")) return 0x8f; - if(match("d5")) return 0x8f; - - //stop - if(match("d01" )) return 0x8f; - if(match("d01f")) { - nec.command.reset(); - return 0x8f; - } - - //play - if(match("d02" )) return 0x8f; - if(match("d02f")) { - nec.command.reset(); - return 0x8f; - } - - //pause - if(match("d03" )) return 0x8f; - if(match("d03f")) { - nec.command.reset(); - return 0x8f; - } - - //open / close - if(match("d04" )) return 0x8f; - if(match("d04f")) { - nec.command.reset(); - return 0x8f; - } - - //fast forward - if(match("d10" )) return 0x8f; - if(match("d10f")) { - nec.command.reset(); - return 0x8f; - } - - //fast reverse - if(match("d11" )) return 0x8f; - if(match("d11f")) { - nec.command.reset(); - return 0x8f; - } - - //forward - if(match("d12" )) return 0x8f; - if(match("d12f")) { - nec.command.reset(); - return 0x8f; - } - - //reverse - if(match("d13" )) return 0x8f; - if(match("d13f")) { - nec.command.reset(); - return 0x8f; - } - - //key direct - if(match("d40" )) return 0x8f; - if(match("d40f")) { - nec.command.reset(); - return 0x8f; - } - - //key ignore - if(match("d41" )) return 0x8f; - if(match("d41f")) { - nec.command.reset(); - return 0x8f; - } - - //continuous play - if(match("d42" )) return 0x8f; - if(match("d42f")) { - nec.command.reset(); - return 0x8f; - } - - //auto track pause - if(match("d43" )) return 0x8f; - if(match("d43f")) { - nec.command.reset(); - return 0x8f; - } - - //auto index pause - if(match("d44" )) return 0x8f; - if(match("d44f")) { - nec.command.reset(); - return 0x8f; - } - - //normal speed - if(match("d45" )) return 0x8f; - if(match("d45f")) { - nec.command.reset(); - return 0x8f; - } - - //double speed - if(match("d46" )) return 0x8f; - if(match("d46f")) { - nec.command.reset(); - return 0x8f; - } - - //q-data request - if(match("d50" )) return 0x8f; - if(match("d50f" )) return 0x8f; - if(match("d50f?" )) return 0x80; - if(match("d50f??" )) return 0x80; - if(match("d50f???" )) return 0x80; - if(match("d50f????" )) return 0x80; - if(match("d50f?????" )) return 0x80; - if(match("d50f??????" )) return 0x80; - if(match("d50f???????" )) return 0x80; - if(match("d50f????????" )) return 0x80; - if(match("d50f?????????" )) return 0x80; - if(match("d50f??????????" )) return 0x80; - if(match("d50f???????????" )) return 0x80; - if(match("d50f????????????" )) return 0x80; - if(match("d50f?????????????" )) return 0x80; - if(match("d50f??????????????" )) return 0x80; - if(match("d50f???????????????" )) return 0x80; - if(match("d50f????????????????" )) return 0x80; - if(match("d50f????????????????f")) { - nec.command.reset(); - return 0x8f; - } - - //status request - if(match("d51" )) return 0x8f; - if(match("d51f" )) return 0x8f; - if(match("d51f0" )) return 0x81; - if(match("d51f01" )) return 0x80; - if(match("d51f012" )) return 0x81; - if(match("d51f0123" )) return 0x80; - if(match("d51f01234" )) return 0x80; - if(match("d51f01234f")) { - nec.command.reset(); - return 0x8f; - } - - nec.command.reset(); - return 0x00; -} - -auto SuperDisc::necReadData() -> uint8 { - return nec.data; -} - -auto SuperDisc::necWriteCommand(uint4 data) -> void { - if(nec.command.size() >= 32) return; - nec.command.append(data); -} diff --git a/higan/sfc/expansion/superdisc/sony.cpp b/higan/sfc/expansion/superdisc/sony.cpp deleted file mode 100644 index b32949c6..00000000 --- a/higan/sfc/expansion/superdisc/sony.cpp +++ /dev/null @@ -1,143 +0,0 @@ -//Sony CXD1800Q -//CD-ROM decoder - -auto SuperDisc::sonyPollIRQ() -> uint8 { - return 0x00; -} - -auto SuperDisc::sonyReadData() -> uint8 { - uint8 command = sony.command++; - - auto match = [&](const string& compare) -> bool { - char hi = compare[0]; - if(hi == '?') hi = 0; - if(hi >= '0' && hi <= '9') hi -= '0'; - if(hi >= 'a' && hi <= 'f') hi -= 'a' - 10; - if(hi != '?' && hi != command.bits(4,7)) return false; - - char lo = compare[1]; - if(lo == '?') lo = 0; - if(lo >= '0' && lo <= '9') lo -= '0'; - if(lo >= 'a' && lo <= 'f') lo -= 'a' - 10; - if(lo != '?' && lo != command.bits(0,3)) return false; - - return true; - }; - - //DMA - if(match("00")) return 0x00; - - //INST - if(match("01")) return 0x10; - - //STS - if(match("02")) return 0x00; - - //HFLG - if(match("03")) return 0x00; - - //HMIN - if(match("?4")) return 0x00; - - //HSEC - if(match("?5")) return 0x00; - - //HBLK - if(match("?6")) return 0x00; - - //HMOD - if(match("?7")) return 0x00; - - //SFIL - if(match("08")) return 0x00; - - //SCH - if(match("09")) return 0x00; - - //SMOD - if(match("0a")) return 0x00; - - //SCI - if(match("0b")) return 0x00; - - //CMAD - if(match("0c")) return 0x00; - if(match("0d")) return 0x00; - - //MDFM - if(match("?e")) return 0x00; - - //ADPC - if(match("?f")) return 0x00; - - //DMXF - if(match("18")) return 0x00; - if(match("19")) return 0x00; - - //DMAD - if(match("1a")) return 0x00; - if(match("1b")) return 0x00; - - //DRAD - if(match("1c")) return 0x00; - if(match("1d")) return 0x00; - - return 0x00; -} - -auto SuperDisc::sonyWriteCommand(uint8 data) -> void { - sony.command = data; -} - -auto SuperDisc::sonyWriteData(uint8 data) -> void { - uint8 command = sony.command++; - - auto match = [&](const string& compare) -> bool { - char hi = compare[0]; - if(hi == '?') hi = 0; - if(hi >= '0' && hi <= '9') hi -= '0'; - if(hi >= 'a' && hi <= 'f') hi -= 'a' - 10; - if(hi != '?' && hi != command.bits(4,7)) return false; - - char lo = compare[1]; - if(lo == '?') lo = 0; - if(lo >= '0' && lo <= '9') lo -= '0'; - if(lo >= 'a' && lo <= 'f') lo -= 'a' - 10; - if(lo != '?' && lo != command.bits(0,3)) return false; - - return true; - }; - - //DRIF - if(match("?1")) return; - - //CHCT - if(match("?2")) return; - - //DECT - if(match("?3")) return; - - //INMS - if(match("?4")) return; - - //INCL - if(match("?5")) return; - - //CI - if(match("?6")) return; - - //DMAD - if(match("?7")) return; - if(match("?8")) return; - - //DMXF - if(match("?9")) return; - if(match("?a")) return; - - //DRAD - if(match("?b")) return; - if(match("?c")) return; - - //PLBA - if(match("0d")) return; -} diff --git a/higan/sfc/expansion/superdisc/superdisc.cpp b/higan/sfc/expansion/superdisc/superdisc.cpp deleted file mode 100644 index 1ccb907e..00000000 --- a/higan/sfc/expansion/superdisc/superdisc.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#include - -namespace SuperFamicom { - -#include "nec.cpp" -#include "sony.cpp" - -SuperDisc::SuperDisc() { - create(&SuperDisc::Enter, 75); - - bus.map({&SuperDisc::read, this}, {&SuperDisc::write, this}, "00-3f,80-bf:21e0-21e5"); - - r.irqEnable = 0x00; - - nec.command.reset(); - nec.data = 0x00; - - sony.command = 0x00; - sony.data = 0x00; -} - -SuperDisc::~SuperDisc() { - scheduler.remove(*this); - bus.unmap("00-3f,80-bf:21e0-21e5"); -} - -auto SuperDisc::Enter() -> void { - while(true) scheduler.synchronize(), peripherals.expansionPort->main(); -} - -auto SuperDisc::main() -> void { - cpu.r.irq = 0; - - if(r.irqEnable.bit(3)) { - cpu.r.irq = 1; - nec.data = necPollIRQ(); - } - - if(r.irqEnable.bit(2)) { - cpu.r.irq = 1; - sony.data = sonyPollIRQ(); - } - - step(1); - synchronize(cpu); -} - -auto SuperDisc::read(uint24 addr, uint8 data) -> uint8 { - addr = 0x21e0 | (addr & 7); - - if(addr == 0x21e0) { - data = 0x00; - } - - if(addr == 0x21e1) { - cpu.r.irq = 0; - data = necReadData(); - } - - if(addr == 0x21e2) { - data = 0x00; - } - - if(addr == 0x21e3) { - cpu.r.irq = 0; - data = sonyReadData(); - } - - if(addr == 0x21e4) { - data = r.irqEnable; - } - - if(addr == 0x21e5) { - data = 0x00; - } - - return data; -} - -auto SuperDisc::write(uint24 addr, uint8 data) -> void { - addr = 0x21e0 | (addr & 7); - - if(addr == 0x21e0) { - } - - if(addr == 0x21e1) { - necWriteCommand(data.bits(0,3)); - } - - if(addr == 0x21e2) { - sonyWriteCommand(data); - } - - if(addr == 0x21e3) { - sonyWriteData(data); - } - - if(addr == 0x21e4) { - r.irqEnable = data; - } - - if(addr == 0x21e5) { - } -} - -} diff --git a/higan/sfc/expansion/superdisc/superdisc.hpp b/higan/sfc/expansion/superdisc/superdisc.hpp deleted file mode 100644 index 6dd98042..00000000 --- a/higan/sfc/expansion/superdisc/superdisc.hpp +++ /dev/null @@ -1,38 +0,0 @@ -struct SuperDisc : Expansion { - SuperDisc(); - ~SuperDisc(); - - static auto Enter() -> void; - auto main() -> void; - - auto read(uint24 addr, uint8 data) -> uint8; - auto write(uint24 addr, uint8 data) -> void; - - //nec.cpp - auto necPollIRQ() -> uint8; - auto necReadData() -> uint8; - auto necWriteCommand(uint4 data) -> void; - - //sony.cpp - auto sonyPollIRQ() -> uint8; - auto sonyReadData() -> uint8; - auto sonyWriteCommand(uint8 data) -> void; - auto sonyWriteData(uint8 data) -> void; - -private: - struct Registers { - uint8 irqEnable; - } r; - - //NEC - struct NEC { - vector command; - uint8 data; - } nec; - - //Sony - struct Sony { - uint8 command; - uint8 data; - } sony; -}; diff --git a/higan/sfc/interface/interface.cpp b/higan/sfc/interface/interface.cpp index 76d7a8bc..211b16a5 100644 --- a/higan/sfc/interface/interface.cpp +++ b/higan/sfc/interface/interface.cpp @@ -108,10 +108,6 @@ Interface::Interface() { expansionPort.devices.append(device); } - { Device device{ID::Device::SuperDisc, "Super Disc"}; - expansionPort.devices.append(device); - } - { Device device{ID::Device::S21FX, "21fx"}; expansionPort.devices.append(device); } diff --git a/higan/sfc/interface/interface.hpp b/higan/sfc/interface/interface.hpp index 5a55b50a..4ff0eaa9 100644 --- a/higan/sfc/interface/interface.hpp +++ b/higan/sfc/interface/interface.hpp @@ -28,7 +28,6 @@ struct ID { Justifiers, Satellaview, - SuperDisc, S21FX, };}; }; diff --git a/higan/sfc/system/peripherals.cpp b/higan/sfc/system/peripherals.cpp index 522afe02..dbd0a8f6 100644 --- a/higan/sfc/system/peripherals.cpp +++ b/higan/sfc/system/peripherals.cpp @@ -52,7 +52,6 @@ auto Peripherals::connect(uint port, uint device) -> void { switch(device) { default: case ID::Device::None: expansionPort = new Expansion; break; case ID::Device::Satellaview: expansionPort = new Satellaview; break; - case ID::Device::SuperDisc: expansionPort = new SuperDisc; break; case ID::Device::S21FX: expansionPort = new S21FX; break; } } diff --git a/hiro/gtk/desktop.cpp b/hiro/gtk/desktop.cpp index 3a58829e..66603bb0 100644 --- a/hiro/gtk/desktop.cpp +++ b/hiro/gtk/desktop.cpp @@ -17,26 +17,24 @@ auto pDesktop::workspace() -> Geometry { #endif #if defined(DISPLAY_XORG) - XlibDisplay* display = XOpenDisplay(nullptr); + auto display = XOpenDisplay(nullptr); int screen = DefaultScreen(display); - static Atom atom = XlibNone; - if(atom == XlibNone) atom = XInternAtom(display, "_NET_WORKAREA", True); - int format; unsigned char* data = nullptr; unsigned long items, after; - Atom returnAtom; + XlibAtom returnAtom; int result = XGetWindowProperty( - display, RootWindow(display, screen), atom, 0, 4, False, XA_CARDINAL, &returnAtom, &format, &items, &after, &data + display, RootWindow(display, screen), XInternAtom(display, "_NET_WORKAREA", XlibTrue), 0, 4, XlibFalse, + XInternAtom(display, "CARDINAL", XlibTrue), &returnAtom, &format, &items, &after, &data ); XCloseDisplay(display); - if(result == Success && returnAtom == XA_CARDINAL && format == 32 && items == 4) { - unsigned long *workarea = (unsigned long*)data; - return {(signed)workarea[0], (signed)workarea[1], (signed)workarea[2], (signed)workarea[3]}; + if(result == Success && returnAtom == XInternAtom(display, "CARDINAL", XlibTrue) && format == 32 && items == 4) { + unsigned long* workarea = (unsigned long*)data; + return {(int)workarea[0], (int)workarea[1], (int)workarea[2], (int)workarea[3]}; } return { diff --git a/hiro/qt/widget/canvas.cpp b/hiro/qt/widget/canvas.cpp index fff7fa11..8a9fd113 100644 --- a/hiro/qt/widget/canvas.cpp +++ b/hiro/qt/widget/canvas.cpp @@ -66,10 +66,10 @@ auto pCanvas::_rasterize() -> void { qtImageHeight = height; if(!qtImage) qtImage = new QImage(width, height, QImage::Format_ARGB32); - auto buffer = (uint32*)qtImage->bits(); + auto buffer = (uint32_t*)qtImage->bits(); if(auto& icon = state().icon) { - memory::copy(buffer, state().icon.data(), width * height * sizeof(uint32)); + memory::copy(buffer, state().icon.data(), width * height * sizeof(uint32_t)); } else if(auto& gradient = state().gradient) { auto& colors = gradient.state.colors; image fill; @@ -77,7 +77,7 @@ auto pCanvas::_rasterize() -> void { fill.gradient(colors[0].value(), colors[1].value(), colors[2].value(), colors[3].value()); memory::copy(buffer, fill.data(), fill.size()); } else { - uint32 color = state().color.value(); + uint32_t color = state().color.value(); for(auto n : range(width * height)) buffer[n] = color; } } diff --git a/icarus/Database/Super Famicom.bml b/icarus/Database/Super Famicom.bml index 4e168bff..f43e65f3 100644 --- a/icarus/Database/Super Famicom.bml +++ b/icarus/Database/Super Famicom.bml @@ -1,3 +1,48 @@ +cartridge sha256:b820ef79c16b3f43139cc9622c685020db3e87364c3a0f3946242bff93b787c8 + :board region=ntsc + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSN-AZ4K-KOR + : board: SHVC-1A0N-20 + : revision: SNS-AZ4K-0 + : name: Dragon Ball Z - Chomutujeon + : title: 드래곤볼Z 초무투전3 + +cartridge sha256:9170aacd61bd2f936818db901451e44c18f3e88fd8d534553c2650ccad082466 + :board region=ntsc + : rom name=program.rom size=0x180000 + : map address=00-3f,80-bf:8000-ffff mask=0x8000 + : ram name=save.ram size=0x2000 + : map address=70-7d,f0-ff:0000-7fff mask=0x8000 + : necdsp model=uPD7725 frequency=8000000 + : map address=60-6f,e0-ef:0000-7fff mask=0x3fff + : prom name=dsp1.program.rom size=0x1800 + : drom name=dsp1.data.rom size=0x800 + : dram name=dsp1.data.ram size=0x200 volatile + : + :information + : serial: SNSN-3D-KOR + : board: SHVC-2B3B-01 + : revision: SKOR-3D-0 + : name: Hanguk Pro Yagu + : title: 한국프로야구 + +cartridge sha256:1bb9ba72dfec638ed4cc7c721e31fde2f3e08d160b266a62b6e3997f711cf7cd + :board region=ntsc + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSN-II-KOR + : board: SHVC-1A0N-20 + : revision: SKOR-II-0 + : name: Taekwondo + : title: 태권도 + cartridge sha256:dd499445275fca6692c0487a8bd70a23f6c8e78e766df0e3c58fbbe53f8adb06 :board region=ntsc : rom name=program.rom size=0x100000 @@ -8,9 +53,37 @@ cartridge sha256:dd499445275fca6692c0487a8bd70a23f6c8e78e766df0e3c58fbbe53f8adb0 :information : serial: SNS-ZF-CAN : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-ZF-0 : name: Legende de Zelda - La Triforce des Dieux, La - : title: La Legende de Zelda: La Triforce des Dieux + : title: La Légende de Zelda: La Triforce des Dieux + +cartridge sha256:ffcdce24171d9dc225a8a8b52e7d24a7832873f85135767359952537a8b9f8f1 + :board region=pal + : rom name=program.rom size=0x180000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : ram name=save.ram size=0x2000 + : map address=10-1f,30-3f,90-9f,b0-bf:6000-7fff mask=0xe000 + : + :information + : serial: SNSP-U4-ESP + : board: SHVC-2J3M-11 + : revision: SPAL-U4-0 + : name: World Cup USA '94 + : title: World Cup USA '94 + +cartridge sha256:ffd634dbfa9ad88a81cfc59adcc889c15e03730536c171d358bf58b37c6bca6a + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ACCP-EUR + : board: SHVC-1A0N-30 + : revision: SPAL-ACCP-0 + : name: Air Cavalry + : title: Air Cavalry cartridge sha256:41084f83e269d46b9d589f11c802a15e84fede57d604c7986053f2858f757adc :board region=pal @@ -21,10 +94,183 @@ cartridge sha256:41084f83e269d46b9d589f11c802a15e84fede57d604c7986053f2858f757ad :information : serial: SNSP-ASDP-EUR : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SPAL-ASDP-0 : name: Archer Maclean's Super Dropzone : title: Archer Maclean's Super Dropzone +cartridge sha256:f0cfaab9a4be5b2bac0cb3dafea14cea4cf8d7cbfa562323ab3026466985c9e1 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-A9BP-EUR + : board: SHVC-1A0N-30 + : revision: SPAL-A9BP-0 + : name: Bass Masters Classic - Pro Edition + : title: Bass Masters Classic: Pro Edition + +cartridge sha256:a057383e41bd5735b1c554c555b89fe0ff9b7eb7e9f9d46dbefbdd749c8d2181 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ABLP-EUR + : board: SHVC-1A0N-20 + : revision: SPAL-ABLP-0 + : name: Brutal - Paws of Fury + : title: Brutal: Paws of Fury + +cartridge sha256:3545306505c463c627bc4ced91ff4413481c945a658860ddc1f6e8e7b4cc6144 + :board region=pal + : rom name=program.rom size=0x180000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ACNP-EUR + : board: SHVC-2A0N-11 + : revision: SPAL-ACNP-0 + : name: Cannon Fodder + : title: Cannon Fodder + +cartridge sha256:0f37da5beb0beb5e8f8c34443bf0734575649f8222074e3394926c3b697589cc + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ACAP-EUR + : board: SHVC-1A0N-30 + : revision: SPAL-ACAP-0 + : name: Carrier Aces + : title: Carrier Aces + +cartridge sha256:e1e2cc6b7ef58b512bb8aa6848dd67fce9e5d092ea67e6b4f31f156b060cc2b1 + :board region=pal + : rom name=program.rom size=0x300000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-ACZP-EUR + : board: SHVC-BJ0N-01 + : revision: SPAL-ACZP-0 + : name: Clay Fighter 2 - Judgment Clay + : title: Clay Fighter 2: Judgment Clay + +cartridge sha256:a2dc5ffc82e8d055d030c3f021d8df3ae8b08571c8301cdd1d7652248d6f9b55 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : ram name=save.ram size=0x2000 + : map address=70-7d,f0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ADSP-EUR + : board: SHVC-1A3M-21 + : revision: SPAL-ADSP-0 + : name: Dino Dini's Soccer + : title: Dino Dini's Soccer + +cartridge sha256:574c61ab1a670a79b8dc69445b8f55aa5b4caa95ed0e1504fae8a1e3d336e7f1 + :board region=pal + : rom name=program.rom size=0x400000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : ram name=save.ram size=0x800 + : map address=20-3f,a0-bf:6000-7fff mask=0xe000 + : + :information + : serial: SNSP-A3CP-EUR + : board: SHVC-1J1M-20 + : revision: SPAL-A3CP-0 + : name: Donkey Kong Country 3 - Dixie Kong's Double Trouble + : title: Donkey Kong Country 3: Dixie Kong's Double Trouble + +cartridge sha256:f4cabd80dd20b076ff90bf1f394b5dff5800900fa1fe178a42b6af967fd80c25 + :board region=pal + : rom name=program.rom size=0x280000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-DJ-EUR + : board: SHVC-BJ0N-01 + : revision: SPAL-DJ-0 + : name: Fatal Fury 2 + : title: Fatal Fury 2 + +cartridge sha256:a12391775fa9770f85f383ffaec6441a686c33b2e1800de7c01a79a0b7c93154 + :board region=pal + : rom name=program.rom size=0x300000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-3R-EUR + : board: SHVC-1J0N-20 + : revision: SPAL-3R-0 + : name: Fatal Fury Special + : title: Fatal Fury Special + +cartridge sha256:20af141280d75c29a0981c6a4decfa1835c3613a47636a4ae0967948a7878f7c + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AVSP-EUR + : board: SHVC-1A0N-30 + : revision: SNSP-AVSP-0 + : name: Fever Pitch Soccer + : title: Fever Pitch Soccer + +cartridge sha256:14e8f7963bd71a3d8792952ae0c0def733178ac720417b954ea5cb12cc76dece + :board region=pal + : rom name=program.rom size=0x300000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-AFZP-EUR + : board: SHVC-1J0N-20 + : revision: SPAL-AFZP-0 + : name: Final Fight 3 + : title: Final Fight 3 + +cartridge sha256:21d79cd5382ad5503fdee1c44416a7a425904cebe37bb531d508ef62aa4f2ed0 + :board region=pal + : rom name=program.rom size=0x300000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : ram name=save.ram size=0x2000 + : map address=70-7d,f0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AFKP-EUR + : board: SHVC-1A3M-30 + : revision: SPAL-AFKP-0 + : name: Frank Thomas' Big Hurt Baseball + : title: Frank Thomas' Big Hurt Baseball + +cartridge sha256:0d7a1649915d45b4c6e0752ea06ad353c2b1a590370912c18deeb42986821624 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AGJP-EUR + : board: SHVC-1A0N-20 + : revision: SPAL-AGJP-0 + : name: Ghoul Patrol + : title: Ghoul Patrol + cartridge sha256:6fe482f91a59a71992e14014a0a4e23fb866cf4e870c10d57c81b0c20ae6688e :board region=pal : rom name=program.rom size=0x100000 @@ -34,7 +280,7 @@ cartridge sha256:6fe482f91a59a71992e14014a0a4e23fb866cf4e870c10d57c81b0c20ae6688 :information : serial: SNSP-3U-EUR : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SPAL-3U-0 : name: International Superstar Soccer : title: International Superstar Soccer @@ -47,10 +293,49 @@ cartridge sha256:2516843fa405ab1aa1f242b57f19977519aefb68599474d2c7065aaef88ecb8 :information : serial: SNSP-AJGP-EUR : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SPAL-AJGP-0 : name: Jungle Strike : title: Jungle Strike +cartridge sha256:07386ef7dfcc70a67beb01fa7e2300249914b2ce0b010a74cbfbf0714c32fcf1 + :board region=pal + : rom name=program.rom size=0x280000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AJLP-EUR + : board: SHVC-BA0N-01 + : revision: SPAL-AJLP-0 + : name: Justice League Task Force + : title: Justice League Task Force + +cartridge sha256:4f83fc7c1fa4fae99568ae8e049a45e6e65176761fe3ac74315bee8eff846fd4 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-AHZP-EUR + : board: SHVC-1J0N-20 + : revision: SPAL-AHZP-0 + : name: Marvel Super Heroes in War of the Gems + : title: Marvel Super Heroes in War of the Gems + +cartridge sha256:9da7274457995b39ae7b00387c1eaab92f1fdb0beac55372726c3a3af1cb8f7e + :board region=pal + : rom name=program.rom size=0x180000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-A35P-EUR + : board: SHVC-1J0N-20 + : revision: SPAL-A35P-0 + : name: MechWarrior 3050 + : title: MechWarrior 3050 + cartridge sha256:964f8391806bc8d674f24aa2f201b20982d2f2f3e3efb2f730c4a34a289c3007 :board region=pal : rom name=program.rom size=0x300000 @@ -60,7 +345,7 @@ cartridge sha256:964f8391806bc8d674f24aa2f201b20982d2f2f3e3efb2f730c4a34a289c300 :information : serial: SNSP-28-EUR : board: SHVC-BJ0N-01 - : revision: 1.1 + : revision: SPAL-28-1 : name: Mortal Kombat 2 : title: Mortal Kombat II @@ -73,10 +358,51 @@ cartridge sha256:b7fa4b79590ecdef2d0303b5cbccf1e1a3af31fca289652acbdb3d5381137f2 :information : serial: SNSP-A3MP-EUR : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SPAL-A3MP-0 : name: Mortal Kombat 3 : title: Mortal Kombat 3 +cartridge sha256:aa3f0608fa8723a21a4a5121f04098c53a76b5188f4dc30fcc26db9232c734d8 + :board region=pal + : rom name=program.rom size=0x180000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : ram name=save.ram size=0x2000 + : map address=20-3f,a0-bf:6000-7fff mask=0xe000 + : + :information + : serial: SNSP-A6HP-EUR + : board: SHVC-1J3M-20 + : revision: SPAL-A6HP-0 + : name: NHL '96 + : title: NHL '96 + +cartridge sha256:d9860f4f9b5e71290c5419b88c49b545f947a35cfe0549c2f32e54f05bc55815 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-AO9P-EUR + : board: SHVC-1J0N-20 + : revision: SPAL-AO9P-0 + : name: Olympic Summer Games + : title: Olympic Summer Games + +cartridge sha256:908b1b18403a1330e1af5844f8c9d11a66279ff107cf14b56e6be849fbd4a7f9 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-A24P-EUR + : board: SHVC-1A0N-30 + : revision: SPAL-A24P-0 + : name: Phantom 2040 + : title: Phantom 2040 + cartridge sha256:166fe888ac03f88cce5759c1008021082bd81254aab8fea8203cdb13080709d7 :board region=pal : rom name=program.rom size=0x100000 @@ -86,10 +412,62 @@ cartridge sha256:166fe888ac03f88cce5759c1008021082bd81254aab8fea8203cdb13080709d :information : serial: SNSP-APFP-EUR : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SPAL-APFP-0 : name: Pinball Fantasies : title: Pinball Fantasies +cartridge sha256:1744a87d4817be07948e1b37b59c4de49c85e6aec2cf49879c7b9649d1b1fc90 + :board region=pal + : rom name=program.rom size=0x300000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-AR9P-EUR + : board: SHVC-BJ0N-20 + : revision: SPAL-AR9P-0 + : name: Primal Rage + : title: Primal Rage + +cartridge sha256:00e2c72fd82d78c5bb6f144101df6145d0a7f68dd77632f49969f13c5623c59a + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ARQP-EUR + : board: SHVC-1A0N-30 + : revision: SPAL-ARQP-0 + : name: Realm + : title: Realm + +cartridge sha256:862a53905b9e2ed33bae8e01e755ab6ca9fe2f181567510cb0840ed9a19f20d8 + :board region=pal + : rom name=program.rom size=0x400000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-AROP-EUR + : board: SHVC-BJ0N-01 + : revision: SPAL-AROP-0 + : name: Rise of the Robots + : title: Rise of the Robots + +cartridge sha256:2d5e3091ce4912e2325dedf99b439c5b4cb6ba6899e25bf8957b19eda942de88 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-VR-EUR + : board: SHVC-1A0N-30 + : revision: SPAL-VR-0 + : name: RoboCop vs. The Terminator + : title: RoboCop vs. The Terminator + cartridge sha256:09fdef0c959e7275563f65d8267d95a20104f054e9438e9ac739ef7f46120a2d :board region=pal : rom name=program.rom size=0x100000 @@ -99,7 +477,7 @@ cartridge sha256:09fdef0c959e7275563f65d8267d95a20104f054e9438e9ac739ef7f46120a2 :information : serial: SNSP-JA-EUR : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SPAL-JA-0 : name: Smash Tennis : title: Smash Tennis @@ -112,10 +490,355 @@ cartridge sha256:9638d4daa7bc63fd178b77c4487c3b080def5b808c0b7ccc959101f33e221b4 :information : serial: SNSP-AMCP-EUR : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SPAL-AMCP-0 : name: Spider-Man & Venom - Maximum Carnage : title: Spider-Man & Venom: Maximum Carnage +cartridge sha256:4001418ceb26f38efbea10b7bcc8233adc7bfcaa7e11dfb401d820f3254f06ef + :board region=pal + : sdd1 + : map address=00-3f,80-bf:4800-480f + : rom name=program.rom size=0x400000 + : map address=00-3f,80-bf:8000-ffff + : map address=c0-ff:0000-ffff + : + :information + : serial: SNSP-AUZP-EUR + : board: SNSP-1N0N-01 + : revision: SPAL-AUZP-0 + : name: Street Fighter Alpha 2 + : title: Street Fighter Alpha 2 + +cartridge sha256:640acb63dae038ad6f0ae65e103416f5a1f84d4a37ddaeeab5046122def774d5 + :board region=pal + : rom name=program.rom size=0x300000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : ram name=save.ram size=0x2000 + : map address=70-7d,f0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-RI-EUR + : board: SHVC-1A3M-30 + : revision: SPAL-RI-0 + : name: Super Metroid + : title: Super Metroid + +cartridge sha256:148f6bbf0578ff6ec62e6dacb9e3d266f6d7a427baa104e8ecd3cb2df64bca14 + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-FS-EUR + : board: SHVC-1A0N-30 + : revision: SPAL-FS-0 + : name: Super Soccer + : title: Super Soccer + +cartridge sha256:92946358ee4fbc5cb1df81a26ebd323c2f4e8cc76acd038e1191b8aa31ad1c24 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ARJP-EUR + : board: SHVC-1A0N-20 + : revision: SPAL-ARJP-0 + : name: Super Star Wars III - Return of the Jedi + : title: Super Star Wars III: Return of the Jedi + +cartridge sha256:a52b98da8f65bf2210b7d2e931548c672838fa7e44d852f2e3c6f3cd2ba950d6 + :board region=pal + : rom name=program.rom size=0x400000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-XW-EUR + : board: SHVC-1J0N-20 + : revision: SPAL-XW-0 + : name: Super Street Fighter II - The New Challengers + : title: Super Street Fighter II: The New Challengers + +cartridge sha256:299984b4148ee4503d67cba8469c5023f7ecb204949bc70c3271cc56b117bb8e + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ST-EUR + : board: SHVC-1A0N-30 + : revision: SPAL-ST-1 + : name: Super Tennis + : title: Super Tennis + +cartridge sha256:41648e6d73bd1b998f5c0737a4e61cd603e574ce4a3439e579d2b74b14390159 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-5Z-EUR + : board: SHVC-1A0N-20 + : revision: SPAL-5Z-0 + : name: Tiny Toon Adventures - Wild & Wacky Sports + : title: Tiny Toon Adventures: Wild & Wacky Sports + +cartridge sha256:dbf11d4c77b9aa3416f687201d57d71a23bb8fb0b8fe5e9e8212db3fac036631 + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ATTP-EUR + : board: SHVC-1A0N-30 + : revision: SPAL-ATTP-0 + : name: Turbo Toons + : title: Turbo Toons + +cartridge sha256:03540084486c21724819515d1cb967c658f7f08ec180855fa7c191ca13d8bef1 + :board region=pal + : rom name=program.rom size=0x400000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-A3ZP-EUR + : board: SHVC-1J0N-20 + : revision: SPAL-A3ZP-0 + : name: Ultimate Mortal Kombat 3 + : title: Ultimate Mortal Kombat 3 + +cartridge sha256:fc8c611bc46c850515a933d4388e2123e20ab24a3a3d3c1ac95afdc76c82c3d4 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AUSP-EUR + : board: SHVC-1A0N-30 + : revision: SPAL-AUSP-0 + : name: Urban Strike + : title: Urban Strike + +cartridge sha256:1217ddf2fe475661a54f50e111864102faf854397ce5aceea4297204ebd6cbb6 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-8Z-EUR + : board: SHVC-1A0N-20 + : revision: SPAL-8Z-0 + : name: Val d'isere Championship + : title: Val d'isére Championship + +cartridge sha256:150073c04e9c0e8b283a8eb237acea8fda3268c722f922ee42642009e17dc729 + :board region=pal + : superfx + : map address=00-3f,80-bf:3000-34ff + : rom name=program.rom size=0x80000 + : map address=00-3f,80-bf:8000-ffff mask=0x8000 + : map address=40-5f,c0-df:0000-ffff + : ram name=save.ram size=0x8000 + : map address=00-3f,80-bf:6000-7fff size=0x2000 + : map address=70-71,f0-f1:0000-ffff + : + :information + : serial: SNSP-4V-EUR + : board: SHVC-1CA0N5S-01 + : revision: SPAL-4V-0 + : name: Vortex + : title: Vortex + +cartridge sha256:f47f1665d97d350dda8bf968543ed38b1daf63081d6f71e517867a5533ce4776 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-4W-EUR + : board: SHVC-1A0N-30 + : revision: SPAL-4W-0 + : name: Wild Guns + : title: Wild Guns + +cartridge sha256:aceb9ac7cfd68e6740de47ad1a19be70d4efe3974caa4aa8ec50b0a0a6672e47 + :board region=pal + : superfx + : map address=00-3f,80-bf:3000-34ff + : rom name=program.rom size=0x200000 + : map address=00-3f:8000-ffff mask=0x8000 + : map address=40-5f:0000-ffff + : ram name=save.ram size=0x10000 + : map address=00-3f,80-bf:6000-7fff size=0x2000 + : map address=70-71:0000-ffff + : + :information + : serial: SNSP-AXSP-EUR + : board: SHVC-1CB7B-01 + : revision: SPAL-AXSP-0 + : name: Winter Gold + : title: Winter Gold + +cartridge sha256:142b9b3f99811c2314a94d2c4b66aa9d434f5bdc9ccbb1574e3a6cbf2176b378 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-X7-EUR + : board: SHVC-1A0N-20 + : revision: SPAL-X7-0 + : name: X-Kaliber 2097 + : title: X-Kaliber 2097 + +cartridge sha256:a4b1e125b421c5a58e2fd73edc4d58b31d7a596c07dee263c565f00ee712223f + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-8A-FAH + : board: SHVC-1A0N-20 + : revision: SPAL-8A-0 + : name: Alfred Chicken + : title: Alfred Chicken + +cartridge sha256:dde314fea056445685b97f9c8b554d2be81ea1fe6ace935934592464908d05fb + :board region=pal + : rom name=program.rom size=0x400000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : ram name=save.ram size=0x800 + : map address=20-3f,a0-bf:6000-7fff mask=0xe000 + : + :information + : serial: SNSP-8X-FAH + : board: SHVC-BJ1M-10 + : revision: SPAL-8X-0 + : name: Donkey Kong Country + : title: Donkey Kong Country + +cartridge sha256:259537561fc1a0ddf0beacf9169ccb5fbe8ad88a322c07fccb862a39b379ae62 + :board region=pal + : rom name=program.rom size=0x400000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : ram name=save.ram size=0x800 + : map address=20-3f,a0-bf:6000-7fff mask=0xe000 + : + :information + : serial: SNSP-ADNP-FAH + : board: SHVC-1J1M-20 + : revision: SPAL-ADNP-1 + : name: Donkey Kong Country 2 - Diddy's Kong Quest + : title: Donkey Kong Country 2: Diddy's Kong Quest + +cartridge sha256:1c41bb11c9df5aa8a6ca98caa5215418f37025f7a5e88ff62188b257338af3ab + :board region=pal + : rom name=program.rom size=0x180000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-RX-FAH + : board: SHVC-2A0N-11 + : revision: SPAL-RX-0 + : name: Mega Man X + : title: Mega Man X + +cartridge sha256:558b437e10915c2ca79f376634fa4623c87efdb9292a5878b886c7a6fbef61e2 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-PD-FAH + : board: SHVC-1A0N-20 + : revision: SPAL-PD-0 + : name: Parodius + : title: Parodius + +cartridge sha256:034850392507ec2ea7219970a8be7ad4a4418a11eccbda9df7a5bbf4c74f0287 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-P4-FAH + : board: SHVC-1A0N-20 + : revision: SFRA-P4-0 + : name: Plok + : title: Plok + +cartridge sha256:3a30a6aff66e1ab44b7f742eafde45710cd5a7165681649470c3f04afa579927 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ER-FAH + : board: SHVC-1A0N-20 + : revision: SPAL-ER-0 + : name: R-Type III - The Third Lightning + : title: R-Type III: The Third Lightning + +cartridge sha256:553940ad4b0bbcf375cf2a06f092b44fcd880db820828c8c900c4cd9d4f5753f + :board region=pal + : superfx + : map address=00-3f,80-bf:3000-34ff + : rom name=program.rom size=0x100000 + : map address=00-1f,80-9f:8000-ffff mask=0x8000 + : ram name=save.ram size=0x8000 + : map address=60-7d,e0-ff:0000-ffff + : + :information + : serial: SNSP-FO-FAH + : board: SNSP-1C0N5S-01 + : revision: SPAL-FO-0 + : name: Starwing + : title: Starwing + +cartridge sha256:35c1d6623748f66e254843cf340121e3e268a8301951f35c7ba3ef666bc293bf + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-S2-FAH + : board: SHVC-1A0N-10 + : revision: SPAL-S2-0 + : name: Street Fighter II - The World Warrior + : title: Street Fighter II: The World Warrior + +cartridge sha256:54ac1f0c99f1521e4c390f43af5da2138ec0526a97912790bdb53f9ab1b10b63 + :board region=pal + : rom name=program.rom size=0x280000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-TI-FAH + : board: SHVC-BJ0N-01 + : revision: SPAL-TI-1 + : name: Street Fighter II Turbo - Hyper Fighting + : title: Street Fighter II Turbo: Hyper Fighting + cartridge sha256:abe8db202f9bd12d845a4c7ecb97d85fb149d7f17a608b3eae015d92f52f2c04 :board region=pal : superfx @@ -130,10 +853,289 @@ cartridge sha256:abe8db202f9bd12d845a4c7ecb97d85fb149d7f17a608b3eae015d92f52f2c0 :information : serial: SNSP-CQ-FAH : board: SHVC-1CA6B-01 - : revision: 1.0 + : revision: SPAL-CQ-0 : name: Stunt Race FX : title: Stunt Race FX +cartridge sha256:9760fb407282d91005044fb08f9c15dc3e0ae65063a02eedfbbd285566501fd0 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : ram name=save.ram size=0x2000 + : map address=70-7d,f0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-4M-FAH + : board: SHVC-1A3B-20 + : revision: SPAL-4M-0 + : name: Super Mario All-Stars + : title: Super Mario All-Stars + +cartridge sha256:12d04359329bd646fc65c62db6121b4a7e4ece68556d68252e81ced421069f4c + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : ram name=save.ram size=0x800 + : 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 name=dsp1.program.rom size=0x1800 + : drom name=dsp1.data.rom size=0x800 + : dram name=dsp1.data.ram size=0x200 volatile + : + :information + : serial: SNSP-MK-FAH + : board: SHVC-1K1B-01 + : revision: SPAL-MK-0 + : name: Super Mario Kart + : title: Super Mario Kart + +cartridge sha256:5cc54b1e5c8d3c7701a5e20514145c3b36f15f26fe0a4fe6d2e43677e4b4eda9 + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-1f,80-9f:8000-ffff mask=0x8000 + : ram name=save.ram size=0x800 + : map address=70-7d,f0-ff:0000-ffff + : + :information + : serial: SNSP-MW-FAH + : board: SHVC-1A1B-06 + : revision: SPAL-MW-1 + : name: Super Mario World + : title: Super Mario World + +cartridge sha256:824f07e93c9ad38fe408af561e8979e3c0211f0c6c98aeb6e6bc85cd6f9edc91 + :board region=pal + : superfx + : map address=00-3f,80-bf:3000-34ff + : rom name=program.rom size=0x200000 + : map address=00-3f:8000-ffff mask=0x8000 + : map address=40-5f:0000-ffff + : ram name=save.ram size=0x8000 + : map address=00-3f,80-bf:6000-7fff size=0x2000 + : map address=70-71:0000-ffff + : + :information + : serial: SNSP-YI-FAH + : board: SHVC-1CB5B-20 + : revision: SPAL-YI-1 + : name: Super Mario World 2 - Yoshi's Island + : title: Super Mario World 2: Yoshi's Island + +cartridge sha256:640acb63dae038ad6f0ae65e103416f5a1f84d4a37ddaeeab5046122def774d5 + :board region=pal + : rom name=program.rom size=0x300000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : ram name=save.ram size=0x2000 + : map address=70-7d,f0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-RI-FAH + : board: SHVC-BA3M-10 + : revision: SPAL-RI-0 + : name: Super Metroid + : title: Super Metroid + +cartridge sha256:65df600780021f13ced52e7fbc507b7b2e6491b2c5c25fe78d0515dcbe669403 + :board region=pal + : rom name=program.rom size=0x140000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-RJ-FRA + : board: SHVC-2A0N-11 + : revision: SFRA-RJ-0 + : name: Aladdin + : title: Aladdin + +cartridge sha256:7baaa65ced8fed14e161615e1fffff971f10be4b723523b4a7302891db02ba09 + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-WY-FRA + : board: SHVC-1A0N-20 + : revision: SFRA-WY-0 + : name: Blanco World Class Rugby + : title: Blanco World Class Rugby + +cartridge sha256:dd920a8f29dde8712a246a56d28ac0825d15c041d7f77f97dbeb37680751ce68 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-EF-FRA + : board: SHVC-1A0N-20 + : revision: SFRA-EF-0 + : name: Dragon Ball Z - La Legende Saien + : title: Dragon Ball Z: La Légende Saien + +cartridge sha256:663116d015cad3398644608ca6f2506071ab23d38b03b4890e1a6caecb1a55aa + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AZ4F-FRA + : board: SHVC-1A0N-30 + : revision: SPAL-AZ4F-0 + : name: Dragon Ball Z - Ultime Menace + : title: Dragon Ball Z: Ultime Menace + +cartridge sha256:b2a44f5bb49f6a033e5c82f05356246f5918cacf6f026b88cab5a0b410659b01 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : ram name=save.ram size=0x2000 + : map address=20-3f,a0-bf:6000-7fff mask=0xe000 + : + :information + : serial: SNSP-JG-FRA + : board: SHVC-1J3M-20 + : revision: SFRA-JG-0 + : name: Illusion of Time + : title: Illusion of Time + +cartridge sha256:8dc982c6dd0dfd094b74e4af94a2b10ddc51d334f7f0fa77a9f70917fa324e84 + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-JC-FRA + : board: SHVC-1A0N-10 + : revision: SFRA-JC-0 + : name: Jimmy Connors Pro Tennis Tour + : title: Jimmy Connors Pro Tennis Tour + +cartridge sha256:7ba2709cffa654f73b3b1364c13d6a5b595b820629102fe3d51c10bca30d0e4e + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-J8-FRA + : board: SHVC-2A0N-01 + : revision: SFRA-J8-0 + : name: Jurassic Park + : title: Jurassic Park + +cartridge sha256:29a0d5812ccbb4b11bdb55d8f751a2a797b4110bf402ca8ba15eb2bf85db7b39 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-1f,80-9f:8000-ffff mask=0x8000 + : ram name=save.ram size=0x2000 + : map address=70-7d,f0-ff:0000-ffff + : + :information + : serial: SNSP-ZL-FRA + : board: SHVC-1A3B-13 + : revision: SFRA-ZL-0 + : name: Legend of Zelda - A Link to the Past, The + : title: The Legend of Zelda: A Link to the Past + +cartridge sha256:6d37b2ed794b2f3e5f3d28490ffe89a0ff3c8a0cfc0418bd2aa8e0c66d4868ff + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-7K-FRA + : board: SHVC-1A0N-20 + : revision: SPAL-7K-0 + : name: Livre de la Jungle, Le + : title: Le Livre de la Jungle + +cartridge sha256:896e09a0d24bfec0412aa75d121063b015153a754ed542f7db7d66366b555de4 + :board region=pal + : rom name=program.rom size=0x300000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-ALKP-FRA + : board: SHVC-BJ0N-01 + : revision: SPAL-ALKP-0 + : name: Roi Lion, Le + : title: Le Roi Lion + +cartridge sha256:0aa16d6b588ba05ab00936201e68a694746fc5e1b2e4f2dbf7cda09265a81379 + :board region=pal + : rom name=program.rom size=0x180000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-AE-FRA + : board: SHVC-2J0N-11 + : revision: SFRA-AE-0 + : name: Sailor Moon + : title: Sailor Moon + +cartridge sha256:f73e6da9e979c839c7c22ec487bea6667d3e65e7d8f9fcc97a2bcdeb4487cddf + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : ram name=save.ram size=0x8000 + : map address=70-7d,f0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-SC-FRA + : board: SHVC-1A5M-01 + : revision: SFRA-SC-0 + : name: SimCity + : title: SimCity + +cartridge sha256:f415cafaaac4d5fe062b61be35e64ee6b5e8b925f12b9c82777b4566d31de8f4 + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-3C-FRG + : board: SHVC-1A0N-20 + : revision: SPAL-3C-0 + : name: Choplifter III + : title: Choplifter III + +cartridge sha256:ddad4a3708b8cf760e520b784f42d7085154b0699f3824b8d722512ccab687cb + :board region=pal + : rom name=program.rom size=0x400000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-AKLP-FRG + : board: SHVC-1J0N-20 + : revision: SPAL-AKLP-0 + : name: Killer Instinct + : title: Killer Instinct + +cartridge sha256:aafbae4c2a7a5a35c81a183df0470027b4b5690f836592af21c15af6b259328d + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-SG-ITA + : board: SHVC-1A0N-20 + : revision: SPAL-SG-0 + : name: Super Strike Gunner + : title: Super Strike Gunner + cartridge sha256:e678a29a93111cf2016c487ba9977b14de8f719040651a42c74bd74eea2d0d81 :board region=ntsc : rom name=program.rom size=0x200000 @@ -143,10 +1145,193 @@ cartridge sha256:e678a29a93111cf2016c487ba9977b14de8f719040651a42c74bd74eea2d0d8 :information : serial: SNS-9D-LTN : board: SHVC-1A0N-30 - : revision: 1.1 + : revision: SNS-9D-1 : name: Death and Return of Superman, The : title: The Death and Return of Superman +cartridge sha256:b2df16101a2daa0f718853be92e3cf5d88f8e8843d04962e4b403d13769c1119 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AP-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-AP-0 + : name: Alien vs Predator + : title: Alien vs Predator + +cartridge sha256:bb81d1730222c518084d06c5ce456ee860d5ccb6a410f14a73e68971305bdd12 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AX-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-AX-0 + : name: Axelay + : title: Axelay + +cartridge sha256:5a054466ffe0694599498b9d94427b25d4f4d55ab4fc1542335f69025e817a3f + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-B4-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-B4-0 + : name: BOB + : title: B.O.B. + +cartridge sha256:a20bdbdafccee20bf17eae28fdb0b79fced5b53f90a1cad259461a37903f9ad1 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-C2-NOE + : board: SHVC-1A0N-10 + : revision: SPAL-C2-0 + : name: California Games II + : title: California Games II + +cartridge sha256:a60886ea6459861bb8d149023a975c4e83c172847264756840ca0754eb9f1f15 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-5P-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-5P-0 + : name: Championship Pool + : title: Championship Pool + +cartridge sha256:fd7e471b7855614f1a4782c2194e6d268406c694d0f674350317a3efed26c4aa + :board region=pal + : rom name=program.rom size=0x180000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-UD-NOE + : board: SHVC-2J0N-11 + : revision: SPAL-UD-0 + : name: Chaos Engine, The + : title: The Chaos Engine + +cartridge sha256:9f072794e9f379e35dabd50a714e08b98deab61e3dd97ef982d7504b85b28d24 + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-CH-NOE + : board: SHVC-1A0N-02 + : revision: SPAL-CH-0 + : name: Chessmaster, The + : title: The Chessmaster + +cartridge sha256:f000606a504c7a51617c0e32865924a68bf899170aea2647cf403fede8491c0e + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-8C-NOE + : board: SHVC-1J0N-10 + : revision: SPAL-8C-0 + : name: Clay Fighter + : title: Clay Fighter + +cartridge sha256:5d42cef66c529939b6038f4ecaf1aeb06acda2dabbf7bcf4e7203f3cb6b43f7a + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AV-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-AV-0 + : name: Cybernator + : title: Cybernator + +cartridge sha256:dddacae010766c1201f50810fcf15dff7c0f6d41ac1a1004c8eea4873a71db12 + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-1f,80-9f:8000-ffff mask=0x8000 + : ram name=save.ram size=0x800 + : map address=70-7d,f0-ff:0000-ffff + : + :information + : serial: SNSP-FZ-NOE + : board: SHVC-1A1B-06 + : revision: SPAL-FZ-0 + : name: F-Zero + : title: F-Zero + +cartridge sha256:450df78c9b7c92e9f8ce5c2ee0e1dbf939031c1e4f9e10c52c8d8f874364d1d6 + :board region=pal + : rom name=program.rom size=0x180000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-GN-NOE + : board: SHVC-2A0N-10 + : revision: SPAL-GN-0 + : name: Fatal Fury + : title: Fatal Fury + +cartridge sha256:c7abc997e0f685a726dacd82e2734f557028490c1c9b8e575bc6cbc18de243a4 + :board region=pal + : rom name=program.rom size=0x140000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-F2-NOE + : board: SHVC-2A0N-11 + : revision: SPAL-F2-0 + : name: Final Fight 2 + : title: Final Fight 2 + +cartridge sha256:6d0095422fe380202e62ed5b34f038681f777dcd9a943cf3534645068e118fb2 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-GK-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-GK-0 + : name: George Foreman's KO Boxing + : title: George Foreman's KO Boxing + +cartridge sha256:a9dffa5d97855733f14b1b888bc478e8e0630107812b7b3df729c499e0e0734f + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-HZ-NOE + : board: SHVC-1A0N-10 + : revision: SPAL-HZ-0 + : name: Hyper Zone + : title: Hyper Zone + cartridge sha256:039beb46f81ad9e0844ecec420cc78bfdbf2b1ae940adb4fdf08dbf1b55ac7ed :board region=pal : rom name=program.rom size=0x200000 @@ -158,10 +1343,155 @@ cartridge sha256:039beb46f81ad9e0844ecec420cc78bfdbf2b1ae940adb4fdf08dbf1b55ac7e :information : serial: SNSP-JG-NOE : board: SHVC-1J3M-20 - : revision: 1.1 + : revision: SFRG-JG-1 : name: Illusion of Time : title: Illusion of Time +cartridge sha256:3fa82117fe88b0b5398995b68624f3027184259456123f2a61d55f668326c769 + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : ram name=save.ram size=0x2000 + : map address=70-7d,f0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-PJ-NOE + : board: SHVC-1A3M-10 + : revision: SFRG-PJ-0 + : name: Kevin Keegan's Player Manager + : title: Kevin Keegan's Player Manager + +cartridge sha256:11a6c5de89b25836c8b66d3e3077bacdcaf52faab5a0f7fe2bc751aa85a8dd68 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-KM-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-KM-0 + : name: King of the Monsters + : title: King of the Monsters + +cartridge sha256:5ec66298ddb579b35cc5d3df5bfeeee05bdf71347565c7c5f5f3869bf4f1e469 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ALTP-NOE + : board: SHVC-1A0N-30 + : revision: SPAL-ALTP-0 + : name: Looney Tunes Basketball + : title: Looney Tunes Basketball + +cartridge sha256:0ecdd9d6fc78c0bdbc2f684c682ec834cda1148ed2e675cc783a95c601000d3b + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AOMD-NOE + : board: SHVC-1A0N-30 + : revision: SPAL-AOMD-0 + : name: Lothar Matthaus Super Soccer + : title: Lothar Matthäus Super Soccer + +cartridge sha256:8f6920549b28a065a030fbdbe2ea2e9d966d42ab5ac1ef0e9dabc99875a51df2 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : ram name=save.ram size=0x800 + : map address=70-7d,f0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-WM-NOE + : board: SHVC-1A1M-10 + : revision: SFRG-WM-0 + : name: MechWarrior + : title: MechWarrior + +cartridge sha256:4703cb071611874b0d9e9555f102278e33dd494202875dc994a232029148bf67 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-KX-NOE + : board: SHVC-2A0N-01 + : revision: SPAL-KX-0 + : name: Mortal Kombat + : title: Mortal Kombat + +cartridge sha256:558b437e10915c2ca79f376634fa4623c87efdb9292a5878b886c7a6fbef61e2 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-PD-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-PD-0 + : name: Parodius + : title: Parodius + +cartridge sha256:b8fcbad3c712a2ff69a5f9bb9fbe4c4284f91bbe96fe849275a8bcfcb497d204 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-PH-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-PH-0 + : name: Phalanx - The Enforce Fighter A-144 + : title: Phalanx: The Enforce Fighter A-144 + +cartridge sha256:9932ed1419bc606ea19337b74a8ef17adaa6b31be5fca8d2b6b266b3f6383e39 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AXRD-NOE + : board: SHVC-1A0N-30 + : revision: SPAL-AXRD-0 + : name: Revolution X + : title: Revolution X + +cartridge sha256:b2717bec03b627c4f02bd6dd77cfa790ea4eab91f0f47626ea452c50369d35d4 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-RB-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-RB-0 + : name: Rival Turf + : title: Rival Turf + +cartridge sha256:a0888a9c02b0ca0c9e95246c9ea60407f7f9c4dfde1ff1c15b7f6d5bd4ea5b85 + :board region=pal + : rom name=program.rom size=0x400000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-A7SP-NOE + : board: SHVC-BJ0N-01 + : revision: SPAL-A7SP-0 + : name: Samurai Shodown + : title: Samurai Shodown + cartridge sha256:c341668847170d36fa5cfb720568b0b1ecbb24fc426a821f665f1d3853a46a6d :board region=pal : rom name=program.rom size=0x300000 @@ -173,7 +1503,7 @@ cartridge sha256:c341668847170d36fa5cfb720568b0b1ecbb24fc426a821f665f1d3853a46a6 :information : serial: SNSP-AEOD-NOE : board: SHVC-1J3M-20 - : revision: 1.0 + : revision: SPAL-AEOD-0 : name: Secret of Evermore : title: Secret of Evermore @@ -188,10 +1518,26 @@ cartridge sha256:1444ab11f96f7750db992e9a4160532b27abede8a7054128c09f448300c91eb :information : serial: SNSP-K2-NOE : board: SHVC-1J3M-11 - : revision: 1.0 + : revision: SFRG-K2-0 : name: Secret of Mana : title: Secret of Mana +cartridge sha256:bc819454a2082f93b03ad3dc11795eb8cd4ccec72a41560462a91b6f0edd432f + :board region=pal + : superfx + : map address=00-3f,80-bf:3000-34ff + : rom name=program.rom size=0x100000 + : map address=00-1f,80-9f:8000-ffff mask=0x8000 + : ram name=save.ram size=0x8000 + : map address=60-7d,e0-ff:0000-ffff + : + :information + : serial: SNSP-FO-NOE + : board: SHVC-1C0N + : revision: SFRG-FO-0 + : name: Starwing + : title: Starwing + cartridge sha256:35c1d6623748f66e254843cf340121e3e268a8301951f35c7ba3ef666bc293bf :board region=pal : rom name=program.rom size=0x200000 @@ -201,10 +1547,54 @@ cartridge sha256:35c1d6623748f66e254843cf340121e3e268a8301951f35c7ba3ef666bc293b :information : serial: SNSP-S2-NOE : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SPAL-S2-0 : name: Street Fighter II - The World Warrior : title: Street Fighter II: The World Warrior +cartridge sha256:54ac1f0c99f1521e4c390f43af5da2138ec0526a97912790bdb53f9ab1b10b63 + :board region=pal + : rom name=program.rom size=0x280000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-TI-NOE + : board: SHVC-BJ0N-01 + : revision: SPAL-TI-1 + : name: Street Fighter II Turbo - Hyper Fighting + : title: Street Fighter II Turbo: Hyper Fighting + +cartridge sha256:30291b60cb7bb0bf92dc48b922daff71f6bc4b29200bef5540a522bcb0a64cee + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : necdsp model=uPD7725 frequency=8000000 + : map address=00-1f,80-9f:6000-7fff mask=0xfff + : prom name=dsp1.program.rom size=0x1800 + : drom name=dsp1.data.rom size=0x800 + : dram name=dsp1.data.ram size=0x200 volatile + : + :information + : serial: SNSP-AZ-NOE + : board: SHVC-1K0N-01 + : revision: SPAL-AZ-0 + : name: Super Air Diver + : title: Super Air Diver + +cartridge sha256:4dcf9213cf22c9e28e58b42ca7808224399d89b9b33f1fd592be6866db42755d + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-8B-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-8B-0 + : name: Super Battleship + : title: Super Battleship + cartridge sha256:4d7fc331a811b8dc630b469262fd6f45e289243cef83101f32038158967d1b28 :board region=pal : rom name=program.rom size=0x40000 @@ -217,10 +1607,127 @@ cartridge sha256:4d7fc331a811b8dc630b469262fd6f45e289243cef83101f32038158967d1b2 :information : serial: SNSP-A-SG-NOE : board: SGB-R-10 - : revision: 1.2 + : revision: SYS-SGB-2 : name: Super Game Boy : title: Super Game Boy +cartridge sha256:4c5b426ea5950b66098ba4377f6a86d091d7af2f4783895086a621aa98811596 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-OX-NOE + : board: SHVC-1J0N-10 + : revision: SPAL-OX-0 + : name: Super Ice Hockey + : title: Super Ice Hockey + +cartridge sha256:2b1ca521975c3010650fd2055be8c6b964ea4eff765ad03198ac71995285fee7 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-CS-NOE + : board: SHVC-1A0N-02 + : revision: SPAL-CS-0 + : name: Super Probotector - Alien Rebels + : title: Super Probotector: Alien Rebels + +cartridge sha256:7c7e90fb7c762769219234baf7b5fa6bf574fff7dc63b7134d49ec7c8b38ea7e + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-SR-NOE + : board: SHVC-1A0N-02 + : revision: SPAL-SR-0 + : name: Super R-Type + : title: Super R-Type + +cartridge sha256:70c07b2c7bdff9353d3849e2d4bde2bfa631b29e0743862635c2212ac551cb27 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-WV-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-WV-0 + : name: Super SWIV + : title: Super SWIV + +cartridge sha256:1bc2b230d6bb6091412fcc9b957192d9a729496f9f2123449d968afb088fc525 + :board region=pal + : rom name=program.rom size=0x80000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-TU-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-TU-0 + : name: Super Turrican + : title: Super Turrican + +cartridge sha256:454dbc5383f36e1d611fcc76a23162ae03e269c76c98919b1e7505ea4c7c2402 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-A2TP-NOE + : board: SHVC-1A0N-30 + : revision: SPAL-A2TP-0 + : name: Super Turrican 2 + : title: Super Turrican 2 + +cartridge sha256:eea3584fe574b1e7ba6c559ef32f86a990f54c7fa36b25242656b4c6dc18e6f0 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AFYP-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-AFYP-0 + : name: Syndicate + : title: Syndicate + +cartridge sha256:3e26fbb8004635f4128f8e989d96f89fddc0a2cf85a8ede6b93ae6648bd6a717 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-8F-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-8F-0 + : name: Teenage Mutant Hero Turtles V - Tournament Fighters + : title: Teenage Mutant Hero Turtles V: Tournament Fighters + +cartridge sha256:d6968f79ec66cec751dcf54a1fd0c7321a8e1b69722d81b10d1969a8415412a6 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-XV-NOE + : board: SHVC-1A0N-20 + : revision: SPAL-XV-0 + : name: Terminator 2 - The Arcade Game + : title: Terminator 2: The Arcade Game + cartridge sha256:613cd1a31eaded18648168bd7453a57830ca9a6f3c10de5154625436fbd49556 :board region=pal : rom name=program.rom size=0x400000 @@ -232,7 +1739,7 @@ cartridge sha256:613cd1a31eaded18648168bd7453a57830ca9a6f3c10de5154625436fbd4955 :information : serial: SNSP-AQTD-NOE : board: SHVC-1J3M-20 - : revision: 1.1 + : revision: SPAL-AQTD-1 : name: Terranigma : title: Terranigma @@ -246,10 +1753,75 @@ cartridge sha256:a1105819d48c04d680c8292bbfa9abbce05224f1bc231afd66af43b7e0a1fd4 :information : serial: SNSP-4L-NOE : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SPAL-4L-0 : name: Unirally : title: Unirally +cartridge sha256:847c9189580fc92e785c8124cbde4f1d72be75e1941b35021f6b159e0470c1b0 + :board region=pal + : rom name=program.rom size=0x300000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-ADWP-NOE + : board: SHVC-1J0N-20 + : revision: SPAL-AWDP-0 + : name: WeaponLord + : title: WeaponLord + +cartridge sha256:8315596b4fe517b970d004336c86ed2bc74e167692ffaa51c529a41e2197519e + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-W4-NOE + : board: SHVC-1J0N-10 + : revision: SPAL-W4-0 + : name: Winter Olympics - Lillehammer '94 + : title: Winter Olympics: Lillehammer '94 + +cartridge sha256:9eb2f90cae9958ae7f387d797cb28797b5ccaf520c41d4c5ca9494c74a87c422 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-WZ-NOE + : board: SHVC-1J0N-01 + : revision: SPAL-WZ-0 + : name: World Heroes + : title: World Heroes + +cartridge sha256:92dd66642e86b9b4156352a583bd479c200c342820a8b6cf906cca6bb923cf25 + :board region=pal + : rom name=program.rom size=0x1e0000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-AW3P-NOE + : board: SHVC-1A0N-30 + : revision: SPAL-AW3P-0 + : name: Worms + : title: Worms + +cartridge sha256:24aad9739f8ffe9319f20d4fa1c4f58108e73843d20d65296926e00ba9c456be + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ZA-NOE + : board: SHVC-1A0N-10 + : revision: SPAL-ZA-0 + : name: Zombies + : title: Zombies + cartridge sha256:0a49023824d812c64cd262db6e85ce9900c88af7ac6dab3e47078ab0dd1e546c :board region=pal : rom name=program.rom size=0x200000 @@ -259,10 +1831,42 @@ cartridge sha256:0a49023824d812c64cd262db6e85ce9900c88af7ac6dab3e47078ab0dd1e546 :information : serial: SNSP-YN-UKV : board: SHVC-2A0N-10 - : revision: 1.0 + : revision: SPAL-YN-0 : name: Bubsy I - Claws Encounters of the Furred Kind : title: Bubsy in Claws Encounters of the Furred Kind +cartridge sha256:536f9c2ff7dfdc6e5b51389142151b1c9e9d73f1c2451eafe16d0224d15ad35f + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : ram name=save.ram size=0x2000 + : map address=70-7d,f0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-OS-UKV + : board: SHVC-1A3M-20 + : revision: SPAL-OS-0 + : name: Desert Fighter + : title: Desert Fighter + +cartridge sha256:1c12660c99571692d2fba4ba871a1086b115486697e789f85fb939c55eeec7c7 + :board region=pal + : superfx + : map address=00-3f,80-bf:3000-34ff + : rom name=program.rom size=0x200000 + : map address=00-3f:8000-ffff mask=0x8000 + : map address=40-5f:0000-ffff + : ram name=save.ram size=0x10000 + : map address=00-3f,80-bf:6000-7fff size=0x2000 + : map address=70-71:0000-ffff + : + :information + : serial: SNSP-AD8P-UKV + : board: SHVC-1CB0N7S-01 + : revision: SPAL-AD8P-0 + : name: Doom + : title: Doom + cartridge sha256:dddacae010766c1201f50810fcf15dff7c0f6d41ac1a1004c8eea4873a71db12 :board region=pal : rom name=program.rom size=0x80000 @@ -273,7 +1877,7 @@ cartridge sha256:dddacae010766c1201f50810fcf15dff7c0f6d41ac1a1004c8eea4873a71db1 :information : serial: SNSP-FZ-UKV : board: SHVC-1A1B-05 - : revision: 1.0 + : revision: SPAL-FZ-0 : name: F-Zero : title: F-Zero @@ -286,7 +1890,7 @@ cartridge sha256:e9e2152411fec3bd10e8cd4587b62717169a25a4cd28f491f8e477b9aae2fce :information : serial: SNSP-7N-UKV : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SPAL-7N-0 : name: Fun & Games : title: fun 'n games @@ -300,7 +1904,7 @@ cartridge sha256:9d936f3b0b5bea0b7c4588e65fa147fff1108d0e630337dd75eb16133a55e31 :information : serial: SNSP-8S-UKV : board: SHVC-1A3M-20 - : revision: 1.1 + : revision: SPAL-8S-1 : name: International Sensible Soccer - World Champions : title: International Sensible Soccer: World Champions @@ -313,7 +1917,7 @@ cartridge sha256:ddad4a3708b8cf760e520b784f42d7085154b0699f3824b8d722512ccab687c :information : serial: SNSP-AKLP-UKV : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SPAL-AKLP-0 : name: Killer Instinct : title: Killer Instinct @@ -327,10 +1931,36 @@ cartridge sha256:654183585e88abf965b19570c194f3d69ef209a7f2d32f71881eceaea6a3487 :information : serial: SNSP-ZL-UKV : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SPAL-ZL-0 : name: Legend of Zelda - A Link to the Past, The : title: The Legend of Zelda: A Link to the Past +cartridge sha256:0c4038eb0ee37c0faac6a04928b37b5c2f1047ab59c5345da16de48c92db5021 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-LK-UKV + : board: SHVC-1A0N-20 + : revision: SPAL-LK-0 + : name: Lethal Enforcers + : title: Lethal Enforcers + +cartridge sha256:d33f682605b3d6c8a162506ef333a24933ae26a32f10ff8e49fc113bcd189137 + :board region=pal + : rom name=program.rom size=0x180000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-A3RP-UKV + : board: SHVC-1A0N-30 + : revision: SPAL-A3RP-0 + : name: Mighty Morphin Power Rangers - The Fighting Edition + : title: Mighty Morphin Power Rangers: The Fighting Edition + cartridge sha256:d147bfe392e8c2129fb887379410804d79be426bbffdd01cec7bd2332e03f39e :board region=pal : rom name=program.rom size=0x80000 @@ -344,7 +1974,7 @@ cartridge sha256:d147bfe392e8c2129fb887379410804d79be426bbffdd01cec7bd2332e03f39 :information : serial: SNSP-PW-UKV : board: SHVC-1B0N-10 - : revision: 1.0 + : revision: SPAL-PW-0 : name: Pilotwings : title: Pilotwings @@ -359,7 +1989,7 @@ cartridge sha256:5702fb6978229e398075cf0d20927b47a5881b572532813557e86b8e9cf63db :information : serial: SNSP-K2-UKV : board: SHVC-1J3M-20 - : revision: 1.1 + : revision: SPAL-K2-1 : name: Secret of Mana : title: Secret of Mana @@ -373,10 +2003,23 @@ cartridge sha256:e95278ec68bf983111a52e38d5e6031c41141858e87e2cb8ef92fdfe17e41a1 :information : serial: SNSP-8S-UKV : board: SHVC-1A3M-20 - : revision: 1.0 + : revision: SPAL-8S-0 : name: Sensible Soccer - European Champions : title: Sensible Soccer: European Champions +cartridge sha256:d02f8e6b75f9b9ede20a32b8ec93c06475f18160ced1eb069cd6a3cbbc3cba2e + :board region=pal + : rom name=program.rom size=0xe0000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-7Q-UKV + : board: SHVC-1A0N-20 + : revision: SPAL-7Q-0 + : name: Spectre + : title: Spectre + cartridge sha256:8c7a8aa1d16aeef31244b016ac951eab0b9ccd46daea61adbe890e5c5daa29c6 :board region=pal : rom name=program.rom size=0x200000 @@ -386,7 +2029,7 @@ cartridge sha256:8c7a8aa1d16aeef31244b016ac951eab0b9ccd46daea61adbe890e5c5daa29c :information : serial: SNSP-XN-UKV : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SPAL-XN-0 : name: Star Trek - The Next Generation - Future's Past : title: Star Trek: The Next Generation - Future's Past @@ -402,7 +2045,7 @@ cartridge sha256:80e7ba7c756c70eedd55ca4548c1965f84f9ef01d3a5ca91a2e5465a6930c49 :information : serial: SNSP-FO-UKV : board: SNSP-1C0N5S-01 - : revision: 1.1 + : revision: SPAL-FO-1 : name: Starwing : title: Starwing @@ -415,7 +2058,7 @@ cartridge sha256:b8ee1b5b9deae5c84fa209815515030109cc271b645a18de882aaf1b254cda1 :information : serial: SNSP-TI-UKV : board: SHVC-BJ0N-01 - : revision: 1.0 + : revision: SPAL-TI-0 : name: Street Fighter II Turbo - Hyper Fighting : title: Street Fighter II Turbo: Hyper Fighting @@ -428,7 +2071,7 @@ cartridge sha256:df43b3a4f511401a4d162ee6e7e3b08485533600dc44a29ee0a829b937b144d :information : serial: SNSP-KE-UKV : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SPAL-KE-0 : name: Striker : title: Striker @@ -441,10 +2084,36 @@ cartridge sha256:f1a75578e6711716340bb26ea93bf05d5762bc7da21dbc19576fc65de1e885b :information : serial: SNSP-AT-UKV : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SPAL-AT-0 : name: Super Aleste : title: Super Aleste +cartridge sha256:e8b1639acd44a536f060d6d8dbcc4ef368279e3e17e1e3862a463d3ebf07ea14 + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-2X-UKV + : board: SHVC-1A0N-20 + : revision: SPAL-2X-0 + : name: Super Battletank 2 + : title: Super Battletank 2 + +cartridge sha256:8bc56d4d23638ff592715e089dfd697fe7884a388c5ac95e147973bc2ff71e72 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-ACIP-UKV + : board: SHVC-1A0N-30 + : revision: SPAL-ACIP-0 + : name: Super International Cricket + : title: Super International Cricket + cartridge sha256:9760fb407282d91005044fb08f9c15dc3e0ae65063a02eedfbbd285566501fd0 :board region=pal : rom name=program.rom size=0x200000 @@ -455,7 +2124,7 @@ cartridge sha256:9760fb407282d91005044fb08f9c15dc3e0ae65063a02eedfbbd285566501fd :information : serial: SNSP-4M-UKV : board: SHVC-2A3M-01 - : revision: 1.0 + : revision: SPAL-4M-0 : name: Super Mario All-Stars : title: Super Mario All-Stars @@ -475,7 +2144,7 @@ cartridge sha256:12d04359329bd646fc65c62db6121b4a7e4ece68556d68252e81ced421069f4 :information : serial: SNSP-MK-UKV : board: SHVC-1K1B-01 - : revision: 1.0 + : revision: SPAL-MK-0 : name: Super Mario Kart : title: Super Mario Kart @@ -489,7 +2158,7 @@ cartridge sha256:640acb63dae038ad6f0ae65e103416f5a1f84d4a37ddaeeab5046122def774d :information : serial: SNSP-RI-UKV : board: SHVC-BA3M-10 - : revision: 1.0 + : revision: SPAL-RI-0 : name: Super Metroid : title: Super Metroid @@ -503,7 +2172,7 @@ cartridge sha256:3438e78d35634d0ed7f58cb395c77da548fb601248725a18365edaed38a565d :information : serial: SNSP-4Q-UKV : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SPAL-4Q-0 : name: Super Punch-Out!! : title: Super Punch-Out!! @@ -516,10 +2185,62 @@ cartridge sha256:7c7e90fb7c762769219234baf7b5fa6bf574fff7dc63b7134d49ec7c8b38ea7 :information : serial: SNSP-SR-UKV : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SPAL-SR-0 : name: Super R-Type : title: Super R-Type +cartridge sha256:a52b98da8f65bf2210b7d2e931548c672838fa7e44d852f2e3c6f3cd2ba950d6 + :board region=pal + : rom name=program.rom size=0x400000 + : map address=00-3f,80-bf:8000-ffff + : map address=40-7d,c0-ff:0000-ffff + : + :information + : serial: SNSP-XW-UKV + : board: SHVC-BJ0N-20 + : revision: SPAL-XW-0 + : name: Super Street Fighter II - The New Challengers + : title: Super Street Fighter II: The New Challengers + +cartridge sha256:d92b74678e58360db9b47a7044cedd6c57f191570a5677b1a1bf5e476f92721d + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-TP-UKV + : board: SHVC-1A0N-10 + : revision: SPAL-TP-0 + : name: Terminator 2 - Judgment Day + : title: Terminator 2: Judgment Day + +cartridge sha256:f899b083b29f34bee62cc022262ab4ff6aad9b16423011faff37f2c21a45fd89 + :board region=pal + : rom name=program.rom size=0x100000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-XC-UKV + : board: SHVC-1A0N-10 + : revision: SPAL-XC-0 + : name: Total Carnage + : title: Total Carnage + +cartridge sha256:717fe462a79c298581423c614f62e22dbf6a33e0bf75e691d96848086869418e + :board region=pal + : rom name=program.rom size=0x200000 + : map address=00-7d,80-ff:8000-ffff mask=0x8000 + : map address=40-7d,c0-ff:0000-7fff mask=0x8000 + : + :information + : serial: SNSP-TE-UKV + : board: SHVC-1A0N-20 + : revision: SPAL-TE-0 + : name: Tuff E Nuff + : title: Tuff E Nuff + cartridge sha256:2ffe8828480f943056fb1ab5c3c84d48a0bf8cbe3ed7c9960b349b59adb07f3b :board region=ntsc : rom name=program.rom size=0x200000 @@ -529,7 +2250,7 @@ cartridge sha256:2ffe8828480f943056fb1ab5c3c84d48a0bf8cbe3ed7c9960b349b59adb07f3 :information : serial: SNS-A3NE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-A3NE-0 : name: 3 Ninjas Kick Back : title: 3 Ninjas Kick Back @@ -544,7 +2265,7 @@ cartridge sha256:4dd631433c867ba920997fd3add2c838b62e70e06e0ef55c53884b8b68b0dd2 :information : serial: SNS-EL-USA : board: SHVC-2J3M-01 - : revision: 1.0 + : revision: SNS-EL-0 : name: 7th Saga, The : title: The 7th Saga @@ -557,7 +2278,7 @@ cartridge sha256:ce164872c4f5814bce04cf0565edcdb5b7969ae95a3b5cd515cfb626b5cde7b :information : serial: SNS-ANNE-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-ANNE-0 : name: Aaahh!!! Real Monsters : title: Aaahh!!! Real Monsters @@ -571,7 +2292,7 @@ cartridge sha256:bb83f982961c33b81fefc1f545e18ab572d1c43cf6c241948544f05a1a71f2b :information : serial: SNS-N5-USA : board: SHVC-1A3M-10 - : revision: 1.0 + : revision: SNS-N5-0 : name: ABC Monday Night Football : title: ABC Monday Night Football @@ -585,7 +2306,7 @@ cartridge sha256:d07e8802a6d9c777247874e05ec08fce7e0fa1bf122cc1ab9913f7d828e4072 :information : serial: SNS-ACME-USA : board: SHVC-1A5M-11 - : revision: 1.0 + : revision: SNS-ACME-0 : name: ACME Animation Factory : title: ACME Animation Factory @@ -599,7 +2320,7 @@ cartridge sha256:b8055844825653210d252d29a2229f9a3e7e512004e83940620173c57d8723f :information : serial: SNS-AR-USA : board: SHVC-1A3B-11 - : revision: 1.0 + : revision: SNS-AR-0 : name: ActRaiser : title: ActRaiser @@ -612,7 +2333,7 @@ cartridge sha256:71bdd448a30b88725864e55594ebb67a118b1f197a3f9e5dd39dbf23399efa1 :information : serial: SNS-A8-USA : board: SHVC-2J0N-01 - : revision: 1.0 + : revision: SNS-A8-0 : name: ActRaiser 2 : title: ActRaiser 2 @@ -625,7 +2346,7 @@ cartridge sha256:e645310d2406ace85523ed91070ee7ff6aa245217267dacb158ae9fc7510969 :information : serial: SNS-AF-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-AF-0 : name: Addams Family : title: The Addams Family @@ -638,7 +2359,7 @@ cartridge sha256:b6957bae7fd97ba681afbf8962fe2138e209649fd88ed9add2d5233178680aa :information : serial: SNS-AH-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-AH-0 : name: Addams Family 2 - Pugsley's Scavenger Hunt : title: The Addams Family 2: Pugsley's Scavenger Hunt @@ -651,7 +2372,7 @@ cartridge sha256:f59a0a8ed11ea2ba6217b1640e74bab8d8d8161a4585f5ae4a02edd7958ad9a :information : serial: SNS-VY-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-VY-0 : name: Addams Family Values : title: Addams Family Values @@ -664,7 +2385,7 @@ cartridge sha256:8083307f3f4b7df9e5bf53d5f25877c2e548f0f677540d4ee62d60ccca3098f :information : serial: SNS-ABTE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ABTE-0 : name: Adventures of Batman & Robin, The : title: The Adventures of Batman & Robin @@ -677,7 +2398,7 @@ cartridge sha256:ecd964ae44e61203bc8759cfc6441365bf0c6e7bae6ad2a0fd553d4c7efab71 :information : serial: SNS-6F-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-6F-0 : name: Adventures of Dr. Franken, The : title: The Adventures of Dr. Franken @@ -690,7 +2411,7 @@ cartridge sha256:670d898bdcf97d7ca3aab6c2dd1641f1270fcc2a070bbd3028ab413aef2b2ec :information : serial: SNS-YK-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-YK-0 : name: Adventures of Kid Kleets, The : title: The Adventures of Kid Kleets @@ -703,7 +2424,7 @@ cartridge sha256:889beb58d2a48a05a6230cabda14555cb030e2e986c0293bdf396e85af5c679 :information : serial: SNS-AMOE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AMOE-0 : name: Adventures of Mighty Max, The : title: The Adventures of Mighty Max @@ -716,7 +2437,7 @@ cartridge sha256:b70099186d3774355ac5db370240e370c73f9ce5341f6c805cf9f771374b43a :information : serial: SNS-RZ-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-RZ-0 : name: Adventures of Rocky and Bullwinkle and Friends, The : title: The Adventures of Rocky and Bullwinkle and Friends @@ -729,7 +2450,7 @@ cartridge sha256:8049175767eddbc3e21ca5b94ee23fc225f834ccfab4ded30d2e981b0ef73ab :information : serial: SNS-Y8-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-Y8-0 : name: Adventures of Yogi Bear : title: Adventures of Yogi Bear @@ -742,7 +2463,7 @@ cartridge sha256:b737de81315eef8ded7cfd5df6b37aba01d9e6e14566486db7ec83eb0c1aa85 :information : serial: SNS-AERE-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-AERE-0 : name: Aero Fighters : title: Aero Fighters @@ -755,7 +2476,7 @@ cartridge sha256:18a553dafd4980cc2869180b05f9fdf6e980bf092cc683e498ec6373c9701c6 :information : serial: SNS-XB-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-XB-0 : name: Aero the Acro-Bat : title: Aero the Acro-Bat @@ -768,7 +2489,7 @@ cartridge sha256:fc5df5db0a96d39d3df651f63993adf0f5cb5a6b92a36211f3a05d460d92c72 :information : serial: SNS-AE2E-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AE2E-0 : name: Aero the Acro-Bat 2 : title: Aero the Acro-Bat 2 @@ -782,7 +2503,7 @@ cartridge sha256:d5f0fbeed3774bbccbd769698fc4051487a0a5eb699790a8a094451595600f6 :information : serial: SNS-AL-USA : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-AL-0 : name: Aerobiz : title: Aerobiz @@ -796,7 +2517,7 @@ cartridge sha256:6b6921d7aba9ba353e96e39c8d79d24eef1b84eb5c7fa54edaa83d2447dcd95 :information : serial: SNS-AG-USA : board: SHVC-1A3M-21 - : revision: 1.0 + : revision: SNS-AG-0 : name: Aerobiz Supersonic : title: Aerobiz Supersonic @@ -809,7 +2530,7 @@ cartridge sha256:1f5738552c51de25ffe8aa44ff396c1ab238435296f1e8f99f8cf335483c03d :information : serial: SNS-ACCE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ACCE-0 : name: Air Cavalry : title: Air Cavalry @@ -823,7 +2544,7 @@ cartridge sha256:69c5805ad0494703e7d636d3d40d615d33e79bebef9d2cdb4a23b73d44c7b6f :information : serial: SNS-4A-USA : board: SHVC-1A3M-21 - : revision: 1.0 + : revision: SNS-4A-0 : name: Air Strike Patrol : title: Air Strike Patrol @@ -836,7 +2557,7 @@ cartridge sha256:0099bdb56e4190f81440c8c29395ecc15d78eeabfc38a93dca4773817d6f720 :information : serial: SNS-AUJE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AUJE-0 : name: Al Unser Jr.'s Road to the Top : title: Al Unser Jr.'s Road to the Top @@ -849,7 +2570,7 @@ cartridge sha256:aa768b8b00123717c8d49f2c6731cdbfd80ab6a54128bae7594e93f45e38a19 :information : serial: SNS-RJ-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-RJ-0 : name: Aladdin : title: Aladdin @@ -862,7 +2583,7 @@ cartridge sha256:e637b8241d55ee334a3452888df5e30d72c520dbb55c498db1a984438bab3e5 :information : serial: SNS-A3-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-A3-0 : name: Alien 3 : title: Alien 3 @@ -875,7 +2596,7 @@ cartridge sha256:05eb897d7696555790591c431c9d55a43ff9a1c12162443c17c5fcddfa5eb3c :information : serial: SNS-AP-USA : board: SHVC-YA0N-01 - : revision: 1.0 + : revision: SNS-AP-0 : name: Alien vs. Predator : title: Alien vs. Predator @@ -888,7 +2609,7 @@ cartridge sha256:dc9cefb4dd50dce2e9d626ac71d4a06306516cba4bc784c90e4a30fe4e7ff4e :information : serial: SNS-AA-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AA-0 : name: American Gladiators : title: American Gladiators @@ -901,7 +2622,7 @@ cartridge sha256:6931a3eacb7ab3c2f2fb57ba7d59c6da56fe6c7d60484cebec9332e6caca3ae :information : serial: SNS-9W-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-9W-0 : name: American Tail - Fievel Goes West, An : title: An American Tail: Fievel Goes West @@ -914,7 +2635,7 @@ cartridge sha256:9abb426bac62e03e4437f5a9a8455c3000042f339125cc60ae29382ae89d849 :information : serial: SNS-7A-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-7A-0 : name: Andre Agassi Tennis : title: Andre Agassi Tennis @@ -927,7 +2648,7 @@ cartridge sha256:626f1fe52b0df0f8ede23f0062cd842321c8dabf14aefdca12e526876ecf383 :information : serial: SNS-ANCE-USA : board: MJSC-1A0N-30 - : revision: 1.0 + : revision: SNS-ANCE-0 : name: Animaniacs : title: Animaniacs @@ -940,7 +2661,7 @@ cartridge sha256:31569bef662bc438194726967970bf19f504101060763cbd649350362fb6ef2 :information : serial: SNS-AW7E-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-AW7E-0 : name: Arcade's Greatest Hits - The Atari Collection 1 : title: Arcade's Greatest Hits: The Atari Collection 1 @@ -954,7 +2675,7 @@ cartridge sha256:aac9d6f2b8408e4bbdc83ebbba755428caf8021fefbfac7220fb4c772abd994 :information : serial: SNS-RF-USA : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-RF-0 : name: Arcana : title: Arcana @@ -967,7 +2688,7 @@ cartridge sha256:0f474dafe5a26f3dea491d18073dd490d2f1f91313a7e91086565510d38d9a0 :information : serial: SNS-A9-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-A9-0 : name: Ardy Light Foot : title: Ardy Light Foot @@ -980,7 +2701,7 @@ cartridge sha256:14d3ece30898587eda20c661a4a55ec595ba6352ca1f0bfc177542aa0eef003 :information : serial: SNS-A6-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-A6-0 : name: Arkanoid - Doh It Again! : title: Arkanoid: Doh It Again! @@ -993,7 +2714,7 @@ cartridge sha256:55e57c5e012583ff0fafd1aee16b3f8269ee2b34fe10f10b93ba0dde72f2b78 :information : serial: SNS-RW-USA : board: SHVC-1J0N-01 - : revision: 1.0 + : revision: SNS-RW-0 : name: Art of Fighting : title: Art of Fighting @@ -1006,7 +2727,7 @@ cartridge sha256:2431f8dc067ba27c6c3a846929f3deac6a45aa53a9a9ac20ede8ec5ca6854ea :information : serial: SNS-AX-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-AX-0 : name: Axelay : title: Axelay @@ -1024,7 +2745,7 @@ cartridge sha256:a3213e40d7abbc25a5b909642433103b06d8f90500c930bf64093ade0329da7 :information : serial: SNS-ABZE-USA : board: SHVC-1K0N-01 - : revision: 1.0 + : revision: SNS-ABZE-0 : name: Ballz 3D : title: Ballz 3D @@ -1037,7 +2758,7 @@ cartridge sha256:865919b25a9d241c907bcda18b380e3c704f33f4997ad44559046f0f08c4968 :information : serial: SNS-8L-USA : board: SHVC-YA0N-01 - : revision: 1.0 + : revision: SNS-8L-0 : name: Barbie Super Model : title: Barbie Super Model @@ -1050,7 +2771,7 @@ cartridge sha256:fe1ad128313b2b9a47f89cf0d95d4c0cc2cb35a817ac5d915ee6c4d98d47d67 :information : serial: SNS-U5-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-U5-0 : name: Barkley Shut Up and Jam! : title: Barkley Shut Up and Jam! @@ -1063,7 +2784,7 @@ cartridge sha256:c670e16c076f6d92ba581b78769b604e79ad567c04c647dac557f45a48c3448 :information : serial: SNS-ABAE-USA : board: SHVC-2A0N-20 - : revision: 1.0 + : revision: SNS-ABAE-0 : name: Bass Masters Classic : title: Bass Masters Classic @@ -1076,7 +2797,7 @@ cartridge sha256:db1ac03cc8b7daaa812da239029bcf999b30b2afe1c03d51f7ae849a796617e :information : serial: SNS-A9BE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-A9BE-0 : name: Bass Masters Classic - Pro Edition : title: Bass Masters Classic: Pro Edition @@ -1090,7 +2811,7 @@ cartridge sha256:e2be173c77bd1957787be36d13334f655e14d32dad99cacb0fd5e5fc65d96fa :information : serial: SNS-AB2E-USA : board: SHVC-1A3M-21 - : revision: 1.0 + : revision: SNS-AB2E-0 : name: Bassin's Black Bass : title: Bassin's Black Bass @@ -1103,7 +2824,7 @@ cartridge sha256:e36aaba64be016cabc33a2dcf88913341e2edacc722e2a1ebe04eccda2a5d6e :information : serial: SNS-A3BE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-A3BE-0 : name: Batman Forever : title: Batman Forever @@ -1116,7 +2837,7 @@ cartridge sha256:f8d5c51f74df33edc827fbf8df7aab70160770ab0a896db6e59438ad9208cc6 :information : serial: SNS-BJ-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-BJ-0 : name: Batman Returns : title: Batman Returns @@ -1129,7 +2850,7 @@ cartridge sha256:983022203546e031773db0d1af7552c489187954882843f13ff123f09064c1d :information : serial: SNS-BZ-USA : board: SHVC-YA0N-01 - : revision: 1.0 + : revision: SNS-BZ-0 : name: Battle Blaze : title: Battle Blaze @@ -1142,7 +2863,7 @@ cartridge sha256:d19113964c4d268e986018e256e9358cde9a23a05e6053b54c0f2d950dcdf39 :information : serial: SNS-4B-USA : board: SHVC-YA0N-01 - : revision: 1.0 + : revision: SNS-4B-0 : name: Battle Cars : title: Battle Cars @@ -1155,7 +2876,7 @@ cartridge sha256:32f42fda0667d9435a2de84c7ce7b067bcbab1164f8f6d837992ad6cfac4f8d :information : serial: SNS-BT-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-BT-0 : name: Battle Clash : title: Battle Clash @@ -1168,7 +2889,7 @@ cartridge sha256:6e436020d967d35a0f7ce43e38e83a616b70696ae7d35b37cd56601cfb3822b :information : serial: SNS-BG-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-BG-0 : name: Battle Grand Prix : title: Battle Grand Prix @@ -1181,7 +2902,7 @@ cartridge sha256:c7f0269498d190e4fd0f6f880a148fbe3713cd3a632083bac1e5bd18f817237 :information : serial: SNS-UL-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-UL-0 : name: Battletoads & Double Dragon : title: Battletoads & Double Dragon @@ -1194,7 +2915,7 @@ cartridge sha256:b0dbd4d7e5689c32234e80b0c5362ef67c425ab72d6ddb49d1cb1133ef630ef :information : serial: SNS-NX-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-NX-0 : name: Battletoads in Battlemaniacs : title: Battletoads in Battlemaniacs @@ -1207,7 +2928,7 @@ cartridge sha256:0b0f991da7ce4b3c2974d6adf62191ec554db9793c5def14cdfb62b7ae28cc9 :information : serial: SNS-BY-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-BY-0 : name: Bazooka Blitzkrieg : title: Bazooka Blitzkrieg @@ -1220,7 +2941,7 @@ cartridge sha256:d7271ca08400bbf5ae165b0aaa6e8a8a1b266f72e6e0ae10aae529732a472f7 :information : serial: SNS-EW-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-EW-0 : name: Beauty and the Beast : title: Beauty and the Beast @@ -1233,7 +2954,7 @@ cartridge sha256:15d4fc90cb202a9391718cd40b9f0384165aef03018ed932540e8f7c18b397d :information : serial: SNS-ABUE-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-ABUE-0 : name: Beavis and Butt-Head : title: Beavis and Butt-Head @@ -1246,7 +2967,7 @@ cartridge sha256:4958eda26f2419f473449017c64121caee5e49c480ffa205422e7dd45cd23e3 :information : serial: SNS-6B-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-6B-0 : name: Bebe's Kids : title: Bebe's Kids @@ -1259,7 +2980,7 @@ cartridge sha256:4d22279e534848012e0f1595468687742ae18cabc3fe44eeef938bc3a4dd08b :information : serial: SNS-2V-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-2V-0 : name: Beethoven - The Ultimate Canine Caper! : title: Beethoven: The Ultimate Canine Caper! @@ -1272,7 +2993,7 @@ cartridge sha256:e4e9beaeeb3e968af772d1c4c9e4c1b4dfdba4e47c0205b458e1ab3a62a9606 :information : serial: SNS-BE-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-BE-0 : name: Best of the Best - Championship Karate : title: Best of the Best: Championship Karate @@ -1286,7 +3007,7 @@ cartridge sha256:4cb601168c91fa0608c16a8cf2f292d991c6a5615d51861dee2f9b91c8d6bb1 :information : serial: SNS-AB9E-USA : board: SHVC-1A1M-20 - : revision: 1.0 + : revision: SNS-AB9E-0 : name: Big Sky Trooper : title: Big Sky Trooper @@ -1299,7 +3020,7 @@ cartridge sha256:91ba5691dea3cdf103177ae5779110fc372fce8229cf91f263073667e7a8b5b :information : serial: SNS-ABME-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ABME-0 : name: Biker Mice from Mars : title: Biker Mice from Mars @@ -1313,7 +3034,7 @@ cartridge sha256:6fa6b8a8804ff6544bdedf94339a86ba64ce0b6dbf059605abb1cd6f102d348 :information : serial: SNS-C8-USA : board: SHVC-1A3B-12 - : revision: 1.0 + : revision: SNS-C8-0 : name: Bill Laimbeer's Combat Basketball : title: Bill Laimbeer's Combat Basketball @@ -1326,7 +3047,7 @@ cartridge sha256:ec2d91e238c26a5ddf7067d104b3b3e2eaee89255377e1eb6c4df8f301300e6 :information : serial: SNS-7F-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-7F-0 : name: Bill Walsh College Football : title: Bill Walsh College Football @@ -1339,7 +3060,7 @@ cartridge sha256:de1de85ad549a6aaf0431cceb47cbd07e1f6e81f9e16fd62575305e2c1f0624 :information : serial: SNS-BV-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-BV-0 : name: Bio Metal : title: Bio Metal @@ -1352,7 +3073,7 @@ cartridge sha256:328c8f57e2ea371f6fd5b8a9834c56e35eb3bfe710502dd80f370739f9ccb7e :information : serial: SNS-6Z-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-6Z-0 : name: Blackthorne : title: Blackthorne @@ -1365,7 +3086,7 @@ cartridge sha256:0d4e0d134396bd1c7254cdc1da356eb944ca14910b6690f484a75a9c3a8106e :information : serial: SNS-BL-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-BL-0 : name: BlaZeon - The Bio-Cyborg Challenge : title: BlaZeon: The Bio-Cyborg Challenge @@ -1378,7 +3099,7 @@ cartridge sha256:99f40f06fa4dbeeea4fe67d2de5b4c1bf301bedac1958ba1c239dcaf39b0a99 :information : serial: SNS-B6-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-B6-0 : name: Blues Brothers, The : title: The Blues Brothers @@ -1391,7 +3112,7 @@ cartridge sha256:9e6ebebcf14609c2a38a5f4409d0c8c859949cded70c5b6fd16fd15d9983d9d :information : serial: SNS-B4-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-B4-0 : name: BOB : title: B.O.B. @@ -1404,7 +3125,7 @@ cartridge sha256:854d2492d1cb059749bb0904ca5f92a5eeec09167abf84f7cca4023b1819e4f :information : serial: SNS-ABNE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ABNE-0 : name: Bonkers : title: Bonkers @@ -1417,7 +3138,7 @@ cartridge sha256:8f131182b286bd87f12cf4f00453336538ce690d0e1f0972ac0be98df4d4898 :information : serial: SNS-AB4E-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AB4E-0 : name: Boogerman - A Pick and Flick Adventure : title: Boogerman: A Pick and Flick Adventure @@ -1430,7 +3151,7 @@ cartridge sha256:e67940a2106c1507f3a8d38790f263bbbf814578ebf3dbc4e3eb6007d310793 :information : serial: SNS-LL-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-LL-0 : name: Boxing Legends of the Ring : title: Boxing Legends of the Ring @@ -1445,7 +3166,7 @@ cartridge sha256:f4666355e7fea434843dc6d5119673bd6c23e69b884aac0b382ff036997e52b :information : serial: SNS-3B-USA : board: SHVC-2J3M-11 - : revision: 1.0 + : revision: SNS-3B-0 : name: Brain Lord : title: Brain Lord @@ -1458,7 +3179,7 @@ cartridge sha256:9885ca148d32c4df6230642bcfa153f7e51b9559415042a831db14d07b3e6c3 :information : serial: SNS-B7-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-B7-0 : name: Brainies, The : title: The Brainies @@ -1471,7 +3192,7 @@ cartridge sha256:bbde8b46c7262f9d4a5b3926a00850cb00b4f7711f6421f0adf4e2b0c847a5d :information : serial: SNS-5D-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-5D-0 : name: Bram Stoker's Dracula : title: Bram Stoker's Dracula @@ -1486,7 +3207,7 @@ cartridge sha256:130a74e76369b0ec4d6378a014550921433f1ae1ac1dddffb51f77c9f21a818 :information : serial: SNS-QF-USA : board: SHVC-2J5M-01 - : revision: 1.0 + : revision: SNS-QF-0 : name: Brandish : title: Brandish @@ -1499,7 +3220,7 @@ cartridge sha256:044b61613ed66eae08abd5fa5dcd13b24aab11a942e3309cdff624d198c4744 :information : serial: SNS-RE-USA : board: SHVC-2A0N-10 - : revision: 1.0 + : revision: SNS-RE-0 : name: Brawl Brothers : title: Brawl Brothers @@ -1512,7 +3233,7 @@ cartridge sha256:aad8c9be1b7a9662256b0c3d76f5b7a273bcd497aa838232d307e9f2e80cf69 :information : serial: SNS-ABXE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ABXE-0 : name: BreakThru! : title: BreakThru! @@ -1526,7 +3247,7 @@ cartridge sha256:cbc496a7879ba78f32c51c3df4ba1a1a42f17d78d48a39ea9c709d1ad18cb8d :information : serial: SNS-BF-USA : board: SHVC-2A3M-11 - : revision: 1.0 + : revision: SNS-BF-0 : name: Breath of Fire : title: Breath of Fire @@ -1541,7 +3262,7 @@ cartridge sha256:fede9d4aec8c35ed11e2868c3c517bce53ee3e6af724085c92500e99e43e63d :information : serial: SNS-AF2E-USA : board: SHVC-1J3M-20 - : revision: 1.0 + : revision: SNS-AF2E-0 : name: Breath of Fire II : title: Breath of Fire II @@ -1554,7 +3275,7 @@ cartridge sha256:99450b45ccc70a1ed387f968c8f863a3c7f6a4b86809e841c25a71e1e904ac6 :information : serial: SNS-5Y-USA : board: SHVC-2A0N-01 - : revision: 1.0 + : revision: SNS-5Y-0 : name: Brett Hull Hockey '94 : title: Brett Hull Hockey @@ -1567,7 +3288,7 @@ cartridge sha256:a427db4860cb5140935f263ba872fe14949c3548db644fed46b2edf3dff3d4a :information : serial: SNS-ABHE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ABHE-0 : name: Brett Hull Hockey '95 : title: Brett Hull Hockey '95 @@ -1580,7 +3301,7 @@ cartridge sha256:f2bc4cb460dfc5d5288065a2f529190b72e69d4e02634246086244c20f30521 :information : serial: SNS-AB6E-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AB6E-0 : name: Bronkie the Bronchiasaurus : title: Bronkie the Bronchiasaurus @@ -1593,7 +3314,7 @@ cartridge sha256:ee00c57ddfa9b967d1857acb518df039ba73055bdebe78db014de0f5da262fd :information : serial: SNS-AWUE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AWUE-0 : name: Brunswick World Tournament of Champions : title: Brunswick World Tournament of Champions @@ -1606,7 +3327,7 @@ cartridge sha256:9e3ad5e521e759a2e2260ea8072eb3314b6fcf67a3b7247357a5de9bcb24eea :information : serial: SNS-ABLE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ABLE-0 : name: Brutal - Paws of Fury : title: Brutal: Paws of Fury @@ -1619,7 +3340,7 @@ cartridge sha256:811cbc3287c0959e8eb242e817684d36de664ebebc5873a1fa9958693857c43 :information : serial: SNS-UY-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-UY-0 : name: Bubsy I - Claws Encounters of the Furred Kind : title: Bubsy in Claws Encounters of the Furred Kind @@ -1632,7 +3353,7 @@ cartridge sha256:2357d344af77d25dda030520ce203045fd9060f83e3b9609a228dba859d9017 :information : serial: SNS-ABBE-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-ABBE-0 : name: Bubsy II : title: Bubsy II @@ -1645,7 +3366,7 @@ cartridge sha256:49020695a017acc3dfadea97a60e28609e583571f69c5abeb3c6b1c2db8113f :information : serial: SNS-R7-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-R7-0 : name: Bugs Bunny - Rabbit Rampage : title: Bugs Bunny: Rabbit Rampage @@ -1658,7 +3379,7 @@ cartridge sha256:ba4f31353e0e1233b574391ad97a80901d7de212e2c55d7be2af11a9a57c822 :information : serial: SNS-BU-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-BU-0 : name: Bulls vs. Blazers and the NBA Playoffs : title: Bulls vs. Blazers and the NBA Playoffs @@ -1671,7 +3392,7 @@ cartridge sha256:d8b3d9267470adb8ef2d197ade44476e504c0823f8fe9d2cf2883a03aa75bd4 :information : serial: SNS-BU-USA : board: SHVC-1A0N-20 - : revision: 1.1 + : revision: SNS-BU-1 : name: Bulls vs. Blazers and the NBA Playoffs : title: Bulls vs. Blazers and the NBA Playoffs @@ -1684,7 +3405,7 @@ cartridge sha256:d6f6c30732dae8d00cd83628c3156acbdf26f99df701f779522e21de74dae5f :information : serial: SNS-AYKE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AYKE-0 : name: Bust-a-Move : title: Bust-a-Move @@ -1697,7 +3418,7 @@ cartridge sha256:a8294d449bbb8370816efe0374704e8af20dbbde9c19afe969d898528bc293d :information : serial: SNS-CC-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-CC-0 : name: Cacoma Knight in Bizyland : title: Cacoma Knight in Bizyland @@ -1710,7 +3431,7 @@ cartridge sha256:75993076c8773e7c7d555ef290be10590def40ca7b83307b8dc86556b04a656 :information : serial: SNS-CJ-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-CJ-0 : name: Cal Ripken Jr. Baseball : title: Cal Ripken Jr. Baseball @@ -1723,7 +3444,7 @@ cartridge sha256:19f4a1f08aa55ff3cc8ff7ae60ffe03f0e436e8d8901455f1311f2276497a49 :information : serial: SNS-C2-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-C2-0 : name: California Games II : title: California Games II @@ -1737,7 +3458,7 @@ cartridge sha256:6cdec3cb9c91aa23feb13005f874bda580c2f548302874491a31951031c9dbb :information : serial: SNS-ASCE-USA : board: SHVC-2A1M-01 - : revision: 1.0 + : revision: SNS-ASCE-0 : name: Cannondale Cup : title: Cannondale Cup @@ -1750,7 +3471,7 @@ cartridge sha256:9590110a990e90f525d5c8d70fc2a3da10879378003173b6761afb8bf042ee0 :information : serial: SNS-NL-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-NL-0 : name: Capcom's MVP Football : title: Capcom's MVP Football @@ -1763,7 +3484,7 @@ cartridge sha256:fd5761f9dd1f2b87ad11df6085046d0dfcdc3a79139263e47b0cff707966ba5 :information : serial: SNS-JL-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-JL-0 : name: Capcom's Soccer Shootout : title: Capcom's Soccer Shootout @@ -1776,7 +3497,7 @@ cartridge sha256:2a117951adcfbc4298763673a834d502c3f7a3964db1e59650f113c07bb831f :information : serial: SNS-6A-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-6A-0 : name: Captain America and The Avengers : title: Captain America and The Avengers @@ -1789,7 +3510,7 @@ cartridge sha256:d9b7f9356be0780f0037093a86ef8450f15e569cbd3680073d1cd345dfadb70 :information : serial: SNS-QM-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-QM-0 : name: Captain Commando : title: Captain Commando @@ -1802,7 +3523,7 @@ cartridge sha256:8784614896e2b3e8d98c8166613ca5d2329643795a4dc107791c58c6c51e126 :information : serial: SNS-CP-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-CP-0 : name: Captain Novolin : title: Captain Novolin @@ -1815,7 +3536,7 @@ cartridge sha256:ee5fc27dd19a2ecb3c3c7c73d558a18ffd5ff365710c18b88150e277f08d587 :information : serial: SNS-ACAE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ACAE-0 : name: Carrier Aces : title: Carrier Aces @@ -1828,7 +3549,7 @@ cartridge sha256:b9b982cd8f91c51089d49b550f11882b1ee785ebddcb7355cfc465916d61a04 :information : serial: SNS-AXCE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AXCE-0 : name: Casper : title: Casper @@ -1841,7 +3562,7 @@ cartridge sha256:367725a149a471411e4f72ad77603b61fb101c9cab4521be5647e13708cc97b :information : serial: SNS-ADZE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ADZE-0 : name: Castlevania - Dracula X : title: Castlevania: Dracula X @@ -1854,7 +3575,7 @@ cartridge sha256:32008c429eafe7eb59aff7a89f77e1a267f02f9061ff8830ade7b99081e27f7 :information : serial: SNS-8W-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-8W-0 : name: Champions World Class Soccer : title: Champions World Class Soccer @@ -1867,7 +3588,7 @@ cartridge sha256:e6c4f468b39f2dea3436b63758db8ac9b29731357b982ec373334a36f202623 :information : serial: SNS-5P-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-5P-0 : name: Championship Pool : title: Championship Pool @@ -1881,7 +3602,7 @@ cartridge sha256:fdd763dffc6fb38975d4c6d6e3123f9738122781b7d13e1fc7f9820464cbaeb :information : serial: SNS-67-USA : board: SHVC-1A3M-20 - : revision: 1.0 + : revision: SNS-67-0 : name: Championship Soccer '94 : title: Championship Soccer '94 @@ -1895,7 +3616,7 @@ cartridge sha256:aa69d4e19c2eb206fe88eba65994c830256c220e5506f59824aefa0a75dd44d :information : serial: SNS-ZV-USA : board: SHVC-1A1M-01 - : revision: 1.0 + : revision: SNS-ZV-0 : name: Chavez : title: Chavez @@ -1908,7 +3629,7 @@ cartridge sha256:39de64101cf7f25863ce55e03a27d13422ea572ee996746578b5936fea80228 :information : serial: SNS-AC2E-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AC2E-0 : name: Chavez II : title: Chavez II @@ -1921,7 +3642,7 @@ cartridge sha256:ee0e51d922d1cf8abe3dfc6b0d84a988a6635dc96b2a96962007c41aaa54277 :information : serial: SNS-CH-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-CH-0 : name: Chessmaster, The : title: The Chessmaster @@ -1934,7 +3655,7 @@ cartridge sha256:c7e7df8932bf0056aa530f3dc3c913c1171a359af4c197094c2b972946dc605 :information : serial: SNS-CE-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-CE-0 : name: Chester Cheetah - Too Cool to Fool : title: Chester Cheetah: Too Cool to Fool @@ -1947,7 +3668,7 @@ cartridge sha256:21a2aa488cb8140ca318f7d1f513103d14e758181aa336a594097d32ba0a758 :information : serial: SNS-7C-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-7C-0 : name: Chester Cheetah - Wild, Wild Quest : title: Chester Cheetah: Wild, Wild Quest @@ -1960,7 +3681,7 @@ cartridge sha256:9a064b67f522b75b82d0857519c0e33b4dbbe494c2ef79a44fdc913d605d0b2 :information : serial: SNS-3C-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-3C-0 : name: Choplifter III : title: Choplifter III @@ -1975,7 +3696,7 @@ cartridge sha256:06d1c2b06b716052c5596aaa0c2e5632a027fee1a9a28439e509f813c30829a :information : serial: SNS-ACTE-USA : board: SHVC-1J3M-20 - : revision: 1.0 + : revision: SNS-ACTE-0 : name: Chrono Trigger : title: Chrono Trigger @@ -1988,7 +3709,7 @@ cartridge sha256:63ab79e86ea13e2cf9bb67aec971febb68450db9865b00b5f41261065382239 :information : serial: SNS-CK-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-CK-0 : name: Chuck Rock : title: Chuck Rock @@ -2001,7 +3722,7 @@ cartridge sha256:8b7525b2aa30cbea9e3deee601dd26e0100b8169c1948f19866be15cae0ac00 :information : serial: SNS-8C-USA : board: SHVC-1J0N-01 - : revision: 1.0 + : revision: SNS-8C-0 : name: Clay Fighter : title: Clay Fighter @@ -2014,7 +3735,7 @@ cartridge sha256:ea52b39a8e1ea15bfad6b92883c9a5fe744cecd7c0e175aa3bd40280cf7a966 :information : serial: SNS-7E-USA : board: SHVC-BJ0N-01 - : revision: 1.0 + : revision: SNS-7E-0 : name: Clay Fighter - Tournament Edition : title: Clay Fighter: Tournament Edition @@ -2027,7 +3748,7 @@ cartridge sha256:2d40c86bc19d85555bf2672acf515b04dbf56a6a59b29ad503e672310b0fae3 :information : serial: SNS-ACZE-USA : board: SHVC-BJ0N-20 - : revision: 1.0 + : revision: SNS-ACZE-0 : name: Clay Fighter 2 - Judgment Clay : title: Clay Fighter 2: Judgment Clay @@ -2040,7 +3761,7 @@ cartridge sha256:6d9cd7f0cda3c0a82ed3f6a92cbbba4fe8365438e0a7867ad1cae2044d1738e :information : serial: SNS-Y5-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-Y5-0 : name: Claymates : title: Claymates @@ -2053,7 +3774,7 @@ cartridge sha256:e5980b990605a9c91fa89101c440b2ec9993329296ba09a9538042d724a080f :information : serial: SNS-6C-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-6C-0 : name: Cliffhanger : title: Cliffhanger @@ -2066,7 +3787,7 @@ cartridge sha256:03f6c69aef92d36b5ea25a6023368da0e1da9fa160e8316ebd533d4f358ffac :information : serial: SNS-CL-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-CL-0 : name: Clue : title: Clue @@ -2080,7 +3801,7 @@ cartridge sha256:5536cea2da39f2572abe3b0fcf71f8fcd981376b470b174969772aae4a7a184 :information : serial: SNS-AC7E-USA : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SNS-AC7E-0 : name: College Football USA '97 - The Road to New Orleans : title: College Football USA '97: The Road to New Orleans @@ -2094,7 +3815,7 @@ cartridge sha256:b0be35a0d5e500f4fffca5f2940e0ec52c81ce99dacd773c3ca9cf92f592d94 :information : serial: SNS-ANYE-USA : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SNS-ANYE-0 : name: College Slam : title: College Slam @@ -2107,7 +3828,7 @@ cartridge sha256:c88a882ad72dfa07a9b1eb8a2183aa10057d60877a02edf90cf2cd8c78abe65 :information : serial: SNS-CR-USA : board: SHVC-2A0N-01 - : revision: 1.0 + : revision: SNS-CR-0 : name: Combatribes, The : title: The Combatribes @@ -2120,7 +3841,7 @@ cartridge sha256:26e09f5bc2bde28d57aeca0bf5be7f7fb8e3b3887af975bcbf2e6f29b07df56 :information : serial: SNS-J2-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-J2-0 : name: Congo's Caper : title: Congo's Caper @@ -2133,7 +3854,7 @@ cartridge sha256:a93ea87fc835c530b5135c5294433d15eef6dbf656144b387e89ac19cf86499 :information : serial: SNS-CS-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-CS-0 : name: Contra III - The Alien Wars : title: Contra III: The Alien Wars @@ -2146,7 +3867,7 @@ cartridge sha256:c7d622391f7699fb0dc6367e141c894e700cc9bd8abca69f36785e7bc2f42a4 :information : serial: SNS-C8-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-C8-0 : name: Cool Spot : title: Cool Spot @@ -2159,7 +3880,7 @@ cartridge sha256:9674cc269d89a52d1719a487b44acf004fb777cbd58d76b19a2cd2574972821 :information : serial: SNS-CD-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-CD-0 : name: Cool World : title: Cool World @@ -2172,7 +3893,7 @@ cartridge sha256:7c722f9941957630467c1784d0eb3f92fbfc0a2a1da3c8f5c27f593eca2a5a0 :information : serial: SNS-AC8E-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AC8E-0 : name: CutThroat Island : title: CutThroat Island @@ -2185,7 +3906,7 @@ cartridge sha256:c4ae2797fac2586b8640064be6398f2b4f2b3158a07f26c66912b29f7fd197d :information : serial: SNS-CF-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-CF-0 : name: Cyber Spin : title: Cyber Spin @@ -2198,7 +3919,7 @@ cartridge sha256:ad31b94ce928ecff605e2b89082154671691509e95d38370ed381437f2c3669 :information : serial: SNS-AV-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-AV-0 : name: Cybernator : title: Cybernator @@ -2211,7 +3932,7 @@ cartridge sha256:337e643d3e63915de06429992f306e8d2b73aed6849b795f9c855c2d03c1818 :information : serial: SNS-DF-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-DF-0 : name: D-Force : title: D-Force @@ -2224,7 +3945,7 @@ cartridge sha256:4068add412571bd85adac32dff9835e4a4886077d752adb104fee3908e42b7e :information : serial: SNS-YF-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-YF-0 : name: Daffy Duck - The Marvin Missions : title: Daffy Duck: The Marvin Missions @@ -2237,7 +3958,7 @@ cartridge sha256:ceb470157576eac3b8b8c16e8ab6b59672409681ffb4232e4ec39dd0cb37ef9 :information : serial: SNS-DT-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-DT-0 : name: Darius Twin : title: Darius Twin @@ -2250,7 +3971,7 @@ cartridge sha256:e6efb6361af04963f22c772f879a466543f56b3b6a084204fef2dcb4659d82d :information : serial: SNS-ZT-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ZT-0 : name: David Crane's Amazing Tennis : title: David Crane's Amazing Tennis @@ -2263,7 +3984,7 @@ cartridge sha256:300c1937e4b68108302e9b0f49974d1ec6b6c45dd8da69dddc19443f9562ecf :information : serial: SNS-9D-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-9D-0 : name: Death and Return of Superman, The : title: The Death and Return of Superman @@ -2276,7 +3997,7 @@ cartridge sha256:752d24fab240f4dd1dfbfea5ec83438998316806ad44488bf8c84430ca5a2cd :information : serial: SNS-AD6E-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AD6E-0 : name: Demolition Man : title: Demolition Man @@ -2289,7 +4010,7 @@ cartridge sha256:18d40a807d5f88c5b6a1ad849eec7e0f189225d9a1586037c850f6680b5844d :information : serial: SNS-3Z-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-3Z-0 : name: Demon's Crest : title: Demon's Crest @@ -2302,7 +4023,7 @@ cartridge sha256:a362033d0d7e754d79202b255679186ad799b9e784719614b913ec8c9857ae3 :information : serial: SNS-4D-USA : board: SHVC-YA0N-01 - : revision: 1.0 + : revision: SNS-4D-0 : name: Dennis the Menace : title: Dennis the Menace @@ -2315,7 +4036,7 @@ cartridge sha256:606abf536440173ae36466db360c7db6b474beb7a105c8a62bc74a54cbe1c38 :information : serial: SNS-RG-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-RG-0 : name: Desert Strike - Return to the Gulf : title: Desert Strike: Return to the Gulf @@ -2329,7 +4050,7 @@ cartridge sha256:9c4721339a197185d61e0697ea0149db143a27ddb2f57ebd398f18bcf4d7724 :information : serial: SNS-VH-USA : board: SHVC-1A3M-20 - : revision: 1.0 + : revision: SNS-VH-0 : name: Dig & Spike Volleyball : title: Dig & Spike Volleyball @@ -2342,7 +4063,7 @@ cartridge sha256:7dbfc44d28a46e6d399628e43086aa9fd0b2abeda4c108751a5ad91c102c3aa :information : serial: SNS-DW-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-DW-0 : name: DinoCity : title: DinoCity @@ -2360,7 +4081,7 @@ cartridge sha256:c5474de3592e2a99aac0e5511516658f9f0b50167c754a018409842ec35bcd4 :information : serial: SNS-AF9E-USA : board: SHVC-1CA0N6S-01 - : revision: 1.0 + : revision: SNS-AF9E-0 : name: Dirt Trax FX : title: Dirt Trax FX @@ -2375,7 +4096,7 @@ cartridge sha256:df2644d435330192a13768cc1f79c5aa3084a64217a5250c6dd4ffdbe2175be :information : serial: SNS-8X-USA : board: SHVC-1J1M-11 - : revision: 1.1 + : revision: SNS-8X-1 : name: Donkey Kong Country : title: Donkey Kong Country @@ -2390,7 +4111,7 @@ cartridge sha256:628147468c3539283197f58f03b94df49758a332831857481ea9cc31645f052 :information : serial: SNS-8X-USA : board: SHVC-1J1M-20 - : revision: 1.2 + : revision: SNS-8X-2 : name: Donkey Kong Country : title: Donkey Kong Country @@ -2405,7 +4126,7 @@ cartridge sha256:07ff03fa8c8e31d2f8277ef2a9785022edebf7f79b694c66a00c66d8e563bce :information : serial: SNS-8E-USA : board: SHVC-1J1M-20 - : revision: 1.0 + : revision: SNS-8E-0 : name: Donkey Kong Country - Competition Cartridge : title: Donkey Kong Country: Competition Cartridge @@ -2420,7 +4141,7 @@ cartridge sha256:35421a9af9dd011b40b91f792192af9f99c93201d8d394026bdfb42cbf2d863 :information : serial: SNS-ADNE-USA : board: SHVC-1J1M-20 - : revision: 1.0 + : revision: SNS-ADNE-0 : name: Donkey Kong Country 2 - Diddy's Kong Quest : title: Donkey Kong Country 2: Diddy's Kong Quest @@ -2435,7 +4156,7 @@ cartridge sha256:2277a2d8dddb01fe5cb0ae9a0fa225d42b3a11adccaeafa18e3c339b3794a32 :information : serial: SNS-A3CE-USA : board: SHVC-1J1M-20 - : revision: 1.0 + : revision: SNS-A3CE-0 : name: Donkey Kong Country 3 - Dixie Kong's Double Trouble : title: Donkey Kong Country 3: Dixie Kong's Double Trouble @@ -2453,7 +4174,7 @@ cartridge sha256:d45e26eb10c323ecd480e5f2326b223e29264c3adde67f48f0d2791128e519e :information : serial: SNS-AD8E-USA : board: SHVC-1CB0N7S-01 - : revision: 1.0 + : revision: SNS-AD8E-0 : name: Doom : title: Doom @@ -2466,7 +4187,7 @@ cartridge sha256:bb915b286b33842e39e9022366169233a4041515c7ecc60ac428420b28e48dd :information : serial: SNS-DM-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-DM-0 : name: Doomsday Warrior : title: Doomsday Warrior @@ -2479,7 +4200,7 @@ cartridge sha256:b32aa9cbf8f6baacc84f6418fa6fbc33b9ce71458fecc91275aafdbf6f743a9 :information : serial: SNS-5E-USA : board: SHVC-BJ0N-01 - : revision: 1.0 + : revision: SNS-5E-0 : name: Double Dragon V - The Shadow Falls : title: Double Dragon V: The Shadow Falls @@ -2492,7 +4213,7 @@ cartridge sha256:d98d7da1e7636e067563e2e480d7dfbc013b7e9bdf1329fd61c5cacac0293e1 :information : serial: SNS-AD5E-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AD5E-0 : name: Dragon - The Bruce Lee Story : title: Dragon: The Bruce Lee Story @@ -2506,7 +4227,7 @@ cartridge sha256:a3b1cae3fe55fe52c035ab122e7f850640b0935524496d45b1915ca3c8a934f :information : serial: SNS-ADVE-USA : board: SHVC-1A3M-21 - : revision: 1.0 + : revision: SNS-ADVE-0 : name: Dragon View : title: Dragon View @@ -2519,7 +4240,7 @@ cartridge sha256:49a1f9f5e6084b3daa1b13ab5a37ebe8bd3cf20e1c7429fbf722298092893e8 :information : serial: SNS-DI-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-DI-0 : name: Dragon's Lair : title: Dragon's Lair @@ -2533,7 +4254,7 @@ cartridge sha256:74910ce01d19d25cb97a243a51f21c3d522f02fb116682f60440da3292bb14f :information : serial: SNS-DK-USA : board: SHVC-1A3B-11 - : revision: 1.0 + : revision: SNS-DK-0 : name: Drakkhen : title: Drakkhen @@ -2546,7 +4267,7 @@ cartridge sha256:1a79d51a2ad7dd4848205a07ff8e5d873b155dc420de5e52158c9bab935e05c :information : serial: SNS-VE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-VE-0 : name: Dream TV : title: Dream T.V. @@ -2565,7 +4286,7 @@ cartridge sha256:03d25227fb88899d0f3234c4a3f76f1dbe8d582cb6429454fd6f1c4cf14d5c6 :information : serial: SNS-V2-USA : board: SHVC-1B5B-02 - : revision: 1.0 + : revision: SNS-V2-0 : name: Dungeon Master : title: Dungeon Master @@ -2578,7 +4299,7 @@ cartridge sha256:0408e3d9f2259044344a3bfbd7a7ca3c3427f82108fbecd6e5c4c41e80cd303 :information : serial: SNS-ED-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-ED-0 : name: Earth Defense Force : title: Earth Defense Force @@ -2593,7 +4314,7 @@ cartridge sha256:a8fe2226728002786d68c27ddddf0b90a894db52e4dfe268fdf72a68cae5f02 :information : serial: SNS-MB-USA : board: SHVC-1J3M-20 - : revision: 1.0 + : revision: SNS-MB-0 : name: EarthBound : title: EarthBound @@ -2606,7 +4327,7 @@ cartridge sha256:4579e437279f79eedd6b9cf648a814df2ab2c83d937a1bcec1578d28965fb9a :information : serial: SNS-AEJE-USA : board: SHVC-BJ0N-01 - : revision: 1.0 + : revision: SNS-AEJE-0 : name: Earthworm Jim : title: Earthworm Jim @@ -2619,7 +4340,7 @@ cartridge sha256:10eadaab168707829418702386e1bcedd2619d9bbefc37cf31c4118313bcf6d :information : serial: SNS-A2EE-USA : board: MJSC-1J0N-20 - : revision: 1.0 + : revision: SNS-A2EE-0 : name: Earthworm Jim 2 : title: Earthworm Jim 2 @@ -2632,7 +4353,7 @@ cartridge sha256:5d658b63d35e2e0baf48ae3bb04ea5e1553855b34bb39fc2c7ca41fbd3894d5 :information : serial: SNS-E7-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-E7-0 : name: Eek! The Cat : title: Eek! The Cat @@ -2645,7 +4366,7 @@ cartridge sha256:b296054effb1948039635044bc905fdf8ff53e7a73038fd5d8436a913ea5ad8 :information : serial: SNS-L7-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-L7-0 : name: Elite Soccer : title: Elite Soccer @@ -2659,7 +4380,7 @@ cartridge sha256:f14e30ee452ec930a6d08094094b287d0c40c8108f2017c418015242987649b :information : serial: SNS-AESE-USA : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SNS-AESE-0 : name: Emmitt Smith Football : title: Emmitt Smith Football @@ -2673,7 +4394,7 @@ cartridge sha256:cfd666f0bbabec59613d9fe189db7d0a060a78047bc084c0c365840769047bf :information : serial: SNS-EX-USA : board: SHVC-1A3M-20 - : revision: 1.0 + : revision: SNS-EX-0 : name: Equinox : title: Equinox @@ -2686,7 +4407,7 @@ cartridge sha256:c702c3860e9dffdaa1917d013ecbcefdd2c47f89726992f7f810d879772dcc4 :information : serial: SNS-EV-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-EV-0 : name: ESPN Baseball Tonight : title: ESPN Baseball Tonight @@ -2700,7 +4421,7 @@ cartridge sha256:3326061160ad12c7aef5176544ec1c8ef2f534a51960ca882dbc7fcb9b1a738 :information : serial: SNS-AEHE-USA : board: SHVC-1A3M-21 - : revision: 1.0 + : revision: SNS-AEHE-0 : name: ESPN National Hockey Night : title: ESPN National Hockey Night @@ -2714,7 +4435,7 @@ cartridge sha256:7b2fdab972e393395f5379d7fb13e40464db152f6acf58b2d2a6a18f81cefec :information : serial: SNS-ASWE-USA : board: SHVC-1A3M-21 - : revision: 1.0 + : revision: SNS-ASWE-0 : name: ESPN Speed World : title: ESPN Speed World @@ -2728,7 +4449,7 @@ cartridge sha256:faf595b4671f005fa9367ba3fcd30dbff371bc7a9ca8bbfbc0ebfcc5826b60f :information : serial: SNS-ASNE-USA : board: SHVC-1A3M-21 - : revision: 1.0 + : revision: SNS-ASNE-0 : name: ESPN Sunday Night NFL : title: ESPN Sunday Night NFL @@ -2742,7 +4463,7 @@ cartridge sha256:8481e47381bd98c27b9782b5727a5d5f0976fbb3aa3df25c2c42aa37e058681 :information : serial: SNS-46-USA : board: SHVC-2A3M-01#R - : revision: 1.0 + : revision: SNS-46-0 : name: EVO - Search for Eden : title: E.V.O.: Search for Eden @@ -2756,7 +4477,7 @@ cartridge sha256:f2455253db316b6ccd0c5c686d1f1e2d94cd5e37534e70a3a07a409120d58df :information : serial: SNS-9X-USA : board: SHVC-1A1M-11 - : revision: 1.0 + : revision: SNS-9X-0 : name: Exertainment Mountain Bike Rally : title: Exertainment Mountain Bike Rally @@ -2770,7 +4491,7 @@ cartridge sha256:a0521f50b0d0bff6666bfb712498476eb8d5974ef38caf157e2f67cbce5475b :information : serial: SNS-ALFE-USA : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SNS-ALFE-0 : name: Exertainment Mountain Bike Rally + Speed Racer : title: Exertainment Mountain Bike Rally + Speed Racer @@ -2784,7 +4505,7 @@ cartridge sha256:1576066e0cb771a91caf79e7d4f6dc00eb0daa47f0786f1604b32537429a7f4 :information : serial: SNS-GL-USA : board: SHVC-1A3B-12 - : revision: 1.0 + : revision: SNS-GL-0 : name: Extra Innings : title: Extra Innings @@ -2798,7 +4519,7 @@ cartridge sha256:0a8cd5101f849ccd4e40d55fdc4edce914b2825b69eb76ec31cf53b59719e79 :information : serial: SNS-IB-USA : board: SHVC-1A5M-01 - : revision: 1.0 + : revision: SNS-IB-0 : name: Eye of the Beholder : title: Eye of the Beholder @@ -2812,7 +4533,7 @@ cartridge sha256:bf16c3c867c58e2ab061c70de9295b6930d63f29f81cc986f5ecae03e0ad18d :information : serial: SNS-FZ-USA : board: SHVC-1A1B-04 - : revision: 1.0 + : revision: SNS-FZ-0 : name: F-Zero : title: F-Zero @@ -2826,7 +4547,7 @@ cartridge sha256:55c33efb514568c9946c4b866c160ed190fe436faee265ee2fb107f7fe94d52 :information : serial: SNS-6P-USA : board: SHVC-1A1M-01 - : revision: 1.0 + : revision: SNS-6P-0 : name: F1 Pole Position : title: F1 Pole Position @@ -2840,7 +4561,7 @@ cartridge sha256:1d38e3af9e3a6409e93f4705b68c42558f558c68f3e83ef2a40e46cf560b26c :information : serial: SNS-EH-USA : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-EH-0 : name: F1 Race of Champions : title: F1 Race of Champions @@ -2858,7 +4579,7 @@ cartridge sha256:3ae7bfd38a3dc273f4d387af3b15621beefebf5056731af06e3822f5e57db5c :information : serial: SNS-E2-USA : board: SHVC-1DS0B-20 - : revision: 1.0 + : revision: SNS-E2-0 : name: F1 Race of Champions II : title: F1 Race of Champions II @@ -2871,7 +4592,7 @@ cartridge sha256:d689392884df91c2bb84b1411a96f3919b6c9cc8a583dff901a98f0d86d31c3 :information : serial: SNS-2F-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-2F-0 : name: Faceball 2000 : title: Faceball 2000 @@ -2884,7 +4605,7 @@ cartridge sha256:2891f1eab285133364ecc379a5c9e1d0026d60f425f1a458d149014f386cfa5 :information : serial: SNS-D8-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-D8-0 : name: Family Dog : title: Family Dog @@ -2897,7 +4618,7 @@ cartridge sha256:4f43ce12e1d8cd195468d7048494ad2930721e5bf9e69bfd86eeee707ffc634 :information : serial: SNS-FN-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-FN-0 : name: Family Feud : title: Family Feud @@ -2910,7 +4631,7 @@ cartridge sha256:d5c651d726dd957b80d03ab6fdbed4cdd26a3cccf5ec9d91af67251b3ec26a3 :information : serial: SNS-FN-USA : board: MAXI-1A0N-30 - : revision: 1.1 + : revision: SNS-FN-1 : name: Family Feud : title: Family Feud @@ -2923,7 +4644,7 @@ cartridge sha256:c92f389d25870aada3002775838ec9f69a988120c0238af885fd08d46bd9493 :information : serial: SNS-GN-USA : board: SHVC-2A0N-01 - : revision: 1.0 + : revision: SNS-GN-0 : name: Fatal Fury : title: Fatal Fury @@ -2936,7 +4657,7 @@ cartridge sha256:a0c554d46034caef231c36dd6849828ca39703678fb7fdd15a11f292b93bcd6 :information : serial: SNS-DJ-USA : board: SHVC-BJ0N-01 - : revision: 1.0 + : revision: SNS-DJ-0 : name: Fatal Fury 2 : title: Fatal Fury 2 @@ -2949,7 +4670,7 @@ cartridge sha256:410e90db3d38507ccc85ad3bca6b27a080123fd5160e82b5de4d914d4b6d6e6 :information : serial: SNS-3R-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-3R-0 : name: Fatal Fury Special : title: Fatal Fury Special @@ -2962,7 +4683,7 @@ cartridge sha256:1f454f2ce16fb96ba0b950ceaa098fe6eabed9e4a0e512252debad8fa6bc5ef :information : serial: SNS-84-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-84-0 : name: FIFA International Soccer : title: FIFA International Soccer @@ -2976,7 +4697,7 @@ cartridge sha256:26ff143c2f1a4a16ca838cc4b5555e39bbe7208515dca8f1c4b1a00dec61cf0 :information : serial: SNS-A6SE-USA : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SNS-A6SE-0 : name: FIFA Soccer '96 : title: FIFA Soccer '96 @@ -2990,7 +4711,7 @@ cartridge sha256:c514f855ad377242582952eee95513a2152ebbf6bb5b06bdf9f031fc5ac748a :information : serial: SNS-A7IE-USA : board: EA-1A3M-30 - : revision: 1.0 + : revision: SNS-A7IE-0 : name: FIFA Soccer '97 : title: FIFA Soccer '97 @@ -3003,7 +4724,7 @@ cartridge sha256:b9594d588816ae570ea5fea14577ed47de4db9ac9a40a116c84e0ad7a2ce58f :information : serial: SNS-YH-USA : board: SHVC-BJ0N-01 - : revision: 1.1 + : revision: SNS-YH-1 : name: Fighter's History : title: Fighter's History @@ -3017,7 +4738,7 @@ cartridge sha256:6151389f33ce2e53db3cd99592440c0020f5f4668f581ce3bd615bc92077f25 :information : serial: SNS-MQ-USA : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-MQ-0 : name: Final Fantasy - Mystic Quest : title: Final Fantasy: Mystic Quest @@ -3031,7 +4752,7 @@ cartridge sha256:680535dc1c4196c53b40dc9c2c9bc159a77802ab8d4b474bef5dc0281c15ad0 :information : serial: SNS-F4-USA : board: SHVC-1A3B-12 - : revision: 1.0 + : revision: SNS-F4-0 : name: Final Fantasy II : title: Final Fantasy II @@ -3046,7 +4767,7 @@ cartridge sha256:0f51b4fca41b7fd509e4b8f9d543151f68efa5e97b08493e4b2a0c06f5d8d5e :information : serial: SNS-F6-USA : board: SHVC-BJ3M-10 - : revision: 1.0 + : revision: SNS-F6-0 : name: Final Fantasy III : title: Final Fantasy III @@ -3059,7 +4780,7 @@ cartridge sha256:60cca2592d0756b8c4c7a0a254fafa5ac47aa752521fd1f77dcbf4b6ee1bee9 :information : serial: SNS-FT-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-FT-0 : name: Final Fight : title: Final Fight @@ -3072,7 +4793,7 @@ cartridge sha256:744d1a16c3f99970283597ae8f43b7c3621c5f995c4566ef24b8d70b0692007 :information : serial: SNS-F2-USA : board: SHVC-2A0N-01 - : revision: 1.0 + : revision: SNS-F2-0 : name: Final Fight 2 : title: Final Fight 2 @@ -3085,7 +4806,7 @@ cartridge sha256:f9dac709b2c2859f828103a0dd980716817e2bde3b9d7e2fdea36e9bb9bed7f :information : serial: SNS-AFZE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AFZE-0 : name: Final Fight 3 : title: Final Fight 3 @@ -3098,7 +4819,7 @@ cartridge sha256:8c47f9dc79748c0ae6c648f8480614d22eaefade065612ad1fe749fc3db4d1b :information : serial: SNS-FY-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-FY-0 : name: Final Fight Guy : title: Final Fight Guy @@ -3111,7 +4832,7 @@ cartridge sha256:003dba0193acc5336840307194643ca3b1f848dcfc77580b4e17c605105b27f :information : serial: SNS-FW-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-FW-0 : name: Firepower 2000 : title: Firepower 2000 @@ -3124,7 +4845,7 @@ cartridge sha256:6f32355bef68d4ad58822f50074b46bcc9a68357cd2c6a5470c96bf5344f84d :information : serial: SNS-3S-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-3S-0 : name: Firestriker : title: Firestriker @@ -3137,7 +4858,7 @@ cartridge sha256:4c1354337efa788169387458fa6bdbcf4be0c98369920af2bd876ad98d29070 :information : serial: SNS-FK-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-FK-0 : name: First Samurai : title: First Samurai @@ -3150,7 +4871,7 @@ cartridge sha256:064a880a8dfcf576f74ae8a17c3ec7b0a27e8cb0300a5e5959452fcc30422f1 :information : serial: SNS-5F-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-5F-0 : name: Flashback - The Quest for Identity : title: Flashback: The Quest for Identity @@ -3163,7 +4884,7 @@ cartridge sha256:ff09d72d6241b331dc429d1cf27c04c26546f23312a22c7a14e6a4bf41ed106 :information : serial: SNS-AFNE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AFNE-0 : name: Flintstones - The Movie, The : title: The Flintstones: The Movie @@ -3176,7 +4897,7 @@ cartridge sha256:3d5bbc06e7e9797d937c803610c40b262c14c3f0a39e8048dd6b0b052a040fc :information : serial: SNS-9F-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-9F-0 : name: Flintstones - The Treasure of Sierra Madrock, The : title: The Flintstones: The Treasure of Sierra Madrock @@ -3189,7 +4910,7 @@ cartridge sha256:40b55ee44bc6f1c83daac3e1806dcf7ecd5b35280cdb6a63c7a5e52fbd2115e :information : serial: SNS-UF-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-UF-0 : name: Football Fury : title: Football Fury @@ -3202,7 +4923,7 @@ cartridge sha256:bc6b0344a434644c391ac69a53c7720c51e2d3c5c082b8d78598ae4df100c46 :information : serial: SNS-AFEE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AFEE-0 : name: Foreman For Real : title: Foreman For Real @@ -3216,7 +4937,7 @@ cartridge sha256:ba93721bdb0f19506e722bc580d0b4dad6e8648dddbc52e3ce45dd75ea165f7 :information : serial: SNS-AFKE-USA : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SNS-AFKE-0 : name: Frank Thomas' Big Hurt Baseball : title: Frank Thomas' Big Hurt Baseball @@ -3229,7 +4950,7 @@ cartridge sha256:25b380f529f5a9295df7c0adcc5213d67f131f552d078a3d8f545f988047c90 :information : serial: SNS-AF8E-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AF8E-0 : name: Frantic Flea : title: Frantic Flea @@ -3242,7 +4963,7 @@ cartridge sha256:1ce72767795f41049a1f4d2829e837a8885eb91e1c14faf1ca62d05839ebe3c :information : serial: SNS-AF7E-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-AF7E-0 : name: Frogger : title: Frogger @@ -3255,7 +4976,7 @@ cartridge sha256:3db8a496a49d47b1ac2a893feaf682722765b2cde63c22af3aa68212dcfa975 :information : serial: SNS-AFTE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AFTE-0 : name: Full Throttle - All-American Racing : title: Full Throttle: All-American Racing @@ -3268,7 +4989,7 @@ cartridge sha256:dcceb5be536c9b91bf34f65e7fcec4b55a78af0192323cf86f3b9555072037e :information : serial: SNS-7N-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-7N-0 : name: Fun & Games : title: fun 'n games @@ -3282,7 +5003,7 @@ cartridge sha256:78e2b8210d8dd8776ee23153eb3dce2cbf7d8ddc3e8a5d25b580428f59d98bd :information : serial: SNS-RL-USA : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-RL-0 : name: Gemfire : title: Gemfire @@ -3297,7 +5018,7 @@ cartridge sha256:05e9404bfe0689e484a34991f22712c9da718cf000b0f748378af5758b654a3 :information : serial: SNS-6G-USA : board: SHVC-1J3B-01 - : revision: 1.0 + : revision: SNS-6G-0 : name: Genghis Khan II - Clan of the Gray Wolf : title: Genghis Khan II: Clan of the Gray Wolf @@ -3310,7 +5031,7 @@ cartridge sha256:fc993c122079b94ebc9b9452b46a55d5ddcd3715a4b97af795222b264827e90 :information : serial: SNS-GK-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-GK-0 : name: George Foreman's KO Boxing : title: George Foreman's KO Boxing @@ -3323,7 +5044,7 @@ cartridge sha256:a4ceb31b82ea532e6eb640fa2eda61625758e72251efa5f0ae9a984f4a98a8a :information : serial: SNS-AGJE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AGJE-0 : name: Ghoul Patrol : title: Ghoul Patrol @@ -3337,7 +5058,7 @@ cartridge sha256:feff03cfa195512ad87dc876012d70520cf192e2874c518b6dbdf3d876ea60c :information : serial: SNS-SU-USA : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-SU-0 : name: Goal! : title: Goal! @@ -3350,7 +5071,7 @@ cartridge sha256:8796ca4de3aeffd3a494fe28e7d7e2aeb220ca652b43684f29e2cc94f02c20c :information : serial: SNS-GZ-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-GZ-0 : name: Gods : title: Gods @@ -3363,7 +5084,7 @@ cartridge sha256:2bb368c47189ce813ad716eef16c01cd47685cb98e2c1cb35fa6f0173c97dd7 :information : serial: SNS-G6-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-G6-0 : name: Goof Troop : title: Goof Troop @@ -3376,7 +5097,7 @@ cartridge sha256:342ddf438aec3f0696de8f2cd74bb7f48a956f488f1246eeccaff5ef246ca50 :information : serial: SNS-G7-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-G7-0 : name: GP-1 : title: GP-1 @@ -3389,7 +5110,7 @@ cartridge sha256:2e478569949c3935529c956448947ef90bae64abaf3d523bd89e7f4cf5e8370 :information : serial: SNS-AGRE-USA : board: SHVC-2J0N-11 - : revision: 1.0 + : revision: SNS-AGRE-0 : name: GP-1 - Part II : title: GP-1: Part II @@ -3402,7 +5123,7 @@ cartridge sha256:93da752a0c76167d0907efa832367e5d14aab8e835b864f345c386071a9af71 :information : serial: SNS-G3-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-G3-0 : name: Gradius III : title: Gradius III @@ -3415,7 +5136,7 @@ cartridge sha256:b5492aea296ee4bfcd2c677fbec5153fd4c4db758c835b372ef750cf2399649 :information : serial: SNS-4C-USA : board: SHVC-2J0N-11 - : revision: 1.0 + : revision: SNS-4C-0 : name: Great Circus Mystery - Starring Micky & Minnie, The : title: The Great Circus Mystery: Starring Micky & Minnie @@ -3428,7 +5149,7 @@ cartridge sha256:3ab1ca181000f10cb7c2ae8dc9fafeecd5d77314ee92960e26dff0d6a1fd11e :information : serial: SNS-GW-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-GW-0 : name: Great Waldo Search, The : title: The Great Waldo Search @@ -3441,7 +5162,7 @@ cartridge sha256:f921297c361f16ad3f1257e91829638fc795f9323172015d7237ed648c8f751 :information : serial: SNS-GU-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-GU-0 : name: GunForce : title: GunForce @@ -3454,7 +5175,7 @@ cartridge sha256:5a6deb5617e86a9f4b981031e939510e30c5c8ad047f5f012e40442113fd28c :information : serial: SNS-AHGE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AHGE-0 : name: Hagane : title: Hagane @@ -3467,7 +5188,7 @@ cartridge sha256:de1cf1512e48473b03adb87b7504f394e8b330b346bac24044f833d83609799 :information : serial: SNS-JO-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-JO-0 : name: Hal's Hole in One Golf : title: Hal's Hole in One Golf @@ -3480,7 +5201,7 @@ cartridge sha256:21cd6d749674c55342f5f1a895642d4b58b9bd7eb211f5df3a35dc6c2f5d450 :information : serial: SNS-LJ-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-LJ-0 : name: Hammer Lock Wrestling : title: Hammer Lock Wrestling @@ -3493,7 +5214,7 @@ cartridge sha256:4fb9b010e4b1dc166ab7995a6f9491114063b68aac344004b1edfc555951d95 :information : serial: SNS-3Y-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-3Y-0 : name: Hard Ball III : title: Hard Ball III @@ -3506,7 +5227,7 @@ cartridge sha256:6e2a02a8944c19db3da76d2646f232fbe3ed039bc7d44cc03910814fa77a7ac :information : serial: SNS-HV-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-HV-0 : name: Harley's Humongous Adventure : title: Harley's Humongous Adventure @@ -3520,7 +5241,7 @@ cartridge sha256:73a3aa87ddd5ce5df5ba51292316f42b6e128280179b0a1b11b4dcddc17d416 :information : serial: SNS-AYWE-USA : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SNS-AYWE-0 : name: Harvest Moon : title: Harvest Moon @@ -3533,7 +5254,7 @@ cartridge sha256:9ff6bbcce7dc1f3bded96860a86698cab161d13ee167c57b5b114ac646eea0e :information : serial: SNS-AVSE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AVSE-0 : name: Head-On Soccer : title: Head-On Soccer @@ -3546,7 +5267,7 @@ cartridge sha256:fa418618787145291201b3d9247048b2d7dfba37f6556dcb1d40db499124dd6 :information : serial: SNS-HC-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-HC-0 : name: Hit the Ice : title: Hit the Ice @@ -3559,7 +5280,7 @@ cartridge sha256:7c34908526db2a634216fab0276c42a8e4e22d59c728cd586200142a12dd2c2 :information : serial: SNS-HA-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-HA-0 : name: Home Alone : title: Home Alone @@ -3572,7 +5293,7 @@ cartridge sha256:27eaccb4eea93832639565a664bf3561ed5a11ac025d377a3f33262d851c1b2 :information : serial: SNS-HN-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-HN-0 : name: Home Alone 2 - Lost in New York : title: Home Alone 2: Lost in New York @@ -3585,7 +5306,7 @@ cartridge sha256:48a3ac52e2c9128abc2dc60e07817a51898e8a93be0d51d6f541a8635263a08 :information : serial: SNS-AHIE-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-AHIE-0 : name: Home Improvement : title: Home Improvement @@ -3598,7 +5319,7 @@ cartridge sha256:acad4c594f156e0f30dec2532b35fcb3bab800e08263377634e2d96dfd055f3 :information : serial: SNS-HO-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-HO-0 : name: Hook : title: Hook @@ -3611,7 +5332,7 @@ cartridge sha256:a03528344d40bf800cdbde2dd240b30442cec7aea6026fbbe312a7c36bf0f74 :information : serial: SNS-RO-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-RO-0 : name: Hunt for Red October, The : title: The Hunt for Red October @@ -3624,7 +5345,7 @@ cartridge sha256:41cc900d2461a8dc4706640e493885ddf85db04d8dffceebf7a0ed89cc983d8 :information : serial: SNS-AHUE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AHUE-0 : name: Hurricanes : title: Hurricanes @@ -3637,7 +5358,7 @@ cartridge sha256:db57f45e113127b7148c1b0add2da888e16e16b3e46749f95973b3ef497ae90 :information : serial: SNS-HQ-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-HQ-0 : name: Hyper V-Ball : title: Hyper V-Ball @@ -3650,7 +5371,7 @@ cartridge sha256:f57c49cc3e4c5e34929e12658db0de8794265c517e42f3c518bb1466ba46f14 :information : serial: SNS-HZ-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-HZ-0 : name: Hyper Zone : title: Hyper Zone @@ -3663,7 +5384,7 @@ cartridge sha256:fa143784fd20721d61101920e6aae9b7f5012b8157b1ce0c7ea83ea6c875d84 :information : serial: SNS-AIFE-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-AIFE-0 : name: Ignition Factor, The : title: The Ignition Factor @@ -3678,7 +5399,7 @@ cartridge sha256:32adc048fd89228a4310c03df243e83de7d436cdb2460b4cc83ade20d359b2b :information : serial: SNS-JG-USA : board: SHVC-1J3B-01 - : revision: 1.0 + : revision: SNS-JG-0 : name: Illusion of Gaia : title: Illusion of Gaia @@ -3691,7 +5412,7 @@ cartridge sha256:4dc2b5de98e9109583d9b61b38d26a8216af4dba246ef71350122213630562d :information : serial: SNS-DN-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-DN-0 : name: Imperium : title: Imperium @@ -3704,7 +5425,7 @@ cartridge sha256:c41150c0e84055801377fb7cb273cc51ca442b269ca6287cadf514f553e3475 :information : serial: SNS-AIYE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AIYE-0 : name: Incantation : title: Incantation @@ -3717,7 +5438,7 @@ cartridge sha256:0415adfe80977485f84cdffaaa79f18c91c004c7dba202b4cf9a94eb11adead :information : serial: SNS-C7-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-C7-0 : name: Incredible Crash Dummies, The : title: The Incredible Crash Dummies @@ -3730,7 +5451,7 @@ cartridge sha256:8d170628d2d2fdf142bb82ad80e908bba54c45fa33241c779b8eafaf1b21171 :information : serial: SNS-8U-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-8U-0 : name: Incredible Hulk, The : title: The Incredible Hulk @@ -3743,7 +5464,7 @@ cartridge sha256:cf611b40f9570e8fcfdc21db623965da62561e8ca82ded59e432ba6fb0bfb56 :information : serial: SNS-AIJE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AIJE-0 : name: Indiana Jones' Greatest Adventures : title: Indiana Jones' Greatest Adventures @@ -3757,7 +5478,7 @@ cartridge sha256:5e5cac64fdcf09a52a9c0ab1ebc8bd309dcb1256faf1405284443569b5284fe :information : serial: SNS-IN-USA : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-IN-0 : name: Inindo - Way of the Ninja : title: Inindo: Way of the Ninja @@ -3770,7 +5491,7 @@ cartridge sha256:c7b1706a0ee96f3e0d65cd043c05966bfe3d5c57d08bbd2df3118817424adf8 :information : serial: SNS-5G-USA : board: SHVC-YJ0N-01 - : revision: 1.0 + : revision: SNS-5G-0 : name: Inspector Gadget : title: Inspector Gadget @@ -3783,7 +5504,7 @@ cartridge sha256:6443fecebcdc2ff7061a40432f3ad1db6dfd354909a5f306972cf6afa122752 :information : serial: SNS-3U-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-3U-0 : name: International Superstar Soccer : title: International Superstar Soccer @@ -3796,7 +5517,7 @@ cartridge sha256:d2fe66c1ce66c65ce14e478c94be2e616f9e2cad374b5783a6a64d3c1a99cfa :information : serial: SNS-AWJE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AWJE-0 : name: International Superstar Soccer Deluxe : title: International Superstar Soccer Deluxe @@ -3809,7 +5530,7 @@ cartridge sha256:4e8044b1e7a779685d6751351eef2391272ac8b2bd909edeecfc3d3c5a594be :information : serial: SNS-IT-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-IT-0 : name: International Tennis Tour : title: International Tennis Tour @@ -3822,7 +5543,7 @@ cartridge sha256:8304d8bc55aa9e64bdd144d384f4b185af2426e7d64888c6c23dd41366a5398 :information : serial: SNS-MT-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-MT-0 : name: Irem Skins Game, The : title: The Irem Skins Game @@ -3835,7 +5556,7 @@ cartridge sha256:39bfe828571cdb23e7c85c23cf5b175979dcc2042c5841add58f5ae6492168a :information : serial: SNS-AISE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AISE-0 : name: Itchy & Scratchy Game, The : title: The Itchy & Scratchy Game @@ -3848,7 +5569,7 @@ cartridge sha256:183af7d642b55d52cd594786ec2f031d033cc6c8c1a2a84a834e4ada04301b2 :information : serial: SNS-AIZE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AIZE-0 : name: Izzy's Quest for the Olympic Rings : title: Izzy's Quest for the Olympic Rings @@ -3861,7 +5582,7 @@ cartridge sha256:3ffbb6e0ccf8e9f5e4c72d9fe526a16371e562b71a91d6430e562bf358a5126 :information : serial: SNS-JN-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-JN-0 : name: Jack Nicklaus Golf : title: Jack Nicklaus Golf @@ -3874,7 +5595,7 @@ cartridge sha256:9cf82dd9a851cdc38bf2afc286c077ff18a0a5d3bb301eba606cc52db62f896 :information : serial: SNS-JJ-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-JJ-0 : name: James Bond Jr. : title: James Bond Jr. @@ -3887,7 +5608,7 @@ cartridge sha256:8b7b33f3d2edb844f1d43cfdd595b8c2cb6fc005d59acb899a1afda999e4763 :information : serial: SNS-J6-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-J6-0 : name: Jammit : title: Jammit @@ -3900,7 +5621,7 @@ cartridge sha256:85e5f6fedc420925557092d728e1dc6b4e2042368fb78bf93c0df447f8c9c0c :information : serial: SNS-JY-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-JY-0 : name: Jeopardy! : title: Jeopardy! @@ -3913,7 +5634,7 @@ cartridge sha256:76d760da59aa7fc2fd4426c1d1aec57412703ab901b9df60ac2be16ede80b0e :information : serial: SNS-7J-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-7J-0 : name: Jeopardy! Deluxe Edition : title: Jeopardy! Deluxe Edition @@ -3926,7 +5647,7 @@ cartridge sha256:d7110ddc0b34aa4ecd5e55f7b846657edb982db82cf0ba340fe0464daf0ca9b :information : serial: SNS-8Y-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-8Y-0 : name: Jeopardy! Sports Edition : title: Jeopardy! Sports Edition @@ -3939,7 +5660,7 @@ cartridge sha256:ee7a29eb9c302ea2bb235ef990fd8344a6beb9817499941c40a8a94ad5f7c96 :information : serial: SNS-8J-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-8J-0 : name: Jetsons - Invasion of the Planet Pirates, The : title: The Jetsons: Invasion of the Planet Pirates @@ -3952,7 +5673,7 @@ cartridge sha256:a314583b11d594b8245b5177aa64a4d3b7497d096edabbea7c1842c57aa2ad2 :information : serial: SNS-AWIE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AWIE-0 : name: Jim Lee's Wild Covert Action Teams : title: Jim Lee's Wild Covert Action Teams @@ -3965,7 +5686,7 @@ cartridge sha256:6f0bec87ece503b0fbe108cd159ed6f5fa7711b1c4fe31e982af41ad5c63809 :information : serial: SNS-6J-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-6J-0 : name: Jim Power - The Lost Dimension in 3D : title: Jim Power: The Lost Dimension in 3D @@ -3978,7 +5699,7 @@ cartridge sha256:205890f94e27e7c1b381124cc35c866351bafa906383e507cd17ccb9d1b68ff :information : serial: SNS-JC-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-JC-0 : name: Jimmy Connors' Pro Tennis Tour : title: Jimmy Connors' Pro Tennis Tour @@ -3992,7 +5713,7 @@ cartridge sha256:6abe908b4005a68d1f6e9a54339c94a33db41801890d8c058ce974fdab3d0bc :information : serial: SNS-AFUE-USA : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SNS-AFUE-0 : name: Jimmy Houston's Bass Tournament, USA : title: Jimmy Houston's Bass Tournament, U.S.A. @@ -4005,7 +5726,7 @@ cartridge sha256:3b2b8b813b58049a4a86ce1c42d2a651f19fd9bbab2407a494e20cf343d3c1a :information : serial: SNS-JT-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-JT-0 : name: Joe & Mac : title: Joe & Mac @@ -4018,7 +5739,7 @@ cartridge sha256:c9889799a9ae8558f26d66ae546db930c99acb78d921b4395afbbc38da6272a :information : serial: SNS-J3-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-J3-0 : name: Joe & Mac 2 - Lost in the Tropics : title: Joe & Mac 2: Lost in the Tropics @@ -4031,7 +5752,7 @@ cartridge sha256:67fa7115eb6bf292c024c3a8b06ce9bd457c4d46de182a06a573afff968cc0f :information : serial: SNS-AJDE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AJDE-0 : name: Judge Dredd - The Movie : title: Judge Dredd: The Movie @@ -4044,7 +5765,7 @@ cartridge sha256:771a0322d9f5f8e13a52d01e80257a1f75cc693cf4abf74793520eb5f8b5580 :information : serial: SNS-7K-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-7K-0 : name: Jungle Book, The : title: The Jungle Book @@ -4057,7 +5778,7 @@ cartridge sha256:8d812ea4fa897274116f7f43bc689e110f1cfbd3f7eb3a1737c2a85d3636915 :information : serial: SNS-AJGE-USA : board: MJSC-1A0N-30 - : revision: 1.0 + : revision: SNS-AJGE-0 : name: Jungle Strike : title: Jungle Strike @@ -4070,7 +5791,7 @@ cartridge sha256:fe91d45201753ae9655d5ce38838e352f478b26b2d933c1bcb5bd8330121f9f :information : serial: SNS-J8-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-J8-0 : name: Jurassic Park : title: Jurassic Park @@ -4083,7 +5804,7 @@ cartridge sha256:0a4e9d6fa2ac16aa51da5538d93280734de480e44c430173ed14826c84553c7 :information : serial: SNS-J8-USA : board: MAXI-1A0N-30 - : revision: 1.1 + : revision: SNS-J8-1 : name: Jurassic Park : title: Jurassic Park @@ -4096,7 +5817,7 @@ cartridge sha256:5eff7c27f69b3ebc1ec1294ffcd1debf3512bc3e6c1c75fbdc5e778dcaaba1c :information : serial: SNS-A2JE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-A2JE-0 : name: Jurassic Park 2 - The Chaos Continues : title: Jurassic Park 2: The Chaos Continues @@ -4109,7 +5830,7 @@ cartridge sha256:7f05959f423bc656091ea3bddfbc89c877ae243dca346f63233e27973f34e0e :information : serial: SNS-AJLE-USA : board: SHVC-BA0N-10 - : revision: 1.0 + : revision: SNS-AJLE-0 : name: Justice League Task Force : title: Justice League Task Force @@ -4122,7 +5843,7 @@ cartridge sha256:05152bcf9bf086e7bcdbfa7dd8edfe2085f1339c4d7e193e0071c49a10471ef :information : serial: SNS-BB-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-BB-0 : name: Ka-Blooey : title: Ka-Blooey @@ -4135,7 +5856,7 @@ cartridge sha256:7cc3693cc5e1e834d57795f04b048fab27864a898a9507e7ca383771e203541 :information : serial: SNS-KC-USA : board: SHVC-2A0N-10 - : revision: 1.0 + : revision: SNS-KC-0 : name: Kawasaki Caribbean Challenge : title: Kawasaki Caribbean Challenge @@ -4148,7 +5869,7 @@ cartridge sha256:fec6dd097e378e795dd164be658b10b1c60672b2351a7f4a7722d1fe5736410 :information : serial: SNS-AKEE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AKEE-0 : name: Kawasaki Superbike Challenge : title: Kawasaki Superbike Challenge @@ -4162,7 +5883,7 @@ cartridge sha256:3104d6c06c8909c56f6adb2faecf1b4382f2490370798b605631da926c5306d :information : serial: SNS-JR-USA : board: SHVC-1A3B-20 - : revision: 1.0 + : revision: SNS-JR-0 : name: Ken Griffey Jr. Presents Major League Baseball : title: Ken Griffey Jr. Presents Major League Baseball @@ -4176,7 +5897,7 @@ cartridge sha256:f9f7a2de8cbafd6f9042841dfc42529f8245d75f436bed1c23f9ba1663182e6 :information : serial: SNS-JR-USA : board: SHVC-1A3M-21 - : revision: 1.1 + : revision: SNS-JR-1 : name: Ken Griffey Jr. Presents Major League Baseball : title: Ken Griffey Jr. Presents Major League Baseball @@ -4191,7 +5912,7 @@ cartridge sha256:18b5276be764c06531219c1757d40214aeec06fae68f4ce3ec78b58ee750a43 :information : serial: SNS-A9GE-USA : board: SHVC-1J3M-20 - : revision: 1.0 + : revision: SNS-A9GE-0 : name: Ken Griffey Jr.'s Winning Run : title: Ken Griffey Jr.'s Winning Run @@ -4204,7 +5925,7 @@ cartridge sha256:b16661d5151d73cea5ac46d7c899531c7b2cdee2558092c23a5460c8092b80b :information : serial: SNS-M7-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-M7-0 : name: Kendo Rage : title: Kendo Rage @@ -4217,7 +5938,7 @@ cartridge sha256:914652f72d6ceb83b8b43414d6c42581ec12e9b3f45259b8b2768d26b8d4f07 :information : serial: SNS-ZI-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ZI-0 : name: Kid Klown in Crazy Chase : title: Kid Klown in Crazy Chase @@ -4230,7 +5951,7 @@ cartridge sha256:618a23636e07110e094277ec1d1e60c3620a6e9a5f386292808267593fa803a :information : serial: SNS-AKLE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AKLE-0 : name: Killer Instinct : title: Killer Instinct @@ -4243,7 +5964,7 @@ cartridge sha256:1b58d0aed4510811c73d267244a7e915aa0b334c86e68f3fa5883f5cb534e4d :information : serial: SNS-AAKE-USA : board: SHVC-BJ0N-20 - : revision: 1.0 + : revision: SNS-AAKE-0 : name: King Arthur & The Knights of Justice : title: King Arthur & The Knights of Justice @@ -4256,7 +5977,7 @@ cartridge sha256:aca9eb59d6783e2cae3787c69053888fea98f5dfe4c8af8b5a6360e0afb3b5d :information : serial: SNS-RC-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-RC-0 : name: King Arthur's World : title: King Arthur's World @@ -4269,7 +5990,7 @@ cartridge sha256:6638b5541059814d4c34574e5e277ef613aebf81c91d3def557a7642fb5840e :information : serial: SNS-EI-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-EI-0 : name: King of Dragons : title: King of Dragons @@ -4282,7 +6003,7 @@ cartridge sha256:1135858a1ce686a0a163bb0e6f3a4d7cd71c0cd56efbc79677372f2624cf230 :information : serial: SNS-KM-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-KM-0 : name: King of the Monsters : title: King of the Monsters @@ -4295,7 +6016,7 @@ cartridge sha256:a9729d049ce580839bbfef1836a13dc16f2fc934d203ebf7390e0b1c47ea9a2 :information : serial: SNS-KT-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-KT-0 : name: King of the Monsters 2 : title: King of the Monsters 2 @@ -4315,7 +6036,7 @@ cartridge sha256:4e095fbbdec4a16b075d7140385ff68b259870ca9e3357f076dfff7f3d1c4a6 :information : serial: SNS-AKFE-USA : board: SHVC-1L3B-11 - : revision: 1.0 + : revision: SNS-AKFE-0 : name: Kirby Super Star : title: Kirby Super Star @@ -4328,7 +6049,7 @@ cartridge sha256:67937dd7a29a93b1aaabb6df89f0748369ff47f3f6c655a402c00d565797314 :information : serial: SNS-PQ-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-PQ-0 : name: Kirby's Avalanche : title: Kirby's Avalanche @@ -4342,7 +6063,7 @@ cartridge sha256:0f984dc5fe8293f75e3b8fad98b0cb564706d9b1e3902b56415aa399c2d4df2 :information : serial: SNS-CG-USA : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SNS-CG-0 : name: Kirby's Dream Course : title: Kirby's Dream Course @@ -4362,7 +6083,7 @@ cartridge sha256:b50bf9d95485e8aeb7a6730e9f9f9c9c4ec23a85b336a4fb2e3b63034531e36 :information : serial: SNS-AFJE-USA : board: SHVC-1L5B-20 - : revision: 1.0 + : revision: SNS-AFJE-0 : name: Kirby's Dream Land 3 : title: Kirby's Dream Land 3 @@ -4375,7 +6096,7 @@ cartridge sha256:fb601ead645edce139b0483d3155b4e3d7ab245bf87a3a66cb88c0a617c0a52 :information : serial: SNS-LO-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-LO-0 : name: Knights of the Round : title: Knights of the Round @@ -4388,7 +6109,7 @@ cartridge sha256:bed18c968aee0eb0c866c1964c28135364cd6d65fff7bcb5873342c04e63750 :information : serial: SNS-FH-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-FH-0 : name: Krusty's Super Fun House : title: Krusty's Super Fun House @@ -4401,7 +6122,7 @@ cartridge sha256:e36322697c48baae6492db91e6cbf3844a420f6e0cc8a75f3a73556026ddbbb :information : serial: SNS-FH-USA : board: SHVC-1A0N-02 - : revision: 1.1 + : revision: SNS-FH-1 : name: Krusty's Super Fun House : title: Krusty's Super Fun House @@ -4414,7 +6135,7 @@ cartridge sha256:daf3e45bafbec81ffa5911b94810b2cd267574de717292360f9940f41fb2a6a :information : serial: SNS-AKPE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AKPE-0 : name: Kyle Petty's No Fear Racing : title: Kyle Petty's No Fear Racing @@ -4428,7 +6149,7 @@ cartridge sha256:46c811f0cacffe8f20e1d63072d25d7c47e9bb3fd5124851fd05aca9884d21f :information : serial: SNS-LA-USA : board: SHVC-1A3B-12 - : revision: 1.0 + : revision: SNS-LA-0 : name: Lagoon : title: Lagoon @@ -4441,7 +6162,7 @@ cartridge sha256:48cd9476fef1ed685b9c30dd1669b46048f7295cbbb2abcfa5b1a48699346ea :information : serial: SNS-L8-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-L8-0 : name: Lamborghini American Challenge : title: Lamborghini American Challenge @@ -4454,7 +6175,7 @@ cartridge sha256:314d53f409b66ba3f4426a6f1bb7c69f6779aeed277ce2e19535f94d7c8ca58 :information : serial: SNS-L5-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-L5-0 : name: Last Action Hero : title: Last Action Hero @@ -4467,7 +6188,7 @@ cartridge sha256:a179a1188220b59787c49a78a0dde79b89380e3a8a8a0ab558f0102c5796f87 :information : serial: SNS-LW-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-LW-0 : name: Lawnmower Man, The : title: The Lawnmower Man @@ -4480,7 +6201,7 @@ cartridge sha256:c7814cee0fc95d6422cf19a3dc8c9a65b60f6f56da75f09cebea02cc5f99261 :information : serial: SNS-6L-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-6L-0 : name: Legend : title: Legend @@ -4493,7 +6214,7 @@ cartridge sha256:c865fb17e8c59a21d32b9a605319241fa74ec732e3f0ee58f5d7fcbd8ee57c6 :information : serial: SNS-GG-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-GG-0 : name: Legend of the Mystical Ninja, The : title: The Legend of the Mystical Ninja @@ -4507,7 +6228,7 @@ cartridge sha256:66871d66be19ad2c34c927d6b14cd8eb6fc3181965b6e517cb361f7316009cf :information : serial: SNS-ZL-USA : board: SHVC-1A3B-12 - : revision: 1.0 + : revision: SNS-ZL-0 : name: Legend of Zelda - A Link to the Past, The : title: The Legend of Zelda: A Link to the Past @@ -4520,7 +6241,7 @@ cartridge sha256:4b28d2ddab405976bb56e41a40ec1ea11d7362a8f398d5f8c117d715a15719c :information : serial: SNS-LE-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-LE-0 : name: Lemmings : title: Lemmings @@ -4533,7 +6254,7 @@ cartridge sha256:cd016c41c7ef9f4f243d57c2b1564b4ceb3b4c38cc165cd02ab6c8e35c93aa2 :information : serial: SNS-LE-USA : board: SHVC-1A0N-10 - : revision: 1.1 + : revision: SNS-LE-1 : name: Lemmings : title: Lemmings @@ -4547,7 +6268,7 @@ cartridge sha256:63ecdca7f89b2432ccd57bdb81c0875f6336353f5897f756ef162ab2ec2ee70 :information : serial: SNS-L2-USA : board: SHVC-1A1M-11 - : revision: 1.0 + : revision: SNS-L2-0 : name: Lemmings 2 - The Tribes : title: Lemmings 2: The Tribes @@ -4560,7 +6281,7 @@ cartridge sha256:a2c1970670e2831e47e24ced01bf4ba5aba05cac3773bf524c62d689c35687e :information : serial: SNS-LY-USA : board: SHVC-1J0N-01 - : revision: 1.0 + : revision: SNS-LY-0 : name: Lester the Unlikely : title: Lester the Unlikely @@ -4573,7 +6294,7 @@ cartridge sha256:3bc5f296c3dbee012e93a5cf25568f9288ce87b34d74085401a560350eaca03 :information : serial: SNS-LK-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-LK-0 : name: Lethal Enforcers : title: Lethal Enforcers @@ -4586,7 +6307,7 @@ cartridge sha256:80c22cc92d51a54de9cd9fd00db5ff58a35fff35e822169c94e445d50834fba :information : serial: SNS-L3-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-L3-0 : name: Lethal Weapon : title: Lethal Weapon @@ -4601,7 +6322,7 @@ cartridge sha256:8fcb9c34aea863d49ff08a0ace3f83d301b81f01e2ede28bee7e6d778878d0c :information : serial: SNS-7L-USA : board: SHVC-2J3M-01 - : revision: 1.0 + : revision: SNS-7L-0 : name: Liberty or Death : title: Liberty or Death @@ -4614,7 +6335,7 @@ cartridge sha256:457abe634e0a8be03e29513a3dca8f3e9d0ddc6bf97d8931f2316094260f371 :information : serial: SNS-ALKE-USA : board: MJSC-1J0N-20 - : revision: 1.0 + : revision: SNS-ALKE-0 : name: Lion King, The : title: The Lion King @@ -4632,7 +6353,7 @@ cartridge sha256:0e2ba574ff73587f211c8f818d444631584832e9240548f003171c11b898ad6 :information : serial: SNS-AZ-USA : board: SHVC-1K0N-01 - : revision: 1.0 + : revision: SNS-AZ-0 : name: Lock On : title: Lock On @@ -4645,7 +6366,7 @@ cartridge sha256:76ba0fc1f5c1f39354bb3173a600f23915f1191f400f7d525d220b4b3c8d958 :information : serial: SNS-ALTE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ALTE-0 : name: Looney Tunes B-Ball : title: Looney Tunes B-Ball @@ -4658,7 +6379,7 @@ cartridge sha256:62557ee2a3fc3b5a3f59431f966eb61bb380ba983ef6c7742cb55cf075f15f6 :information : serial: SNS-64-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-64-0 : name: Lord of the Rings - Volume 1, The : title: The Lord of the Rings: Volume 1 @@ -4671,7 +6392,7 @@ cartridge sha256:9f7782a92fda789f9d119b1f0a2f7da0f35606357556a48eca9487797ee1a88 :information : serial: SNS-LV-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-LV-0 : name: Lost Vikings : title: The Lost Vikings @@ -4684,7 +6405,7 @@ cartridge sha256:ab3d97c1a3a979e1680a428ec65df54cfb72997bbfe2173292248a4fa8c51ba :information : serial: SNS-ALVE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ALVE-0 : name: Lost Vikings 2 : title: Lost Vikings 2 @@ -4698,7 +6419,7 @@ cartridge sha256:73731a5a7932965de02a9e98055dcf88b4d17b8f710a6ecfde3e36a1f248773 :information : serial: SNS-ES-USA : board: SHVC-1A3M-20 - : revision: 1.0 + : revision: SNS-ES-0 : name: Lufia & The Fortress of Doom : title: Lufia & The Fortress of Doom @@ -4712,7 +6433,7 @@ cartridge sha256:7c34ecb16c10f551120ed7b86cfbc947042f479b52ee74bb3c40e92fdd192b3 :information : serial: SNS-ANIE-USA : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SNS-ANIE-0 : name: Lufia II - Rise of the Sinistrals : title: Lufia II: Rise of the Sinistrals @@ -4725,7 +6446,7 @@ cartridge sha256:5a76347672ea7d27bb334b1e30bbc73e06f92373883bed499245377327a8f0c :information : serial: SNS-JM-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-JM-0 : name: Madden NFL '92 : title: John Madden Football @@ -4738,7 +6459,7 @@ cartridge sha256:3e62872bf69ea90dd7093608268f8defa2c6016adb1011745dab3c2af45d69b :information : serial: SNS-MF-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-MF-0 : name: Madden NFL '93 : title: John Madden Football '93 @@ -4751,7 +6472,7 @@ cartridge sha256:7e77e196db47e87a5b297e60f0dfa7ce41df8d2d1fdd9152e06628d0b0e586a :information : serial: SNS-9M-USA : board: SHVC-1J0N-01 - : revision: 1.0 + : revision: SNS-9M-0 : name: Madden NFL '94 : title: Madden NFL '94 @@ -4766,7 +6487,7 @@ cartridge sha256:0ad77ae7af231313e1369a52d1622b88e3751aa5ec774628df7071f9e4244ab :information : serial: SNS-ANLE-USA : board: SHVC-1J3M-11 - : revision: 1.0 + : revision: SNS-ANLE-0 : name: Madden NFL '95 : title: Madden NFL '95 @@ -4781,7 +6502,7 @@ cartridge sha256:3059d86cdc383985c564a7a891fe18e08f5222ead7ede9fa309159d60cde13a :information : serial: SNS-A6FE-USA : board: SHVC-1J3M-20 - : revision: 1.0 + : revision: SNS-A6FE-0 : name: Madden NFL '96 : title: Madden NFL '96 @@ -4796,7 +6517,7 @@ cartridge sha256:6874568d985f65dd817d4b03998e71c8cbacc8d8707411fde7bffee350605a8 :information : serial: SNS-A7NE-USA : board: EA-1J3M-20 - : revision: 1.0 + : revision: SNS-A7NE-0 : name: Madden NFL '97 : title: Madden NFL '97 @@ -4811,7 +6532,7 @@ cartridge sha256:e3c62c9fe55d2311aa6a264f41b45d6cbc7b1b069ed3aa82ee57d381c062547 :information : serial: SNS-A8NE-USA : board: EA-1J3M-20 - : revision: 1.0 + : revision: SNS-A8NE-0 : name: Madden NFL '98 : title: Madden NFL '98 @@ -4824,7 +6545,7 @@ cartridge sha256:c01fb8989d391d3e343003934937f02bd8ef9aacdad68c32c3d3f56feb72f5b :information : serial: SNS-YG-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-YG-0 : name: Magic Boy : title: Magic Boy @@ -4837,7 +6558,7 @@ cartridge sha256:1d3cceaa05e054b002caeb09fd5fb9e718ec446764f4169d97bc185da76fdf4 :information : serial: SNS-MD-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-MD-0 : name: Magic Sword : title: Magic Sword @@ -4850,7 +6571,7 @@ cartridge sha256:f301bb8ea867e530ecb64e8eff504ed5b9697cf076c70e2036ecf2ffbe6c487 :information : serial: SNS-MI-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-MI-0 : name: Magical Quest Starring Mickey Mouse, The : title: The Magical Quest Starring Mickey Mouse @@ -4863,7 +6584,7 @@ cartridge sha256:8267e2f092c86d5a29c9a826db82c7473638e28e2507cdaf5c86981f07cd0be :information : serial: SNS-MU-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-MU-0 : name: Mario is Missing! : title: Mario is Missing! @@ -4877,7 +6598,7 @@ cartridge sha256:e842cac1a4301be196f1e137fbd1a16866d5c913f24dbca313f4dd8bd7472f4 :information : serial: SNS-MP-USA : board: SHVC-1A5M-20 - : revision: 1.0 + : revision: SNS-MP-0 : name: Mario Paint : title: Mario Paint @@ -4890,7 +6611,7 @@ cartridge sha256:22b21fb39d40447846f6ff77a07f7b4aba2a7473941ba50c787aae6153b1fb5 :information : serial: SNS-AMYE-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-AMYE-0 : name: Mario's Early Years - Fun with Letters : title: Mario's Early Years: Fun with Letters @@ -4903,7 +6624,7 @@ cartridge sha256:57b94f5f576abbe8bd8f5a4eeb6cf927300ec1b5f0596610f3539ba733505c1 :information : serial: SNS-YR-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-YR-0 : name: Mario's Early Years - Fun with Numbers : title: Mario's Early Years: Fun with Numbers @@ -4916,7 +6637,7 @@ cartridge sha256:c646b1e60e2cd5a2741915f5d3dfe3c17f45ff7283f8052e840bd4354b0990e :information : serial: SNS-AMEE-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-AMEE-0 : name: Mario's Early Years - Preschool Fun : title: Mario's Early Years: Preschool Fun @@ -4929,7 +6650,7 @@ cartridge sha256:4b69d4958e099c3b3f6ae45e153ced9b24755d8c161dfee06c9f67886a7c0f0 :information : serial: SNS-8M-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-8M-0 : name: Mario's Time Machine : title: Mario's Time Machine @@ -4944,7 +6665,7 @@ cartridge sha256:908440f96fd0df14602fc6d1daee8519fc31f765ad00bf64aaba35c2c6ef0b5 :information : serial: SNS-AOAE-USA : board: SHVC-1J3M-20 - : revision: 1.0 + : revision: SNS-AOAE-0 : name: Mark Davis' The Fishing Master : title: Mark Davis' The Fishing Master @@ -4957,7 +6678,7 @@ cartridge sha256:49dd77b310b476c875633335243553be59ecfb0bffae62e46f2e53ff05c20fc :information : serial: SNS-AHZE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AHZE-0 : name: Marvel Super Heroes in War of the Gems : title: Marvel Super Heroes in War of the Gems @@ -4970,7 +6691,7 @@ cartridge sha256:2731f0bd1c87e75121f41d1ed5cc9fbf177f414b8bf831c76fd9c4b58c86ed0 :information : serial: SNS-AFRE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AFRE-0 : name: Mary Shelley's Frankenstein : title: Mary Shelley's Frankenstein @@ -4983,7 +6704,7 @@ cartridge sha256:44cc113ce1e7616cc737adea9e8f140436c9f1c3fba57e8e9db48025d4ace63 :information : serial: SNS-AMGE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AMGE-0 : name: Mask, The : title: The Mask @@ -4996,7 +6717,7 @@ cartridge sha256:22453182d44380f08004a12c6492a0c4b2e1f584e268dcc3296a03ea03ae090 :information : serial: SNS-AMME-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AMME-0 : name: Math Blaster - Episode One : title: Math Blaster: Episode One @@ -5009,7 +6730,7 @@ cartridge sha256:a203a13870eaec92095daef1196a0c9fe8416e600504d55dd0dc724d4f5f5cb :information : serial: SNS-AZBE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AZBE-0 : name: Maui Mallard in Cold Shadow : title: Maui Mallard in Cold Shadow @@ -5023,7 +6744,7 @@ cartridge sha256:c3c4afdeb67136619c643bd9a9f3fe90337541a40745503b5d4eb9b9e6e64b6 :information : serial: SNS-TS-USA : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-TS-0 : name: Mecarobot Golf : title: Mecarobot Golf @@ -5037,7 +6758,7 @@ cartridge sha256:2a08704748f5ef6488348c4099729feca600412d331bda3756e51efd8b94e11 :information : serial: SNS-WM-USA : board: SHVC-1A1B-06 - : revision: 1.0 + : revision: SNS-WM-0 : name: MechWarrior : title: MechWarrior @@ -5050,7 +6771,7 @@ cartridge sha256:7bffa1dc31604fa3d61e06ce2c59168098cc8dd7e59998e1d5f30c49bdf8d61 :information : serial: SNS-A35E-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-A35E-0 : name: MechWarrior 3050 : title: MechWarrior 3050 @@ -5063,7 +6784,7 @@ cartridge sha256:a255fec32453739903a1954149f19bc9658f4a415600b44badf1d4e5e13a16f :information : serial: SNS-A7RE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-A7RE-0 : name: Mega Man 7 : title: Mega Man 7 @@ -5076,7 +6797,7 @@ cartridge sha256:cf4d603dc0a3759da571224c671a9bfd29f9e52ca8dbb61bcc8ac8be5481e9b :information : serial: SNS-RQ-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-RQ-0 : name: Mega Man Soccer : title: Mega Man Soccer @@ -5089,7 +6810,7 @@ cartridge sha256:3e1209f473bff8cd4bcbf71d071e7f8df17a2d564e9a5c4c427ee8198cebb61 :information : serial: SNS-RX-USA : board: SHVC-2A0N-01 - : revision: 1.0 + : revision: SNS-RX-0 : name: Mega Man X : title: Mega Man X @@ -5108,7 +6829,7 @@ cartridge sha256:da484f2a636b8d692840f40e5468e992c5f2af26d365c69fbc12ef2923588d2 :information : serial: SNS-ARXE-USA : board: SHVC-2DC0N-01 - : revision: 1.0 + : revision: SNS-ARXE-0 : name: Mega Man X2 : title: Mega Man X2 @@ -5127,7 +6848,7 @@ cartridge sha256:b2aa2c0a621dfbed3b528de93282fc91abb16325d358680d34753d43629263c :information : serial: SNS-AR3E-USA : board: SHVC-1DC0N-01 - : revision: 1.0 + : revision: SNS-AR3E-0 : name: Mega Man X3 : title: Mega Man X3 @@ -5143,7 +6864,7 @@ cartridge sha256:d4f2cb6b209db29f7aec62e5a23846681c14665fb007e94d7bcfc7b5611e938 :information : serial: SNS-KD-USA : board: SHVC-2E3M-01 - : revision: 1.0 + : revision: SNS-KD-0 : name: Metal Combat - Falcon's Revenge : title: Metal Combat: Falcon's Revenge @@ -5156,7 +6877,7 @@ cartridge sha256:0a9609a505dd1555006b16f53d961b3ce50c518aa1597a77dcd46e55ecc716f :information : serial: SNS-6M-USA : board: SHVC-2A0N-01 - : revision: 1.0 + : revision: SNS-6M-0 : name: Metal Marines : title: Metal Marines @@ -5169,7 +6890,7 @@ cartridge sha256:057484558ebd18165f98e556b994080535e31cefdd98b5edb190516f7040fc9 :information : serial: SNS-AMHE-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-AMHE-0 : name: Metal Morph : title: Metal Morph @@ -5182,7 +6903,7 @@ cartridge sha256:0d7f875877fe856066cfb39b4ecdbbe7d48393a75770720876c94419f809bb1 :information : serial: SNS-AWME-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AWME-0 : name: Metal Warriors : title: Metal Warriors @@ -5200,7 +6921,7 @@ cartridge sha256:88545d24c60c18c695cc3fce8c4074f46ad1bac905e8a39a61d8a6ae6b60862 :information : serial: SNS-AMAE-USA : board: SHVC-1K0N-01 - : revision: 1.0 + : revision: SNS-AMAE-0 : name: Michael Andretti's Indy Car Challenge : title: Michael Andretti's Indy Car Challenge @@ -5213,7 +6934,7 @@ cartridge sha256:1b425ea5a883b7464637b74c2937fde699ffff52b53ad6940a66285e0663194 :information : serial: SNS-AWCE-USA : board: SHVC-2J0N-11 - : revision: 1.0 + : revision: SNS-AWCE-0 : name: Michael Jordan - Chaos in the Windy City : title: Michael Jordan: Chaos in the Windy City @@ -5226,7 +6947,7 @@ cartridge sha256:0773eb741ce28f963f767fc7dd44678eb3d37ed4dc7fc82bb9cce7d55f1cfc6 :information : serial: SNS-AMIE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AMIE-0 : name: Mickey Mania - The Timeless Adventures of Mickey Mouse : title: Mickey Mania: The Timeless Adventures of Mickey Mouse @@ -5239,7 +6960,7 @@ cartridge sha256:add082caffe707df2c0259489c3e272d6557ab07ba3ff856cbc0adba0d7db6a :information : serial: SNS-6U-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-6U-0 : name: Mickey's Ultimate Challenge : title: Mickey's Ultimate Challenge @@ -5252,7 +6973,7 @@ cartridge sha256:a2adeb4bf0e7cc943611ac726e5578da404373a79e91436c9bbd15480688b15 :information : serial: SNS-AH3E-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AH3E-0 : name: Micro Machines : title: Micro Machines @@ -5266,7 +6987,7 @@ cartridge sha256:835ded9479f0e7babae00405d85233d767e82fa247aa1a9cdc14fd1f147b62e :information : serial: SNS-3H-USA : board: SHVC-2A3M-20 - : revision: 1.0 + : revision: SNS-3H-0 : name: Might & Magic III - Isles of Terra : title: Might & Magic III: Isles of Terra @@ -5279,7 +7000,7 @@ cartridge sha256:624a66607caef2ca34920ea15b84b28cdd1916ee089d496cec4f1d43621fdbb :information : serial: SNS-52-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-52-0 : name: Mighty Morphin Power Rangers : title: Mighty Morphin Power Rangers @@ -5292,7 +7013,7 @@ cartridge sha256:1b85c0690aa156a255c7f79e133e453345452698fa98abf8df744c262d0cf86 :information : serial: SNS-A3RE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-A3RE-0 : name: Mighty Morphin Power Rangers - The Fighting Edition : title: Mighty Morphin Power Rangers: The Fighting Edition @@ -5305,7 +7026,7 @@ cartridge sha256:c706b70097c679f6f0ced6f77a30620807d0b2555fc3c683c0ec2fc79117603 :information : serial: SNS-A2RE-USA : board: SHVC-2A0N-20 - : revision: 1.0 + : revision: SNS-A2RE-0 : name: Mighty Morphin Power Rangers - The Movie : title: Mighty Morphin Power Rangers: The Movie @@ -5318,7 +7039,7 @@ cartridge sha256:8546dfc91f6256df8b21083531457e3edf0021da12fce6858e2c59ff239c31d :information : serial: SNS-MR-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-MR-0 : name: Miracle Piano Teaching System, The : title: The Miracle Piano Teaching System @@ -5331,7 +7052,7 @@ cartridge sha256:d32f194e27d177e64bf3bda046889b8198276fca2e8772e4b02a17152e9273e :information : serial: SNS-XH-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-XH-0 : name: MLBPA Baseball : title: MLBPA Baseball @@ -5344,7 +7065,7 @@ cartridge sha256:8715a641f2e4dd8b6066be7f2683d9129fff3fcccaf0a09cc8bdd2aa5646076 :information : serial: SNS-AJYE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AJYE-0 : name: Mohawk & Headphone Jack : title: Mohawk & Headphone Jack @@ -5357,7 +7078,7 @@ cartridge sha256:480ae7186fd5b28200cd88e136b9cd3b6600d32508e280a0bc27ea0ed8d3c0b :information : serial: SNS-ML-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-ML-0 : name: Monopoly : title: Monopoly @@ -5370,7 +7091,7 @@ cartridge sha256:6b0ac4d52d24536cdb7d9d0dc7d19ee30d08ac34363983290c5912ccc850fa0 :information : serial: SNS-ML-USA : board: MAXI-1A0N-30 - : revision: 1.1 + : revision: SNS-ML-1 : name: Monopoly : title: Monopoly @@ -5383,7 +7104,7 @@ cartridge sha256:3c6d3e4a9c9af160f1c1cf11ce4ead531d9500c1f58f1cbe682c90a5eaa3efb :information : serial: SNS-KX-USA : board: SHVC-2A0N-10 - : revision: 1.0 + : revision: SNS-KX-0 : name: Mortal Kombat : title: Mortal Kombat @@ -5396,7 +7117,7 @@ cartridge sha256:43e36a74fb73a7efc46b380599e269b1fff8f55ecf80f5cf50c34d02ceda041 :information : serial: SNS-28-USA : board: SHVC-BJ0N-01 - : revision: 1.0 + : revision: SNS-28-0 : name: Mortal Kombat 2 : title: Mortal Kombat II @@ -5409,7 +7130,7 @@ cartridge sha256:ca2f86ca77f822fcd8e86f5a287f2a76d0becbb81a7bce73ae22909beb2f834 :information : serial: SNS-28-USA : board: SHVC-BJ0N-01 - : revision: 1.1 + : revision: SNS-28-1 : name: Mortal Kombat 2 : title: Mortal Kombat II @@ -5422,7 +7143,7 @@ cartridge sha256:417874aa57856fe93eefdb24066fa1a9ca3f23c72c09d5247ae2b3ab4b3d09d :information : serial: SNS-A3ME-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-A3ME-0 : name: Mortal Kombat 3 : title: Mortal Kombat 3 @@ -5435,7 +7156,7 @@ cartridge sha256:340293c06536d7b6981ad7c681e404f4390ff6c62340f844a4558877c1b82af :information : serial: SNS-AUNE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AUNE-0 : name: Mr. Do! : title: Mr. Do! @@ -5448,7 +7169,7 @@ cartridge sha256:3472dd574b50aed2fa998f464398db4fbb00f5a300a672c3737ee9336a008a1 :information : serial: SNS-N8-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-N8-0 : name: Mr. Nutz : title: Mr. Nutz @@ -5461,7 +7182,7 @@ cartridge sha256:007735e68a91cab403f1c955d9d562e9311124e660fa5b32e5c5d0a2e052160 :information : serial: SNS-AN8E-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AN8E-0 : name: Ms. Pac-Man : title: Ms. Pac-Man @@ -5474,7 +7195,7 @@ cartridge sha256:f292598ac462fdfcd32ad9b6b35ac01d4bab020391dff92bfe94780ec604289 :information : serial: SNS-MY-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-MY-0 : name: Musya - The Classic Japanese Tale of Horror : title: Musya: The Classic Japanese Tale of Horror @@ -5487,7 +7208,7 @@ cartridge sha256:8d4ada4f98464d176ae7f0fb8a20032056680f3241637a0f903f23f31f41ff3 :information : serial: SNS-AM9E-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AM9E-0 : name: Mutant Chronicles - Doom Troopers : title: Mutant Chronicles: Doom Troopers @@ -5500,7 +7221,7 @@ cartridge sha256:22d2260de02552b1205aac2ff5a202a4c80532ac28045ef5a058d88279ab758 :information : serial: SNS-7W-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-7W-0 : name: Natsume Championship Wrestling : title: Natsume Championship Wrestling @@ -5513,7 +7234,7 @@ cartridge sha256:c70b812a9d2df7f95b279e4050e03a4b8a68588a370816e645f378296b84e5d :information : serial: SNS-NB-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-NB-0 : name: NBA All-Star Challenge : title: NBA All-Star Challenge @@ -5526,7 +7247,7 @@ cartridge sha256:5874b942f974bb906d8cbc33b601a1faf8f14aee8d0995124c8dc84bb497380 :information : serial: SNS-ANJE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ANJE-0 : name: NBA Give & Go : title: NBA Give 'n Go @@ -5541,7 +7262,7 @@ cartridge sha256:af2fe0627de2bb2672f4f65dcbdaaee22b211275f679f123d5fa5d37fd69936 :information : serial: SNS-AXGE-USA : board: SHVC-1J3M-20 - : revision: 1.0 + : revision: SNS-AXGE-0 : name: NBA Hang Time : title: NBA Hang Time @@ -5554,7 +7275,7 @@ cartridge sha256:0f18c496426bb97fe5e8b91ad5299f0b1c3898ac17047b745c86b167c212ab7 :information : serial: SNS-8N-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-8N-0 : name: NBA Jam : title: NBA Jam @@ -5568,7 +7289,7 @@ cartridge sha256:b257cffb3484e6be051a56268cb99ee888bd6d3e9c0e8d6d0779ff66c411f6b :information : serial: SNS-AJTE-USA : board: SHVC-BA1M-01 - : revision: 1.0 + : revision: SNS-AJTE-0 : name: NBA Jam - Tournament Edition : title: NBA Jam: Tournament Edition @@ -5582,7 +7303,7 @@ cartridge sha256:2115c39f0580ce19885b5459ad708eaa80cc80fabfe5a9325ec2280a5bcd787 :information : serial: SNS-ANBE-USA : board: SHVC-2A3M-20 - : revision: 1.0 + : revision: SNS-ANBE-0 : name: NBA Live '95 : title: NBA Live '95 @@ -5596,7 +7317,7 @@ cartridge sha256:2d6fc4214245684a8f8f9bb553de637b7c660919ec775bfe3baaf74060c9157 :information : serial: SNS-A6BE-USA : board: SHVC-2A3M-20 - : revision: 1.0 + : revision: SNS-A6BE-0 : name: NBA Live '96 : title: NBA Live '96 @@ -5610,7 +7331,7 @@ cartridge sha256:4b945493d28653d5d047a375136ec9792f27e652be4af00e2c03c40369bd6ec :information : serial: SNS-A7LE-USA : board: EA-1A3M-30 - : revision: 1.0 + : revision: SNS-A7LE-0 : name: NBA Live '97 : title: NBA Live '97 @@ -5624,7 +7345,7 @@ cartridge sha256:1d1b257dcf859cc412d3a9521fc58dc876a5917e6a69cd1d960a8e9840454bb :information : serial: SNS-A8LE-USA : board: EA-1A3M-30 - : revision: 1.0 + : revision: SNS-A8LE-0 : name: NBA Live '98 : title: NBA Live '98 @@ -5638,7 +7359,7 @@ cartridge sha256:6a7324734004d99206439430243b51a05fa8c25ffa314dafc7f127235d1a730 :information : serial: SNS-6N-USA : board: SHVC-1A3M-10 - : revision: 1.0 + : revision: SNS-6N-0 : name: NBA Showdown : title: NBA Showdown @@ -5652,7 +7373,7 @@ cartridge sha256:351587366eca8aeb38236e4ad6cbd4a1b6e37b8cc592725a79249c3a054fa3a :information : serial: SNS-DU-USA : board: SHVC-1A1B-06 - : revision: 1.0 + : revision: SNS-DU-0 : name: NCAA Basketball : title: NCAA Basketball @@ -5666,7 +7387,7 @@ cartridge sha256:8ef5d5c50ffeca1e62e88e4fe2909eaf191e28fbb5a9faf98b7b10bea72c9ed :information : serial: SNS-DU-USA : board: SHVC-1A1B-06 - : revision: 1.1 + : revision: SNS-DU-1 : name: NCAA Basketball : title: NCAA Basketball @@ -5680,7 +7401,7 @@ cartridge sha256:d297c76efbcd9a528d8ee51025f8774ab2cb6bbc676c24e28592c50f47e71bf :information : serial: SNS-AFIE-USA : board: SHVC-2A3M-20 - : revision: 1.0 + : revision: SNS-AFIE-0 : name: NCAA Final Four Basketball : title: NCAA Final Four Basketball @@ -5694,7 +7415,7 @@ cartridge sha256:8c43b7c2f2ef1fca9237c64c2f4c9e98d1a48940dae500ce8eac71278d34efb :information : serial: SNS-AFBE-USA : board: SHVC-1A1M-11 - : revision: 1.0 + : revision: SNS-AFBE-0 : name: NCAA Football : title: NCAA Football @@ -5707,7 +7428,7 @@ cartridge sha256:489d6d704d3d917d9b46ce382230700419983a8d0d61a98fe07e08c935522dd :information : serial: SNS-ANME-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ANME-0 : name: Newman-Haas IndyCar featuring Nigel Mansell : title: Newman-Haas IndyCar featuring Nigel Mansell @@ -5720,7 +7441,7 @@ cartridge sha256:f651a42bb351f7691b880827178c36fcf6c265c7833c6de1d94f7ed69bac051 :information : serial: SNS-NF-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-NF-0 : name: NFL Football : title: NFL Football @@ -5734,7 +7455,7 @@ cartridge sha256:6a59115a9958d4a9fa167095505a2ddf222ca6291209d07618319e39a2be8b6 :information : serial: SNS-Q9-USA : board: SHVC-1A1M-11 - : revision: 1.0 + : revision: SNS-Q9-0 : name: NFL Quarterback Club '95 : title: NFL Quarterback Club @@ -5748,7 +7469,7 @@ cartridge sha256:f43f8ec546b8060e9d191fca860c38caf5a43eda86a304f0073647c6fad7b2c :information : serial: SNS-AQBE-USA : board: SHVC-1A1M-20 - : revision: 1.0 + : revision: SNS-AQBE-0 : name: NFL Quarterback Club '96 : title: NFL Quarterback Club '96 @@ -5761,7 +7482,7 @@ cartridge sha256:5132e1c0d466963e6adc09e8a608ebd90619ab94f7fc908d626bbaf6a99dfa1 :information : serial: SNS-4H-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-4H-0 : name: NHL '94 : title: NHL '94 @@ -5776,7 +7497,7 @@ cartridge sha256:01c0b58d5fd5d5484fea988455a55a71ed9e606538d2b3ce3f216159cc6929b :information : serial: SNS-ANHE-USA : board: SHVC-1J3M-11 - : revision: 1.0 + : revision: SNS-ANHE-0 : name: NHL '95 : title: NHL '95 @@ -5791,7 +7512,7 @@ cartridge sha256:d24c0175ee4eafed88e277691c5f5dafd4e197723097e2eb68aa6b40f449fff :information : serial: SNS-A6HE-USA : board: SHVC-1J3M-20 - : revision: 1.0 + : revision: SNS-A6HE-0 : name: NHL '96 : title: NHL '96 @@ -5806,7 +7527,7 @@ cartridge sha256:2a2dc2ef84efd9a773d1e8231b7e3e57f0de7e4528968670963f2f1f358eef3 :information : serial: SNS-AH7E-USA : board: SHVC-1J3M-20 - : revision: 1.0 + : revision: SNS-AH7E-0 : name: NHL '97 : title: NHL '97 @@ -5821,7 +7542,7 @@ cartridge sha256:0d933149242a2a5278b9ada9294481db5b30aaa134c660951dc340bf8ab441e :information : serial: SNS-AH7E-USA : board: SHVC-1J3M-20 - : revision: 1.1 + : revision: SNS-AH7E-1 : name: NHL '97 : title: NHL '97 @@ -5836,7 +7557,7 @@ cartridge sha256:8113c2cedafc8fd5a56c8638ae340fb275f263ff5c5e18d04dc6c3ebc5cfffe :information : serial: SNS-A8HE-USA : board: SHVC-1J5M-20 - : revision: 1.0 + : revision: SNS-A8HE-0 : name: NHL '98 : title: NHL '98 @@ -5850,7 +7571,7 @@ cartridge sha256:d44f487d84f5bb761955b7b70a5464b2f094e199875f595f312c88e04ac647f :information : serial: SNS-NH-USA : board: SHVC-1A1M-01 - : revision: 1.0 + : revision: SNS-NH-0 : name: NHL Stanley Cup : title: NHL Stanley Cup @@ -5863,7 +7584,7 @@ cartridge sha256:55f3432a130085c112d65aa6443c41eb7a8aeec59aad2c2b4b2ac536b604b44 :information : serial: SNS-HY-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-HY-0 : name: NHLPA Hockey '93 : title: NHLPA Hockey '93 @@ -5876,7 +7597,7 @@ cartridge sha256:d7ad6f67860da78fe25d9e79dd13af7ac7efaa0c8e0103898a4849ab4af9e43 :information : serial: SNS-ANGE-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-ANGE-0 : name: Nickelodeon GUTS : title: Nickelodeon GUTS @@ -5889,7 +7610,7 @@ cartridge sha256:ce9c819d6496e58901b39d9b04558a89e09ccc3aac33690b8d02bb0406682a5 :information : serial: SNS-M8-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-M8-0 : name: Nigel Mansell's World Championship Racing : title: Nigel Mansell's World Championship Racing @@ -5902,7 +7623,7 @@ cartridge sha256:fccc96af24a2463b1c53253e1c5c8ef63641355fae53c0fb410427f29743262 :information : serial: SNS-ANRE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ANRE-0 : name: Ninja Gaiden Trilogy : title: Ninja Gaiden Trilogy @@ -5915,7 +7636,7 @@ cartridge sha256:3c109e50b91ec6df3bb8509778ae544c99433fb40dda9b801178dfe51305361 :information : serial: SNS-NI-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-NI-0 : name: Ninja Warriors : title: Ninja Warriors @@ -5928,7 +7649,7 @@ cartridge sha256:f099937ac4c8afb38c517c5d85475224985fb8f345dacb44994a617ea05bf4e :information : serial: SNS-ANOE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ANOE-0 : name: No Escape : title: No Escape @@ -5943,7 +7664,7 @@ cartridge sha256:437ea48711d54c2275286170a17948cb57ba9d961ba475715c0dba5fbd61a2d :information : serial: SNS-NZ-USA : board: SHVC-1J3M-01 - : revision: 1.0 + : revision: SNS-NZ-0 : name: Nobunga's Ambition : title: Nobunga's Ambition @@ -5957,7 +7678,7 @@ cartridge sha256:ae572a51ebe429cfc06a3b75d7db9581f2884f9adc78827dc162b4c4ddc6ce2 :information : serial: SNS-IZ-USA : board: SHVC-1A5M-11 - : revision: 1.0 + : revision: SNS-IZ-0 : name: Nobunga's Ambition - Lord of Darkness : title: Nobunga's Ambition: Lord of Darkness @@ -5971,7 +7692,7 @@ cartridge sha256:7f3d0ebac6ecfb99cfd1d5b13210e989df9e8b2f2319a63c42faef8ad115a96 :information : serial: SNS-NR-USA : board: SHVC-1A3B-12 - : revision: 1.0 + : revision: SNS-NR-0 : name: Nolan Ryan's Baseball : title: Nolan Ryan's Baseball @@ -5984,7 +7705,7 @@ cartridge sha256:9712829b38f23229d4e3d65da78237659c790235f425c6b12487e4d9e9a37ae :information : serial: SNS-NS-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-NS-0 : name: Nosferatu : title: Nosferatu @@ -5998,7 +7719,7 @@ cartridge sha256:31bc862ab0a8eabf23b5124e13940cb3501e7ecdd3f15e34142248ceb4aa139 :information : serial: SNS-7B-USA : board: SHVC-1A3M-21 - : revision: 1.0 + : revision: SNS-7B-0 : name: Obitus : title: Obitus @@ -6012,7 +7733,7 @@ cartridge sha256:b766c26498d0afd63f44aefdef42642d2483b54f18d2b81a4f1d67a57f64104 :information : serial: SNS-OB-USA : board: SHVC-2A3M-20 - : revision: 1.0 + : revision: SNS-OB-0 : name: Ogre Battle - The March of the Black Queen : title: Ogre Battle: The March of the Black Queen @@ -6025,7 +7746,7 @@ cartridge sha256:a137f4fc1c635f706d10e0c7927e71f52da171ce2d27394ce0deb451b5bed8a :information : serial: SNS-AO9E-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AO9E-0 : name: Olympic Summer Games : title: Olympic Summer Games @@ -6038,7 +7759,7 @@ cartridge sha256:e153195de7b59dd5b9854952cccca6bb93164e5fdff8292124bee6bbe5dbf16 :information : serial: SNS-CT-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-CT-0 : name: On the Ball : title: On the Ball @@ -6053,7 +7774,7 @@ cartridge sha256:9e1a39aaf3585af0d6a5d79de3c35fcfe030c34bd4b09606a6fb8c7def19340 :information : serial: SNS-YP-USA : board: SHVC-2J5M-01 - : revision: 1.0 + : revision: SNS-YP-0 : name: Operation Europe - Path to Victory 1939-45 : title: Operation Europe: Path to Victory 1939-45 @@ -6066,7 +7787,7 @@ cartridge sha256:190742792a950a112f893cba0e083eb787cf24293f698967defff929635ba0e :information : serial: SNS-IY-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-IY-0 : name: Operation Logic Bomb : title: Operation Logic Bomb @@ -6079,7 +7800,7 @@ cartridge sha256:5cbed0401734142184166917427d24f9e5f107a7adea665e2f4b4101491ad54 :information : serial: SNS-36-USA : board: SHVC-2J0N-11 - : revision: 1.0 + : revision: SNS-36-0 : name: Operation Thunderbolt : title: Operation Thunderbolt @@ -6092,7 +7813,7 @@ cartridge sha256:0c08e6b817e4d0b333acb910a0bde3d79bd2dc188defc5df9a7c1233fa81c98 :information : serial: SNS-AOZE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AOZE-0 : name: Oscar : title: Oscar @@ -6105,7 +7826,7 @@ cartridge sha256:582548dc86598a3557e9e3c27285c81964b006a954affe5c73948da5375ea11 :information : serial: SNS-TW-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-TW-0 : name: Out of This World : title: Out of This World @@ -6118,7 +7839,7 @@ cartridge sha256:54b2f03393109ac7fd36d8c7752f15a44d9607ab0187a371b853191db3592c0 :information : serial: SNS-P8-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-P8-0 : name: Out to Lunch : title: Out to Lunch @@ -6131,7 +7852,7 @@ cartridge sha256:db44f8b58a31b640a47aa4390101c3c6a5f613e4e49c636d44786278033dec1 :information : serial: SNS-LD-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-LD-0 : name: Outlander : title: Outlander @@ -6144,7 +7865,7 @@ cartridge sha256:10c8abce67b49f8afbe880d2f13e0fd6d5efc162df34d5941e4a94851f23b2f :information : serial: SNS-P9-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-P9-0 : name: Pac-Attack : title: Pac-Attack @@ -6157,7 +7878,7 @@ cartridge sha256:7fe4cb9c294d66589ff78e225774471ecb7db80df25f2b6199ca25671358072 :information : serial: SNS-APTE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-APTE-0 : name: Pac-in-Time : title: Pac-in-Time @@ -6170,7 +7891,7 @@ cartridge sha256:4cb52ba751c42d9e12ca429e5d657622a370b608002880a997f64de453f0de2 :information : serial: SNS-25-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-25-0 : name: Pac-Man 2 - The New Adventures : title: Pac-Man 2: The New Adventures @@ -6184,7 +7905,7 @@ cartridge sha256:83727f6954bce024edac7f3fd18a6fbf63d05b580f692d96faa37e60893c91c :information : serial: SNS-TK-USA : board: SHVC-2A5M-01 - : revision: 1.0 + : revision: SNS-TK-0 : name: Pacific Theater of Operations : title: P.T.O.: Pacific Theater of Operations @@ -6199,7 +7920,7 @@ cartridge sha256:2c6119fbe40d23576adde568d60ffae793bbf6b512f8fea8dcd0b1cd2623ef0 :information : serial: SNS-ATEE-USA : board: SHVC-1J5M-20 - : revision: 1.0 + : revision: SNS-ATEE-0 : name: Pacific Theater of Operations II : title: P.T.O. II: Pacific Theater of Operations @@ -6212,7 +7933,7 @@ cartridge sha256:b1586c8ece4da9697f0602a684d7a9108027247a34652c3771831d31f82ee07 :information : serial: SNS-APYE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-APYE-0 : name: Packy & Marlon : title: Packy & Marlon @@ -6225,7 +7946,7 @@ cartridge sha256:ecaf51852e111512385c5f209d51578e65b45fcaa17b295ca06120c8d146452 :information : serial: SNS-APME-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-APME-0 : name: Pagemaster, The : title: The Pagemaster @@ -6239,7 +7960,7 @@ cartridge sha256:46286d0839a4397fc4c067b39783f98d2aefeca870a468bae601a1434f1dde9 :information : serial: SNS-LN-USA : board: SHVC-2A3M-01 - : revision: 1.0 + : revision: SNS-LN-0 : name: Paladin's Quest : title: Paladin's Quest @@ -6252,7 +7973,7 @@ cartridge sha256:7cec4ffc3eda0441561717cf55927901b5fbbd669c254079f78ca74c67c4a17 :information : serial: SNS-P2-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-P2-0 : name: Paperboy 2 : title: Paperboy 2 @@ -6265,7 +7986,7 @@ cartridge sha256:c414a4084b3d03aba19496d2efdd68fcf826194d8f1308f5c98e3a7af2fcc06 :information : serial: SNS-R6-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-R6-0 : name: Peace Keepers, The : title: The Peace Keepers @@ -6285,7 +8006,7 @@ cartridge sha256:5abfb974ca0e56aabb3f4126817d14a546c57a5a5c6042d31196063d8099669 :information : serial: SNS-AEPE-USA : board: SHVC-1L3B-11 - : revision: 1.0 + : revision: SNS-AEPE-0 : name: PGA European Tour : title: PGA European Tour @@ -6305,7 +8026,7 @@ cartridge sha256:571d3129350bfb7cca2285499cf31dda48d1047cf9eaef122c8c33dffa9ad29 :information : serial: SNS-A3GE-USA : board: SHVC-1L3B-02 - : revision: 1.0 + : revision: SNS-A3GE-0 : name: PGA Tour '96 : title: PGA Tour '96 @@ -6319,7 +8040,7 @@ cartridge sha256:5c0b5266a191852ca593235f07180e673cb79e3f0b0dd31f65808eef83bf6e9 :information : serial: SNS-PG-USA : board: SHVC-1A3B-12 - : revision: 1.0 + : revision: SNS-PG-0 : name: PGA Tour Golf : title: PGA Tour Golf @@ -6332,7 +8053,7 @@ cartridge sha256:0663330bc061f4b768fa1806610878ef6e6cf546f36041ae087c8e55703693b :information : serial: SNS-PH-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-PH-0 : name: Phalanx - The Enforce Fighter A-144 : title: Phalanx: The Enforce Fighter A-144 @@ -6345,7 +8066,7 @@ cartridge sha256:b7291088f5c49e1fc55bf932076ec03f7b39f6e409ae06e884b57024c56cdc8 :information : serial: SNS-A24E-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-A24E-0 : name: Phantom 2040 : title: Phantom 2040 @@ -6358,7 +8079,7 @@ cartridge sha256:a0b39d7fd7c39c5b0f41f3542fb8d2887530ded1c111b4ffb2a863845e704ec :information : serial: SNS-Z5-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-Z5-0 : name: Pieces : title: Pieces @@ -6375,7 +8096,7 @@ cartridge sha256:724144e34990069213591b5df067dd437a613b30f669840e9098db1dce626d2 :information : serial: SNS-PW-USA : board: SHVC-1B0N-02 - : revision: 1.0 + : revision: SNS-PW-0 : name: Pilotwings : title: Pilotwings @@ -6388,7 +8109,7 @@ cartridge sha256:3a52bf09850aa054dca443f7ea74d43f201dffecc40326924ecba9b0f1450e4 :information : serial: SNS-7D-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-7D-0 : name: Pinball Dreams : title: Pinball Dreams @@ -6401,7 +8122,7 @@ cartridge sha256:0888d20ab2f834c77b0a2dc2162c43890a1640adc78c6b0bb5892ca8d5008ad :information : serial: SNS-APFE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-APFE-0 : name: Pinball Fantasies : title: Pinball Fantasies @@ -6414,7 +8135,7 @@ cartridge sha256:d0f4a5040ecf96dc49aa0084160e291a38f2ee75319750db4d6687ab36828da :information : serial: SNS-YW-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-YW-0 : name: Pink Goes to Hollywood : title: Pink Goes to Hollywood @@ -6427,7 +8148,7 @@ cartridge sha256:98c51c3bb577600fe79577c323333a791baa30904f37c695890e6e380b75e3c :information : serial: SNS-ACGE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-ACGE-0 : name: Pinocchio : title: Pinocchio @@ -6440,7 +8161,7 @@ cartridge sha256:447dfa710e69479159e9d407474fbf5f67d3a3330ab0c7627afd123ded3fdb3 :information : serial: SNS-8P-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-8P-0 : name: Pirates of Dark Water, The : title: The Pirates of Dark Water @@ -6453,7 +8174,7 @@ cartridge sha256:c2a1a66648a0a0bfe2f201cf4f926d138e410fbf85ecf436ccb9aac70c0df3d :information : serial: SNS-PF-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-PF-0 : name: Pit-Fighter : title: Pit-Fighter @@ -6466,7 +8187,7 @@ cartridge sha256:e03d117d8b3093b0bbad5224638f85378b254b81eb304e506a732b4338802e0 :information : serial: SNS-APAE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-APAE-0 : name: Pitfall - The Mayan Adventure : title: Pitfall: The Mayan Adventure @@ -6479,7 +8200,7 @@ cartridge sha256:0b3b0fd42bbe06a812053df376b183412fc0de335c4b7cb8e45f3fe47b0044e :information : serial: SNS-P4-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-P4-0 : name: Plok : title: Plok @@ -6492,7 +8213,7 @@ cartridge sha256:72b2b3bead3fcd27a1610ad5d4d8be3235efeaff96df2e7858911992a5892d2 :information : serial: SNS-KK-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-KK-0 : name: Pocky & Rocky : title: Pocky & Rocky @@ -6505,7 +8226,7 @@ cartridge sha256:cc33ae02114ea18a86592de327b2b4bcc80728b11a5e4c61666dca71480d416 :information : serial: SNS-29-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-29-0 : name: Pocky & Rocky 2 : title: Pocky & Rocky 2 @@ -6518,7 +8239,7 @@ cartridge sha256:5e580f220ed16281df8ee9a5f450b553f39f8c4078d3f3048d66bda15f98e19 :information : serial: SNS-PO-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-PO-0 : name: Populous : title: Populous @@ -6529,9 +8250,9 @@ cartridge sha256:ee9759fdb590ba908f569c2bb8a63703d282b58b84bd1fe0a472ea47685acdc : map address=40-7d,c0-ff:0000-7fff mask=0x8000 : :information - : serial: SNS-KX-USA + : serial: SNS-APPE-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-APPE-0 : name: Porky Pig's Haunted Holiday : title: Porky Pig's Haunted Holiday @@ -6544,7 +8265,7 @@ cartridge sha256:06c8fc466805f97c9147711b2d8370d4f4d05d9fa3a916f17aa1682f73c9a63 :information : serial: SNS-AGKE-USA : board: SHVC-BJ0N-20 - : revision: 1.0 + : revision: SNS-AGKE-0 : name: Power Instinct : title: Power Instinct @@ -6557,7 +8278,7 @@ cartridge sha256:42ee7829d3db0213b718168c29674879bb4532573e9fb3450a5b417174a16ed :information : serial: SNS-P3-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-P3-0 : name: Power Moves : title: Power Moves @@ -6570,7 +8291,7 @@ cartridge sha256:0288ec049723cd0c7f1148cdc1aef0b6922b8a756affe373c99d5690e0dfcea :information : serial: SNS-AOTE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AOTE-0 : name: Power Piggs of the Dark Age : title: Power Piggs of the Dark Age @@ -6590,7 +8311,7 @@ cartridge sha256:2e2a8c0da7f6def617077a25b222062f6988ef14b36b2edfe10d47c6a942d02 :information : serial: SNS-A4RE-USA : board: SHVC-1L3B-11 - : revision: 1.0 + : revision: SNS-A4RE-0 : name: Power Rangers Zero - Battle Racers : title: Power Rangers Zeo: Battle Racers @@ -6603,7 +8324,7 @@ cartridge sha256:8f387d083de1399bb79e5312c31a6f1757f2a536bfa25cecf1aea77bfd77058 :information : serial: SNS-APUE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-APUE-0 : name: Prehistorik Man : title: Prehistorik Man @@ -6616,7 +8337,7 @@ cartridge sha256:55376715f243b1bacd9aeecf1092bbc7837fe512592a2c1703d24b0829fc193 :information : serial: SNS-AR9E-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AR9E-0 : name: Primal Rage : title: Primal Rage @@ -6629,7 +8350,7 @@ cartridge sha256:494190cd6d7fd68882cbe255a6e237d9c4bdaf3988615ede0297a5e285ad5dd :information : serial: SNS-PR-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-PR-0 : name: Prince of Persia : title: Prince of Persia @@ -6642,7 +8363,7 @@ cartridge sha256:04ca1a481093c4a7e12f18b33697d6e05e50e30e0f5b1655aa265abd14719bb :information : serial: SNS-AUPE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AUPE-0 : name: Prince of Persia 2 - The Shadow and the Flame : title: Prince of Persia 2: The Shadow and the Flame @@ -6655,7 +8376,7 @@ cartridge sha256:85e2e58e1f99fce366c85d49f77446395584ca4959ef772a707fe454ed46c68 :information : serial: SNS-QB-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-QB-0 : name: Pro Quarterback : title: Pro Quarterback @@ -6669,7 +8390,7 @@ cartridge sha256:00b5b3d3febd1a6f28ceb49e39cdd9476a944fe62ea3850808cdeafaaaa6304 :information : serial: SNS-UI-USA : board: SHVC-1A3M-20 - : revision: 1.0 + : revision: SNS-UI-0 : name: Pro Sport Hockey : title: Pro Sport Hockey @@ -6682,7 +8403,7 @@ cartridge sha256:475c9baa1c2b76a6b3119e47d32814dc1c08e84e23250ae015bb0bccea91563 :information : serial: SNS-PV-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-PV-0 : name: Push-Over : title: Push-Over @@ -6695,7 +8416,7 @@ cartridge sha256:89d57bf308033ef17f770a80080cbeed2d112244635d5b5f860f2016398cd2f :information : serial: SNS-Q3-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-Q3-0 : name: Q-bert 3 : title: Q*bert 3 @@ -6708,7 +8429,7 @@ cartridge sha256:4d6c7d6d2693d8d43bafaff7582f9a94885362dadd9ee4012bbbdce1ba10c30 :information : serial: SNS-ER-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ER-0 : name: R-Type III - The Third Lightning : title: R-Type III: The Third Lightning @@ -6721,7 +8442,7 @@ cartridge sha256:dd0feb78e2d5d81f59241baf3bca5e2edaebbe98f0ac860a4eb6d448718f1ca :information : serial: SNS-RV-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-RV-0 : name: Race Drivin' : title: Race Drivin' @@ -6735,7 +8456,7 @@ cartridge sha256:edf990e502c646a2fe83fcd1d359ca0ed5003ace06cb4c3de5a51a0c56d6ec5 :information : serial: SNS-RP-USA : board: SHVC-1A1B-05 - : revision: 1.0 + : revision: SNS-RP-0 : name: Radical Psycho Machine Racing : title: Radical Psycho Machine Racing @@ -6748,7 +8469,7 @@ cartridge sha256:1869c0faf93bf21b7ff965f1925fad4b2924a64b1e48f4837221eebdf741226 :information : serial: SNS-ARRE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ARRE-0 : name: Radical Rex : title: Radical Rex @@ -6761,7 +8482,7 @@ cartridge sha256:5fd7666e509f9d3cf1fd6b209dc22f2f3848f74eae7b83239d1090e031fc6df :information : serial: SNS-RD-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-RD-0 : name: Raiden Trad : title: Raiden Trad @@ -6774,7 +8495,7 @@ cartridge sha256:e19f7d8d5c3e4cefeff5889380d8780495e01f0553d13be4182a15a5d4b615b :information : serial: SNS-RM-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-RM-0 : name: Rampart : title: Rampart @@ -6787,7 +8508,7 @@ cartridge sha256:32d32ef56af83887cdc2c04b3da4be1cd82a473988deaa2e7dd50d38ef79c3a :information : serial: SNS-R2-USA : board: SHVC-2J0N-01 - : revision: 1.0 + : revision: SNS-R2-0 : name: Ranma Half - Hard Battle : title: Ranma 1/2: Hard Battle @@ -6800,7 +8521,7 @@ cartridge sha256:920bbaaf6a32cab5feabb5bc8b2b427dccd53bfd31d0da8acb7ea4e819139e4 :information : serial: SNS-ARVE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ARVE-0 : name: Rap Jam - Volume One : title: Rap Jam: Volume One @@ -6813,7 +8534,7 @@ cartridge sha256:097cbe9720903bc14599158b80e0cc314ef2fe8a585d6d0a8962eb162603149 :information : serial: SNS-ARQE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ARQE-0 : name: Realm : title: Realm @@ -6826,7 +8547,7 @@ cartridge sha256:549f2e5b17f685cad25ba71ce7bc6e004e7bfd09e6be12a827af9a9a26556ff :information : serial: SNS-6R-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-6R-0 : name: Red Line - F1 Racer : title: Red Line: F-1 Racer @@ -6839,7 +8560,7 @@ cartridge sha256:b2221d0a59a399e437710e1191a37071d0a59c72d8e62427cd499de8d8fd7b6 :information : serial: SNS-5R-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-5R-0 : name: Relief Pitcher : title: Relief Pitcher @@ -6852,7 +8573,7 @@ cartridge sha256:d322ce440076be0e3678277596acee8089098f4397b35ac8b3df88be5ce5e02 :information : serial: SNS-ARBE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ARBE-0 : name: Ren & Stimpy Show - Buckeroo$!, The : title: The Ren & Stimpy Show: Buckeroo$! @@ -6865,7 +8586,7 @@ cartridge sha256:71e7083cfcf32b738f60f5eeffd4f9d1fd9250afbde0c56e22a4b97abac377a :information : serial: SNS-6Y-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-6Y-0 : name: Ren & Stimpy Show - Fire Dogs, The : title: The Ren & Stimpy Show: Fire Dogs @@ -6878,7 +8599,7 @@ cartridge sha256:ad7dd4efb8836d4009f6c76bd21865d8f5dcf9c3cbd8fa7bb32d68648884712 :information : serial: SNS-ARTE-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-ARTE-0 : name: Ren & Stimpy Show - Time Warp, The : title: The Ren & Stimpy Show: Time Warp @@ -6891,7 +8612,7 @@ cartridge sha256:ba54d715abf100b94fee801351986fa818e4309730cefbacf9b4fad36e284c1 :information : serial: SNS-V8-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-V8-0 : name: Ren & Stimpy Show - Veediots!, The : title: The Ren & Stimpy Show: Veediots! @@ -6904,7 +8625,7 @@ cartridge sha256:5fb072c3c2e9d8e7f84bea9c4bf2253e6868eb2b1f13e35a7d75fdf05896d87 :information : serial: SNS-AXRE-USA : board: SHVC-2A0N-20 - : revision: 1.0 + : revision: SNS-AXRE-0 : name: Revolution X - Music is the Weapon : title: Revolution X: Music is the Weapon @@ -6917,7 +8638,7 @@ cartridge sha256:f44482e2cccd9fcfd5875d84ff700f6e783f3bd8abd1ac4d939074cd6ad3fe6 :information : serial: SNS-XR-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-XR-0 : name: Rex Ronan - Experimental Surgeon : title: Rex Ronan: Experimental Surgeon @@ -6931,7 +8652,7 @@ cartridge sha256:e3ea89964ee82d2ae1e5739b8503acf62732aedef28d1b3d5caa9ebae0feec0 :information : serial: SNS-XG-USA : board: SHVC-1A1M-01 - : revision: 1.0 + : revision: SNS-XG-0 : name: Riddick Bowe Boxing : title: Riddick Bowe Boxing @@ -6946,7 +8667,7 @@ cartridge sha256:cce455b7074f62ffdb41863ee8c160ea06f7acd028837666329bc1e0c3567ad :information : serial: SNS-QG-USA : board: SHVC-2J3M-11 - : revision: 1.0 + : revision: SNS-QG-0 : name: Rise of the Phoenix : title: Rise of the Phoenix @@ -6959,7 +8680,7 @@ cartridge sha256:38be8013bbe07b2020ba30031fb0a2c77bad8a3eb61fac8217adfe82d6c402a :information : serial: SNS-AROE-USA : board: SHVC-BJ0N-01 - : revision: 1.0 + : revision: SNS-AROE-0 : name: Rise of the Robots : title: Rise of the Robots @@ -6972,7 +8693,7 @@ cartridge sha256:3f59cc687d22cd1b23cc33ae6e4518234c9da813c01f79f4c43716e12d32a12 :information : serial: SNS-RB-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-RB-0 : name: Rival Turf! : title: Rival Turf! @@ -6985,7 +8706,7 @@ cartridge sha256:864aa9068fb23cd20022a9ac36fb9082299278ea0cb07a20deec2b6a1c6cbc7 :information : serial: SNS-RR-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-RR-0 : name: Road Riot 4WD : title: Road Riot 4WD @@ -6998,7 +8719,7 @@ cartridge sha256:2e8203e421f97cf165f03a5d4f69dadf0bcca18c42c6a1dfe79c8705c522cc5 :information : serial: SNS-DV-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-DV-0 : name: Road Runner's Death Valley Rally : title: Road Runner's Death Valley Rally @@ -7011,7 +8732,7 @@ cartridge sha256:055d9c6311a663af7c899a6f76a419c274c57baada3ef64c52fadb1c676b144 :information : serial: SNS-R3-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-R3-0 : name: RoboCop 3 : title: RoboCop 3 @@ -7024,7 +8745,7 @@ cartridge sha256:a2115e7576dec06e0de613efb89de861815a78ef72e78a3784be09fb7541928 :information : serial: SNS-VR-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-VR-0 : name: RoboCop vs. The Terminator : title: RoboCop versus The Terminator @@ -7039,7 +8760,7 @@ cartridge sha256:1e2ded7b1e350449b7a99b7ec414525e4b9b086c416deeee5eb3e48e032c46b :information : serial: SNS-E9-USA : board: SHVC-2J3M-11 - : revision: 1.0 + : revision: SNS-E9-0 : name: Robotrek : title: Robotrek @@ -7052,7 +8773,7 @@ cartridge sha256:9d721753301278325c851f1843d669a697aed757dcf6495a31fc31ddf664b18 :information : serial: SNS-RN-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-RN-0 : name: Rock & Roll Racing : title: Rock n' Roll Racing @@ -7065,7 +8786,7 @@ cartridge sha256:b072fd9b08042e3262446fdf418a41848251072a32bd7f8335cc03543c4ae6c :information : serial: SNS-RK-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-RK-0 : name: Rocketeer, The : title: The Rocketeer @@ -7078,7 +8799,7 @@ cartridge sha256:cde8876b99c337ff932322506ceef05519e5882b853c54bb8c650d9500cd595 :information : serial: SNS-8D-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-8D-0 : name: Rocko's Modern Life - Spunky's Dangerous Day : title: Rocko's Modern Life: Spunky's Dangerous Day @@ -7091,7 +8812,7 @@ cartridge sha256:7c0f915b581796e5b6dd384ecdc0dad8af4d956492fbcedec628c8845d911d7 :information : serial: SNS-NP-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-NP-0 : name: Rocky Rodent : title: Rocky Rodent @@ -7104,7 +8825,7 @@ cartridge sha256:e21300c8c4170e084fd83ce4c842dd73f939fbd10ddfe47c9a49b6e291dcd52 :information : serial: SNS-VP-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-VP-0 : name: Roger Clemens' MVP Baseball : title: Roger Clemens' MVP Baseball @@ -7117,7 +8838,7 @@ cartridge sha256:f7e3c3012af2dbad350646b6ef3470f0b4c42e4a2873109f7aa6c81d7157c88 :information : serial: SNS-VP-USA : board: SHVC-1A0N-20 - : revision: 1.1 + : revision: SNS-VP-1 : name: Roger Clemens' MVP Baseball : title: Roger Clemens' MVP Baseball @@ -7131,7 +8852,7 @@ cartridge sha256:815bfcf4fd6eb23a20c2e50dde023c210b273ffb6cd86a93909d803c3643ce4 :information : serial: SNS-XL-USA : board: SHVC-1A5B-04 - : revision: 1.0 + : revision: SNS-XL-0 : name: Romance of the Three Kingdoms II : title: Romance of the Three Kingdoms II @@ -7146,7 +8867,7 @@ cartridge sha256:88fa0a78ca98c6386e086c7fa9e81a2625bdecc55115dde6c6f4770b0670aa4 :information : serial: SNS-S3-USA : board: SHVC-2J5M-01 - : revision: 1.0 + : revision: SNS-S3-0 : name: Romance of the Three Kingdoms III - Dragon of Destiny : title: Romance of the Three Kingdoms III: Dragon of Destiny @@ -7161,7 +8882,7 @@ cartridge sha256:9670c67eeeb5581fa5345025a2e2ee875179e0da9f5be4bf78641e477d785f1 :information : serial: SNS-AS4E-USA : board: SHVC-1J5M-20 - : revision: 1.0 + : revision: SNS-AS4E-0 : name: Romance of the Three Kingdoms IV - Wall of Fire : title: Romance of the Three Kingdoms IV: Wall of Fire @@ -7174,7 +8895,7 @@ cartridge sha256:4158e3e8890a52f0b12dc9ad5a29276058a247ff41e9f1d22897ebde1eb1126 :information : serial: SNS-RU-USA : board: SHVC-YA0N-01 - : revision: 1.0 + : revision: SNS-RU-0 : name: Run Saber : title: Run Saber @@ -7187,7 +8908,7 @@ cartridge sha256:5db804171fca42486485ed85e4afe45b29e6d01304bdf75d520bfc42429739e :information : serial: SNS-A7SE-USA : board: SHVC-BJ0N-01 - : revision: 1.0 + : revision: SNS-A7SE-0 : name: Samurai Shodown : title: Samurai Shodown @@ -7200,7 +8921,7 @@ cartridge sha256:34e1af0642c85148c5a3dc3c7ab4bcbda13a9fea190934b5526c555fff03565 :information : serial: SNS-ZW-USA : board: SHVC-BJ0N-01 - : revision: 1.0 + : revision: SNS-ZW-0 : name: Saturday Night Slam Masters : title: Saturday Night Slam Masters @@ -7213,7 +8934,7 @@ cartridge sha256:7fb5236d10852125f0f37c2188b907d636647400a57bccbdb2f63098ffae8b2 :information : serial: SNS-AXDE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AXDE-0 : name: Scooby-Doo Mystery : title: Scooby-Doo Mystery @@ -7226,7 +8947,7 @@ cartridge sha256:a4ab8cfad2f236675b1c0124f8484688e149f38e8628a3b38e9ec14d491ec07 :information : serial: SNS-ASQE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ASQE-0 : name: SeaQuest DSV : title: SeaQuest DSV @@ -7241,7 +8962,7 @@ cartridge sha256:17c864a76d498feb6479eee8e7d6807b951c66225033228622bb66754baab1d :information : serial: SNS-AEOE-USA : board: SHVC-1J3M-20 - : revision: 1.0 + : revision: SNS-AEOE-0 : name: Secret of Evermore : title: Secret of Evermore @@ -7256,7 +8977,7 @@ cartridge sha256:4c15013131351e694e05f22e38bb1b3e4031dedac77ec75abecebe8520d82d5 :information : serial: SNS-K2-USA : board: SHVC-1J3M-01 - : revision: 1.0 + : revision: SNS-K2-0 : name: Secret of Mana : title: Secret of Mana @@ -7270,7 +8991,7 @@ cartridge sha256:e6bc0a595d5c7c4bc0bbb61ffe35a70288a77eb78544ed74682d489a9e6f07f :information : serial: SNS-WR-USA : board: SHVC-1A3M-10 - : revision: 1.0 + : revision: SNS-WR-0 : name: Shadowrun : title: Shadowrun @@ -7283,7 +9004,7 @@ cartridge sha256:bdbcc53b266159b5a08e307e5b60fdb0cb5a1ba8f8c1c6c7f89d81eaf5133e8 :information : serial: SNS-DE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-DE-0 : name: Shanghai II - Dragon's Eye : title: Shanghai II: Dragon's Eye @@ -7296,7 +9017,7 @@ cartridge sha256:c73757eea258e169e506eaef989227a59918060f94117917f338183db14c50b :information : serial: SNS-AQFE-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-AQFE-0 : name: Shaq-Fu : title: Shaq-Fu @@ -7309,7 +9030,7 @@ cartridge sha256:454c580498a7d317ed61cb5863b1999eff57ad440ecd30ebb76e193c9c52f3a :information : serial: SNS-OO-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-OO-0 : name: Shien's Revenge : title: Shien's Revenge @@ -7324,7 +9045,7 @@ cartridge sha256:de2d5a952096c5f50368b9270d342aa6e7a39007ffbec27117e182e30ef4cf3 :information : serial: SNS-EQ-USA : board: SHVC-1J5M-20 - : revision: 1.0 + : revision: SNS-EQ-0 : name: Sid Meier's Civilization : title: Sid Meier's Civilization @@ -7337,7 +9058,7 @@ cartridge sha256:d09ca5adaee65cfd686742482bc55b1a3ce9bc5ebed61f24c5631555151a7fc :information : serial: SNS-4P-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-4P-0 : name: Side Pocket : title: Side Pocket @@ -7351,7 +9072,7 @@ cartridge sha256:c0bd1b378337c32047a6b7122a3813beb646e496fbdb1fa5c87ab9856271e4c :information : serial: SNS-AN-USA : board: SHVC-1A5M-01 - : revision: 1.0 + : revision: SNS-AN-0 : name: SimAnt - The Electronic Ant Colony : title: SimAnt: The Electronic Ant Colony @@ -7365,7 +9086,7 @@ cartridge sha256:e9c0bc05511e05a0d7c3e7cc42e761e1e8e532d46f59b9854b6902e1a2e9dd0 :information : serial: SNS-SC-USA : board: SHVC-1A5B-02 - : revision: 1.0 + : revision: SNS-SC-0 : name: SimCity : title: SimCity @@ -7380,7 +9101,7 @@ cartridge sha256:bf74c58e4190faca2f3a967dc190fe529d13887d1262b72e057b5353e43cf67 :information : serial: SNS-AWWE-USA : board: SHVC-1J5M-20 - : revision: 1.0 + : revision: SNS-AWWE-0 : name: SimCity 2000 : title: SimCity 2000 @@ -7394,7 +9115,7 @@ cartridge sha256:446a1036d036986fdea7906c83832d3ba79ef63a6ed8c4e88b89ab9cb25dade :information : serial: SNS-SE-USA : board: SHVC-1A3B-20 - : revision: 1.0 + : revision: SNS-SE-0 : name: SimEarth - The Living Planet : title: SimEarth: The Living Planet @@ -7407,7 +9128,7 @@ cartridge sha256:f0d98e9061d0f6a193bb856de8a592f336dada97c41966e8d03119ba9746541 :information : serial: SNS-BN-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-BN-0 : name: Simpsons - Bart's Nightmare, The : title: The Simpsons: Bart's Nightmare @@ -7420,7 +9141,7 @@ cartridge sha256:29c28188234ddbb0b72fc84253dcd3514e23034779c773db8097b073b73390c :information : serial: SNS-AVBE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AVBE-0 : name: Simpsons - Virtual Bart, The : title: The Simpsons: Virtual Bart @@ -7433,7 +9154,7 @@ cartridge sha256:70008efe51185eb0a2f8d8d8ac2bdbb99bd3dfcc169dcc474962f8269299805 :information : serial: SNS-9J-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-9J-0 : name: Sink or Swim : title: S.O.S.: Sink or Swim @@ -7446,7 +9167,7 @@ cartridge sha256:e10070f01845505ae8bfdf7b5b492e7209c2ae876f169fb6ff420dea269f4da :information : serial: SNS-SL-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-SL-0 : name: Skuljagger - Revolt of the Westicans : title: Skuljagger: Revolt of the Westicans @@ -7459,7 +9180,7 @@ cartridge sha256:a4ba1483db79c3f6278082387bce216d8f3e3b11ca32d49516d27f5ac07135a :information : serial: SNS-LZ-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-LZ-0 : name: Skyblazer : title: Skyblazer @@ -7472,7 +9193,7 @@ cartridge sha256:cbca00fa5dfd6c72db2f21d010255657c33f7ac48de2554262035ead11bdf31 :information : serial: SNS-JB-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-JB-0 : name: Smart Ball : title: Smart Ball @@ -7485,7 +9206,7 @@ cartridge sha256:f653b8308b617e1cba1caf004e5a670088b882e320fa6afcc7a29dd3b2dd0ea :information : serial: SNS-ASHE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ASHE-0 : name: Snow White in Happily Ever After : title: Snow White in Happily Ever After @@ -7498,7 +9219,7 @@ cartridge sha256:6fe7c8d39fcfab7f0a18e837a7ee0dd162e0557d6989c6e0d10c81616d3a0b8 :information : serial: SNS-UD-USA : board: SHVC-2J0N-01 - : revision: 1.0 + : revision: SNS-UD-0 : name: Soldiers of Fortune : title: Soldiers of Fortune @@ -7511,7 +9232,7 @@ cartridge sha256:75a7b5b8ad0329dc828d3201089e125fd55fdfc99d4cec704ffcd7e3036c241 :information : serial: SNS-SK-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-SK-0 : name: Sonic Blast Man : title: Sonic Blast Man @@ -7524,7 +9245,7 @@ cartridge sha256:efe78f6fc68ddd0f6ef0ad9e0223d9417c14fcadece987dc8f50423fd6723b2 :information : serial: SNS-2C-USA : board: SHVC-2J0N-11 - : revision: 1.0 + : revision: SNS-2C-0 : name: Sonic Blast Man II : title: Sonic Blast Man II @@ -7537,7 +9258,7 @@ cartridge sha256:8f0a7670fe53d30f721784e5fff78349eb157a9f0eb2246206f9d7db478b7c5 :information : serial: SNS-TT-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-TT-0 : name: SOS : title: SOS @@ -7551,7 +9272,7 @@ cartridge sha256:8438da09de8ce9aded3bb08644543f7b60fb60cffc68ce2d67d6a0643f2ecfc :information : serial: SNS-SO-USA : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-SO-0 : name: Soul Blazer : title: Soul Blazer @@ -7564,7 +9285,7 @@ cartridge sha256:85887dfa92374048fb20809c00eabea428992024cf875d287d0431b9767cc7c :information : serial: SNS-5A-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-5A-0 : name: Space Ace : title: Space Ace @@ -7577,7 +9298,7 @@ cartridge sha256:24f3f22949f36ebf8ab4beaa8cba22db107efe7a7585f749343f2860bf041fe :information : serial: SNS-FL-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-FL-0 : name: Space Football - One on One : title: Space Football: One on One @@ -7590,7 +9311,7 @@ cartridge sha256:dc5353ddc350816619230f25f8c51bddabf7438e6dfba21662eb1c479485673 :information : serial: SNS-IC-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-IC-0 : name: Space Invaders : title: Space Invaders @@ -7603,7 +9324,7 @@ cartridge sha256:f5b7418c00ccac44615cfc57c7e17d57533837056886f6d733e6b714c36dec1 :information : serial: SNS-AT-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AT-0 : name: Space Megaforce : title: Space Megaforce @@ -7616,7 +9337,7 @@ cartridge sha256:14dc44687c8da35aec63b9edadbaac21bf7293f5171646f614139192e82ab07 :information : serial: SNS-HJ-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-HJ-0 : name: Spanky's Quest : title: Spanky's Quest @@ -7629,7 +9350,7 @@ cartridge sha256:eaa06470734ea57eff9b888137aa468fcb7bb149a0870a85e68c9db123de467 :information : serial: SNS-ASSE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ASSE-0 : name: Sparkster : title: Sparkster @@ -7642,7 +9363,7 @@ cartridge sha256:32d0f1ca5b91fd9b2caf81422fb9e8fb30bc091f0b2a429b9269dd307fcba4f :information : serial: SNS-A9WE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-A9WE-0 : name: Spawn : title: Spawn @@ -7655,7 +9376,7 @@ cartridge sha256:22d0b7687d66436abaf447bb29558e43f562283ec4dbe744df7d79a3e27a257 :information : serial: SNS-7Q-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-7Q-0 : name: Spectre : title: Spectre @@ -7668,7 +9389,7 @@ cartridge sha256:54046ec1fc57f6165ad33080502f72809d1b06b438a5a0d0a80ffa2bb3df8b0 :information : serial: SNS-9S-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-9S-0 : name: Speed Racer in My Most Dangerous Adventures : title: Speed Racer in My Most Dangerous Adventures @@ -7681,7 +9402,7 @@ cartridge sha256:df02d0f4f40e2732138309d38e91b48aef482490979007ecb63359a35115dfd :information : serial: SNS-ASSE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ASSE-0 : name: Speedy Gonzales - Los Gatos Bandidos : title: Speedy Gonzales: Los Gatos Bandidos @@ -7694,7 +9415,7 @@ cartridge sha256:68a51b7a06b6a9e7100a89521e52b5c467c46c828c0f6504bee677beac2aa6f :information : serial: SNS-ASEE-USA : board: MAXI-1A0N-30 - : revision: 1.1 + : revision: SNS-ASEE-1 : name: Speedy Gonzales - Los Gatos Bandidos : title: Speedy Gonzales: Los Gatos Bandidos @@ -7707,7 +9428,7 @@ cartridge sha256:964d21996e385e032b5d18baf716692ba1db780245cd71956c212045c1b8eb9 :information : serial: SNS-AMCE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AMCE-0 : name: Spider-Man & Venom - Maximum Carnage : title: Spider-Man & Venom: Maximum Carnage @@ -7720,7 +9441,7 @@ cartridge sha256:b72fbbfe737eff49f59dcef9f13b963e50c5bc322d7eb0e7b4c25f3a71aa081 :information : serial: SNS-A2CE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-A2CE-0 : name: Spider-Man & Venom - Separation Anxiety : title: Spider-Man & Venom: Separation Anxiety @@ -7733,7 +9454,7 @@ cartridge sha256:63210a91573fa8e19592f2e6c746a400831d804c00453739447d2df32e731df :information : serial: SNS-MN-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-MN-0 : name: Spider-Man & X-Men - Arcade's Revenge : title: Spider-Man & X-Men: Arcade's Revenge @@ -7746,7 +9467,7 @@ cartridge sha256:f05d777e3de69aab18d336cac0af07f794f8d00090d085f86cebaed3679caba :information : serial: SNS-ADME-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ADME-0 : name: Spider-Man - The Animated Series : title: Spider-Man: The Animated Series @@ -7759,7 +9480,7 @@ cartridge sha256:fe10238ae42ed9eb4d906a81dd50ebe585140982cdfe266308ce1f16e78e690 :information : serial: SNS-SX-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-SX-0 : name: Spindizzy Worlds : title: Spindizzy Worlds @@ -7774,7 +9495,7 @@ cartridge sha256:8d3f20af0be588cf2edc39aee0d96d4085512919a05c0e90a7848e414cc20e4 :information : serial: SNS-AWBE-USA : board: SHVC-1J3M-20 - : revision: 1.0 + : revision: SNS-AWBE-0 : name: Sporting News Baseball, The : title: The Sporting News Baseball @@ -7787,7 +9508,7 @@ cartridge sha256:254d17a82a32d8bd231ca3a87d356b65e65cb0229902a69a57c21a4c99bbba1 :information : serial: SNS-LU-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-LU-0 : name: Sports Illustrated - Championship Football & Baseball : title: Sports Illustrated: Championship Football & Baseball @@ -7803,7 +9524,7 @@ cartridge sha256:3857b5294ea8f7468849437bb2d8271564e8a0ff30774622e9c872bcbd53a84 :information : serial: SNS-FO-USA : board: SHVC-1C0N5S-01 - : revision: 1.0 + : revision: SNS-FO-0 : name: Star Fox : title: Star Fox @@ -7819,7 +9540,7 @@ cartridge sha256:2c0bac12a7866fad1cb306da768a201c12f2520332df1ef51cba1576db21ff0 :information : serial: SNS-FU-USA : board: SHVC-1C0N - : revision: 1.0 + : revision: SNS-FU-0 : name: Star Fox - Super Weekend : title: Star Fox: Super Weekend @@ -7832,7 +9553,7 @@ cartridge sha256:3a16ad45ae3d89b13c9e53e21c2a4c725ff7cec7fbe7896d538d163f92cb4aa :information : serial: SNS-A9DE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-A9DE-0 : name: Star Trek - Deep Space Nine - Crossroads of Time : title: Star Trek: Deep Space Nine - Crossroads of Time @@ -7845,7 +9566,7 @@ cartridge sha256:b4d0b4a3fd73469f5469dfcc2316e50848ebf0630a225df2969c740759e321f :information : serial: SNS-ASTE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ASTE-0 : name: Star Trek - Starfleet Academy - Starship Bridge Simulator : title: Star Trek: Starfleet Academy - Starship Bridge Simulator @@ -7858,7 +9579,7 @@ cartridge sha256:22c907b56ac6f414365801ed375c3fbf75696ce7f34ec89e1724628dc562295 :information : serial: SNS-XN-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-XN-0 : name: Star Trek - The Next Generation - Future's Past : title: Star Trek: The Next Generation - Future's Past @@ -7871,7 +9592,7 @@ cartridge sha256:9ffd95486904804aca1f7068c99f1c9e91c2c0e5474ec758df1a913393571cc :information : serial: SNS-AGTE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AGTE-0 : name: Stargate : title: Stargate @@ -7884,7 +9605,7 @@ cartridge sha256:91f938b4989215b1cd39635797f23b59b9d7b6d36e583f9eb69d022abe537bf :information : serial: SNS-5S-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-5S-0 : name: Steel Talons : title: Steel Talons @@ -7897,7 +9618,7 @@ cartridge sha256:e3b07a59f969ced91c4579bb459f2c747a6c3f12c45ae4776483ef4830f5f00 :information : serial: SNS-AS2E-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AS2E-0 : name: Sterling Sharpe - End 2 End : title: Sterling Sharpe: End 2 End @@ -7910,7 +9631,7 @@ cartridge sha256:dad9c116283322d5a13fd659874c681582abdff3df182cc4c90511d33fb7110 :information : serial: SNS-ASOE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ASOE-0 : name: Stone Protectors : title: Stone Protectors @@ -7923,7 +9644,7 @@ cartridge sha256:b4626cf0c876a124b50f9421c48a7d762e9ed808ad336c799d543d60b484897 :information : serial: SNS-RA-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-RA-0 : name: Street Combat : title: Street Combat @@ -7938,7 +9659,7 @@ cartridge sha256:910a29f834199c63c22beddc749baba746da9922196a553255deade59f4fc12 :information : serial: SNS-AUZE-USA : board: SHVC-1N0N-01 - : revision: 1.0 + : revision: SNS-AUZE-0 : name: Street Fighter Alpha 2 : title: Street Fighter Alpha 2 @@ -7951,7 +9672,7 @@ cartridge sha256:2b34161e96ef3f0f48cecd67e531a9bb94310652d8686f301bac426e4ab97e7 :information : serial: SNS-S2-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-S2-0 : name: Street Fighter II - The World Warrior : title: Street Fighter II: The World Warrior @@ -7964,7 +9685,7 @@ cartridge sha256:3e487f8ba48c0b5e31744e3281d6bce375089db6075c8eb3d9a929376b81738 :information : serial: SNS-TI-USA : board: SHVC-3J0N-01 - : revision: 1.0 + : revision: SNS-TI-0 : name: Street Fighter II Turbo - Hyper Fighting : title: Street Fighter II Turbo: Hyper Fighting @@ -7977,7 +9698,7 @@ cartridge sha256:6756f92fe8e066be4b204cfdc94c1615ba6ece7e78fb5d2c77c81a9d298aa74 :information : serial: SNS-AHYE-USA : board: SHVC-BJ0N-01 - : revision: 1.0 + : revision: SNS-AHYE-0 : name: Street Hockey '95 : title: Street Hockey '95 @@ -7990,7 +9711,7 @@ cartridge sha256:d1f61b6bb4bb6879a4fbd2c82d77390c546ee7f821edddc884fb9cc7463ad79 :information : serial: SNS-ASRE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ASRE-0 : name: Street Racer : title: Street Racer @@ -8003,7 +9724,7 @@ cartridge sha256:05f14e6ed3394d9273e2397769a8acf1a9db646be6066e82269521e8eec5356 :information : serial: SNS-SG-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-SG-0 : name: Strike Gunner STG : title: Strike Gunner S.T.G. @@ -8021,7 +9742,7 @@ cartridge sha256:c04d80b84514202ff319384ca20641eb0189e975eed5612915bd9c224b2ab30 :information : serial: SNS-CQ-USA : board: SHVC-1CA6B-01 - : revision: 1.1 + : revision: SNS-CQ-1 : name: Stunt Race FX : title: Stunt Race FX @@ -8034,7 +9755,7 @@ cartridge sha256:e9c406d4f773697b9b671e7ddf2207c9d0ab242d7f23e502cdd453fbb264d39 :information : serial: SNS-6S-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-6S-0 : name: Sunset Riders : title: Sunset Riders @@ -8047,7 +9768,7 @@ cartridge sha256:190999122aacc2cff20c5677b3f60ed938d8a36b696d16cc1bf416705efe151 :information : serial: SNS-H2-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-H2-0 : name: Super Adventure Island : title: Super Adventure Island @@ -8062,7 +9783,7 @@ cartridge sha256:eaf1b83e95d8a04f9a84d4960cf87cc182fc60ef07be35eb8929c4033d6fef6 :information : serial: SNS-E4-USA : board: SHVC-2J3M-11 - : revision: 1.0 + : revision: SNS-E4-0 : name: Super Adventure Island II : title: Super Adventure Island II @@ -8075,7 +9796,7 @@ cartridge sha256:0deb7a91fbe5848f1733ce668daaa49b0dad3d821bacc0791837c1ba15e60d7 :information : serial: SNS-8A-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-8A-0 : name: Super Alfred Chicken : title: Super Alfred Chicken @@ -8088,7 +9809,7 @@ cartridge sha256:b64f9f95fb244feddb3ff50bf0972af88f5d006e9b09050b930374fef8b3786 :information : serial: SNS-AU-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-AU-0 : name: Super Aquatic Games starring the Aquabats, The : title: The Super Aquatic Games starring the Aquabats @@ -8101,7 +9822,7 @@ cartridge sha256:8808783f789ca6413364a7abea240f6f7291b5906026f360ba8cfdd2791fc17 :information : serial: SNS-SA-USA : board: SHVC-2J0N-01 - : revision: 1.0 + : revision: SNS-SA-0 : name: Super Baseball 2020 : title: Super Baseball 2020 @@ -8115,7 +9836,7 @@ cartridge sha256:1622371a5a4001fff9690323e89b7a8d449cdc3cae6dcd1249f0c7dc8c651d3 :information : serial: SNS-UB-USA : board: SHVC-1A3B-12 - : revision: 1.0 + : revision: SNS-UB-0 : name: Super Baseball Simulator 1.000 : title: Super Baseball Simulator 1.000 @@ -8128,7 +9849,7 @@ cartridge sha256:a8239355631d303ecebfd43fc14e80f148e4ac9937234e29cc87d6f939b033a :information : serial: SNS-SP-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-SP-0 : name: Super Bases Loaded : title: Super Bases Loaded @@ -8147,7 +9868,7 @@ cartridge sha256:327745aceb708d82419c3d2cffdffa78f55df0878bb1786e1b7fc294385f20b :information : serial: SNS-3D-USA : board: SHVC-2B3B-01 - : revision: 1.0 + : revision: SNS-3D-0 : name: Super Bases Loaded 2 : title: Super Bases Loaded 2 @@ -8161,7 +9882,7 @@ cartridge sha256:b21a161fed748920e54cd72c54095416b1d999636e0388d7d147884779c5283 :information : serial: SNS-AB3E-USA : board: SHVC-1A3M-30 - : revision: 1.0 + : revision: SNS-AB3E-0 : name: Super Bases Loaded 3 - License to Steal : title: Super Bases Loaded 3: License to Steal @@ -8174,7 +9895,7 @@ cartridge sha256:165938810948f3226f7446978fa36ae8bc781616d95b39cd126d5c8afbf6e2e :information : serial: SNS-FA-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-FA-0 : name: Super Batter Up : title: Super Batter Up @@ -8187,7 +9908,7 @@ cartridge sha256:1d6573e3db2efab0c98d1940b4171d569348d27a1cc20e80a83094e6c0e66e3 :information : serial: SNS-8B-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-8B-0 : name: Super Battleship : title: Super Battleship @@ -8200,7 +9921,7 @@ cartridge sha256:94496e73fc7fdf2f72f16bf2becb0c3935db2ebd97555eac73b63400acbceec :information : serial: SNS-SB-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-SB-0 : name: Super Battletank - War in the Gulf : title: Super Battletank: War in the Gulf @@ -8213,7 +9934,7 @@ cartridge sha256:b68e865b0b5fe6af421a171e94fb1cb0006ae3e412b6361f6f858c44adaa304 :information : serial: SNS-2X-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-2X-0 : name: Super Battletank 2 : title: Super Battletank 2 @@ -8226,7 +9947,7 @@ cartridge sha256:f0913358cb0870c3dcc7f0c0d2d69704874c31a113150eda668c95024c0d6fd :information : serial: SNS-BQ-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-BQ-0 : name: Super Black Bass : title: Super Black Bass @@ -8239,7 +9960,7 @@ cartridge sha256:4efab3f49cbe91ec77b6cba747ddfedfdc0b080c755a8b6ba51234f0676c000 :information : serial: SNS-H6-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-H6-0 : name: Super Bomberman : title: Super Bomberman @@ -8252,7 +9973,7 @@ cartridge sha256:0a4b4a783a7faf6ada3e1326ecf85de77e8c2a171659b42a78a1fae43f806ca :information : serial: SNS-M4-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-M4-0 : name: Super Bomberman 2 : title: Super Bomberman 2 @@ -8265,7 +9986,7 @@ cartridge sha256:21d4a72461d8680cf75cf3b8eba42e13127815bc17b6249d89a5e39beb3f140 :information : serial: SNS-ANKE-USA : board: SHVC-2J0N-11 - : revision: 1.0 + : revision: SNS-ANKE-0 : name: Super Bonk : title: Super Bonk @@ -8278,7 +9999,7 @@ cartridge sha256:946de556b4f877e54e16b5c828db89c038e50349cfd0ddf8ea96b6541f9d70f :information : serial: SNS-BW-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-BW-0 : name: Super Bowling : title: Super Bowling @@ -8291,7 +10012,7 @@ cartridge sha256:5965bde449ff775c1a0d9fd3cf2fb8c51a86b44ad1942dfb5c14a91f103be03 :information : serial: SNS-SN-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-SN-0 : name: Super Buster Brothers : title: Super Buster Brothers @@ -8304,7 +10025,7 @@ cartridge sha256:d42f8c7969b4c434f9ca04ce0080d897877a5e71c2926d309ef5dae93ba2554 :information : serial: SNS-C6-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-C6-0 : name: Super Caesers Palace : title: Super Caesers Palace @@ -8317,7 +10038,7 @@ cartridge sha256:0ef6f4cce5a2273fa49fe1ce724e0048a8e39c91da6b00dbb693fe1ba909177 :information : serial: SNS-AD-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-AD-0 : name: Super Castlevania IV : title: Super Castlevania IV @@ -8330,7 +10051,7 @@ cartridge sha256:b839253b878821ff00847491d11452e933baaf303f49dd39d22e3a524ea1ff8 :information : serial: SNS-QT-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-QT-0 : name: Super Chase HQ : title: Super Chase H.Q. @@ -8344,7 +10065,7 @@ cartridge sha256:6cbc4db85cb8420020f9edbfd290c0f435b313a59577aca65314d31f8b81662 :information : serial: SNS-CN-USA : board: SHVC-1A1B-06 - : revision: 1.0 + : revision: SNS-CN-0 : name: Super Conflict : title: Super Conflict @@ -8357,7 +10078,7 @@ cartridge sha256:db7d727de86a1ac886ce3c243bf5941910154eaef3be50209187b9711592830 :information : serial: SNS-75-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-75-0 : name: Super Copa : title: Super Copa @@ -8370,7 +10091,7 @@ cartridge sha256:bcced1be76ef920b562a555696bcb4583d1c8cea4d4b057cab6e0e09be8ef8c :information : serial: SNS-WD-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-WD-0 : name: Super Double Dragon : title: Super Double Dragon @@ -8386,7 +10107,7 @@ cartridge sha256:4d7fc331a811b8dc630b469262fd6f45e289243cef83101f32038158967d1b2 :information : serial: SNS-A-SG-USA : board: SGB-R-10 - : revision: 1.2 + : revision: SYS-SGB-2 : name: Super Game Boy : title: Super Game Boy @@ -8399,7 +10120,7 @@ cartridge sha256:7468c271d7240cf4e0d08c16e9969a1b1b1caf5adc0e5adc568d93c92651a05 :information : serial: SNS-CM-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-CM-0 : name: Super Ghouls & Ghosts : title: Super Ghouls 'n Ghosts @@ -8412,7 +10133,7 @@ cartridge sha256:d4caa6683ee1b6c70c10fd0555ade33dadcc6551d94e791586e64fd683d8f3a :information : serial: SNS-JV-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-JV-0 : name: Super Goal! 2 : title: Super Goal! 2 @@ -8425,7 +10146,7 @@ cartridge sha256:33dda5838264c93341ef865512e4b86e16fd4a0387eda04e331517bfaecf1c0 :information : serial: SNS-7G-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-7G-0 : name: Super Godzilla : title: Super Godzilla @@ -8438,7 +10159,7 @@ cartridge sha256:d78ff42efdbb0e180777d17b5f7a96e08530ab77f15a99237f60714f7cfe2b7 :information : serial: SNS-HX-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-HX-0 : name: Super High Impact : title: Super High Impact @@ -8451,7 +10172,7 @@ cartridge sha256:3f8efb19eae68f24feb42c018b7dc7a819bfd8d993ab36899681caa7ee94b06 :information : serial: SNS-J5-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-J5-0 : name: Super James Pond : title: Super James Pond @@ -8465,7 +10186,7 @@ cartridge sha256:a9e3e57d591e995e8e0dd228b619b6aed42205eaf55316fa8ff33f236b3a32b :information : serial: SNS-4M-USA : board: SHVC-2A3B-01 - : revision: 1.0 + : revision: SNS-4M-0 : name: Super Mario All-Stars : title: Super Mario All-Stars @@ -8479,7 +10200,7 @@ cartridge sha256:a8806bfe07cd3c9945d9fd3fcea932ae1cd671cab5cae12bb7a2ae726cbf917 :information : serial: SNS-5M-USA : board: SHVC-BA3M-01 - : revision: 1.0 + : revision: SNS-5M-0 : name: Super Mario All-Stars + Super Mario World : title: Super Mario All-Stars + Super Mario World @@ -8499,7 +10220,7 @@ cartridge sha256:89ad4ba02a2518ca792cf96b61b36613f86baac92344c9c10d7fab5433bebc1 :information : serial: SNS-MK-USA : board: SHVC-1K1B-01 - : revision: 1.0 + : revision: SNS-MK-0 : name: Super Mario Kart : title: Super Mario Kart @@ -8519,7 +10240,7 @@ cartridge sha256:740646f3535bfb365ca44e70d46ab433467b142bd84010393070bd0b141af85 :information : serial: SNS-ARWE-USA : board: SHVC-1L5B-11 - : revision: 1.0 + : revision: SNS-ARWE-0 : name: Super Mario RPG - Legend of the Seven Stars : title: Super Mario RPG: Legend of the Seven Stars @@ -8533,7 +10254,7 @@ cartridge sha256:0838e531fe22c077528febe14cb3ff7c492f1f5fa8de354192bdff7137c27f5 :information : serial: SNS-MW-USA : board: SHVC-1A1B-06 - : revision: 1.0 + : revision: SNS-MW-0 : name: Super Mario World : title: Super Mario World @@ -8551,7 +10272,7 @@ cartridge sha256:bd763c1a56365c244be92e6cffefd318780a2a19eda7d5baf1c6d5bd6c1b3e0 :information : serial: SNS-YI-USA : board: SHVC-1CB5B-20 - : revision: 1.1 + : revision: SNS-YI-1 : name: Super Mario World 2 - Yoshi's Island : title: Super Mario World 2: Yoshi's Island @@ -8565,7 +10286,7 @@ cartridge sha256:12b77c4bc9c1832cee8881244659065ee1d84c70c3d29e6eaf92e6798cc2ca7 :information : serial: SNS-RI-USA : board: SHVC-BA3M-01 - : revision: 1.0 + : revision: SNS-RI-0 : name: Super Metroid : title: Super Metroid @@ -8578,7 +10299,7 @@ cartridge sha256:40b46bb29785fb431b325f22377faa8b099be4d77aecc1f03000b8a4cb589b6 :information : serial: SNS-CW-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-CW-0 : name: Super Ninja Boy : title: Super Ninja Boy @@ -8591,7 +10312,7 @@ cartridge sha256:a8acbbd6f8afbf289a6b837da6cd8bd109a00cd38625c956ab8ff739732d9e4 :information : serial: SNS-DH-USA : board: SHVC-1J0N-01 - : revision: 1.0 + : revision: SNS-DH-0 : name: Super Nova : title: Super Nova @@ -8604,7 +10325,7 @@ cartridge sha256:24b687f95bb9737d223738f13c00aeaa7d697fa9e2fd50597b81d0cfa2160da :information : serial: SNS-OR-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-OR-0 : name: Super Off Road : title: Super Off Road @@ -8617,7 +10338,7 @@ cartridge sha256:16f9c90d75bd23d0620be00ecf818fcb25c5935d4ee26b1fe17b926f8987aa6 :information : serial: SNS-R8-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-R8-0 : name: Super Off Road - The Baja : title: Super Off Road: The Baja @@ -8630,7 +10351,7 @@ cartridge sha256:6bf0e7a7b95613b9d0e5c8cc98eee5d0ac200e88b5d4444ad5cf93d3e826511 :information : serial: SNS-XP-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-XP-0 : name: Super Pinball - Behind the Mask : title: Super Pinball: Behind the Mask @@ -8643,7 +10364,7 @@ cartridge sha256:65aff1403838c938d7c6170f3044a2b0317cd2ee13ad79353a4cdd2aa82f4e8 :information : serial: SNS-XP-USA : board: SHVC-1A0N-30 - : revision: 1.1 + : revision: SNS-XP-1 : name: Super Pinball - Behind the Mask : title: Super Pinball: Behind the Mask @@ -8657,7 +10378,7 @@ cartridge sha256:5a4b0c89606f71182fa5552ac476cc3bbda5ddc7d44e33f9184114aaea38020 :information : serial: SNS-SF-USA : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-SF-0 : name: Super Play Action Football : title: Super Play Action Football @@ -8671,7 +10392,7 @@ cartridge sha256:a3d803b8c6b0b6ac55085671040b840f993543915c7f802e14fb651beabe9b6 :information : serial: SNS-4Q-USA : board: SHVC-1A3M-21 - : revision: 1.0 + : revision: SNS-4Q-0 : name: Super Punch-Out!! : title: Super Punch-Out!! @@ -8684,7 +10405,7 @@ cartridge sha256:3dff3513ae6acb85a02b00b9f5adb4757ab97661993bded4f329127a792cef8 :information : serial: SNS-YU-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-YU-0 : name: Super Putty : title: Super Putty @@ -8697,7 +10418,7 @@ cartridge sha256:05c7f6461209020785fba33007e1830820aa44ada4b1a6f991d936bf2335b15 :information : serial: SNS-SR-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-SR-0 : name: Super R-Type : title: Super R-Type @@ -8710,7 +10431,7 @@ cartridge sha256:607bfa0f74e57298f59ebe237c2e7b59364024d844534f3befb9ad1301bbedf :information : serial: SNS-ARLE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ARLE-0 : name: Super RBI Baseball : title: Super R.B.I Baseball @@ -8723,7 +10444,7 @@ cartridge sha256:7a8ffaf8bb549b400ec2f0bda9f3c0dbf5852c38618cdb21cd783c368383e2c :information : serial: SNS-LR-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-LR-0 : name: Super Scope 6 : title: Super Scope 6 @@ -8736,7 +10457,7 @@ cartridge sha256:e987ceb53cc1407b1ba612b13a7b5391db6c41ea14552c165ae62ad42eeaa0a :information : serial: SNS-D9-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-D9-0 : name: Super Slam Dunk : title: Super Slam Dunk @@ -8749,7 +10470,7 @@ cartridge sha256:c39ebf88af138e87ca5d963ed71a8b7defba3e2bc271d72186d00056e822572 :information : serial: SNS-ZX-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ZX-0 : name: Super Slap Shot : title: Super Slap Shot @@ -8762,7 +10483,7 @@ cartridge sha256:8b75ab4bb1b63c45a56e7a4c5a37c0864f14375ab3131edc33489764426ad88 :information : serial: SNS-TV-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-TV-0 : name: Super Smash TV : title: Super Smash T.V. @@ -8775,7 +10496,7 @@ cartridge sha256:694ad2b34ab808bd8a1aa9dda359594cfd3a5fd9d95d4cf262ccaa0eb57eef6 :information : serial: SNS-FS-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-FS-0 : name: Super Soccer : title: Super Soccer @@ -8788,7 +10509,7 @@ cartridge sha256:5eb9736d66b3ac730ebbfdd19ef2397282b5f1a62dc0048093e041e23b80774 :information : serial: SNS-HT-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-HT-0 : name: Super Soccer Champ : title: Super Soccer Champ @@ -8801,7 +10522,7 @@ cartridge sha256:5985cdad45958a5b8c5967ad39efe51569f560bf237a4e9864f21111082a850 :information : serial: SNS-LT-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-LT-0 : name: Super Solitaire : title: Super Solitaire @@ -8814,7 +10535,7 @@ cartridge sha256:c6bd7239cb2074ff1c471d14535bead6290bba2d7c75b4f03209cb114877b4c :information : serial: SNS-V4-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-V4-0 : name: Super Star Wars - A New Hope : title: Super Star Wars: A New Hope @@ -8827,7 +10548,7 @@ cartridge sha256:1dd01da68cb61def641389bf3fa87b7a29113c9c8dd172cf303c0f7e03ba6e4 :information : serial: SNS-E5-USA : board: SHVC-2A0N-10 - : revision: 1.0 + : revision: SNS-E5-0 : name: Super Star Wars II - The Empire Strikes Back : title: Super Star Wars II: The Empire Strikes Back @@ -8840,7 +10561,7 @@ cartridge sha256:46370b3bd6ff9ee04c425eef0f482f521f3b61bd4b058f2f4e9d322253d7b5d :information : serial: SNS-E5-USA : board: MAXI-1A0N-30 - : revision: 1.1 + : revision: SNS-E5-1 : name: Super Star Wars II - The Empire Strikes Back : title: Super Star Wars II: The Empire Strikes Back @@ -8853,7 +10574,7 @@ cartridge sha256:c49be867cdd276703a3ae46a6b17673b9e359af4f9af2329c8eb74712024581 :information : serial: SNS-ARJE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ARJE-0 : name: Super Star Wars III - Return of the Jedi : title: Super Star Wars III: Return of the Jedi @@ -8866,7 +10587,7 @@ cartridge sha256:f7df5cd16ce6624567d1a24e9b9c0b9050ea9b6a9fe5a797348458963775659 :information : serial: SNS-ARJE-USA : board: MAXI-1A0N-30 - : revision: 1.1 + : revision: SNS-ARJE-1 : name: Super Star Wars III - Return of the Jedi : title: Super Star Wars III: Return of the Jedi @@ -8879,7 +10600,7 @@ cartridge sha256:d17cb5c73174060fcbd9cba6c705643f19c3b8be24d0f7ee43aee674ff1ea38 :information : serial: SNS-XW-USA : board: SHVC-BJ0N-01 - : revision: 1.0 + : revision: SNS-XW-0 : name: Super Street Fighter II - The New Challengers : title: Super Street Fighter II: The New Challengers @@ -8892,7 +10613,7 @@ cartridge sha256:830c900083cccc6ded74c167c4e257db34df4786ecd6e2f053de454db7d31fe :information : serial: SNS-EG-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-EG-0 : name: Super Strike Eagle : title: Super Strike Eagle @@ -8905,7 +10626,7 @@ cartridge sha256:6e45a80ea148654514cb4e8604a0ffcbc726946e70f9e0b9860e36c0f3fa487 :information : serial: SNS-ST-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-ST-0 : name: Super Tennis : title: Super Tennis @@ -8918,7 +10639,7 @@ cartridge sha256:02cb7f1ed21ed6bfb9eaa0e91df2adb063a9bf4cbd6feb6cd024d676829e227 :information : serial: SNS-5L-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-5L-0 : name: Super Troll Islands : title: Super Troll Islands @@ -8931,7 +10652,7 @@ cartridge sha256:056ac8160363d577e3ffc2f593801b8bb3d024fe4f3a3331b711dc556204949 :information : serial: SNS-TU-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-TU-0 : name: Super Turrican : title: Super Turrican @@ -8944,7 +10665,7 @@ cartridge sha256:96da3512a1aa05a40f1e5d61c48932b0d55d9f136d6418b848153a9fecab06d :information : serial: SNS-A2TE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-A2TE-0 : name: Super Turrican 2 : title: Super Turrican 2 @@ -8957,7 +10678,7 @@ cartridge sha256:792e615a34ceae5a1b9a4f54c5a5d9b53e39299332fece83e4bceca2c22efb2 :information : serial: SNS-VA-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-VA-0 : name: Super Valis IV : title: Super Valis IV @@ -8970,7 +10691,7 @@ cartridge sha256:62d3d650e956f23f3b221f83c5c5bd204afd0e4f4d9c47a3251962323de9608 :information : serial: SNS-WI-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-WI-0 : name: Super Widget : title: Super Widget @@ -8988,7 +10709,7 @@ cartridge sha256:dfada65f4497f482d5f81964322d9952f678f50e65418d307d4503f9bf9a32d :information : serial: SNS-8H-USA : board: SHVC-1K0N-01 - : revision: 1.0 + : revision: SNS-8H-0 : name: Suzuka 8 Hours : title: Suzuka 8 Hours @@ -9001,7 +10722,7 @@ cartridge sha256:d802715fb4f09d7e499b5b3e577af641598a723dae7cedeaa93943bb53c6edb :information : serial: SNS-AK9E-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AK9E-0 : name: SWAT Kats - The Radical Squadron : title: SWAT Kats: The Radical Squadron @@ -9014,7 +10735,7 @@ cartridge sha256:c2015d03dd3db08069b2a6ea1ed6b3e1ac1e3a5f804b02295c3cd3717add91e :information : serial: SNS-AFYE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AFYE-0 : name: Syndicate : title: Syndicate @@ -9027,7 +10748,7 @@ cartridge sha256:1711fe9010232b41ec406900e5b4ef528dd2beaa97b27d94ed7eef57d63904a :information : serial: SNS-TZ-USA : board: MAXI-1A0N-30 - : revision: 1.1 + : revision: SNS-TZ-1 : name: Taz-Mania : title: Taz-Mania @@ -9041,7 +10762,7 @@ cartridge sha256:7da4a3cfa5de4bb4722a6e2a42c26aae322b5e668f1645d8c870fb99e608060 :information : serial: SNS-AQ-USA : board: SHVC-2A3M-20 - : revision: 1.0 + : revision: SNS-AQ-0 : name: Tecmo Secret of the Stars : title: Tecmo Secret of the Stars @@ -9055,7 +10776,7 @@ cartridge sha256:c3cb1d2fd9775aa9d15b7eedd45ad82519b73d47ca166737ed398c748717bcc :information : serial: SNS-ATBE-USA : board: SHVC-2A3M-11 - : revision: 1.0 + : revision: SNS-ATBE-0 : name: Tecmo Super Baseball : title: Tecmo Super Baseball @@ -9069,7 +10790,7 @@ cartridge sha256:35dd020cf57fc402417ab6e4a6c49866c5a86bba25218c0aaf7ce85cb134bcf :information : serial: SNS-7T-USA : board: SHVC-2A3B-01 - : revision: 1.0 + : revision: SNS-7T-0 : name: Tecmo Super Bowl : title: Tecmo Super Bowl @@ -9083,7 +10804,7 @@ cartridge sha256:2972057a0087f8239d2523eaa995405f06e5d5ba3a3203b6b50d401379c8ebd :information : serial: SNS-ASBE-USA : board: SHVC-1A5M-11 - : revision: 1.0 + : revision: SNS-ASBE-0 : name: Tecmo Super Bowl II - Special Edition : title: Tecmo Super Bowl II: Special Edition @@ -9097,7 +10818,7 @@ cartridge sha256:8cfd4c5525f4bd4bba5af7e2323f1e61f27ce97c6d5617cfa685c9276fbf640 :information : serial: SNS-AW4E-USA : board: SHVC-1A5M-20 - : revision: 1.0 + : revision: SNS-AW4E-0 : name: Tecmo Super Bowl III - Final Edition : title: Tecmo Super Bowl III: Final Edition @@ -9111,7 +10832,7 @@ cartridge sha256:14bce564f976d1431127259edbcb23c52c79361fed9814d307d627c4650e800 :information : serial: SNS-XM-USA : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-XM-0 : name: Tecmo Super NBA Basketball : title: Tecmo Super NBA Basketball @@ -9124,7 +10845,7 @@ cartridge sha256:5b82cdd6f2da56f43680d6a5021faebe2e06036d30602c1a7917aa414cf8b5f :information : serial: SNS-TM-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-TM-0 : name: Teenage Mutant Ninja Turtles IV - Turtles in Time : title: Teenage Mutant Ninja Turtles IV: Turtles in Time @@ -9137,7 +10858,7 @@ cartridge sha256:849141370f164d6db3e5709da670726f958ce13ffef69319564db3fb0b12c69 :information : serial: SNS-KY-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-KY-0 : name: Teenage Mutant Ninja Turtles V - Tournament Fighters : title: Teenage Mutant Ninja Turtles V: Tournament Fighters @@ -9150,7 +10871,7 @@ cartridge sha256:bd7074ef4a05d790646abe145ffd2587fb48044e4b730286d807abe10284117 :information : serial: SNS-TN-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-TN-0 : name: Terminator : title: The Terminator @@ -9163,7 +10884,7 @@ cartridge sha256:06db3be569a587d79b51bfc684fd2ebdea977863875aedec88218fbb4169c21 :information : serial: SNS-TP-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-TP-0 : name: Terminator 2 - Judgment Day : title: Terminator 2: Judgment Day @@ -9176,7 +10897,7 @@ cartridge sha256:365f10f9d9f68cc59e769eeb451c417e1ff7415022a625de9976a3b924c0bd6 :information : serial: SNS-XV-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-XV-0 : name: Terminator 2 - The Arcade Game : title: Terminator 2: The Arcade Game @@ -9189,7 +10910,7 @@ cartridge sha256:c9563cb57314588aa3db22b76dc8acfba3e73733dd3538edd90af5a15595830 :information : serial: SNS-DL-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-DL-0 : name: Test Drive II - The Duel : title: Test Drive II: The Duel @@ -9202,7 +10923,7 @@ cartridge sha256:3cdebbd8adc4bb6773a7995f542fdac49adefca71cba583255a1c1bf37ac394 :information : serial: SNS-AFTE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AFTE-0 : name: Tetris & Dr. Mario : title: Tetris & Dr. Mario @@ -9215,7 +10936,7 @@ cartridge sha256:accc836c3adabadc810fbe35702c6a64d50a09f4c672d2734fa58b251d7a20a :information : serial: SNS-27-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-27-0 : name: Tetris 2 : title: Tetris 2 @@ -9228,7 +10949,7 @@ cartridge sha256:70dea29a928c1625def31c862dc74960e39e587e416b45829efc21f13ebd963 :information : serial: SNS-27-USA : board: SHVC-1A0N-30 - : revision: 1.1 + : revision: SNS-27-1 : name: Tetris 2 : title: Tetris 2 @@ -9241,7 +10962,7 @@ cartridge sha256:579bf1a1988d4af06a69cc1d82a2478ebe51940c5ced7f97e83029a24e6aa77 :information : serial: SNS-AYLE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AYLE-0 : name: Tetris Attack : title: Tetris Attack @@ -9254,7 +10975,7 @@ cartridge sha256:1121df3f05dd9dbb749f6b785eb9b3eb69968004f9d6ceffa6f84757af2f370 :information : serial: SNS-6T-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-6T-0 : name: Thomas the Tank Engine & Friends : title: Thomas the Tank Engine & Friends @@ -9267,7 +10988,7 @@ cartridge sha256:d50aaa41e153ca356eee16a9deccb1a763ee56ebbe6c80cd28c5ad1db66a531 :information : serial: SNS-TH-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-TH-0 : name: Thunder Spirits : title: Thunder Spirits @@ -9280,7 +11001,7 @@ cartridge sha256:eb958801fd1f08771e5a0933f7701d633262efbfe8d47de21dda18e3b77670d :information : serial: SNS-ATHE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ATHE-0 : name: Tick, The : title: The Tick @@ -9293,7 +11014,7 @@ cartridge sha256:16fb965130e57f37dda2466f23820f091f8b96758aa7e30ba4fd63cb618e5dd :information : serial: SNS-ATCE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ATCE-0 : name: Time Cop : title: Time Cop @@ -9306,7 +11027,7 @@ cartridge sha256:8e82f98d2e62bc1e5fcf2386c2b5ca54998398220efcedd67858aaaa92289a4 :information : serial: SNS-XT-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-XT-0 : name: Time Slip : title: Time Slip @@ -9319,7 +11040,7 @@ cartridge sha256:fa7e2b40093f0cc7233cc77e95bbbea2144c8183dec10446590396fffd7cda3 :information : serial: SNS-X8-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-X8-0 : name: Time Trax : title: Time Trax @@ -9332,7 +11053,7 @@ cartridge sha256:271a67b32b3bb00ceb0f4e7d81494888d0d821635f0f936d481dfbe671567c0 :information : serial: SNS-AJ9E-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AJ9E-0 : name: Timon & Pumbaa's Jungle Games : title: Timon & Pumbaa's Jungle Games @@ -9346,7 +11067,7 @@ cartridge sha256:0503cd93b4d211a825acd47ff3813668b4ce68890c8be2fbfe5ac2b46882dfc :information : serial: SNS-9N-USA : board: SHVC-1A1M-11 - : revision: 1.0 + : revision: SNS-9N-0 : name: Tin Star : title: Tin Star @@ -9359,7 +11080,7 @@ cartridge sha256:ba679a11264e9695895a6c17358a41e8459be06166d056811df9c2738fef3d0 :information : serial: SNS-TA-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-TA-0 : name: Tiny Toon Adventures - Buster Busts Loose! : title: Tiny Toon Adventures: Buster Busts Loose! @@ -9372,7 +11093,7 @@ cartridge sha256:f753de4a38bd83f7d937fc7bf5565a3c351a794c113dead8fdee6d86c85633e :information : serial: SNS-5Z-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-5Z-0 : name: Tiny Toon Adventures - Wacky Sports Challenge : title: Tiny Toon Adventures: Wacky Sports Challenge @@ -9385,7 +11106,7 @@ cartridge sha256:08d808e9c5851e4301a38a56b350a20ea9e3adbef51546e87e1785d691d0f2d :information : serial: SNS-BX-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-BX-0 : name: TKO Super Championship Boxing : title: TKO Super Championship Boxing @@ -9400,7 +11121,7 @@ cartridge sha256:ced8c0bc2791ffe47cb9eec03db67567945af8c58b5330326722f1cfca41bf5 :information : serial: SNS-ATNE-USA : board: SHVC-2J3M-20 - : revision: 1.0 + : revision: SNS-ATNE-0 : name: TNN Bass Tournament of Champions : title: TNN Bass Tournament of Champions @@ -9413,7 +11134,7 @@ cartridge sha256:4f500da19dbb1557a7bc0ce14437098c1402478d573fb569303b81c011f86fb :information : serial: SNS-TJ-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-TJ-0 : name: Tom and Jerry : title: Tom and Jerry @@ -9426,7 +11147,7 @@ cartridge sha256:d99008d2181986dc7f65228696d940b5d31be8471f166d1ab9b1c14f1503bcf :information : serial: SNS-XS-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-XS-0 : name: Tommy Moe's Winter Extreme - Skiing and Snowboarding : title: Tommy Moe's Winter Extreme: Skiing and Snowboarding @@ -9439,7 +11160,7 @@ cartridge sha256:e0fbf731550266d79a0b6ca460afd04c8c312f7023b2c9882c4fc3acc3e7932 :information : serial: SNS-6K-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-6K-0 : name: Tony Meola's Sidekicks Soccer : title: Tony Meola's Sidekicks Soccer @@ -9452,7 +11173,7 @@ cartridge sha256:ca9889f17f184b3d99a2eaaa82af73e366f03ed00313fdd369e5e023b208e78 :information : serial: SNS-TR-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-TR-0 : name: Top Gear : title: Top Gear @@ -9465,7 +11186,7 @@ cartridge sha256:76b2702c4be8b668c1017f2817c280283c275eaa41535bf6ffa2b8d2220b68c :information : serial: SNS-2P-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-2P-0 : name: Top Gear 2 : title: Top Gear 2 @@ -9482,7 +11203,7 @@ cartridge sha256:ede60f0d283b6ea3a45308981d99e7c422a0296e5fadde51c6bafd4dcc789ca :information : serial: SNS-A3TE-USA : board: SHVC-1B0N-03 - : revision: 1.0 + : revision: SNS-A3TE-0 : name: Top Gear 3000 : title: Top Gear 3000 @@ -9495,7 +11216,7 @@ cartridge sha256:9bf884be5627d38f060ad7f3a61ea1fea1474d416e1d037d33014ca9d5205c1 :information : serial: SNS-XC-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-XC-0 : name: Total Carnage : title: Total Carnage @@ -9508,7 +11229,7 @@ cartridge sha256:345e795000e74f51704774edfc8049473461761a65eb47cab710caa29e09897 :information : serial: SNS-AQHE-USA : board: SHVC-BJ0N-20 - : revision: 1.0 + : revision: SNS-AQHE-0 : name: Toy Story : title: Toy Story @@ -9521,7 +11242,7 @@ cartridge sha256:7a6e5da46b026900fba4584a32ad40d940b9ecf9fccfb11f96a205a91401478 :information : serial: SNS-YT-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-YT-0 : name: Toys - Let the Toy Wars Begin! : title: Toys: Let the Toy Wars Begin! @@ -9534,7 +11255,7 @@ cartridge sha256:4070a7702dc506a1ceb6f65b5c330b3a162df6f01735c8f206934fd47b810ed :information : serial: SNS-TX-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-TX-0 : name: Troddlers : title: Troddlers @@ -9548,7 +11269,7 @@ cartridge sha256:46fcca4ce29f472afa8519958d256eec347c2dc2da154c95f263a051c5c02db :information : serial: SNS-YQ-USA : board: SHVC-2A3M-11 - : revision: 1.0 + : revision: SNS-YQ-0 : name: Troy Aikman Football : title: Troy Aikman Football @@ -9562,7 +11283,7 @@ cartridge sha256:dd96a8f4f9c8988301ff710a4c70ebe3bf7914901f3547abe1d5f0dd5c0b921 :information : serial: SNS-W8-USA : board: SHVC-1A3M-10 - : revision: 1.0 + : revision: SNS-W8-0 : name: True Golf - Wicked 18 : title: True Golf: Wicked 18 @@ -9576,7 +11297,7 @@ cartridge sha256:5c7b28bb24bad697156ad444ff23bd15ad6744dbf9899b3cccf2aa36d559d82 :information : serial: SNS-GB-USA : board: SHVC-1A3B-12 - : revision: 1.0 + : revision: SNS-GB-0 : name: True Golf Classics - Pebble Beach Golf Links : title: True Golf Classics: Pebble Beach Golf Links @@ -9590,7 +11311,7 @@ cartridge sha256:72088194a65fc057f2910945a33d9f071682a4cecac8996f0bdabcdb5ef3996 :information : serial: SNS-TG-USA : board: SHVC-1A3B-11 - : revision: 1.0 + : revision: SNS-TG-0 : name: True Golf Classics - Waialae Country Club : title: True Golf Classics: Waialae Country Club @@ -9603,7 +11324,7 @@ cartridge sha256:47dd8ea2d12a6bb2a9774de1d492259fc4fb9f8ec7976383bbfd922532671f6 :information : serial: SNS-ATLE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-ATLE-0 : name: True Lies : title: True Lies @@ -9616,7 +11337,7 @@ cartridge sha256:8f62d014f513a7dcbca5aa76cbe476c3e4526100f34913af831bc05dab029bd :information : serial: SNS-TE-USA : board: SHVC-2A0N-10 - : revision: 1.0 + : revision: SNS-TE-0 : name: Tuff E Nuff : title: Tuff E Nuff @@ -9629,7 +11350,7 @@ cartridge sha256:e4343c0fadc00ffdc3dc31345068d751eea5d639f826731f08cb81673d508c4 :information : serial: SNS-ZN-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-ZN-0 : name: Turn and Burn - No-Fly Zone : title: Turn and Burn: No-Fly Zone @@ -9643,7 +11364,7 @@ cartridge sha256:259c25d4613f97f5fa7992900fb583625d7fb912c7ae09fa9def2e682834dc9 :information : serial: SNS-83-USA : board: SHVC-1A1M-11 - : revision: 1.0 + : revision: SNS-83-0 : name: Twisted Tales of Spike McFang, The : title: The Twisted Tales of Spike McFang @@ -9657,7 +11378,7 @@ cartridge sha256:094555d5720158ee60c9d5ab9a13110192db5ebf0f6cf69abbb59a00bc47034 :information : serial: SNS-7U-USA : board: SHVC-1A1M-11 - : revision: 1.0 + : revision: SNS-7U-0 : name: Ultima - Runes of Virtue II : title: Ultima: Runes of Virtue II @@ -9671,7 +11392,7 @@ cartridge sha256:11659bd8dd620d50400d16042aeb2d0ddb00c7183fc1ecb95b1a34f07db0431 :information : serial: SNS-U6-USA : board: SHVC-1A3M-20 - : revision: 1.0 + : revision: SNS-U6-0 : name: Ultima VI - The False Prophet : title: Ultima VI: The False Prophet @@ -9685,7 +11406,7 @@ cartridge sha256:a31af0e39afb55bbc92a5543b504327fbe7e8cd0a5e08626976bed7b6537673 :information : serial: SNS-7I-USA : board: SHVC-1A3M-21 - : revision: 1.0 + : revision: SNS-7I-0 : name: Ultima VII - The Black Gate : title: Ultima VII: The Black Gate @@ -9698,7 +11419,7 @@ cartridge sha256:78bf82963cded9162e25035053c8b1a9f760748ff0beacc230d005204992737 :information : serial: SNS-HP-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-HP-0 : name: Ultimate Fighter : title: Ultimate Fighter @@ -9711,7 +11432,7 @@ cartridge sha256:cb2fdfce61858063bf4c9da4228381c3ec3abe423f4d378cddd174ae4adb261 :information : serial: SNS-A3ZE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-A3ZE-0 : name: Ultimate Mortal Kombat 3 : title: Ultimate Mortal Kombat 3 @@ -9724,7 +11445,7 @@ cartridge sha256:e9fae4c2e171a1fc4f2bd800abd9e42750aaf7a4db9e40c5b9142e15029500b :information : serial: SNS-UM-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-UM-0 : name: Ultraman - Towards the Future : title: Ultraman: Towards the Future @@ -9737,7 +11458,7 @@ cartridge sha256:0b155a54b6134601fc0791252a63ca73efd522667c3d6fd7a44f5b3c500039d :information : serial: SNS-E8-USA : board: SHVC-1A0N-01 - : revision: 1.0 + : revision: SNS-E8-0 : name: UN Squadron : title: U.N. Squadron @@ -9751,7 +11472,7 @@ cartridge sha256:794152fc6f55cb15a0b203fa645ac9fa314a293da999d8ec8b3dda080434d17 :information : serial: SNS-QK-USA : board: SHVC-1A3B-13 - : revision: 1.0 + : revision: SNS-QK-0 : name: Uncharted Waters : title: Uncharted Waters @@ -9766,7 +11487,7 @@ cartridge sha256:64bc4707f422661a66618088887e2363a5f896ea683c58984fffd96dd21ab5f :information : serial: SNS-QL-USA : board: SHVC-1J5M-11 - : revision: 1.0 + : revision: SNS-QL-0 : name: Uncharted Waters - New Horizons : title: Uncharted Waters: New Horizons @@ -9780,7 +11501,7 @@ cartridge sha256:859ec99fdc25dd9b239d9085bf656e4f49c93a32faa5bb248da83efd68ebd47 :information : serial: SNS-4L-USA : board: SHVC-1A3M-21 - : revision: 1.0 + : revision: SNS-4L-0 : name: Uniracers : title: Uniracers @@ -9793,7 +11514,7 @@ cartridge sha256:ecefb4117a6aae117e033c8cc07f0db2797d6be93dd5cdcefc23692a21fae02 :information : serial: SNS-UC-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-UC-0 : name: Untouchables, The : title: The Untouchables @@ -9806,7 +11527,7 @@ cartridge sha256:dcb33a89fcb8d8ca8f3a467034728ad6375273d8eb51a60418ca51ef745e9b3 :information : serial: SNS-AUSE-USA : board: MJSC-1A0N-30 - : revision: 1.0 + : revision: SNS-AUSE-0 : name: Urban Strike : title: Urban Strike @@ -9820,7 +11541,7 @@ cartridge sha256:2500d6c846c78bcb729f15535bf2b852a120411891cabaaaa6fc407906d0214 :information : serial: SNS-UP-USA : board: SHVC-1A3M-10 - : revision: 1.0 + : revision: SNS-UP-0 : name: Utopia - The Creation of a Nation : title: Utopia: The Creation of a Nation @@ -9834,7 +11555,7 @@ cartridge sha256:78bf9d79fb2ff3f9d03ecc1176d070e53ddaca2c6b0cda69e74c19a4e50b195 :information : serial: SNS-VS-USA : board: SHVC-1A1B-06 - : revision: 1.0 + : revision: SNS-VS-0 : name: Vegas Stakes : title: Vegas Stakes @@ -9852,7 +11573,7 @@ cartridge sha256:41b5561de9e4984276e52987ea46c5f4fa8526d8141c70c738875a9eb9fe9d7 :information : serial: SNS-4V-USA : board: SHVC-1CA0N5S-01 - : revision: 1.0 + : revision: SNS-4V-0 : name: Vortex : title: Vortex @@ -9866,7 +11587,7 @@ cartridge sha256:b0e74f0fe8d1e7fe2fe404341fea7c68e28f3a0ab78552d5092d413f2ecec41 :information : serial: SNS-YS-USA : board: SHVC-1A3B-12 - : revision: 1.0 + : revision: SNS-YS-0 : name: Wanderers from Ys III : title: Wanderers from Ys III @@ -9879,7 +11600,7 @@ cartridge sha256:82bba8ae2bb4dbc74a18af31aaec19c368576e4369dd70b396caa5e8729540b :information : serial: SNS-A2AE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-A2AE-0 : name: War 2410 : title: War 2410 @@ -9892,7 +11613,7 @@ cartridge sha256:8b12e5e4553fc921c23739d1aec2ed517535ec239daef800f39f602d8473847 :information : serial: SNS-AZNE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AZNE-0 : name: War 3010 - The Revolution : title: War 3010: The Revolution @@ -9906,7 +11627,7 @@ cartridge sha256:be420715152394e0e4a25ab10931b67f92f910cfcf7793e31dfee1c6334808e :information : serial: SNS-65-USA : board: SHVC-1A3M-21 - : revision: 1.0 + : revision: SNS-65-0 : name: Wario's Woods : title: Wario's Woods @@ -9919,7 +11640,7 @@ cartridge sha256:8579dd352d20589072ed5c026bde7adadd6229d18a022e7cb47cf5602b54015 :information : serial: SNS-AWKE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AWKE-0 : name: Warlock : title: Warlock @@ -9932,7 +11653,7 @@ cartridge sha256:36ec2f409f08a08f8327570eadcd8960b6a47bf5797441c2df05fcc50c5b762 :information : serial: SNS-WP-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-WP-0 : name: Warp Speed : title: Warp Speed @@ -9946,7 +11667,7 @@ cartridge sha256:dd73690dd3165a16580e191c92a497102758f312c759353f685e371755c663a :information : serial: SNS-AWZE-USA : board: SHVC-2A3M-20 - : revision: 1.0 + : revision: SNS-AWZE-0 : name: Wayne Gretzky and the NHLPA All-Stars : title: Wayne Gretzky and the NHLPA All-Stars @@ -9959,7 +11680,7 @@ cartridge sha256:56ba3d585bf6b701e342d86a0bd164ab0a97dfbd5df46b3a964506842633459 :information : serial: SNS-WW-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-WW-0 : name: Wayne's World : title: Wayne's World @@ -9972,7 +11693,7 @@ cartridge sha256:215ab7e576b31462e3284d035006dc638cae06bbfb1af2c5617403b15ab2b25 :information : serial: SNS-AWRE-USA : board: SHVC-2A0N-11 - : revision: 1.0 + : revision: SNS-AWRE-0 : name: WCW Super Brawl Wrestling : title: WCW Super Brawl Wrestling @@ -9985,7 +11706,7 @@ cartridge sha256:e931c3c08f20f78e3a43ad92d16eb472be619abaa17c2d8e2b0fcd5d05dbd74 :information : serial: SNS-6D-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-6D-0 : name: We're Back! - A Dinosaur's Story : title: We're Back!: A Dinosaur's Story @@ -9998,7 +11719,7 @@ cartridge sha256:0b1ba31ae95b61d7d9a0f5509b5836fff84f60915802e3b3ba1170a5c50a4b7 :information : serial: SNS-AWDE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AWDE-0 : name: WeaponLord : title: WeaponLord @@ -10011,7 +11732,7 @@ cartridge sha256:12abf1ba063c120c1a98495a1c85e67a0007aff771ef92adcb94b4a0a2fd5ad :information : serial: SNS-WL-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-WL-0 : name: Wheel of Fortune : title: Wheel of Fortune @@ -10024,7 +11745,7 @@ cartridge sha256:c7af9e7f3243ba1b5dd81f32f710e60c2ae1d443ecaf7140bf42d71a1b69d8a :information : serial: SNS-XF-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-XF-0 : name: Wheel of Fortune - Deluxe Edition : title: Wheel of Fortune: Deluxe Edition @@ -10037,7 +11758,7 @@ cartridge sha256:1bd3af0125743bf9bbbac6e7dc215fe32c4ff7043a2ee034d56b627e3f6875f :information : serial: SNS-WX-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-WX-0 : name: Where in the World is Carmen Sandiego : title: Where in the World is Carmen Sandiego? @@ -10050,7 +11771,7 @@ cartridge sha256:e3177f066bf004fd99aef31f2692ba0b412dd280d613dc3f4cf334d97f4c9af :information : serial: SNS-WN-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-WN-0 : name: Where in Time is Carmen Sandiego : title: Where in Time is Carmen Sandiego? @@ -10063,7 +11784,7 @@ cartridge sha256:0a52dc1e7820f5541f53ce0e1e96144fe079af0efe3dae5c2c89d86365feb8b :information : serial: SNS-AZWE-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-AZWE-0 : name: Whizz : title: Whizz @@ -10076,7 +11797,7 @@ cartridge sha256:c8f159e2625ac8078535c06857ea28475706da45df494de8e46f50888272cf7 :information : serial: SNS-4W-USA : board: SHVC-1A0N-30 - : revision: 1.0 + : revision: SNS-4W-0 : name: Wild Guns : title: Wild Guns @@ -10089,7 +11810,7 @@ cartridge sha256:39bb99eddb224de5f0789f807ffef06b9efa2efb7962dced31fb272f986699c :information : serial: SNS-AWSE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AWSE-0 : name: Wild Snake : title: Wild Snake @@ -10102,7 +11823,7 @@ cartridge sha256:60d01a3f499463156546ecdee18ee3e946b95302ee0b1569decb97f52372d2e :information : serial: SNS-AW8E-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-AW8E-0 : name: Williams Arcade's Greatest Hits : title: Williams Arcade's Greatest Hits @@ -10115,7 +11836,7 @@ cartridge sha256:2167fc7c5447b2287668d2f3e4ef1a285361b2292ecc8a4cbd9f966a460ad7a :information : serial: SNS-WC-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-WC-0 : name: Wing Commander : title: Wing Commander @@ -10128,7 +11849,7 @@ cartridge sha256:132ca0b6a4888edf7de785d48f4417fac28522646e6c7514f80c5e9ff1438d5 :information : serial: SNS-2W-USA : board: SHVC-YA0N-01 - : revision: 1.0 + : revision: SNS-2W-0 : name: Wing Commander - The Secret Missions : title: Wing Commander: The Secret Missions @@ -10141,7 +11862,7 @@ cartridge sha256:c3bcd5c716f96e6359ebcfd85c3e9b07b46c5124bf4010d89ceef5b6f2f868f :information : serial: SNS-WG-USA : board: SHVC-1A0N-02 - : revision: 1.0 + : revision: SNS-WG-0 : name: Wings 2 - Aces High : title: Wings 2: Aces High @@ -10154,7 +11875,7 @@ cartridge sha256:0e834647669783c2b79cc1120c057c870c541079a7abd1eee3f787d59dc3c3e :information : serial: SNS-W4-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-W4-0 : name: Winter Olympic Games - Lillehammer '94 : title: Winter Olympic Games: Lillehammer '94 @@ -10167,7 +11888,7 @@ cartridge sha256:025dd3047c474d879e69b91a3918add9cdabedf4182e1c1e10e5f0c13a124bf :information : serial: SNS-W6-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-W6-0 : name: Wizard of Oz, The : title: The Wizard of Oz @@ -10181,7 +11902,7 @@ cartridge sha256:bc68f40075f9983f5027fe264c3037d1a831e8e76a6c9adb60d10226f6ef005 :information : serial: SNS-W5-USA : board: SHVC-1A3M-20 - : revision: 1.0 + : revision: SNS-W5-0 : name: Wizardry V - Heart of the Maelstrom : title: Wizardry V: Heart of the Maelstrom @@ -10194,7 +11915,7 @@ cartridge sha256:e0165bafeb8d65be08a5a4079f8651104471f450c60794b761b1255853ca2d9 :information : serial: SNS-WH-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-WH-0 : name: Wolf Child : title: Wolf Child @@ -10207,7 +11928,7 @@ cartridge sha256:9c2b458e8fda5cb437a4c6d28fb430e45c4cfef98420c40546b8e08563a4fc7 :information : serial: SNS-6W-USA : board: SHVC-1J0N-10 - : revision: 1.0 + : revision: SNS-6W-0 : name: Wolfenstein 3D : title: Wolfenstein 3D @@ -10220,7 +11941,7 @@ cartridge sha256:44428a3d1c796fbd41da7620e321c45f11cd80a0e5f4ab8c48177106cb960d7 :information : serial: SNS-AWXE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AWXE-0 : name: Wolverine - Adamantium Rage : title: Wolverine: Adamantium Rage @@ -10233,7 +11954,7 @@ cartridge sha256:82e2b636e66c4edbae27a5be91a61194ef2881ec93f40d1de93a6153617b12f :information : serial: SNS-WT-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-WT-0 : name: Wordtris : title: Wordtris @@ -10248,7 +11969,7 @@ cartridge sha256:86e9d76a8834732e511253d8092727bdbfb409b3d0ff1c06b6b6e481c9a039e :information : serial: SNS-U4-USA : board: SHVC-2J3M-11 - : revision: 1.0 + : revision: SNS-U4-0 : name: World Cup USA '94 : title: World Cup USA '94 @@ -10261,7 +11982,7 @@ cartridge sha256:ea76cfdbb2a555a7b6eff8b466a879f9a9189639416e8c2fb45bf074e695105 :information : serial: SNS-WZ-USA : board: SHVC-2J0N-10 - : revision: 1.0 + : revision: SNS-WZ-0 : name: World Heroes : title: World Heroes @@ -10274,7 +11995,7 @@ cartridge sha256:159d5341d13d6801324e8271f7191c0223617c9d30984676319b2df7937c78c :information : serial: SNS-JI-USA : board: SHVC-BA0N-01 - : revision: 1.0 + : revision: SNS-JI-0 : name: World Heroes 2 : title: World Heroes 2 @@ -10288,7 +12009,7 @@ cartridge sha256:d4d9f1b41dad7e7a126a9adbe8d86c4b339e120c866156796de1cb0c9a21418 :information : serial: SNS-WS-USA : board: SHVC-1A1B-05 - : revision: 1.0 + : revision: SNS-WS-0 : name: World League Soccer : title: World League Soccer @@ -10301,7 +12022,7 @@ cartridge sha256:2143bbd87ea1c5cfe5eaf46ae39e3ebb11a2e929d05cbb929904037f4d72acf :information : serial: SNS-WO-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-WO-0 : name: World Soccer '94 - Road to Glory : title: World Soccer '94: Road to Glory @@ -10314,7 +12035,7 @@ cartridge sha256:0af7b0d3022acd24a1fb15865a076519f7f56e7a4b33f12b6d851b3a91e5388 :information : serial: SNS-AWFE-USA : board: SHVC-BJ0N-01 - : revision: 1.0 + : revision: SNS-AWFE-0 : name: WWF Raw : title: WWF Raw @@ -10327,7 +12048,7 @@ cartridge sha256:51c53e36ed0b959b0695fc6ef036fa7302d1c995eca35c28261d6f3cb77df0c :information : serial: SNS-WU-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-WU-0 : name: WWF Royal Rumble : title: WWF Royal Rumble @@ -10340,7 +12061,7 @@ cartridge sha256:0b9abf2fc25a5f07c71f9d8efbb0d0e616c1494060138fbb63f7398e9c26198 :information : serial: SNS-WF-USA : board: MAXI-1A0N-30 - : revision: 1.0 + : revision: SNS-WF-0 : name: WWF Super Wrestlemania : title: WWF Super Wrestlemania @@ -10353,7 +12074,7 @@ cartridge sha256:67faa6ed3406a5ab0d7224b811c0960bb36560040ee959bb3304c9293ceaa09 :information : serial: SNS-AWVE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AWVE-0 : name: WWF Wrestlemania - The Arcade Game : title: WWF Wrestlemania: The Arcade Game @@ -10366,7 +12087,7 @@ cartridge sha256:dc3792e9fe7ef7aaea4ac675a48ad06129dd3ebdd4b96a513bc8241549cbd57 :information : serial: SNS-X7-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-X7-0 : name: X-Kaliber 2097 : title: X-Kaliber 2097 @@ -10379,7 +12100,7 @@ cartridge sha256:65fe17fd6b297f52df6ce9812ecb02c3bb1bfda3ebc05a19c4a8decbf9a446a :information : serial: SNS-AXME-USA : board: MAXI-1J0N-20 - : revision: 1.0 + : revision: SNS-AXME-0 : name: X-Men - Mutant Apocalypse : title: X-Men: Mutant Apocalypse @@ -10392,7 +12113,7 @@ cartridge sha256:93272180090e8418582f69b79c5cee6b28638b9a93192cc4bcd96291a4fca02 :information : serial: SNS-XZ-USA : board: SHVC-1A0N-10 - : revision: 1.0 + : revision: SNS-XZ-0 : name: X-Zone : title: X-Zone @@ -10406,7 +12127,7 @@ cartridge sha256:71b69490c78d0bbaf47da25217c5dae295190311aa5df75653c3fac0a1b4535 :information : serial: SNS-XA-USA : board: SHVC-1A3B-12 - : revision: 1.0 + : revision: SNS-XA-0 : name: Xardion : title: Xardion @@ -10419,7 +12140,7 @@ cartridge sha256:90ad69a489194aca7ef7b7fd1d30e0105da4934a81ac8b0333ea20f9248df92 :information : serial: SNS-YC-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-YC-0 : name: Yoshi's Cookie : title: Yoshi's Cookie @@ -10432,7 +12153,7 @@ cartridge sha256:12fba2aff04c8e39968e828629ebd16caa314bca397a9418d35fdaffe8188e2 :information : serial: SNS-RH-USA : board: SHVC-YA0N-01 - : revision: 1.0 + : revision: SNS-RH-0 : name: Yoshi's Safari : title: Yoshi's Safari @@ -10445,7 +12166,7 @@ cartridge sha256:fbe8926fc0149d3e8e2aec20f15640ea6814f4f4b01c3960f3c477f5f17e890 :information : serial: SNS-Y6-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-Y6-0 : name: Young Merlin : title: Young Merlin @@ -10458,7 +12179,7 @@ cartridge sha256:7d414b7f5941f1eddc35259a22accbbbd7b47c517dfcf8bad86c4dcfa9e50b1 :information : serial: SNS-AZKE-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-AZKE-0 : name: Zero the Kamikaze Squirrel : title: Zero the Kamikaze Squirrel @@ -10471,7 +12192,7 @@ cartridge sha256:b27e2e957fa760f4f483e2af30e03062034a6c0066984f2e284cc2cb430b205 :information : serial: SNS-ZA-USA : board: SHVC-YA0N-01 - : revision: 1.0 + : revision: SNS-ZA-0 : name: Zombies Ate My Neighbors : title: Zombies Ate My Neighbors @@ -10484,7 +12205,7 @@ cartridge sha256:25414de02c6805ca62574cfb39c23bf292b3d8c4ff33eb8f212ccdbcd61c5ae :information : serial: SNS-Z8-USA : board: SHVC-1A0N-20 - : revision: 1.0 + : revision: SNS-Z8-0 : name: Zool - Ninja of the 'Nth' Dimension : title: Zool: Ninja of the "Nth" Dimension @@ -10497,7 +12218,7 @@ cartridge sha256:a3f1abf2740ff64042d82f7a940fb4269ece57d7c6967571549d8b60b20f305 :information : serial: SNS-AZPE-USA : board: SHVC-1J0N-20 - : revision: 1.0 + : revision: SNS-AZPE-0 : name: Zoop : title: Zoop diff --git a/nall/any.hpp b/nall/any.hpp index 239e1002..d7e789a9 100644 --- a/nall/any.hpp +++ b/nall/any.hpp @@ -39,7 +39,7 @@ struct any { } template auto operator=(const T& value) -> any& { - using auto_t = type_if, typename remove_extent::type>::type*, T>; + using auto_t = typename conditional::value, typename remove_extent::type>::type*, T>::type; if(type() == typeid(auto_t)) { static_cast*>(container)->value = (auto_t)value; diff --git a/nall/arithmetic.hpp b/nall/arithmetic.hpp new file mode 100644 index 00000000..180dac03 --- /dev/null +++ b/nall/arithmetic.hpp @@ -0,0 +1,69 @@ +#pragma once + +//multi-precision arithmetic +//warning: each size is quadratically more expensive than the size before it! + +#include +#include +#include +#include + +#include + +#if !defined(__SIZEOF_INT128__) +#define PairBits 128 +#define TypeBits 64 +#define HalfBits 32 +#include +#undef PairBits +#undef TypeBits +#undef HalfBits +#endif + +#define PairBits 256 +#define TypeBits 128 +#define HalfBits 64 +#include +#undef PairBits +#undef TypeBits +#undef HalfBits + +#define PairBits 512 +#define TypeBits 256 +#define HalfBits 128 +#include +#undef PairBits +#undef TypeBits +#undef HalfBits + +#define PairBits 1024 +#define TypeBits 512 +#define HalfBits 256 +#include +#undef PairBits +#undef TypeBits +#undef HalfBits + +#define PairBits 2048 +#define TypeBits 1024 +#define HalfBits 512 +#include +#undef PairBits +#undef TypeBits +#undef HalfBits + +#define PairBits 4096 +#define TypeBits 2048 +#define HalfBits 1024 +#include +#undef PairBits +#undef TypeBits +#undef HalfBits + +#define PairBits 8192 +#define TypeBits 4096 +#define HalfBits 2048 +#include +#undef PairBits +#undef TypeBits +#undef HalfBits diff --git a/nall/arithmetic/barrett.hpp b/nall/arithmetic/barrett.hpp new file mode 100644 index 00000000..533840d7 --- /dev/null +++ b/nall/arithmetic/barrett.hpp @@ -0,0 +1,21 @@ +#pragma once + +namespace nall { + +struct BarrettReduction { + BarrettReduction(uint256_t modulo) : modulo(modulo), factor((1_u1024 << 512) / modulo) {} + + //return = value % modulo + inline auto operator()(uint512_t value) const -> uint256_t { + uint512_t hi, lo; + nall::mul(value, factor, hi, lo); + uint512_t remainder = value - hi * modulo; + return remainder < modulo ? remainder : remainder - modulo; + } + +private: + const uint512_t modulo; + const uint512_t factor; +}; + +} diff --git a/nall/arithmetic/natural.hpp b/nall/arithmetic/natural.hpp new file mode 100644 index 00000000..8660a8fe --- /dev/null +++ b/nall/arithmetic/natural.hpp @@ -0,0 +1,353 @@ +#define ConcatenateType(Size) uint##Size##_t +#define DeclareType(Size) ConcatenateType(Size) + +#define Pair DeclareType(PairBits) +#define Type DeclareType(TypeBits) +#define Half DeclareType(HalfBits) + +//pick the larger of two types to prevent unnecessary data clamping +#define Cast (typename conditional= sizeof(T), Pair, T>::type) + +namespace nall { +//namespace Arithmetic { + +struct Pair { + Pair() = default; + explicit constexpr Pair(const Pair& source) : hi(source.hi), lo(source.lo) {} + template constexpr Pair(const Hi& hi, const Lo& lo) : hi(hi), lo(lo) {} + template Pair(const T& source) { _set(*this, source); } + + explicit operator bool() const { return hi | lo; } + template operator T() const { T value; _get(*this, value); return value; } + + auto operator~() const -> Pair { return {~hi, ~lo}; } + auto operator!() const -> bool { return !(hi || lo); } + + auto operator++() -> Pair& { lo++; hi += lo == 0; return *this; } + auto operator--() -> Pair& { hi -= lo == 0; lo--; } + + auto operator++(int) -> Pair { Pair r = *this; lo++; hi += lo == 0; return r; } + auto operator--(int) -> Pair { Pair r = *this; hi -= lo == 0; lo--; return r; } + + auto operator* (const Pair& rhs) const -> Pair { return mul(*this, rhs); } + auto operator/ (const Pair& rhs) const -> Pair { Pair q, r; div(*this, rhs, q, r); return q; } + auto operator% (const Pair& rhs) const -> Pair { Pair q, r; div(*this, rhs, q, r); return r; } + auto operator+ (const Pair& rhs) const -> Pair { return {hi + rhs.hi + (lo + rhs.lo < lo), lo + rhs.lo}; } + auto operator- (const Pair& rhs) const -> Pair { return {hi - rhs.hi - (lo - rhs.lo > lo), lo - rhs.lo}; } + auto operator<<(const Pair& rhs) const -> Pair { return shl(*this, rhs); } + auto operator>>(const Pair& rhs) const -> Pair { return shr(*this, rhs); } + auto operator& (const Pair& rhs) const -> Pair { return {hi & rhs.hi, lo & rhs.lo}; } + auto operator| (const Pair& rhs) const -> Pair { return {hi | rhs.hi, lo | rhs.lo}; } + auto operator^ (const Pair& rhs) const -> Pair { return {hi ^ rhs.hi, lo ^ rhs.lo}; } + auto operator==(const Pair& rhs) const -> bool { return hi == rhs.hi && lo == rhs.lo; } + auto operator!=(const Pair& rhs) const -> bool { return hi != rhs.hi || lo != rhs.lo; } + auto operator>=(const Pair& rhs) const -> bool { return hi > rhs.hi || (hi == rhs.hi && lo >= rhs.lo); } + auto operator<=(const Pair& rhs) const -> bool { return hi < rhs.hi || (hi == rhs.hi && lo <= rhs.lo); } + auto operator> (const Pair& rhs) const -> bool { return hi > rhs.hi || (hi == rhs.hi && lo > rhs.lo); } + auto operator< (const Pair& rhs) const -> bool { return hi < rhs.hi || (hi == rhs.hi && lo < rhs.lo); } + + template auto& operator*= (const T& rhs) { return *this = *this * Pair(rhs); } + template auto& operator/= (const T& rhs) { return *this = *this / Pair(rhs); } + template auto& operator%= (const T& rhs) { return *this = *this % Pair(rhs); } + template auto& operator+= (const T& rhs) { return *this = *this + Pair(rhs); } + template auto& operator-= (const T& rhs) { return *this = *this - Pair(rhs); } + template auto& operator<<=(const T& rhs) { return *this = *this << Pair(rhs); } + template auto& operator>>=(const T& rhs) { return *this = *this >> Pair(rhs); } + template auto& operator&= (const T& rhs) { return *this = *this & Pair(rhs); } + template auto& operator|= (const T& rhs) { return *this = *this | Pair(rhs); } + template auto& operator^= (const T& rhs) { return *this = *this ^ Pair(rhs); } + + template auto operator* (const T& rhs) const { return Cast(*this) * Cast(rhs); } + template auto operator/ (const T& rhs) const { return Cast(*this) / Cast(rhs); } + template auto operator% (const T& rhs) const { return Cast(*this) % Cast(rhs); } + template auto operator+ (const T& rhs) const { return Cast(*this) + Cast(rhs); } + template auto operator- (const T& rhs) const { return Cast(*this) - Cast(rhs); } + template auto operator<<(const T& rhs) const { return Cast(*this) << Cast(rhs); } + template auto operator>>(const T& rhs) const { return Cast(*this) >> Cast(rhs); } + template auto operator& (const T& rhs) const { return Cast(*this) & Cast(rhs); } + template auto operator| (const T& rhs) const { return Cast(*this) | Cast(rhs); } + template auto operator^ (const T& rhs) const { return Cast(*this) ^ Cast(rhs); } + + template auto operator==(const T& rhs) const -> bool { return Cast(*this) == Cast(rhs); } + template auto operator!=(const T& rhs) const -> bool { return Cast(*this) != Cast(rhs); } + template auto operator>=(const T& rhs) const -> bool { return Cast(*this) >= Cast(rhs); } + template auto operator<=(const T& rhs) const -> bool { return Cast(*this) <= Cast(rhs); } + template auto operator> (const T& rhs) const -> bool { return Cast(*this) > Cast(rhs); } + template auto operator< (const T& rhs) const -> bool { return Cast(*this) < Cast(rhs); } + + explicit Pair(const vector& value) : hi(0), lo(0) { + for(auto n : rrange(value)) { + operator<<=(8); + operator|=(value[n]); + } + } + +private: + Type lo; + Type hi; + + friend auto upper(const Pair&) -> Type; + friend auto lower(const Pair&) -> Type; + friend auto bits(Pair) -> uint; + friend auto square(const Pair&) -> Pair; + friend auto square(const Pair&, Pair&, Pair&) -> void; + friend auto mul(const Pair&, const Pair&) -> Pair; + friend auto mul(const Pair&, const Pair&, Pair&, Pair&) -> void; + friend auto div(const Pair&, const Pair&, Pair&, Pair&) -> void; + template friend auto shl(const Pair&, const T&) -> Pair; + template friend auto shr(const Pair&, const T&) -> Pair; +}; + +#define ConcatenateUDL(Size) _u##Size +#define DeclareUDL(Size) ConcatenateUDL(Size) + +alwaysinline auto operator"" DeclareUDL(PairBits)(const char* s) -> Pair { + Pair p = 0; + if(s[0] == '0' && (s[1] == 'x' || s[1] == 'X')) { + s += 2; + while(*s) { + auto c = *s++; + if(c == '\''); + else if(c >= '0' && c <= '9') p = (p << 4) + (c - '0'); + else if(c >= 'a' && c <= 'f') p = (p << 4) + (c - 'a' + 10); + else if(c >= 'A' && c <= 'F') p = (p << 4) + (c - 'A' + 10); + else break; + } + } else { + while(*s) { + auto c = *s++; + if(c == '\''); + else if(c >= '0' && c <= '9') p = (p << 3) + (p << 1) + (c - '0'); + else break; + } + } + return p; +} + +#undef ConcatenateUDL +#undef DeclareUDL + +template alwaysinline auto _set(Pair& lhs, const T& rhs) -> enable_if_t<(sizeof(Pair) == sizeof(T))> { + lhs = rhs; +} + +template alwaysinline auto _set(Pair& lhs, const T& rhs) -> enable_if_t<(sizeof(Pair) > sizeof(T))> { + lhs = {0, rhs}; +} + +template alwaysinline auto _set(Pair& lhs, const T& rhs) -> enable_if_t<(sizeof(Pair) < sizeof(T))> { + lhs = {lower(rhs) >> TypeBits, lower(rhs)}; +} + +template alwaysinline auto _get(const Pair& lhs, T& rhs) -> enable_if_t<(sizeof(T) == sizeof(Pair))> { + rhs = lhs; +} + +template alwaysinline auto _get(const Pair& lhs, T& rhs) -> enable_if_t<(sizeof(T) > sizeof(Pair))> { + rhs = {0, lhs}; +} + +template alwaysinline auto _get(const Pair& lhs, T& rhs) -> enable_if_t<(sizeof(T) < sizeof(Pair))> { + rhs = lower(lhs); +} + +alwaysinline auto upper(const Pair& value) -> Type { return value.hi; } +alwaysinline auto lower(const Pair& value) -> Type { return value.lo; } + +alwaysinline auto bits(Pair value) -> uint { + if(value.hi) { + uint bits = TypeBits; + while(value.hi) value.hi >>= 1, bits++; + return bits; + } else { + uint bits = 0; + while(value.lo) value.lo >>= 1, bits++; + return bits; + } +} + +//Bits * Bits => Bits +inline auto square(const Pair& lhs) -> Pair { + static const Type Mask = (Type(0) - 1) >> HalfBits; + Type a = lhs.hi >> HalfBits, b = lhs.hi & Mask, c = lhs.lo >> HalfBits, d = lhs.lo & Mask; + Type dd = square(d), dc = d * c, db = d * b, da = d * a; + Type cc = square(c), cb = c * b; + + Pair r0 = Pair(dd); + Pair r1 = Pair(dc) + Pair(dc) + Pair(r0 >> HalfBits); + Pair r2 = Pair(db) + Pair(cc) + Pair(db) + Pair(r1 >> HalfBits); + Pair r3 = Pair(da) + Pair(cb) + Pair(cb) + Pair(da) + Pair(r2 >> HalfBits); + + return {(r3.lo & Mask) << HalfBits | (r2.lo & Mask), (r1.lo & Mask) << HalfBits | (r0.lo & Mask)}; +} + +//Bits * Bits => 2 * Bits +inline auto square(const Pair& lhs, Pair& hi, Pair& lo) -> void { + static const Type Mask = (Type(0) - 1) >> HalfBits; + Type a = lhs.hi >> HalfBits, b = lhs.hi & Mask, c = lhs.lo >> HalfBits, d = lhs.lo & Mask; + Type dd = square(d), dc = d * c, db = d * b, da = d * a; + Type cc = square(c), cb = c * b, ca = c * a; + Type bb = square(b), ba = b * a; + Type aa = square(a); + + Pair r0 = Pair(dd); + Pair r1 = Pair(dc) + Pair(dc) + Pair(r0 >> HalfBits); + Pair r2 = Pair(db) + Pair(cc) + Pair(db) + Pair(r1 >> HalfBits); + Pair r3 = Pair(da) + Pair(cb) + Pair(cb) + Pair(da) + Pair(r2 >> HalfBits); + Pair r4 = Pair(ca) + Pair(bb) + Pair(ca) + Pair(r3 >> HalfBits); + Pair r5 = Pair(ba) + Pair(ba) + Pair(r4 >> HalfBits); + Pair r6 = Pair(aa) + Pair(r5 >> HalfBits); + Pair r7 = Pair(r6 >> HalfBits); + + hi = {(r7.lo & Mask) << HalfBits | (r6.lo & Mask), (r5.lo & Mask) << HalfBits | (r4.lo & Mask)}; + lo = {(r3.lo & Mask) << HalfBits | (r2.lo & Mask), (r1.lo & Mask) << HalfBits | (r0.lo & Mask)}; +} + +//Bits * Bits => Bits +alwaysinline auto mul(const Pair& lhs, const Pair& rhs) -> Pair { + static const Type Mask = (Type(0) - 1) >> HalfBits; + Type a = lhs.hi >> HalfBits, b = lhs.hi & Mask, c = lhs.lo >> HalfBits, d = lhs.lo & Mask; + Type e = rhs.hi >> HalfBits, f = rhs.hi & Mask, g = rhs.lo >> HalfBits, h = rhs.lo & Mask; + + Pair r0 = Pair(d * h); + Pair r1 = Pair(c * h) + Pair(d * g) + Pair(r0 >> HalfBits); + Pair r2 = Pair(b * h) + Pair(c * g) + Pair(d * f) + Pair(r1 >> HalfBits); + Pair r3 = Pair(a * h) + Pair(b * g) + Pair(c * f) + Pair(d * e) + Pair(r2 >> HalfBits); + + return {(r3.lo & Mask) << HalfBits | (r2.lo & Mask), (r1.lo & Mask) << HalfBits | (r0.lo & Mask)}; +} + +//Bits * Bits => 2 * Bits +alwaysinline auto mul(const Pair& lhs, const Pair& rhs, Pair& hi, Pair& lo) -> void { + static const Type Mask = (Type(0) - 1) >> HalfBits; + Type a = lhs.hi >> HalfBits, b = lhs.hi & Mask, c = lhs.lo >> HalfBits, d = lhs.lo & Mask; + Type e = rhs.hi >> HalfBits, f = rhs.hi & Mask, g = rhs.lo >> HalfBits, h = rhs.lo & Mask; + + Pair r0 = Pair(d * h); + Pair r1 = Pair(c * h) + Pair(d * g) + Pair(r0 >> HalfBits); + Pair r2 = Pair(b * h) + Pair(c * g) + Pair(d * f) + Pair(r1 >> HalfBits); + Pair r3 = Pair(a * h) + Pair(b * g) + Pair(c * f) + Pair(d * e) + Pair(r2 >> HalfBits); + Pair r4 = Pair(a * g) + Pair(b * f) + Pair(c * e) + Pair(r3 >> HalfBits); + Pair r5 = Pair(a * f) + Pair(b * e) + Pair(r4 >> HalfBits); + Pair r6 = Pair(a * e) + Pair(r5 >> HalfBits); + Pair r7 = Pair(r6 >> HalfBits); + + hi = {(r7.lo & Mask) << HalfBits | (r6.lo & Mask), (r5.lo & Mask) << HalfBits | (r4.lo & Mask)}; + lo = {(r3.lo & Mask) << HalfBits | (r2.lo & Mask), (r1.lo & Mask) << HalfBits | (r0.lo & Mask)}; +} + +alwaysinline auto div(const Pair& lhs, const Pair& rhs, Pair& quotient, Pair& remainder) -> void { + if(!rhs) throw std::runtime_error("division by zero"); + quotient = 0, remainder = lhs; + if(!lhs || lhs < rhs) return; + + auto count = bits(lhs) - bits(rhs); + Pair x = rhs << count; + Pair y = Pair(1) << count; + if(x > remainder) x >>= 1, y >>= 1; + while(remainder >= rhs) { + if(remainder >= x) remainder -= x, quotient |= y; + x >>= 1, y >>= 1; + } +} + +template alwaysinline auto shl(const Pair& lhs, const T& rhs) -> Pair { + if(!rhs) return lhs; + auto shift = (uint)rhs; + if(shift < TypeBits) { + return {lhs.hi << shift | lhs.lo >> (TypeBits - shift), lhs.lo << shift}; + } else { + return {lhs.lo << (shift - TypeBits), 0}; + } +} + +template alwaysinline auto shr(const Pair& lhs, const T& rhs) -> Pair { + if(!rhs) return lhs; + auto shift = (uint)rhs; + if(shift < TypeBits) { + return {lhs.hi >> shift, lhs.hi << (TypeBits - shift) | lhs.lo >> shift}; + } else { + return {0, lhs.hi >> (shift - TypeBits)}; + } +} + +template alwaysinline auto rol(const Pair& lhs, const T& rhs) -> Pair { + return lhs << rhs | lhs >> (PairBits - rhs); +} + +template alwaysinline auto ror(const Pair& lhs, const T& rhs) -> Pair { + return lhs >> rhs | lhs << (PairBits - rhs); +} + +#define EI enable_if_t::value> + +template auto& operator*= (T& lhs, const Pair& rhs) { return lhs = lhs * T(rhs); } +template auto& operator/= (T& lhs, const Pair& rhs) { return lhs = lhs / T(rhs); } +template auto& operator%= (T& lhs, const Pair& rhs) { return lhs = lhs % T(rhs); } +template auto& operator+= (T& lhs, const Pair& rhs) { return lhs = lhs + T(rhs); } +template auto& operator-= (T& lhs, const Pair& rhs) { return lhs = lhs - T(rhs); } +template auto& operator<<=(T& lhs, const Pair& rhs) { return lhs = lhs << T(rhs); } +template auto& operator>>=(T& lhs, const Pair& rhs) { return lhs = lhs >> T(rhs); } +template auto& operator&= (T& lhs, const Pair& rhs) { return lhs = lhs & T(rhs); } +template auto& operator|= (T& lhs, const Pair& rhs) { return lhs = lhs | T(rhs); } +template auto& operator^= (T& lhs, const Pair& rhs) { return lhs = lhs ^ T(rhs); } + +template auto operator* (const T& lhs, const Pair& rhs) { return Cast(lhs) * Cast(rhs); } +template auto operator/ (const T& lhs, const Pair& rhs) { return Cast(lhs) / Cast(rhs); } +template auto operator% (const T& lhs, const Pair& rhs) { return Cast(lhs) % Cast(rhs); } +template auto operator+ (const T& lhs, const Pair& rhs) { return Cast(lhs) + Cast(rhs); } +template auto operator- (const T& lhs, const Pair& rhs) { return Cast(lhs) - Cast(rhs); } +template auto operator<<(const T& lhs, const Pair& rhs) { return Cast(lhs) << Cast(rhs); } +template auto operator>>(const T& lhs, const Pair& rhs) { return Cast(lhs) >> Cast(rhs); } +template auto operator& (const T& lhs, const Pair& rhs) { return Cast(lhs) & Cast(rhs); } +template auto operator| (const T& lhs, const Pair& rhs) { return Cast(lhs) | Cast(rhs); } +template auto operator^ (const T& lhs, const Pair& rhs) { return Cast(lhs) ^ Cast(rhs); } + +template auto operator==(const T& lhs, const Pair& rhs) { return Cast(lhs) == Cast(rhs); } +template auto operator!=(const T& lhs, const Pair& rhs) { return Cast(lhs) != Cast(rhs); } +template auto operator>=(const T& lhs, const Pair& rhs) { return Cast(lhs) >= Cast(rhs); } +template auto operator<=(const T& lhs, const Pair& rhs) { return Cast(lhs) <= Cast(rhs); } +template auto operator> (const T& lhs, const Pair& rhs) { return Cast(lhs) > Cast(rhs); } +template auto operator< (const T& lhs, const Pair& rhs) { return Cast(lhs) < Cast(rhs); } + +#undef EI + +template<> struct stringify { + stringify(Pair source) { + char _output[1 + sizeof(Pair) * 3]; + auto p = (char*)&_output; + do { + Pair quotient, remainder; + div(source, 10, quotient, remainder); + *p++ = '0' + remainder; + source = quotient; + } while(source); + _size = p - _output; + *p = 0; + for(int x = _size - 1, y = 0; x >= 0 && y < _size; x--, y++) _data[x] = _output[y]; + } + + auto data() const -> const char* { return _data; } + auto size() const -> uint { return _size; } + char _data[1 + sizeof(Pair) * 3]; + uint _size; +}; + +inline auto to_vector(Pair value) -> vector { + vector result; + result.resize(PairBits / 8); + for(auto& byte : result) { + byte = value; + value >>= 8; + } + return result; +} + +} + +#undef ConcatenateType +#undef DeclareType +#undef Pair +#undef Type +#undef Half +#undef Cast diff --git a/nall/arithmetic/unsigned.hpp b/nall/arithmetic/unsigned.hpp new file mode 100644 index 00000000..0c8b9c46 --- /dev/null +++ b/nall/arithmetic/unsigned.hpp @@ -0,0 +1,39 @@ +#pragma once + +namespace nall { + +template::value>> alwaysinline auto upper(T value) -> T { + return value >> sizeof(T) * 4; +} + +template::value>> alwaysinline auto lower(T value) -> T { + static const T Mask = T(0) - 1 >> sizeof(T) * 4; + return value & Mask; +} + +alwaysinline auto square(uintmax value) -> uintmax { + return value * value; +} + +template alwaysinline auto rol(const T& lhs, const U& rhs, enable_if_t::value>* = 0) -> T { + return lhs << rhs | lhs >> (sizeof(T) * 8 - rhs); +} + +template alwaysinline auto ror(const T& lhs, const U& rhs, enable_if_t::value>* = 0) -> T { + return lhs >> rhs | lhs << (sizeof(T) * 8 - rhs); +} + +#if INTMAX_BITS >= 128 +inline auto operator"" _u128(const char* s) -> uint128_t { + uint128_t p = 0; + while(*s) { + auto c = *s++; + if(c == '\'') continue; + if(c < '0' || c > '9') break; + p = (p << 3) + (p << 1) + (c - '0'); + } + return p; +} +#endif + +} diff --git a/nall/beat/archive.hpp b/nall/beat/archive.hpp index 1209d032..3e940375 100644 --- a/nall/beat/archive.hpp +++ b/nall/beat/archive.hpp @@ -42,14 +42,14 @@ auto Archive::create(const string& beatname, const string& pathname, const strin auto size = input.size(); beat.writevu(size); while(size--) beat.write(input.read()); - beat.writel(input.checksum.value(), 4); + beat.writel(input.checksum.digest().hex(), 4); } else { beat.writevu(0); beat.writel(0x00000000, 4); } } - beat.writel(beat.checksum.value(), 4); + beat.writel(beat.checksum.digest().hex(), 4); return true; } @@ -82,11 +82,11 @@ auto Archive::unpack(const string& beatname, const string& pathname) -> bool { auto size = beat.readvu(); while(size--) output.write(beat.read()); - if(beat.readl(4) != output.checksum.value()) return false; + if(beat.readl(4) != output.checksum.digest().hex()) return false; } } - uint32_t checksum = beat.checksum.value(); + uint32_t checksum = beat.checksum.digest().hex(); return beat.readl(4) == checksum; } @@ -113,7 +113,7 @@ auto Archive::extract(const string& beatname, const string& filename) -> vector< result.resize(size); beat.checksum.reset(); for(auto n : range(size)) result[n] = beat.read(); - uint32_t checksum = beat.checksum.value(); + uint32_t checksum = beat.checksum.digest().hex(); if(beat.readl(4) != checksum) return {}; return result; } diff --git a/nall/beat/delta.hpp b/nall/beat/delta.hpp index b9114b51..1edcccb5 100644 --- a/nall/beat/delta.hpp +++ b/nall/beat/delta.hpp @@ -67,7 +67,7 @@ auto bpsdelta::create(const string& filename, const string& metadata) -> bool { auto write = [&](uint8_t data) { modifyFile.write(data); - modifyChecksum.data(data); + modifyChecksum.input(data); }; auto encode = [&](uint64_t data) { @@ -102,7 +102,7 @@ auto bpsdelta::create(const string& filename, const string& metadata) -> bool { //source tree creation for(uint offset = 0; offset < sourceSize; offset++) { uint16_t symbol = sourceData[offset + 0]; - sourceChecksum.data(symbol); + sourceChecksum.input(symbol); if(offset < sourceSize - 1) symbol |= sourceData[offset + 1] << 8; Node *node = new Node; node->offset = offset; @@ -198,10 +198,10 @@ auto bpsdelta::create(const string& filename, const string& metadata) -> bool { targetReadFlush(); - for(uint n = 0; n < 32; n += 8) write(sourceChecksum.value() >> n); - uint32_t targetChecksum = Hash::CRC32(targetData, targetSize).value(); + for(uint n = 0; n < 32; n += 8) write(sourceChecksum.digest().hex() >> n); + uint32_t targetChecksum = Hash::CRC32(targetData, targetSize).digest().hex(); for(uint n = 0; n < 32; n += 8) write(targetChecksum >> n); - uint32_t outputChecksum = modifyChecksum.value(); + uint32_t outputChecksum = modifyChecksum.digest().hex(); for(uint n = 0; n < 32; n += 8) write(outputChecksum >> n); modifyFile.close(); diff --git a/nall/beat/file.hpp b/nall/beat/file.hpp index f3f4f496..b42bb630 100644 --- a/nall/beat/file.hpp +++ b/nall/beat/file.hpp @@ -11,12 +11,12 @@ struct File : file { auto File::read() -> uint8_t { uint8_t data = file::read(); - checksum.data(data); + checksum.input(data); return data; } auto File::write(uint8_t data) -> void { - checksum.data(data); + checksum.input(data); return file::write(data); } diff --git a/nall/beat/linear.hpp b/nall/beat/linear.hpp index 94e19530..b1461c4d 100644 --- a/nall/beat/linear.hpp +++ b/nall/beat/linear.hpp @@ -59,7 +59,7 @@ auto bpslinear::create(const string& filename, const string& metadata) -> bool { auto write = [&](uint8_t data) { modifyFile.write(data); - modifyChecksum.data(data); + modifyChecksum.input(data); }; auto encode = [&](uint64_t data) { @@ -134,11 +134,11 @@ auto bpslinear::create(const string& filename, const string& metadata) -> bool { targetReadFlush(); - uint32_t sourceChecksum = Hash::CRC32(sourceData, sourceSize).value(); + uint32_t sourceChecksum = Hash::CRC32(sourceData, sourceSize).digest().hex(); for(uint n = 0; n < 32; n += 8) write(sourceChecksum >> n); - uint32_t targetChecksum = Hash::CRC32(targetData, targetSize).value(); + uint32_t targetChecksum = Hash::CRC32(targetData, targetSize).digest().hex(); for(uint n = 0; n < 32; n += 8) write(targetChecksum >> n); - uint32_t outputChecksum = modifyChecksum.value(); + uint32_t outputChecksum = modifyChecksum.digest().hex(); for(uint n = 0; n < 32; n += 8) write(outputChecksum >> n); modifyFile.close(); diff --git a/nall/beat/metadata.hpp b/nall/beat/metadata.hpp index 4336cde0..48d14cde 100644 --- a/nall/beat/metadata.hpp +++ b/nall/beat/metadata.hpp @@ -77,7 +77,7 @@ auto bpsmetadata::save(const string& filename, const string& metadata) -> bool { auto write = [&](uint8_t data) { targetFile.write(data); - checksum.data(data); + checksum.input(data); }; auto encode = [&](uint64_t data) { @@ -103,7 +103,7 @@ auto bpsmetadata::save(const string& filename, const string& metadata) -> bool { for(uint n = 0; n < targetLength; n++) write(metadata[n]); uint length = sourceFile.size() - sourceFile.offset() - 4; for(uint n = 0; n < length; n++) write(read()); - uint32_t outputChecksum = checksum.value(); + uint32_t outputChecksum = checksum.digest().hex(); for(uint n = 0; n < 32; n += 8) write(outputChecksum >> n); targetFile.close(); diff --git a/nall/beat/multi.hpp b/nall/beat/multi.hpp index 1f0b595c..86d694a4 100644 --- a/nall/beat/multi.hpp +++ b/nall/beat/multi.hpp @@ -48,14 +48,14 @@ struct bpsmulti { for(uint n = 0; n < sp.size(); n++) { uint8_t byte = sp.read(); if(identical && byte != dp.read()) identical = false; - cksum.data(byte); + cksum.input(byte); } if(identical) { writeNumber(MirrorFile | ((targetName.length() - 1) << 2)); writeString(targetName); writeNumber(OriginSource); - writeChecksum(cksum.value()); + writeChecksum(cksum.digest().hex()); } else { writeNumber(ModifyFile | ((targetName.length() - 1) << 2)); writeString(targetName); @@ -83,12 +83,12 @@ struct bpsmulti { auto buffer = file::read({targetPath, targetName}); writeNumber(buffer.size()); for(auto& byte : buffer) write(byte); - writeChecksum(Hash::CRC32(buffer.data(), buffer.size()).value()); + writeChecksum(Hash::CRC32(buffer.data(), buffer.size()).digest().hex()); } } //checksum - writeChecksum(checksum.value()); + writeChecksum(checksum.digest().hex()); fp.close(); return true; } @@ -141,7 +141,7 @@ struct bpsmulti { } } - uint32_t cksum = checksum.value(); + uint32_t cksum = checksum.digest().hex(); if(read() != (uint8_t)(cksum >> 0)) return false; if(read() != (uint8_t)(cksum >> 8)) return false; if(read() != (uint8_t)(cksum >> 16)) return false; @@ -171,7 +171,7 @@ protected: auto write(uint8_t data) -> void { fp.write(data); - checksum.data(data); + checksum.input(data); } auto writeNumber(uint64_t data) -> void { @@ -202,7 +202,7 @@ protected: //apply() functions auto read() -> uint8_t { uint8_t data = fp.read(); - checksum.data(data); + checksum.input(data); return data; } diff --git a/nall/beat/patch.hpp b/nall/beat/patch.hpp index ab502ea0..8b6279e0 100644 --- a/nall/beat/patch.hpp +++ b/nall/beat/patch.hpp @@ -132,7 +132,7 @@ auto bpspatch::apply() -> result { auto read = [&]() -> uint8_t { uint8_t data = modifyData[modifyOffset++]; - modifyChecksum.data(data); + modifyChecksum.input(data); return data; }; @@ -150,7 +150,7 @@ auto bpspatch::apply() -> result { auto write = [&](uint8_t data) { targetData[outputOffset++] = data; - targetChecksum.data(data); + targetChecksum.input(data); }; if(read() != 'B') return result::patch_invalid_header; @@ -199,13 +199,13 @@ auto bpspatch::apply() -> result { uint32_t modifySourceChecksum = 0, modifyTargetChecksum = 0, modifyModifyChecksum = 0; for(uint n = 0; n < 32; n += 8) modifySourceChecksum |= read() << n; for(uint n = 0; n < 32; n += 8) modifyTargetChecksum |= read() << n; - uint32_t checksum = modifyChecksum.value(); + uint32_t checksum = modifyChecksum.digest().hex(); for(uint n = 0; n < 32; n += 8) modifyModifyChecksum |= read() << n; - uint32_t sourceChecksum = Hash::CRC32(sourceData, modifySourceSize).value(); + uint32_t sourceChecksum = Hash::CRC32(sourceData, modifySourceSize).digest().hex(); if(sourceChecksum != modifySourceChecksum) return result::source_checksum_invalid; - if(targetChecksum.value() != modifyTargetChecksum) return result::target_checksum_invalid; + if(targetChecksum.digest().hex() != modifyTargetChecksum) return result::target_checksum_invalid; if(checksum != modifyModifyChecksum) return result::patch_checksum_invalid; return result::success; diff --git a/nall/certificates/byuu.crt b/nall/certificates/byuu.crt deleted file mode 100644 index d4c2ccbe..00000000 --- a/nall/certificates/byuu.crt +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIByTCCAU6gAwIBAgIJAMGBxB7ujnmaMAoGCCqGSM49BAMDMB4xDTALBgNVBAMM -BGJ5dXUxDTALBgNVBAoMBGJ5dXUwIBcNMTYwOTExMTM1MjE3WhgPMjA5MTA4MjQx -MzUyMTdaMB4xDTALBgNVBAMMBGJ5dXUxDTALBgNVBAoMBGJ5dXUwdjAQBgcqhkjO -PQIBBgUrgQQAIgNiAATgdIzJOkXMo3vfw+wshinYYt76IAox5sRcXYfbkTHZ5dGU -Sf/DlrCe/kTIhXe6mKUI6eUjPH7U5UruvHtwi6I7QILHoar1tp4rVGKp7mB3KuIS -qfuu90JhXMfUcwQp3WOjVjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYE -FKD7mEF6/bmtxOUSu05E0iYjRCrJMB8GA1UdIwQYMBaAFKD7mEF6/bmtxOUSu05E -0iYjRCrJMAoGCCqGSM49BAMDA2kAMGYCMQD3Nv8o4qbHOZUd8GUh4ye6Y08WkJ2w -8BZWTJFzAp+4nP9XZJeROQJd97+kQOCdLAICMQC2DtybVIQXaxefAaGi7IvtYcbL -fAWdtu5/dc7bzMpy9GicQkpw8uluxauX8gdnU/4= ------END CERTIFICATE----- diff --git a/nall/certificates/byuu.net.crt b/nall/certificates/byuu.net.crt deleted file mode 100644 index bbb72444..00000000 --- a/nall/certificates/byuu.net.crt +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIB6jCCAXCgAwIBAgIJAOrEeJHQ9mppMAoGCCqGSM49BAMDMB4xDTALBgNVBAMM -BGJ5dXUxDTALBgNVBAoMBGJ5dXUwIBcNMTYwOTExMTM1NDIwWhgPMjA5MTA4MjQx -MzU0MjBaMCIxETAPBgNVBAMMCGJ5dXUubmV0MQ0wCwYDVQQKDARieXV1MHYwEAYH -KoZIzj0CAQYFK4EEACIDYgAEL4l9yJtcslBRuaTr7wHJ/Wc7DIspKGv2S2+LYsxE -k3dZI902+J726IX2yiurWlLUEc3B+ooKs3VmhaW1QsStKdYVJVVGBD29zz3rvD/V -oeWjw63yZrSqNQ5S41qXNcMho3QwcjAMBgNVHRMBAf8EAjAAMCIGA1UdEQEB/wQY -MBaCCGJ5dXUubmV0ggoqLmJ5dXUubmV0MB0GA1UdDgQWBBTeXV7JKLjCikQbk+Um -ayFF8yRiSTAfBgNVHSMEGDAWgBSg+5hBev25rcTlErtORNImI0QqyTAKBggqhkjO -PQQDAwNoADBlAjEAgk0ud6h0OAfWNH6pSvMiyHAWQuh24cvkQY3mUNsZzAy36QEQ -X4UBWewxz1lyaFzLAjACXJZ1rZsMnGIgWXvFAsO2v53A612Ba3vH76naExASKbmx -VafrFb6bHXEc3aH/Xws= ------END CERTIFICATE----- diff --git a/nall/certificates/byuu.org.crt b/nall/certificates/byuu.org.crt deleted file mode 100644 index 629007c7..00000000 --- a/nall/certificates/byuu.org.crt +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIB6jCCAXCgAwIBAgIJAOrEeJHQ9mpoMAoGCCqGSM49BAMDMB4xDTALBgNVBAMM -BGJ5dXUxDTALBgNVBAoMBGJ5dXUwIBcNMTYwOTExMTM1MzU1WhgPMjA5MTA4MjQx -MzUzNTVaMCIxETAPBgNVBAMMCGJ5dXUub3JnMQ0wCwYDVQQKDARieXV1MHYwEAYH -KoZIzj0CAQYFK4EEACIDYgAEH+ny1an5De9P1TJ0vmpGlpmrZszuV1lKTPut28Vx -98ieuBdmSNG493sJ+ga+adXPtItkck5M0jITR1NxcWvVlZtJG8L6ctEuVF6smkoy -1dbxzEeTIs+xjRQqaLN4U67ho3QwcjAMBgNVHRMBAf8EAjAAMCIGA1UdEQEB/wQY -MBaCCGJ5dXUub3JnggoqLmJ5dXUub3JnMB0GA1UdDgQWBBRhhKSsc+qUaBUNiyJX -j17UDBFuuTAfBgNVHSMEGDAWgBSg+5hBev25rcTlErtORNImI0QqyTAKBggqhkjO -PQQDAwNoADBlAjEApEbI/wT/cU7DRFvBEmfFMtVDJCJCTz4UEo1lJI9SPOEtgX3x -gJZg4deqeoAEffVGAjB2RWI1UPi/jnpJwTsuw4sp5UqFhY48qfqddPiSO4qlmb8s -1aEdP6gHoji22pHrKbY= ------END CERTIFICATE----- diff --git a/nall/cipher/chacha20.hpp b/nall/cipher/chacha20.hpp new file mode 100644 index 00000000..30d06ef9 --- /dev/null +++ b/nall/cipher/chacha20.hpp @@ -0,0 +1,78 @@ +#pragma once + +#include + +namespace nall { namespace Cipher { + +struct ChaCha20 { + auto initialize(uint256_t key, uint64_t nonce, uint64_t counter = 0) -> void { + static const uint256_t sigma = 0x6b20657479622d323320646e61707865_u256; //"expand 32-byte k" + + input[ 0] = sigma >> 0; + input[ 1] = sigma >> 32; + input[ 2] = sigma >> 64; + input[ 3] = sigma >> 96; + input[ 4] = key >> 0; + input[ 5] = key >> 32; + input[ 6] = key >> 64; + input[ 7] = key >> 96; + input[ 8] = key >> 128; + input[ 9] = key >> 160; + input[10] = key >> 192; + input[11] = key >> 224; + input[12] = counter >> 0; + input[13] = counter >> 32; + input[14] = nonce >> 0; + input[15] = nonce >> 32; + offset = 0; + } + + auto encrypt(const uint8_t* input, uint8_t* output, uint64_t length) -> void { + while(length--) { + if(!offset) cipher(); + auto byte = offset++; + *output++ = *input++ ^ (block[byte >> 2] >> (byte & 3) * 8); + offset &= 63; + } + } + + auto decrypt(const uint8_t* input, uint8_t* output, uint64_t length) -> void { + encrypt(input, output, length); //reciprocal cipher + } + +private: + inline auto rol(uint32_t value, uint bits) -> uint32_t { + return value << bits | value >> (32 - bits); + } + + auto quarterRound(uint32_t x[16], uint a, uint b, uint c, uint d) -> void { + x[a] += x[b]; x[d] = rol(x[d] ^ x[a], 16); + x[c] += x[d]; x[b] = rol(x[b] ^ x[c], 12); + x[a] += x[b]; x[d] = rol(x[d] ^ x[a], 8); + x[c] += x[d]; x[b] = rol(x[b] ^ x[c], 7); + } + + auto cipher() -> void { + memory::copy(block, input, 64); + for(auto n : range(10)) { + quarterRound(block, 0, 4, 8, 12); + quarterRound(block, 1, 5, 9, 13); + quarterRound(block, 2, 6, 10, 14); + quarterRound(block, 3, 7, 11, 15); + quarterRound(block, 0, 5, 10, 15); + quarterRound(block, 1, 6, 11, 12); + quarterRound(block, 2, 7, 8, 13); + quarterRound(block, 3, 4, 9, 14); + } + for(auto n : range(16)) { + block[n] += input[n]; + } + if(!++input[12]) ++input[13]; + } + + uint32_t input[16]; + uint32_t block[16]; + uint64_t offset; +}; + +}} diff --git a/nall/decode/base57.hpp b/nall/decode/base57.hpp new file mode 100644 index 00000000..797a6617 --- /dev/null +++ b/nall/decode/base57.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include + +namespace nall { namespace Decode { + +template inline auto Base57(const string& value) -> T { + T result = 0; + for(auto n : rrange(value.size())) { + auto byte = value[n]; + if(byte >= '2' && byte <= '9') byte -= '2' - 0; + else if(byte >= 'A' && byte <= 'H') byte -= 'A' - 8; + else if(byte >= 'J' && byte <= 'N') byte -= 'J' - 16; + else if(byte >= 'P' && byte <= 'Z') byte -= 'P' - 21; + else if(byte >= 'a' && byte <= 'k') byte -= 'a' - 32; + else if(byte >= 'm' && byte <= 'z') byte -= 'm' - 43; + else return 0; + result = result * 57 + byte; + } + return result; +} + +}} diff --git a/nall/decode/url.hpp b/nall/decode/url.hpp index 9bbfdfde..1b8a217d 100644 --- a/nall/decode/url.hpp +++ b/nall/decode/url.hpp @@ -5,13 +5,19 @@ namespace nall { namespace Decode { //returns empty string on malformed content inline auto URL(const string& input) -> string { string output; - for(unsigned n = 0; n < input.size();) { + for(uint n = 0; n < input.size();) { char c = input[n]; + + //unreserved characters if(c >= 'A' && c <= 'Z') { output.append(c); n++; continue; } if(c >= 'a' && c <= 'z') { output.append(c); n++; continue; } if(c >= '0' && c <= '9') { output.append(c); n++; continue; } if(c == '-' || c == '_' || c == '.' || c == '~') { output.append(c); n++; continue; } + + //special characters if(c == '+') { output.append(' '); n++; continue; } + + //reserved characters if(c != '%' || n + 2 >= input.size()) return ""; char hi = input[n + 1]; char lo = input[n + 2]; diff --git a/nall/elliptic-curve/curve25519.hpp b/nall/elliptic-curve/curve25519.hpp new file mode 100644 index 00000000..2f63e63f --- /dev/null +++ b/nall/elliptic-curve/curve25519.hpp @@ -0,0 +1,55 @@ +#pragma once + +#if defined(EC_REFERENCE) + #include +#else + #include +#endif + +namespace nall { namespace EllipticCurve { + +struct Curve25519 { + auto sharedKey(uint256_t secretKey, uint256_t basepoint = 9) const -> uint256_t { + secretKey &= ((0_u256 - 1) >> 2) - 7; + secretKey |= 1_u256 << 254; + basepoint &= (0_u256 - 1) >> 1; + + point p = scalarMultiply(secretKey, modP(basepoint)); + return p.x * p.z.reciprocal(); + } + +private: + using field = Modulo25519; + struct point { field x, z; }; + + inline auto montgomeryAdd(point p, point q, field b) const -> point { + return { + (p.x * q.x - p.z * q.z).square(), + (p.x * q.z - p.z * q.x).square() * b + }; + } + + inline auto montgomeryDouble(point p) const -> point { + field a = (p.x + p.z).square(); + field b = (p.x - p.z).square(); + field c = a - b; + field d = a + c * 121665; + return {a * b, c * d}; + } + + inline auto scalarMultiply(uint256_t e, field b) const -> point { + point p{1, 0}, q{b, 1}; + for(uint n : rrange(255)) { + bool bit = e >> n & 1; + cswap(bit, p.x, q.x); + cswap(bit, p.z, q.z); + q = montgomeryAdd(p, q, b); + p = montgomeryDouble(p); + cswap(bit, p.x, q.x); + cswap(bit, p.z, q.z); + } + return p; + } +}; + +}} diff --git a/nall/elliptic-curve/ed25519.hpp b/nall/elliptic-curve/ed25519.hpp new file mode 100644 index 00000000..ce1c4734 --- /dev/null +++ b/nall/elliptic-curve/ed25519.hpp @@ -0,0 +1,164 @@ +#pragma once + +#include +#if defined(EC_REFERENCE) + #include +#else + #include +#endif + +namespace nall { namespace EllipticCurve { + +struct Ed25519 { + Ed25519() { + field y = field(4) * field(5).reciprocal(); + field x = recoverX(y); + point B{x, y, 1, x * y}; + for(uint n : range(253)) { + Bscalar[n] = B; + B = edwardsDouble(B); + } + } + + auto publicKey(uint256_t privateKey) const -> uint256_t { + auto H = uint512_t{Hash::SHA512(to_vector(privateKey)).output()}; + auto a = clamp(H); + auto A = compress(scalarMultiplyB(modL(a))); + return A; + } + + auto sign(const vector& message, uint256_t privateKey) const -> uint512_t { + auto H = uint512_t{Hash::SHA512(to_vector(privateKey)).output()}; + auto a = clamp(H); + auto A = compress(scalarMultiplyB(modL(a))); + + Hash::SHA512 hash1; + hash1.input(to_vector(upper(H))); + hash1.input(message); + auto r = uint512_t{hash1.output()}; + auto R = compress(scalarMultiplyB(modL(r))); + + Hash::SHA512 hash2; + hash2.input(to_vector(R)); + hash2.input(to_vector(A)); + hash2.input(message); + uint512_t k = modL(uint512_t{hash2.output()}); + uint256_t S = modL(k * a + r); + + return uint512_t(S) << 256 | R; + } + + auto verify(const vector& message, uint512_t signature, uint256_t publicKey) const -> bool { + auto R = decompress(lower(signature)); + auto A = decompress(publicKey); + if(!R || !A) return false; + uint256_t S = upper(signature); + + Hash::SHA512 hash; + hash.input(to_vector(lower(signature))); + hash.input(to_vector(publicKey)); + hash.input(message); + auto r = uint512_t{hash.output()}; + + auto p = scalarMultiplyB(modL(S)); + auto q = edwardsAdd(R(), scalarMultiply(modL(r), A())); + if(!onCurve(p) || !onCurve(q)) return false; + if(p.x * q.z - q.x * p.z) return false; + if(p.y * q.z - q.y * p.z) return false; + return true; + } + +private: + using field = Modulo25519; + struct point { field x, y, z, t; }; + point Bscalar[253]; + const field D = -field(121665) * field(121666).reciprocal(); + + inline auto clamp(uint256_t p) const -> uint256_t { + p &= ((0_u256 - 1) >> 2) - 7; + p |= 1_u256 << 254; + return p; + } + + inline auto recoverX(field y) const -> field { + field y2 = y.square(); + field x = ((y2 - 1) * (D * y2 + 1).reciprocal()).squareRoot(); + return x() & 1 ? -x : x; + } + + inline auto onCurve(point p) const -> bool { + if(!p.z) return false; + if(p.x * p.y != p.z * p.t) return false; + if(p.y.square() - p.x.square() - p.z.square() - p.t.square() * D) return false; + return true; + } + + inline auto decompress(uint256_t c) const -> maybe { + field y = c & (1_u256 << 255) - 1; + field x = recoverX(y); + if(c >> 255) x = -x; + point p{x, y, 1, x * y}; + if(!onCurve(p)) return nothing; + return p; + } + + inline auto compress(point p) const -> uint256_t { + field r = p.z.reciprocal(); + field x = p.x * r; + field y = p.y * r; + return (x() & 1) << 255 | (y() & ((0_u256 - 1) >> 1)); + } + + inline auto edwardsDouble(point p) const -> point { + field a = p.x.square(); + field b = p.y.square(); + field c = p.z.square(); + field d = -a; + field e = (p.x + p.y).square() - a - b; + field g = d + b; + field f = g - (c + c); + field h = d - b; + return {e * f, g * h, f * g, e * h}; + } + + inline auto edwardsAdd(point p, point q) const -> point { + field a = (p.y - p.x) * (q.y - q.x); + field b = (p.y + p.x) * (q.y + q.x); + field c = (p.t + p.t) * q.t * D; + field d = (p.z + p.z) * q.z; + field e = b - a; + field f = d - c; + field g = d + c; + field h = b + a; + return {e * f, g * h, f * g, e * h}; + } + + inline auto scalarMultiply(uint512_t e, point q) const -> point { + point p{0, 1, 1, 0}, c; + for(uint n : rrange(253)) { + p = edwardsDouble(p); + c = edwardsAdd(p, q); + bool bit = e >> n & 1; + cmove(bit, p.x, c.x); + cmove(bit, p.y, c.y); + cmove(bit, p.z, c.z); + cmove(bit, p.t, c.t); + } + return p; + } + + inline auto scalarMultiplyB(uint512_t e) const -> point { + point p{0, 1, 1, 0}, c; + for(uint n : rrange(253)) { + bool bit = e >> n & 1; + c = edwardsAdd(p, Bscalar[n]); + cmove(bit, p.x, c.x); + cmove(bit, p.y, c.y); + cmove(bit, p.z, c.z); + cmove(bit, p.t, c.t); + } + return p; + } +}; + +}} diff --git a/nall/elliptic-curve/modulo25519-reference.hpp b/nall/elliptic-curve/modulo25519-reference.hpp new file mode 100644 index 00000000..5519e2a8 --- /dev/null +++ b/nall/elliptic-curve/modulo25519-reference.hpp @@ -0,0 +1,79 @@ +#pragma once + +#include + +namespace nall { namespace EllipticCurve { + +static const uint256_t P = (1_u256 << 255) - 19; +static const uint256_t L = (1_u256 << 252) + 27742317777372353535851937790883648493_u256; + +static BarrettReduction modP{P}; +static BarrettReduction modL{L}; + +struct Modulo25519 : uint256_t { + using type = Modulo25519; + using uint256_t::uint256_t; + + alwaysinline auto operator()() const -> uint256_t { + return *this; + } + + alwaysinline auto operator-() const -> type { + return P.operator-(*this); + } + + template alwaysinline auto operator+(const T& rhs) const -> type { + auto lhs = (uint512_t)*this + rhs; + if(lhs >= P) lhs -= P; + return lhs; + } + + template alwaysinline auto operator-(const T& rhs) const -> type { + auto lhs = (uint512_t)*this; + if(lhs < rhs) lhs += P; + return lhs - rhs; + } + + template alwaysinline auto operator*(const T& rhs) const -> type { + uint256_t hi, lo; + nall::mul(*this, rhs, hi, lo); + return modP(uint512_t{hi, lo}); + } + + alwaysinline auto square() const -> type { + uint256_t hi, lo; + nall::square(*this, hi, lo); + return modP(uint512_t{hi, lo}); + } + + inline auto expmod(uint256_t e) const -> type { + type x = 1; + for(auto n : rrange(256)) { + x = x.square(); + if(e >> n & 1) x = operator*(x); + } + return x; + } + + inline auto reciprocal() const -> type { + return expmod(P - 2); + } + + inline auto squareRoot() const -> type { + static const type i = type(2).expmod((P - 1) >> 2); //i = sqrt(-1) + type x = expmod((P + 3) >> 3); + if(operator!=(x.square())) x = x * i; + if(x & 1) x = -x; + return x; + } +}; + +inline auto cmove(bool bit, Modulo25519& lhs, const Modulo25519& rhs) -> void { + if(bit) lhs = rhs; +} + +inline auto cswap(bool bit, Modulo25519& lhs, Modulo25519& rhs) -> void { + if(bit) swap(lhs, rhs); +} + +}} diff --git a/nall/elliptic-curve/modulo25519.hpp b/nall/elliptic-curve/modulo25519.hpp new file mode 100644 index 00000000..965bb10b --- /dev/null +++ b/nall/elliptic-curve/modulo25519.hpp @@ -0,0 +1,234 @@ +#pragma once + +#include + +namespace nall { namespace EllipticCurve { + +static const uint256_t P = (1_u256 << 255) - 19; +static const uint256_t L = (1_u256 << 252) + 27742317777372353535851937790883648493_u256; + +static BarrettReduction modP{P}; +static BarrettReduction modL{L}; + +struct Modulo25519; +auto cmove(bool move, Modulo25519& l, const Modulo25519& r) -> void; +auto cswap(bool swap, Modulo25519& l, Modulo25519& r) -> void; + +struct Modulo25519 { + using type = Modulo25519; + #define Mask ((1ull << 51) - 1) + + inline Modulo25519() = default; + inline Modulo25519(const Modulo25519&) = default; + inline Modulo25519(uint64_t a, uint64_t b = 0, uint64_t c = 0, uint64_t d = 0, uint64_t e = 0) : l{a, b, c, d, e} {} + + inline Modulo25519(uint256_t n) { + l[0] = n >> 0 & Mask; + l[1] = n >> 51 & Mask; + l[2] = n >> 102 & Mask; + l[3] = n >> 153 & Mask; + l[4] = n >> 204 & Mask; + } + + inline auto operator()() const -> uint256_t { return operator uint256_t(); } + inline auto& operator[](uint index) { return l[index]; } + inline auto operator[](uint index) const { return l[index]; } + + inline explicit operator bool() const { + return operator uint256_t(); + } + + inline operator uint256_t() const { + type o = *this; + + o[1] += (o[0] >> 51); o[0] &= Mask; + o[2] += (o[1] >> 51); o[1] &= Mask; + o[3] += (o[2] >> 51); o[2] &= Mask; + o[4] += (o[3] >> 51); o[3] &= Mask; + o[0] += 19 * (o[4] >> 51); o[4] &= Mask; + + o[1] += (o[0] >> 51); o[0] &= Mask; + o[2] += (o[1] >> 51); o[1] &= Mask; + o[3] += (o[2] >> 51); o[2] &= Mask; + o[4] += (o[3] >> 51); o[3] &= Mask; + o[0] += 19 * (o[4] >> 51); o[4] &= Mask; + + o[0] += 19; + o[1] += (o[0] >> 51); o[0] &= Mask; + o[2] += (o[1] >> 51); o[1] &= Mask; + o[3] += (o[2] >> 51); o[2] &= Mask; + o[4] += (o[3] >> 51); o[3] &= Mask; + o[0] += 19 * (o[4] >> 51); o[4] &= Mask; + + o[0] += Mask - 18; + o[1] += Mask; + o[2] += Mask; + o[3] += Mask; + o[4] += Mask; + + o[1] += o[0] >> 51; o[0] &= Mask; + o[2] += o[1] >> 51; o[1] &= Mask; + o[3] += o[2] >> 51; o[2] &= Mask; + o[4] += o[3] >> 51; o[3] &= Mask; + o[4] &= Mask; + + return (uint256_t)o[0] << 0 | (uint256_t)o[1] << 51 | (uint256_t)o[2] << 102 | (uint256_t)o[3] << 153 | (uint256_t)o[4] << 204; + } + + inline auto operator!=(type r) const -> bool { + bool e = 1; + e &= l[0] == r[0]; + e &= l[1] == r[1]; + e &= l[2] == r[2]; + e &= l[3] == r[3]; + e &= l[4] == r[4]; + return e == 0; + } + + inline auto operator-() const -> type { //P - l + type o; + uint64_t c; + o[0] = 0xfffffffffffda - l[0]; c = o[0] >> 51; o[0] &= Mask; + o[1] = 0xffffffffffffe - l[1] + c; c = o[1] >> 51; o[1] &= Mask; + o[2] = 0xffffffffffffe - l[2] + c; c = o[2] >> 51; o[2] &= Mask; + o[3] = 0xffffffffffffe - l[3] + c; c = o[3] >> 51; o[3] &= Mask; + o[4] = 0xffffffffffffe - l[4] + c; c = o[4] >> 51; o[4] &= Mask; + o[0] += c * 19; + return o; + } + + inline auto operator+(type r) const -> type { + type o; + uint64_t c; + o[0] = l[0] + r[0]; c = o[0] >> 51; o[0] &= Mask; + o[1] = l[1] + r[1] + c; c = o[1] >> 51; o[1] &= Mask; + o[2] = l[2] + r[2] + c; c = o[2] >> 51; o[2] &= Mask; + o[3] = l[3] + r[3] + c; c = o[3] >> 51; o[3] &= Mask; + o[4] = l[4] + r[4] + c; c = o[4] >> 51; o[4] &= Mask; + o[0] += c * 19; + return o; + } + + inline auto operator-(type r) const -> type { + type o; + uint64_t c; + o[0] = l[0] + 0x1fffffffffffb4 - r[0]; c = o[0] >> 51; o[0] &= Mask; + o[1] = l[1] + 0x1ffffffffffffc - r[1] + c; c = o[1] >> 51; o[1] &= Mask; + o[2] = l[2] + 0x1ffffffffffffc - r[2] + c; c = o[2] >> 51; o[2] &= Mask; + o[3] = l[3] + 0x1ffffffffffffc - r[3] + c; c = o[3] >> 51; o[3] &= Mask; + o[4] = l[4] + 0x1ffffffffffffc - r[4] + c; c = o[4] >> 51; o[4] &= Mask; + o[0] += c * 19; + return o; + } + + inline auto operator*(uint64_t scalar) const -> type { + type o; + uint128_t a; + a = (uint128_t)l[0] * scalar; o[0] = a & Mask; + a = (uint128_t)l[1] * scalar + (a >> 51 & Mask); o[1] = a & Mask; + a = (uint128_t)l[2] * scalar + (a >> 51 & Mask); o[2] = a & Mask; + a = (uint128_t)l[3] * scalar + (a >> 51 & Mask); o[3] = a & Mask; + a = (uint128_t)l[4] * scalar + (a >> 51 & Mask); o[4] = a & Mask; + o[0] += (a >> 51) * 19; + return o; + } + + inline auto operator*(type r) const -> type { + uint128_t t[] = { + (uint128_t)r[0] * l[0], + (uint128_t)r[0] * l[1] + (uint128_t)r[1] * l[0], + (uint128_t)r[0] * l[2] + (uint128_t)r[1] * l[1] + (uint128_t)r[2] * l[0], + (uint128_t)r[0] * l[3] + (uint128_t)r[1] * l[2] + (uint128_t)r[2] * l[1] + (uint128_t)r[3] * l[0], + (uint128_t)r[0] * l[4] + (uint128_t)r[1] * l[3] + (uint128_t)r[2] * l[2] + (uint128_t)r[3] * l[1] + (uint128_t)r[4] * l[0] + }; + + r[1] *= 19, r[2] *= 19, r[3] *= 19, r[4] *= 19; + + t[0] += (uint128_t)r[4] * l[1] + (uint128_t)r[3] * l[2] + (uint128_t)r[2] * l[3] + (uint128_t)r[1] * l[4]; + t[1] += (uint128_t)r[4] * l[2] + (uint128_t)r[3] * l[3] + (uint128_t)r[2] * l[4]; + t[2] += (uint128_t)r[4] * l[3] + (uint128_t)r[3] * l[4]; + t[3] += (uint128_t)r[4] * l[4]; + + uint64_t c; r[0] = t[0] & Mask; c = (uint64_t)(t[0] >> 51); + t[1] += c; r[1] = t[1] & Mask; c = (uint64_t)(t[1] >> 51); + t[2] += c; r[2] = t[2] & Mask; c = (uint64_t)(t[2] >> 51); + t[3] += c; r[3] = t[3] & Mask; c = (uint64_t)(t[3] >> 51); + t[4] += c; r[4] = t[4] & Mask; c = (uint64_t)(t[4] >> 51); + + r[0] += c * 19; c = r[0] >> 51; r[0] &= Mask; + r[1] += c; c = r[1] >> 51; r[1] &= Mask; + r[2] += c; + return r; + } + + inline auto square() const -> type { + type r{*this}; + type d{r[0] * 2, r[1] * 2, r[2] * 2 * 19, r[4] * 19, r[4] * 19 * 2}; + + uint128_t t[5]; + t[0] = (uint128_t)r[0] * r[0] + (uint128_t)d[4] * r[1] + (uint128_t)d[2] * r[3]; + t[1] = (uint128_t)d[0] * r[1] + (uint128_t)d[4] * r[2] + (uint128_t)r[3] * r[3] * 19; + t[2] = (uint128_t)d[0] * r[2] + (uint128_t)r[1] * r[1] + (uint128_t)d[4] * r[3]; + t[3] = (uint128_t)d[0] * r[3] + (uint128_t)d[1] * r[2] + (uint128_t)r[4] * d[3]; + t[4] = (uint128_t)d[0] * r[4] + (uint128_t)d[1] * r[3] + (uint128_t)r[2] * r[2]; + + uint64_t c; r[0] = t[0] & Mask; c = (uint64_t)(t[0] >> 51); + t[1] += c; r[1] = t[1] & Mask; c = (uint64_t)(t[1] >> 51); + t[2] += c; r[2] = t[2] & Mask; c = (uint64_t)(t[2] >> 51); + t[3] += c; r[3] = t[3] & Mask; c = (uint64_t)(t[3] >> 51); + t[4] += c; r[4] = t[4] & Mask; c = (uint64_t)(t[4] >> 51); + + r[0] += c * 19; c = r[0] >> 51; r[0] &= Mask; + r[1] += c; c = r[1] >> 51; r[1] &= Mask; + r[2] += c; + return r; + } + + inline auto expmod(uint256_t e) const -> type { + type x = 1, y; + for(uint n : rrange(256)) { + x = x.square(); + y = operator*(x); + cmove(e >> n & 1, x, y); + } + return x; + } + + inline auto reciprocal() const -> type { + return expmod(P - 2); + } + + inline auto squareRoot() const -> type { + static const type i = type(2).expmod((P - 1) >> 2); //i == sqrt(-1) + type x = expmod((P + 3) >> 3); + type y = x * i; + cmove(operator!=(x.square()), x, y); + y = -x; + cmove(x() & 1, x, y); + return x; + } + +private: + uint64_t l[5]; //51-bits per limb; 255-bits total + #undef Mask +}; + +inline auto cmove(bool move, Modulo25519& l, const Modulo25519& r) -> void { + uint64_t mask = -move; + l[0] ^= mask & (l[0] ^ r[0]); + l[1] ^= mask & (l[1] ^ r[1]); + l[2] ^= mask & (l[2] ^ r[2]); + l[3] ^= mask & (l[3] ^ r[3]); + l[4] ^= mask & (l[4] ^ r[4]); +} + +inline auto cswap(bool swap, Modulo25519& l, Modulo25519& r) -> void { + uint64_t mask = -swap, x; + x = mask & (l[0] ^ r[0]); l[0] ^= x; r[0] ^= x; + x = mask & (l[1] ^ r[1]); l[1] ^= x; r[1] ^= x; + x = mask & (l[2] ^ r[2]); l[2] ^= x; r[2] ^= x; + x = mask & (l[3] ^ r[3]); l[3] ^= x; r[3] ^= x; + x = mask & (l[4] ^ r[4]); l[4] ^= x; r[4] ^= x; +} + +}} diff --git a/nall/encode/base57.hpp b/nall/encode/base57.hpp new file mode 100644 index 00000000..3f40da30 --- /dev/null +++ b/nall/encode/base57.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include + +namespace nall { namespace Encode { + +template inline auto Base57(T value) -> string { + static const char lookup[] = "23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; + static const uint size = ceil(sizeof(T) * 8 / log2(57)); + + string result; + for(auto n : range(size)) { + result.append(lookup[value % 57]); + value /= 57; + } + return result; +} + +}} diff --git a/nall/encode/url.hpp b/nall/encode/url.hpp index 7a95921d..c2bbd4e8 100644 --- a/nall/encode/url.hpp +++ b/nall/encode/url.hpp @@ -5,13 +5,18 @@ namespace nall { namespace Encode { inline auto URL(const string& input) -> string { string output; for(auto c : input) { + //unreserved characters if(c >= 'A' && c <= 'Z') { output.append(c); continue; } if(c >= 'a' && c <= 'z') { output.append(c); continue; } if(c >= '0' && c <= '9') { output.append(c); continue; } if(c == '-' || c == '_' || c == '.' || c == '~') { output.append(c); continue; } + + //special characters if(c == ' ') { output.append('+'); continue; } - unsigned hi = (c >> 4) & 15; - unsigned lo = (c >> 0) & 15; + + //reserved characters + uint hi = (c >> 4) & 15; + uint lo = (c >> 0) & 15; output.append('%'); output.append((char)(hi < 10 ? ('0' + hi) : ('a' + hi - 10))); output.append((char)(lo < 10 ? ('0' + lo) : ('a' + lo - 10))); diff --git a/nall/encode/zip.hpp b/nall/encode/zip.hpp index c6beae2a..20fa4635 100644 --- a/nall/encode/zip.hpp +++ b/nall/encode/zip.hpp @@ -20,7 +20,7 @@ struct ZIP { //append file: append("path/file", data, size); auto append(string filename, const uint8_t* data = nullptr, unsigned size = 0u) -> void { filename.transform("\\", "/"); - uint32_t checksum = Hash::CRC32(data, size).value(); + uint32_t checksum = Hash::CRC32(data, size).digest().hex(); directory.append({filename, checksum, size, fp.offset()}); fp.writel(0x04034b50, 4); //signature diff --git a/nall/function.hpp b/nall/function.hpp index 37691866..8fcd255a 100644 --- a/nall/function.hpp +++ b/nall/function.hpp @@ -20,7 +20,7 @@ template struct function R> { function(auto (*function)(P...) -> R) { callback = new global(function); } template function(auto (C::*function)(P...) -> R, C* object) { callback = new member(function, object); } template function(auto (C::*function)(P...) const -> R, C* object) { callback = new member((auto (C::*)(P...) -> R)function, object); } - template>> function(const L& object) { callback = new lambda(object); } + template::value>> function(const L& object) { callback = new lambda(object); } ~function() { if(callback) delete callback; } explicit operator bool() const { return callback; } diff --git a/nall/hash/crc16.hpp b/nall/hash/crc16.hpp index 879f31d3..6feb8ccc 100644 --- a/nall/hash/crc16.hpp +++ b/nall/hash/crc16.hpp @@ -1,45 +1,30 @@ #pragma once -#include -#include +#include namespace nall { namespace Hash { -struct CRC16 { - CRC16() { reset(); } - CRC16(const void* values, uint size) : CRC16() { data(values, size); } - CRC16(const vector& values) : CRC16() { data(values); } - CRC16(const string& values) : CRC16() { data(values); } +struct CRC16 : Hash { + nallHash(CRC16) - auto reset() -> void { + auto reset() -> void override { checksum = ~0; } - auto data(uint8_t value) -> void { + auto input(uint8_t value) -> void override { checksum = (checksum >> 8) ^ table(checksum ^ value); } - auto data(const void* values, uint size) -> void { - auto p = (const uint8_t*)values; - while(size--) data(*p++); - } - - auto data(const vector& values) -> void { - for(auto value : values) data(value); - } - - auto data(const string& values) -> void { - for(auto value : values) data(value); + auto output() const -> vector override { + vector result; + for(auto n : rrange(2)) result.append(~checksum >> n * 8); + return result; } auto value() const -> uint16_t { return ~checksum; } - inline auto digest() const -> string { - return hex(value(), 4L); - } - private: static auto table(uint8_t index) -> uint16_t { static uint16_t table[256] = {0}; @@ -59,7 +44,7 @@ private: return table[index]; } - uint16_t checksum; + uint16_t checksum = 0; }; }} diff --git a/nall/hash/crc32.hpp b/nall/hash/crc32.hpp index b1a7b57b..e0614bab 100644 --- a/nall/hash/crc32.hpp +++ b/nall/hash/crc32.hpp @@ -1,45 +1,30 @@ #pragma once -#include -#include +#include namespace nall { namespace Hash { -struct CRC32 { - CRC32() { reset(); } - CRC32(const void* values, uint size) : CRC32() { data(values, size); } - CRC32(const vector& values) : CRC32() { data(values); } - CRC32(const string& values) : CRC32() { data(values); } +struct CRC32 : Hash { + nallHash(CRC32) - auto reset() -> void { + auto reset() -> void override { checksum = ~0; } - auto data(uint8_t value) -> void { + auto input(uint8_t value) -> void override { checksum = (checksum >> 8) ^ table(checksum ^ value); } - auto data(const void* values, uint size) -> void { - auto p = (const uint8_t*)values; - while(size--) data(*p++); - } - - auto data(const vector& values) -> void { - for(auto value : values) data(value); - } - - auto data(const string& values) -> void { - for(auto value : values) data(value); + auto output() const -> vector { + vector result; + for(auto n : rrange(4)) result.append(~checksum >> n * 8); + return result; } auto value() const -> uint32_t { return ~checksum; } - inline auto digest() const -> string { - return hex(value(), 8L); - } - private: static auto table(uint8_t index) -> uint32_t { static uint32_t table[256] = {0}; @@ -59,7 +44,7 @@ private: return table[index]; } - uint32_t checksum; + uint32_t checksum = 0; }; }} diff --git a/nall/hash/crc64.hpp b/nall/hash/crc64.hpp index c97de7ff..b693a0e4 100644 --- a/nall/hash/crc64.hpp +++ b/nall/hash/crc64.hpp @@ -1,45 +1,30 @@ #pragma once -#include -#include +#include namespace nall { namespace Hash { -struct CRC64 { - CRC64() { reset(); } - CRC64(const void* values, uint size) : CRC64() { data(values, size); } - CRC64(const vector& values) : CRC64() { data(values); } - CRC64(const string& values) : CRC64() { data(values); } +struct CRC64 : Hash { + nallHash(CRC64) - auto reset() -> void { + auto reset() -> void override { checksum = ~0; } - auto data(uint8_t value) -> void { + auto input(uint8_t value) -> void override { checksum = (checksum >> 8) ^ table(checksum ^ value); } - auto data(const void* values, uint size) -> void { - auto p = (const uint8_t*)values; - while(size--) data(*p++); - } - - auto data(const vector& values) -> void { - for(auto value : values) data(value); - } - - auto data(const string& values) -> void { - for(auto value : values) data(value); + auto output() const -> vector { + vector result; + for(auto n : rrange(8)) result.append(~checksum >> n * 8); + return result; } auto value() const -> uint64_t { return ~checksum; } - inline auto digest() const -> string { - return hex(value(), 16L); - } - private: static auto table(uint8_t index) -> uint64_t { static uint64_t table[256] = {0}; @@ -59,7 +44,7 @@ private: return table[index]; } - uint64_t checksum; + uint64_t checksum = 0; }; }} diff --git a/nall/hash/hash.hpp b/nall/hash/hash.hpp new file mode 100644 index 00000000..0ac35d43 --- /dev/null +++ b/nall/hash/hash.hpp @@ -0,0 +1,43 @@ +#pragma once + +#include +#include +#include + +//cannot use constructor inheritance due to needing to call virtual reset(); +//instead, define a macro to reduce boilerplate code in every Hash subclass +#define nallHash(Name) \ + Name() { reset(); } \ + Name(const void* data, uint64_t size) : Name() { input(data, size); } \ + Name(const vector& data) : Name() { input(data); } \ + Name(const string& data) : Name() { input(data); } \ + using Hash::input; \ + +namespace nall { namespace Hash { + +struct Hash { + virtual auto reset() -> void = 0; + virtual auto input(uint8_t data) -> void = 0; + virtual auto output() const -> vector = 0; + + auto input(const void* data, uint64_t size) -> void { + auto p = (const uint8_t*)data; + while(size--) input(*p++); + } + + auto input(const vector& data) -> void { + for(auto byte : data) input(byte); + } + + auto input(const string& data) -> void { + for(auto byte : data) input(byte); + } + + auto digest() const -> string { + string result; + for(auto n : output()) result.append(hex(n, 2L)); + return result; + } +}; + +}} diff --git a/nall/hash/sha224.hpp b/nall/hash/sha224.hpp new file mode 100644 index 00000000..cd2c6cab --- /dev/null +++ b/nall/hash/sha224.hpp @@ -0,0 +1,101 @@ +#pragma once + +#include + +namespace nall { namespace Hash { + +struct SHA224 : Hash { + nallHash(SHA224) + + auto reset() -> void override { + for(auto& n : queue) n = 0; + for(auto& n : w) n = 0; + for(auto n : range(8)) h[n] = square(n); + queued = length = 0; + } + + auto input(uint8_t value) -> void override { + byte(value); + length++; + } + + auto output() const -> vector override { + SHA224 self(*this); + self.finish(); + vector result; + for(auto h : range(7)) { + for(auto n : rrange(4)) result.append(self.h[h] >> n * 8); + } + return result; + } + + auto value() const -> uint256_t { + uint256_t value = 0; + for(auto byte : output()) value = value << 8 | byte; + return value; + } + +private: + auto byte(uint8_t value) -> void { + uint32_t shift = (3 - (queued & 3)) * 8; + queue[queued >> 2] &= ~(0xff << shift); + queue[queued >> 2] |= (value << shift); + if(++queued == 64) block(), queued = 0; + } + + auto block() -> void { + for(auto n : range(16)) w[n] = queue[n]; + for(auto n : range(16, 64)) { + uint32_t a = ror(w[n - 15], 7) ^ ror(w[n - 15], 18) ^ (w[n - 15] >> 3); + uint32_t b = ror(w[n - 2], 17) ^ ror(w[n - 2], 19) ^ (w[n - 2] >> 10); + w[n] = w[n - 16] + w[n - 7] + a + b; + } + uint32_t t[8]; + for(auto n : range(8)) t[n] = h[n]; + for(auto n : range(64)) { + uint32_t a = ror(t[0], 2) ^ ror(t[0], 13) ^ ror(t[0], 22); + uint32_t b = ror(t[4], 6) ^ ror(t[4], 11) ^ ror(t[4], 25); + uint32_t c = (t[0] & t[1]) ^ (t[0] & t[2]) ^ (t[1] & t[2]); + uint32_t d = (t[4] & t[5]) ^ (~t[4] & t[6]); + uint32_t e = t[7] + w[n] + cube(n) + b + d; + t[7] = t[6]; t[6] = t[5]; t[5] = t[4]; t[4] = t[3] + e; + t[3] = t[2]; t[2] = t[1]; t[1] = t[0]; t[0] = a + c + e; + } + for(auto n : range(8)) h[n] += t[n]; + } + + auto finish() -> void { + byte(0x80); + while(queued != 56) byte(0x00); + for(auto n : range(8)) byte(length * 8 >> (7 - n) * 8); + } + + auto square(uint n) -> uint32_t { + static const uint32_t value[8] = { + 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4, + }; + return value[n]; + } + + auto cube(uint n) -> uint32_t { + static const uint32_t value[64] = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, + }; + return value[n]; + } + + uint32_t queue[16] = {0}; + uint32_t w[64] = {0}; + uint32_t h[8] = {0}; + uint32_t queued = 0; + uint64_t length = 0; +}; + +}} diff --git a/nall/hash/sha256.hpp b/nall/hash/sha256.hpp index 3bc354c1..4274a11e 100644 --- a/nall/hash/sha256.hpp +++ b/nall/hash/sha256.hpp @@ -1,66 +1,50 @@ #pragma once -#include -#include +#include namespace nall { namespace Hash { -struct SHA256 { - SHA256() { reset(); } - SHA256(const void* values, uint size) : SHA256() { data(values, size); } - SHA256(const vector& values) : SHA256() { data(values); } - SHA256(const string& values) : SHA256() { data(values); } +struct SHA256 : Hash { + nallHash(SHA256) - auto reset() -> void { - for(auto n : input) n = 0; - for(auto n : w) n = 0; - for(auto n : range(8)) h[n] = square(n); + auto reset() -> void override { + for(auto& n : queue) n = 0; + for(auto& n : w) n = 0; + for(auto n : range(8)) h[n] = square(n); queued = length = 0; } - auto data(uint8_t value) -> void { + auto input(uint8_t value) -> void override { byte(value); length++; } - auto data(const void* values, uint size) -> void { - length += size; - auto p = (const uint8_t*)values; - while(size--) byte(*p++); - } - - auto data(const vector& values) -> void { - for(auto value : values) data(value); - } - - auto data(const string& values) -> void { - for(auto value : values) data(value); - } - - auto value() const -> vector { + auto output() const -> vector override { SHA256 self(*this); self.finish(); vector result; - for(auto n : range(32)) result.append(self.h[n >> 2] >> ((3 - (n & 3)) << 3)); + for(auto h : self.h) { + for(auto n : rrange(4)) result.append(h >> n * 8); + } return result; } - inline auto digest() const -> string { - string result; - for(auto n : value()) result.append(hex(n, 2L)); - return result; + auto value() const -> uint256_t { + uint256_t value = 0; + for(auto byte : output()) value = value << 8 | byte; + return value; } private: auto byte(uint8_t value) -> void { - auto shift = (3 - (queued & 3)) * 8; - input[queued >> 2] &= ~(0xff << shift); - input[queued >> 2] |= (value << shift); + uint32_t shift = (3 - (queued & 3)) * 8; + queue[queued >> 2] &= ~(0xff << shift); + queue[queued >> 2] |= (value << shift); if(++queued == 64) block(), queued = 0; } auto block() -> void { - for(auto n : range(16)) w[n] = input[n]; + for(auto n : range(16)) w[n] = queue[n]; for(auto n : range(16, 64)) { uint32_t a = ror(w[n - 15], 7) ^ ror(w[n - 15], 18) ^ (w[n - 15] >> 3); uint32_t b = ror(w[n - 2], 17) ^ ror(w[n - 2], 19) ^ (w[n - 2] >> 10); @@ -83,11 +67,7 @@ private: auto finish() -> void { byte(0x80); while(queued != 56) byte(0x00); - for(auto n : range(8)) byte((length << 3) >> ((7 - n) << 3)); - } - - auto ror(uint32_t x, uint32_t n) -> uint32_t { - return (x >> n) | (x << 32 - n); + for(auto n : range(8)) byte(length * 8 >> (7 - n) * 8); } auto square(uint n) -> uint32_t { @@ -111,11 +91,11 @@ private: return value[n]; } - uint32_t input[16]; - uint32_t queued; - uint32_t w[64]; - uint32_t h[8]; - uint64_t length; + uint32_t queue[16] = {0}; + uint32_t w[64] = {0}; + uint32_t h[8] = {0}; + uint32_t queued = 0; + uint64_t length = 0; }; }} diff --git a/nall/hash/sha384.hpp b/nall/hash/sha384.hpp new file mode 100644 index 00000000..78c3f8d4 --- /dev/null +++ b/nall/hash/sha384.hpp @@ -0,0 +1,114 @@ +#pragma once + +#include + +namespace nall { namespace Hash { + +struct SHA384 : Hash { + nallHash(SHA384) + + auto reset() -> void override { + for(auto& n : queue) n = 0; + for(auto& n : w) n = 0; + for(auto n : range(8)) h[n] = square(n); + queued = length = 0; + } + + auto input(uint8_t data) -> void override { + byte(data); + length++; + } + + auto output() const -> vector override { + SHA384 self(*this); + self.finish(); + vector result; + for(auto h : range(6)) { + for(auto n : rrange(8)) result.append(self.h[h] >> n * 8); + } + return result; + } + + auto value() const -> uint512_t { + uint512_t value = 0; + for(auto byte : output()) value = value << 8 | byte; + return value; + } + +private: + auto byte(uint8_t data) -> void { + uint64_t shift = (7 - (queued & 7)) * 8; + queue[queued >> 3] &=~((uint64_t)0xff << shift); + queue[queued >> 3] |= ((uint64_t)data << shift); + if(++queued == 128) block(), queued = 0; + } + + auto block() -> void { + for(auto n : range(16)) w[n] = queue[n]; + for(auto n : range(16, 80)) { + uint64_t a = ror(w[n - 15], 1) ^ ror(w[n - 15], 8) ^ (w[n - 15] >> 7); + uint64_t b = ror(w[n - 2], 19) ^ ror(w[n - 2], 61) ^ (w[n - 2] >> 6); + w[n] = w[n - 16] + w[n - 7] + a + b; + } + uint64_t t[8]; + for(auto n : range(8)) t[n] = h[n]; + for(auto n : range(80)) { + uint64_t a = ror(t[0], 28) ^ ror(t[0], 34) ^ ror(t[0], 39); + uint64_t b = ror(t[4], 14) ^ ror(t[4], 18) ^ ror(t[4], 41); + uint64_t c = (t[0] & t[1]) ^ (t[0] & t[2]) ^ (t[1] & t[2]); + uint64_t d = (t[4] & t[5]) ^ (~t[4] & t[6]); + uint64_t e = t[7] + w[n] + cube(n) + b + d; + t[7] = t[6]; t[6] = t[5]; t[5] = t[4]; t[4] = t[3] + e; + t[3] = t[2]; t[2] = t[1]; t[1] = t[0]; t[0] = a + c + e; + } + for(auto n : range(8)) h[n] += t[n]; + } + + auto finish() -> void { + byte(0x80); + while(queued != 112) byte(0x00); + for(auto n : range(16)) byte(length * 8 >> (15 - n) * 8); + } + + auto square(uint n) -> uint64_t { + static const uint64_t data[8] = { + 0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939, + 0x67332667ffc00b31, 0x8eb44a8768581511, 0xdb0c2e0d64f98fa7, 0x47b5481dbefa4fa4, + }; + return data[n]; + } + + auto cube(uint n) -> uint64_t { + static const uint64_t data[80] = { + 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, + 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, + 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, + 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694, + 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, + 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, + 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, + 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70, + 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df, + 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, + 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, + 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, + 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, + 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3, + 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, + 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, + 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, + 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b, + 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c, + 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817, + }; + return data[n]; + } + + uint64_t queue[16] = {0}; + uint64_t w[80] = {0}; + uint64_t h[8] = {0}; + uint64_t queued = 0; + uint128_t length = 0; +}; + +}} diff --git a/nall/hash/sha512.hpp b/nall/hash/sha512.hpp new file mode 100644 index 00000000..a2ed8143 --- /dev/null +++ b/nall/hash/sha512.hpp @@ -0,0 +1,114 @@ +#pragma once + +#include + +namespace nall { namespace Hash { + +struct SHA512 : Hash { + nallHash(SHA512) + + auto reset() -> void override { + for(auto& n : queue) n = 0; + for(auto& n : w) n = 0; + for(auto n : range(8)) h[n] = square(n); + queued = length = 0; + } + + auto input(uint8_t data) -> void override { + byte(data); + length++; + } + + auto output() const -> vector override { + SHA512 self(*this); + self.finish(); + vector result; + for(auto h : self.h) { + for(auto n : rrange(8)) result.append(h >> n * 8); + } + return result; + } + + auto value() const -> uint512_t { + uint512_t value = 0; + for(auto byte : output()) value = value << 8 | byte; + return value; + } + +private: + auto byte(uint8_t data) -> void { + uint64_t shift = (7 - (queued & 7)) * 8; + queue[queued >> 3] &=~((uint64_t)0xff << shift); + queue[queued >> 3] |= ((uint64_t)data << shift); + if(++queued == 128) block(), queued = 0; + } + + auto block() -> void { + for(auto n : range(16)) w[n] = queue[n]; + for(auto n : range(16, 80)) { + uint64_t a = ror(w[n - 15], 1) ^ ror(w[n - 15], 8) ^ (w[n - 15] >> 7); + uint64_t b = ror(w[n - 2], 19) ^ ror(w[n - 2], 61) ^ (w[n - 2] >> 6); + w[n] = w[n - 16] + w[n - 7] + a + b; + } + uint64_t t[8]; + for(auto n : range(8)) t[n] = h[n]; + for(auto n : range(80)) { + uint64_t a = ror(t[0], 28) ^ ror(t[0], 34) ^ ror(t[0], 39); + uint64_t b = ror(t[4], 14) ^ ror(t[4], 18) ^ ror(t[4], 41); + uint64_t c = (t[0] & t[1]) ^ (t[0] & t[2]) ^ (t[1] & t[2]); + uint64_t d = (t[4] & t[5]) ^ (~t[4] & t[6]); + uint64_t e = t[7] + w[n] + cube(n) + b + d; + t[7] = t[6]; t[6] = t[5]; t[5] = t[4]; t[4] = t[3] + e; + t[3] = t[2]; t[2] = t[1]; t[1] = t[0]; t[0] = a + c + e; + } + for(auto n : range(8)) h[n] += t[n]; + } + + auto finish() -> void { + byte(0x80); + while(queued != 112) byte(0x00); + for(auto n : range(16)) byte(length * 8 >> (15 - n) * 8); + } + + auto square(uint n) -> uint64_t { + static const uint64_t data[8] = { + 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, + 0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179, + }; + return data[n]; + } + + auto cube(uint n) -> uint64_t { + static const uint64_t data[80] = { + 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, + 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, + 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, + 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694, + 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, + 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, + 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, + 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70, + 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df, + 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, + 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, + 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, + 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, + 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3, + 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, + 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, + 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, + 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b, + 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c, + 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817, + }; + return data[n]; + } + + uint64_t queue[16] = {0}; + uint64_t w[80] = {0}; + uint64_t h[8] = {0}; + uint64_t queued = 0; + uint128_t length = 0; +}; + +}} diff --git a/nall/mac/poly1305.hpp b/nall/mac/poly1305.hpp new file mode 100644 index 00000000..946af9c9 --- /dev/null +++ b/nall/mac/poly1305.hpp @@ -0,0 +1,116 @@ +#pragma once + +#include + +namespace nall { namespace MAC { + +struct Poly1305 { + auto initialize(uint256_t key) -> void { + uint64_t t0 = key >> 0; + uint64_t t1 = key >> 64; + pad[0] = key >> 128; + pad[1] = key >> 192; + + r[0] = (t0 ) & 0xffc0fffffff; + r[1] = (t0 >> 44 | t1 << 20) & 0xfffffc0ffff; + r[2] = ( t1 >> 24) & 0x00ffffffc0f; + + h[0] = 0, h[1] = 0, h[2] = 0; + offset = 0; + } + + auto process(const uint8_t* data, uint64_t size) -> void { + while(size--) { + buffer[offset++] = *data++; + if(offset >= 16) { + block(); + offset = 0; + } + } + } + + auto finish() -> uint128_t { + if(offset) { + buffer[offset++] = 1; + while(offset < 16) buffer[offset++] = 0; + block(true); + } + + uint64_t h0 = h[0], h1 = h[1], h2 = h[2]; + + uint64_t c = h1 >> 44; h1 &= 0xfffffffffff; + h2 += c; c = h2 >> 42; h2 &= 0x3ffffffffff; + h0 += c * 5; c = h0 >> 44; h0 &= 0xfffffffffff; + h1 += c; c = h1 >> 44; h1 &= 0xfffffffffff; + h2 += c; c = h2 >> 42; h2 &= 0x3ffffffffff; + h0 += c * 5; c = h0 >> 44; h0 &= 0xfffffffffff; + h1 += c; + + uint64_t g0 = h0 + 5; c = g0 >> 44; g0 &= 0xfffffffffff; + uint64_t g1 = h1 + c; c = g1 >> 44; g1 &= 0xfffffffffff; + uint64_t g2 = h2 + c - (1ull << 42); + + c = (g2 >> 63) - 1; + g0 &= c, g1 &= c, g2 &= c; + c = ~c; + h0 = (h0 & c) | g0; + h1 = (h1 & c) | g1; + h2 = (h2 & c) | g2; + + uint64_t t0 = pad[0], t1 = pad[1]; + + h0 += ((t0 ) & 0xfffffffffff) ; c = h0 >> 44; h0 &= 0xfffffffffff; + h1 += ((t0 >> 44 | t1 << 20) & 0xfffffffffff) + c; c = h1 >> 44; h1 &= 0xfffffffffff; + h2 += (( t1 >> 24) & 0x3ffffffffff) + c; h2 &= 0x3ffffffffff; + + h0 = (h0 >> 0 | h1 << 44); + h1 = (h1 >> 20 | h2 << 24); + + r[0] = 0, r[1] = 0, r[2] = 0; + h[0] = 0, h[1] = 0, h[2] = 0; + pad[0] = 0, pad[1] = 0; + memory::fill(buffer, 16); + offset = 0; + + return uint128_t(h1) << 64 | h0; + } + +private: + auto block(bool last = false) -> void { + uint64_t r0 = r[0], r1 = r[1], r2 = r[2]; + uint64_t h0 = h[0], h1 = h[1], h2 = h[2]; + + uint64_t s1 = r1 * 20; + uint64_t s2 = r2 * 20; + + uint64_t t0 = memory::readl<8>(buffer + 0); + uint64_t t1 = memory::readl<8>(buffer + 8); + + h0 += ((t0 ) & 0xfffffffffff); + h1 += ((t0 >> 44 | t1 << 20) & 0xfffffffffff); + h2 += (( t1 >> 24) & 0x3ffffffffff) | (last ? 0 : 1ull << 40); + + uint128_t d, d0, d1, d2; + d0 = (uint128_t)h0 * r0; d = (uint128_t)h1 * s2; d0 += d; d = (uint128_t)h2 * s1; d0 += d; + d1 = (uint128_t)h0 * r1; d = (uint128_t)h1 * r0; d1 += d; d = (uint128_t)h2 * s2; d1 += d; + d2 = (uint128_t)h0 * r2; d = (uint128_t)h1 * r1; d2 += d; d = (uint128_t)h2 * r0; d2 += d; + + uint64_t c = (uint64_t)(d0 >> 44); h0 = (uint64_t)d0 & 0xfffffffffff; + d1 += c; c = (uint64_t)(d1 >> 44); h1 = (uint64_t)d1 & 0xfffffffffff; + d2 += c; c = (uint64_t)(d2 >> 42); h2 = (uint64_t)d2 & 0x3ffffffffff; + + h0 += c * 5; c = h0 >> 44; h0 &= 0xfffffffffff; + h1 += c; + + h[0] = h0, h[1] = h1, h[2] = h2; + } + + uint64_t r[3]; + uint64_t h[3]; + uint64_t pad[2]; + + uint8_t buffer[16]; + uint offset; +}; + +}} diff --git a/nall/memory.hpp b/nall/memory.hpp index d56101f6..0950e0cb 100644 --- a/nall/memory.hpp +++ b/nall/memory.hpp @@ -27,6 +27,12 @@ namespace nall { namespace memory { template inline auto assign(T* target) -> void {} template inline auto assign(T* target, const U& value, P&&... p) -> void; + + template inline auto readl(const void* source) -> T; + template inline auto readm(const void* source) -> T; + + template inline auto writel(void* target, T data) -> void; + template inline auto writem(void* target, T data) -> void; }} namespace nall { @@ -130,4 +136,28 @@ auto memory::assign(T* target, const U& value, P&&... p) -> void { assign(target, forward

(p)...); } +template auto memory::readl(const void* source) -> T { + auto p = (const uint8_t*)source; + T data = 0; + for(uint n = 0; n < size; n++) data |= T(*p++) << n * 8; + return data; +} + +template auto memory::readm(const void* source) -> T { + auto p = (const uint8_t*)source; + T data = 0; + for(int n = size - 1; n >= 0; n--) data |= T(*p++) << n * 8; + return data; +} + +template auto memory::writel(void* target, T data) -> void { + auto p = (uint8_t*)target; + for(uint n = 0; n < size; n++) *p++ = data >> n * 8; +} + +template auto memory::writem(void* target, T data) -> void { + auto p = (uint8_t*)target; + for(int n = size - 1; n >= 0; n--) *p++ = data >> n * 8; +} + } diff --git a/nall/nall.hpp b/nall/nall.hpp index 66560adb..48185f4f 100644 --- a/nall/nall.hpp +++ b/nall/nall.hpp @@ -15,6 +15,7 @@ #include #include +#include #include #include #include diff --git a/nall/platform.hpp b/nall/platform.hpp index a8e6aed3..142a52d3 100644 --- a/nall/platform.hpp +++ b/nall/platform.hpp @@ -104,18 +104,12 @@ namespace Math { #if defined(COMPILER_CLANG) || defined(COMPILER_GCC) #define neverinline __attribute__((noinline)) #define alwaysinline inline __attribute__((always_inline)) - #if !defined(PLATFORM_MACOSX) - //todo: we want this prefix; but it causes compilation errors - #define deprecated __attribute__((deprecated)) - #endif #elif defined(COMPILER_VISUALCPP) #define neverinline __declspec(noinline) #define alwaysinline inline __forceinline - #define deprecated __declspec(deprecated) #else #define neverinline #define alwaysinline inline - #define deprecated #endif #if defined(COMPILER_CLANG) || defined(COMPILER_GCC) diff --git a/nall/primitives.hpp b/nall/primitives.hpp index b933801c..697ea9e0 100644 --- a/nall/primitives.hpp +++ b/nall/primitives.hpp @@ -24,11 +24,11 @@ private: template struct Natural { using type = - type_if, uint8_t, - type_if, uint16_t, - type_if, uint32_t, - type_if, uint64_t, - void>>>>; + typename conditional::type>::type>::type>::type; enum : type { Mask = ~0ull >> (64 - Bits) }; @@ -127,11 +127,11 @@ private: template struct Integer { using type = - type_if, int8_t, - type_if, int16_t, - type_if, int32_t, - type_if, int64_t, - void>>>>; + typename conditional::type>::type>::type>::type; using utype = typename Natural::type; enum : utype { Mask = ~0ull >> (64 - Bits), Sign = 1ull << (Bits - 1) }; @@ -231,10 +231,9 @@ private: template struct Real { using type = - type_if, float32_t, - type_if, float64_t, - //type_if, float80_t, - void>>; + typename conditional::type>::type; inline Real() : data(0.0) {} template inline Real(const T& value) : data((type)value) {} diff --git a/nall/shared-pointer.hpp b/nall/shared-pointer.hpp index 90116656..7e4307ef 100644 --- a/nall/shared-pointer.hpp +++ b/nall/shared-pointer.hpp @@ -52,22 +52,22 @@ struct shared_pointer { operator=(move(source)); } - template>> + template::value>> shared_pointer(const shared_pointer& source) { operator=(source); } - template>> + template::value>> shared_pointer(shared_pointer&& source) { operator=(move(source)); } - template>> + template::value>> shared_pointer(const shared_pointer_weak& source) { operator=(source); } - template>> + template::value>> shared_pointer(const shared_pointer& source, T* pointer) { if((bool)source && (T*)source.manager->pointer == pointer) { manager = source.manager; @@ -108,7 +108,7 @@ struct shared_pointer { return *this; } - template>> + template::value>> auto operator=(const shared_pointer& source) -> shared_pointer& { if((uintptr)this != (uintptr)&source) { reset(); @@ -120,7 +120,7 @@ struct shared_pointer { return *this; } - template>> + template::value>> auto operator=(shared_pointer&& source) -> shared_pointer& { if((uintptr)this != (uintptr)&source) { reset(); @@ -130,7 +130,7 @@ struct shared_pointer { return *this; } - template>> + template::value>> auto operator=(const shared_pointer_weak& source) -> shared_pointer& { reset(); if((bool)source) { diff --git a/nall/stdint.hpp b/nall/stdint.hpp index 9b4c870b..9b36a6cc 100644 --- a/nall/stdint.hpp +++ b/nall/stdint.hpp @@ -58,8 +58,8 @@ static_assert(sizeof(uint16_t) == 2, "int16_t is not of the correct size"); static_assert(sizeof(uint32_t) == 4, "int32_t is not of the correct size"); static_assert(sizeof(uint64_t) == 8, "int64_t is not of the correct size"); -static_assert(sizeof(float) >= 4, "float32_t is not of the correct size"); -static_assert(sizeof(double) >= 8, "float64_t is not of the correct size"); +static_assert(sizeof(float) >= 4, "float32_t is not of the correct size"); +static_assert(sizeof(double) >= 8, "float64_t is not of the correct size"); //static_assert(sizeof(long double) >= 10, "float80_t is not of the correct size"); using uint = unsigned int; diff --git a/nall/string.hpp b/nall/string.hpp index 835a2680..522398e2 100644 --- a/nall/string.hpp +++ b/nall/string.hpp @@ -63,9 +63,9 @@ template struct stringify; template inline auto print(P&&...) -> void; template inline auto print(FILE*, P&&...) -> void; template inline auto pad(const T& value, long precision = 0, char padchar = ' ') -> string; -inline auto hex(uintmax value, long precision = 0, char padchar = '0') -> string; -inline auto octal(uintmax value, long precision = 0, char padchar = '0') -> string; -inline auto binary(uintmax value, long precision = 0, char padchar = '0') -> string; +template inline auto hex(T value, long precision = 0, char padchar = '0') -> string; +template inline auto octal(T value, long precision = 0, char padchar = '0') -> string; +template inline auto binary(T value, long precision = 0, char padchar = '0') -> string; template inline auto pointer(const T* value, long precision = 0) -> string; inline auto pointer(uintptr value, long precision = 0) -> string; @@ -75,9 +75,9 @@ inline auto tokenize(string_vector& list, const char* s, const char* p) -> bool; //utility.hpp inline auto slice(string_view self, int offset = 0, int length = -1) -> string; -inline auto fromInteger(char* result, intmax value) -> char*; -inline auto fromNatural(char* result, uintmax value) -> char*; -inline auto fromReal(char* str, long double value) -> uint; +template inline auto fromInteger(char* result, T value) -> char*; +template inline auto fromNatural(char* result, T value) -> char*; +template inline auto fromReal(char* str, T value) -> uint; struct string { using type = string; @@ -177,6 +177,10 @@ public: inline auto operator[](int) const -> const char&; inline auto operator()(int, char) const -> char; template inline auto assign(P&&...) -> type&; + template inline auto prepend(const T&, P&&...) -> type&; + template inline auto prepend(const nall::string_format&, P&&...) -> type&; + inline auto prepend() -> type&; + template inline auto _prepend(const stringify&) -> string&; template inline auto append(const T&, P&&...) -> type&; template inline auto append(const nall::string_format&, P&&...) -> type&; inline auto append() -> type&; diff --git a/nall/string/cast.hpp b/nall/string/cast.hpp index 346f13a8..9a1a3926 100644 --- a/nall/string/cast.hpp +++ b/nall/string/cast.hpp @@ -67,7 +67,7 @@ template<> struct stringify { char _data[2 + sizeof(signed long long) * 3]; }; -#if INTMAX_BITS >= 128 +#if defined(__SIZEOF_INT128__) template<> struct stringify { stringify(int128_t source) { fromInteger(_data, source); } auto data() const -> const char* { return _data; } @@ -120,7 +120,7 @@ template<> struct stringify { char _data[1 + sizeof(unsigned long long) * 3]; }; -#if INTMAX_BITS >= 128 +#if defined(__SIZEOF_INT128__) template<> struct stringify { stringify(uint128_t source) { fromNatural(_data, source); } auto data() const -> const char* { return _data; } diff --git a/nall/string/core.hpp b/nall/string/core.hpp index 60075437..41d0fe45 100644 --- a/nall/string/core.hpp +++ b/nall/string/core.hpp @@ -30,6 +30,26 @@ template auto string::assign(P&&... p) -> string& { return append(forward

(p)...); } +template auto string::prepend(const T& value, P&&... p) -> string& { + prepend(forward

(p)...); + return _prepend(make_string(value)); +} + +template auto string::prepend(const nall::string_format& value, P&&... p) -> string& { + prepend(forward

(p)...); + return format(value); +} + +auto string::prepend() -> string& { + return *this; +} + +template auto string::_prepend(const stringify& source) -> string& { + resize(source.size() + size()); + memory::move(get() + source.size(), get(), size() - source.size()); + memory::copy(get(), source.data(), source.size()); +} + template auto string::append(const T& value, P&&... p) -> string& { _append(make_string(value)); return append(forward

(p)...); diff --git a/nall/string/format.hpp b/nall/string/format.hpp index ef682b5c..536164be 100644 --- a/nall/string/format.hpp +++ b/nall/string/format.hpp @@ -84,9 +84,9 @@ template auto pad(const T& value, long precision, char padchar) -> s return buffer; } -auto hex(uintmax value, long precision, char padchar) -> string { +template auto hex(T value, long precision, char padchar) -> string { string buffer; - buffer.resize(sizeof(uintmax) * 2); + buffer.resize(sizeof(T) * 2); char* p = buffer.get(); uint size = 0; @@ -101,9 +101,9 @@ auto hex(uintmax value, long precision, char padchar) -> string { return buffer; } -auto octal(uintmax value, long precision, char padchar) -> string { +template auto octal(T value, long precision, char padchar) -> string { string buffer; - buffer.resize(sizeof(uintmax) * 3); + buffer.resize(sizeof(T) * 3); char* p = buffer.get(); uint size = 0; @@ -117,9 +117,9 @@ auto octal(uintmax value, long precision, char padchar) -> string { return buffer; } -auto binary(uintmax value, long precision, char padchar) -> string { +template auto binary(T value, long precision, char padchar) -> string { string buffer; - buffer.resize(sizeof(uintmax) * 8); + buffer.resize(sizeof(T) * 8); char* p = buffer.get(); uint size = 0; diff --git a/nall/string/transform/dml.hpp b/nall/string/transform/dml.hpp index e2d5fa50..c376b3b1 100644 --- a/nall/string/transform/dml.hpp +++ b/nall/string/transform/dml.hpp @@ -87,7 +87,7 @@ auto DML::parseBlock(string& block, const string& pathname, uint depth) -> bool if(state.sections++) state.output.append(""); state.output.append("

"); } - auto content = lines.takeLeft().trimLeft("# ", 1L).split("::", 1L); + auto content = lines.takeLeft().trimLeft("# ", 1L).split("::", 1L).strip(); auto data = markup(content[0]); auto name = escape(content(1, data.hash())); state.output.append("
", data); @@ -100,7 +100,7 @@ auto DML::parseBlock(string& block, const string& pathname, uint depth) -> bool //header else if(auto depth = count(block, '=')) { - auto content = slice(lines.takeLeft(), depth + 1).split("::", 1L); + auto content = slice(lines.takeLeft(), depth + 1).split("::", 1L).strip(); auto data = markup(content[0]); auto name = escape(content(1, data.hash())); if(depth <= 6) { @@ -121,7 +121,7 @@ auto DML::parseBlock(string& block, const string& pathname, uint depth) -> bool if(auto depth = count(line, '-')) { while(level < depth) level++, state.output.append("
    \n"); while(level > depth) level--, state.output.append("
\n"); - auto content = slice(line, depth + 1).split("::", 1L); + auto content = slice(line, depth + 1).split("::", 1L).strip(); auto data = markup(content[0]); auto name = escape(content(1, data.hash())); state.output.append("
  • ", data, "
  • \n"); @@ -204,69 +204,6 @@ auto DML::escape(const string& text) -> string { return output; } -/* //revision 0.03 parser -auto DML::markup(const string& text) -> string { - string output; - - char match = 0; - uint offset = 0; - for(uint n = 0; n < text.size();) { - char a = n ? text[n - 1] : 0; - char b = text[n]; - char c = text[n++ + 1]; - - bool d = !a || a == ' ' || a == '\t' || a == '\r' || a == '\n'; //is previous character whitespace? - bool e = !c || c == ' ' || c == '\t' || c == '\r' || c == '\n'; //is next character whitespace? - bool f = (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9'); //is next character alphanumeric? - - if(!match && d && !e) { - if(b == '*') { match = '*'; offset = n; continue; } - if(b == '/') { match = '/'; offset = n; continue; } - if(b == '_') { match = '_'; offset = n; continue; } - if(b == '~') { match = '~'; offset = n; continue; } - if(b == '|') { match = '|'; offset = n; continue; } - if(b == '[') { match = ']'; offset = n; continue; } - if(b == '{') { match = '}'; offset = n; continue; } - } - - //if we reach the end of the string without a match; force a match so the content is still output - if(match && b != match && !c) { b = match; f = 0; n++; } - - if(match && b == match && !f) { - match = 0; - auto content = slice(text, offset, n - offset - 1); - if(b == '*') { output.append("", escape(content), ""); continue; } - if(b == '/') { output.append("", escape(content), ""); continue; } - if(b == '_') { output.append("", escape(content), ""); continue; } - if(b == '~') { output.append("", escape(content), ""); continue; } - if(b == '|') { output.append("", escape(content), ""); continue; } - if(b == ']') { - auto p = content.split(" => ", 1L); - p[0].replace("@/", settings.host); - output.append("", escape(p(1, p[0])), ""); - continue; - } - if(b == '}') { - auto p = content.split(" => ", 1L); - p[0].replace("@/", settings.host); - output.append("\"","); - continue; - } - continue; - } - - if(match) continue; - if(b == '\\' && c) { output.append(c); n++; continue; } //character escaping - if(b == '&') { output.append("&"); continue; } //entity escaping - if(b == '<') { output.append("<"); continue; } //... - if(b == '>') { output.append(">"); continue; } //... - if(b == '"') { output.append("""); continue; } //... - output.append(b); - } - - return output; -} */ - auto DML::markup(const string& s) -> string { string t; diff --git a/nall/string/utility.hpp b/nall/string/utility.hpp index 29e4a550..fe45f1f0 100644 --- a/nall/string/utility.hpp +++ b/nall/string/utility.hpp @@ -92,11 +92,11 @@ auto slice(string_view self, int offset, int length) -> string { return result; } -auto fromInteger(char* result, intmax value) -> char* { +template auto fromInteger(char* result, T value) -> char* { bool negative = value < 0; if(negative) value = -value; - char buffer[64]; + char buffer[1 + sizeof(T) * 3]; uint size = 0; do { @@ -111,8 +111,8 @@ auto fromInteger(char* result, intmax value) -> char* { return result; } -auto fromNatural(char* result, uintmax value) -> char* { - char buffer[64]; +template auto fromNatural(char* result, T value) -> char* { + char buffer[1 + sizeof(T) * 3]; uint size = 0; do { @@ -129,13 +129,13 @@ auto fromNatural(char* result, uintmax value) -> char* { //using sprintf is certainly not the most ideal method to convert //a double to a string ... but attempting to parse a double by //hand, digit-by-digit, results in subtle rounding errors. -auto fromReal(char* result, long double value) -> uint { +template auto fromReal(char* result, T value) -> uint { char buffer[256]; #ifdef _WIN32 //Windows C-runtime does not support long double via sprintf() sprintf(buffer, "%f", (double)value); #else - sprintf(buffer, "%Lf", value); + sprintf(buffer, "%Lf", (long double)value); #endif //remove excess 0's in fraction (2.500000 -> 2.5) diff --git a/nall/traits.hpp b/nall/traits.hpp index 900df0dc..c07f5909 100644 --- a/nall/traits.hpp +++ b/nall/traits.hpp @@ -1,12 +1,17 @@ #pragma once #include -#include + +//pull all type traits used by nall from std namespace into nall namespace +//this removes the requirement to prefix type traits with std:: within nall namespace nall { using std::add_const; + using std::conditional; using std::decay; using std::declval; + using std::enable_if; + using std::enable_if_t; using std::false_type; using std::forward; using std::initializer_list; @@ -15,6 +20,8 @@ namespace nall { using std::is_function; using std::is_integral; using std::is_same; + using std::is_signed; + using std::is_unsigned; using std::move; using std::nullptr_t; using std::remove_extent; @@ -22,32 +29,3 @@ namespace nall { using std::swap; using std::true_type; } - -namespace nall { - template struct expression { static constexpr bool value = C; }; -} - -namespace nall { - namespace traits { - enum class enable_type {}; - enum class disable_type {}; - - template struct enable_if { using type = T; }; - template struct enable_if {}; - - template struct disable_if { using type = T; }; - template struct disable_if {}; - } - - template using enable_if = typename traits::enable_if::type; - template using disable_if = typename traits::disable_if::type; -} - -namespace nall { - namespace traits { - template struct type_if { using type = T; }; - template struct type_if { using type = F; }; - } - - template using type_if = typename traits::type_if::type; -} diff --git a/nall/windows/shared-memory.hpp b/nall/windows/shared-memory.hpp index aa45938a..aa74a70a 100644 --- a/nall/windows/shared-memory.hpp +++ b/nall/windows/shared-memory.hpp @@ -15,7 +15,7 @@ struct shared_memory { auto empty() const -> bool { return true; } auto size() const -> uint { return 0; } auto acquired() const -> bool { return false; } - auto acquire() -> uint8* { return nullptr; } + auto acquire() -> uint8_t* { return nullptr; } auto release() -> void {} auto reset() -> void {} auto create(const string& name, uint size) -> bool { return false; } diff --git a/nall/xorg/clipboard.hpp b/nall/xorg/clipboard.hpp new file mode 100644 index 00000000..24b5ea9c --- /dev/null +++ b/nall/xorg/clipboard.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include + +namespace nall { namespace Clipboard { + +auto clear() -> void { + XDisplay display; + if(auto atom = XInternAtom(display, "CLIPBOARD", XlibTrue)) { + XSetSelectionOwner(display, atom, XlibNone, XlibCurrentTime); + } +} + +}} diff --git a/nall/xorg/guard.hpp b/nall/xorg/guard.hpp index 9b528866..ff613f05 100644 --- a/nall/xorg/guard.hpp +++ b/nall/xorg/guard.hpp @@ -1,15 +1,8 @@ #ifndef NALL_XORG_GUARD_HPP #define NALL_XORG_GUARD_HPP -#define None -#undef XlibNone -#define XlibNone 0L +#define Atom XlibAtom #define Bool XlibBool -#define Button1 XlibButton1 -#define Button2 XlibButton2 -#define Button3 XlibButton3 -#define Button4 XlibButton4 -#define Button5 XlibButton5 #define Display XlibDisplay #define Screen XlibScreen #define Window XlibWindow @@ -17,15 +10,35 @@ #else #undef NALL_XORG_GUARD_HPP -#undef None +#undef Atom #undef Bool +#undef Display +#undef Screen +#undef Window + +#ifndef NALL_XORG_GUARD_CONSTANTS +#define NALL_XORG_GUARD_CONSTANTS +enum XlibConstants : int { + XlibButton1 = Button1, + XlibButton2 = Button2, + XlibButton3 = Button3, + XlibButton4 = Button4, + XlibButton5 = Button5, + XlibCurrentTime = CurrentTime, + XlibFalse = False, + XlibNone = None, + XlibTrue = True, +}; +#endif + #undef Button1 #undef Button2 #undef Button3 #undef Button4 #undef Button5 -#undef Display -#undef Screen -#undef Window +#undef CurrentTime +#undef False +#undef None +#undef True #endif diff --git a/nall/xorg/xorg.hpp b/nall/xorg/xorg.hpp index 56ff3163..b93eef05 100644 --- a/nall/xorg/xorg.hpp +++ b/nall/xorg/xorg.hpp @@ -7,3 +7,12 @@ #include #include #include + +struct XDisplay { + XDisplay() { _display = XOpenDisplay(nullptr); } + ~XDisplay() { XCloseDisplay(_display); } + operator XlibDisplay*() const { return _display; } + +private: + XlibDisplay* _display; +};