tmc/asm/sub_0807CA18.s

175 lines
3.1 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
.ifdef DEMO
thumb_func_start sub_0807CA18
sub_0807CA18:
push {r4, r5, r6, lr}
ldr r4, _0807CA38 @ =0x02002A40
ldrh r1, [r4, #0x00]
movs r0, #0x80
lsls r0, r0, #0x01
cmp r1, r0
beq _0807C9BA
movs r2, #0x00
strb r2, [r4, #0x00]
movs r3, #0x01
strb r3, [r4, #0x01]
strb r3, [r4, #0x08]
adds r1, r4, #0x0
adds r1, #0xAA
movs r0, #0x18
strb r0, [r1, #0x00]
adds r1, #0x01
strb r0, [r1, #0x00]
subs r1, #0x23
movs r0, #0x22
strb r0, [r1, #0x00]
adds r1, #0x01
movs r0, #0x15
strb r0, [r1, #0x00]
adds r0, r4, #0x0
adds r0, #0x8A
strb r2, [r0, #0x00]
adds r0, #0x01
strb r2, [r0, #0x00]
adds r0, #0x05
strb r3, [r0, #0x00]
adds r1, #0x03
movs r0, #0x90
strh r0, [r1, #0x00]
adds r1, #0x02
movs r0, #0x38
strh r0, [r1, #0x00]
_0807C9BA:
adds r5, r4, #0x0
adds r5, #0x80
ldrb r0, [r5, #0x00]
cmp r0, #0x00
bne _0807C9CE
ldr r0, _0807CA3C @ =0x0811DFF4
adds r1, r5, #0x0
movs r2, #0x05
bl MemCopy
_0807C9CE:
ldr r1, _0807CA40 @ =0x0811EF10
movs r6, #0x80
lsls r6, r6, #0x12
ldrb r0, [r6, #0x04]
lsls r0, r0, #0x02
adds r0, r0, r1
ldr r0, [r0, #0x00]
ldr r2, _0807CA44 @ =0x000004B4
adds r1, r4, #0x0
bl MemCopy
ldrb r0, [r6, #0x07]
adds r2, r0, #0x0
cmp r2, #0x00
bne _0807CA04
movs r0, #0x97
strb r0, [r5, #0x00]
adds r1, r4, #0x0
adds r1, #0x81
movs r0, #0x7F
strb r0, [r1, #0x00]
adds r1, #0x01
movs r0, #0xDD
strb r0, [r1, #0x00]
adds r0, r4, #0x0
adds r0, #0x83
strb r2, [r0, #0x00]
_0807CA04:
movs r0, #0xA0
bl ModHealth
ldr r0, _0807CA48 @ =0xFFFFD8F1
bl ModRupees
ldr r0, _0807CA4C @ =0x02000010
ldrb r1, [r0, #0x07]
lsls r0, r1, #0x01
adds r0, r0, r1
ldr r1, _0807CA50 @ =0x0811DFF9
adds r0, r0, r1
movs r1, #0x95
lsls r1, r1, #0x03
adds r2, r4, r1
ldrb r1, [r6, #0x04]
adds r0, r0, r1
ldrb r1, [r0, #0x00]
lsls r0, r1, #0x03
subs r0, r0, r1
lsls r0, r0, #0x05
adds r0, r0, r1
lsls r0, r0, #0x04
str r0, [r2, #0x00]
movs r0, #0x01
pop {r4, r5, r6, pc}
_0807CA38: .4byte 0x02002A40 @TODO ptr
_0807CA3C: .4byte 0x0811DFF4 @TODO ptr
_0807CA40: .4byte 0x0811EF10 @TODO ptr
_0807CA44: .4byte 0x000004B4
_0807CA48: .4byte 0xFFFFD8F1
_0807CA4C: .4byte 0x02000010 @TODO ptr
_0807CA50: .4byte 0x0811DFF9 @TODO ptr
.else
thumb_func_start sub_0807CA18
sub_0807CA18: @ 0x0807CA18
push {lr}
ldr r0, _0807CA7C @ =gSave
mov ip, r0
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #1
cmp r1, r0
beq _0807CA66
movs r2, #0
mov r0, ip
strb r2, [r0]
movs r3, #1
strb r3, [r0, #1]
strb r3, [r0, #8]
mov r1, ip
adds r1, #0xaa
movs r0, #0x18
strb r0, [r1]
adds r1, #1
strb r0, [r1]
subs r1, #0x23
movs r0, #0x22
strb r0, [r1]
adds r1, #1
movs r0, #0x15
strb r0, [r1]
mov r0, ip
adds r0, #0x8a
strb r2, [r0]
adds r0, #1
strb r2, [r0]
adds r0, #5
strb r3, [r0]
adds r1, #3
movs r0, #0x90
strh r0, [r1]
adds r1, #2
movs r0, #0x38
strh r0, [r1]
_0807CA66:
mov r1, ip
adds r1, #0x80
ldrb r0, [r1]
cmp r0, #0
bne _0807CA78
ldr r0, _0807CA80 @ =gUnk_0811E470
movs r2, #5
bl MemCopy
_0807CA78:
movs r0, #1
pop {pc}
.align 2, 0
_0807CA7C: .4byte gSave
_0807CA80: .4byte gUnk_0811E470
.endif