36 lines
670 B
ArmAsm
36 lines
670 B
ArmAsm
.set state.LedgeGrab, 0x3800034B
|
|
.set state.PickUp, 0x383
|
|
.set state.Put, 0x80000387
|
|
.set state.Throw, 0x80000588
|
|
|
|
.macro liDX reg val
|
|
.if -0x8000 <= \val && \val < 0x8000 || 0xffff8000 <= \val
|
|
li \reg, \val@l
|
|
.else
|
|
lis \reg, \val@h
|
|
.if \val&0xffff != 0
|
|
ori \reg, \reg, \val@l
|
|
.endif
|
|
.endif
|
|
.endm
|
|
|
|
.onTake:
|
|
lwz r0, 0x384(r31)
|
|
b freezeQFT
|
|
.onDrop:
|
|
li r0, 0
|
|
b freezeQFT
|
|
|
|
.onChangeStatus:
|
|
## orig
|
|
li r0, 0
|
|
## checkstatus
|
|
## TODO is checking lower 16 bit enough?
|
|
#liDX r12, state.LedgeGrab
|
|
#cmplw r29, r12
|
|
rlwinm r3, r29, 0, 16, 31
|
|
cmplwi r3, state.LedgeGrab@l
|
|
beq- freezeQFT
|
|
cmplwi r3, state.Put@l
|
|
beq- freezeQFT
|
|
blr
|