mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-30 12:58:10 -05:00
sub_80089AC
This commit is contained in:
635
asm/text.s
635
asm/text.s
@@ -5,642 +5,7 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80087EC
|
||||
sub_80087EC:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
adds r6, r2, 0
|
||||
ldr r1, [sp, 0x18]
|
||||
ldr r0, _08008810
|
||||
str r3, [sp]
|
||||
str r1, [sp, 0x4]
|
||||
adds r1, r4, 0
|
||||
adds r2, r5, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_8008818
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08008810: .4byte gUnknown_2027370
|
||||
thumb_func_end sub_80087EC
|
||||
|
||||
thumb_func_start nullsub_176
|
||||
nullsub_176:
|
||||
bx lr
|
||||
thumb_func_end nullsub_176
|
||||
|
||||
thumb_func_start sub_8008818
|
||||
sub_8008818:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r3, 0
|
||||
ldr r7, [sp, 0x18]
|
||||
ldr r3, [sp, 0x1C]
|
||||
mov r12, r3
|
||||
lsls r3, r1, 3
|
||||
adds r3, r1
|
||||
lsls r3, 3
|
||||
adds r4, r0, r3
|
||||
cmp r2, 0
|
||||
bge _08008834
|
||||
adds r2, 0x7
|
||||
_08008834:
|
||||
asrs r2, 3
|
||||
mov r8, r2
|
||||
adds r3, r5, 0
|
||||
cmp r3, 0
|
||||
bge _08008840
|
||||
adds r3, 0x7
|
||||
_08008840:
|
||||
asrs r3, 3
|
||||
movs r2, 0
|
||||
cmp r2, r12
|
||||
bge _08008892
|
||||
_08008848:
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r4, r1]
|
||||
muls r0, r3
|
||||
add r0, r8
|
||||
lsls r0, 5
|
||||
ldr r1, [r4, 0x18]
|
||||
adds r1, r0
|
||||
movs r5, 0
|
||||
adds r3, 0x1
|
||||
adds r6, r2, 0
|
||||
adds r6, 0x8
|
||||
cmp r5, r7
|
||||
bge _0800888C
|
||||
movs r2, 0
|
||||
_08008864:
|
||||
ldr r0, [r4, 0x3C]
|
||||
cmp r0, r1
|
||||
bls _0800886C
|
||||
str r1, [r4, 0x3C]
|
||||
_0800886C:
|
||||
stm r1!, {r2}
|
||||
stm r1!, {r2}
|
||||
stm r1!, {r2}
|
||||
stm r1!, {r2}
|
||||
stm r1!, {r2}
|
||||
stm r1!, {r2}
|
||||
stm r1!, {r2}
|
||||
str r2, [r1]
|
||||
ldr r0, [r4, 0x40]
|
||||
cmp r0, r1
|
||||
bcs _08008884
|
||||
str r1, [r4, 0x40]
|
||||
_08008884:
|
||||
adds r1, 0x4
|
||||
adds r5, 0x8
|
||||
cmp r5, r7
|
||||
blt _08008864
|
||||
_0800888C:
|
||||
adds r2, r6, 0
|
||||
cmp r2, r12
|
||||
blt _08008848
|
||||
_08008892:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8008818
|
||||
|
||||
thumb_func_start xxx_call_update_bg_vram
|
||||
xxx_call_update_bg_vram:
|
||||
push {lr}
|
||||
movs r1, 0
|
||||
ldr r2, _080088C0
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0
|
||||
beq _080088AE
|
||||
strb r1, [r2]
|
||||
bl sub_80099C0
|
||||
_080088AE:
|
||||
ldr r0, _080088C4
|
||||
bl xxx_update_bg_vram
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
adds r0, r1, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080088C0: .4byte gUnknown_20274A5
|
||||
_080088C4: .4byte gUnknown_2027370
|
||||
thumb_func_end xxx_call_update_bg_vram
|
||||
|
||||
thumb_func_start xxx_update_bg_vram
|
||||
xxx_update_bg_vram:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
mov r8, r0
|
||||
movs r2, 0
|
||||
movs r1, 0
|
||||
movs r7, 0xD0
|
||||
lsls r7, 4
|
||||
_080088D8:
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
mov r3, r8
|
||||
adds r4, r3, r0
|
||||
movs r5, 0x4
|
||||
ldrsh r0, [r4, r5]
|
||||
adds r6, r1, 0x1
|
||||
cmp r0, 0
|
||||
beq _0800897A
|
||||
ldr r5, [r4, 0x38]
|
||||
cmp r5, 0
|
||||
beq _0800897A
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x45
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0800894C
|
||||
ldr r0, [r4, 0x28]
|
||||
ldr r1, [r4, 0x18]
|
||||
adds r2, r7, 0
|
||||
bl CpuCopy
|
||||
ldr r0, [r4, 0x18]
|
||||
adds r2, r0, r7
|
||||
ldr r0, [r4, 0x28]
|
||||
adds r1, r0, r7
|
||||
movs r3, 0
|
||||
b _08008938
|
||||
_08008912:
|
||||
ldm r2!, {r0}
|
||||
stm r1!, {r0}
|
||||
ldm r2!, {r0}
|
||||
stm r1!, {r0}
|
||||
ldm r2!, {r0}
|
||||
stm r1!, {r0}
|
||||
ldm r2!, {r0}
|
||||
stm r1!, {r0}
|
||||
ldm r2!, {r0}
|
||||
stm r1!, {r0}
|
||||
ldr r0, _08008944
|
||||
stm r1!, {r0}
|
||||
ldr r0, _08008948
|
||||
stm r1!, {r0}
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
stm r1!, {r0}
|
||||
adds r2, 0xC
|
||||
adds r3, 0x1
|
||||
_08008938:
|
||||
movs r5, 0x4
|
||||
ldrsh r0, [r4, r5]
|
||||
cmp r3, r0
|
||||
blt _08008912
|
||||
movs r0, 0
|
||||
b _0800896A
|
||||
.align 2, 0
|
||||
_08008944: .4byte 0xdddddddd
|
||||
_08008948: .4byte 0xeeeeeeee
|
||||
_0800894C:
|
||||
ldr r0, [r4, 0x30]
|
||||
ldr r1, [r4, 0x34]
|
||||
adds r2, r5, 0
|
||||
bl CpuCopy
|
||||
lsrs r1, r5, 2
|
||||
lsls r1, 2
|
||||
ldr r0, [r4, 0x34]
|
||||
adds r0, r1
|
||||
str r0, [r4, 0x34]
|
||||
ldr r0, [r4, 0x30]
|
||||
adds r0, r5
|
||||
str r0, [r4, 0x30]
|
||||
ldr r0, [r4, 0x38]
|
||||
subs r0, r5
|
||||
_0800896A:
|
||||
str r0, [r4, 0x38]
|
||||
ldr r1, [r4, 0x38]
|
||||
cmp r1, 0
|
||||
bne _08008978
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x44
|
||||
strb r1, [r0]
|
||||
_08008978:
|
||||
movs r2, 0x1
|
||||
_0800897A:
|
||||
adds r1, r6, 0
|
||||
cmp r1, 0x3
|
||||
ble _080088D8
|
||||
adds r0, r2, 0
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end xxx_update_bg_vram
|
||||
|
||||
thumb_func_start sub_800898C
|
||||
sub_800898C:
|
||||
push {lr}
|
||||
ldr r1, _080089A4
|
||||
ldr r2, _080089A8
|
||||
movs r3, 0xA0
|
||||
lsls r3, 1
|
||||
adds r0, r1, r3
|
||||
_08008998:
|
||||
strh r2, [r0]
|
||||
subs r0, 0x2
|
||||
cmp r0, r1
|
||||
bge _08008998
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080089A4: .4byte gUnknown_3000E94
|
||||
_080089A8: .4byte 0x0000f0f0
|
||||
thumb_func_end sub_800898C
|
||||
|
||||
thumb_func_start sub_80089AC
|
||||
sub_80089AC:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x4
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
ldrb r1, [r4]
|
||||
movs r0, 0x40
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080089C8
|
||||
b _08008C44
|
||||
_080089C8:
|
||||
ldr r6, _08008A3C
|
||||
ldr r7, [r4, 0x4]
|
||||
cmp r7, 0x1
|
||||
bne _08008A60
|
||||
movs r0, 0x8
|
||||
ldrsh r2, [r4, r0]
|
||||
movs r1, 0
|
||||
ldrsh r0, [r5, r1]
|
||||
adds r2, r0
|
||||
lsls r3, r2, 3
|
||||
mov r12, r3
|
||||
movs r7, 0xA
|
||||
ldrsh r1, [r4, r7]
|
||||
movs r3, 0x2
|
||||
ldrsh r0, [r5, r3]
|
||||
adds r1, r0
|
||||
lsls r5, r1, 3
|
||||
movs r7, 0xC
|
||||
ldrsh r0, [r4, r7]
|
||||
adds r2, r0
|
||||
lsls r7, r2, 3
|
||||
movs r2, 0xE
|
||||
ldrsh r0, [r4, r2]
|
||||
adds r1, r0
|
||||
lsls r2, r1, 3
|
||||
cmp r0, 0
|
||||
bne _08008A00
|
||||
b _08008C44
|
||||
_08008A00:
|
||||
cmp r5, 0
|
||||
bge _08008A06
|
||||
movs r5, 0
|
||||
_08008A06:
|
||||
cmp r2, 0
|
||||
bge _08008A0C
|
||||
movs r2, 0
|
||||
_08008A0C:
|
||||
cmp r5, 0xA0
|
||||
ble _08008A12
|
||||
movs r5, 0xA0
|
||||
_08008A12:
|
||||
cmp r2, 0xA0
|
||||
ble _08008A18
|
||||
movs r2, 0xA0
|
||||
_08008A18:
|
||||
cmp r5, r2
|
||||
blt _08008A1E
|
||||
b _08008C44
|
||||
_08008A1E:
|
||||
lsls r3, r5, 1
|
||||
adds r1, r6, r3
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0xF0
|
||||
bne _08008A40
|
||||
ldrb r0, [r1, 0x1]
|
||||
cmp r0, 0xF0
|
||||
bne _08008A40
|
||||
strb r7, [r1]
|
||||
adds r3, 0x1
|
||||
adds r0, r6, r3
|
||||
mov r1, r12
|
||||
strb r1, [r0]
|
||||
b _08008A58
|
||||
.align 2, 0
|
||||
_08008A3C: .4byte gUnknown_3000E94
|
||||
_08008A40:
|
||||
adds r1, r6, r3
|
||||
ldrb r0, [r1]
|
||||
cmp r0, r7
|
||||
bge _08008A4A
|
||||
strb r7, [r1]
|
||||
_08008A4A:
|
||||
adds r3, 0x1
|
||||
adds r3, r6, r3
|
||||
ldrb r0, [r3]
|
||||
cmp r0, r12
|
||||
ble _08008A58
|
||||
mov r0, r12
|
||||
strb r0, [r3]
|
||||
_08008A58:
|
||||
adds r5, 0x1
|
||||
cmp r5, r2
|
||||
blt _08008A1E
|
||||
b _08008C44
|
||||
_08008A60:
|
||||
cmp r7, 0x6
|
||||
beq _08008A66
|
||||
b _08008BA8
|
||||
_08008A66:
|
||||
movs r2, 0x8
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r3, 0
|
||||
ldrsh r0, [r5, r3]
|
||||
adds r1, r0
|
||||
lsls r3, r1, 3
|
||||
subs r7, r3, 0x5
|
||||
mov r9, r7
|
||||
movs r2, 0xA
|
||||
ldrsh r0, [r4, r2]
|
||||
movs r7, 0x2
|
||||
ldrsh r2, [r5, r7]
|
||||
adds r0, r2
|
||||
lsls r2, r0, 3
|
||||
subs r5, r2, 0x4
|
||||
movs r7, 0xC
|
||||
ldrsh r2, [r4, r7]
|
||||
adds r1, r2
|
||||
lsls r1, 3
|
||||
adds r1, 0x5
|
||||
str r1, [sp]
|
||||
movs r2, 0xE
|
||||
ldrsh r1, [r4, r2]
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, 0x5
|
||||
mov r8, r0
|
||||
adds r3, 0x3
|
||||
mov r12, r3
|
||||
ldr r2, [r4, 0x14]
|
||||
ldrb r1, [r2, 0x2]
|
||||
subs r0, r1, 0x1
|
||||
ldrb r3, [r2]
|
||||
adds r0, r3
|
||||
adds r0, 0x2
|
||||
lsls r0, 3
|
||||
add r0, r12
|
||||
subs r0, 0x4
|
||||
mov r10, r0
|
||||
ldrb r0, [r2, 0x1]
|
||||
adds r0, 0x1
|
||||
lsls r0, 3
|
||||
mov r7, r9
|
||||
adds r4, r7, r0
|
||||
adds r1, 0x2
|
||||
lsls r1, 3
|
||||
adds r1, r4, r1
|
||||
subs r7, r1, 0x4
|
||||
cmp r5, 0
|
||||
bge _08008ACC
|
||||
movs r5, 0
|
||||
_08008ACC:
|
||||
mov r0, r8
|
||||
cmp r0, 0
|
||||
bge _08008AD6
|
||||
movs r1, 0
|
||||
mov r8, r1
|
||||
_08008AD6:
|
||||
cmp r5, 0xA0
|
||||
ble _08008ADC
|
||||
movs r5, 0xA0
|
||||
_08008ADC:
|
||||
mov r2, r8
|
||||
cmp r2, 0xA0
|
||||
ble _08008AE6
|
||||
movs r3, 0xA0
|
||||
mov r8, r3
|
||||
_08008AE6:
|
||||
movs r3, 0x3
|
||||
_08008AE8:
|
||||
lsls r2, r5, 1
|
||||
adds r1, r6, r2
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0xF0
|
||||
bne _08008B02
|
||||
ldrb r0, [r1, 0x1]
|
||||
cmp r0, 0xF0
|
||||
bne _08008B02
|
||||
strb r7, [r1]
|
||||
adds r2, 0x1
|
||||
adds r0, r6, r2
|
||||
strb r4, [r0]
|
||||
b _08008B18
|
||||
_08008B02:
|
||||
adds r1, r6, r2
|
||||
ldrb r0, [r1]
|
||||
cmp r0, r7
|
||||
bge _08008B0C
|
||||
strb r7, [r1]
|
||||
_08008B0C:
|
||||
adds r2, 0x1
|
||||
adds r2, r6, r2
|
||||
ldrb r0, [r2]
|
||||
cmp r0, r4
|
||||
ble _08008B18
|
||||
strb r4, [r2]
|
||||
_08008B18:
|
||||
adds r5, 0x1
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bge _08008AE8
|
||||
movs r3, 0x7
|
||||
_08008B22:
|
||||
lsls r1, r5, 1
|
||||
adds r2, r6, r1
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0xF0
|
||||
bne _08008B40
|
||||
ldrb r0, [r2, 0x1]
|
||||
cmp r0, 0xF0
|
||||
bne _08008B40
|
||||
mov r7, r10
|
||||
strb r7, [r2]
|
||||
adds r1, 0x1
|
||||
adds r0, r6, r1
|
||||
mov r1, r12
|
||||
strb r1, [r0]
|
||||
b _08008B5A
|
||||
_08008B40:
|
||||
adds r2, r6, r1
|
||||
ldrb r0, [r2]
|
||||
cmp r0, r10
|
||||
bge _08008B4C
|
||||
mov r7, r10
|
||||
strb r7, [r2]
|
||||
_08008B4C:
|
||||
adds r1, 0x1
|
||||
adds r1, r6, r1
|
||||
ldrb r0, [r1]
|
||||
cmp r0, r12
|
||||
ble _08008B5A
|
||||
mov r0, r12
|
||||
strb r0, [r1]
|
||||
_08008B5A:
|
||||
adds r5, 0x1
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bge _08008B22
|
||||
cmp r5, r8
|
||||
bge _08008C44
|
||||
_08008B66:
|
||||
lsls r1, r5, 1
|
||||
adds r2, r6, r1
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0xF0
|
||||
bne _08008B86
|
||||
ldrb r0, [r2, 0x1]
|
||||
cmp r0, 0xF0
|
||||
bne _08008B86
|
||||
mov r3, sp
|
||||
ldrb r3, [r3]
|
||||
strb r3, [r2]
|
||||
adds r1, 0x1
|
||||
adds r0, r6, r1
|
||||
mov r7, r9
|
||||
strb r7, [r0]
|
||||
b _08008BA0
|
||||
_08008B86:
|
||||
adds r2, r6, r1
|
||||
ldrb r0, [r2]
|
||||
ldr r3, [sp]
|
||||
cmp r0, r3
|
||||
bge _08008B92
|
||||
strb r3, [r2]
|
||||
_08008B92:
|
||||
adds r1, 0x1
|
||||
adds r1, r6, r1
|
||||
ldrb r0, [r1]
|
||||
cmp r0, r9
|
||||
ble _08008BA0
|
||||
mov r0, r9
|
||||
strb r0, [r1]
|
||||
_08008BA0:
|
||||
adds r5, 0x1
|
||||
cmp r5, r8
|
||||
blt _08008B66
|
||||
b _08008C44
|
||||
_08008BA8:
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0
|
||||
ldrsh r1, [r5, r2]
|
||||
adds r0, r1
|
||||
lsls r1, r0, 3
|
||||
subs r1, 0x5
|
||||
mov r8, r1
|
||||
movs r3, 0xA
|
||||
ldrsh r2, [r4, r3]
|
||||
movs r3, 0x2
|
||||
ldrsh r1, [r5, r3]
|
||||
adds r2, r1
|
||||
lsls r5, r2, 3
|
||||
mov r9, r5
|
||||
mov r3, r9
|
||||
subs r3, 0x5
|
||||
movs r5, 0xC
|
||||
ldrsh r1, [r4, r5]
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, 0x5
|
||||
mov r12, r0
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r4, r1]
|
||||
adds r2, r0
|
||||
lsls r1, r2, 3
|
||||
adds r5, r1, 0x5
|
||||
cmp r0, 0
|
||||
beq _08008C44
|
||||
cmp r7, 0
|
||||
bne _08008BEC
|
||||
adds r3, 0x8
|
||||
subs r5, r1, 0x3
|
||||
_08008BEC:
|
||||
cmp r3, 0
|
||||
bge _08008BF2
|
||||
movs r3, 0
|
||||
_08008BF2:
|
||||
cmp r5, 0
|
||||
bge _08008BF8
|
||||
movs r5, 0
|
||||
_08008BF8:
|
||||
cmp r3, 0xA0
|
||||
ble _08008BFE
|
||||
movs r3, 0xA0
|
||||
_08008BFE:
|
||||
cmp r5, 0xA0
|
||||
ble _08008C40
|
||||
movs r5, 0xA0
|
||||
b _08008C40
|
||||
_08008C06:
|
||||
lsls r1, r3, 1
|
||||
adds r2, r6, r1
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0xF0
|
||||
bne _08008C24
|
||||
ldrb r0, [r2, 0x1]
|
||||
cmp r0, 0xF0
|
||||
bne _08008C24
|
||||
mov r7, r12
|
||||
strb r7, [r2]
|
||||
adds r1, 0x1
|
||||
adds r0, r6, r1
|
||||
mov r1, r8
|
||||
strb r1, [r0]
|
||||
b _08008C3E
|
||||
_08008C24:
|
||||
adds r2, r6, r1
|
||||
ldrb r0, [r2]
|
||||
cmp r0, r12
|
||||
bge _08008C30
|
||||
mov r7, r12
|
||||
strb r7, [r2]
|
||||
_08008C30:
|
||||
adds r1, 0x1
|
||||
adds r1, r6, r1
|
||||
ldrb r0, [r1]
|
||||
cmp r0, r8
|
||||
ble _08008C3E
|
||||
mov r0, r8
|
||||
strb r0, [r1]
|
||||
_08008C3E:
|
||||
adds r3, 0x1
|
||||
_08008C40:
|
||||
cmp r3, r5
|
||||
blt _08008C06
|
||||
_08008C44:
|
||||
add sp, 0x4
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80089AC
|
||||
|
||||
thumb_func_start CallPrepareTextbox_8008C54
|
||||
CallPrepareTextbox_8008C54:
|
||||
|
||||
273
src/text2.c
273
src/text2.c
@@ -2,6 +2,9 @@
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
#include "decompress.h"
|
||||
#include "code_8009804.h"
|
||||
#include "cpu.h"
|
||||
#include "structs/str_text.h"
|
||||
|
||||
// data.s
|
||||
extern const u32 gUnknown_80B853C[16];
|
||||
@@ -2937,3 +2940,273 @@ UNUSED void sub_80086C8(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8008818(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5);
|
||||
|
||||
void sub_80087EC(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4)
|
||||
{
|
||||
sub_8008818(gUnknown_2027370, a0, a1, a2, a3, a4);
|
||||
}
|
||||
|
||||
UNUSED void nullsub_176(void) {}
|
||||
|
||||
void sub_8008818(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5)
|
||||
{
|
||||
s32 i, j;
|
||||
UnkTextStruct1 *strPtr = &a0[a1];
|
||||
s32 a2Div = a2 / 8;
|
||||
s32 a3Div = a3 / 8;
|
||||
|
||||
for (i = 0; i < a5; i += 8) {
|
||||
u32 *ptr = &strPtr->unk18[((strPtr->unk4 * a3Div) + a2Div) * 8];
|
||||
for (j = 0; j < a4; j += 8) {
|
||||
if (strPtr->unk3C > ptr) {
|
||||
strPtr->unk3C = ptr;
|
||||
}
|
||||
*(ptr++) = 0;
|
||||
*(ptr++) = 0;
|
||||
*(ptr++) = 0;
|
||||
*(ptr++) = 0;
|
||||
*(ptr++) = 0;
|
||||
*(ptr++) = 0;
|
||||
*(ptr++) = 0;
|
||||
*ptr = 0;
|
||||
if (strPtr->unk40 < ptr) {
|
||||
strPtr->unk40 = ptr;
|
||||
}
|
||||
ptr++;
|
||||
}
|
||||
a3Div++;
|
||||
}
|
||||
}
|
||||
|
||||
extern u8 gUnknown_20274A5;
|
||||
bool8 xxx_update_bg_vram(UnkTextStruct1 *a0);
|
||||
|
||||
bool8 xxx_call_update_bg_vram(void)
|
||||
{
|
||||
bool8 ret = FALSE;
|
||||
if (gUnknown_20274A5 != 0) {
|
||||
gUnknown_20274A5 = 0;
|
||||
sub_80099C0();
|
||||
}
|
||||
ret = xxx_update_bg_vram(gUnknown_2027370);
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool8 xxx_update_bg_vram(UnkTextStruct1 *a0)
|
||||
{
|
||||
s32 i, j;
|
||||
u32 r5;
|
||||
bool8 ret = FALSE;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
UnkTextStruct1 *strPtr = &a0[i];
|
||||
if (strPtr->unk4 == 0)
|
||||
continue;
|
||||
r5 = strPtr->unk38;
|
||||
if (r5 == 0)
|
||||
continue;
|
||||
|
||||
if (strPtr->unk45) {
|
||||
u32 *r2, *r1;
|
||||
|
||||
CpuCopy(strPtr->unk28, strPtr->unk18, 0xD00);
|
||||
// The reason for void casts is because we want to add 0xD00/r5 directly to pointers. Because pointers are u32, without the casts, it would multiply the value by 4.
|
||||
r2 = (void *)(strPtr->unk18) + 0xD00;
|
||||
r1 = (void *)(strPtr->unk28) + 0xD00;
|
||||
for (j = 0; j < strPtr->unk4; j++) {
|
||||
*(r1++) = *(r2++);
|
||||
*(r1++) = *(r2++);
|
||||
*(r1++) = *(r2++);
|
||||
*(r1++) = *(r2++);
|
||||
*(r1++) = *(r2++);
|
||||
*(r1++) = 0xDDDDDDDD;
|
||||
*(r1++) = 0xEEEEEEEE;
|
||||
*(r1++) = 0xFFFFFFFF;
|
||||
r2 += 3;
|
||||
}
|
||||
strPtr->unk38 = 0;
|
||||
}
|
||||
else {
|
||||
CpuCopy(strPtr->unk30, strPtr->unk34, r5);
|
||||
strPtr->unk34 += (r5 / 4);
|
||||
strPtr->unk30 = (void *)(strPtr->unk30) + r5;
|
||||
strPtr->unk38 -= r5;
|
||||
}
|
||||
|
||||
if (strPtr->unk38 == 0) {
|
||||
strPtr->unk44 = 0;
|
||||
}
|
||||
ret = TRUE;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Todo fix gUnknown_3000E94 being accessed as s16/u8
|
||||
extern s16 gUnknown_3000E94[];
|
||||
|
||||
void sub_800898C(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 161; i++) {
|
||||
gUnknown_3000E94[i] = 0xF0F0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str)
|
||||
{
|
||||
u8 *r6;
|
||||
|
||||
if (r4->unk0 & 0x40)
|
||||
return;
|
||||
|
||||
r6 = (void*) &gUnknown_3000E94;
|
||||
if (r4->unk4 == 1) {
|
||||
s32 r12 = (r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8;
|
||||
s32 r5 = (r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2) * 8;
|
||||
s32 r7 = (r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0 + r4->unkC) * 8;
|
||||
s32 r2 = (r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8;
|
||||
if (r4->unkE != 0) {
|
||||
if (r5 < 0)
|
||||
r5 = 0;
|
||||
if (r2 < 0)
|
||||
r2 = 0;
|
||||
if (r5 > 160)
|
||||
r5 = 160;
|
||||
if (r2 > 160)
|
||||
r2 = 160;
|
||||
while (r5 < r2) {
|
||||
s32 id = r5 * 2;
|
||||
if (r6[id] == 240 && r6[id + 1] == 240) {
|
||||
r6[id++] = r7;
|
||||
r6[id] = r12;
|
||||
}
|
||||
else {
|
||||
if (r6[id] < r7) {
|
||||
r6[id] = r7;
|
||||
}
|
||||
id++;
|
||||
if (r6[id] > r12) {
|
||||
r6[id] = r12;
|
||||
}
|
||||
}
|
||||
r5++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (r4->unk4 == 6) {
|
||||
s32 i;
|
||||
s32 r9 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8) - 5;
|
||||
s32 r5 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2) * 8) - 4;
|
||||
s32 var_24 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0 + r4->unkC) * 8) + 5;
|
||||
s32 r8 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8) + 5;
|
||||
s32 r12 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8) + 3;
|
||||
const UnkTextStruct2_sub2 *r2 = r4->unk14;
|
||||
s32 tmp = r2->f2 - 1;
|
||||
s32 r10 = (((tmp + r2->f0 + 2) * 8) + r12) - 4;
|
||||
s32 r4 = r9 + ((r2->f1 + 1) * 8);
|
||||
s32 r7 = (r4 + ((r2->f2 + 2) * 8)) - 4;
|
||||
|
||||
if (r5 < 0)
|
||||
r5 = 0;
|
||||
if (r8 < 0)
|
||||
r8 = 0;
|
||||
if (r5 > 160)
|
||||
r5 = 160;
|
||||
if (r8 > 160)
|
||||
r8 = 160;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
s32 id = r5 * 2;
|
||||
if (r6[id] == 240 && r6[id + 1] == 240) {
|
||||
r6[id++] = r7;
|
||||
r6[id] = r4;
|
||||
}
|
||||
else {
|
||||
if (r6[id] < r7) {
|
||||
r6[id] = r7;
|
||||
}
|
||||
id++;
|
||||
if (r6[id] > r4) {
|
||||
r6[id] = r4;
|
||||
}
|
||||
}
|
||||
r5++;
|
||||
}
|
||||
for (i = 0; i < 8; i++) {
|
||||
s32 id = r5 * 2;
|
||||
if (r6[id] == 240 && r6[id + 1] == 240) {
|
||||
r6[id++] = r10;
|
||||
r6[id] = r12;
|
||||
}
|
||||
else {
|
||||
if (r6[id] < r10) {
|
||||
r6[id] = r10;
|
||||
}
|
||||
id++;
|
||||
if (r6[id] > r12) {
|
||||
r6[id] = r12;
|
||||
}
|
||||
}
|
||||
r5++;
|
||||
}
|
||||
|
||||
while (r5 < r8) {
|
||||
s32 id = r5 * 2;
|
||||
if (r6[id] == 240 && r6[id + 1] == 240) {
|
||||
r6[id++] = var_24;
|
||||
r6[id] = r9;
|
||||
}
|
||||
else {
|
||||
if (r6[id] < var_24) {
|
||||
r6[id] = var_24;
|
||||
}
|
||||
id++;
|
||||
if (r6[id] > r9) {
|
||||
r6[id] = r9;
|
||||
}
|
||||
}
|
||||
r5++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
s32 r8 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8) - 5;
|
||||
s32 r3 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2) * 8) - 5;
|
||||
s32 r12 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0 + r4->unkC) * 8) + 5;
|
||||
s32 r5 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8) + 5;
|
||||
if (r4->unkE != 0) {
|
||||
if (r4->unk4 == 0) {
|
||||
r3 += 8;
|
||||
r5 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8) - 3;
|
||||
}
|
||||
if (r3 < 0)
|
||||
r3 = 0;
|
||||
if (r5 < 0)
|
||||
r5 = 0;
|
||||
if (r3 > 160)
|
||||
r3 = 160;
|
||||
if (r5 > 160)
|
||||
r5 = 160;
|
||||
while (r3 < r5) {
|
||||
s32 id = r3 * 2;
|
||||
if (r6[id] == 240 && r6[id + 1] == 240) {
|
||||
r6[id++] = r12;
|
||||
r6[id] = r8;
|
||||
}
|
||||
else {
|
||||
if (r6[id] < r12) {
|
||||
r6[id] = r12;
|
||||
}
|
||||
id++;
|
||||
if (r6[id] > r8) {
|
||||
r6[id] = r8;
|
||||
}
|
||||
}
|
||||
r3++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user