Added sm64 dictionary extraction

This commit is contained in:
KiritoDv
2023-10-04 23:18:35 -06:00
parent 2a6fe7dc18
commit 234b6ab7a4
5 changed files with 118 additions and 0 deletions
+71
View File
@@ -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
+2
View File
@@ -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());
+1
View File
@@ -21,5 +21,6 @@ enum class ResourceType {
// SM64
Anim = 0x414E494D, // ANIM
SDialog = 0x53444C47, // SDLG
Dictionary = 0x44494354, // DICT
};
} // namespace LUS
+35
View File
@@ -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;
}
+9
View File
@@ -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;
};