move string functions to labeling, inline common routines
This commit is contained in:
@@ -52,32 +52,17 @@ uint64_t decode(const std::vector<uint8_t> &input, size_t &offset) {
|
|||||||
|
|
||||||
std::shared_ptr<ExperimentFlags::Flags> ExperimentFlags::flags_;
|
std::shared_ptr<ExperimentFlags::Flags> ExperimentFlags::flags_;
|
||||||
|
|
||||||
std::string UppercaseHexByte(uint8_t byte, bool leading) {
|
constexpr uint32_t kFastRomRegion = 0x808000;
|
||||||
if (leading) {
|
|
||||||
std::string result = absl::StrFormat("0x%02X", byte);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
std::string result = absl::StrFormat("%02X", byte);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
std::string UppercaseHexWord(uint16_t word) {
|
|
||||||
std::string result = absl::StrFormat("0x%04X", word);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
std::string UppercaseHexLong(uint32_t dword) {
|
|
||||||
std::string result = absl::StrFormat("0x%06X", dword);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t SnesToPc(uint32_t addr) {
|
inline uint32_t SnesToPc(uint32_t addr) noexcept {
|
||||||
if (addr >= 0x808000) {
|
if (addr >= kFastRomRegion) {
|
||||||
addr -= 0x808000;
|
addr -= kFastRomRegion;
|
||||||
}
|
}
|
||||||
uint32_t temp = (addr & 0x7FFF) + ((addr / 2) & 0xFF8000);
|
uint32_t temp = (addr & 0x7FFF) + ((addr / 2) & 0xFF8000);
|
||||||
return (temp + 0x0);
|
return (temp + 0x0);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t PcToSnes(uint32_t addr) {
|
inline uint32_t PcToSnes(uint32_t addr) {
|
||||||
uint8_t *b = reinterpret_cast<uint8_t *>(&addr);
|
uint8_t *b = reinterpret_cast<uint8_t *>(&addr);
|
||||||
b[2] = static_cast<uint8_t>(b[2] * 2);
|
b[2] = static_cast<uint8_t>(b[2] * 2);
|
||||||
|
|
||||||
@@ -96,8 +81,8 @@ uint32_t MapBankToWordAddress(uint8_t bank, uint16_t addr) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AddressFromBytes(uint8_t addr1, uint8_t addr2, uint8_t addr3) {
|
int AddressFromBytes(uint8_t bank, uint8_t high, uint8_t low) noexcept {
|
||||||
return (addr1 << 16) | (addr2 << 8) | addr3;
|
return (bank << 16) | (high << 8) | low;
|
||||||
}
|
}
|
||||||
|
|
||||||
// hextodec has been imported from SNESDisasm to parse hex numbers
|
// hextodec has been imported from SNESDisasm to parse hex numbers
|
||||||
@@ -130,15 +115,6 @@ int HexToDec(char *input, int length) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool StringReplace(std::string &str, const std::string &from,
|
|
||||||
const std::string &to) {
|
|
||||||
size_t start = str.find(from);
|
|
||||||
if (start == std::string::npos) return false;
|
|
||||||
|
|
||||||
str.replace(start, from.length(), to);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void stle(uint8_t *const p_arr, size_t const p_index, unsigned const p_val) {
|
void stle(uint8_t *const p_arr, size_t const p_index, unsigned const p_val) {
|
||||||
uint8_t v = (p_val >> (8 * p_index)) & 0xff;
|
uint8_t v = (p_val >> (8 * p_index)) & 0xff;
|
||||||
|
|
||||||
|
|||||||
@@ -194,21 +194,16 @@ class Logger {
|
|||||||
static std::vector<std::string> logs;
|
static std::vector<std::string> logs;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string UppercaseHexByte(uint8_t byte, bool leading = false);
|
inline uint32_t SnesToPc(uint32_t addr) noexcept;
|
||||||
std::string UppercaseHexWord(uint16_t word);
|
|
||||||
std::string UppercaseHexLong(uint32_t dword);
|
|
||||||
|
|
||||||
uint32_t SnesToPc(uint32_t addr);
|
inline uint32_t PcToSnes(uint32_t addr);
|
||||||
uint32_t PcToSnes(uint32_t addr);
|
|
||||||
|
|
||||||
uint32_t MapBankToWordAddress(uint8_t bank, uint16_t addr);
|
inline uint32_t MapBankToWordAddress(uint8_t bank, uint16_t addr);
|
||||||
|
|
||||||
|
inline int AddressFromBytes(uint8_t bank, uint8_t high, uint8_t low) noexcept;
|
||||||
|
|
||||||
int AddressFromBytes(uint8_t addr1, uint8_t addr2, uint8_t addr3);
|
|
||||||
int HexToDec(char *input, int length);
|
int HexToDec(char *input, int length);
|
||||||
|
|
||||||
bool StringReplace(std::string &str, const std::string &from,
|
|
||||||
const std::string &to);
|
|
||||||
|
|
||||||
void stle16b_i(uint8_t *const p_arr, size_t const p_index,
|
void stle16b_i(uint8_t *const p_arr, size_t const p_index,
|
||||||
uint16_t const p_val);
|
uint16_t const p_val);
|
||||||
uint16_t ldle16b_i(uint8_t const *const p_arr, size_t const p_index);
|
uint16_t ldle16b_i(uint8_t const *const p_arr, size_t const p_index);
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
#include "app/core/labeling.h"
|
#include "app/core/labeling.h"
|
||||||
|
|
||||||
#include "imgui/imgui.h"
|
|
||||||
#include "imgui/misc/cpp/imgui_stdlib.h"
|
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
@@ -13,11 +10,39 @@
|
|||||||
#include "app/core/common.h"
|
#include "app/core/common.h"
|
||||||
#include "app/core/constants.h"
|
#include "app/core/constants.h"
|
||||||
#include "app/gui/icons.h"
|
#include "app/gui/icons.h"
|
||||||
|
#include "imgui/imgui.h"
|
||||||
|
#include "imgui/misc/cpp/imgui_stdlib.h"
|
||||||
|
|
||||||
namespace yaze {
|
namespace yaze {
|
||||||
namespace app {
|
namespace app {
|
||||||
namespace core {
|
namespace core {
|
||||||
|
|
||||||
|
std::string UppercaseHexByte(uint8_t byte, bool leading) {
|
||||||
|
if (leading) {
|
||||||
|
std::string result = absl::StrFormat("0x%02X", byte);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
std::string result = absl::StrFormat("%02X", byte);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
std::string UppercaseHexWord(uint16_t word) {
|
||||||
|
std::string result = absl::StrFormat("0x%04X", word);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
std::string UppercaseHexLong(uint32_t dword) {
|
||||||
|
std::string result = absl::StrFormat("0x%06X", dword);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StringReplace(std::string& str, const std::string& from,
|
||||||
|
const std::string& to) {
|
||||||
|
size_t start = str.find(from);
|
||||||
|
if (start == std::string::npos) return false;
|
||||||
|
|
||||||
|
str.replace(start, from.length(), to);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool ResourceLabelManager::LoadLabels(const std::string& filename) {
|
bool ResourceLabelManager::LoadLabels(const std::string& filename) {
|
||||||
std::ifstream file(filename);
|
std::ifstream file(filename);
|
||||||
if (!file.is_open()) {
|
if (!file.is_open()) {
|
||||||
|
|||||||
@@ -17,6 +17,13 @@ namespace yaze {
|
|||||||
namespace app {
|
namespace app {
|
||||||
namespace core {
|
namespace core {
|
||||||
|
|
||||||
|
std::string UppercaseHexByte(uint8_t byte, bool leading = false);
|
||||||
|
std::string UppercaseHexWord(uint16_t word);
|
||||||
|
std::string UppercaseHexLong(uint32_t dword);
|
||||||
|
|
||||||
|
bool StringReplace(std::string& str, const std::string& from,
|
||||||
|
const std::string& to);
|
||||||
|
|
||||||
// Default types
|
// Default types
|
||||||
static constexpr absl::string_view kDefaultTypes[] = {
|
static constexpr absl::string_view kDefaultTypes[] = {
|
||||||
"Dungeon Names", "Dungeon Room Names", "Overworld Map Names"};
|
"Dungeon Names", "Dungeon Room Names", "Overworld Map Names"};
|
||||||
@@ -32,8 +39,6 @@ struct ResourceLabelManager {
|
|||||||
const std::string& defaultValue);
|
const std::string& defaultValue);
|
||||||
std::string CreateOrGetLabel(const std::string& type, const std::string& key,
|
std::string CreateOrGetLabel(const std::string& type, const std::string& key,
|
||||||
const std::string& defaultValue);
|
const std::string& defaultValue);
|
||||||
std::string CreateOrGetLabel(const std::string& type, const std::string& key,
|
|
||||||
const absl::string_view& defaultValue);
|
|
||||||
|
|
||||||
bool labels_loaded_ = false;
|
bool labels_loaded_ = false;
|
||||||
std::string filename_;
|
std::string filename_;
|
||||||
|
|||||||
Reference in New Issue
Block a user