mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-18 23:06:53 -05:00
Decompile code_80035F0.s
This commit is contained in:
@@ -5,659 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
@ Unused
|
||||
thumb_func_start sub_80035F8
|
||||
sub_80035F8:
|
||||
push {lr}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80035F8
|
||||
|
||||
thumb_func_start sub_8003600
|
||||
sub_8003600:
|
||||
push {r4-r6,lr}
|
||||
ldr r1, _08003650
|
||||
ldr r6, _08003654
|
||||
movs r2, 0
|
||||
ldr r0, _08003658
|
||||
movs r3, 0x80
|
||||
lsls r3, 2
|
||||
_0800360E:
|
||||
strb r2, [r0]
|
||||
strb r2, [r0, 0x1]
|
||||
strb r2, [r0, 0x2]
|
||||
strb r2, [r0, 0x3]
|
||||
adds r0, 0x4
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bne _0800360E
|
||||
movs r0, 0
|
||||
movs r5, 0x80
|
||||
lsls r5, 1
|
||||
ldr r4, _0800365C
|
||||
movs r3, 0x20
|
||||
ldr r2, _08003660
|
||||
_0800362A:
|
||||
strb r0, [r1]
|
||||
strh r5, [r1, 0x2]
|
||||
strb r0, [r1, 0x4]
|
||||
strb r0, [r1, 0x5]
|
||||
strb r0, [r1, 0x6]
|
||||
strb r0, [r1, 0x7]
|
||||
str r0, [r1, 0x8]
|
||||
str r4, [r1, 0xC]
|
||||
str r2, [r1, 0x10]
|
||||
subs r3, 0x1
|
||||
adds r1, 0x14
|
||||
cmp r3, 0
|
||||
bge _0800362A
|
||||
movs r0, 0x1
|
||||
strb r0, [r6]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08003650: .4byte gUnknown_3000C00
|
||||
_08003654: .4byte gUnknown_3001B58
|
||||
_08003658: .4byte gUnknown_3000400
|
||||
_0800365C: .4byte sub_8003A34
|
||||
_08003660: .4byte sub_8003A74
|
||||
thumb_func_end sub_8003600
|
||||
|
||||
thumb_func_start sub_8003664
|
||||
sub_8003664:
|
||||
push {r4,lr}
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
lsls r2, r0, 2
|
||||
adds r2, r0
|
||||
lsls r2, 2
|
||||
ldr r0, _0800369C
|
||||
adds r2, r0
|
||||
movs r3, 0
|
||||
movs r4, 0x1
|
||||
strb r4, [r2]
|
||||
movs r0, 0
|
||||
strh r1, [r2, 0x2]
|
||||
strb r0, [r2, 0x4]
|
||||
strb r0, [r2, 0x5]
|
||||
strb r0, [r2, 0x6]
|
||||
strb r0, [r2, 0x7]
|
||||
str r3, [r2, 0x8]
|
||||
ldr r0, _080036A0
|
||||
str r0, [r2, 0xC]
|
||||
ldr r0, _080036A4
|
||||
str r0, [r2, 0x10]
|
||||
ldr r0, _080036A8
|
||||
strb r4, [r0]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0800369C: .4byte gUnknown_3000C00
|
||||
_080036A0: .4byte sub_8003AC0
|
||||
_080036A4: .4byte sub_8003B50
|
||||
_080036A8: .4byte gUnknown_3001B58
|
||||
thumb_func_end sub_8003664
|
||||
|
||||
thumb_func_start sub_80036AC
|
||||
sub_80036AC:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
str r2, [sp]
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
lsls r2, r0, 2
|
||||
adds r2, r0
|
||||
lsls r2, 2
|
||||
ldr r0, _080036E4
|
||||
adds r2, r0
|
||||
movs r3, 0
|
||||
movs r4, 0x1
|
||||
strb r4, [r2]
|
||||
strh r1, [r2, 0x2]
|
||||
ldr r0, [sp]
|
||||
str r0, [r2, 0x4]
|
||||
str r3, [r2, 0x8]
|
||||
ldr r0, _080036E8
|
||||
str r0, [r2, 0xC]
|
||||
ldr r0, _080036EC
|
||||
str r0, [r2, 0x10]
|
||||
ldr r0, _080036F0
|
||||
strb r4, [r0]
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080036E4: .4byte gUnknown_3000C00
|
||||
_080036E8: .4byte sub_8003C18
|
||||
_080036EC: .4byte sub_8003D00
|
||||
_080036F0: .4byte gUnknown_3001B58
|
||||
thumb_func_end sub_80036AC
|
||||
|
||||
thumb_func_start sub_80036F4
|
||||
sub_80036F4:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
str r2, [sp]
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
lsls r2, r0, 2
|
||||
adds r2, r0
|
||||
lsls r2, 2
|
||||
ldr r0, _0800372C
|
||||
adds r2, r0
|
||||
movs r3, 0
|
||||
movs r4, 0x1
|
||||
strb r4, [r2]
|
||||
strh r1, [r2, 0x2]
|
||||
ldr r0, [sp]
|
||||
str r0, [r2, 0x4]
|
||||
str r3, [r2, 0x8]
|
||||
ldr r0, _08003730
|
||||
str r0, [r2, 0xC]
|
||||
ldr r0, _08003734
|
||||
str r0, [r2, 0x10]
|
||||
ldr r0, _08003738
|
||||
strb r4, [r0]
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0800372C: .4byte gUnknown_3000C00
|
||||
_08003730: .4byte sub_8003E2C
|
||||
_08003734: .4byte sub_8003EC0
|
||||
_08003738: .4byte gUnknown_3001B58
|
||||
thumb_func_end sub_80036F4
|
||||
|
||||
thumb_func_start sub_800373C
|
||||
sub_800373C:
|
||||
push {r4,lr}
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
lsls r3, r0, 2
|
||||
adds r3, r0
|
||||
lsls r3, 2
|
||||
ldr r0, _08003770
|
||||
adds r3, r0
|
||||
movs r4, 0x1
|
||||
strb r4, [r3]
|
||||
movs r0, 0
|
||||
strh r1, [r3, 0x2]
|
||||
strb r0, [r3, 0x4]
|
||||
strb r0, [r3, 0x5]
|
||||
strb r0, [r3, 0x6]
|
||||
strb r0, [r3, 0x7]
|
||||
str r2, [r3, 0x8]
|
||||
ldr r0, _08003774
|
||||
str r0, [r3, 0xC]
|
||||
ldr r0, _08003778
|
||||
str r0, [r3, 0x10]
|
||||
ldr r0, _0800377C
|
||||
strb r4, [r0]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08003770: .4byte gUnknown_3000C00
|
||||
_08003774: .4byte sub_8003F60
|
||||
_08003778: .4byte sub_8004034
|
||||
_0800377C: .4byte gUnknown_3001B58
|
||||
thumb_func_end sub_800373C
|
||||
|
||||
thumb_func_start sub_8003780
|
||||
sub_8003780:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
str r2, [sp]
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
lsls r2, r0, 2
|
||||
adds r2, r0
|
||||
lsls r2, 2
|
||||
ldr r0, _080037B8
|
||||
adds r2, r0
|
||||
movs r3, 0
|
||||
movs r4, 0x1
|
||||
strb r4, [r2]
|
||||
strh r1, [r2, 0x2]
|
||||
ldr r0, [sp]
|
||||
str r0, [r2, 0x4]
|
||||
str r3, [r2, 0x8]
|
||||
ldr r0, _080037BC
|
||||
str r0, [r2, 0xC]
|
||||
ldr r0, _080037C0
|
||||
str r0, [r2, 0x10]
|
||||
ldr r0, _080037C4
|
||||
strb r4, [r0]
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080037B8: .4byte gUnknown_3000C00
|
||||
_080037BC: .4byte sub_8004170
|
||||
_080037C0: .4byte sub_8004264
|
||||
_080037C4: .4byte gUnknown_3001B58
|
||||
thumb_func_end sub_8003780
|
||||
|
||||
thumb_func_start sub_80037C8
|
||||
sub_80037C8:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
str r2, [sp]
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
lsls r2, r0, 2
|
||||
adds r2, r0
|
||||
lsls r2, 2
|
||||
ldr r0, _08003800
|
||||
adds r2, r0
|
||||
movs r3, 0
|
||||
movs r4, 0x1
|
||||
strb r4, [r2]
|
||||
strh r1, [r2, 0x2]
|
||||
ldr r0, [sp]
|
||||
str r0, [r2, 0x4]
|
||||
str r3, [r2, 0x8]
|
||||
ldr r0, _08003804
|
||||
str r0, [r2, 0xC]
|
||||
ldr r0, _08003808
|
||||
str r0, [r2, 0x10]
|
||||
ldr r0, _0800380C
|
||||
strb r4, [r0]
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08003800: .4byte gUnknown_3000C00
|
||||
_08003804: .4byte sub_8004388
|
||||
_08003808: .4byte sub_8004434
|
||||
_0800380C: .4byte gUnknown_3001B58
|
||||
thumb_func_end sub_80037C8
|
||||
|
||||
thumb_func_start sub_8003810
|
||||
sub_8003810:
|
||||
sub sp, 0x4
|
||||
str r1, [sp]
|
||||
lsls r0, 16
|
||||
lsrs r2, r0, 20
|
||||
lsls r1, r2, 2
|
||||
adds r1, r2
|
||||
lsls r1, 2
|
||||
ldr r2, _08003838
|
||||
adds r1, r2
|
||||
movs r2, 0x1
|
||||
strb r2, [r1]
|
||||
ldr r1, _0800383C
|
||||
lsrs r0, 14
|
||||
adds r0, r1
|
||||
ldr r1, [sp]
|
||||
str r1, [r0]
|
||||
ldr r0, _08003840
|
||||
strb r2, [r0]
|
||||
add sp, 0x4
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08003838: .4byte gUnknown_3000C00
|
||||
_0800383C: .4byte gUnknown_3000400
|
||||
_08003840: .4byte gUnknown_3001B58
|
||||
thumb_func_end sub_8003810
|
||||
|
||||
thumb_func_start sub_8003844
|
||||
sub_8003844:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x4
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
lsrs r0, 20
|
||||
lsls r2, r0, 2
|
||||
adds r2, r0
|
||||
lsls r2, 2
|
||||
ldr r0, _08003880
|
||||
adds r2, r0
|
||||
movs r5, 0x1
|
||||
strb r5, [r2]
|
||||
adds r0, r1, 0
|
||||
bl sub_80027A0
|
||||
str r0, [sp]
|
||||
ldr r0, _08003884
|
||||
lsls r4, 2
|
||||
adds r4, r0
|
||||
ldr r0, [sp]
|
||||
str r0, [r4]
|
||||
ldr r0, _08003888
|
||||
strb r5, [r0]
|
||||
add sp, 0x4
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08003880: .4byte gUnknown_3000C00
|
||||
_08003884: .4byte gUnknown_3000400
|
||||
_08003888: .4byte gUnknown_3001B58
|
||||
thumb_func_end sub_8003844
|
||||
|
||||
thumb_func_start sub_800388C
|
||||
sub_800388C:
|
||||
push {r4-r7,lr}
|
||||
adds r6, r1, 0
|
||||
lsls r0, 16
|
||||
lsrs r1, r0, 16
|
||||
lsrs r4, r0, 20
|
||||
adds r3, r1, r2
|
||||
subs r0, r3, 0x1
|
||||
cmp r0, 0
|
||||
bge _080038A0
|
||||
adds r0, 0xF
|
||||
_080038A0:
|
||||
lsls r0, 12
|
||||
lsrs r3, r0, 16
|
||||
lsls r1, 2
|
||||
ldr r0, _080038E4
|
||||
adds r1, r0
|
||||
lsls r5, r4, 2
|
||||
ldr r7, _080038E8
|
||||
ldr r0, _080038EC
|
||||
mov r12, r0
|
||||
cmp r2, 0
|
||||
ble _080038C0
|
||||
_080038B6:
|
||||
ldm r6!, {r0}
|
||||
stm r1!, {r0}
|
||||
subs r2, 0x1
|
||||
cmp r2, 0
|
||||
bne _080038B6
|
||||
_080038C0:
|
||||
adds r0, r5, r4
|
||||
lsls r0, 2
|
||||
adds r0, r7
|
||||
adds r2, r4, 0
|
||||
cmp r2, r3
|
||||
bgt _080038D8
|
||||
movs r1, 0x1
|
||||
_080038CE:
|
||||
strb r1, [r0]
|
||||
adds r2, 0x1
|
||||
adds r0, 0x14
|
||||
cmp r2, r3
|
||||
ble _080038CE
|
||||
_080038D8:
|
||||
movs r0, 0x1
|
||||
mov r1, r12
|
||||
strb r0, [r1]
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080038E4: .4byte gUnknown_3000400
|
||||
_080038E8: .4byte gUnknown_3000C00
|
||||
_080038EC: .4byte gUnknown_3001B58
|
||||
thumb_func_end sub_800388C
|
||||
|
||||
thumb_func_start sub_80038F0
|
||||
sub_80038F0:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
sub sp, 0x4
|
||||
adds r5, r1, 0
|
||||
lsls r0, 16
|
||||
lsrs r1, r0, 16
|
||||
lsrs r6, r0, 20
|
||||
adds r3, r1, r2
|
||||
subs r0, r3, 0x1
|
||||
cmp r0, 0
|
||||
bge _0800390C
|
||||
adds r0, 0xF
|
||||
_0800390C:
|
||||
lsls r0, 12
|
||||
lsrs r7, r0, 16
|
||||
lsls r1, 2
|
||||
ldr r0, _0800396C
|
||||
adds r1, r0
|
||||
mov r8, r1
|
||||
lsls r0, r6, 2
|
||||
mov r9, r0
|
||||
cmp r2, 0
|
||||
ble _0800393C
|
||||
adds r4, r2, 0
|
||||
_08003922:
|
||||
ldrh r0, [r5]
|
||||
adds r5, 0x2
|
||||
bl sub_80027A0
|
||||
str r0, [sp]
|
||||
mov r1, r8
|
||||
adds r1, 0x4
|
||||
mov r8, r1
|
||||
subs r1, 0x4
|
||||
stm r1!, {r0}
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bne _08003922
|
||||
_0800393C:
|
||||
mov r1, r9
|
||||
adds r0, r1, r6
|
||||
lsls r0, 2
|
||||
ldr r1, _08003970
|
||||
adds r0, r1
|
||||
adds r4, r6, 0
|
||||
ldr r2, _08003974
|
||||
cmp r4, r7
|
||||
bgt _0800395A
|
||||
movs r1, 0x1
|
||||
_08003950:
|
||||
strb r1, [r0]
|
||||
adds r4, 0x1
|
||||
adds r0, 0x14
|
||||
cmp r4, r7
|
||||
ble _08003950
|
||||
_0800395A:
|
||||
movs r0, 0x1
|
||||
strb r0, [r2]
|
||||
add sp, 0x4
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0800396C: .4byte gUnknown_3000400
|
||||
_08003970: .4byte gUnknown_3000C00
|
||||
_08003974: .4byte gUnknown_3001B58
|
||||
thumb_func_end sub_80038F0
|
||||
|
||||
thumb_func_start sub_8003978
|
||||
sub_8003978:
|
||||
lsls r0, 16
|
||||
ldr r1, _08003984
|
||||
lsrs r0, 14
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08003984: .4byte gUnknown_3000400
|
||||
thumb_func_end sub_8003978
|
||||
|
||||
thumb_func_start sub_8003988
|
||||
sub_8003988:
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
ldr r1, _080039A0
|
||||
lsrs r0, 14
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
bl sub_8002774
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080039A0: .4byte gUnknown_3000400
|
||||
thumb_func_end sub_8003988
|
||||
|
||||
thumb_func_start sub_80039A4
|
||||
sub_80039A4:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldr r2, _080039B4
|
||||
ldrh r1, [r2]
|
||||
orrs r0, r1
|
||||
strh r0, [r2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080039B4: .4byte gUnknown_3001B5A
|
||||
thumb_func_end sub_80039A4
|
||||
|
||||
thumb_func_start sub_80039B8
|
||||
sub_80039B8:
|
||||
push {r4,r5,lr}
|
||||
ldr r0, _08003A28
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08003A20
|
||||
ldr r4, _08003A2C
|
||||
movs r1, 0x96
|
||||
lsls r1, 1
|
||||
adds r0, r4, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _080039DA
|
||||
movs r0, 0xA0
|
||||
lsls r0, 2
|
||||
adds r1, r4, r0
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
_080039DA:
|
||||
movs r5, 0
|
||||
_080039DC:
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _080039F0
|
||||
lsls r0, r5, 16
|
||||
lsrs r0, 16
|
||||
ldr r1, [r4, 0x10]
|
||||
bl _call_via_r1
|
||||
movs r0, 0
|
||||
strb r0, [r4]
|
||||
_080039F0:
|
||||
adds r5, 0x1
|
||||
adds r4, 0x14
|
||||
cmp r5, 0x1F
|
||||
ble _080039DC
|
||||
ldr r0, _08003A2C
|
||||
movs r1, 0xA0
|
||||
lsls r1, 2
|
||||
adds r5, r0, r1
|
||||
ldrb r0, [r5]
|
||||
cmp r0, 0
|
||||
beq _08003A14
|
||||
ldr r2, [r4, 0xC]
|
||||
movs r0, 0x20
|
||||
movs r1, 0xF0
|
||||
bl _call_via_r2
|
||||
movs r0, 0
|
||||
strb r0, [r5]
|
||||
_08003A14:
|
||||
ldr r1, _08003A30
|
||||
movs r0, 0x3
|
||||
strh r0, [r1]
|
||||
ldr r1, _08003A28
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
_08003A20:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08003A28: .4byte gUnknown_3001B58
|
||||
_08003A2C: .4byte gUnknown_3000C00
|
||||
_08003A30: .4byte gUnknown_3001B5A
|
||||
thumb_func_end sub_80039B8
|
||||
|
||||
thumb_func_start sub_8003A34
|
||||
sub_8003A34:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x4
|
||||
lsls r0, r1, 16
|
||||
lsrs r0, 16
|
||||
lsls r5, r0, 2
|
||||
ldr r1, _08003A70
|
||||
adds r5, r1
|
||||
ldrb r1, [r5, 0x2]
|
||||
movs r2, 0xF8
|
||||
adds r3, r2, 0
|
||||
ands r3, r1
|
||||
lsls r3, 7
|
||||
ldrb r4, [r5, 0x1]
|
||||
adds r1, r2, 0
|
||||
ands r1, r4
|
||||
lsls r1, 2
|
||||
orrs r3, r1
|
||||
ldrb r1, [r5]
|
||||
ands r2, r1
|
||||
lsrs r2, 3
|
||||
orrs r2, r3
|
||||
mov r1, sp
|
||||
strh r2, [r1]
|
||||
bl SetBGPaletteBufferColor
|
||||
add sp, 0x4
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08003A70: .4byte gUnknown_3000400
|
||||
thumb_func_end sub_8003A34
|
||||
|
||||
thumb_func_start sub_8003A74
|
||||
sub_8003A74:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x4
|
||||
lsls r0, 20
|
||||
lsrs r6, r0, 16
|
||||
lsls r1, r6, 2
|
||||
ldr r0, _08003ABC
|
||||
adds r4, r1, r0
|
||||
movs r5, 0
|
||||
movs r7, 0xF8
|
||||
_08003A86:
|
||||
ldrb r0, [r4, 0x2]
|
||||
adds r1, r7, 0
|
||||
ands r1, r0
|
||||
lsls r1, 7
|
||||
ldrb r2, [r4, 0x1]
|
||||
adds r0, r7, 0
|
||||
ands r0, r2
|
||||
lsls r0, 2
|
||||
orrs r1, r0
|
||||
ldrb r2, [r4]
|
||||
adds r0, r7, 0
|
||||
ands r0, r2
|
||||
lsrs r0, 3
|
||||
orrs r0, r1
|
||||
mov r1, sp
|
||||
strh r0, [r1]
|
||||
adds r0, r6, r5
|
||||
bl SetBGPaletteBufferColor
|
||||
adds r4, 0x4
|
||||
adds r5, 0x1
|
||||
cmp r5, 0xF
|
||||
ble _08003A86
|
||||
add sp, 0x4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08003ABC: .4byte gUnknown_3000400
|
||||
thumb_func_end sub_8003A74
|
||||
|
||||
thumb_func_start sub_8003AC0
|
||||
sub_8003AC0:
|
||||
push {r4-r7,lr}
|
||||
|
||||
@@ -8,6 +8,7 @@ void nullsub_4(s32 index, const RGB *color, s32 brightness, const RGB *ramp);
|
||||
void nullsub_5(s32 index, const RGB *color);
|
||||
void SetBGPaletteBufferColorArray(s32 index, const RGB *color);
|
||||
void SetBGPaletteBufferColorRGB(s32 index, const RGB *color, s32 brightness, const RGB *ramp);
|
||||
void SetBGPaletteBufferColor(s32 index, u16 *color);
|
||||
void TransferBGPaletteBuffer(void);
|
||||
|
||||
#endif // GUARD_BG_PALETTE_BUFFER_H
|
||||
|
||||
@@ -3,6 +3,18 @@
|
||||
|
||||
#include "structs/str_position.h"
|
||||
|
||||
#define UNK_STRUCT_ARR_COUNT 4
|
||||
|
||||
struct S_sub
|
||||
{
|
||||
u8 x0[UNK_STRUCT_ARR_COUNT];
|
||||
};
|
||||
|
||||
struct S
|
||||
{
|
||||
struct S_sub x0;
|
||||
};
|
||||
|
||||
void sub_800290C(PixelPos *param_1, s32 param_2);
|
||||
void sub_8002934(PixelPos *param_1, PixelPos *param_2, PixelPos *param_3, s32 param_4, s32 param_5);
|
||||
s32 sub_8002A70(s32 a0, s32 a1, s32 a2);
|
||||
@@ -10,5 +22,7 @@ s32 sub_8002B04(s32, s32);
|
||||
s32 VecDirection8Radial(PixelPos *param_1);
|
||||
s8 SizedDeltaDirection4(const PixelPos *r0, const PixelPos *r1, const PixelPos *r2, const PixelPos *r3);
|
||||
s8 SizedDeltaDirection8(const PixelPos *r0, const PixelPos *r1, const PixelPos *r2, const PixelPos *r3);
|
||||
struct S sub_80027A0(u16 a0);
|
||||
u16 sub_8002774(struct S_sub s);
|
||||
|
||||
#endif // GUARD_CODE_8002774_H
|
||||
|
||||
@@ -53,6 +53,7 @@ SECTIONS {
|
||||
src/event_flag.o(.text);
|
||||
src/code_8002774.o(.text);
|
||||
src/memory.o(.text);
|
||||
src/code_80035F0.o(.text);
|
||||
asm/code_80035F0.o(.text);
|
||||
src/other_random.o(.text);
|
||||
src/util.o(.text);
|
||||
|
||||
@@ -5,13 +5,6 @@
|
||||
#include "structs/str_position.h"
|
||||
#include "other_random.h"
|
||||
|
||||
#define UNK_STRUCT_ARR_COUNT 4
|
||||
|
||||
struct S
|
||||
{
|
||||
u8 x0[UNK_STRUCT_ARR_COUNT];
|
||||
};
|
||||
|
||||
const u8 sUnknown_8002774[] = {0, 0, 0, 0, 0, 0, 0, 0};
|
||||
|
||||
const PixelPos gVectorDirections[NUM_DIRECTIONS] = {
|
||||
@@ -27,7 +20,7 @@ const PixelPos gVectorDirections[NUM_DIRECTIONS] = {
|
||||
|
||||
static s8 VecDirection4Radial(PixelPos *pixelPos);
|
||||
|
||||
u16 sub_8002774(struct S s)
|
||||
u16 sub_8002774(struct S_sub s)
|
||||
{
|
||||
return ((s.x0[2] & 0xF8) << 7) | ((s.x0[1] & 0xF8) << 2) | ((s.x0[0] & 0xF8) >> 3);
|
||||
}
|
||||
@@ -36,10 +29,10 @@ struct S sub_80027A0(u16 a0)
|
||||
{
|
||||
struct S ret;
|
||||
|
||||
ret.x0[0] = (a0 & 0x1F) << 3 | ((a0 & 1) ? 7 : 0);
|
||||
ret.x0[1] = (a0 & 0x3E0) >> 2 | ((a0 & 0x20) ? 7 : 0);
|
||||
ret.x0[2] = (a0 & 0x7C00) >> 7 | ((a0 & 0x400) ? 7 : 0);
|
||||
ret.x0[3] = 0;
|
||||
ret.x0.x0[0] = (a0 & 0x1F) << 3 | ((a0 & 1) ? 7 : 0);
|
||||
ret.x0.x0[1] = (a0 & 0x3E0) >> 2 | ((a0 & 0x20) ? 7 : 0);
|
||||
ret.x0.x0[2] = (a0 & 0x7C00) >> 7 | ((a0 & 0x400) ? 7 : 0);
|
||||
ret.x0.x0[3] = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -48,7 +41,7 @@ UNUSED static void sub_8002804(struct S *r0, s32 r1, struct S *r2)
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < UNK_STRUCT_ARR_COUNT; i++) {
|
||||
r0->x0[i] = (r1 * r2->x0[i]) / 256;
|
||||
r0->x0.x0[i] = (r1 * r2->x0.x0[i]) / 256;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,19 +53,19 @@ UNUSED static void sub_800282C(struct S *dst, s32 a1, struct S *a2, struct S *a3
|
||||
float f0 = 1.0f / a1;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
s8 asSigned = (s8) a2->x0[i];
|
||||
s8 asSigned = (s8) a2->x0.x0[i];
|
||||
float f = (float)(asSigned);
|
||||
if (asSigned < 0) {
|
||||
f += 256.0f;
|
||||
}
|
||||
spFloats[i] = f;
|
||||
floatsMul[i] = (float)(a3->x0[i] - a2->x0[i]) * f0;
|
||||
floatsMul[i] = (float)(a3->x0.x0[i] - a2->x0.x0[i]) * f0;
|
||||
}
|
||||
|
||||
*dst++ = *a2;
|
||||
for (i = 1; i < a1 - 1; dst++, i++) {
|
||||
for (j = 0; j < 4; j++) {
|
||||
dst->x0[j] = (unsigned int)((spFloats[j] += floatsMul[j]));
|
||||
dst->x0.x0[j] = (unsigned int)((spFloats[j] += floatsMul[j]));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,380 @@
|
||||
#include "global.h"
|
||||
|
||||
IWRAM_INIT u16 gUnknown_3001B58 = 0;
|
||||
#include "bg_palette_buffer.h"
|
||||
#include "code_8002774.h"
|
||||
|
||||
IWRAM_INIT u8 gUnknown_3001B58 = 0;
|
||||
IWRAM_INIT u16 gUnknown_3001B5A = 0;
|
||||
|
||||
typedef struct unkStruct_3000C00_sub
|
||||
{
|
||||
u8 unk0[4];
|
||||
} unkStruct_3000C00_sub;
|
||||
|
||||
typedef struct unkStruct_3000C00
|
||||
{
|
||||
// size: 0x14
|
||||
u8 unk0;
|
||||
u8 unk1; // ?
|
||||
s16 unk2;
|
||||
unkStruct_3000C00_sub unk4;
|
||||
s32 unk8;
|
||||
void (*unkC)(u32, u32);
|
||||
void (*unk10)(u32);
|
||||
} unkStruct_3000C00;
|
||||
|
||||
unkStruct_3000C00 gUnknown_3000C00[0x20];
|
||||
|
||||
struct S gUnknown_3000400[0x200];
|
||||
|
||||
void sub_8003A34(u32, u32);
|
||||
void sub_8003AC0(u32, u32);
|
||||
void sub_8003C18(u32, u32);
|
||||
void sub_8003E2C(u32, u32);
|
||||
void sub_8003F60(u32, u32);
|
||||
void sub_8004170(u32, u32);
|
||||
void sub_8004388(u32, u32);
|
||||
void sub_8003B50(u32);
|
||||
void sub_8003D00(u32);
|
||||
void sub_8003EC0(u32);
|
||||
void sub_8004034(u32);
|
||||
void sub_8004264(u32);
|
||||
void sub_8004434(u32);
|
||||
void sub_8003A74(u32);
|
||||
|
||||
NAKED
|
||||
UNUSED static void sub_80035F8(void)
|
||||
{
|
||||
asm_unified(" .text\n"
|
||||
" push {lr}\n"
|
||||
" pop {r0}\n"
|
||||
" bx r0\n");
|
||||
}
|
||||
|
||||
void sub_8003600(void) {
|
||||
unkStruct_3000C00 *it1;
|
||||
struct S *it2;
|
||||
u8 *r6;
|
||||
s32 i;
|
||||
s32 zero;
|
||||
|
||||
it1 = &gUnknown_3000C00[0];
|
||||
r6 = &gUnknown_3001B58;
|
||||
zero = 0;
|
||||
it2 = &gUnknown_3000400[0];
|
||||
|
||||
for (i = 0; i < 0x200; it2++, i++)
|
||||
{
|
||||
it2->x0.x0[0] = zero;
|
||||
it2->x0.x0[1] = zero;
|
||||
it2->x0.x0[2] = zero;
|
||||
it2->x0.x0[3] = zero;
|
||||
}
|
||||
|
||||
for (i = 0; i < 0x21; i++, it1++)
|
||||
{
|
||||
it1->unk0 = 0;
|
||||
it1->unk2 = 0x100;
|
||||
it1->unk4.unk0[0] = 0;
|
||||
it1->unk4.unk0[1] = 0;
|
||||
it1->unk4.unk0[2] = 0;
|
||||
it1->unk4.unk0[3] = 0;
|
||||
it1->unk8 = 0;
|
||||
it1->unkC = &sub_8003A34;
|
||||
it1->unk10 = &sub_8003A74;
|
||||
}
|
||||
|
||||
*r6 = 1;
|
||||
}
|
||||
|
||||
void sub_8003664(s32 param_1, s16 param_2) {
|
||||
u16 idx;
|
||||
unkStruct_3000C00 *ptr;
|
||||
idx = param_1;
|
||||
ptr = &gUnknown_3000C00[idx];
|
||||
|
||||
ptr->unk0 = 1;
|
||||
ptr->unk2 = param_2;
|
||||
ptr->unk4.unk0[0] = 0;
|
||||
ptr->unk4.unk0[1] = 0;
|
||||
ptr->unk4.unk0[2] = 0;
|
||||
ptr->unk4.unk0[3] = 0;
|
||||
ptr->unk8 = 0;
|
||||
ptr->unkC = &sub_8003AC0;
|
||||
ptr->unk10 = &sub_8003B50;
|
||||
|
||||
gUnknown_3001B58 = 1;
|
||||
}
|
||||
|
||||
void sub_80036AC(s32 param_1, s16 param_2, unkStruct_3000C00_sub param_3) {
|
||||
u16 idx;
|
||||
unkStruct_3000C00 *ptr;
|
||||
idx = param_1;
|
||||
ptr = &gUnknown_3000C00[idx];
|
||||
|
||||
ptr->unk0 = 1;
|
||||
ptr->unk2 = param_2;
|
||||
ptr->unk4 = param_3;
|
||||
ptr->unk8 = 0;
|
||||
ptr->unkC = &sub_8003C18;
|
||||
ptr->unk10 = &sub_8003D00;
|
||||
|
||||
gUnknown_3001B58 = 1;
|
||||
}
|
||||
|
||||
void sub_80036F4(s32 param_1, s16 param_2, unkStruct_3000C00_sub param_3) {
|
||||
u16 idx;
|
||||
unkStruct_3000C00 *ptr;
|
||||
idx = param_1;
|
||||
ptr = &gUnknown_3000C00[idx];
|
||||
|
||||
ptr->unk0 = 1;
|
||||
ptr->unk2 = param_2;
|
||||
ptr->unk4 = param_3;
|
||||
ptr->unk8 = 0;
|
||||
ptr->unkC = &sub_8003E2C;
|
||||
ptr->unk10 = &sub_8003EC0;
|
||||
|
||||
gUnknown_3001B58 = 1;
|
||||
}
|
||||
|
||||
UNUSED void sub_800373C(s32 param_1, s16 param_2, s32 param_3)
|
||||
{
|
||||
u16 idx;
|
||||
unkStruct_3000C00 *ptr;
|
||||
idx = param_1;
|
||||
ptr = &gUnknown_3000C00[idx];
|
||||
|
||||
ptr->unk0 = 1;
|
||||
ptr->unk2 = param_2;
|
||||
ptr->unk4.unk0[0] = 0;
|
||||
ptr->unk4.unk0[1] = 0;
|
||||
ptr->unk4.unk0[2] = 0;
|
||||
ptr->unk4.unk0[3] = 0;
|
||||
ptr->unk8 = param_3;
|
||||
ptr->unkC = &sub_8003F60;
|
||||
ptr->unk10 = &sub_8004034;
|
||||
|
||||
gUnknown_3001B58 = 1;
|
||||
}
|
||||
|
||||
void sub_8003780(s32 param_1, s16 param_2, unkStruct_3000C00_sub param_3) {
|
||||
u16 idx;
|
||||
unkStruct_3000C00 *ptr;
|
||||
idx = param_1;
|
||||
ptr = &gUnknown_3000C00[idx];
|
||||
|
||||
ptr->unk0 = 1;
|
||||
ptr->unk2 = param_2;
|
||||
ptr->unk4 = param_3;
|
||||
ptr->unk8 = 0;
|
||||
ptr->unkC = &sub_8004170;
|
||||
ptr->unk10 = &sub_8004264;
|
||||
|
||||
gUnknown_3001B58 = 1;
|
||||
}
|
||||
|
||||
void sub_80037C8(s32 param_1, s16 param_2, unkStruct_3000C00_sub param_3) {
|
||||
u16 idx;
|
||||
unkStruct_3000C00 *ptr;
|
||||
idx = param_1;
|
||||
ptr = &gUnknown_3000C00[idx];
|
||||
|
||||
ptr->unk0 = 1;
|
||||
ptr->unk2 = param_2;
|
||||
ptr->unk4 = param_3;
|
||||
ptr->unk8 = 0;
|
||||
ptr->unkC = &sub_8004388;
|
||||
ptr->unk10 = &sub_8004434;
|
||||
|
||||
gUnknown_3001B58 = 1;
|
||||
}
|
||||
|
||||
void sub_8003810(u32 param_1, struct S param_2)
|
||||
{
|
||||
u16 idx;
|
||||
unkStruct_3000C00 *a;
|
||||
idx = (u16) param_1;
|
||||
a = &gUnknown_3000C00[idx >> 4];
|
||||
a->unk0 = 1;
|
||||
|
||||
gUnknown_3000400[idx] = param_2;
|
||||
gUnknown_3001B58 = 1;
|
||||
}
|
||||
|
||||
UNUSED void sub_8003844(u32 param_1, u32 param_2)
|
||||
{
|
||||
u16 idx1;
|
||||
u16 idx2;
|
||||
unkStruct_3000C00 *a;
|
||||
idx1 = param_1;
|
||||
idx2 = param_2;
|
||||
a = &gUnknown_3000C00[idx1 >> 4];
|
||||
a->unk0 = 1;
|
||||
|
||||
gUnknown_3000400[idx1] = sub_80027A0(idx2);
|
||||
gUnknown_3001B58 = 1;
|
||||
}
|
||||
|
||||
void sub_800388C(u32 param_1, struct S *param_2, s32 param_3)
|
||||
{
|
||||
u16 idx1;
|
||||
u16 idx2;
|
||||
s32 sVar1;
|
||||
u16 sVar2;
|
||||
struct S *ptr1;
|
||||
unkStruct_3000C00 *ptr3;
|
||||
s32 i;
|
||||
|
||||
idx1 = param_1;
|
||||
idx2 = idx1 / 16;
|
||||
sVar1 = idx1 + param_3 - 1;
|
||||
if (sVar1 < 0)
|
||||
{
|
||||
sVar1 += 0xf;
|
||||
}
|
||||
|
||||
sVar1 = (sVar1 << 0xc) >> 0x10;
|
||||
sVar2 = sVar1;
|
||||
ptr1 = &gUnknown_3000400[idx1];
|
||||
|
||||
for (i = 0; i < param_3; param_2++, ptr1++, i++)
|
||||
{
|
||||
*ptr1 = *param_2;
|
||||
}
|
||||
|
||||
ptr3 = &gUnknown_3000C00[idx2];
|
||||
|
||||
for (i = idx2; i <= sVar2; i++, ptr3++)
|
||||
{
|
||||
ptr3->unk0 = 1;
|
||||
}
|
||||
|
||||
gUnknown_3001B58 = 1;
|
||||
}
|
||||
|
||||
UNUSED void sub_80038F0(u32 param_1, s16 *param_2, s32 param_3)
|
||||
{
|
||||
u16 idx1;
|
||||
u16 idx2;
|
||||
u16 uVar;
|
||||
struct S *ptr1;
|
||||
unkStruct_3000C00 *ptr2;
|
||||
s32 i;
|
||||
|
||||
idx1 = param_1;
|
||||
idx2 = idx1 / 16;
|
||||
uVar = (idx1 + param_3 - 1) / 16;
|
||||
ptr1 = &gUnknown_3000400[idx1];
|
||||
|
||||
for (i = 0; i < param_3; i++)
|
||||
{
|
||||
*ptr1 = sub_80027A0(*param_2++);
|
||||
ptr1++;
|
||||
}
|
||||
|
||||
ptr2 = &gUnknown_3000C00[idx2];
|
||||
|
||||
for (i = idx2; i <= uVar; i++, ptr2++)
|
||||
{
|
||||
ptr2->unk0 = 1;
|
||||
}
|
||||
|
||||
gUnknown_3001B58 = 1;
|
||||
}
|
||||
|
||||
UNUSED struct S_sub sub_8003978(u32 param_1)
|
||||
{
|
||||
u16 idx;
|
||||
idx = param_1;
|
||||
return gUnknown_3000400[idx].x0;
|
||||
}
|
||||
|
||||
UNUSED u16 sub_8003988(u32 param_1) {
|
||||
u16 idx;
|
||||
idx = param_1;
|
||||
return sub_8002774(gUnknown_3000400[idx].x0);
|
||||
}
|
||||
|
||||
UNUSED void sub_80039A4(u32 param_1)
|
||||
{
|
||||
u16 idx;
|
||||
idx = param_1;
|
||||
gUnknown_3001B5A |= idx;
|
||||
}
|
||||
|
||||
void sub_80039B8(void) {
|
||||
s32 i;
|
||||
unkStruct_3000C00* ptr1;
|
||||
unkStruct_3000C00* ptr2;
|
||||
|
||||
if (gUnknown_3001B58)
|
||||
{
|
||||
ptr1 = gUnknown_3000C00;
|
||||
if (gUnknown_3000C00[0xf].unk0)
|
||||
{
|
||||
gUnknown_3000C00[0x20].unk0 = 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < 0x20; i++, ptr1++)
|
||||
{
|
||||
if (ptr1->unk0)
|
||||
{
|
||||
ptr1->unk10((u16) i);
|
||||
ptr1->unk0 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (gUnknown_3000C00[0x20].unk0)
|
||||
{
|
||||
ptr2 = &gUnknown_3000C00[0x20];
|
||||
// here ptr2 == ptr1
|
||||
ptr1->unkC(0x20, 0xf0);
|
||||
ptr2->unk0 = 0;
|
||||
}
|
||||
|
||||
gUnknown_3001B5A = 3;
|
||||
gUnknown_3001B58 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8003A34(u32 param_1, u32 param_2) {
|
||||
u16 idx;
|
||||
struct S *ptr1;
|
||||
u32 uVar1;
|
||||
u32 uVar2;
|
||||
u32 uVar3;
|
||||
u16 color;
|
||||
|
||||
idx = param_2;
|
||||
ptr1 = &gUnknown_3000400[idx];
|
||||
uVar1 = (ptr1->x0.x0[2] & 0xf8) << 7;
|
||||
uVar2 = (ptr1->x0.x0[1] & 0xf8) << 2;
|
||||
uVar1 |= uVar2;
|
||||
uVar3 = (ptr1->x0.x0[0] & 0xf8) >> 3;
|
||||
color = uVar3 | uVar1;
|
||||
SetBGPaletteBufferColor(idx, &color);
|
||||
}
|
||||
|
||||
void sub_8003A74(u32 param_1) {
|
||||
u16 idx;
|
||||
struct S *ptr1;
|
||||
u32 uVar1;
|
||||
u32 uVar2;
|
||||
u32 uVar3;
|
||||
s32 i;
|
||||
u16 color;
|
||||
|
||||
idx = param_1 << 4;
|
||||
ptr1 = &gUnknown_3000400[idx];
|
||||
|
||||
for (i = 0; i <= 0xf; ptr1++, i++)
|
||||
{
|
||||
uVar1 = (ptr1->x0.x0[2] & 0xf8) << 7;
|
||||
uVar2 = (ptr1->x0.x0[1] & 0xf8) << 2;
|
||||
uVar1 |= uVar2;
|
||||
uVar3 = (ptr1->x0.x0[0] & 0xf8) >> 3;
|
||||
color = uVar3 | uVar1;
|
||||
SetBGPaletteBufferColor(idx + i, &color);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user