mirror of
https://github.com/izzy2lost/Torch.git
synced 2026-07-06 00:18:35 -07:00
Added sm64 dictionary extraction
This commit is contained in:
@@ -1170,3 +1170,74 @@ acts/act_60:
|
||||
type: SM64:TEXT
|
||||
offset: 1083968
|
||||
mio0: 71976
|
||||
texts/global:
|
||||
type: SM64:DICTIONARY
|
||||
keys:
|
||||
TEXT_ZERO: 8177343
|
||||
TEXT_COIN: 8155500
|
||||
TEXT_STAR: 8142922
|
||||
TEXT_COIN_X: 5057623
|
||||
TEXT_STAR_X: 5324116
|
||||
TEXT_VARIABLE_X: 8085611
|
||||
TEXT_UNFILLED_STAR: 8145264
|
||||
TEXT_NEW: 2458232
|
||||
TEXT_4DASHES: 2458548
|
||||
TEXT_MARIO: 2458588
|
||||
TEXT_SELECT_FILE: 2458244
|
||||
TEXT_CHECK_FILE: 2458280
|
||||
TEXT_COPY_FILE: 2458316
|
||||
TEXT_ERASE_FILE: 2458436
|
||||
TEXT_SOUND_SELECT: 2458520
|
||||
TEXT_FILE_MARIO_A: 2458200
|
||||
TEXT_FILE_MARIO_B: 2458208
|
||||
TEXT_FILE_MARIO_C: 2458216
|
||||
TEXT_FILE_MARIO_D: 2458224
|
||||
TEXT_SCORE: 2459246
|
||||
TEXT_COPY: 2458264
|
||||
TEXT_ERASE: 2458272
|
||||
TEXT_STEREO: 2458176
|
||||
TEXT_MONO: 2458184
|
||||
TEXT_HEADSET: 2458192
|
||||
TEXT_SAVED_DATA_EXISTS: 2458500
|
||||
TEXT_NO_SAVED_DATA_EXISTS: 2458456
|
||||
TEXT_RETURN: 2458132
|
||||
TEXT_CHECK_SCORE: 2458140
|
||||
TEXT_COPY_FILE_BUTTON: 2458316
|
||||
TEXT_ERASE_FILE_BUTTON: 2458436
|
||||
TEXT_HI_SCORE: 2458596
|
||||
TEXT_MY_SCORE: 2458608
|
||||
TEXT_SCORE_MARIO_A: 2458556
|
||||
TEXT_SCORE_MARIO_B: 2458564
|
||||
TEXT_SCORE_MARIO_C: 2458572
|
||||
TEXT_SCORE_MARIO_D: 2458580
|
||||
TEXT_COPY_IT_TO_WHERE: 2458328
|
||||
TEXT_COPYING_COMPLETED: 2458372
|
||||
TEXT_NO_FILE_TO_COPY_FROM: 2458412
|
||||
TEXT_SURE: 2458448
|
||||
TEXT_YES: 2458428
|
||||
TEXT_NO: 4539719
|
||||
TEXT_FILE_MARIO_A_JUST_ERASED: 2458480
|
||||
TEXT_COURSE: 968444
|
||||
TEXT_MYSCORE: 2459244
|
||||
TEXT_CONTINUE: 968479
|
||||
TEXT_EXIT_COURSE: 968336
|
||||
TEXT_CAMERA_ANGLE_R: 968348
|
||||
TEXT_LAKITU_MARIO: 968256
|
||||
TEXT_LAKITU_STOP: 968272
|
||||
TEXT_NORMAL_UPCLOSE: 968288
|
||||
TEXT_NORMAL_FIXED: 968308
|
||||
TEXT_CATCH: 968452
|
||||
TEXT_CLEAR: 968460
|
||||
TEXT_HUD_HI_SCORE: 2458596
|
||||
TEXT_SAVE_AND_CONTINUE: 968472
|
||||
TEXT_SAVE_AND_QUIT: 968488
|
||||
TEXT_CONTINUE_WITHOUT_SAVING: 968500
|
||||
TEXT_FILE_MARIO_EXCLAMATION: 968156
|
||||
TEXT_POWER_STARS_RESTORED: 967940
|
||||
TEXT_THANKS_TO_YOU: 967992
|
||||
TEXT_THANK_YOU_MARIO: 968024
|
||||
TEXT_SOMETHING_SPECIAL: 968044
|
||||
TEXT_LISTEN_EVERYBODY: 968088
|
||||
TEXT_LETS_HAVE_CAKE: 968108
|
||||
TEXT_FOR_MARIO: 968140
|
||||
TEXT_FILE_MARIO_QUESTION: 968156
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "factories/sm64/SAnimFactory.h"
|
||||
#include "factories/sm64/STextFactory.h"
|
||||
#include "factories/sm64/SDialogFactory.h"
|
||||
#include "factories/sm64/SDictionaryFactory.h"
|
||||
#include "spdlog/spdlog.h"
|
||||
|
||||
#include <chrono>
|
||||
@@ -40,6 +41,7 @@ void Companion::Init() {
|
||||
this->RegisterFactory("SM64:DIALOG", new SDialogFactory());
|
||||
this->RegisterFactory("SM64:ANIM", new SAnimFactory());
|
||||
this->RegisterFactory("SM64:TEXT", new STextFactory());
|
||||
this->RegisterFactory("SM64:DICTIONARY", new SDictionaryFactory());
|
||||
|
||||
// Debug
|
||||
this->RegisterFactory("MIO0", new MIO0Factory());
|
||||
|
||||
@@ -21,5 +21,6 @@ enum class ResourceType {
|
||||
// SM64
|
||||
Anim = 0x414E494D, // ANIM
|
||||
SDialog = 0x53444C47, // SDLG
|
||||
Dictionary = 0x44494354, // DICT
|
||||
};
|
||||
} // namespace LUS
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
#include "SDictionaryFactory.h"
|
||||
|
||||
#include "utils/MIODecoder.h"
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
bool SDictionaryFactory::process(LUS::BinaryWriter* writer, YAML::Node& data, std::vector<uint8_t>& buffer) {
|
||||
|
||||
WRITE_HEADER(LUS::ResourceType::Dictionary, 0);
|
||||
|
||||
auto entries = data["keys"].size();
|
||||
WRITE_U32(entries);
|
||||
|
||||
// Iterate on yaml keys
|
||||
for (auto it = data["keys"].begin(); it != data["keys"].end(); ++it) {
|
||||
auto key = it->first.as<std::string>();
|
||||
auto offset = it->second.as<size_t>();
|
||||
|
||||
std::vector<uint8_t> text;
|
||||
auto bytes = (uint8_t*) buffer.data();
|
||||
|
||||
while(bytes[offset] != 0xFF){
|
||||
auto c = bytes[offset++];
|
||||
text.push_back(c);
|
||||
}
|
||||
|
||||
text.push_back(0xFF);
|
||||
|
||||
writer->Write(key);
|
||||
WRITE_U32(text.size());
|
||||
WRITE_ARRAY(text.data(), text.size());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "../RawFactory.h"
|
||||
|
||||
class SDictionaryFactory : public RawFactory {
|
||||
public:
|
||||
SDictionaryFactory() = default;
|
||||
bool process(LUS::BinaryWriter* write, YAML::Node& data, std::vector<uint8_t>& buffer) override;
|
||||
};
|
||||
Reference in New Issue
Block a user