fixed stage loader and added warps
This commit is contained in:
parent
104835a73b
commit
cd1e8da44a
3 changed files with 34 additions and 18 deletions
|
@ -1,5 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<updates>
|
||||
<update>
|
||||
<date>Feb 28, 2018</date>
|
||||
<change>
|
||||
<head>Fixed Stage Loader.</head>
|
||||
<paragraph>The previous version didn’t reset properly after the first use if the route ending was the title screen, and reloaded the last level upon exiting area in Corona.</paragraph>
|
||||
</change>
|
||||
<change>
|
||||
<head>Added new stages to the loader.</head>
|
||||
<paragraph>You can now select the Gooper Blooper fight from Ricco 1, the rollercoaster ride from Pinna 8, the King Boo fight from Sirena 5, the bottle from Noki 3 and the underwater area from Noki 8.</paragraph>
|
||||
</change>
|
||||
</update>
|
||||
<update>
|
||||
<date>Feb 16, 2018</date>
|
||||
<change>
|
||||
|
|
|
@ -361,13 +361,14 @@ function getFastCode() {
|
|||
let game = JSON.parse(atob(document.getElementById("route_levels").getAttribute("data-json")));
|
||||
const order = document.getElementById("route_order").value;
|
||||
const ending = document.getElementById("route_ending").value;
|
||||
const branchBase = 0x1C + 0x24 * (order !== 'list');
|
||||
const branchBase = 0x18 + 0x24 * (order !== 'list');
|
||||
const asm = [];
|
||||
asm.push("48" + ("00000" + (Math.ceil(levelCodes.length / 2) + 1 << 2 | 1).toString(16).toUpperCase()).slice(-6)); // bl to the code
|
||||
asm.push("48" + ("00000" + (Math.ceil(levelCodes.length / 2) + 1 << 2 | 1).toString(16).toUpperCase()).slice(-6)); // bl code
|
||||
for (let i = levelCodes.length - 1; i >= 0; i -= 2) {
|
||||
asm.push(levelCodes[i] + (levelCodes[i - 1] || "0000"));
|
||||
}
|
||||
|
||||
// code:
|
||||
//Timer compatibility
|
||||
asm.push("3C80817F"); // lis r4, 0x817F
|
||||
asm.push("38000000"); // li r0, 0
|
||||
|
@ -376,15 +377,8 @@ function getFastCode() {
|
|||
asm.push("98040101"); // stb r0, 0x0101(r4)
|
||||
|
||||
asm.push("887F0012"); // lbz r3, 0x12(r31)
|
||||
|
||||
asm.push("2C03000F"); // cmpwi r3, 15
|
||||
asm.push("40820010"); // bne- 0x10
|
||||
asm.push("3800" + ("000" + ((levelCodes.length - (order === 'random')) * 2).toString(16).toUpperCase()).slice(-4)); // li r0, length
|
||||
asm.push("90040000"); // stw r0, 0(r4)
|
||||
asm.push("4800" + ("000" + (branchBase + 0x3C).toString(16).toUpperCase()).slice(-4)); // b done
|
||||
|
||||
asm.push("2C030001"); // cmpwi r3, 1
|
||||
asm.push("4181" + ("000" + (branchBase + 0x34).toString(16).toUpperCase()).slice(-4)); // bgt- done
|
||||
asm.push("4181" + ("000" + (branchBase + 0x48).toString(16).toUpperCase()).slice(-4)); // bgt- done
|
||||
|
||||
asm.push("98040100"); // stb r0, 0x0100(r4)
|
||||
|
||||
|
@ -394,7 +388,12 @@ function getFastCode() {
|
|||
|
||||
asm.push("881F000E"); // lbz r0, 0x0E(r31)
|
||||
asm.push("2C00000F"); // cmpwi r0, 15
|
||||
asm.push("41820010"); // beq- 0x10
|
||||
asm.push("40820010"); // bne- 0x10
|
||||
asm.push("3860" + ("000" + ((levelCodes.length - (order === 'random')) * 2).toString(16).toUpperCase()).slice(-4)); // li r3, length
|
||||
asm.push("90640000"); // stw r3, 0(r4)
|
||||
asm.push("48000018"); // b 0x18
|
||||
asm.push("2C030000"); // cmpwi r3, 0
|
||||
asm.push("4180" + ("000" + (0x1C + 0x14 * (order !== "list")).toString(16).toUpperCase()).slice(-4)); // blt- loadEnding
|
||||
asm.push("880500CC"); // lbz r0, 0xCC(r5)
|
||||
asm.push("54000673"); // rlwinm. r0, r0, 0, 25, 25
|
||||
asm.push("4182" + ("000" + branchBase.toString(16).toUpperCase()).slice(-4)); // beq- loadIndex
|
||||
|
@ -403,11 +402,6 @@ function getFastCode() {
|
|||
asm.push("38630002"); // addi r3, r3, 2
|
||||
}
|
||||
|
||||
asm.push("2C030000"); // cmpwi r3, 0
|
||||
asm.push("4181000C"); // bgt- 0x0C
|
||||
asm.push("3860" + ending); // li r3, ending
|
||||
asm.push("4800" + ("000" + (branchBase - 0x10 + 4 * (order !== "random")).toString(16).toUpperCase()).slice(-4)); // b loadStage
|
||||
|
||||
if (order !== "list") {
|
||||
asm.push("7CEC42E6"); // mftbl r7
|
||||
asm.push("7C071B96"); // divwu r0, r7, r3
|
||||
|
@ -416,10 +410,16 @@ function getFastCode() {
|
|||
asm.push("54E7003C"); // rlwinm r7, r7, 0, 0, 30
|
||||
}
|
||||
|
||||
asm.push("3863FFFE"); // subi r3, r3, 2
|
||||
asm.push("3463FFFE"); // subic. r3, r3, 2
|
||||
if (order !== "random") {
|
||||
asm.push("90640000"); // stw r3, 0(r4)
|
||||
}
|
||||
|
||||
asm.push("4080000C"); // bge- 0xC
|
||||
|
||||
// loadEnding:
|
||||
asm.push("3860" + ending); // li r3, ending
|
||||
asm.push("4800" + ("000" + (0x8 + 0x10 * (order !== "list")).toString(16).toUpperCase()).slice(-4)); // b loadStage
|
||||
|
||||
if (order !== "list") {
|
||||
asm.push("7C061A2E"); // lhzx r0, r6, r3
|
||||
|
|
|
@ -216,13 +216,18 @@
|
|||
<option value="2A00">Pianta 5 secret</option>
|
||||
</optgroup>
|
||||
<optgroup label="Sublevels">
|
||||
<option value="3700">Windmill (Bianco 2)</option>
|
||||
<option value="3700">Petey Piranha fight (Bianco 2)</option>
|
||||
<option value="3B00">Gooper Blooper fight (Ricco 1)</option>
|
||||
<option value="1E00">Race course (Ricco 2)</option>
|
||||
<option value="2100">Sand bird (Gelato 4)</option>
|
||||
<option value="3A01">Mecha-Bowser fight (Pinna 1)</option>
|
||||
<option value="3A00">Rollercoaster (Pinna 8)</option>
|
||||
<option value="0E00">Casino Delfino (Sirena 4)</option>
|
||||
<option value="0E01">Casino Delfino (Sirena 5)</option>
|
||||
<option value="3800">King Boo fight (Sirena 5)</option>
|
||||
<option value="2C00">Bottle (Noki 3)</option>
|
||||
<option value="3900">Deep Sea of Mare (Noki 4)</option>
|
||||
<option value="1000">Deep Sea of Mare (Noki 8)</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
<button type="button" class="route_remove">×</button>
|
||||
|
|
Loading…
Reference in a new issue