I was attempting to find the 'drop item code' but I havn't found it. I disassembled the function which calls the soul function (which apprently also checks for level ups) but found nothing. It may be below the soul stuff, not sure yet.
;the on hit function.
0807B116: ;not real label
add r2,2Dh
mov r0,8h
strb r0,[r2]
ldrh r0,[r6,34h]
lsl r1,r1,10h
asr r1,r1,10h
sub r0,r0,r1
strh r0,[r6,34h]
mov r0,r6
mov r2,0h
bl 8042BA0h
mov r1,34h
ldsh r0[r6,r1]
cmp r0,0h ;find out if the monster is dead. If not, skip
bgt + ;807B1C4h
mov r0,r6
bl SoulFunction ;80683D0h ;This is our soul function.
mov r0,70h
bl 80D7924h
mov r0,r6
mov r1,3h
mov r2,0h
mov r3,0h
bl 803F2Dch
mov r1,r6
add r1,2Ch
mov r3,r6
add r3,5Ah
mov r0,0Fh
ldrb r1,[r1]
and r1,r0
lsl r1,r1,3h
ldrb r2,[r3]
mov r0,79h
neg r0,r0
and r0,r2
orr r0,r1
strb r0,[r3]
mov r0,28h
strb r0,[r6,-Dh]
mov r0,1h
strb r0,[r6,0Bh]
bl PRNG ;8000a90h
ldr r4,=3FFFFh
and r0,r4
ldr r1,[r6,40h]
add r7,r7,r1
ldr r1,=0FFe60000h
add r0,r0,r1
ldr r1,[r6,44h]
add r2,r0,r1
mov r0,r6
mov r1,r7
bl 807B26Ch
bl PRNG ;8000a90h
mov r1,r8
and r0,r1
add r7,r0,r5
bl PRNG ;8000a90h
and r0,r4
ldr r1,[r6,40h]
add r7,r7,r1
ldr r1,=0FFE60000h
add r0,r0,r1
ldr r1,[r6,44h]
add r2,r0,r1
mov r0,r6
mov r1,r7
bl 807B26Ch
+ pop r3 ;where the function goes if a monster didn't die.
mov r8,r3
pop r4-r7
pop r0
bx r0 ;return
SoulFunction:
080683D0h: ;Soul function entry point
push r4-r7,r14
mov r7,r10
mov r6,r9
mov r5,r8
push r5,r7
add sp,-24h
mov r7,r0
add r0,36h
ldrb r0,[r0]
mov r8,r0
lsl r0,r0,3h
...skip...
0806845Ah: ;not real label.
cmp r0,0h
beq + ;8068464h
ldr r0,=133h
mul r0,r4
lsr r4,r0,8h
+ cmp r4,0h
beq 806848Ah
mov r1,r9
ldr r0,[r1,30h]
add r0,r0,r4
str r0,[r1,30h]
ldr r1,=5F5E0FFh
cmp r0,r1
bls 806847Ah ;false if you went up a level
...skip...
080684CEh: ;not real label.
;see other posts for the code that goes here.