I checked some of your code and have a few questions - bear in mind that I'm pretty new to all this stuff. For the sake of an example, I'm using the give all items (with wipe) as reference.
First of all, the directives are all unknown to me. What assembler do you use?
What registers are commonly available for use? I see you pushed r1-r5 and r14 to the stack, but why did you pop the original value of r14 into r0?
Values starting with a hashtag are immediate data, correct? Values surrounded with brackets... Refer to on-board memory?
What is the function of strh, ldr and ldrb?
Last, is there documentation of FE-relevant offsets and freely usable areas of memory available?
It might be a while before I'm able to get something useful done, but I'm looking forward to learning more so please be patient with me