diff options
Diffstat (limited to '')
-rw-r--r-- | src/fileselect.S | 120 | ||||
-rw-r--r-- | src/koopatlas/hud.cpp | 67 | ||||
-rw-r--r-- | src/koopatlas/pathmanager.cpp | 7 | ||||
-rw-r--r-- | src/newer.cpp | 72 |
4 files changed, 200 insertions, 66 deletions
diff --git a/src/fileselect.S b/src/fileselect.S new file mode 100644 index 0000000..b243e7f --- /dev/null +++ b/src/fileselect.S @@ -0,0 +1,120 @@ +.set sp,1 +.set rtoc,2 + +.text +.extern enableNonLoopAnim__Q23m2d13EmbedLayout_cFib +.global FSShowCD, FSHideCD +FSShowCD: + addi r3, r3, 0x74 + li r4, 0x2A + b enableNonLoopAnim__Q23m2d13EmbedLayout_cFib + +FSHideCD: + addi r3, r3, 0x74 + li r4, 0x2B + b enableNonLoopAnim__Q23m2d13EmbedLayout_cFib + +.global FSShowCD_OpenWait +FSShowCD_OpenWait: + addi r3, r31, 0x74 + li r4, 0x2A + bl enableNonLoopAnim__Q23m2d13EmbedLayout_cFib + lwz r0, 0x14(r1) + lwz r31, 0xC(r1) + mtlr r0 + addi r1, r1, 0x10 + blr + +#.global FSHideCD_IWOSAEW +#FSHideCD_IWOSAEW: +# addi r3, r31, 0x74 +# li r4, 0x2B +# bl enableNonLoopAnim__Q23m2d13EmbedLayout_cFib +# lwz r0, 0x14(r1) +# lwz r31, 0xC(r1) +# mtlr r0 +# addi r1, r1, 0x10 +# blr + +.global DFNiceTitle +DFNiceTitle: + mr r3, r4 + lis r4, DFTitle@h + ori r4, r4, DFTitle@l + lwz r6, 0xE44(r30) + addi r6, r6, '1' + sth r6, 0xA(r4) + li r5, 0 + li r6, 6 + lwz r12, 0(r3) + lwz r12, 0x80(r12) + mtctr r12 + bctr + +.align 4 + +.data +.global FSDummyBrlanName, FSDummyGroup, FSDummyPane +FSDummyBrlanName: .string "fileSelectBase_18_DummyAnim.brlan" +FSDummyGroup: .string "DummyGroup" +FSDummyPane: .string "DummyPane" + +.global A00_window +A00_window: .string "A00_window" +.global ShowEraseCopy, HideEraseCopy +ShowEraseCopy: .string "fileSelectBase_18_ShowEraseCopy.brlan" +HideEraseCopy: .string "fileSelectBase_18_HideEraseCopy.brlan" +.global N_posFile1_00 +N_posFile1_00: .string "N_posFile1_00" +.global CDHolderGroup +CDHolderGroup: .string "CDHolderGroup" + +.align 4 +DFTitle: +.short 'F','i','l','e',' ','X' + +NameYI: .string "Yoshi's Island" +NameDesert: .string "Rubble Ruins" +NameSewer: .string "Soggy Sewers" +NameMountain: .string "Mushroom Peaks" +NameJapan: .string "Sakura Village" +NameFF: .string "FreezeFlame Valley" +NameVolcano: .string "FreezeFlame Volcano" +NameGhost: .string "Pumpkin Boneyard" +NameSkyM: .string "Sky Mountain" +NameSky: .string "Starry Skies" +NameKoopa: .string "Koopa Planet" +NameCore: .string "Koopa Core" +NameGoldwood: .string "Goldwood Forest" +NameCaverns: .string "Crystal Caves" +NameBomb: .string "Bombard Cliffs" +NameMiniMega: .string "Mini-Mega Island" +NameSkyCity: .string "Sky City" +NameBonus: .string "Bonus Land" + +# [05:59:00] <Tempus> W1 GW W2 MM W3 W4 W5 CC W6 BC W7 SC W8 KC W9 +.align 4 +# Struct definition: World, Level, IsSecret, Name +.long -1,-1,0,NameYI +.long 1,6,1,NameGoldwood +.long 1,38,0,NameDesert +.long 2,1,0,NameSewer +.long 2,15,0,NameDesert +.long 2,9,1,NameMiniMega +.long 2,38,0,NameMountain +.long 3,38,0,NameJapan +.long 4,38,0,NameFF +.long 5,6,0,NameVolcano +.long 5,8,0,NameFF +.long 5,10,0,NameFF +.long 5,9,1,NameCaverns +.long 5,38,0,NameGhost +.long 6,8,0,NameBomb +.long 6,38,0,NameSkyM +.long 7,3,0,NameSky +.long 7,4,1,NameSkyCity +.long 7,38,0,NameKoopa +.long 8,25,0,NameCore +.long 8,26,0,NameBonus +.long 0,0,0,0 + diff --git a/src/koopatlas/hud.cpp b/src/koopatlas/hud.cpp index 8f4b778..3989a1c 100644 --- a/src/koopatlas/hud.cpp +++ b/src/koopatlas/hud.cpp @@ -383,72 +383,7 @@ void dWMHud_c::setWorldName() { int world = node->levelNumber[0]; int level = node->levelNumber[1]; - switch (world) { - case 1: - setWorldText("Yoshi's\nIsland"); - break; - - case 2: - if (((level > 1) && (level < 5)) || (level == 15) || (level == 33) || (level == 34)) - setWorldText("Soggy\nSewers"); - else - setWorldText("Rubble\nRuins"); - break; - - case 3: - setWorldText("Mushroom\nPeaks"); - break; - - case 4: - setWorldText("Sakura\nVillage"); - break; - - case 5: - if ((level < 6) || (level == 15) || (level == 33) || (level == 34)) - setWorldText("FreezeFlame\nValley"); - else - setWorldText("FreezeFlame\nVolcano"); - break; - - case 6: - setWorldText("Pumpkin\nBoneyard"); - break; - - case 7: - if (level < 4) - setWorldText("Sky\nMountain"); - else - setWorldText("Starry\nSkies"); - break; - - case 8: - if ((level < 6) || (level == 15) || (level == 25) || (level == 33) || (level == 34)) - setWorldText("Koopa\nPlanet"); - else - setWorldText("Koopa\nCore"); - break; - - case 9: - setWorldText("Bonus\nLand"); - break; - - case 10: - if ((level < 6) || (level == 30) || (level == 41) ) - setWorldText("Goldwood\nForest"); - else if ((level < 11) || (level == 32)) - setWorldText("Mini-Mega\nIsland"); - else if ((level < 16) || (level == 33) || (level == 34) || (level == 31) ) - setWorldText("Crystal\nCaves"); - else if (level < 19) - setWorldText("Bombard\nCliffs"); - else - setWorldText("Sky\nCity"); - break; - - default: - setWorldText("Unknown\nWorld"); - break; - } + setWorldText(NewerWorldName(NewerWorldForLevelID(world, level))); } } diff --git a/src/koopatlas/pathmanager.cpp b/src/koopatlas/pathmanager.cpp index ffc4dfd..49ee728 100644 --- a/src/koopatlas/pathmanager.cpp +++ b/src/koopatlas/pathmanager.cpp @@ -560,6 +560,13 @@ void dWMPathManager_c::moveThroughPath() { SaveBlock *save = GetSaveFile()->GetBlock(-1); save->current_path_node = pathLayer->findNodeID(to); + if (to->type == dKPNode_s::LEVEL) { + NWRWorld nWorld = NewerWorldForLevelID(to->levelNumber[0], to->levelNumber[1]); + if (nWorld != UNKNOWN_WORLD) { + save->currentNewerWorld = (u8)nWorld; + } + } + dWMHud_c::instance->showPointBar(); SpammyReport("Point bar shown\n"); } else { diff --git a/src/newer.cpp b/src/newer.cpp new file mode 100644 index 0000000..314b50f --- /dev/null +++ b/src/newer.cpp @@ -0,0 +1,72 @@ +#include <newer.h> + +NWRWorld NewerWorldForLevelID(int w, int l) { + switch (w) { + case 1: return YOSHI_ISLAND; + case 2: + if (((l>1) && (l<5)) || (l==15) || (l==33) || (l==34)) + return SOGGY_SEWERS; + else + return RUBBLE_RUINS; + case 3: return MUSHROOM_PEAKS; + case 4: return SAKURA_VILLAGE; + case 5: + if (l<7 || l==15 || l==33 || l==34) + return FREEZEFLAME_GLACIER; + else + return FREEZEFLAME_VOLCANO; + case 6: return PUMPKIN_BONEYARD; + case 7: + if (l<4) + return SKY_MOUNTAIN; + else + return STARRY_SKIES; + case 8: + if (l<6 || l==15 || l==25 || l==33 || l==34) + return KOOPA_PLANET; + else + return KOOPA_CORE; + case 9: return BONUS_LAND; + case 10: + if (l<6 || l==30 || l==41) + return GOLDWOOD_FOREST; + else if (l<11 || l==32) + return MINIMEGA_ISLAND; + else if (l<16 || l==33 || l==34 || l==31) + return CRYSTAL_CAVES; + else if (l<19) + return BOMBARD_CLIFFS; + else + return SKY_CITY; + } + + return UNKNOWN_WORLD; +} + + +static const wchar_t *NewerWorldNames[] = { + L"Yoshi's Island", + L"Rubble Ruins", + L"Soggy Sewers", + L"Mushroom Peaks", + L"Sakura Village", + L"Freezeflame Glacier", + L"Freezeflame Volcano", + L"Pumpkin Boneyard", + L"Sky Mountain", + L"Starry Skies", + L"Koopa Planet", + L"Koopa Core", + L"Bonus Land", + L"Goldwood Forest", + L"Mini-Mega Island", + L"Crystal Caves", + L"Bombard Cliffs", + L"Sky City" +}; + +const wchar_t *NewerWorldName(NWRWorld world) { + if (world < 0 || world >= WORLD_COUNT) + return L"Unknown World"; + return NewerWorldNames[world]; +} |