From f3e67da93779bba924a82b82de5935a5d8297678 Mon Sep 17 00:00:00 2001 From: Tim Allen Date: Fri, 28 Oct 2016 08:16:58 +1100 Subject: [PATCH] Update to v101r19 release. byuu says: Changelog: - added \~130 new PAL games to icarus (courtesy of Smarthuman and aquaman) - added all three Korean-localized games to icarus - sfc: removed SuperDisc emulation (it was going nowhere) - sfc: fixed MSU1 regression where the play/repeat flags were not being cleared on track select - nall: cryptography support added; will be used to sign future databases (validation will always be optional) - minor shims to fix compilation issues due to nall changes The real magic is that we now have 25-30% of the PAL SNES library in icarus! Signing will be tricky. Obviously if I put the public key inside the higan archive, then all anyone has to do is change that public key for their own releases. And if you download from my site (which is now over HTTPS), then you don't need the signing to verify integrity. I may just put the public key on my site on my site and leave it at that, we'll see. --- higan/emulator/emulator.hpp | 2 +- higan/fc/cartridge/cartridge.cpp | 4 +- higan/processor/lr35902/disassembler.cpp | 4 + higan/processor/r65816/disassembler.cpp | 4 + higan/sfc/GNUmakefile | 8 +- higan/sfc/cartridge/cartridge.cpp | 26 +- higan/sfc/coprocessor/msu1/msu1.cpp | 10 +- higan/sfc/expansion/expansion.hpp | 1 - higan/sfc/expansion/superdisc/nec.cpp | 202 - higan/sfc/expansion/superdisc/sony.cpp | 143 - higan/sfc/expansion/superdisc/superdisc.cpp | 106 - higan/sfc/expansion/superdisc/superdisc.hpp | 38 - higan/sfc/interface/interface.cpp | 4 - higan/sfc/interface/interface.hpp | 1 - higan/sfc/system/peripherals.cpp | 1 - hiro/gtk/desktop.cpp | 16 +- hiro/qt/widget/canvas.cpp | 6 +- icarus/Database/Super Famicom.bml | 3281 +++++++++++++---- nall/any.hpp | 2 +- nall/arithmetic.hpp | 69 + nall/arithmetic/barrett.hpp | 21 + nall/arithmetic/natural.hpp | 353 ++ nall/arithmetic/unsigned.hpp | 39 + nall/beat/archive.hpp | 10 +- nall/beat/delta.hpp | 10 +- nall/beat/file.hpp | 4 +- nall/beat/linear.hpp | 8 +- nall/beat/metadata.hpp | 4 +- nall/beat/multi.hpp | 14 +- nall/beat/patch.hpp | 10 +- nall/certificates/byuu.crt | 12 - nall/certificates/byuu.net.crt | 13 - nall/certificates/byuu.org.crt | 13 - nall/cipher/chacha20.hpp | 78 + nall/decode/base57.hpp | 23 + nall/decode/url.hpp | 8 +- nall/elliptic-curve/curve25519.hpp | 55 + nall/elliptic-curve/ed25519.hpp | 164 + nall/elliptic-curve/modulo25519-reference.hpp | 79 + nall/elliptic-curve/modulo25519.hpp | 234 ++ nall/encode/base57.hpp | 19 + nall/encode/url.hpp | 9 +- nall/encode/zip.hpp | 2 +- nall/function.hpp | 2 +- nall/hash/crc16.hpp | 35 +- nall/hash/crc32.hpp | 35 +- nall/hash/crc64.hpp | 35 +- nall/hash/hash.hpp | 43 + nall/hash/sha224.hpp | 101 + nall/hash/sha256.hpp | 72 +- nall/hash/sha384.hpp | 114 + nall/hash/sha512.hpp | 114 + nall/mac/poly1305.hpp | 116 + nall/memory.hpp | 30 + nall/nall.hpp | 1 + nall/platform.hpp | 6 - nall/primitives.hpp | 27 +- nall/shared-pointer.hpp | 14 +- nall/stdint.hpp | 4 +- nall/string.hpp | 16 +- nall/string/cast.hpp | 4 +- nall/string/core.hpp | 20 + nall/string/format.hpp | 12 +- nall/string/transform/dml.hpp | 69 +- nall/string/utility.hpp | 12 +- nall/traits.hpp | 38 +- nall/windows/shared-memory.hpp | 2 +- nall/xorg/clipboard.hpp | 14 + nall/xorg/guard.hpp | 37 +- nall/xorg/xorg.hpp | 9 + 70 files changed, 4425 insertions(+), 1667 deletions(-) delete mode 100644 higan/sfc/expansion/superdisc/nec.cpp delete mode 100644 higan/sfc/expansion/superdisc/sony.cpp delete mode 100644 higan/sfc/expansion/superdisc/superdisc.cpp delete mode 100644 higan/sfc/expansion/superdisc/superdisc.hpp create mode 100644 nall/arithmetic.hpp create mode 100644 nall/arithmetic/barrett.hpp create mode 100644 nall/arithmetic/natural.hpp create mode 100644 nall/arithmetic/unsigned.hpp delete mode 100644 nall/certificates/byuu.crt delete mode 100644 nall/certificates/byuu.net.crt delete mode 100644 nall/certificates/byuu.org.crt create mode 100644 nall/cipher/chacha20.hpp create mode 100644 nall/decode/base57.hpp create mode 100644 nall/elliptic-curve/curve25519.hpp create mode 100644 nall/elliptic-curve/ed25519.hpp create mode 100644 nall/elliptic-curve/modulo25519-reference.hpp create mode 100644 nall/elliptic-curve/modulo25519.hpp create mode 100644 nall/encode/base57.hpp create mode 100644 nall/hash/hash.hpp create mode 100644 nall/hash/sha224.hpp create mode 100644 nall/hash/sha384.hpp create mode 100644 nall/hash/sha512.hpp create mode 100644 nall/mac/poly1305.hpp create mode 100644 nall/xorg/clipboard.hpp 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; +};