diff --git a/NTSC-J 1.0/SpawnYoshi.txt b/NTSC-J 1.0/SpawnYoshi.txt index da3e6ca..58be33d 100644 --- a/NTSC-J 1.0/SpawnYoshi.txt +++ b/NTSC-J 1.0/SpawnYoshi.txt @@ -1,13 +1,14 @@ +$ 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 3CA08040 -A0A50D50 54A50EFD -4D820020 3C006300 +98091C84 3C006300 5C002FBE 980300D0 38000008 98030000 80030008 9003000C diff --git a/src/SpawnYoshi.s b/src/SpawnYoshi.s index d550c0d..372c192 100644 --- a/src/SpawnYoshi.s +++ b/src/SpawnYoshi.s @@ -1,30 +1,39 @@ .set rMario, 12 .set rFLUDD, 9 .set rYoshi, 3 +.set rInput, 5 -lwz rMario, -0x6748(r13) -mr. rMario, rMario -beqlr- +## make sure Mario is not NULL + lwz rMario, -0x6748(r13) + mr. rMario, rMario + beqlr- -lwz rYoshi, 0x3F0(rMario) -mr. rYoshi, rYoshi -beqlr- +## make sure Yoshi is not NULL + lwz rYoshi, 0x3F0(rMario) + mr. rYoshi, rYoshi + beqlr- -lwz rFLUDD, 0x3E4(rMario) -mr. rFLUDD, rFLUDD -beq- .L1 -li r0, 0 -stb r0, 0x1C84(rFLUDD) +## make sure any D-Pad key is pressed (not only Y) + lis rInput, 0x8040 + lhz rInput, 0x0D50(rInput) + 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: -lis r5, 0x8040 -lhz r5, 0x0D50(r5) -rlwinm. r5, r5, 1, 30-3, 30 -beqlr- -lis r0, 0x6300 -rlwnm r0, r0, r5, 0x3 -stb r0, 0xD0(rYoshi) -li r0, 8 -stb r0, 0(rYoshi) -lwz r0, 8(rYoshi) -stw r0, 0xC(rYoshi) +## 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)