mirror of
https://github.com/pret/pmd-sky.git
synced 2026-08-26 04:39:28 -05:00
Decomped sub_02009D48
Decomped by @JesusArcasCarrera
This commit is contained in:
@@ -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
|
||||
|
||||
14
asm/include/main_02009DCC.inc
Normal file
14
asm/include/main_02009DCC.inc
Normal 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
|
||||
@@ -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
136
asm/main_02009DCC.s
Normal 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
12
include/main_02009D48.h
Normal 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
|
||||
2
main.lsf
2
main.lsf
@@ -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
30
src/main_02009D48.c
Normal 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);
|
||||
}
|
||||
Reference in New Issue
Block a user