.thumb
.align 2
initialize_func:
push {r4, r5, lr}
ldr r0, =0x809D6D5
ldr r1, =0x81119D5
bl call_via_r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #1
beq back
mov r0, pc
add r0, #0x43
mov r1, #8
ldr r2, =0x0807741D
bl call_via_r2
lsl r0, r0, #0x18
lsr r5, r0, #0x18
lsl r0, r5, #2
add r0, r0, r5
lsl r0, r0, #3
ldr r1, =0x03005090
add r3, r0, r1
mov r2, #0
ldr r1, =0x020370B8
ldrh r0, [r1]
strh r0, [r3, #8] @row_quantity
ldrh r0, [r1, #2]
strh r0, [r3, #0xA] @option_quantity
ldrh r0, [r1, #0x12]
strh r0, [r3, #0x12] @bottom_red_arrow_Y_coordinate
ldrh r0, [r1, #4]
strh r0, [r3, #0xC] @X_coordinate
ldrh r0, [r1, #6]
strh r0, [r3, #0xE] @Y_coordinate
mov r0, #8
strh r0, [r3, #0x10]
mov r0, #0
strh r0, [r3, #0x14]
strh r5, [r3, #0x26]
ldrh r0, [r1, #8]
strh r0, [r3, #0x16]
ldrh r0, [r1, #0xA]
strh r0, [r3, #0x18]
back:
pop {r4, r5, pc}
main_func:
push {r4-r7, lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, sp, #0x20
lsl r0, r0, #0x18
lsr r7, r0, #0x18
lsl r0, r7, #2
add r0, r0, r7
lsl r0, r0, #3
ldr r1, =0x03005090
add r5, r0, r1
ldr r1, =0x03000F28
mov r0, #1
strb r0, [r1]
ldr r0, =0x2039A18
ldr r1, =0x2039A0E
ldrh r1, [r1]
strh r1, [r0]
ldr r4, =0x2039A14
mov r1, #0xA
ldrsh r0, [r5, r1]
lsl r0, r0, #3
ldr r1, =0x8002BB1
bl call_via_r1
str r0, [r4]
ldr r2, =0x80CBA7D
bl call_via_r2
mov r6, #0
mov r4, #0
mov r2, #0xA
ldrsh r0, [r5, r2]
lsl r3, r7, #2
mov r10, r3
add r1, sp, #0x18
mov r9, r1
cmp r6, r0
bge .L_0
ldr r2, table
ldr r1, =0x020370B8
ldrh r1, [r1, #0xC]
lsl r1, r1, #0x2
add r2, r2, r1
ldr r2, [r2]
mov r8, r2
.L_1:
ldr r0, =0x2039A14
ldr r0, [r0]
lsl r3, r4, #3
add r3, r3, r0
lsl r2, r4, #2
add r2, r8
ldr r1, [r2]
str r1, [r3]
str r4, [r3, #4]
mov r0, #2
mov r2, #0
push {r4}
ldr r4, =0x8005ED5
bl call_via_r4
pop {r4}
cmp r0, r6
ble .L_2
add r6, r0, #0
.L_2:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
mov r3, #0xA
ldrsh r0, [r5, r3]
cmp r4, r0
blt .L_1
.L_0:
mov r0, r6
add r0, #9
cmp r0, #0
bge .L_3
add r0, #7
.L_3:
asr r0, r0, #3
add r2, r0, #1
strh r2, [r5, #0x10]
mov r1, #0xC
ldrsh r0, [r5, r1]
mov r3, #0x10
ldrsh r1, [r5, r3]
add r0, r0, r1
cmp r0, #0x1D
ble .L_4
mov r0, #0x1D
sub r0, r0, r2
strh r0, [r5, #0xC]
.L_4:
ldrb r2, [r5, #0xC]
ldrb r3, [r5, #0xE]
ldr r1, =0x020370B8
ldrh r0, [r1, #0xE]
str r0, [sp] @width
ldrh r0, [r1, #0x10]
str r0, [sp, #4] @height
mov r0, #0xF
str r0, [sp, #8] @palette?
mov r0, #0x38
str r0, [sp, #0xC]
add r0, sp, #0x10
mov r1, #0
ldr r4, =0x0810FE51
bl call_via_r4
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
str r0, [sp, #0x18]
str r1, [sp, #0x1C]
mov r0, r9
ldr r4, =0x08003CE5
bl call_via_r4
lsl r0, r0, #0x18
lsr r0, r0, #0x18
strh r0, [r5, #0x22]
mov r1, #0
ldr r4, =0x80F7751
bl call_via_r4
ldr r4, =0x3005360
ldrh r0, [r5, #0xA]
strh r0, [r4, #0xC]
ldrh r0, [r5, #8]
strh r0, [r5, #0xE]
ldrh r0, [r5, #0x22]
strb r0, [r4, #0x10]
mov r0, r7
ldr r1, =0x80CBCC1
bl call_via_r1
ldrh r1, [r5, #0x16]
ldrh r2, [r5, #0x18]
mov r0, r4
ldr r3, =0x8106FF9
bl call_via_r3
lsl r0, r0, #0x18
lsr r0, r0, #0x18
strh r0, [r5, #0x24]
ldrh r0, [r5, #0x22]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
ldr r1, =0x8003FA1
bl call_via_r1
ldrh r0, [r5, #0x22]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r1, #3
ldr r3, =0x8003F21
bl call_via_r3
ldr r1, =0x03005090
mov r2, r10
add r0, r2, r7
lsl r0, r0, #3
add r0, r0, r1
ldr r1, =0x80CBB29
str r1, [r0]
add sp, sp, #0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7, pc}
call_via_r1:
bx r1
call_via_r2:
bx r2
call_via_r3:
bx r3
call_via_r4:
bx r4
.align 2
table: .word 0x8[offset_of_your_table]