diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 058e907b88d..caa7ccf7e26 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -157,7 +157,7 @@ public: void setMaxOxygen(int max) { mMaxOxygen = max; } u8 getDoStatus() { return mDoStatus; } u8 getRStatus() { return mRStatus; } - char* getStartStageName() { return mStartStage.getName(); } + const char* getStartStageName() { return mStartStage.getName(); } s8 getStartStageRoomNo() { return mStartStage.getRoomNo(); } s8 getStartStageLayer() { return mStartStage.getLayer(); } u8 isHeapLockFlag() { return mHeapLockFlag; } @@ -173,6 +173,8 @@ public: dAttention_c& getAttention() { return mAttention; } JKRArchive* getMsgDtArchive(int idx) { return mMsgDtArchive[idx]; } s16 getStartStagePoint() { return mStartStage.getPoint(); } + s8 getStartStageDarkArea() { return mStartStage.getDarkArea(); } + void setStartStageDarkArea(s8 darkArea) { mStartStage.setDarkArea(darkArea); } void* getPlayerPtr(int ptrIdx) { return mPlayerPtr[ptrIdx]; } JKRArchive* getMain2DArchive() { return mMain2DArchive; } J2DGrafContext* getCurrentGrafPort() { return mCurrentGrafPort; } @@ -741,7 +743,7 @@ inline u32 dComIfGp_getNowVibration() { return g_dComIfG_gameInfo.play.getNowVibration(); } -inline char* dComIfGp_getStartStageName() { +inline const char* dComIfGp_getStartStageName() { return g_dComIfG_gameInfo.play.getStartStageName(); } @@ -757,6 +759,10 @@ inline s8 dComIfGp_roomControl_getStayNo() { return dStage_roomControl_c::getStayNo(); } +inline void dComIfGp_setStartStage(dStage_startStage_c* pStartStage) { + g_dComIfG_gameInfo.play.setStartStage(pStartStage); +} + inline s8 dComIfGp_getStartStageRoomNo() { return g_dComIfG_gameInfo.play.getStartStageRoomNo(); } @@ -765,6 +771,14 @@ inline s8 dComIfGp_getStartStageLayer() { return g_dComIfG_gameInfo.play.getStartStageLayer(); } +inline s8 dComIfGp_getStartStageDarkArea() { + return g_dComIfG_gameInfo.play.getStartStageDarkArea(); +} + +inline void dComIfGp_setStartStageDarkArea(s8 darkArea) { + g_dComIfG_gameInfo.play.setStartStageDarkArea(darkArea); +} + inline roomRead_class* dComIfGp_getStageRoom() { return g_dComIfG_gameInfo.play.getStage().getRoom(); } diff --git a/include/d/d_stage.h b/include/d/d_stage.h index dffffcdc5bf..5b9a134a5a4 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -548,13 +548,16 @@ private: class dStage_startStage_c { public: void set(const char*, s8, s16, s8); - inline char* getName() { return mStage; } - s8 getLayer() { return mLayer; } + const char* getName() const { return mName; } + s16 getPoint() const { return mPoint; } s8 getRoomNo() const { return mRoomNo; } - s16 getPoint() { return mPoint; } + s8 getLayer() const { return mLayer; } + void setLayer(s8 layer) { mLayer = layer; } + s8 getDarkArea() const { return mDarkArea; } + void setDarkArea(s8 darkArea) { mDarkArea = darkArea; } private: - /* 0x0 */ char mStage[8]; + /* 0x0 */ char mName[8]; /* 0x8 */ s16 mPoint; /* 0xA */ s8 mRoomNo; /* 0xB */ s8 mLayer; diff --git a/include/d/kankyo/d_kankyo_data.h b/include/d/kankyo/d_kankyo_data.h index 5bd820adee2..4d0c885262b 100644 --- a/include/d/kankyo/d_kankyo_data.h +++ b/include/d/kankyo/d_kankyo_data.h @@ -3,4 +3,49 @@ #include "dolphin/types.h" +// Invented name; Used as u8 `darkLv` in dKyd_darkworldTblEntry. +enum dKyd_DARKLV { + FARON = 0, + ELDIN = 1, + LANAYRU = 2, + TEST = 5, // Only used with nonexistent test stages + UNCLEARABLE = 6, // Default. Palace of Twilight stages use this + ALWAYS_DARK = 8, // Unused. Forces Twilight +}; + +// Invented name +struct dKyd_darkworldTblEntry { + char* stageName; + u8 darkLv; +}; // Size: 0x8 + +// Invented name; adjust as needed in the future. +// Notes (needs more investigation): +// startTime and endTime are in the range 0 to 360, which is the same as the current time of day. +// l_time_attribute and l_time_attribute_boss are arrays of `dKyd_lightSchedjule` with their times +// set up such that the current time of day will fall in the range of one dKyd_lightSchedjule. For +// example, if the current time is 110.0f (7:20 AM), then the dKyd_lightSchedjule {105.0f, 135.0f, +// 1, 2} would be selected. If the time was 105.0f, we would use light 1. If the time was 135.0f, we +// would use light 2. Since 110.0f is closer to 105.0f than 135.0f, we get a blend of lights 1 and 2 +// which is mostly 1. Blending the lights over time is how we get a smooth day-night transition. +struct dKyd_lightSchejule { + float startTime; + float endTime; + u8 startTimeLight; + u8 endTimeLight; +}; // Size: 0xC + +void* dKyd_dmpalet_getp(); +void* dKyd_dmpselect_getp(); +void* dKyd_dmenvr_getp(); +void* dKyd_dmvrbox_getp(); +dKyd_lightSchejule* dKyd_schejule_getp(); +dKyd_lightSchejule* dKyd_schejule_boss_getp(); +void dKyd_xfog_table_set(u8); +void* dKyd_maple_col_getp(); +dKyd_darkworldTblEntry* dKyd_darkworld_tbl_getp(); +void* dKyd_light_size_tbl_getp(); +void* dKyd_light_tw_size_tbl_getp(); +void* dKyd_BloomInf_tbl_getp(int); + #endif /* D_KANKYO_D_KANKYO_DATA_H */ diff --git a/src/d/com/d_com_inf_game.cpp b/src/d/com/d_com_inf_game.cpp index 9f39275a300..7376015fb64 100644 --- a/src/d/com/d_com_inf_game.cpp +++ b/src/d/com/d_com_inf_game.cpp @@ -1205,7 +1205,7 @@ int dComIfG_play_c::getLayerNo(int param_0) { } int layer = dComIfGp_getStartStageLayer(); - char* stage = dComIfGp_getStartStageName(); + const char* stage = dComIfGp_getStartStageName(); return getLayerNo_common(stage, roomNo, layer); } diff --git a/src/d/d_item.cpp b/src/d/d_item.cpp index 33b751fd37c..ba8f9ba1347 100644 --- a/src/d/d_item.cpp +++ b/src/d/d_item.cpp @@ -2588,7 +2588,7 @@ u8 check_itemno(int i_itemId) { if (g_dComIfG_gameInfo.play.getLayerNo(0) == 0xD || g_dComIfG_gameInfo.play.getLayerNo(0) == 0xE) { - char* tmp = dComIfGp_getStartStageName(); + const char* tmp = dComIfGp_getStartStageName(); // D_MN08: Palace of Twilight if (strncmp(tmp, "D_MN08", 6)) { return GREEN_RUPEE; diff --git a/src/d/d_kyeff.cpp b/src/d/d_kyeff.cpp index af7c63e793e..16837abee3d 100644 --- a/src/d/d_kyeff.cpp +++ b/src/d/d_kyeff.cpp @@ -73,7 +73,7 @@ SECTION_DEAD static char const* const pad_80394F3D = "\0\0"; // matching but need gameinfo setup #ifdef NONMATCHING bool dKyeff_c::execute() { - char* stageName = dComIfGp_getStartStageName(); + const char* stageName = dComIfGp_getStartStageName(); int strcmp_result = strcmp(stageName, "Name"); // strcmp(stageName,"Name"); if (strcmp_result != 0) { dKyw_wether_move(); diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index b731614513e..4d2c6c29e78 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -546,8 +546,8 @@ static asm int dStage_RoomKeepDoorInit(dStage_dt_c* param_0, void* param_1, int #pragma pop #endif -void dStage_startStage_c::set(const char* i_Stage, s8 i_RoomNo, s16 i_Point, s8 i_Layer) { - strcpy(mStage, i_Stage); +void dStage_startStage_c::set(const char* i_Name, s8 i_RoomNo, s16 i_Point, s8 i_Layer) { + strcpy(mName, i_Name); mRoomNo = i_RoomNo; mPoint = i_Point; mLayer = i_Layer; diff --git a/src/d/kankyo/d_kankyo.cpp b/src/d/kankyo/d_kankyo.cpp index fbdf59e1e1f..4ef49f05844 100644 --- a/src/d/kankyo/d_kankyo.cpp +++ b/src/d/kankyo/d_kankyo.cpp @@ -5,6 +5,7 @@ #include "d/kankyo/d_kankyo.h" #include "d/com/d_com_inf_game.h" +#include "d/kankyo/d_kankyo_data.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -389,6 +390,12 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; // Declarations: // +// TODO: Temporarily putting here. There is said to be some issues in `d_com_inf_game.h` which need +// to be sorted out before we can correctly use this function from there. +inline BOOL dComIfGs_isEventBit(u16 id) { + return g_dComIfG_gameInfo.info.getSavedata().getEvent().isEventBit(id); +} + /* 8019C388-8019C3A4 196CC8 001C+00 2/2 0/0 0/0 .text dKy_WolfPowerup_AmbCol__FP11_GXColorS10 */ #pragma push #pragma optimization_level 0 @@ -3183,52 +3190,166 @@ asm void dKy_darkworld_check() { } #pragma pop -/* ############################################################################################## */ -/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80394ED5 = "F_SP108"; -#pragma pop - +/** + * @brief Returns the following info about a room: (1) if the room must not be in twilight and (2) + * which darkLv the room belongs to (Faron, Eldin, etc.). + * + * @param stageName stage name + * @param roomNo room number + * @param out_darkLv byte pointer to write darkLv to, or NULL + * @param tblIndex index in darkworld table for the stageName + * @return int Returns -1 if the given room must not be loaded in twilight, else returns 0 or 1. A + * return of 1 means darkLv should be read from out_darkLv and 0 means it should be read from the + * darkworld table. + */ /* 801AC5BC-801AC70C 1A6EFC 0150+00 3/3 0/0 0/0 .text dKy_F_SP121Check__FPCciPUci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void dKy_F_SP121Check(char const* param_0, int param_1, u8* param_2, int param_3) { - nofralloc -#include "asm/d/kankyo/d_kankyo/dKy_F_SP121Check__FPCciPUci.s" -} -#pragma pop +static int dKy_F_SP121Check(char const* stageName, int roomNo, u8* out_darkLv, int tblIndex) { + dKyd_darkworldTblEntry* darkworldTbl = dKyd_darkworld_tbl_getp(); + int result = 0; + if (out_darkLv != NULL) { + *out_darkLv = UNCLEARABLE; + } + + // Stage is Hyrule Field + if (!strcmp(stageName, "F_SP121")) { + // Room is one of: + // - Eldin Field (0) + // - Kakariko Gorge (3) + // - Eldin Field / Kakariko Gorge Path North (5) and South (4) + // - Faron Field / Kakariko Gorge Path North (2) + // - Outside Hidden Village (7) + if (roomNo == 0 || (2 <= roomNo && roomNo <= 5) || roomNo == 7) { + if (out_darkLv != NULL) { + *out_darkLv = ELDIN; + } + result = 1; + } + + // Room is one of: + // - Lanayru Field (10) + // - Great Bridge of Hylia (13) + // - Lanayru Field / Great Bridge of Hylia Path North (11) and South (12) + // - Faron Field / Great Bridge of Hylia Path North (14) + // - Lanayru Field / Outside Hidden Village Path (9) + else if (roomNo >= 9 && roomNo <= 14) { + if (out_darkLv != NULL) { + *out_darkLv = LANAYRU; + } + result = 1; + } + + // Room is one of: + // - Faron Field (6) + // - Faron Field / Kakariko Gorge Path South (1) + // - Faron Field / Great Bridge of Hylia Path South (15) + else { + result = -1; + } + } + + // Faron Spring; No twilight during Rusl cutscene at very beginning of game. + else if (!strcmp(stageName, "F_SP108") && roomNo == 1 && dComIfGp_getStartStageLayer() == 13) { + result = -1; + } + + // Prevent twilight if stage depends on Faron Twilight cleared status (Faron Woods, Coro's + // Lantern Shop, Faron Woods Cave) but haven't finished Ordon Day 2. + if (darkworldTbl[tblIndex].darkLv == FARON && !dComIfGs_isEventBit(0x4510)) { + result = -1; + } + + return result; +} + +/** + * @brief Returns TRUE if (1) the room is one which can be loaded in twilight, (2) there is nothing + * currently preventing it from being loaded in twilight, and (3) the player has not cleared the + * relevant dark level (Faron Twilight, etc.). Otherwise returns FALSE. + * + * @param stageName stage name + * @param roomNo room number + * @return BOOL Returns TRUE if the room can be loaded as twilight and the player has not already + * cleared it, else FALSE. + */ /* 801AC70C-801AC7E0 1A704C 00D4+00 0/0 2/2 0/0 .text dKy_darkworld_stage_check__FPCci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL dKy_darkworld_stage_check(char const* param_0, int param_1) { - nofralloc -#include "asm/d/kankyo/d_kankyo/dKy_darkworld_stage_check__FPCci.s" -} -#pragma pop +BOOL dKy_darkworld_stage_check(char const* stageName, int roomNo) { + dKyd_darkworldTblEntry* darkworldTbl = dKyd_darkworld_tbl_getp(); + BOOL result = FALSE; + u8 darkLv[1]; -/* 801AC7E0-801AC870 1A7120 0090+00 0/0 1/1 0/0 .text dKy_darkworld_spot_check__FPCci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKy_darkworld_spot_check(char const* param_0, int param_1) { - nofralloc -#include "asm/d/kankyo/d_kankyo/dKy_darkworld_spot_check__FPCci.s" + for (int i = 0; i < 34; i++) { + if (!strcmp(stageName, darkworldTbl[i].stageName)) { + if (darkworldTbl[i].darkLv != ALWAYS_DARK) { + int fsp121CheckResult = dKy_F_SP121Check(stageName, roomNo, darkLv, i); + if (fsp121CheckResult >= 0) { + if (fsp121CheckResult == 0) { + *darkLv = darkworldTbl[i].darkLv; + } + if (!dComIfGs_isDarkClearLV(*darkLv)) { + result = TRUE; + } + break; + } + } else { + // ALWAYS_DARK is used to force twilight (likely for testing). This will + // never normally run since it is not present in l_darkworld_tbl. + result = TRUE; + break; + } + } + } + + return result; +} + +/** + * @brief Returns TRUE if a given room would be loaded in twilight. This function always behaves as + * if the player has not cleared any twilights. + * + * For example, Eldin Field will always return TRUE. Faron Woods on the other hand might return TRUE + * or FALSE depending on whether or not the player has completed Ordon Day 2. + * + * @param stageName stage name + * @param roomNo room number + * @return BOOL Returns TRUE if a given room would be loaded in twilight. This function always + * behaves as if the player has not cleared any twilights. + */ +/* 801AC7E0-801AC870 1A7120 0090+00 0/0 1/1 0/0 .text dKy_darkworld_spot_check__FPCci */ +BOOL dKy_darkworld_spot_check(char const* stageName, int roomNo) { + dKyd_darkworldTblEntry* darkworldTblPtr = dKyd_darkworld_tbl_getp(); + BOOL result = FALSE; + + for (int i = 0; i < 34; i++) { + if (!strcmp(stageName, darkworldTblPtr->stageName) && + dKy_F_SP121Check(stageName, roomNo, NULL, i) >= 0) { + result = TRUE; + break; + } + darkworldTblPtr++; + } + + return result; } -#pragma pop /* 801AC870-801AC918 1A71B0 00A8+00 0/0 1/1 0/0 .text dKy_darkworld_Area_set__FPCci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKy_darkworld_Area_set(char const* param_0, int param_1) { - nofralloc -#include "asm/d/kankyo/d_kankyo/dKy_darkworld_Area_set__FPCci.s" +void dKy_darkworld_Area_set(char const* stageName, int roomNo) { + dKyd_darkworldTblEntry* darkworldTblPtr = dKyd_darkworld_tbl_getp(); + u8 darkLv[1]; + + for (int i = 0; i < 34; i++) { + if (!strcmp(stageName, darkworldTblPtr[i].stageName)) { + int fsp121CheckResult = dKy_F_SP121Check(stageName, roomNo, darkLv, i); + if (fsp121CheckResult >= 0) { + if (fsp121CheckResult == 0) { + *darkLv = darkworldTblPtr[i].darkLv; + } + dComIfGp_setStartStageDarkArea(*darkLv); + break; + } + } + } } -#pragma pop /* ############################################################################################## */ /* 80453E00-80453E04 002400 0004+00 1/1 0/0 0/0 .sdata2 @10483 */ diff --git a/src/d/kankyo/d_kankyo_data.cpp b/src/d/kankyo/d_kankyo_data.cpp index 9089d10e0a2..ab8c0c6f51a 100644 --- a/src/d/kankyo/d_kankyo_data.cpp +++ b/src/d/kankyo/d_kankyo_data.cpp @@ -5,8 +5,38 @@ #include "d/kankyo/d_kankyo_data.h" #include "dol2asm.h" +#include "dolphin/gx/GX.h" #include "dolphin/types.h" +// +// Types: +// + +// Invented name. TODO: this should be renamed and probably moved to the header +// file once l_field_data is looked into more. Looks like it might be related to +// color palettes based off of dKyd_dmpalet_getp function name? +struct dKyd_l_field_data_struct { + u8 data[52]; +}; + +// Invented name. TODO: this should be renamed and probably moved to the header +// file once l_envr_default is looked into more. +struct dKyd_l_envr_default_struct { + u8 data[65]; +}; + +// Invented name. TODO: this should be renamed and probably moved to the header +// file once l_vr_box_data is looked into more. +struct dKyd_l_vr_box_data_struct { + u8 data[21]; +}; + +// Invented name. TODO: this should be renamed and probably moved to the header +// file once l_pselect_default is looked into more. +struct dKyd_l_pselect_default_struct { + u8 data[12]; +}; + // // Forward References: // @@ -35,1033 +65,403 @@ extern "C" extern u8 g_env_light[4880]; // Declarations: // -/* ############################################################################################## */ -/* 8037A1C0-8037A1C0 006820 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8037A1C0 = "R_SP30"; -SECTION_DEAD static char const* const stringBase_8037A1C7 = "T_SP05"; -SECTION_DEAD static char const* const stringBase_8037A1CE = "T_SP05A"; -SECTION_DEAD static char const* const stringBase_8037A1D6 = "T_WARP2"; -SECTION_DEAD static char const* const stringBase_8037A1DE = "T_IMAI"; -SECTION_DEAD static char const* const stringBase_8037A1E5 = "T_IMAI0"; -SECTION_DEAD static char const* const stringBase_8037A1ED = "T_TOMI"; -SECTION_DEAD static char const* const stringBase_8037A1F4 = "T_SASA1"; -SECTION_DEAD static char const* const stringBase_8037A1FC = "F_SP105"; -SECTION_DEAD static char const* const stringBase_8037A204 = "F_SP05"; -SECTION_DEAD static char const* const stringBase_8037A20B = "R_SP107"; -SECTION_DEAD static char const* const stringBase_8037A213 = "F_SP108"; -SECTION_DEAD static char const* const stringBase_8037A21B = "R_SP108"; -SECTION_DEAD static char const* const stringBase_8037A223 = "TEST11"; -SECTION_DEAD static char const* const stringBase_8037A22A = "F_SP109"; -SECTION_DEAD static char const* const stringBase_8037A232 = "F_SP110"; -SECTION_DEAD static char const* const stringBase_8037A23A = "R_SP109"; -SECTION_DEAD static char const* const stringBase_8037A242 = "F_SP111"; -SECTION_DEAD static char const* const stringBase_8037A24A = "F_SP112"; -SECTION_DEAD static char const* const stringBase_8037A252 = "F_SP113"; -SECTION_DEAD static char const* const stringBase_8037A25A = "F_SP115"; -SECTION_DEAD static char const* const stringBase_8037A262 = "F_SP116"; -SECTION_DEAD static char const* const stringBase_8037A26A = "F_SP122"; -SECTION_DEAD static char const* const stringBase_8037A272 = "F_SP121"; -SECTION_DEAD static char const* const stringBase_8037A27A = "F_SP126"; -SECTION_DEAD static char const* const stringBase_8037A282 = "R_SP209"; -SECTION_DEAD static char const* const stringBase_8037A28A = "R_SP116"; -SECTION_DEAD static char const* const stringBase_8037A292 = "D_MN08"; -SECTION_DEAD static char const* const stringBase_8037A299 = "D_MN08B"; -SECTION_DEAD static char const* const stringBase_8037A2A1 = "D_MN08C"; -SECTION_DEAD static char const* const stringBase_8037A2A9 = "D_MN08A"; -SECTION_DEAD static char const* const stringBase_8037A2B1 = "D_SB10"; -SECTION_DEAD static char const* const stringBase_8037A2B8 = "R_SP01"; -SECTION_DEAD static char const* const stringBase_8037A2BF = "R_SP128"; -SECTION_DEAD static char const* const stringBase_8037A2C7 = "F_SP114"; -SECTION_DEAD static char const* const stringBase_8037A2CF = "F_SP102"; -SECTION_DEAD static char const* const stringBase_8037A2D7 = "F_SP123"; -SECTION_DEAD static char const* const stringBase_8037A2DF = "R_SP160"; -SECTION_DEAD static char const* const stringBase_8037A2E7 = "R_SP161"; -SECTION_DEAD static char const* const stringBase_8037A2EF = "F_SP118"; -SECTION_DEAD static char const* const stringBase_8037A2F7 = "F_SP124"; -SECTION_DEAD static char const* const stringBase_8037A2FF = "F_SP125"; -SECTION_DEAD static char const* const stringBase_8037A307 = "R_SP127"; -SECTION_DEAD static char const* const stringBase_8037A30F = "D_MN01A"; -SECTION_DEAD static char const* const stringBase_8037A317 = "D_MN10A"; -SECTION_DEAD static char const* const stringBase_8037A31F = "D_MN06A"; -SECTION_DEAD static char const* const stringBase_8037A327 = "D_MN07A"; -SECTION_DEAD static char const* const stringBase_8037A32F = "D_MN08D"; -SECTION_DEAD static char const* const stringBase_8037A337 = "D_MN09"; -SECTION_DEAD static char const* const stringBase_8037A33E = "D_MN09B"; -SECTION_DEAD static char const* const stringBase_8037A346 = "D_MN09C"; -SECTION_DEAD static char const* const stringBase_8037A34E = "R_SP300"; -SECTION_DEAD static char const* const stringBase_8037A356 = "D_SB02"; -SECTION_DEAD static char const* const stringBase_8037A35D = "D_SB03"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_8037A364 = "\0\0\0"; -#pragma pop - /* 803A8E98-803A9198 005FB8 0300+00 1/1 0/0 0/0 .data l_kydata_BloomInf_tbl */ SECTION_DATA static u8 l_kydata_BloomInf_tbl[768] = { - 0x01, 0xFF, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x28, 0x46, 0x87, - 0xCF, 0xB1, 0x38, 0xD2, 0xFF, 0xFF, 0xFF, 0x60, 0x00, 0x2D, 0x46, 0x73, 0xCF, 0xB1, 0x38, 0xD2, - 0xFF, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x40, 0x30, 0x60, 0xBA, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, - 0x01, 0x40, 0x50, 0x40, 0x86, 0x83, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x64, 0x50, 0x50, - 0xFF, 0xD7, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xA0, 0x30, 0xC8, 0x81, 0x77, 0x6F, 0xFF, - 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x64, 0x40, 0x60, 0xFF, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, - 0x01, 0x60, 0x5E, 0x60, 0x69, 0x86, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x40, 0x60, 0x6E, - 0x58, 0xA5, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x23, 0x2F, 0x9B, 0x7D, 0x6E, 0x50, 0xFF, - 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x30, 0x40, 0x80, 0x3C, 0xB7, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, - 0x01, 0x38, 0x5F, 0x82, 0x7D, 0x87, 0x93, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x73, 0x6C, 0xFF, - 0xED, 0xFF, 0xCA, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x31, 0x30, 0xC8, 0x97, 0xAB, 0xA0, 0xFF, - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x28, 0x46, 0x78, 0x42, 0x2E, 0x30, 0xFF, 0x80, 0xFF, 0xFF, 0x54, - 0x00, 0x28, 0x46, 0x87, 0x96, 0xB4, 0x64, 0xD2, 0xFF, 0xFF, 0xFF, 0x54, 0x01, 0x28, 0x46, 0x73, - 0x78, 0x96, 0xA0, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x62, 0x69, 0x80, 0xB2, 0x5F, 0x00, 0xFF, 0xE4, 0xFF, 0xFF, 0x90, - 0x01, 0x30, 0x40, 0x59, 0xFF, 0xEF, 0x86, 0xCE, 0xFF, 0xD5, 0x8C, 0xC8, 0x01, 0x6E, 0x46, 0x9A, - 0xFF, 0xD7, 0x06, 0xE0, 0xFF, 0xDC, 0xA7, 0x49, 0x01, 0x40, 0x60, 0x40, 0x6E, 0x80, 0x80, 0xFF, - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, - 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x8C, 0x2D, 0xA0, - 0x63, 0x55, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x5F, 0x59, 0x5A, 0x96, 0x91, 0x84, 0xFF, - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x52, 0x64, 0x3C, 0xFF, 0xC2, 0x70, 0xBA, 0xFF, 0xFF, 0xFF, 0x00, - 0x00, 0x8C, 0x2D, 0xA0, 0x63, 0x55, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x46, 0x5A, 0x41, - 0x3C, 0x50, 0x46, 0xFF, 0xFA, 0xFF, 0x9B, 0x78, 0x01, 0x2E, 0x60, 0x7D, 0x64, 0x96, 0x80, 0xFF, - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x83, 0xFF, 0x72, 0xD1, 0xFF, 0xFF, 0xFF, 0xE2, 0xFE, 0x7D, - 0x00, 0x5F, 0x14, 0xB4, 0x50, 0x96, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x28, 0x46, 0x87, - 0x82, 0xC8, 0xFA, 0xD2, 0xFF, 0xFF, 0xFF, 0x32, 0x00, 0x20, 0x10, 0x50, 0x64, 0x64, 0x32, 0xFF, - 0x96, 0xFF, 0xFF, 0x82, 0x00, 0x00, 0x00, 0x30, 0x00, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, - 0x01, 0x40, 0x50, 0x40, 0x86, 0x83, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x64, 0x50, 0x50, - 0xFF, 0xD7, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xA0, 0x30, 0xC8, 0x81, 0x77, 0x6F, 0xFF, - 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x64, 0x40, 0x60, 0xFF, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, - 0x01, 0x30, 0x30, 0x60, 0x6F, 0x69, 0x52, 0xFF, 0xC0, 0xB9, 0xA1, 0x80, 0x01, 0x2D, 0x60, 0x87, - 0xFF, 0xE0, 0x46, 0xFF, 0xFF, 0x85, 0x79, 0x60, 0x00, 0x00, 0x88, 0x6A, 0x85, 0x3E, 0x1F, 0xFF, - 0xFF, 0xFF, 0xFF, 0x11, 0x00, 0x2E, 0x41, 0x64, 0xF9, 0xE7, 0x7C, 0xD0, 0xFF, 0xDA, 0x9A, 0xBB, - 0x00, 0x00, 0xFF, 0xFF, 0xBE, 0xB9, 0xB4, 0xE6, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x46, 0x50, - 0xCF, 0xB1, 0x38, 0xD2, 0xFF, 0xFF, 0xFF, 0x60, 0x00, 0xA0, 0x14, 0x32, 0xE6, 0xFF, 0x96, 0xF3, - 0xE6, 0xFF, 0x96, 0x6E, 0x00, 0x52, 0x64, 0x3C, 0xFF, 0xC2, 0x70, 0xBA, 0xFF, 0xFF, 0xFF, 0x00, - 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x80, 0x40, 0x80, - 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x62, 0x69, 0x80, 0xB2, 0x5F, 0x00, 0xFF, 0xE4, 0xFF, 0xFF, 0x90, - 0x01, 0x30, 0x40, 0x59, 0xFF, 0xEF, 0x86, 0xCE, 0xFF, 0xD5, 0x8C, 0xC8, 0x01, 0x6E, 0x46, 0x9A, - 0xFF, 0xD7, 0x06, 0xE0, 0xFF, 0xDC, 0xA7, 0x49, 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, - 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x40, 0x80, - 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, - 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x40, 0x80, - 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Each is 0xc long; All u8's + 0x01, 0xFF, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x28, 0x46, 0x87, 0xCF, 0xB1, 0x38, 0xD2, 0xFF, 0xFF, 0xFF, 0x60, // + 0x00, 0x2D, 0x46, 0x73, 0xCF, 0xB1, 0x38, 0xD2, 0xFF, 0xFF, 0xFF, 0x60, // + 0x00, 0x00, 0x40, 0x30, 0x60, 0xBA, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x40, 0x50, 0x40, 0x86, 0x83, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x64, 0x50, 0x50, 0xFF, 0xD7, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0xA0, 0x30, 0xC8, 0x81, 0x77, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x64, 0x40, 0x60, 0xFF, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x60, 0x5E, 0x60, 0x69, 0x86, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x40, 0x60, 0x6E, 0x58, 0xA5, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x23, 0x2F, 0x9B, 0x7D, 0x6E, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x30, 0x40, 0x80, 0x3C, 0xB7, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x38, 0x5F, 0x82, 0x7D, 0x87, 0x93, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x73, 0x6C, 0xFF, 0xED, 0xFF, 0xCA, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x31, 0x30, 0xC8, 0x97, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x28, 0x46, 0x78, 0x42, 0x2E, 0x30, 0xFF, 0x80, 0xFF, 0xFF, 0x54, // + 0x00, 0x28, 0x46, 0x87, 0x96, 0xB4, 0x64, 0xD2, 0xFF, 0xFF, 0xFF, 0x54, // + 0x01, 0x28, 0x46, 0x73, 0x78, 0x96, 0xA0, 0x0D, 0x00, 0x00, 0x00, 0x00, // + 0x01, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, // + 0x00, 0x62, 0x69, 0x80, 0xB2, 0x5F, 0x00, 0xFF, 0xE4, 0xFF, 0xFF, 0x90, // + 0x01, 0x30, 0x40, 0x59, 0xFF, 0xEF, 0x86, 0xCE, 0xFF, 0xD5, 0x8C, 0xC8, // + 0x01, 0x6E, 0x46, 0x9A, 0xFF, 0xD7, 0x06, 0xE0, 0xFF, 0xDC, 0xA7, 0x49, // + 0x01, 0x40, 0x60, 0x40, 0x6E, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x8C, 0x2D, 0xA0, 0x63, 0x55, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x5F, 0x59, 0x5A, 0x96, 0x91, 0x84, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x52, 0x64, 0x3C, 0xFF, 0xC2, 0x70, 0xBA, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x8C, 0x2D, 0xA0, 0x63, 0x55, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x46, 0x5A, 0x41, 0x3C, 0x50, 0x46, 0xFF, 0xFA, 0xFF, 0x9B, 0x78, // + 0x01, 0x2E, 0x60, 0x7D, 0x64, 0x96, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x00, 0x83, 0xFF, 0x72, 0xD1, 0xFF, 0xFF, 0xFF, 0xE2, 0xFE, 0x7D, // + 0x00, 0x5F, 0x14, 0xB4, 0x50, 0x96, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, // + 0x00, 0x28, 0x46, 0x87, 0x82, 0xC8, 0xFA, 0xD2, 0xFF, 0xFF, 0xFF, 0x32, // + 0x00, 0x20, 0x10, 0x50, 0x64, 0x64, 0x32, 0xFF, 0x96, 0xFF, 0xFF, 0x82, // + 0x00, 0x00, 0x00, 0x30, 0x00, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x40, 0x50, 0x40, 0x86, 0x83, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x64, 0x50, 0x50, 0xFF, 0xD7, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0xA0, 0x30, 0xC8, 0x81, 0x77, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x64, 0x40, 0x60, 0xFF, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x30, 0x30, 0x60, 0x6F, 0x69, 0x52, 0xFF, 0xC0, 0xB9, 0xA1, 0x80, // + 0x01, 0x2D, 0x60, 0x87, 0xFF, 0xE0, 0x46, 0xFF, 0xFF, 0x85, 0x79, 0x60, // + 0x00, 0x00, 0x88, 0x6A, 0x85, 0x3E, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x11, // + 0x00, 0x2E, 0x41, 0x64, 0xF9, 0xE7, 0x7C, 0xD0, 0xFF, 0xDA, 0x9A, 0xBB, // + 0x00, 0x00, 0xFF, 0xFF, 0xBE, 0xB9, 0xB4, 0xE6, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x2D, 0x46, 0x50, 0xCF, 0xB1, 0x38, 0xD2, 0xFF, 0xFF, 0xFF, 0x60, // + 0x00, 0xA0, 0x14, 0x32, 0xE6, 0xFF, 0x96, 0xF3, 0xE6, 0xFF, 0x96, 0x6E, // + 0x00, 0x52, 0x64, 0x3C, 0xFF, 0xC2, 0x70, 0xBA, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0x00, // + 0x01, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, // + 0x00, 0x62, 0x69, 0x80, 0xB2, 0x5F, 0x00, 0xFF, 0xE4, 0xFF, 0xFF, 0x90, // + 0x01, 0x30, 0x40, 0x59, 0xFF, 0xEF, 0x86, 0xCE, 0xFF, 0xD5, 0x8C, 0xC8, // + 0x01, 0x6E, 0x46, 0x9A, 0xFF, 0xD7, 0x06, 0xE0, 0xFF, 0xDC, 0xA7, 0x49, // + 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, // + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // }; /* 803A9198-803A92A8 -00001 0110+00 1/1 0/0 0/0 .data l_darkworld_tbl */ -SECTION_DATA static void* l_darkworld_tbl[68] = { - (void*)&d_kankyo_d_kankyo_data__stringBase0, - (void*)0x06000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x7), - (void*)0x05000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xE), - (void*)0x05000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x16), - (void*)0x05000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x1E), - (void*)0x05000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x25), - (void*)0x05000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x2D), - (void*)0x05000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x2D), - (void*)0x05000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x2D), - (void*)0x05000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x34), - (void*)0x05000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x3C), - (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x44), - (void*)0x05000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x4B), - (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x53), - (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x5B), - (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x63), - (void*)0x05000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x6A), - (void*)0x01000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x72), - (void*)0x01000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x7A), - (void*)0x01000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x82), - (void*)0x01000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x8A), - (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x92), - (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x9A), - (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xA2), - (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xAA), - (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xB2), - (void*)0x01000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xBA), - (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xC2), - (void*)0x01000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xCA), - (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xD2), - (void*)0x06000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xD9), - (void*)0x06000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xE1), - (void*)0x06000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xE9), - (void*)0x06000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xF1), - (void*)NULL, +static dKyd_darkworldTblEntry l_darkworld_tbl[34] = { + {"R_SP30", UNCLEARABLE}, // UNUSED - Unknown Room + {"T_SP05", TEST}, // UNUSED - E3 2005 Warp Test (Old) + {"T_SP05A", TEST}, // UNUSED - Ito Warp Test + {"T_WARP2", TEST}, // UNUSED - Unknown Test + {"T_IMAI", TEST}, // UNUSED - Imai Shape Check (Level 2) + {"T_IMAI0", TEST}, // UNUSED - Imai Shape Check (Level 3) + {"T_TOMI", TEST}, // UNUSED - Tominaga Test 1 + {"T_TOMI", TEST}, // UNUSED - Same as above + {"T_TOMI", TEST}, // UNUSED - Same as above + {"T_SASA1", TEST}, // UNUSED - Sasaki Test 1 + {"F_SP105", FARON}, // UNUSED - L1 Forest Field + {"F_SP05", TEST}, // UNUSED - Statue Forest + {"R_SP107", LANAYRU}, // Castle Sewers/Rooftops/Tower + {"F_SP108", FARON}, // Faron Woods + {"R_SP108", FARON}, // Coro's Lantern Shop + {"TEST11", TEST}, // UNUSED - Local Map C + {"F_SP109", ELDIN}, // Kakariko Village + {"F_SP110", ELDIN}, // Death Mountain + {"R_SP109", ELDIN}, // Kakariko Interiors + {"F_SP111", ELDIN}, // Kakariko Graveyard + {"F_SP112", LANAYRU}, // Zora's River + {"F_SP113", LANAYRU}, // Zora's Domain + {"F_SP115", LANAYRU}, // Lake Hylia + {"F_SP116", LANAYRU}, // Hyrule Castle Town + {"F_SP122", LANAYRU}, // Castle Town Gates + {"F_SP121", ELDIN}, // Hyrule Field + {"F_SP126", LANAYRU}, // Upper Zora's River + {"R_SP209", ELDIN}, // Sanctuary Basement + {"R_SP116", LANAYRU}, // Hyrule Castle Town Interiors + {"D_MN08", UNCLEARABLE}, // Palace of Twilight + {"D_MN08B", UNCLEARABLE}, // Palace of Twilight Miniboss A + {"D_MN08C", UNCLEARABLE}, // Palace of Twilight Miniboss B + {"D_MN08A", UNCLEARABLE}, // Palace of Twilight Throne Room + {"D_SB10", FARON}, // Faron Woods Cave }; +// TODO: wrong type +// Only thing I can easily find: the byte is written to 8042DD4D and it seems to control the Y +// pos(?) (essentially brightness) of the soft spotlight that is on wolf Link during twilight? Will +// need more investigation before can be changed to appropriate type. Leaving this way since the +// stageNames are already converted. /* 803A92A8-803A93C8 -00001 0120+00 1/1 0/0 0/0 .data l_light_size_tbl */ -SECTION_DATA static void* l_light_size_tbl[72] = { - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xF8), (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x5B), (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x6A), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x72), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x7A), (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xC2), (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xFF), (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x107), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x9A), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xB2), (void*)0x03000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x10F), (void*)0x03000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xAA), (void*)0x03000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x117), (void*)0x03000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xCA), (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x11F), (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x127), (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x12F), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x137), (void*)0x03000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x13F), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x147), (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x14F), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x157), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x15F), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x167), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xD2), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xE9), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xD9), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xE1), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x16F), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x177), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x17E), (void*)0x03000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x186), (void*)0x03000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x18E), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x196), (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x19D), (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xF1), (void*)NULL, +static dKyd_darkworldTblEntry l_light_size_tbl[36] = { + {"R_SP01", 0}, // Ordon Interiors + {"R_SP108", 0}, // Coro's Lantern Shop + {"F_SP109", 2}, // Kakariko Village + {"F_SP110", 2}, // Death Mountain + {"R_SP109", 0}, // Kakariko Interiors + {"R_SP209", 0}, // Sanctuary Basement + {"R_SP128", 0}, // Impaz's House + {"F_SP114", 2}, // Snowpeak + {"F_SP115", 2}, // Lake Hylia + {"F_SP121", 3}, // Hyrule Field + {"F_SP102", 3}, // Bridge of Eldin Battle + {"F_SP122", 3}, // Castle Town Gates + {"F_SP123", 3}, // Great Bridge of Hylia Battle + {"R_SP116", 0}, // Hyrule Castle Town Interiors + {"R_SP160", 0}, // Hyrule Castle Town Shops + {"R_SP161", 0}, // STAR Tent + {"F_SP118", 2}, // Sanctuary Basement + {"F_SP124", 3}, // Gerudo Desert + {"F_SP125", 2}, // Mirror Chamber + {"R_SP127", 0}, // Hena's Cabin + {"D_MN01A", 2}, // Lakebed Temple Boss + {"D_MN10A", 2}, // Arbiter's Grounds Boss + {"D_MN06A", 2}, // Temple of Time Boss + {"D_MN07A", 2}, // City in the Sky Boss + {"D_MN08", 2}, // Palace of Twilight + {"D_MN08A", 2}, // Palace of Twilight Throne Room + {"D_MN08B", 2}, // Palace of Twilight Miniboss A + {"D_MN08C", 2}, // Palace of Twilight Miniboss B + {"D_MN08D", 2}, // Palace of Twilight Boss + {"D_MN09", 2}, // Hyrule Castle + {"D_MN09B", 3}, // Final Battle (Hyrule Field) + {"D_MN09C", 3}, // Hyrule Field (Cutscene) + {"R_SP300", 2}, // Light Spirits' Chamber + {"D_SB02", 0}, // Kakariko Gorge Lantern Cave + {"D_SB03", 0}, // Lake Hylia Lantern Cave + {"D_SB10", 0}, // Faron Woods Cave }; +// TODO: wrong type /* 803A93C8-803A9410 -00001 0048+00 1/1 0/0 0/0 .data l_light_size_tbl_tw */ -SECTION_DATA static void* l_light_size_tbl_tw[18] = { - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x6A), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x72), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xC2), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x92), (void*)NULL, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xBA), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x9A), (void*)0x02000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xB2), (void*)0x03000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0x10F), (void*)0x03000000, - (void*)(((char*)&d_kankyo_d_kankyo_data__stringBase0) + 0xAA), (void*)0x03000000, +static dKyd_darkworldTblEntry l_light_size_tbl_tw[9] = { + {"F_SP109", 2}, // Kakariko Village + {"F_SP110", 2}, // Death Mountain + {"R_SP209", 2}, // Sanctuary Basement + {"F_SP113", 0}, // Zora's Domain + {"F_SP126", 2}, // Upper Zora's River + {"F_SP115", 2}, // Lake Hylia + {"F_SP121", 3}, // Hyrule Field + {"F_SP102", 3}, // Bridge of Eldin Battle + {"F_SP122", 3}, // Castle Town Gates }; +// Maple color. Used in Fishing Hole. Values are RGB. TODO: struct here? /* 803A9410-803A9434 006530 0024+00 1/1 0/0 0/0 .data l_maple_col */ -SECTION_DATA static u8 l_maple_col[36] = { - 0x56, 0x4B, 0x39, 0x37, 0x28, 0x1E, 0x6E, 0x32, 0x0F, 0x64, 0x64, 0x80, - 0x52, 0x41, 0x66, 0x19, 0x0F, 0x00, 0x46, 0x00, 0x0F, 0x64, 0x64, 0x80, - 0x65, 0x5E, 0x69, 0x0E, 0x23, 0x0B, 0x28, 0x14, 0x05, 0x5A, 0x5A, 0x6E, +static u8 l_maple_col[36] = { + // leaf color blend major + 0x56, 0x4B, 0x39, // spring + 0x37, 0x28, 0x1E, // summer + 0x6E, 0x32, 0x0F, // fall + 0x64, 0x64, 0x80, // winter + // leaf color blend minor + 0x52, 0x41, 0x66, // spring + 0x19, 0x0F, 0x00, // summer + 0x46, 0x00, 0x0F, // fall + 0x64, 0x64, 0x80, // winter + // leaf color base + 0x65, 0x5E, 0x69, // spring + 0x0E, 0x23, 0x0B, // summer + 0x28, 0x14, 0x05, // fall + 0x5A, 0x5A, 0x6E, // winter }; /* 803A9434-803A94B8 006554 0084+00 1/1 0/0 0/0 .data l_time_attribute */ -SECTION_DATA static u8 l_time_attribute[132] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x42, 0x96, 0x00, - 0x00, 0x42, 0xB4, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x42, 0xB4, 0x00, 0x00, 0x42, 0xD2, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x42, 0xD2, 0x00, 0x00, 0x42, 0xD2, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x42, 0xD2, 0x00, 0x00, 0x43, 0x07, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, - 0x43, 0x07, 0x00, 0x00, 0x43, 0x70, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x43, 0x70, 0x00, - 0x00, 0x43, 0x7F, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x43, 0x7F, 0x00, 0x00, 0x43, 0x87, - 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x43, 0x87, 0x00, 0x00, 0x43, 0x8E, 0x80, 0x00, 0x03, - 0x04, 0x00, 0x00, 0x43, 0x8E, 0x80, 0x00, 0x43, 0x96, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0x43, 0xB4, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, +static dKyd_lightSchejule l_time_attribute[11] = { + {0.0f, 75.0f, 5, 5}, {75.0f, 90.0f, 5, 0}, {90.0f, 105.0f, 0, 1}, {105.0f, 105.0f, 1, 1}, + {105.0f, 135.0f, 1, 2}, {135.0f, 240.0f, 2, 2}, {240.0f, 255.0f, 2, 3}, {255.0f, 270.0f, 3, 3}, + {270.0f, 285.0f, 3, 4}, {285.0f, 300.0f, 4, 5}, {300.0f, 360.0f, 5, 5}, }; /* 803A94B8-803A953C 0065D8 0084+00 1/1 0/0 0/0 .data l_time_attribute_boss */ -SECTION_DATA static u8 l_time_attribute_boss[132] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x42, 0x34, 0x00, - 0x00, 0x42, 0xB4, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x42, 0xB4, 0x00, 0x00, 0x43, 0x34, - 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x43, 0x61, 0x00, 0x00, 0x03, - 0x04, 0x00, 0x00, 0x43, 0x61, 0x00, 0x00, 0x43, 0x87, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, - 0x43, 0x87, 0x00, 0x00, 0x43, 0xB4, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x43, 0xB4, 0x00, - 0x00, 0x43, 0xB4, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x43, 0xB4, 0x00, 0x00, 0x43, 0xB4, - 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x43, 0xB4, 0x00, 0x00, 0x43, 0xB4, 0x00, 0x00, 0x05, - 0x05, 0x00, 0x00, 0x43, 0xB4, 0x00, 0x00, 0x43, 0xB4, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, - 0x43, 0xB4, 0x00, 0x00, 0x43, 0xB4, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, +static dKyd_lightSchejule l_time_attribute_boss[11] = { + {0.0f, 45.0f, 0, 1}, {45.0f, 90.0f, 1, 2}, {90.0f, 180.0f, 2, 3}, {180.0f, 225.0f, 3, 4}, + {225.0f, 270.0f, 4, 5}, {270.0f, 360.0f, 5, 0}, {360.0f, 360.0f, 5, 5}, {360.0f, 360.0f, 5, 5}, + {360.0f, 360.0f, 5, 5}, {360.0f, 360.0f, 5, 5}, {360.0f, 360.0f, 5, 5}, }; /* 803A953C-803A987C 00665C 0340+00 1/1 0/0 0/0 .data l_field_data */ -SECTION_DATA static u8 l_field_data[832] = { - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, 0x00, 0x46, 0xEA, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, 0x00, - 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0xC5, 0x9C, 0x40, 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, 0x00, 0x46, 0xEA, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, 0x00, - 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0xC5, 0x9C, 0x40, 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, 0x00, 0x46, 0xEA, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, 0x00, - 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0xC5, 0x9C, 0x40, 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, 0x00, 0x46, 0xEA, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, 0x00, - 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0xC5, 0x9C, 0x40, 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static dKyd_l_field_data_struct l_field_data[16] = { + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC5, 0x9C, 0x40, + 0x00, 0x46, 0xEA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, }; /* 800569DC-800569E8 05131C 000C+00 0/0 1/1 0/0 .text dKyd_dmpalet_getp__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKyd_dmpalet_getp() { - nofralloc -#include "asm/d/kankyo/d_kankyo_data/dKyd_dmpalet_getp__Fv.s" +void* dKyd_dmpalet_getp() { + return l_field_data; } -#pragma pop /* ############################################################################################## */ /* 803A987C-803A9894 00699C 0018+00 1/1 0/0 0/0 .data l_pselect_default */ -SECTION_DATA static u8 l_pselect_default[24] = { - 0x00, 0x00, 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x04, 0x05, 0x06, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; +static dKyd_l_pselect_default_struct l_pselect_default[2] = { + {{0x00, 0x00, 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x04, 0x04, 0x05, 0x06, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}; /* 800569E8-800569F4 051328 000C+00 0/0 1/1 0/0 .text dKyd_dmpselect_getp__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKyd_dmpselect_getp() { - nofralloc -#include "asm/d/kankyo/d_kankyo_data/dKyd_dmpselect_getp__Fv.s" +void* dKyd_dmpselect_getp() { + return l_pselect_default; } -#pragma pop /* ############################################################################################## */ /* 803A9894-803A9918 0069B4 0082+02 1/1 0/0 0/0 .data l_envr_default */ -SECTION_DATA static u8 l_envr_default[130 + 2 /* padding */] = { - 0x00, - 0x01, - 0x02, - 0x03, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x05, - 0x06, - 0x07, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +static dKyd_l_envr_default_struct l_envr_default[2] = { + {{0x00, 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, + {{0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}; /* 800569F4-80056A00 051334 000C+00 0/0 1/1 0/0 .text dKyd_dmenvr_getp__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKyd_dmenvr_getp() { - nofralloc -#include "asm/d/kankyo/d_kankyo_data/dKyd_dmenvr_getp__Fv.s" +void* dKyd_dmenvr_getp() { + return l_envr_default; } -#pragma pop /* ############################################################################################## */ /* 803A9918-803A9A94 006A38 017A+02 1/1 0/0 0/0 .data l_vr_box_data */ -SECTION_DATA static u8 l_vr_box_data[378 + 2 /* padding */] = { - 0x2F, - 0x1A, - 0x07, - 0x44, - 0x1E, - 0x10, - 0xF5, - 0xA5, - 0x6C, - 0x9A, - 0x5C, - 0x3B, - 0xFF, - 0x44, - 0x1E, - 0x10, - 0xA3, - 0xFF, - 0x5B, - 0x49, - 0x72, - 0x39, - 0x5B, - 0xA7, - 0xFF, - 0xF7, - 0xF7, - 0x83, - 0x7E, - 0x7D, - 0x1D, - 0x1E, - 0x20, - 0x00, - 0xFF, - 0xF7, - 0xF7, - 0xFF, - 0xE5, - 0xF5, - 0xFF, - 0xFF, - 0x45, - 0x90, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xC6, - 0x00, - 0x4E, - 0xC3, - 0xFF, - 0xFF, - 0xAD, - 0x85, - 0xEE, - 0x70, - 0x27, - 0x33, - 0x2E, - 0x28, - 0x9A, - 0x5C, - 0x3B, - 0xFF, - 0xE1, - 0x2E, - 0x27, - 0x86, - 0xFF, - 0x66, - 0x43, - 0xFF, - 0x18, - 0x1A, - 0x1B, - 0x3C, - 0x30, - 0x28, - 0x4B, - 0x3C, - 0x2A, - 0x8A, - 0x5E, - 0x43, - 0xFF, - 0x35, - 0x1A, - 0x10, - 0x00, - 0xB2, - 0x6F, - 0x63, - 0x2B, - 0x00, - 0x00, - 0x18, - 0x31, - 0x18, - 0x2F, - 0x00, - 0x0A, - 0x88, - 0x50, - 0x50, - 0x50, - 0x1E, - 0x00, - 0x00, - 0x00, - 0x00, - 0x61, - 0x72, - 0x9D, - 0x78, - 0x2F, - 0x1A, - 0x07, - 0x44, - 0x1E, - 0x10, - 0xF5, - 0xA5, - 0x6C, - 0x9A, - 0x5C, - 0x3B, - 0xFF, - 0x44, - 0x1E, - 0x10, - 0xA3, - 0xFF, - 0x5B, - 0x49, - 0x72, - 0x39, - 0x5B, - 0xA7, - 0xFF, - 0xF7, - 0xF7, - 0x83, - 0x7E, - 0x7D, - 0x1D, - 0x1E, - 0x20, - 0x00, - 0xFF, - 0xF7, - 0xF7, - 0xFF, - 0xE5, - 0xF5, - 0xFF, - 0xFF, - 0x45, - 0x90, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xC6, - 0x00, - 0x4E, - 0xC3, - 0xFF, - 0xFF, - 0xAD, - 0x85, - 0xEE, - 0x70, - 0x27, - 0x33, - 0x2E, - 0x28, - 0x9A, - 0x5C, - 0x3B, - 0xFF, - 0xE1, - 0x2E, - 0x27, - 0x86, - 0xFF, - 0x66, - 0x43, - 0xFF, - 0x18, - 0x1A, - 0x1B, - 0x3C, - 0x30, - 0x28, - 0x4B, - 0x3C, - 0x2A, - 0x8A, - 0x5E, - 0x43, - 0xFF, - 0x35, - 0x1A, - 0x10, - 0x00, - 0xB2, - 0x6F, - 0x63, - 0x2B, - 0x00, - 0x00, - 0x18, - 0x31, - 0x18, - 0x2F, - 0x00, - 0x0A, - 0x88, - 0x50, - 0x50, - 0x50, - 0x1E, - 0x00, - 0x00, - 0x00, - 0x00, - 0x61, - 0x72, - 0x9D, - 0x78, - 0x2F, - 0x1A, - 0x07, - 0x44, - 0x1E, - 0x10, - 0xF5, - 0xA5, - 0x6C, - 0x9A, - 0x5C, - 0x3B, - 0xFF, - 0x44, - 0x1E, - 0x10, - 0xA3, - 0xFF, - 0x5B, - 0x49, - 0x72, - 0x39, - 0x5B, - 0xA7, - 0xFF, - 0xF7, - 0xF7, - 0x83, - 0x7E, - 0x7D, - 0x1D, - 0x1E, - 0x20, - 0x00, - 0xFF, - 0xF7, - 0xF7, - 0xFF, - 0xE5, - 0xF5, - 0xFF, - 0xFF, - 0x45, - 0x90, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xC6, - 0x00, - 0x4E, - 0xC3, - 0xFF, - 0xFF, - 0xAD, - 0x85, - 0xEE, - 0x70, - 0x27, - 0x33, - 0x2E, - 0x28, - 0x9A, - 0x5C, - 0x3B, - 0xFF, - 0xE1, - 0x2E, - 0x27, - 0x86, - 0xFF, - 0x66, - 0x43, - 0xFF, - 0x18, - 0x1A, - 0x1B, - 0x3C, - 0x30, - 0x28, - 0x4B, - 0x3C, - 0x2A, - 0x8A, - 0x5E, - 0x43, - 0xFF, - 0x35, - 0x1A, - 0x10, - 0x00, - 0xB2, - 0x6F, - 0x63, - 0x2B, - 0x00, - 0x00, - 0x18, - 0x31, - 0x18, - 0x2F, - 0x00, - 0x0A, - 0x88, - 0x50, - 0x50, - 0x50, - 0x1E, - 0x00, - 0x00, - 0x00, - 0x00, - 0x61, - 0x72, - 0x9D, - 0x78, - /* padding */ - 0x00, - 0x00, +static dKyd_l_vr_box_data_struct l_vr_box_data[18] = { + {{0x2F, 0x1A, 0x07, 0x44, 0x1E, 0x10, 0xF5, 0xA5, 0x6C, 0x9A, 0x5C, + 0x3B, 0xFF, 0x44, 0x1E, 0x10, 0xA3, 0xFF, 0x5B, 0x49, 0x72}}, + {{0x39, 0x5B, 0xA7, 0xFF, 0xF7, 0xF7, 0x83, 0x7E, 0x7D, 0x1D, 0x1E, + 0x20, 0x00, 0xFF, 0xF7, 0xF7, 0xFF, 0xE5, 0xF5, 0xFF, 0xFF}}, + {{0x45, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x00, 0x4E, 0xC3, 0xFF}}, + {{0xFF, 0xAD, 0x85, 0xEE, 0x70, 0x27, 0x33, 0x2E, 0x28, 0x9A, 0x5C, + 0x3B, 0xFF, 0xE1, 0x2E, 0x27, 0x86, 0xFF, 0x66, 0x43, 0xFF}}, + {{0x18, 0x1A, 0x1B, 0x3C, 0x30, 0x28, 0x4B, 0x3C, 0x2A, 0x8A, 0x5E, + 0x43, 0xFF, 0x35, 0x1A, 0x10, 0x00, 0xB2, 0x6F, 0x63, 0x2B}}, + {{0x00, 0x00, 0x18, 0x31, 0x18, 0x2F, 0x00, 0x0A, 0x88, 0x50, 0x50, + 0x50, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x61, 0x72, 0x9D, 0x78}}, + {{0x2F, 0x1A, 0x07, 0x44, 0x1E, 0x10, 0xF5, 0xA5, 0x6C, 0x9A, 0x5C, + 0x3B, 0xFF, 0x44, 0x1E, 0x10, 0xA3, 0xFF, 0x5B, 0x49, 0x72}}, + {{0x39, 0x5B, 0xA7, 0xFF, 0xF7, 0xF7, 0x83, 0x7E, 0x7D, 0x1D, 0x1E, + 0x20, 0x00, 0xFF, 0xF7, 0xF7, 0xFF, 0xE5, 0xF5, 0xFF, 0xFF}}, + {{0x45, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x00, 0x4E, 0xC3, 0xFF}}, + {{0xFF, 0xAD, 0x85, 0xEE, 0x70, 0x27, 0x33, 0x2E, 0x28, 0x9A, 0x5C, + 0x3B, 0xFF, 0xE1, 0x2E, 0x27, 0x86, 0xFF, 0x66, 0x43, 0xFF}}, + {{0x18, 0x1A, 0x1B, 0x3C, 0x30, 0x28, 0x4B, 0x3C, 0x2A, 0x8A, 0x5E, + 0x43, 0xFF, 0x35, 0x1A, 0x10, 0x00, 0xB2, 0x6F, 0x63, 0x2B}}, + {{0x00, 0x00, 0x18, 0x31, 0x18, 0x2F, 0x00, 0x0A, 0x88, 0x50, 0x50, + 0x50, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x61, 0x72, 0x9D, 0x78}}, + {{0x2F, 0x1A, 0x07, 0x44, 0x1E, 0x10, 0xF5, 0xA5, 0x6C, 0x9A, 0x5C, + 0x3B, 0xFF, 0x44, 0x1E, 0x10, 0xA3, 0xFF, 0x5B, 0x49, 0x72}}, + {{0x39, 0x5B, 0xA7, 0xFF, 0xF7, 0xF7, 0x83, 0x7E, 0x7D, 0x1D, 0x1E, + 0x20, 0x00, 0xFF, 0xF7, 0xF7, 0xFF, 0xE5, 0xF5, 0xFF, 0xFF}}, + {{0x45, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x00, 0x4E, 0xC3, 0xFF}}, + {{0xFF, 0xAD, 0x85, 0xEE, 0x70, 0x27, 0x33, 0x2E, 0x28, 0x9A, 0x5C, + 0x3B, 0xFF, 0xE1, 0x2E, 0x27, 0x86, 0xFF, 0x66, 0x43, 0xFF}}, + {{0x18, 0x1A, 0x1B, 0x3C, 0x30, 0x28, 0x4B, 0x3C, 0x2A, 0x8A, 0x5E, + 0x43, 0xFF, 0x35, 0x1A, 0x10, 0x00, 0xB2, 0x6F, 0x63, 0x2B}}, + {{0x00, 0x00, 0x18, 0x31, 0x18, 0x2F, 0x00, 0x0A, 0x88, 0x50, 0x50, + 0x50, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x61, 0x72, 0x9D, 0x78}}, }; /* 80056A00-80056A0C 051340 000C+00 0/0 1/1 0/0 .text dKyd_dmvrbox_getp__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKyd_dmvrbox_getp() { - nofralloc -#include "asm/d/kankyo/d_kankyo_data/dKyd_dmvrbox_getp__Fv.s" +void* dKyd_dmvrbox_getp() { + return l_vr_box_data; } -#pragma pop /* 80056A0C-80056A18 05134C 000C+00 0/0 1/1 0/0 .text dKyd_schejule_getp__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKyd_schejule_getp() { - nofralloc -#include "asm/d/kankyo/d_kankyo_data/dKyd_schejule_getp__Fv.s" +dKyd_lightSchejule* dKyd_schejule_getp() { + return l_time_attribute; } -#pragma pop /* 80056A18-80056A24 051358 000C+00 0/0 1/1 0/0 .text dKyd_schejule_boss_getp__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKyd_schejule_boss_getp() { - nofralloc -#include "asm/d/kankyo/d_kankyo_data/dKyd_schejule_boss_getp__Fv.s" +dKyd_lightSchejule* dKyd_schejule_boss_getp() { + return l_time_attribute_boss; } -#pragma pop -/* ############################################################################################## */ /* 803A9A94-803A9AC0 006BB4 0028+04 1/1 0/0 0/0 .data S_xfog_table_data */ -SECTION_DATA static u8 S_xfog_table_data[40 + 4 /* padding */] = { - 0x01, - 0x04, - 0x01, - 0x04, - 0x01, - 0x0E, - 0x01, - 0x18, - 0x01, - 0x22, - 0x01, - 0x2C, - 0x01, - 0x36, - 0x01, - 0x40, - 0x01, - 0x4A, - 0x01, - 0x54, - 0x00, - 0xFA, - 0x01, - 0x04, - 0x01, - 0x18, - 0x01, - 0x40, - 0x01, - 0x5E, - 0x01, - 0x90, - 0x01, - 0xE0, - 0x02, - 0x26, - 0x02, - 0x58, - 0x03, - 0x20, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; +static GXFogAdjTable S_xfog_table_data[2] = {{{260, 260, 270, 280, 290, 300, 310, 320, 330, 340}}, + {{250, 260, 280, 320, 350, 400, 480, 550, 600, 800}}}; +// tblIdx must be 0 or 1. Not sure when 1 is used, and didn't see a visible difference when manually +// set it. /* 80056A24-80056A64 051364 0040+00 0/0 2/2 0/0 .text dKyd_xfog_table_set__FUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKyd_xfog_table_set(u8 param_0) { - nofralloc -#include "asm/d/kankyo/d_kankyo_data/dKyd_xfog_table_set__FUc.s" +void dKyd_xfog_table_set(u8 tblIdx) { + for (int i = 0; i < 10; i++) { + u16 fogAdjTableEntry = S_xfog_table_data[tblIdx & 0xff].r[i]; + ((u16*)g_env_light)[0x856 + i] = fogAdjTableEntry; + // TODO: update this cast once g_env_light is broken up. + } } -#pragma pop /* 80056A64-80056A70 0513A4 000C+00 0/0 1/1 0/0 .text dKyd_maple_col_getp__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKyd_maple_col_getp() { - nofralloc -#include "asm/d/kankyo/d_kankyo_data/dKyd_maple_col_getp__Fv.s" +void* dKyd_maple_col_getp() { + return l_maple_col; } -#pragma pop /* 80056A70-80056A7C 0513B0 000C+00 0/0 4/4 0/0 .text dKyd_darkworld_tbl_getp__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKyd_darkworld_tbl_getp() { - nofralloc -#include "asm/d/kankyo/d_kankyo_data/dKyd_darkworld_tbl_getp__Fv.s" +dKyd_darkworldTblEntry* dKyd_darkworld_tbl_getp() { + return l_darkworld_tbl; } -#pragma pop /* 80056A7C-80056A88 0513BC 000C+00 0/0 1/1 0/0 .text dKyd_light_size_tbl_getp__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKyd_light_size_tbl_getp() { - nofralloc -#include "asm/d/kankyo/d_kankyo_data/dKyd_light_size_tbl_getp__Fv.s" +void* dKyd_light_size_tbl_getp() { + return l_light_size_tbl; } -#pragma pop /* 80056A88-80056A94 0513C8 000C+00 0/0 1/1 0/0 .text dKyd_light_tw_size_tbl_getp__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKyd_light_tw_size_tbl_getp() { - nofralloc -#include "asm/d/kankyo/d_kankyo_data/dKyd_light_tw_size_tbl_getp__Fv.s" +void* dKyd_light_tw_size_tbl_getp() { + return l_light_size_tbl_tw; } -#pragma pop /* 80056A94-80056AA8 0513D4 0014+00 0/0 1/1 0/0 .text dKyd_BloomInf_tbl_getp__Fi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dKyd_BloomInf_tbl_getp(int param_0) { - nofralloc -#include "asm/d/kankyo/d_kankyo_data/dKyd_BloomInf_tbl_getp__Fi.s" +void* dKyd_BloomInf_tbl_getp(int tblIdx) { + return &l_kydata_BloomInf_tbl[tblIdx * 0xC]; } -#pragma pop /* 8037A1C0-8037A1C0 006820 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */