Code:
.long 0x23FF090, 0x12FFF11
.set Code_Length, Finish_ - Start_
@Tell the code handler how long code is
.long 0xE0000000, Code_Length
Start_:
@Convert to THUMB
@to produce shorter code...
add r2, pc, #0x1
bx r2
.thumb
adr r0, Code_Data
@load IOKeys
ldr r1, [r0]
add r0, r0, #4
ldrh r1, [r1]
mov r8, r1
ldrh r2, [r0, #(RTWE_Activator - Coordinates)]
tst r1, r2
beq BeginBranch
add r2, #1
tst r1, r2
beq BeginBranch
ldr r1, [r0,#(Copied_Text - Coordinates)]
ldr r1, [r1]
ldrh r3, [r0,#(Copied_TextOffset - Coordinates)]
add r1, r1, r3
ldrh r3, [r1]
ldrh r2, [r0,#(zt_Activator - Coordinates)]
cmp r3, r2
beq Getitem
ldrh r2, [r0,#(Viewer_Activator - Coordinates)]
cmp r3, r2
bne End
ldrb r3, [r1,#2]
mov r2, #0x0
CheckRight:
cmp r3, #0x9A
bne CheckLeft
add r2, #0x10
CheckLeft:
cmp r3, #0x98
bne CheckUp
add r2, #0x20
CheckUp:
cmp r3, #0x91
bne CheckDown
add r2, #0x40
CheckDown:
cmp r3, #0x93
bne AddTogether
add r2, #0x80
AddTogether:
mov r10, r1
mvn r1, r2
BeginBranch:
mov r12, lr
bl RTWE
mov r2, r10
mov r3, r8
ldrh r5, [r0, #(RTWE_Activator - Coordinates)]
tst r3, r5
beq Store_
add r5, #1
tst r3, r5
bne ShowValue
Load_:
ldrh r2, [r1,r4]
strh r2, [r0, #(Item_Storage - Coordinates)]
add r0, #(Slot_Data - Coordinates)
b StoreInPocket
Store_:
ldrh r2, [r0, #(Item_Storage - Coordinates)]
strh r2, [r1,r4]
bx r12
ShowValue:
mov r5, #0x8A
strb r5, [r2]
add r2, #0x2
add r1, r4
mov r3, #0x3
mov r4, #0xF
HexToASCII:
ldrb r5, [r1,#1]
sub r1, #1
mov r0, r5
and r5, r4
lsr r0, #0x4
cmp r0, #0x9
bgt Letters1
add r0, #0x3E
Letters1:
sub r0, #0x9
strb r0, [r2]
sub r3, #1
bmi exit
cmp r5, #0x9
bgt Letters2
add r5, #0x3E
Letters2:
sub r5, #0x9
strb r5, [r2, #1]
add r2, #0x2
sub r3, #1
bpl HexToASCII
bx r12
Getitem:
mov r2, #0
strh r2, [r1]
add r1, r1, #2
mov r4, #0
mov r2, #0xF
mov r5, #0xC
ASCIItoHEX:
ldrb r3, [r1]
add r1, r1, #0x1
cmp r3, #0x6
bgt SkipThis
add r3, r3, #0x29
SkipThis:
cmp r3, #0x35
blt SkipThisToo
sub r3, r3, #0x5
SkipThisToo:
cmp r3, #0x20
bgt Finish
sub r3, r3, #0x1
Finish:
and r3, r3, r2
lsl r3, r3, r5
add r4, r4, r3
sub r5, r5, #0x4
bpl ASCIItoHEX
strh r4, [r0,#(Item_Storage - Coordinates)]
ldrb r4, [r1]
strb r4, [r0,#(HouseLevel - Coordinates)]
End:
bx lr
RTWE:
ldr r5, [r0,#(Location - Coordinates)]
ldrb r5, [r5]
cmp r5, #5
bgt exit
ldr r4, [r0]
ldr r4, [r4]
mov r2, #0xA9
lsl r2, #3
sub r4, r2
ldr r3, [r4] @r3 now holds x coordinate
lsr r3, #0xD
ldr r2, [r4, #8] @r2 now holds y coordinate
lsr r2, #0xD
@---Dpad check---@
mov r4, #0x20
tst r1, r4
bne Right
sub r3, r3, #1
Right:
mov r4, #0x10
tst r1, r4
bne Up
add r3, r3, #0x1
Up:
mov r4, #0x40
tst r1, r4
bne Down
sub r2, r2, #0x1
Down:
mov r4, #0x80
tst r1, r4
bne None
add r2, r2, #0x1
None:
cmp r5, #0
beq OutdoorsCheck
cmp r3, #0
blt exit
cmp r3, #0xF
bgt exit
cmp r2, #0
blt exit
cmp r2, #0xF
bgt exit
b Continue
OutdoorsCheck:
cmp r3, #0x10
blt exit
cmp r3, #0x50
bge exit
cmp r2, #0x10
blt exit
cmp r2, #0x50
bge exit
Continue:
cmp r5, #0
bgt BeginDivision
sub r3, #0x10
sub r2, #0x10
BeginDivision:
mov r1, #0xF
mov r4, #0xF
Divide1:
and r1, r3, r1
lsr r3, #4
Divide2:
and r4, r2, r4
lsr r2, #4
lsl r1, #1
lsl r4, #5
lsl r3, #9
lsl r2, #0xB
add r4, r1
add r4, r2
add r4, r3
ldr r1, [r0,#(MapOutdoors - Coordinates)]
sub r5, #1
bmi Exit
mov r1, #0x45
lsl r1, #0x4
mul r5, r1
ldr r1, [r0,#(MapIndoors - Coordinates)]
add r1, r5
ldrb r2, [r0, #(HouseLevel - Coordinates)]
cmp r2, #0x91
bne Exit
mov r2, #0x20
lsl r2, #0x4
add r1, r2
Exit:
mov pc, lr
exit:
bx r12
.arm
Code_Data:
IOKeys:
.word 0x4000130
Coordinates:
.word 0x21C6DEC
MapOutdoors:
.word 0x21E3124
Copied_Text:
.word 0x21C5C88
Location:
.word 0x21EED6C
MapIndoors:
.word 0x21E5328
Copied_TextOffset:
.hword 0x79E0
Item_Storage:
.hword 0x0000
RTWE_Activator:
.hword 0x301
zt_Activator:
.hword 0x2E34
Viewer_Activator:
.hword 0x3235
HouseLevel:
.byte 0x00
.align 2
.thumb
StoreInPocket:
ldr r5, [r0]
ldr r1, [r0,#4]
ldrb r1, [r1]
cmp r1, #0
bne Online
ldr r5, [r0,#8]
ldr r1, [r0,#12]
ldrb r1, [r1]
Online:
mov r3, #0x22
lsl r3, #0x8
add r3, #0x8C
mul r3, r1
strh r2, [r5,r3]
bx r12
.arm
Slot_Data:
.long 0x21CFC26
.long 0x21CBD48
.long 0x21D88FE
.long 0x21D02EC
Finish_:
.align 3
.long 0x23FF090, 0xE3520003