From 03b06257d300d3864b8c5f79a2c9eabf84a2e071 Mon Sep 17 00:00:00 2001 From: Tim Allen Date: Thu, 4 Oct 2018 20:11:23 +1000 Subject: [PATCH] Update to v106r65 release. byuu says: This synchronizes bsnes/higan with many recent internal nall changes. This will be the last WIP until I am situated in Japan. Apologies for the bugfixes that didn't get applied yet, I ran out of time. --- genius/GNUmakefile | 2 + genius/genius.cpp | 16 +- higan/emulator/emulator.hpp | 2 +- higan/gb/apu/apu.cpp | 2 +- higan/sfc/slot/bsmemory/bsmemory.cpp | 2 +- higan/target-bsnes/bsnes.cpp | 3 +- higan/target-bsnes/program/game-rom.cpp | 2 +- higan/target-bsnes/program/states.cpp | 2 +- higan/target-higan/higan.cpp | 2 +- higan/target-higan/higan.hpp | 3 + higan/target-higan/program/program.cpp | 5 +- higan/target-higan/program/program.hpp | 2 +- higan/target-higan/program/state.cpp | 10 +- icarus/{database => Database}/BS Memory.bml | 2 +- .../{database => Database}/Sufami Turbo.bml | 2 +- .../{database => Database}/Super Famicom.bml | 137 +++++++- icarus/{firmware => Firmware}/cx4.data.rom | Bin icarus/{firmware => Firmware}/sgb1.boot.rom | Bin icarus/{firmware => Firmware}/sgb2.boot.rom | Bin icarus/GNUmakefile | 8 +- icarus/core/core.cpp | 30 +- icarus/core/core.hpp | 2 +- icarus/core/super-famicom.cpp | 2 +- icarus/icarus.cpp | 14 +- nall/GNUmakefile | 21 +- nall/arguments.hpp | 161 +++++++++ nall/arithmetic.hpp | 13 +- nall/arithmetic/barrett.hpp | 25 +- nall/arithmetic/natural.hpp | 36 +- nall/arithmetic/unsigned.hpp | 26 +- nall/array-span.hpp | 8 + nall/array-view.hpp | 18 +- nall/beat/archive/archive.hpp | 272 -------------- nall/beat/archive/container.hpp | 200 +++++++++++ nall/beat/archive/create.hpp | 86 +++++ nall/beat/archive/extract.hpp | 27 ++ nall/beat/archive/node.hpp | 332 ++++++++++++++++++ nall/decode/lzsa.hpp | 4 +- nall/decode/zip.hpp | 8 +- nall/directory.hpp | 81 +++++ nall/elliptic-curve/curve25519.hpp | 46 +-- nall/elliptic-curve/ed25519.hpp | 138 ++++---- nall/elliptic-curve/modulo25519-optimized.hpp | 218 ++++++++++++ nall/elliptic-curve/modulo25519-reference.hpp | 131 +++---- nall/elliptic-curve/modulo25519.hpp | 234 ------------ nall/emulation/21fx.hpp | 12 +- nall/encode/bmp.hpp | 2 +- nall/encode/lzsa.hpp | 4 +- nall/encode/zip.hpp | 6 +- nall/file-buffer.hpp | 249 +++++++++++++ nall/file-map.hpp | 215 ++++++++++++ nall/file.hpp | 297 ++-------------- nall/filemap.hpp | 213 ----------- nall/image.hpp | 2 +- nall/inode.hpp | 47 ++- nall/literals.hpp | 25 -- nall/location.hpp | 2 + nall/mac/poly1305.hpp | 6 + nall/main.hpp | 18 +- nall/nall.hpp | 6 +- nall/path.hpp | 2 +- nall/platform.hpp | 1 + nall/random.hpp | 27 +- nall/serializer.hpp | 4 + nall/string/cast.hpp | 15 + nall/string/utility.hpp | 2 +- nall/terminal.hpp | 65 ++++ nall/traits.hpp | 8 + nall/vector.hpp | 4 +- nall/vector/core.hpp | 8 - nall/vector/memory.hpp | 2 +- nall/vector/specialization/uint8_t.hpp | 22 +- nall/vector/utility.hpp | 6 + nall/vfs/fs/file.hpp | 6 +- ruby/input/joypad/udev.cpp | 2 +- 75 files changed, 2242 insertions(+), 1371 deletions(-) rename icarus/{database => Database}/BS Memory.bml (97%) rename icarus/{database => Database}/Sufami Turbo.bml (99%) rename icarus/{database => Database}/Super Famicom.bml (99%) rename icarus/{firmware => Firmware}/cx4.data.rom (100%) rename icarus/{firmware => Firmware}/sgb1.boot.rom (100%) rename icarus/{firmware => Firmware}/sgb2.boot.rom (100%) create mode 100644 nall/arguments.hpp delete mode 100644 nall/beat/archive/archive.hpp create mode 100644 nall/beat/archive/container.hpp create mode 100644 nall/beat/archive/create.hpp create mode 100644 nall/beat/archive/extract.hpp create mode 100644 nall/beat/archive/node.hpp create mode 100644 nall/elliptic-curve/modulo25519-optimized.hpp delete mode 100644 nall/elliptic-curve/modulo25519.hpp create mode 100644 nall/file-buffer.hpp create mode 100644 nall/file-map.hpp delete mode 100644 nall/filemap.hpp delete mode 100644 nall/literals.hpp create mode 100644 nall/terminal.hpp diff --git a/genius/GNUmakefile b/genius/GNUmakefile index 908e0990..f2fc8468 100644 --- a/genius/GNUmakefile +++ b/genius/GNUmakefile @@ -55,3 +55,5 @@ else ifneq ($(filter $(platform),linux bsd),) rm -f $(prefix)/share/applications/$(name).desktop rm -f $(prefix)/share/icons/$(name).png endif + +-include obj/*.d diff --git a/genius/genius.cpp b/genius/genius.cpp index b8beb24f..85528b2c 100644 --- a/genius/genius.cpp +++ b/genius/genius.cpp @@ -148,7 +148,7 @@ auto ListWindow::loadDatabase(string location) -> void { } auto ListWindow::saveDatabase(string location) -> void { - file fp{location, file::mode::write}; + auto fp = file::open(location, file::mode::write); if(!fp) return MessageDialog().setParent(*this).setText({ "Error: failed to write file.\n\n", "Name: ", location @@ -618,24 +618,12 @@ auto hiro::initialize() -> void { } #include -auto nall::main(vector arguments) -> void { +auto nall::main(Arguments) -> void { new ListWindow; new GameWindow; new MemoryWindow; new OscillatorWindow; - //internal command used to synchronize all genius databases from an old format to a new format - //if enabled, use with extreme caution and make backups first -/*if(arguments.size() == 3 && arguments[1] == "--sync") { - for(auto& filename : directory::contents(arguments[2], "*.bml")) { - if(filename.beginsWith("Boards")) continue; - print(filename, "\n"); - listWindow->loadDatabase({arguments[2], filename}); - listWindow->saveDatabase({arguments[2], filename}); - } - return print("[Done]\n"); - }*/ - listWindow->setVisible(); Application::run(); } diff --git a/higan/emulator/emulator.hpp b/higan/emulator/emulator.hpp index ddb6ce1e..456823e7 100644 --- a/higan/emulator/emulator.hpp +++ b/higan/emulator/emulator.hpp @@ -28,7 +28,7 @@ using namespace nall; namespace Emulator { static const string Name = "higan"; - static const string Version = "106.64"; + static const string Version = "106.65"; static const string Author = "byuu"; static const string License = "GPLv3"; static const string Website = "https://byuu.org/"; diff --git a/higan/gb/apu/apu.cpp b/higan/gb/apu/apu.cpp index ec3e5170..347c96ff 100644 --- a/higan/gb/apu/apu.cpp +++ b/higan/gb/apu/apu.cpp @@ -67,7 +67,7 @@ auto APU::power() -> void { phase = 0; cycle = 0; - PRNG prng; + PRNG::PCG prng; for(auto& n : wave.pattern) n = prng.random(); } diff --git a/higan/sfc/slot/bsmemory/bsmemory.cpp b/higan/sfc/slot/bsmemory/bsmemory.cpp index 5c51354f..f8053eb4 100644 --- a/higan/sfc/slot/bsmemory/bsmemory.cpp +++ b/higan/sfc/slot/bsmemory/bsmemory.cpp @@ -54,7 +54,7 @@ auto BSMemory::load() -> bool { for(auto& byte : page.buffer[1]) byte = random(); for(auto& block : blocks) { - block.erased = 0; + block.erased = 1; block.locked = 1; } diff --git a/higan/target-bsnes/bsnes.cpp b/higan/target-bsnes/bsnes.cpp index 212e173e..6056199d 100644 --- a/higan/target-bsnes/bsnes.cpp +++ b/higan/target-bsnes/bsnes.cpp @@ -23,10 +23,9 @@ auto hiro::initialize() -> void { } #include -auto nall::main(vector arguments) -> void { +auto nall::main(Arguments arguments) -> void { settings.location = locate("settings.bml"); - arguments.takeLeft(); //ignore program location in argument parsing for(auto argument : arguments) { if(argument == "--fullscreen") { presentation.startFullScreen = true; diff --git a/higan/target-bsnes/program/game-rom.cpp b/higan/target-bsnes/program/game-rom.cpp index 1dc9207e..9629d25c 100644 --- a/higan/target-bsnes/program/game-rom.cpp +++ b/higan/target-bsnes/program/game-rom.cpp @@ -123,7 +123,7 @@ auto Program::openRomSuperFamicom(string name, vfs::file::mode mode) -> vfs::sha return vfs::fs::file::open({Location::notsuffix(superFamicom.location), ".msu"}, mode); } - if(name.match("msu1/track-*.pcm")) { + if(name.match("msu1/track*.pcm")) { name.trimLeft("msu1/track", 1L); return vfs::fs::file::open({Location::notsuffix(superFamicom.location), name}, mode); } diff --git a/higan/target-bsnes/program/states.cpp b/higan/target-bsnes/program/states.cpp index 6407eefe..ea5c30c5 100644 --- a/higan/target-bsnes/program/states.cpp +++ b/higan/target-bsnes/program/states.cpp @@ -100,7 +100,7 @@ auto Program::saveState(string filename) -> bool { if(gamePath().endsWith("/")) { string location = {statePath(), filename, ".bst"}; directory::create(Location::path(location)); - if(!file::write(location, saveState.data(), saveState.size())) { + if(!file::write(location, saveState)) { return showMessage({"Unable to write [", prefix, "] to disk"}), false; } } else { diff --git a/higan/target-higan/higan.cpp b/higan/target-higan/higan.cpp index 5d59fc82..eacc3d33 100644 --- a/higan/target-higan/higan.cpp +++ b/higan/target-higan/higan.cpp @@ -18,7 +18,7 @@ auto hiro::initialize() -> void { } #include -auto nall::main(vector arguments) -> void { +auto nall::main(Arguments arguments) -> void { new Program(arguments); Application::run(); } diff --git a/higan/target-higan/higan.hpp b/higan/target-higan/higan.hpp index 2741f067..7ee1856a 100644 --- a/higan/target-higan/higan.hpp +++ b/higan/target-higan/higan.hpp @@ -1,3 +1,6 @@ +#include +using namespace nall; + #include using namespace ruby; extern unique_pointer