mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-02-23 14:42:33 +01:00
byuu says: Changelog: - Super Famicom: added support for loading manifests without embedded mapping information¹ - genius: initial commit - various Makefile cleanups ¹: so the idea here is to try and aim for a stable manifest format, and to allow direct transposition of icarus/genius database entries into manifest files. The exact mechanics of how this is going to work is currently in flux, but we'll get there. For right now, `Super Famicom.sys` gains `boards.bml`, which is the raw database from my board-editor tool, and higan itself tries to load `boards.bml`, match an entry to game/board from the game's `manifest.bml` file, and then transform it into the format currently used by higan. It does this only when the game's `manifest.bml` file lacks a board node. When such a board node exists, it works as previous versions of higan did. The only incompatible change right now is information/title is now located at game/label. I may transition window title display to just use the filenames instead. Longer term, some thought is going to need to go into the format of the `boards.bml` database itself, and at which point in the process I should be transforming things. Give it time, we'll refine this into something nicer.
34 lines
1.1 KiB
C++
34 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include <nall/arithmetic.hpp>
|
|
|
|
namespace nall { namespace Encode {
|
|
|
|
template<uint Bits, typename T> inline auto Base(T value) -> string {
|
|
static const string format =
|
|
Bits == 2 ? "01"
|
|
: Bits == 8 ? "01234567"
|
|
: Bits == 10 ? "0123456789"
|
|
: Bits == 16 ? "0123456789abcdef"
|
|
: Bits == 32 ? "0123456789abcdefghijklmnopqrstuv"
|
|
: Bits == 34 ? "023456789abcdefghijkmnopqrstuvwxyz" //1l
|
|
: Bits == 36 ? "0123456789abcdefghijklmnopqrstuvwxyz"
|
|
: Bits == 57 ? "23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" //01IOl
|
|
: Bits == 62 ? "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
|
|
: Bits == 64 ? "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz{}"
|
|
: Bits == 85 ? "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%()+,-.:;=@[]^_`{|}~" //\ "&'*/<>?
|
|
: "";
|
|
static const uint size = ceil(sizeof(T) * 8 / log2(Bits));
|
|
|
|
string result;
|
|
result.resize(size);
|
|
char* data = result.get() + size;
|
|
for(auto byte : result) {
|
|
*--data = format[value % Bits];
|
|
value /= Bits;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
}}
|