diff --git a/NTSC-J 1.0/SpawnYoshi.txt b/NTSC-J 1.0/SpawnYoshi.txt index 58be33d..05f106f 100644 --- a/NTSC-J 1.0/SpawnYoshi.txt +++ b/NTSC-J 1.0/SpawnYoshi.txt @@ -1,16 +1,11 @@ $ Spwan Yoshi (2022/08/29) [sup39] -28400D50 000F0800 -C0000000 0000000C -818D98B8 7D8C6379 -4D820020 806C03F0 -7C631B79 4D820020 -3CA08040 A0A50D50 -54A50EFD 4D820020 -812C03E4 7D294B79 -4182000C 38000000 -98091C84 3C006300 -5C002FBE 980300D0 -38000008 98030000 -80030008 9003000C +C21604C4 00000009 +807F03F0 3C808040 +A0840D50 54800436 +2C000800 40820030 +54840EFD 41820028 +3C006300 5C0027BE +980300D0 80030008 +9003000C 3D808016 +618C0640 7D8803A6 4E800020 00000000 -E0000000 00000000 diff --git a/src/SpawnYoshi.s b/src/SpawnYoshi.s index 372c192..40c1b4b 100644 --- a/src/SpawnYoshi.s +++ b/src/SpawnYoshi.s @@ -1,39 +1,34 @@ -.set rMario, 12 -.set rFLUDD, 9 -.set rYoshi, 3 -.set rInput, 5 +.set rYoshi, 3 # required to be r3 +.set rInput, 4 +.set aInput, 0x80400D50 +.set aRideYoshi, 0x80160640 -## make sure Mario is not NULL - lwz rMario, -0x6748(r13) - mr. rMario, rMario - beqlr- +_C2_801604c4: + lwz rYoshi, 0x3f0(r31) -## make sure Yoshi is not NULL - lwz rYoshi, 0x3F0(rMario) - mr. rYoshi, rYoshi - beqlr- - -## make sure any D-Pad key is pressed (not only Y) - lis rInput, 0x8040 - lhz rInput, 0x0D50(rInput) +## check input + lis rInput, aInput@ha + lhz rInput, aInput@l(rInput) +### Y + rlwinm r0, rInput, 0, 0xFFF0 + cmpwi r0, 0x0800 + bne .L.end +### D-Pad rlwinm. rInput, rInput, 1, 30-3, 30 - beqlr- - -## set to spray nozzle - lwz rFLUDD, 0x3E4(rMario) - mr. rFLUDD, rFLUDD - beq- .L1 - li r0, 0 - stb r0, 0x1C84(rFLUDD) -.L1: + beq .L.end ## color lis r0, 0x6300 rlwnm r0, r0, rInput, 0x3 stb r0, 0xD0(rYoshi) -## ride state - li r0, 8 - stb r0, 0(rYoshi) ## juice lwz r0, 8(rYoshi) stw r0, 0xC(rYoshi) + +## goto ride Yoshi + lis r12, aRideYoshi@h + ori r12, r12, aRideYoshi@l + mtlr r12 + blr + +.L.end: