diff --git a/NTSC-J 1.0/QFTFreezeEx2.txt b/NTSC-J 1.0/QFTFreezeEx2.txt new file mode 100644 index 0000000..3dc69dc --- /dev/null +++ b/NTSC-J 1.0/QFTFreezeEx2.txt @@ -0,0 +1,9 @@ +C21335B4 00000008 +3C000200 60000886 +7C1D0040 4182001C +281D0892 41820014 +281D0893 4182000C +281D0884 40A20014 +3D80817F 618C0348 +7D8803A6 4E800021 +809E007C 00000000 diff --git a/README.md b/README.md index 65ea7b8..a6e25fb 100644 --- a/README.md +++ b/README.md @@ -85,5 +85,10 @@ C Stick|State ↖|post-NB7 (pre-CM-unlock) ## QFT Freeze Extra +### Ex - Legde grab - Pick up/Throw/Put object +### Ex2 +- Wall kick +- Rope jump (including 大車輪) +- Bounce (e.g. on umbrella, Amenbo) diff --git a/src/QFTFreezeEx2.ld b/src/QFTFreezeEx2.ld new file mode 100644 index 0000000..9d82f6b --- /dev/null +++ b/src/QFTFreezeEx2.ld @@ -0,0 +1,2 @@ +$$ = 0; +$C2$.changePlayerStatus = 0x801335B4; diff --git a/src/QFTFreezeEx2.s b/src/QFTFreezeEx2.s new file mode 100644 index 0000000..79c3751 --- /dev/null +++ b/src/QFTFreezeEx2.s @@ -0,0 +1,22 @@ +.set setFreeze, 0x817F0348 + +# r29 = nextState +.changePlayerStatus: +## check if nextState in [0x2000886, 0x892, 0x893, 0x884] + lis r0, 0x2000886@h + ori r0, r0, 0x2000886@l + cmplw r29, r0 + beq- .changePlayerStatus.freeze + cmplwi r29, 0x892 + beq- .changePlayerStatus.freeze + cmplwi r29, 0x893 + beq- .changePlayerStatus.freeze + cmplwi r29, 0x884 + bne+ .changePlayerStatus.end +.changePlayerStatus.freeze: + lis r12, setFreeze@h + ori r12, r12, setFreeze@l + mtlr r12 + blrl +.changePlayerStatus.end: + lwz r4, 0x7c(r30)