mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-26 03:12:18 -05:00
Fix: Missing TextIDs for MQ PAL and change lava size (#3449)
* Fix text offset for MQ pal and add text ID asserts * correct lava texture size
This commit is contained in:
parent
3ab16b70c2
commit
717074ff86
@ -1,6 +1,6 @@
|
|||||||
<Root>
|
<Root>
|
||||||
<File Name="ovl_Boss_Dodongo" BaseAddress="0x808C1190" RangeStart="0x6238" RangeEnd="0x9238">
|
<File Name="ovl_Boss_Dodongo" BaseAddress="0x808C1190" RangeStart="0x6238" RangeEnd="0x9238">
|
||||||
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="64" Height="64" Offset="0x6238"/>
|
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="32" Height="64" Offset="0x6238"/>
|
||||||
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x8238"/>
|
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x8238"/>
|
||||||
</File>
|
</File>
|
||||||
</Root>
|
</Root>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<Root>
|
<Root>
|
||||||
<File Name="ovl_Boss_Dodongo" BaseAddress="0x808B7370" RangeStart="0x61E8" RangeEnd="0x9238">
|
<File Name="ovl_Boss_Dodongo" BaseAddress="0x808B7370" RangeStart="0x61E8" RangeEnd="0x91E8">
|
||||||
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="64" Height="64" Offset="0x61E8"/>
|
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="32" Height="64" Offset="0x61E8"/>
|
||||||
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x81E8"/>
|
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x81E8"/>
|
||||||
</File>
|
</File>
|
||||||
</Root>
|
</Root>
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
<Root>
|
<Root>
|
||||||
<File Name="nes_message_data_static">
|
<File Name="nes_message_data_static">
|
||||||
<Text Name="nes_message_data_static" CodeOffset="0xF6910"/>
|
<Text Name="nes_message_data_static" CodeOffset="0xF68F0"/>
|
||||||
</File>
|
</File>
|
||||||
<File Name="ger_message_data_static">
|
<File Name="ger_message_data_static">
|
||||||
<Text Name="ger_message_data_static" CodeOffset="0xF6910" LangOffset="0xFAB38"/>
|
<Text Name="ger_message_data_static" CodeOffset="0xF68F0" LangOffset="0xFAB18"/>
|
||||||
</File>
|
</File>
|
||||||
<File Name="fra_message_data_static">
|
<File Name="fra_message_data_static">
|
||||||
<Text Name="fra_message_data_static" CodeOffset="0xF6910" LangOffset="0xFCC48"/>
|
<Text Name="fra_message_data_static" CodeOffset="0xF68F0" LangOffset="0xFCC28"/>
|
||||||
</File>
|
</File>
|
||||||
<File Name="staff_message_data_static">
|
<File Name="staff_message_data_static">
|
||||||
<Text Name="staff_message_data_static" CodeOffset="0xFED58"/>
|
<Text Name="staff_message_data_static" CodeOffset="0xFED38"/>
|
||||||
</File>
|
</File>
|
||||||
</Root>
|
</Root>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<Root>
|
<Root>
|
||||||
<File Name="ovl_Boss_Dodongo" BaseAddress="0x808C1210" RangeStart="0x6238" RangeEnd="0x9238">
|
<File Name="ovl_Boss_Dodongo" BaseAddress="0x808C1210" RangeStart="0x6238" RangeEnd="0x9238">
|
||||||
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="64" Height="64" Offset="0x6238"/>
|
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="32" Height="64" Offset="0x6238"/>
|
||||||
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x8238"/>
|
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x8238"/>
|
||||||
</File>
|
</File>
|
||||||
</Root>
|
</Root>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<Root>
|
<Root>
|
||||||
<File Name="ovl_Boss_Dodongo" BaseAddress="0x808C1190" RangeStart="0x6238" RangeEnd="0x9238">
|
<File Name="ovl_Boss_Dodongo" BaseAddress="0x808C1190" RangeStart="0x61E8" RangeEnd="0x91E8">
|
||||||
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="64" Height="64" Offset="0x6238"/>
|
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="32" Height="64" Offset="0x61E8"/>
|
||||||
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x8238"/>
|
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x81E8"/>
|
||||||
</File>
|
</File>
|
||||||
</Root>
|
</Root>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<Root>
|
<Root>
|
||||||
<File Name="ovl_Boss_Dodongo" BaseAddress="0x8089E470" RangeStart="0x61C8" RangeEnd="0x91C8">
|
<File Name="ovl_Boss_Dodongo" BaseAddress="0x8089E470" RangeStart="0x61C8" RangeEnd="0x91C8">
|
||||||
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="64" Height="64" Offset="0x61C8"/>
|
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="32" Height="64" Offset="0x61C8"/>
|
||||||
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x81C8"/>
|
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x81C8"/>
|
||||||
</File>
|
</File>
|
||||||
</Root>
|
</Root>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<Root>
|
<Root>
|
||||||
<File Name="ovl_Boss_Dodongo" BaseAddress="0x808C1190" RangeStart="0x61C8" RangeEnd="0x91C8">
|
<File Name="ovl_Boss_Dodongo" BaseAddress="0x808C1190" RangeStart="0x61C8" RangeEnd="0x91C8">
|
||||||
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="64" Height="64" Offset="0x61C8"/>
|
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="32" Height="64" Offset="0x61C8"/>
|
||||||
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x81C8"/>
|
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x81C8"/>
|
||||||
</File>
|
</File>
|
||||||
</Root>
|
</Root>
|
||||||
|
@ -72,6 +72,9 @@ MessageTableEntry* OTRMessage_LoadTable(const char* filePath, bool isNES) {
|
|||||||
_message_0xFFFC_nes = (char*)file->messages[i].msg.c_str();
|
_message_0xFFFC_nes = (char*)file->messages[i].msg.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Assert that the first message starts at the first text ID
|
||||||
|
assert(table[0].textId == 0x0001);
|
||||||
|
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,6 +107,9 @@ extern "C" void OTRMessage_Init()
|
|||||||
sStaffMessageEntryTablePtr[i].segment = file2->messages[i].msg.c_str();
|
sStaffMessageEntryTablePtr[i].segment = file2->messages[i].msg.c_str();
|
||||||
sStaffMessageEntryTablePtr[i].msgSize = file2->messages[i].msg.size();
|
sStaffMessageEntryTablePtr[i].msgSize = file2->messages[i].msg.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Assert staff credits start at the first credits ID
|
||||||
|
assert(sStaffMessageEntryTablePtr[0].textId == 0x0500);
|
||||||
}
|
}
|
||||||
|
|
||||||
CustomMessageManager::Instance->AddCustomMessageTable(customMessageTableID);
|
CustomMessageManager::Instance->AddCustomMessageTable(customMessageTableID);
|
||||||
|
@ -16,6 +16,10 @@ void gfx_texture_cache_clear();
|
|||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
||||||
|
|
||||||
|
#define LAVA_TEX_WIDTH 32
|
||||||
|
#define LAVA_TEX_HEIGHT 64
|
||||||
|
#define LAVA_TEX_SIZE 2048
|
||||||
|
|
||||||
void BossDodongo_Init(Actor* thisx, PlayState* play);
|
void BossDodongo_Init(Actor* thisx, PlayState* play);
|
||||||
void BossDodongo_Destroy(Actor* thisx, PlayState* play);
|
void BossDodongo_Destroy(Actor* thisx, PlayState* play);
|
||||||
void BossDodongo_Update(Actor* thisx, PlayState* play);
|
void BossDodongo_Update(Actor* thisx, PlayState* play);
|
||||||
@ -69,8 +73,8 @@ static u8 sMaskTexLava[32 * 64] = { { 0 } };
|
|||||||
|
|
||||||
static u32* sLavaFloorModifiedTexRaw = NULL;
|
static u32* sLavaFloorModifiedTexRaw = NULL;
|
||||||
static u32* sLavaWavyTexRaw = NULL;
|
static u32* sLavaWavyTexRaw = NULL;
|
||||||
static u16 sLavaFloorModifiedTex[4096];
|
static u16 sLavaFloorModifiedTex[LAVA_TEX_SIZE];
|
||||||
static u16 sLavaWavyTex[2048];
|
static u16 sLavaWavyTex[LAVA_TEX_SIZE];
|
||||||
|
|
||||||
static u8 hasRegisteredBlendedHook = 0;
|
static u8 hasRegisteredBlendedHook = 0;
|
||||||
|
|
||||||
@ -104,7 +108,7 @@ void BossDodongo_RegisterBlendedLavaTextureUpdate() {
|
|||||||
|
|
||||||
// When the texture is HD (raw) we need to work with u32 values for RGBA32
|
// When the texture is HD (raw) we need to work with u32 values for RGBA32
|
||||||
// Otherwise the original asset is u16 for RGBA16
|
// Otherwise the original asset is u16 for RGBA16
|
||||||
if (ResourceMgr_TexIsRaw(sLavaFloorLavaTex)) {
|
if (ResourceMgr_TexIsRaw(gDodongosCavernBossLavaFloorTex)) {
|
||||||
u32* lavaTex = ResourceGetDataByName(sLavaFloorLavaTex);
|
u32* lavaTex = ResourceGetDataByName(sLavaFloorLavaTex);
|
||||||
size_t lavaSize = ResourceGetSizeByName(sLavaFloorLavaTex);
|
size_t lavaSize = ResourceGetSizeByName(sLavaFloorLavaTex);
|
||||||
size_t floorSize = ResourceGetSizeByName(gDodongosCavernBossLavaFloorTex);
|
size_t floorSize = ResourceGetSizeByName(gDodongosCavernBossLavaFloorTex);
|
||||||
@ -126,14 +130,13 @@ void BossDodongo_RegisterBlendedLavaTextureUpdate() {
|
|||||||
// Register the blended effect for the raw texture
|
// Register the blended effect for the raw texture
|
||||||
Gfx_RegisterBlendedTexture(gDodongosCavernBossLavaFloorTex, sMaskTexLava, sLavaWavyTexRaw);
|
Gfx_RegisterBlendedTexture(gDodongosCavernBossLavaFloorTex, sMaskTexLava, sLavaWavyTexRaw);
|
||||||
} else {
|
} else {
|
||||||
u16* lavaTex = ResourceGetDataByName(sLavaFloorLavaTex);
|
|
||||||
memcpy(sLavaFloorModifiedTex, lavaTex, sizeof(sLavaFloorModifiedTex));
|
|
||||||
|
|
||||||
// When KD is dead, just immediately copy the rock texture
|
// When KD is dead, just immediately copy the rock texture
|
||||||
if (Flags_GetClear(gPlayState, gPlayState->roomCtx.curRoom.num)) {
|
if (Flags_GetClear(gPlayState, gPlayState->roomCtx.curRoom.num)) {
|
||||||
u16* rockTex = ResourceGetDataByName(sLavaFloorRockTex);
|
u16* rockTex = ResourceGetDataByName(sLavaFloorRockTex);
|
||||||
size_t rockSize = ResourceGetSizeByName(sLavaFloorRockTex);
|
memcpy(sLavaFloorModifiedTex, rockTex, sizeof(sLavaFloorModifiedTex));
|
||||||
memcpy(sLavaFloorModifiedTex, rockTex, rockSize);
|
} else {
|
||||||
|
u16* lavaTex = ResourceGetDataByName(sLavaFloorLavaTex);
|
||||||
|
memcpy(sLavaFloorModifiedTex, lavaTex, sizeof(sLavaFloorModifiedTex));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register the blended effect for the non-raw texture
|
// Register the blended effect for the non-raw texture
|
||||||
@ -182,7 +185,7 @@ void func_808C1554_Raw(void* arg0, void* floorTex, s32 arg2, f32 arg3) {
|
|||||||
// Applying sqrt(multiplier) to arg3 is to control how many pixels move left/right for the selected row
|
// Applying sqrt(multiplier) to arg3 is to control how many pixels move left/right for the selected row
|
||||||
// Applying to arg2 and M_PI help to space out the wave effect
|
// Applying to arg2 and M_PI help to space out the wave effect
|
||||||
// It's not perfect but close enough
|
// It's not perfect but close enough
|
||||||
u16 multiplier = width / 32;
|
u16 multiplier = width / LAVA_TEX_WIDTH;
|
||||||
|
|
||||||
for (i = 0; i < size; i += width) {
|
for (i = 0; i < size; i += width) {
|
||||||
temp = sinf((((i / width) + (s32)(((arg2 * multiplier) * 50.0f) / 100.0f)) & (width - 1)) * (M_PI / (16 * multiplier))) * (arg3 * sqrt(multiplier));
|
temp = sinf((((i / width) + (s32)(((arg2 * multiplier) * 50.0f) / 100.0f)) & (width - 1)) * (M_PI / (16 * multiplier))) * (arg3 * sqrt(multiplier));
|
||||||
@ -1165,14 +1168,14 @@ void BossDodongo_Update(Actor* thisx, PlayState* play2) {
|
|||||||
s16 i2;
|
s16 i2;
|
||||||
|
|
||||||
// Get the scale based on the original texture size
|
// Get the scale based on the original texture size
|
||||||
u16 widthScale = width / 32;
|
u16 widthScale = width / LAVA_TEX_WIDTH;
|
||||||
u16 heightScale = height / 64;
|
u16 heightScale = height / LAVA_TEX_HEIGHT;
|
||||||
u32 size = width * height;
|
u32 size = width * height;
|
||||||
|
|
||||||
for (i2 = 0; i2 < 20; i2++) {
|
for (i2 = 0; i2 < 20; i2++) {
|
||||||
s16 new_var = this->unk_1C2 & 0x7FF;
|
s16 new_var = this->unk_1C2 & (LAVA_TEX_SIZE - 1);
|
||||||
// Compute the index to a scaled position (scaling pseudo x,y as a 1D value)
|
// Compute the index to a scaled position (scaling pseudo x,y as a 1D value)
|
||||||
s32 indexStart = ((new_var % 32) * widthScale) + ((new_var / 32) * width * heightScale);
|
s32 indexStart = ((new_var % LAVA_TEX_WIDTH) * widthScale) + ((new_var / LAVA_TEX_WIDTH) * width * heightScale);
|
||||||
|
|
||||||
// From the starting index, apply extra pixels right/down based on the scale
|
// From the starting index, apply extra pixels right/down based on the scale
|
||||||
for (size_t j = 0; j < heightScale; j++) {
|
for (size_t j = 0; j < heightScale; j++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user