gists/gs/test.asm
2019-03-11 06:50:27 +01:00

77 lines
2.3 KiB
NASM

;Free Inventory Movement
;This will make it so that you can place the cursor on empty
;Cursor Movement:
;LEFT
.org 0x803D8B88
NOP
;RIGHT
.org 0x803D8C68
NOP
;FROM L
.org 0x803D8DD0
.skip 8 0 ;NOP the next 2 commands
;FROM R
.org 0x803D8EA8
.skip 8 0 ;NOP the next 2 commands
;UP
.org 0x803D8FAC
NOP
;DOWN
.org 0x803D9004
NOP
;Hide Item 0xFF name (on select)
.org 0x803E2168
lhu a1, 0x023C(v0) ;
lhu v1, 0x002A(sp) ;Already there
slti at, a1, 0x00FF ;
beql at, zero, 0x803E2338
;Hide Item 0xFF name (loop)
.org 0x803E1370
slti at, t7, 0x00FF ;Set at to 1 if you don't have item 0xFF or a blank slot selected
.org 0x803E1378
beql at, zero, 0x803E17E8 ;Branch if you have item 0xFF or a blank slot selected
;Set Cursor to Default on 0xFF
.org 0x803D9058
slti t5, a0, 0x00FF ;t5 = 1 if you have selected an item
sll t5, t5, 0x0002 ;t5 = t5<<0x2
NOP ;
;Make Item 0xFF unequippable (2.0)
.org 0x803D9140
addiu at, zero, 0x00FF ;at = 0xFF (Blank)
lw t6, 0x0048(sp) ;t6 = Item ID
beq at, t6, 0x803D92FC ;Branch past error sound if item is 0xFF (Blank)
addiu at, zero, 0x0009 ;at = 0x0009 (Usable by both)
beq v0, at, + ;Branch if usable by child and adult
lw t5, 0x0004(s4) ;t5 = Age
bne v0, t5, 0x803D92D0 ;Branch to error sound if wrong age
+:
NOP ;Remove command
;Hide text when on empty slot
.org 0x803E1B80
lhu v0, 0x023E(t0) ;v0 = Selected Item ID
slti v0, v0, 0x00FF ;v0 = 1 if Selected Item ID is less than 0xFF
beq v0, zero, 0x803E1D0C ;Branch if item ID is 0xFF or higher
;Optimized code below
lbu t6, 0x1409(t2)
lui t7, 0x8016
lw t9, 0xFA90(t7)
sll t8, t6, 0x1
addu v0, t9, t8
lw t9, 0x0154(t0)
lh v0, 0x0DF6(v0)
sh v0, 0x0120(t9)
lui a1, 0x803F ;This command need a offset relocation fix. 0x1470 must be added. 0x0000F7FC
addiu t3, a1, 0x9968