[SpawnYoshi]: make egg disappear
This commit is contained in:
parent
278b60ced5
commit
ac7f60fe7f
3 changed files with 61 additions and 18 deletions
|
@ -1,11 +1,22 @@
|
||||||
$ Spwan Yoshi (2022/08/29) [sup39]
|
$ Spwan Yoshi (2022/10/14) [sup39]
|
||||||
C21604C4 00000009
|
C21604C4 0000000A
|
||||||
807F03F0 3C808040
|
807F03F0 3C808040
|
||||||
A0840D50 54800436
|
A0840D50 54800436
|
||||||
2C000800 40820030
|
2C000800 40820034
|
||||||
54840EFD 41820028
|
54840EFD 4182002C
|
||||||
3C006300 5C0027BE
|
3C006300 5C0027BE
|
||||||
980300D0 80030008
|
980300D0 80030008
|
||||||
9003000C 3D808016
|
9003000C 807F03F0
|
||||||
618C0640 7D8803A6
|
3D808016 618C0640
|
||||||
4E800020 00000000
|
7D8803A6 4E800020
|
||||||
|
60000000 00000000
|
||||||
|
C21945AC 00000009
|
||||||
|
3C808040 A0840D50
|
||||||
|
54800436 2C000800
|
||||||
|
4082002C 54840EFD
|
||||||
|
41820024 806D98B8
|
||||||
|
806303F0 93E300F0
|
||||||
|
7FE3FB78 81830000
|
||||||
|
818C0104 7D8803A6
|
||||||
|
4E800021 A01F00FC
|
||||||
|
60000000 00000000
|
||||||
|
|
6
src/SpawnYoshi.ld
Normal file
6
src/SpawnYoshi.ld
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
$$ = 0;
|
||||||
|
|
||||||
|
$C2$.TMario.checkCollision.checkYoshi = 0x44 + TMario.checkCollision;
|
||||||
|
$RideYoshi = 0x1C0 + TMario.checkCollision;
|
||||||
|
|
||||||
|
$C2$.TEggYoshi.control.killEgg = 0x1c + TEggYoshi.control;
|
|
@ -1,21 +1,19 @@
|
||||||
.set rYoshi, 3 # required to be r3
|
.set rYoshi, 3
|
||||||
.set rInput, 4
|
.set rInput, 4
|
||||||
.set aInput, 0x80400D50
|
|
||||||
.set aRideYoshi, 0x80160640
|
|
||||||
|
|
||||||
_C2_801604c4:
|
.TMario.checkCollision.checkYoshi:
|
||||||
lwz rYoshi, 0x3f0(r31)
|
lwz rYoshi, 0x3f0(r31)
|
||||||
|
|
||||||
## check input
|
## check input
|
||||||
lis rInput, aInput@ha
|
lis rInput, JUTGamePad.mPadStatus@ha
|
||||||
lhz rInput, aInput@l(rInput)
|
lhz rInput, JUTGamePad.mPadStatus@l(rInput)
|
||||||
### Y
|
### Y
|
||||||
rlwinm r0, rInput, 0, 0xFFF0
|
rlwinm r0, rInput, 0, 0xFFF0
|
||||||
cmpwi r0, 0x0800
|
cmpwi r0, 0x0800
|
||||||
bne .L.end
|
bne .checkYoshi.inactived
|
||||||
### D-Pad
|
### D-Pad
|
||||||
rlwinm. rInput, rInput, 1, 30-3, 30
|
rlwinm. rInput, rInput, 1, 30-3, 30
|
||||||
beq .L.end
|
beq .checkYoshi.inactived
|
||||||
|
|
||||||
## color
|
## color
|
||||||
lis r0, 0x6300
|
lis r0, 0x6300
|
||||||
|
@ -26,9 +24,37 @@ _C2_801604c4:
|
||||||
stw r0, 0xC(rYoshi)
|
stw r0, 0xC(rYoshi)
|
||||||
|
|
||||||
## goto ride Yoshi
|
## goto ride Yoshi
|
||||||
lis r12, aRideYoshi@h
|
.checkYoshi.done:
|
||||||
ori r12, r12, aRideYoshi@l
|
lwz r3, 0x3f0(r31)
|
||||||
|
lis r12, $RideYoshi@h
|
||||||
|
ori r12, r12, $RideYoshi@l
|
||||||
mtlr r12
|
mtlr r12
|
||||||
blr
|
blr
|
||||||
|
|
||||||
.L.end:
|
.checkYoshi.inactived:
|
||||||
|
|
||||||
|
|
||||||
|
.TEggYoshi.control.killEgg:
|
||||||
|
## check input
|
||||||
|
lis rInput, JUTGamePad.mPadStatus@ha
|
||||||
|
lhz rInput, JUTGamePad.mPadStatus@l(rInput)
|
||||||
|
### Y
|
||||||
|
rlwinm r0, rInput, 0, 0xFFF0
|
||||||
|
cmpwi r0, 0x0800
|
||||||
|
bne .killEgg.done
|
||||||
|
### D-Pad
|
||||||
|
rlwinm. rInput, rInput, 1, 30-3, 30
|
||||||
|
beq .killEgg.done
|
||||||
|
## set pointer
|
||||||
|
lwz r3, gpMarioOriginal$r13(r13)
|
||||||
|
lwz r3, 0x3f0(r3)
|
||||||
|
stw r31, 0xf0(r3)
|
||||||
|
## egg.makeObjDead()
|
||||||
|
mr r3, r31
|
||||||
|
lwz r12, 0(r3) # egg.vtable
|
||||||
|
lwz r12, 0x104(r12) # &makeObjDead()
|
||||||
|
mtlr r12
|
||||||
|
blrl
|
||||||
|
|
||||||
|
.killEgg.done:
|
||||||
|
lhz r0, 0xfc(r31)
|
||||||
|
|
Loading…
Reference in a new issue