Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion code/src/nsmbwup_bowsers_castle_door.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,6 @@
// category. Note that both the code being patched and the patch itself
// rely on the fact that these three profile IDs are sequential.

kmWrite32(0x8013f41c, 0x28000002); // cmplwi r0, 2
kmWriteDefAsm(0x8013f41c) { cmplwi r0, 2 }

#endif // !NSMBWUP_C00700_OFF
37 changes: 20 additions & 17 deletions code/src/nsmbwup_direct_pipes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,25 +93,28 @@ class dCdFile_c {
// the same assembly instructions, shuffled into the correct order.

// First line (initializing the next-path-node index)
/* 0x800508f8 */ // lhz r0, 0x10(r30) // r0 = destEntrance->flags;
kmWrite32(0x800508fc, 0x540007ff); // clrlwi. r0, r0, 0x1f // r0 &= 0xff;
kmWrite32(0x80050900, 0x41820014); // beq NOT_DIRECT_PIPE_END // if (r0 & DIRECT_PIPE_END) {
kmWrite32(0x80050904, 0xa0e30004); // lhz r7, 4(r3) // this->nextPathNodeIndex = path->numNodes - 2;
kmWrite32(0x80050908, 0x3807fffe); // subi r0, r7, 0x2 //
kmWrite32(0x8005090c, 0xb01f042c); // sth r0, 0x42c(r31) //
kmWrite32(0x80050910, 0x4800000c); // b AFTER_DIRECT_PIPE_END_CHECK // }
// NOT_DIRECT_PIPE_END: // else {
kmWrite32(0x80050914, 0x38000001); // li r0, 1 // this->nextPathNodeIndex = 1;
kmWrite32(0x80050918, 0xb01f042c); // sth r0, 0x42c(r31) //
// AFTER_DIRECT_PIPE_END_CHECK: // }
/* 800508f8 */ // lhz r0, 0x10(r30) // r0 = destEntrance->flags;
kmWriteDefAsm(0x800508fc, 0x80050930) {
nofralloc
/* 800508fc */ clrlwi. r0, r0, 0x1f // r0 &= 0xff;
/* 80050900 */ beq NOT_DIRECT_PIPE_END // if (r0 & DIRECT_PIPE_END) {
/* 80050904 */ lhz r7, 4(r3) // this->nextPathNodeIndex = path->numNodes - 2;
/* 80050908 */ subi r0, r7, 0x2 //
/* 8005090c */ sth r0, 0x42c(r31) //
/* 80050910 */ b AFTER_DIRECT_PIPE_END_CHECK // }
NOT_DIRECT_PIPE_END: // else {
/* 80050914 */ li r0, 1 // this->nextPathNodeIndex = 1;
/* 80050918 */ sth r0, 0x42c(r31) //
AFTER_DIRECT_PIPE_END_CHECK: // }

// Second line (calculating the first-node pointer)
kmWrite32(0x8005091c, 0xa0a30002); // lhz r5, 2(r3) // r5 = path->startNodeIndex;
kmWrite32(0x80050920, 0xa89f042c); // lha r4, 0x42c(r31) // r4 = this->nextPathNodeIndex;
kmWrite32(0x80050924, 0x80c6003c); // lwz r6, 0x3c(r6) // r6 = area->pathNodesBlock;
kmWrite32(0x80050928, 0x7c052214); // add r0, r5, r4 // r0 = path->startNodeIndex + this->nextPathNodeIndex;
kmWrite32(0x8005092c, 0x54002036); // slwi r0, r0, 4 // (left-shift to prepare for indexing)
kmWrite32(0x80050930, 0x7ca60214); // add r5, r6, r0 // r5 = area->pathNodesBlock[r0];
/* 8005091c */ lhz r5, 2(r3) // r5 = path->startNodeIndex;
/* 80050920 */ lha r4, 0x42c(r31) // r4 = this->nextPathNodeIndex;
/* 80050924 */ lwz r6, 0x3c(r6) // r6 = area->pathNodesBlock;
/* 80050928 */ add r0, r5, r4 // r0 = path->startNodeIndex + this->nextPathNodeIndex;
/* 8005092c */ slwi r0, r0, 4 // (left-shift to prepare for indexing)
/* 80050930 */ add r5, r6, r0 // r5 = area->pathNodesBlock[r0];
}

#endif // !NSMBWUP_C01100_OFF

Expand Down
12 changes: 6 additions & 6 deletions code/src/nsmbwup_event_controllers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,14 @@

#ifndef NSMBWUP_C01401_OFF
// Zone Enter:
kmWrite32(0x807eb210, 0x39200001); // li r9, 1
kmWrite32(0x807eb248, 0x39200001); // li r9, 1
kmWriteDefAsm(0x807eb210) { li r9, 1 }
kmWriteDefAsm(0x807eb248) { li r9, 1 }
#endif // !NSMBWUP_C01401_OFF

#ifndef NSMBWUP_C01402_OFF
// Chainer:
kmWrite32(0x807ebaa0, 0x39200001); // li r9, 1
kmWrite32(0x807ebac8, 0x39200001); // li r9, 1
kmWrite32(0x807ebb28, 0x39200001); // li r9, 1
kmWrite32(0x807ebb50, 0x39200001); // li r9, 1
kmWriteDefAsm(0x807ebaa0) { li r9, 1 }
kmWriteDefAsm(0x807ebac8) { li r9, 1 }
kmWriteDefAsm(0x807ebb28) { li r9, 1 }
kmWriteDefAsm(0x807ebb50) { li r9, 1 }
#endif // !NSMBWUP_C01402_OFF
2 changes: 1 addition & 1 deletion code/src/nsmbwup_red_ring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,6 @@
// More information on this type of bug can be found in
// nsmbwup_timed_events_canceling_p_switch_music.h.

kmWrite32(0x80a93034, 0x39200001); // li r9, 1
kmWriteDefAsm(0x80a93034) { li r9, 1 }

#endif // !NSMBWUP_C01403_OFF
4 changes: 2 additions & 2 deletions code/src/nsmbwup_rotation_controlled_coin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
// the only one where the blocks and coins end up upside-down.)
// The stages should be modified (under this same bug ID) to compensate.

kmWrite32(0x809e55f4, 0x3860c000); // li r3, -0x4000
kmWrite32(0x809e560c, 0x3860c000); // li r3, -0x4000
kmWriteDefAsm(0x809e55f4) { li r3, -0x4000 }
kmWriteDefAsm(0x809e560c) { li r3, -0x4000 }

#endif // !NSMBWUP_C00002_OFF
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
// More information on this type of bug can be found in
// nsmbwup_rotation_controlled_actors_starting_rotation.h.

kmWrite32(0x80a7b558, 0x3860c000); // li r3, -0x4000
kmWrite32(0x80a7b570, 0x3860c000); // li r3, -0x4000
kmWriteDefAsm(0x80a7b558) { li r3, -0x4000 }
kmWriteDefAsm(0x80a7b570) { li r3, -0x4000 }

#endif // !NSMBWUP_C00001_OFF
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
// of the stage.
// The stages should be modified (under this same bug ID) to compensate.

kmWrite32(0x809c15c4, 0x3860c000); // li r3, -0x4000
kmWrite32(0x809c15dc, 0x3860c000); // li r3, -0x4000
kmWriteDefAsm(0x809c15c4) { li r3, -0x4000 }
kmWriteDefAsm(0x809c15dc) { li r3, -0x4000 }

#endif // !NSMBWUP_C00003_OFF
2 changes: 1 addition & 1 deletion code/src/nsmbwup_star_coin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,6 @@
// More information on this type of bug can be found in
// nsmbwup_timed_events_canceling_p_switch_music.h.

kmWrite32(0x80aaa488, 0x39200001); // li r9, 1
kmWriteDefAsm(0x80aaa488) { li r9, 1 }

#endif // !NSMBWUP_C01400_OFF
2 changes: 1 addition & 1 deletion code/src/nsmbwup_switch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,6 @@
// exist in that game, it's probably unlikely (but admittedly not
// impossible) that it still does here.

kmWrite32(0x80a19a7c, 0x60000000); // nop
kmWriteNop(0x80a19a7c);

#endif // !NSMBWUP_C00200_OFF
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,6 @@
// More information on this type of bug can be found in
// nsmbwup_rotation_controlled_actors_starting_rotation.h.

kmWrite32(0x80a5d980, 0x38a0c000); // li r5, -0x4000
kmWriteDefAsm(0x80a5d980) { li r5, -0x4000 }

#endif // !NSMBWUP_C00000_OFF
4 changes: 1 addition & 3 deletions code/src/nsmbwup_water_current_controller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,6 @@
// unchanged and replace 80131404 with fmr f0, f5 instead of with nop.

kmWrite8(0x80131401, 0xa3); // "lfs f0, OFFSET(r3)" -> "lfs f5, OFFSET(r3)"
kmWrite32(0x80131404, 0x60000000); // nop
kmWrite32(0x80131408, 0x60000000); // nop
kmWrite32(0x8013140c, 0x60000000); // nop
kmWriteNops(0x80131404, 0x8013140c);

#endif // !NSMBWUP_C01500_OFF