mirror of
https://github.com/notwa/mm
synced 2025-02-05 05:23:22 -08:00
improve spawning
add button hold delay and set actor variable to link's rotation
This commit is contained in:
parent
4dd384b62e
commit
faa95f6285
1 changed files with 36 additions and 8 deletions
|
@ -9,6 +9,7 @@
|
||||||
[actor_x]: 0x24
|
[actor_x]: 0x24
|
||||||
[actor_y]: 0x28
|
[actor_y]: 0x28
|
||||||
[actor_z]: 0x2C
|
[actor_z]: 0x2C
|
||||||
|
[actor_horiz_angle]: 0x32
|
||||||
|
|
||||||
[link_save]: 0x801EF670
|
[link_save]: 0x801EF670
|
||||||
[rupees_offset]: 0x3A
|
[rupees_offset]: 0x3A
|
||||||
|
@ -20,8 +21,11 @@
|
||||||
[button_D_left]: 0x0200
|
[button_D_left]: 0x0200
|
||||||
[button_D_down]: 0x0400
|
[button_D_down]: 0x0400
|
||||||
[button_D_up]: 0x0800
|
[button_D_up]: 0x0800
|
||||||
|
[button_any]: 0x0F20
|
||||||
|
|
||||||
push 4, ra
|
[hold_delay_amount]: 3
|
||||||
|
|
||||||
|
push 4, s1, ra
|
||||||
li t0, @link_save
|
li t0, @link_save
|
||||||
li t1, @global_context
|
li t1, @global_context
|
||||||
// give max rupee upgrade (set bit 13, clear bit 12 of lower halfword)
|
// give max rupee upgrade (set bit 13, clear bit 12 of lower halfword)
|
||||||
|
@ -32,6 +36,19 @@
|
||||||
//
|
//
|
||||||
lhu t2, @buttons_offset(t1)
|
lhu t2, @buttons_offset(t1)
|
||||||
lh t9, @rupees_offset(t0)
|
lh t9, @rupees_offset(t0)
|
||||||
|
lw s1, hold_delay
|
||||||
|
andi t4, t2, @button_any
|
||||||
|
bne t4, r0, no_reset
|
||||||
|
addi s1, s1, 1
|
||||||
|
li s1, 0
|
||||||
|
no_reset:
|
||||||
|
subi t4, s1, 1
|
||||||
|
beq t4, r0, first_time
|
||||||
|
nop
|
||||||
|
subi t4, s1, @hold_delay_amount
|
||||||
|
bltz t4, return
|
||||||
|
nop
|
||||||
|
first_time:
|
||||||
andi t3, t2, @button_D_up
|
andi t3, t2, @button_D_up
|
||||||
beq t3, r0, no_D_up
|
beq t3, r0, no_D_up
|
||||||
nop
|
nop
|
||||||
|
@ -70,7 +87,8 @@ no_max:
|
||||||
bal simple_spawn
|
bal simple_spawn
|
||||||
nop
|
nop
|
||||||
return:
|
return:
|
||||||
jpop 4, ra
|
sw s1, hold_delay
|
||||||
|
jpop 4, s1, ra
|
||||||
|
|
||||||
simple_spawn: // args: a0 (actor to spawn)
|
simple_spawn: // args: a0 (actor to spawn)
|
||||||
push 4, 9, ra
|
push 4, 9, ra
|
||||||
|
@ -84,16 +102,26 @@ simple_spawn: // args: a0 (actor to spawn)
|
||||||
mov a3, t1 // X position
|
mov a3, t1 // X position
|
||||||
sw t2, 0x10(sp) // Y position
|
sw t2, 0x10(sp) // Y position
|
||||||
sw t3, 0x14(sp) // Z position
|
sw t3, 0x14(sp) // Z position
|
||||||
sw r0, 0x18(sp) // rotation?
|
|
||||||
sw r0, 0x1C(sp) // rotation?
|
li t9, 0x0
|
||||||
sw r0, 0x20(sp) // rotation?
|
sw t9, 0x18(sp) // rotation?
|
||||||
sw r0, 0x24(sp) // object number?
|
li t9, 0x5080
|
||||||
|
sw t9, 0x1C(sp) // horizontal rotation
|
||||||
|
li t9, 0x0
|
||||||
|
sw t9, 0x20(sp) // rotation?
|
||||||
|
|
||||||
|
lh t7, @actor_horiz_angle(t0)
|
||||||
|
sw t7, 0x24(sp) // actor variable
|
||||||
|
|
||||||
li t9, 0x0000007F
|
li t9, 0x0000007F
|
||||||
sw t9, 0x28(sp) // unknown
|
sw t9, 0x28(sp) // unknown
|
||||||
li t9, 0x000003FF
|
li t9, 0x000003FF
|
||||||
sw t9, 0x2C(sp) // unknown
|
sw t9, 0x2C(sp) // unknown
|
||||||
sw r0, 0x30(sp) // unknown
|
li t9, 0x00000000
|
||||||
// and finally..
|
sw t9, 0x30(sp) // unknown
|
||||||
jal @actor_spawn
|
jal @actor_spawn
|
||||||
nop
|
nop
|
||||||
jpop 4, 9, ra
|
jpop 4, 9, ra
|
||||||
|
|
||||||
|
hold_delay:
|
||||||
|
.word 0
|
||||||
|
|
Loading…
Add table
Reference in a new issue