Decomped sub_02009D48

Decomped by @JesusArcasCarrera
This commit is contained in:
AnonymousRandomPerson
2026-04-26 23:25:28 -04:00
parent cf38ea6eb9
commit 149bb6e3af
7 changed files with 197 additions and 175 deletions

View File

@@ -44,10 +44,6 @@
.public _022A37A0
.public _022A37A4
.public _022A37AC
.public _022A37AD
.public _022A37AE
.public _022A37AF
.public _022A37B0
.public _022A37B6
.public _022A37B7
.public _022A37B8
@@ -89,5 +85,8 @@
.public sub_0200846C
.public sub_02008980
.public sub_02008A84
.public sub_02009D48
.public sub_02009DCC
.public sub_02009E70
.public sub_02009F9C
.public sub_02082420

View File

@@ -0,0 +1,14 @@
#pragma once
.public G2x_SetBlendAlpha_
.public _022A37AC
.public _022A37AD
.public _022A37AE
.public _022A37AF
.public _022A37B0
.public _022A37B6
.public _022A37B7
.public _022A37B8
.public _022A37B9
.public _022A37BA
.public _022A37BC
.public _022A37BE

View File

@@ -1370,174 +1370,3 @@ sub_02009D20: ; 0x02009D20
.align 2, 0
_02009D44: .word 0x0400104A
arm_func_end sub_02009D20
arm_func_start sub_02009D48
sub_02009D48: ; 0x02009D48
stmdb sp!, {r4, lr}
movs r4, r0
bne _02009D88
ldr r0, _02009DBC ; =_022A37CC
ldr r0, [r0, r4, lsl #4]
bl sub_02009C54
ldr r0, _02009DC0 ; =_022A37D0
ldr r0, [r0, r4, lsl #4]
bl sub_02009C38
ldr r0, _02009DC4 ; =_022A37D4
ldr r0, [r0, r4, lsl #4]
bl sub_02009C70
ldr r0, _02009DC8 ; =_022A37D8
ldr r0, [r0, r4, lsl #4]
bl sub_02009C8C
ldmia sp!, {r4, pc}
_02009D88:
ldr r0, _02009DBC ; =_022A37CC
ldr r0, [r0, r4, lsl #4]
bl sub_020095AC
ldr r0, _02009DC0 ; =_022A37D0
ldr r0, [r0, r4, lsl #4]
bl sub_020095C8
ldr r0, _02009DC4 ; =_022A37D4
ldr r0, [r0, r4, lsl #4]
bl sub_020095E4
ldr r0, _02009DC8 ; =_022A37D8
ldr r0, [r0, r4, lsl #4]
bl sub_02009600
ldmia sp!, {r4, pc}
.align 2, 0
_02009DBC: .word _022A37CC
_02009DC0: .word _022A37D0
_02009DC4: .word _022A37D4
_02009DC8: .word _022A37D8
arm_func_end sub_02009D48
arm_func_start sub_02009DCC
sub_02009DCC: ; 0x02009DCC
ldr r1, _02009E58 ; =_022A37AC
add r3, r0, r0, lsl #2
ldrb r2, [r1, r3]
mov r1, #0x1f
cmp r2, #0
ldr r2, _02009E5C ; =_022A37AD
bicne r1, r1, #1
ldrb r2, [r2, r3]
cmp r2, #0
ldr r2, _02009E60 ; =_022A37AE
bicne r1, r1, #2
ldrb r2, [r2, r3]
cmp r2, #0
ldr r2, _02009E64 ; =_022A37AF
bicne r1, r1, #4
ldrb r2, [r2, r3]
cmp r2, #0
ldr r2, _02009E68 ; =_022A37B0
bicne r1, r1, #8
ldrb r2, [r2, r3]
cmp r2, #0
bicne r1, r1, #0x10
cmp r0, #0
ldrne r2, _02009E6C ; =0x04001000
ldrne r0, [r2]
bicne r0, r0, #0x1f00
orrne r0, r0, r1, lsl #8
strne r0, [r2]
bxne lr
mov r2, #0x4000000
ldr r0, [r2]
bic r0, r0, #0x1f00
orr r0, r0, r1, lsl #8
str r0, [r2]
bx lr
.align 2, 0
_02009E58: .word _022A37AC
_02009E5C: .word _022A37AD
_02009E60: .word _022A37AE
_02009E64: .word _022A37AF
_02009E68: .word _022A37B0
_02009E6C: .word 0x04001000
arm_func_end sub_02009DCC
arm_func_start sub_02009E70
sub_02009E70: ; 0x02009E70
stmdb sp!, {r3, lr}
mov r1, #0xa
mul r3, r0, r1
ldr r2, _02009F78 ; =_022A37B6
mov r1, #0
ldrb ip, [r2, r3]
mov r2, #0x20
cmp ip, #1
orreq r1, r1, #1
beq _02009EA0
cmp ip, #2
orreq r2, r2, #1
_02009EA0:
ldr ip, _02009F7C ; =_022A37B7
ldrb ip, [ip, r3]
cmp ip, #1
orreq r1, r1, #2
beq _02009EBC
cmp ip, #2
orreq r2, r2, #2
_02009EBC:
ldr ip, _02009F80 ; =_022A37B8
ldrb ip, [ip, r3]
cmp ip, #1
orreq r1, r1, #4
beq _02009ED8
cmp ip, #2
orreq r2, r2, #4
_02009ED8:
ldr ip, _02009F84 ; =_022A37B9
ldrb ip, [ip, r3]
cmp ip, #1
orreq r1, r1, #8
beq _02009EF4
cmp ip, #2
orreq r2, r2, #8
_02009EF4:
ldr ip, _02009F88 ; =_022A37BA
ldrb ip, [ip, r3]
cmp ip, #1
orreq r1, r1, #0x10
beq _02009F10
cmp ip, #2
orreq r2, r2, #0x10
_02009F10:
cmp r0, #0
bne _02009F48
ldr r0, _02009F8C ; =_022A37BE
ldr ip, _02009F90 ; =_022A37BC
ldrh lr, [r0, r3]
ldr r0, _02009F94 ; =0x04000050
and lr, lr, #0xf8
mov lr, lr, asr #3
str lr, [sp]
ldrh r3, [ip, r3]
and r3, r3, #0xf8
mov r3, r3, asr #3
bl G2x_SetBlendAlpha_
ldmia sp!, {r3, pc}
_02009F48:
ldr r0, _02009F8C ; =_022A37BE
ldr ip, _02009F90 ; =_022A37BC
ldrh lr, [r0, r3]
ldr r0, _02009F98 ; =0x04001050
and lr, lr, #0xf8
mov lr, lr, asr #3
str lr, [sp]
ldrh r3, [ip, r3]
and r3, r3, #0xf8
mov r3, r3, asr #3
bl G2x_SetBlendAlpha_
ldmia sp!, {r3, pc}
.align 2, 0
_02009F78: .word _022A37B6
_02009F7C: .word _022A37B7
_02009F80: .word _022A37B8
_02009F84: .word _022A37B9
_02009F88: .word _022A37BA
_02009F8C: .word _022A37BE
_02009F90: .word _022A37BC
_02009F94: .word 0x04000050
_02009F98: .word 0x04001050
arm_func_end sub_02009E70

136
asm/main_02009DCC.s Normal file
View File

@@ -0,0 +1,136 @@
.include "asm/macros.inc"
.include "main_02009DCC.inc"
.text
arm_func_start sub_02009DCC
sub_02009DCC: ; 0x02009DCC
ldr r1, _02009E58 ; =_022A37AC
add r3, r0, r0, lsl #2
ldrb r2, [r1, r3]
mov r1, #0x1f
cmp r2, #0
ldr r2, _02009E5C ; =_022A37AD
bicne r1, r1, #1
ldrb r2, [r2, r3]
cmp r2, #0
ldr r2, _02009E60 ; =_022A37AE
bicne r1, r1, #2
ldrb r2, [r2, r3]
cmp r2, #0
ldr r2, _02009E64 ; =_022A37AF
bicne r1, r1, #4
ldrb r2, [r2, r3]
cmp r2, #0
ldr r2, _02009E68 ; =_022A37B0
bicne r1, r1, #8
ldrb r2, [r2, r3]
cmp r2, #0
bicne r1, r1, #0x10
cmp r0, #0
ldrne r2, _02009E6C ; =0x04001000
ldrne r0, [r2]
bicne r0, r0, #0x1f00
orrne r0, r0, r1, lsl #8
strne r0, [r2]
bxne lr
mov r2, #0x4000000
ldr r0, [r2]
bic r0, r0, #0x1f00
orr r0, r0, r1, lsl #8
str r0, [r2]
bx lr
.align 2, 0
_02009E58: .word _022A37AC
_02009E5C: .word _022A37AD
_02009E60: .word _022A37AE
_02009E64: .word _022A37AF
_02009E68: .word _022A37B0
_02009E6C: .word 0x04001000
arm_func_end sub_02009DCC
arm_func_start sub_02009E70
sub_02009E70: ; 0x02009E70
stmdb sp!, {r3, lr}
mov r1, #0xa
mul r3, r0, r1
ldr r2, _02009F78 ; =_022A37B6
mov r1, #0
ldrb ip, [r2, r3]
mov r2, #0x20
cmp ip, #1
orreq r1, r1, #1
beq _02009EA0
cmp ip, #2
orreq r2, r2, #1
_02009EA0:
ldr ip, _02009F7C ; =_022A37B7
ldrb ip, [ip, r3]
cmp ip, #1
orreq r1, r1, #2
beq _02009EBC
cmp ip, #2
orreq r2, r2, #2
_02009EBC:
ldr ip, _02009F80 ; =_022A37B8
ldrb ip, [ip, r3]
cmp ip, #1
orreq r1, r1, #4
beq _02009ED8
cmp ip, #2
orreq r2, r2, #4
_02009ED8:
ldr ip, _02009F84 ; =_022A37B9
ldrb ip, [ip, r3]
cmp ip, #1
orreq r1, r1, #8
beq _02009EF4
cmp ip, #2
orreq r2, r2, #8
_02009EF4:
ldr ip, _02009F88 ; =_022A37BA
ldrb ip, [ip, r3]
cmp ip, #1
orreq r1, r1, #0x10
beq _02009F10
cmp ip, #2
orreq r2, r2, #0x10
_02009F10:
cmp r0, #0
bne _02009F48
ldr r0, _02009F8C ; =_022A37BE
ldr ip, _02009F90 ; =_022A37BC
ldrh lr, [r0, r3]
ldr r0, _02009F94 ; =0x04000050
and lr, lr, #0xf8
mov lr, lr, asr #3
str lr, [sp]
ldrh r3, [ip, r3]
and r3, r3, #0xf8
mov r3, r3, asr #3
bl G2x_SetBlendAlpha_
ldmia sp!, {r3, pc}
_02009F48:
ldr r0, _02009F8C ; =_022A37BE
ldr ip, _02009F90 ; =_022A37BC
ldrh lr, [r0, r3]
ldr r0, _02009F98 ; =0x04001050
and lr, lr, #0xf8
mov lr, lr, asr #3
str lr, [sp]
ldrh r3, [ip, r3]
and r3, r3, #0xf8
mov r3, r3, asr #3
bl G2x_SetBlendAlpha_
ldmia sp!, {r3, pc}
.align 2, 0
_02009F78: .word _022A37B6
_02009F7C: .word _022A37B7
_02009F80: .word _022A37B8
_02009F84: .word _022A37B9
_02009F88: .word _022A37BA
_02009F8C: .word _022A37BE
_02009F90: .word _022A37BC
_02009F94: .word 0x04000050
_02009F98: .word 0x04001050
arm_func_end sub_02009E70

12
include/main_02009D48.h Normal file
View File

@@ -0,0 +1,12 @@
#ifndef PMDSKY_MAIN_02009D48_H
#define PMDSKY_MAIN_02009D48_H
typedef struct
{
s32 val;
s32 _pad[3];
} unkStruct_02009D48;
void sub_02009D48(s32 arg0);
#endif //PMDSKY_MAIN_02009D48_H

View File

@@ -32,6 +32,8 @@ Static main
Object asm/main_020082C4.o
Object src/main_02008BD4.o
Object asm/main_02008BF4.o
Object src/main_02009D48.o
Object asm/main_02009DCC.o
Object src/main_02009F9C.o
Object asm/main_0200A124.o
Object src/main_0200BC54.o

30
src/main_02009D48.c Normal file
View File

@@ -0,0 +1,30 @@
#include "main_02009D48.h"
void sub_02009C54(s32);
void sub_02009C38(s32);
void sub_02009C70(s32);
void sub_02009C8C(s32);
void sub_020095AC(s32);
void sub_020095C8(s32);
void sub_020095E4(s32);
void sub_02009600(s32);
extern unkStruct_02009D48 _022A37CC[];
extern unkStruct_02009D48 _022A37D0[];
extern unkStruct_02009D48 _022A37D4[];
extern unkStruct_02009D48 _022A37D8[];
void sub_02009D48(s32 arg0)
{
if (arg0 == 0) {
sub_02009C54(_022A37CC[arg0].val);
sub_02009C38(_022A37D0[arg0].val);
sub_02009C70(_022A37D4[arg0].val);
sub_02009C8C(_022A37D8[arg0].val);
return;
}
sub_020095AC(_022A37CC[arg0].val);
sub_020095C8(_022A37D0[arg0].val);
sub_020095E4(_022A37D4[arg0].val);
sub_02009600(_022A37D8[arg0].val);
}