Added external asset loading

This commit is contained in:
KiritoDv
2023-09-21 22:06:08 -06:00
parent f8331e1204
commit 0c9a0b7acc
24 changed files with 149 additions and 8911 deletions
-25
View File
@@ -149,24 +149,6 @@ list(FILTER ALL_FILES EXCLUDE REGEX "src/pc/dlmalloc.c")
# Generated Source Code Files #
#==============================================================================#
set(INC_C_FILES "")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text-tmp
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/text/us
COMMAND ${CPP} -I${CMAKE_CURRENT_SOURCE_DIR}/text/us ${CMAKE_CURRENT_SOURCE_DIR}/text/define_text.inc.c > ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text-tmp
)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text.inc.c
COMMAND $<TARGET_FILE:textconv> ${CMAKE_CURRENT_SOURCE_DIR}/charmap.txt ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text-tmp ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text.inc.c
VERBATIM
DEPENDS textconv
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text-tmp
)
list(APPEND INC_C_FILES ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text.inc.c)
add_custom_command(
OUTPUT include/text_strings.h
COMMAND $<TARGET_FILE:textconv> charmap.txt ${CMAKE_CURRENT_SOURCE_DIR}/include/text_strings.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/text_strings.h
@@ -506,10 +488,3 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
)
endif()
endif()
add_custom_target(
ConvertIncCFiles
DEPENDS ${INC_C_FILES}
)
add_dependencies(${PROJECT_NAME} ConvertIncCFiles)
-9
View File
@@ -1167,15 +1167,6 @@ const Texture *const main_hud_camera_lut[] = {
texture_hud_char_arrow_up, texture_hud_char_arrow_down,
};
// If you change the language here, the following Makefile rule also needs to
// change, to generate the right version of define_text.inc.c:
// $(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/$(VERSION)/define_text.inc.c
#if defined(VERSION_JP) || defined(VERSION_SH)
#include "text/jp/define_text.inc.c"
#elif defined(VERSION_US)
#include "text/us/define_text.inc.c"
#endif
UNUSED static const u64 segment2_unused_0 = 0;
// 0x0200EC60 - 0x0200EC98
+12
View File
@@ -0,0 +1,12 @@
#pragma once
#include "align_asset_macro.h"
#define dgDialogRoot "texts/dialogs/dialog_%02X"
static const ALIGN_ASSET(2) char gDialogRoot[] = dgDialogRoot;
#define dgCourseRoot "texts/courses/course_%02X"
static const ALIGN_ASSET(2) char gCourseRoot[] = dgCourseRoot;
#define dgActRoot "texts/acts/act_%02X"
static const ALIGN_ASSET(2) char gActRoot[] = dgActRoot;
+10 -30
View File
@@ -1631,7 +1631,6 @@ void render_dialog_entries(void) {
#ifdef VERSION_EU
s8 lowerBound;
#endif
void **dialogTable;
struct DialogEntry *dialog;
#if defined(VERSION_US) || defined(VERSION_SH)
s8 lowerBound;
@@ -1650,10 +1649,8 @@ void render_dialog_entries(void) {
dialogTable = segmented_to_virtual(dialog_table_eu_de);
break;
}
#else
dialogTable = segmented_to_virtual(seg2_dialog_table);
#endif
dialog = segmented_to_virtual(dialogTable[gDialogID]);
dialog = GameEngine_LoadDialog(gDialogID);
// if the dialog entry is invalid, set the ID to DIALOG_NONE.
if (segmented_to_virtual(NULL) == dialog) {
@@ -1938,7 +1935,6 @@ void do_cutscene_handler(void) {
// "Dear Mario" message handler
void print_peach_letter_message(void) {
void **dialogTable;
struct DialogEntry *dialog;
u8 *str;
@@ -1955,10 +1951,8 @@ void print_peach_letter_message(void) {
dialogTable = segmented_to_virtual(dialog_table_eu_de);
break;
}
#else
dialogTable = segmented_to_virtual(seg2_dialog_table);
#endif
dialog = segmented_to_virtual(dialogTable[gDialogID]);
dialog = GameEngine_LoadDialog(gDialogID);
str = segmented_to_virtual(dialog->str);
create_dl_translation_matrix(MENU_MTX_PUSH, 97.0f, 118.0f, 0);
@@ -2143,18 +2137,11 @@ void render_pause_my_score_coins(void) {
u8 textUnfilledStar[] = { TEXT_UNFILLED_STAR };
u8 strCourseNum[4];
void **courseNameTbl;
u8 *courseName;
void **actNameTbl;
u8 *actName;
u8 courseIndex;
u8 starFlags;
#ifndef VERSION_EU
courseNameTbl = segmented_to_virtual(seg2_course_name_table);
actNameTbl = segmented_to_virtual(seg2_act_name_table);
#endif
courseIndex = COURSE_NUM_TO_INDEX(gCurrCourseNum);
starFlags = save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum));
@@ -2193,7 +2180,7 @@ void render_pause_my_score_coins(void) {
print_generic_string(MYSCORE_X, 121, LANGUAGE_ARRAY(textMyScore));
}
courseName = segmented_to_virtual(courseNameTbl[courseIndex]);
courseName = GameEngine_LoadLevelName(courseIndex);
u8 isJP = ROM_JP;
if (courseIndex <= COURSE_NUM_TO_INDEX(COURSE_STAGES_MAX)) {
@@ -2201,7 +2188,7 @@ void render_pause_my_score_coins(void) {
int_to_str(gCurrCourseNum, strCourseNum);
print_generic_string(CRS_NUM_X1, 157, strCourseNum);
actName = segmented_to_virtual(actNameTbl[COURSE_NUM_TO_INDEX(gCurrCourseNum) * 6 + gDialogCourseActNum - 1]);
actName = GameEngine_LoadActName(COURSE_NUM_TO_INDEX(gCurrCourseNum) * 6 + gDialogCourseActNum - 1);
if (starFlags & (1 << (gDialogCourseActNum - 1))) {
print_generic_string(TXT_STAR_X, 140, textStar);
@@ -2420,8 +2407,6 @@ void render_pause_castle_course_stars(s16 x, s16 y, s16 fileIndex, s16 courseInd
void render_pause_castle_main_strings(s16 x, s16 y) {
#ifdef VERSION_EU
void **courseNameTbl;
#else
void **courseNameTbl = segmented_to_virtual(seg2_course_name_table);
#endif
#ifdef VERSION_EU
@@ -2483,7 +2468,7 @@ void render_pause_castle_main_strings(s16 x, s16 y) {
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gDialogTextAlpha);
if (gDialogLineNum <= COURSE_NUM_TO_INDEX(COURSE_STAGES_MAX)) { // Main courses
courseName = segmented_to_virtual(courseNameTbl[gDialogLineNum]);
courseName = GameEngine_LoadLevelName(gDialogLineNum);
render_pause_castle_course_stars(x, y, gCurrSaveFileNum - 1, gDialogLineNum);
print_generic_string(x + 34, y - 5, textCoin);
#ifdef VERSION_EU
@@ -2496,7 +2481,7 @@ void render_pause_castle_main_strings(s16 x, s16 y) {
#endif
} else { // Castle secret stars
u8 textStarX[] = { TEXT_STAR_X };
courseName = segmented_to_virtual(courseNameTbl[COURSE_MAX]);
courseName = GameEngine_LoadLevelName(COURSE_MAX);
print_generic_string(x + 40, y + 13, textStarX);
int_to_str(save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_BONUS_STAGES - 1, COURSE_MAX - 1), strVal);
print_generic_string(x + 60, y + 13, strVal);
@@ -2720,8 +2705,6 @@ void render_course_complete_lvl_info_and_hud_str(void) {
u8 textClear[] = { TEXT_CLEAR };
#endif
void **actNameTbl;
void **courseNameTbl;
u8 *name;
u8 strCourseNum[4];
@@ -2742,9 +2725,6 @@ void render_course_complete_lvl_info_and_hud_str(void) {
courseNameTbl = segmented_to_virtual(course_name_table_eu_de);
break;
}
#else
actNameTbl = segmented_to_virtual(seg2_act_name_table);
courseNameTbl = segmented_to_virtual(seg2_course_name_table);
#endif
if (gLastCompletedCourseNum <= COURSE_STAGES_MAX) { // Main courses
@@ -2752,9 +2732,9 @@ void render_course_complete_lvl_info_and_hud_str(void) {
play_star_fanfare_and_flash_hud(1, 1 << (gLastCompletedStarNum - 1));
if (gLastCompletedStarNum == 7) {
name = segmented_to_virtual(actNameTbl[COURSE_STAGES_MAX * 6 + 1]);
name = GameEngine_LoadActName(COURSE_STAGES_MAX * 6 + 1);
} else {
name = segmented_to_virtual(actNameTbl[COURSE_NUM_TO_INDEX(gLastCompletedCourseNum) * 6 + gLastCompletedStarNum - 1]);
name = GameEngine_LoadActName(COURSE_NUM_TO_INDEX(gLastCompletedCourseNum) * 6 + gLastCompletedStarNum - 1);
}
// Print course number
@@ -2772,7 +2752,7 @@ void render_course_complete_lvl_info_and_hud_str(void) {
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
} else if (gLastCompletedCourseNum == COURSE_BITDW || gLastCompletedCourseNum == COURSE_BITFS) { // Bowser courses
name = segmented_to_virtual(courseNameTbl[COURSE_NUM_TO_INDEX(gLastCompletedCourseNum)]);
name = GameEngine_LoadLevelName(COURSE_NUM_TO_INDEX(gLastCompletedCourseNum));
// Print course name and clear text
gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);
@@ -2800,7 +2780,7 @@ void render_course_complete_lvl_info_and_hud_str(void) {
return;
} else { // Castle secret stars
name = segmented_to_virtual(actNameTbl[COURSE_STAGES_MAX * 6]);
name = GameEngine_LoadActName(COURSE_STAGES_MAX * 6);
print_hud_course_complete_coins(118, 103);
play_star_fanfare_and_flash_hud(1, 1 << (gLastCompletedStarNum - 1));
-3
View File
@@ -4,8 +4,6 @@
#include <libultra/types.h>
#include <libultra/gbi.h>
extern u8 seg2_course_name_table[];
extern u8 seg2_act_name_table[];
extern Gfx dl_rgba16_text_begin[];
extern Gfx dl_rgba16_text_end[];
extern Gfx dl_ia_text_begin[];
@@ -55,7 +53,6 @@ extern void *main_credits_font_lut[];
extern u8* main_hud_camera_lut[6];
extern Gfx dl_draw_text_bg_box[];
extern Gfx dl_draw_triangle[];
extern void *seg2_dialog_table[];
extern Gfx dl_billboard_num_0[];
extern Gfx dl_billboard_num_1[];
extern Gfx dl_billboard_num_2[];
+2 -3
View File
@@ -2682,7 +2682,6 @@ void print_save_file_scores(s8 fileIndex) {
#ifndef VERSION_EU
unsigned char textMario[] = { TEXT_MARIO };
unsigned char textFileLetter[] = { TEXT_ZERO };
void **levelNameTable = segmented_to_virtual(seg2_course_name_table);
unsigned char textHiScore[] = { TEXT_HI_SCORE };
unsigned char textMyScore[] = { TEXT_MY_SCORE };
#else
@@ -2720,7 +2719,7 @@ void print_save_file_scores(s8 fileIndex) {
//! Huge print list, for loops exist for a reason!
#define PRINT_COURSE_SCORES(courseIndex, pad) \
print_menu_generic_string(LEVEL_NAME_X + (pad * LEVEL_NUM_PAD), 23 + 12 * courseIndex, \
segmented_to_virtual(levelNameTable[courseIndex - 1])); \
GameEngine_LoadLevelName(courseIndex - 1)); \
print_score_file_star_score(fileIndex, courseIndex - 1, STAR_SCORE_X, 23 + 12 * courseIndex); \
print_score_file_course_coin_score(fileIndex, courseIndex - 1, 213, 23 + 12 * courseIndex);
@@ -2744,7 +2743,7 @@ void print_save_file_scores(s8 fileIndex) {
// Print castle secret stars text
print_menu_generic_string(LEVEL_NAME_X + SECRET_STARS_PAD, 23 + 12 * 16,
segmented_to_virtual(levelNameTable[25]));
GameEngine_LoadLevelName(25));
// Print castle secret stars score
print_score_file_castle_secret_stars(fileIndex, STAR_SCORE_X, 23 + 12 * 16);
+4 -6
View File
@@ -1,4 +1,5 @@
#include <libultra/types.h>
#include <stdio.h>
#include "audio/external.h"
#include "behavior_data.h"
@@ -268,10 +269,6 @@ void print_act_selector_strings(void) {
u8 **levelNameTbl;
u8 *currLevelName;
u8 **actNameTbl;
#else
u8 **levelNameTbl = segmented_to_virtual(seg2_course_name_table);
u8 *currLevelName = segmented_to_virtual(levelNameTbl[COURSE_NUM_TO_INDEX(gCurrCourseNum)]);
u8 **actNameTbl = segmented_to_virtual(seg2_act_name_table);
#endif
u8 *selectedActName;
s16 lvlNameX;
@@ -281,6 +278,8 @@ void print_act_selector_strings(void) {
s16 language = eu_get_language();
#endif
uint8_t* currLevelName = GameEngine_LoadLevelName(COURSE_NUM_TO_INDEX(gCurrCourseNum));
create_dl_ortho_matrix();
#ifdef VERSION_EU
@@ -333,8 +332,7 @@ void print_act_selector_strings(void) {
gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 255);
// Print the name of the selected act.
if (sVisibleStars != 0) {
selectedActName = segmented_to_virtual(actNameTbl[COURSE_NUM_TO_INDEX(gCurrCourseNum) * 6 + sSelectedActIndex]);
selectedActName = GameEngine_LoadActName(COURSE_NUM_TO_INDEX(gCurrCourseNum) * 6 + sSelectedActIndex);
actNameX = get_str_x_pos_from_center(ACT_NAME_X, selectedActName, 8.0f);
print_menu_generic_string(actNameX, 81, selectedActName);
}
+19 -2
View File
@@ -4,16 +4,19 @@
#include "port/importer/AudioBankFactory.h"
#include "port/importer/AudioSampleFactory.h"
#include "port/importer/AudioSequenceFactory.h"
#include "audio/internal.h"
#include "banks_table.h"
#include "sequences_table.h"
#include "audio/GameAudio.h"
#include "ZAPDUtils/Utils/StringHelper.h"
#include "texts_table.h"
#include "port/importer/DialogFactory.h"
#include <Fast3D/gfx_pc.h>
#include <Fast3D/gfx_rendering_api.h>
extern "C" {
#include "audio/external.h"
#include "audio/internal.h"
#include "game/ingame_menu.h"
}
GameEngine* GameEngine::Instance;
@@ -41,10 +44,11 @@ GameEngine::GameEngine(){
this->context = LUS::Context::CreateInstance("Ghostship", "sm64", "ghostship.cfg.json", OTRFiles, {}, 3);
this->context->GetWindow()->SetTargetFps(30);
this->context->GetWindow()->SetMaximumFrameLatency(1);
this->context->GetResourceManager()->GetResourceLoader()->RegisterResourceFactory(LUS::ResourceType::Anim, "Animation", std::make_shared<CubeOS::AnimationFactory>());
this->context->GetResourceManager()->GetResourceLoader()->RegisterResourceFactory(LUS::ResourceType::SAnim, "Animation", std::make_shared<CubeOS::AnimationFactory>());
this->context->GetResourceManager()->GetResourceLoader()->RegisterResourceFactory(LUS::ResourceType::Bank, "Bank", std::make_shared<CubeOS::AudioBankFactory>());
this->context->GetResourceManager()->GetResourceLoader()->RegisterResourceFactory(LUS::ResourceType::Sample, "Sample", std::make_shared<CubeOS::AudioSampleFactory>());
this->context->GetResourceManager()->GetResourceLoader()->RegisterResourceFactory(LUS::ResourceType::Sequence, "Sequence", std::make_shared<CubeOS::AudioSequenceFactory>());
this->context->GetResourceManager()->GetResourceLoader()->RegisterResourceFactory(LUS::ResourceType::SDialog, "Dialog", std::make_shared<CubeOS::DialogFactory>());
GameEngine::AudioInit();
uint32_t version = LUS::Context::GetInstance()->GetResourceManager()->GetArchive()->GetGameVersions()[0];
}
@@ -214,4 +218,17 @@ extern "C" void GameEngine_UnloadSequence(uint8_t seqId) {
extern "C" uint32_t GameEngine_GetGameVersion() {
return LUS::Context::GetInstance()->GetResourceManager()->GetArchive()->GetGameVersions()[0];
}
extern "C" uint8_t* GameEngine_LoadActName(uint32_t actId){
return (uint8_t*) ResourceGetDataByName(StringHelper::Sprintf(gActRoot, actId).c_str());
}
extern "C" uint8_t* GameEngine_LoadLevelName(uint32_t courseId){
return (uint8_t*) ResourceGetDataByName(StringHelper::Sprintf(gCourseRoot, courseId).c_str());
}
extern "C" DialogEntry* GameEngine_LoadDialog(uint32_t dialogId){
auto dialog = (DialogEntry*) ResourceGetDataByName(StringHelper::Sprintf(gDialogRoot, dialogId).c_str());
return dialog;
}
+4
View File
@@ -35,6 +35,7 @@ class GameEngine {
void Destroy();
};
#else
uint32_t GameEngine_GetSampleRate();
float GameEngine_GetAspectRatio();
struct CtlEntry* GameEngine_LoadBank(uint8_t bankId);
@@ -44,4 +45,7 @@ struct AudioSequenceData* GameEngine_LoadSequence(uint8_t seqId);
uint8_t GameEngine_IsSequenceLoaded(uint8_t seqId);
void GameEngine_UnloadSequence(uint8_t seqId);
uint32_t GameEngine_GetGameVersion();
uint8_t* GameEngine_LoadActName(uint32_t actId);
uint8_t* GameEngine_LoadLevelName(uint32_t levelId);
struct DialogEntry* GameEngine_LoadDialog(uint32_t dialogId);
#endif
+1 -1
View File
@@ -15,7 +15,7 @@ u64 osClockRate = 62500000;
s8 gShowProfiler = FALSE;
s8 gShowDebugText = FALSE;
s8 gDebugLevelSelect = TRUE;
s8 gDebugLevelSelect = FALSE;
OSIoMesg gDmaIoMesg;
OSMesg gMainReceivedMesg;
+41
View File
@@ -0,0 +1,41 @@
#include "DialogFactory.h"
#include "port/importer/types/Dialog.h"
#include "spdlog/spdlog.h"
std::shared_ptr<LUS::IResource> CubeOS::DialogFactory::ReadResource(std::shared_ptr<LUS::ResourceInitData> initData, std::shared_ptr<LUS::BinaryReader> reader) {
auto resource = std::make_shared<Dialog>(initData);
std::shared_ptr<LUS::ResourceVersionFactory> factory = nullptr;
switch (resource->GetInitData()->ResourceVersion) {
case 0:
factory = std::make_shared<DialogFactoryV0>();
break;
}
if (factory == nullptr) {
SPDLOG_ERROR("Failed to load Dialog with version {}", resource->GetInitData()->ResourceVersion);
return nullptr;
}
factory->ParseFileBinary(reader, resource);
return resource;
}
void CubeOS::DialogFactoryV0::ParseFileBinary(std::shared_ptr<LUS::BinaryReader> reader, std::shared_ptr<LUS::IResource> resource) {
std::shared_ptr<Dialog> dialog = std::static_pointer_cast<Dialog>(resource);
ResourceVersionFactory::ParseFileBinary(reader, dialog);
dialog->mData.unused = reader->ReadUInt32();
dialog->mData.linesPerBox = reader->ReadInt8();
dialog->mData.leftOffset = reader->ReadInt16();
dialog->mData.width = reader->ReadInt16();
size_t textSize = reader->ReadUInt32();
for(size_t i = 0; i < textSize; i++){
dialog->mText.push_back(reader->ReadUByte());
}
dialog->mData.str = dialog->mText.data();
}
+16
View File
@@ -0,0 +1,16 @@
#pragma once
#include "ResourceFactory.h"
namespace CubeOS{
class DialogFactory : public LUS::ResourceFactory {
public:
std::shared_ptr<LUS::IResource>
ReadResource(std::shared_ptr<LUS::ResourceInitData> initData, std::shared_ptr<LUS::BinaryReader> reader) override;
};
class DialogFactoryV0 : public LUS::ResourceVersionFactory {
public:
void ParseFileBinary(std::shared_ptr<LUS::BinaryReader> reader, std::shared_ptr<LUS::IResource> resource) override;
};
}
+11
View File
@@ -0,0 +1,11 @@
#include "Dialog.h"
namespace CubeOS {
DialogEntry* Dialog::GetPointer() {
return &mData;
}
size_t Dialog::GetPointerSize() {
return sizeof(mData);
}
}
+29
View File
@@ -0,0 +1,29 @@
#pragma once
#include <cstdint>
#include <Resource.h>
struct DialogEntry {
/*0x00*/ uint32_t unused;
/*0x04*/ int8_t linesPerBox;
/*0x06*/ int16_t leftOffset;
/*0x08*/ int16_t width;
/*0x0C*/ uint8_t *str;
};
namespace CubeOS {
class Dialog : public LUS::Resource<DialogEntry> {
public:
using Resource::Resource;
Dialog() : Resource(std::shared_ptr<LUS::ResourceInitData>()) {}
DialogEntry* GetPointer();
size_t GetPointerSize();
DialogEntry mData;
std::vector<uint8_t> mText;
};
}
-80
View File
@@ -1,80 +0,0 @@
COURSE_ACTS(COURSE_BOB, _(" 1 BOB-OMBS BOMBENBERG"),
_("BESIEGE KÖNIG BOB-OMB!") , _("BESIEGE DEN SCHNELLEN KOOPA!") , _("FLIEGE ZUR SCHWEBENDEN INSEL!"),
_("FINDE DIE 8 ROTEN MÜNZEN!") , _("DURCHFLIEGE ALLE MÜNZENRINGE!") , _("BEFREIE DEN KETTENHUND!"))
COURSE_ACTS(COURSE_WF, _(" 2 WUMMPS WUCHTWALL"),
_("BESIEGE KÖNIG WUMMP!") , _("STEIGE AUF DIE BERGFESTUNG!") , _("FLIEG INS BLAUE!"),
_("FINDE DIE 8 ROTEN MÜNZEN!") , _("WECKE DIE EULE!") , _("ZERSTÖRE DIE FELSWAND!"))
COURSE_ACTS(COURSE_JRB, _(" 3 PIRATENBUCHT PANIK"),
_("TAUCHE IN DAS SCHIFFSWRACK!") , _("LOCKE DEN AAL KANO HERAUS!") , _("TAUCHE ZUR SCHATZHÖHLE!"),
_("FINDE DIE 8 ROTEN MÜNZEN!") , _("FLIEGE ZU DEN STEINSÄULEN!") , _("LAUFE DURCH DEN STRUDEL!"))
COURSE_ACTS(COURSE_CCM, _(" 4 BIBBERBERG BOB"),
_("RUTSCHE AUF DER EISBAHN!") , _("FINDE DAS PINGUINBABY!") , _("BESIEGE DEN SCHNELLEN PINGUIN!"),
_("FINDE DIE 8 ROTEN MÜNZEN!") , _("BAUE EINEN SCHNEEMANN!") , _("DENKE AN DEN WANDSPRUNG!"))
COURSE_ACTS(COURSE_BBH, _(" 5 BIG BOOS BURG"),
_("GEHE AUF GEISTERJAGD!") , _("BESUCHE BIG BOOS KARUSSEL!") , _("LÖSE DAS BÜCHEREI-RÄTSEL!"),
_("FINDE DIE 8 ROTEN MÜNZEN!") , _("KLETTERE AUF BIG BOOS BALKON!") , _("FINDE DAS AUGE IM GEHEIMRAUM!"))
COURSE_ACTS(COURSE_HMC, _(" 6 GRÜNE GIFTGROTTE"),
_("KLETTERE AUF NESSIS RÜCKEN!") , _("FINDE DIE 8 ROTEN MÜNZEN!") , _("LAUFE AUF DEM GRUND DES SEES!"),
_("DURCHSUCHE DAS NEBELLABYRINTH!"), _("SUCHE IM NEBEL DEN NOTAUSGANG!"), _("ACHTE AUF ROLLENDE FELSEN!"))
COURSE_ACTS(COURSE_LLL, _(" 7 LAVA LAGUNE"),
_("WERFE BIG BULLY IN DIE LAVA!") , _("WERFE DIE BULLIES IN DIE LAVA!"), _("FINDE DIE 8 ROTEN MÜNZEN!"),
_("TANZE AUF DEM BAUMSTAMM!") , _("ERKUNDE DEN VULKAN!") , _("GEWINNE IM VULKAN AN HÖHE!"))
COURSE_ACTS(COURSE_SSL, _(" 8 WOBIWABA WÜSTE"),
_("FOLGE DEM RIESENGEIER!") , _("BRINGE LICHT IN DIE PYRAMIDE!") , _("BEGEBE DICH IN DIE PYRAMIDE!"),
_("LANDE AUF ALLEN VIER SÄULEN!") , _("FINDE DIE 8 ROTEN MÜNZEN!") , _("LÖSE DAS PYRAMIDENPUZZLE!"))
COURSE_ACTS(COURSE_DDD, _(" 9 WILDE WASSERWERFT"),
_("ENTERE BOWSERS U-BOOT!") , _("ÖFFNE DIE TRUHEN!") , _("SPRINGE ZU DEN ROTEN MÜNZEN!"),
_("SCHWIMME DURCH DIE RINGE!") , _("FOLGE DEM FISCH!") , _("VEREINE DIE MÜTZEN!"))
COURSE_ACTS(COURSE_SL, _("10 FROSTBEULEN FRUST"),
_("ERKLIMME DEN KOPF!") , _("SPIELE MIT BAD BULLY!") , _("WAGE DICH INS EIS!"),
_("GEHE ZUM EISSEE!") , _("FINDE DIE 8 ROTEN MÜNZEN!") , _("SCHAU IM IGLU NACH!"))
COURSE_ACTS(COURSE_WDW, _("11 ATLANTIS AQUARIA"),
_("FOLGE DEN BLAUEN PFEILEN!") , _("SUCHE NACH DER SPITZE DER STADT!"), _("ERFORSCHE DIE HÖHEN UND TIEFEN!"),
_("BEEILE DICH - EXPRESSAUFZUG!") , _("FINDE DIE 8 ROTEN MÜNZEN!") , _("BEACHTE DAS ZEITLIMIT!"))
COURSE_ACTS(COURSE_TTM, _("12 FLIEGENPILZ FIASKO"),
_("ERKLIMME DEN BERG!") , _("ERKUNDE DEN AFFENKÄFIG!") , _("FINDE DIE 8 ROTEN MÜNZEN!"),
_("ERFORSCHE DIE STEILWAND!") , _("HALTE AUSSCHAU AUF DER BRÜCKE!"), _("SUCHE DEN EINSAMEN PILZ!"))
COURSE_ACTS(COURSE_THI, _("13 GULLIVER GUMBA"),
_("PFLÜCKE DIE SCHNAPP-PIRANHA!") , _("BEGIB DICH ZUR SPITZE DER INSEL!"), _("TRETE NOCH EINMAL GEGEN KOOPA AN!"),
_("LÖSE DIE 5 ITTY BITTY-RÄTSEL!") , _("FINDE DIE 8 ROTEN MÜNZEN!") , _("DREHE WIGGLER IM KREIS!"))
COURSE_ACTS(COURSE_TTC, _("14 TICK TACK TRAUMA"),
_("ROLLE DEN KÄFIG!") , _("ACHTE AUF DAS PENDEL!") , _("LASS DIR DEN WEG ZEIGEN!"),
_("STAMPFE MÄCHTIG AUF!") , _("SPRINGE AUF DEN SCHWEBEBALKEN!"), _("FINDE DIE 8 ROTEN MÜNZEN!"))
COURSE_ACTS(COURSE_RR, _("15 REGENBOGEN RASEREI"),
_("REISE AUF DEN REGENBÖGEN!") , _("SUCHE DAS HAUS AM HIMMEL!") , _("FINDE DIE 8 ROTEN MÜNZEN!"),
_("LASS DICH VON DER BRISE TRAGEN!"), _("ÜBERWINDE DIE MACHT DER DREIECKE!"), _("SCHAU DIR DEN REGENBOGEN AN!"))
SECRET_STAR(COURSE_BITDW, _(" BOWSERS SCHATTENWELT"))
SECRET_STAR(COURSE_BITFS, _(" BOWSERS LAVASEE"))
SECRET_STAR(COURSE_BITS, _(" BOWSERS LUFTSCHLOSS"))
SECRET_STAR(COURSE_PSS, _(" TOADSTOOLS RUTSCHBAHN"))
SECRET_STAR(COURSE_COTMC, _(" GRÜNER SCHALTERPALAST"))
SECRET_STAR(COURSE_TOTWC, _(" ROTER SCHALTERPALAST"))
SECRET_STAR(COURSE_VCUTM, _(" BLAUER SCHALTERPALAST"))
SECRET_STAR(COURSE_WMOTR, _(" REGENBOGEN FEUERWERK"))
SECRET_STAR(COURSE_SA, _(" VERSTECKTES AQUARIUM"))
SECRET_STAR(COURSE_CAKE_END, _(""))
CASTLE_SECRET_STARS(_(" GEHEIME STERNE"))
EXTRA_TEXT(0, _("EIN GEHEIMER STERN DES SCHLOSSES!"))
EXTRA_TEXT(1, _(""))
EXTRA_TEXT(2, _(""))
EXTRA_TEXT(3, _(""))
EXTRA_TEXT(4, _(""))
EXTRA_TEXT(5, _(""))
EXTRA_TEXT(6, _(""))
-2058
View File
File diff suppressed because it is too large Load Diff
-30
View File
@@ -1,30 +0,0 @@
#define COURSE_ACTS(id, name, a,b,c,d,e,f) \
static const u8 GLUE2(COURSE_TABLE, _ ## id)[] = { name };
#define SECRET_STAR(id, name) \
static const u8 GLUE2(COURSE_TABLE, _ ## id)[] = { name };
#define CASTLE_SECRET_STARS(str) \
static const u8 GLUE2(COURSE_TABLE, _castle_secret_stars)[] = { str };
#define EXTRA_TEXT(id, str)
#include "courses.h"
#undef COURSE_ACTS
#undef SECRET_STAR
#undef CASTLE_SECRET_STARS
#define COURSE_ACTS(id, name, a,b,c,d,e,f) GLUE2(COURSE_TABLE, _ ## id),
#define SECRET_STAR(id, name) GLUE2(COURSE_TABLE, _ ## id),
#define CASTLE_SECRET_STARS(str) GLUE2(COURSE_TABLE, _castle_secret_stars),
const u8 *const COURSE_TABLE[] = {
#include "courses.h"
NULL
};
#undef COURSE_ACTS
#undef SECRET_STAR
#undef CASTLE_SECRET_STARS
-103
View File
@@ -1,103 +0,0 @@
// == debug table ==
#ifndef VERSION_EU
// (this wasn't translated for US, and was removed in EU)
static const u8 Debug0[] = {
_("STAGE SELECT\n"
" つづける?\n"
"  マウンテン\n"
"  ファイアーバブル\n"
"  スノースライダー\n"
"  ウォーターランド\n"
"   クッパ1ごう\n"
" もどる")
};
static const u8 Debug1[] = {
_("PAUSE    \n"
" つづける?\n"
" やめる ")
};
static const struct DialogEntry debug_text_entry_0 = {
1, 8, 30, 200, Debug0
};
static const struct DialogEntry debug_text_entry_1 = {
1, 3, 100, 150, Debug1
};
const struct DialogEntry *const seg2_debug_text_table[] = {
&debug_text_entry_0, &debug_text_entry_1, NULL,
};
#endif
// == dialog ==
// (defines en_dialog_table etc.)
#define DEFINE_DIALOG(id, _1, _2, _3, _4, str) \
static const u8 dialog_text_ ## id[] = { str };
#include "dialogs.h"
#undef DEFINE_DIALOG
#define DEFINE_DIALOG(id, unused, linesPerBox, leftOffset, width, _) \
static const struct DialogEntry dialog_entry_ ## id = { \
unused, linesPerBox, leftOffset, width, dialog_text_ ## id \
};
#include "dialogs.h"
#undef DEFINE_DIALOG
#define DEFINE_DIALOG(id, _1, _2, _3, _4, _5) &dialog_entry_ ## id,
const struct DialogEntry *const seg2_dialog_table[] = {
#include "dialogs.h"
NULL
};
// == courses ==
// (defines en_course_name_table etc.)
// The game duplicates this in levels/menu/leveldata.c in EU, so we split
// it out into a separate include file.
#define COURSE_TABLE seg2_course_name_table
#include "define_courses.inc.c"
// == acts ==
// (defines en_act_name_table etc.)
#define COURSE_ACTS(id, name, a,b,c,d,e,f) \
static const u8 act_name_ ## id ## _1[] = { a }; \
static const u8 act_name_ ## id ## _2[] = { b }; \
static const u8 act_name_ ## id ## _3[] = { c }; \
static const u8 act_name_ ## id ## _4[] = { d }; \
static const u8 act_name_ ## id ## _5[] = { e }; \
static const u8 act_name_ ## id ## _6[] = { f };
#define SECRET_STAR(id, name)
#define CASTLE_SECRET_STARS(str)
#undef EXTRA_TEXT
#define EXTRA_TEXT(id, str) \
static const u8 extra_text_ ## id[] = { str };
#include "courses.h"
#undef COURSE_ACTS
#undef EXTRA_TEXT
#define COURSE_ACTS(id, name, a,b,c,d,e,f) \
act_name_ ## id ## _1, act_name_ ## id ## _2, act_name_ ## id ## _3, \
act_name_ ## id ## _4, act_name_ ## id ## _5, act_name_ ## id ## _6,
#define EXTRA_TEXT(id, str) extra_text_ ## id,
const u8 *const seg2_act_name_table[] = {
#include "courses.h"
NULL
};
-80
View File
@@ -1,80 +0,0 @@
COURSE_ACTS(COURSE_BOB, _(" 1 BATAILLE DE BOB-OMB"),
_("ROI BOB-OMB DU SOMMET") , _("COURSE CONTRE KOOPA-RAPIDO") , _("CANON VERS L'ILE PERCHEE"),
_("LES 8 PIECES ROUGES") , _("VOL DU MARIO AILE") , _("DERRIERE LA CAGE DE CHOMP"))
COURSE_ACTS(COURSE_WF, _(" 2 FORTERESSE DE WHOMP"),
_("DESTRUCTION DU GROS WHOMP") , _("EN HAUT DE LA FORTERESSE") , _("CANON VERS LES CIEUX"),
_("PIECES ROUGES DANS LES AIRS") , _("TOMBEZ DANS LA CAGE PERCHEE") , _("CANON VERS UN MUR..."))
COURSE_ACTS(COURSE_JRB, _(" 3 BAIE DES PIRATES"),
_("PILLEZ LE BATEAU COULE") , _("L'ANGUILLE VEUT FAIRE JOUJOU?") , _("TRESOR DANS LA CAVERNE"),
_("PIECES ROUGES A BORD!") , _("CANON VERS LES PILIERS") , _("DANS LE GEYSER"))
COURSE_ACTS(COURSE_CCM, _(" 4 MONTAGNE GLA-GLA"),
_("GLISSADE SUR GLACE") , _("PETIT PINGOUIN PERDU") , _("COURSE DU PINGOUIN"),
_("8 PIECES ROUGES GIVREES") , _("BONHOMME DE NEIGE SANS TETE") , _("MURS POUR REBONDIR"))
COURSE_ACTS(COURSE_BBH, _(" 5 MANOIR DE BIG BOO"),
_("CHERCHEZ LE BIG BOO") , _("MANEGE DES BOOS PAS BEAUX") , _("SECRET DES LIVRES HANTES"),
_("TROUVEZ LES 8 PIECES ROUGES") , _("BALCON DE BIG BOO") , _("UN OEIL SUR LES SALLES SECRETES"))
COURSE_ACTS(COURSE_HMC, _(" 6 CAVERNE BRUMEUSE"),
_("GROS BIBI DE LA CAVERNE") , _("CHARIOT POUR PIECES ROUGES") , _("COURSE DE METAL MARIO"),
_("DANS LE LABYRINTHE TOXIQUE") , _("AU-DESSUS DES GAZ...") , _("ATTENTION AUX BOULETS"))
COURSE_ACTS(COURSE_LLL, _(" 7 LAVES FATALES"),
_("CRAMEZ LE GROS MOCHE") , _("POUSSEZ LES PETITS MOCHES") , _("PUZZLE DE 8 PIECES ROUGES"),
_("BALADE SUR LA BUCHE") , _("CHAUD DANS LE VOLCAN") , _("ASCENCEUR DANS LE VOLCAN"))
COURSE_ACTS(COURSE_SSL, _(" 8 SABLES TROP MOUVANTS"),
_("DANS LES GRIFFES DU VAUTOUR") , _("AU SOMMET DE LA PYRAMIDE") , _("DANS L'ANCIENNE PYRAMIDE"),
_("LES QUATRE PILIERS DE LA FOI") , _("VOL VERS LES PIECES ROUGES") , _("ENIGME DE LA PYRAMIDE"))
COURSE_ACTS(COURSE_DDD, _(" 9 AFFREUX BASSIN"),
_("SOUS-MARIN DE BOWSER") , _("COFFRES DANS LE COURANT") , _("PERCHES POUR PIECES ROUGES"),
_("DANS LE GEYSER") , _("RECOMPENSE DE LA RAIE") , _("ASSOCIATION DE CASQUETTES..."))
COURSE_ACTS(COURSE_SL, _("10 CHEZ LE ROI DES NEIGES"),
_("GROSSE TETE DU BONHOMME") , _("COMBATTEZ LE GROS MOCHE GIVRE") , _("DANS LE GLAÇON"),
_("VRILLE DEPUIS LE LAC") , _("CARAPACE POUR PIECES ROUGES") , _("DANS L'IGLOO"))
COURSE_ACTS(COURSE_WDW, _("11 MONDE TREMPE-SECHE"),
_("MINI PLATES-FORMES FLECHEES!") , _("SUR LES TOITS") , _("ENIGME DES CHIFFRES CACHES"),
_("ASCENSEUR EXPRESS!") , _("PIECES ROUGES: VILLE ENGLOUTIE"), _("COURSE EN VILLE"))
COURSE_ACTS(COURSE_TTM, _("12 TROP HAUTE MONTAGNE"),
_("ESCALADEZ LA MONTAGNE") , _("MYSTERE DE LA CAGE DU SINGE") , _("PIECES ROUGES SUR CHAMPIGNON"),
_("PAROI MYSTERIEUSE") , _("PANORAMA DU PONT") , _("CANON VERS LE CHAMPIGNON"))
COURSE_ACTS(COURSE_THI, _("13 ILE GRANDS-PETITS"),
_("DETRUISEZ LES MAXI-CARNIVORES") , _("AU SOMMET DE L'ILE DES GEANTS") , _("KOOPA-RAPIDO, LA VENGEANCE"),
_("CINQ TOUT PETITS SECRETS") , _("LES PIECES ROUGES DU GIGOTEUR") , _("ENERVEZ LE GIGOTEUR"))
COURSE_ACTS(COURSE_TTC, _("14 HORLOGE TIC-TAC"),
_("ROULEMENTS DANS LA CAGE") , _("LES TROUS ET LE PENDULE") , _("CHEVAUCHEZ L'AIGUILLE"),
_("L'ECRABOUILLEUR") , _("SAUTS SYNCHRONISES") , _("L'HEURE PILE POUR LES PIECES"))
COURSE_ACTS(COURSE_RR, _("15 COURSE ARC-EN-CIEL"),
_("CROISIERE SUR L'ARC-EN-CIEL") , _("MANOIR DANS LES AIRS") , _("LABYRINTHE DES PIECES ROUGES"),
_("BALANÇOIRE CELESTE") , _("VICIEUX TRIANGLES!") , _("L'ARC-EN-CIEL ET AU-DELA"))
SECRET_STAR(COURSE_BITDW, _(" BOWSER DES TENEBRES"))
SECRET_STAR(COURSE_BITFS, _(" BOWSER DES LAVES"))
SECRET_STAR(COURSE_BITS, _(" BOWSER DES CIEUX"))
SECRET_STAR(COURSE_PSS, _(" GLISSADE DE LA PRINCESSE"))
SECRET_STAR(COURSE_COTMC, _(" MINE DES CASQUETTES-METAL"))
SECRET_STAR(COURSE_TOTWC, _(" INTERRUPTEUR DE LA TOUR AILEE"))
SECRET_STAR(COURSE_VCUTM, _(" INVISIBLE SOUS LES DOUVES"))
SECRET_STAR(COURSE_WMOTR, _(" AU-DELA DE L'ARC-EN-CIEL"))
SECRET_STAR(COURSE_SA, _(" AQUARIUM SECRET"))
SECRET_STAR(COURSE_CAKE_END, _(""))
CASTLE_SECRET_STARS(_(" ETOILES SECRETES"))
EXTRA_TEXT(0, _("UNE ETOILE SECRETE DU CHATEAU"))
EXTRA_TEXT(1, _(""))
EXTRA_TEXT(2, _(""))
EXTRA_TEXT(3, _(""))
EXTRA_TEXT(4, _(""))
EXTRA_TEXT(5, _(""))
EXTRA_TEXT(6, _(""))
-2297
View File
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More