Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; 080AF8DC
- ; notes:
- ; r0 @ 0x4 points to 08707e74?
- push {r4-r7,lr}
- mov r5, r0
- ; get index list
- ldr r2, =0x08141bb8
- ; get room ID
- ldr r3, [r5, 0x8]
- ldr r1, =0x7f2
- add r0, r3, r1
- ldrh r1, [r0, 0x0]
- ; get start index of drops
- lsl r0, r1, 0x1
- add r0, r0, r2
- ldrh r6, [r0, 0x0]
- ; get end index of drops
- add r1, 0x1
- lsl r1, r1, 0x1
- add r1, r1, r2
- ldrh r7, [r1, 0x0]
- ; get X position
- ldr r2, =0x7f6
- add r4, r3, r2
- ; get direction modifier
- ldr r1, =0x08130c82
- add r2, 0x3
- add r0, r3, r2
- ldrb r0, [r0, 0x0]
- add r0, r0, r1
- ldrb r0, [r0, 0x0]
- ldrb r4, [r4, 0x0]
- ; save X position of examined coordinate
- add r0, r0, r4
- ldr r4 =0x898
- add r3, r3, r4
- strb r0, [r3, 0x0]
- ; get Y position
- ldr r1, [r5, 0x8]
- ldr r0, =0x7f7
- add r4, r1, r0
- ; get direction modifier
- ldr r1, =0x08130c86
- add r2, r1, r2
- ldrb r0, [r2, 0x0]
- add r0, r0, r3
- ldrb r0, [r0, 0x0]
- ldrb r4, [r4, 0x0]
- ; save Y position of examined coordinate
- add r0, r0, r4
- ldr r2 =0x899
- add r1, r1, r2
- strb r0, [r1, 0x0]
- ; start looping through drops
- cmp r6, r7
- bcc _0x080af932
- b _0x080afc50
- _0x080af932:
- ; load drop table
- ldr r4, =0x08142000
- lsl r0, r6, 0x3
- add r3, r0, r4
- ldr r2, [r5, 0x8]
- ldr r0, =0x898
- add r1, r2, r0
- ; check if X coordinates match
- ldrb r0, [r3, 0x0]
- ldrb r1, [r1, 0x0]
- cmp r0, r1
- beq _0x080af948
- b _0x080afc44
- _0x080af948:
- ldr r0, =0x899
- add r1, r2, r0
- ; check if Y coordinates match
- ldrb r0, [r3, 0x1]
- ldrb r1, [r1, 0x0]
- cmp r0, r1
- beq _0x080af956
- b _0x080afc44
- _0x080af956:
- ; drop was identified at this step
- ldr r3, =0x15a8
- add r0, r2, r3
- mov r7, 0x0
- ; save drop ID
- strh r6, [r0, 0x0]
- ldr r0, [r5, 0x0]
- ldr r2, [r0, 0x4]
- mov r1, 0xc7
- lsl r1, r1, 0x2
- add r2, r2, r1
- ldr r1, [r5, 0x8]
- add r1, r1, r3
- ldrh r1, [r1, 0x0]
- ldr r2, [r2, 0x0]
- bl 0x08101fb4
- lsl r0, r0, 0x10
- lsr r6, r0, 0x10
- ; check if drop was taken?
- cmp r6, 0x0
- beq _0x080af97e
- b _0x080afc50
- _0x080af97e:
- ldr r0, [r5, 0x8]
- ldr r2, =0x87b
- add r0, r0, r2
- mov r1, 0x1
- strb r1, [r0, 0x0]
- ldr r0, [r5, 0x8]
- mov r3, 0x8d
- lsl r3, r3, 0x4
- add r0, r0, r3
- strb r7, [r0, 0x0]
- ; get drop ID
- ldr r0, [r5, 0x8]
- ldr r1, =0x15a8
- add r0, r0, r1
- ldrh r0, [r0, 0x0]
- ; get pointer to drop data
- lsl r0, r0, 0x3
- add r0, r0, r4
- ; save X/Y position as halfword?
- ldrb r1, [r0, 0x1]
- lsl r1, r1, 0x6
- ldrb r4, [r0, 0x0]
- orr r4, r1
- ldr r0, [r5, 0x0]
- ldr r1, [r0, 0x4]
- add r1, 0xc4
- ldr r1, [r1, 0x0]
- bl 0x08101fb0
- ; ?
- add r0, r0, r4
- ldrb r0, [r0, 0x0]
- cmp r0, 0x2
- bne _0x080afa30
- mov r0, r5
- mov r1, 0x8e
- bl2 0x080b2d10
- ldr r0, [r5, 0x8]
- ldr r2, =0x896
- add r0, r0, r2
- strh r6, [r0, 0x0]
- ldr r0, [r5, 0x8]
- ldr r3, =0x84e
- add r0, r0, r3
- ldr r1, =0x101
- strh r1, [r0, 0x0]
- ldr r0, [r5, 0x8]
- mov r4, 0xae
- lsl r4, r4, 0x5
- add r0, r0, r4
- mov r1, 0x12
- strb r1, [r0, 0x0]
- ldr r0, [r5, 0x0]
- ldr r1, [r0, 0x4]
- mov r2, 0xb4
- lsl r2, r2, 0x2
- add r1, r1, r2
- ldr r1, [r1, 0x0]
- bl 0x08101fb0
- b _0x080afa3a
- .pool
- _0x080afa30:
- mov r0, r5
- mov r1, 0x68
- bl2 0x080b2d10
- ; get drop data pointer
- ldr r2, =0x08142000
- ldr r1, [r5, 0x8]
- ldr r3, =0x15a8
- add r0, r1, r3
- ldrh r0, [r0, 0x0]
- lsl r0, r0, 0x3
- add r0, r0, r2
- ldrb r0, [r0, 0x2]
- ; check drop bitflag
- lsr r4, r0, 0x5
- mov r3, r1
- mov r6, r2
- cmp r4, 0x7
- bls _0x080afa56
- b _0x080afc50
- _0x080afa56:
- lsl r0, r4, 0x2
- ldr r1, =_0x080afa70
- add r0, r0, r1
- ldr r0, [r0, 0x0]
- mov pc, r0
- .pool
- _0x080afa70:
- .word _0x080afa90 ; 0x00 ; gold
- .word _0x080afac4 ; 0x20 ; magic
- .word _0x080afaec ; 0x40 ; item
- .word _0x080afb28 ; 0x60 ; trapped chest
- .word _0x080afb28 ; 0x80 ; trapped chest
- .word _0x080afb28 ; 0xa0 ; trapped chest
- .word _0x080afb28 ; 0xc0 ; trapped chest
- .word _0x080afb28 ; 0xe0 ; trapped chest
- ; gold drop
- _0x080afa90:
- ldr r4, =0x15a8
- add r0, r3, r4
- ldrh r0, [r0, 0x0]
- lsl r0, r0, 0x3
- add r0, r0, r6
- ldrb r1, [r0, 0x2]
- ldrb r2, [r0, 0x4]
- ; gold value table
- ; 5 meaningful values: 1, 50, 100, 1000, 10000
- ldr r0, =0x0813c912
- lsl r1, r1, 0x1
- add r1, r1, r0
- ldrh r0, [r1, 0x0]
- mov r1, r0
- mul r1, r2
- ldr r0, [r5, 0x4]
- str r1, [r0, 0x40]
- mov r0, r5
- bl1 0x080b0338
- b _0x080afc50
- .pool
- ; magic drops
- _0x080afac4:
- ldr r1, =0x15a8
- add r0, r3, r1
- ldrh r0, [r0, 0x0]
- lsl r0, r0, 0x3
- add r0, r0, r6
- ldrb r1, [r0, 0x4]
- ldr r2, =0x015ac
- add r0, r3, r2
- strh r1, [r0, 0x0]
- mov r0, r5
- bl1 0x080b038c
- b _0x080afc50
- .pool
- ; item drops
- _0x080afaec:
- ldr r0, [r5, 0x0]
- ldr r2, [r0, 0x4]
- mov r4, 0xcc
- lsl r4, r4, 0x2
- add r2, r2, r4
- ldr r4, =0x15a8
- add r1, r3, r4
- ldrh r1, [r1, 0x0]
- lsl r1, r1, 0x3
- add r1, r1, r6
- ldrh r1, [r1, 0x4]
- ldr r2, [r2, 0x0]
- bl 0x08101fb4
- ldr r1, [r5, 0x8]
- ldr r2, =0x15aa
- add r1, r1, r2
- strh r0, [r1, 0x0]
- mov r0, r5
- bl1 0x080afe9c
- b _0x080afc50
- .pool
- ; items/traps?
- _0x080afb28:
- ldr r0, [r5, 0x8]
- ldr r3, =0x8cc
- add r0, r0, r3
- mov r1, 0x5c
- strh r1, [r0, 0x0]
- ldr r0, [r5, 0x0]
- ldr r1, [r0, 0x4]
- mov r2, 0xc3
- lsl r2, r2, 0x2
- add r1, r1, r2
- ldr r1, [r1, 0x0]
- bl 0x08101fb0
- ; determine if drop is magic/item
- ; actually checking & 0x40
- mov r0, 0x2
- and r4, r0
- cmp r4, 0x0
- beq _0x080afb80
- ldr r0, [r5, 0x8]
- ldr r3, =0x15aa
- add r0, r0, r3
- mov r1, 0x88
- lsl r1, r1, 0x1
- strh r1, [r0, 0x0]
- ldr r1, [r5, 0x8]
- ldr r2, =0x08142000
- ldr r4, =0x15a8
- add r0, r1, r4
- ldrh r0, [r0, 0x0]
- lsl r0, r0, 0x3
- add r0, r0, r2
- ldrh r0, [r0, 0x4]
- add r3, 0x2
- add r1, r1, r3
- strh r0, [r1, 0x0]
- b _0x080afba0
- .pool
- _0x080afb80:
- ldr r1, [r5, 0x8]
- ldr r2, =0x08142000
- ldr r4, =0x15a8
- add r0, r1, r4
- ldrh r0, [r0, 0x0]
- lsl r0, r0, 0x3
- add r0, r0, r2
- ldrh r0, [r0, 0x4]
- ldr r3, =0x15aa
- add r1, r1, r3
- strh r0, [r1, 0x0]
- ldr r0, [r5, 0x8]
- add r4, 0x4
- add r0, r0, r4
- mov r1, 0xff
- strh r1, [r0, 0x0]
- _0x080afba0:
- mov r6, r2
- ldr r0, [r5, 0x8]
- ldr r1, =0x15b4
- add r0, r0, r1
- mov r1, 0x0
- strh r1, [r0, 0x0]
- ldr r0, [r5, 0x8]
- ldr r2, =0x15a8
- add r0, r0, r2
- ldrh r0, [r0, 0x0]
- lsl r0, r0, 0x3
- add r0, r0, r6
- ldrb r1, [r0, 0x2]
- mov r0, 0x3f
- and r0, r1
- mov r1, 0x40
- orr r0, r1
- ; executes battle?
- ; 0x08110828
- lsl r4, r0, 0x1
- ldr r0, [r5, 0x0]
- ldr r1, [r0, 0x4]
- mov r3, 0xb7
- lsl r3, r3, 0x2
- add r1, r1, r3
- ldr r1, [r1, 0x0]
- bl 0x08101bf0
- lsl r0, r0, 0x18
- lsr r0, r0, 0x18
- cmp r0, 0xbf
- bls _0x080afbe0
- add r0, r4, 0x1
- mov r4, r0
- _0x080afbe0:
- ldr r2, [r5, 0x4]
- ldr r1, =0x0813a374
- lsl r0, r4, 0x1
- add r0, r0, r1
- ldrh r0, [r0, 0x0]
- strh r0, [r2, 0x24]
- ldr r1, [r5, 0x4]
- ldr r0, [r5, 0x8]
- ldr r4, =0x1028
- add r0, r0, r4
- ldrb r0, [r0, 0x0]
- add r1, 0x26
- strb r0, [r1, 0x0]
- ldr r0, [r5, 0x8]
- ldr r1, =0x878
- add r0, r0, r1
- mov r1, 0x1
- strb r1, [r0, 0x0]
- ldr r0, [r5, 0x4]
- ldr r2, =0x41a1
- add r0, r0, r2
- strb r1, [r0, 0x0]
- bl0 0x08091018
- ldr r1, [r5, 0x4]
- ldrb r0, [r0, 0x0]
- strb r0, [r1, 0x1]
- ldr r1, [r5, 0x4]
- mov r0, 0x11
- strb r0, [r1, 0x0]
- b _0x080afc50
- .pool
- _0x080afc50:
- pop {r4-r7}
- pop {r0}
- bx r0
Advertisement
Add Comment
Please, Sign In to add comment