Match unk_0201E0A4.c

This commit is contained in:
Nomura 2022-12-25 20:35:10 +01:00
parent 275b2a067f
commit bb27502e15
4 changed files with 86 additions and 158 deletions

View File

@ -1 +0,0 @@
.public sub_0201E0A4

View File

@ -1,156 +0,0 @@
.include "macros/function.inc"
.include "include/unk_0201E0A4.inc"
.text
thumb_func_start sub_0201E0A4
sub_0201E0A4: ; 0x0201E0A4
mov r2, #0
ldrsb r1, [r0, r2]
cmp r1, #0
beq _0201E0B4
_0201E0AC:
add r2, r2, #1
ldrsb r1, [r0, r2]
cmp r1, #0
bne _0201E0AC
_0201E0B4:
add r0, r2, #0
bx lr
thumb_func_end sub_0201E0A4
thumb_func_start sub_0201E0B8
sub_0201E0B8: ; 0x0201E0B8
push {r4, r5}
mov r4, #1
mov r3, #0
lsl r4, r4, #8
_0201E0C0:
ldrsb r5, [r0, r3]
strb r5, [r1, r3]
ldrsb r5, [r0, r3]
cmp r2, r5
beq _0201E0CE
cmp r5, #0
bne _0201E0EE
_0201E0CE:
mov r4, #0
strb r4, [r1, r3]
cmp r2, #0xd
bne _0201E0E6
add r1, r3, #1
ldrsb r1, [r0, r1]
cmp r1, #0xa
bne _0201E0E6
add r1, r3, #2
add r0, r0, r1
pop {r4, r5}
bx lr
_0201E0E6:
add r1, r3, #1
add r0, r0, r1
pop {r4, r5}
bx lr
_0201E0EE:
add r3, r3, #1
cmp r3, r4
blt _0201E0C0
mov r0, #0
pop {r4, r5}
bx lr
; .align 2, 0
thumb_func_end sub_0201E0B8
thumb_func_start sub_0201E0FC
sub_0201E0FC: ; 0x0201E0FC
push {r4, r5, r6, lr}
add r4, r0, #0
bl sub_0201E0A4
mov r5, #1
mov r6, #0
sub r3, r0, #1
bmi _0201E13A
sub r1, r6, #1
mov r0, #0xa
_0201E110:
ldrsb r2, [r4, r3]
cmp r2, #0x30
blt _0201E122
cmp r2, #0x39
bgt _0201E122
sub r2, #0x30
mul r2, r5
add r6, r6, r2
b _0201E134
_0201E122:
cmp r3, #0
bne _0201E12E
cmp r2, #0x2d
bne _0201E134
mul r6, r1
b _0201E134
_0201E12E:
mov r0, #0
mvn r0, r0
pop {r4, r5, r6, pc}
_0201E134:
mul r5, r0
sub r3, r3, #1
bpl _0201E110
_0201E13A:
add r0, r6, #0
pop {r4, r5, r6, pc}
; .align 2, 0
thumb_func_end sub_0201E0FC
thumb_func_start sub_0201E140
sub_0201E140: ; 0x0201E140
push {r3, r4, r5, lr}
mov r2, #0
add r4, r1, #0
add r5, r0, #0
add r1, r2, #0
_0201E14A:
lsl r0, r2, #2
str r1, [r5, r0]
add r0, r2, #1
lsl r0, r0, #0x18
lsr r2, r0, #0x18
cmp r2, #4
blo _0201E14A
add r0, r4, #0
bl sub_0201E0A4
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r2, _0201E178 ; =0x00000000
beq _0201E174
_0201E166:
ldrsb r0, [r4, r2]
strb r0, [r5, r2]
add r0, r2, #1
lsl r0, r0, #0x18
lsr r2, r0, #0x18
cmp r2, r1
blo _0201E166
_0201E174:
pop {r3, r4, r5, pc}
nop
_0201E178: .word 0x00000000
thumb_func_end sub_0201E140
thumb_func_start sub_0201E17C
sub_0201E17C: ; 0x0201E17C
ldr r1, _0201E18C ; =0x00000121
cmp r0, r1
bhs _0201E186
mov r0, #1
bx lr
_0201E186:
mov r0, #0
bx lr
nop
_0201E18C: .word 0x00000121
thumb_func_end sub_0201E17C

View File

@ -72,7 +72,7 @@ Static main
Object asm/unk_0201DBEC.o
Object asm/unk_0201DD00.o
Object asm/unk_0201E010.o
Object asm/unk_0201E0A4.o
Object src/unk_0201E0A4.o
Object asm/unk_0201E190.o
Object asm/unk_0201E3BC.o
Object asm/unk_0201E3D8.o

85
src/unk_0201E0A4.c Normal file
View File

@ -0,0 +1,85 @@
#include <nitro.h>
#include <string.h>
#include <nnsys.h>
#include "unk_0201E0A4.h"
int sub_0201E0A4 (char * param0)
{
int v0 = 0;
while (param0[v0] != 0) {
v0++;
}
return v0;
}
char * sub_0201E0B8 (char * param0, char * param1, char param2)
{
int v0;
for (v0 = 0; v0 < 256; v0++) {
param1[v0] = param0[v0];
if ((param0[v0] == param2) || (param0[v0] == 0)) {
param1[v0] = 0;
if ((param2 == 0xd) && (param0[v0 + 1] == 0xa)) {
return &param0[v0 + 2];
} else {
return &param0[v0 + 1];
}
}
}
return NULL;
}
int sub_0201E0FC (char * param0)
{
int v0, v1, v2, v3;
v0 = sub_0201E0A4(param0);
v2 = 1;
v3 = 0;
for (v1 = v0 - 1; v1 >= 0; v1--) {
if ((param0[v1] >= '0') && (param0[v1] <= '9')) {
v3 += v2 * (param0[v1] - '0');
} else {
if (v1 == 0) {
if (param0[v1] == '-') {
v3 *= -1;
}
} else {
return -1;
}
}
v2 *= 10;
}
return v3;
}
void sub_0201E140 (NNSG3dResName * param0, const char * param1)
{
u8 v0;
u8 v1;
for (v1 = 0; v1 < 4; v1++) {
param0->val[v1] = 0;
}
v0 = sub_0201E0A4((char *)param1);
for (v1 = 0; v1 < v0; v1++) {
param0->name[v1] = param1[v1];
}
}
BOOL sub_0201E17C (u16 param0)
{
return param0 < 0x121;
}