Skip to content

Commit 1c84535

Browse files
authored
Merge pull request #136 from Kelebek1/various
2E110
2 parents cee495b + dea1265 commit 1c84535

File tree

6 files changed

+136
-15
lines changed

6 files changed

+136
-15
lines changed

include/sections.h

+1
Original file line numberDiff line numberDiff line change
@@ -483,5 +483,6 @@ extern u32 fragment1_relocs_ROM_END[];
483483

484484
extern u8 _675FA0_ROM_START[];
485485
extern u8 _675FA0_ROM_END[];
486+
extern u8 _783760_ROM_START[];
486487

487488
#endif // _SECTIONS_H_

src/2E110.c

+126-7
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,134 @@
11
#include "2E110.h"
2+
#include "src/3FB0.h"
3+
#include "src/memory.h"
24

3-
#pragma GLOBAL_ASM("asm/us/nonmatchings/2E110/func_8002D510.s")
5+
static BinArchive* D_800AF740;
6+
static char** D_800AF744;
47

5-
#pragma GLOBAL_ASM("asm/us/nonmatchings/2E110/func_8002D5AC.s")
8+
void func_8002D510(void) {
9+
s32 i;
610

7-
#pragma GLOBAL_ASM("asm/us/nonmatchings/2E110/func_8002D5D4.s")
11+
D_800AF740 = func_800044F4(_783760_ROM_START, NULL, 1, 0);
12+
D_800AF744 = main_pool_alloc(0xA8, 0);
813

9-
#pragma GLOBAL_ASM("asm/us/nonmatchings/2E110/func_8002D600.s")
14+
for (i = 0; i < 42; i++) {
15+
D_800AF744[i] = NULL;
16+
}
17+
}
1018

11-
#pragma GLOBAL_ASM("asm/us/nonmatchings/2E110/func_8002D628.s")
19+
char* func_8002D5AC(s32 file_number) {
20+
return (char*)func_8000484C(D_800AF740, file_number);
21+
}
1222

13-
#pragma GLOBAL_ASM("asm/us/nonmatchings/2E110/func_8002D7C0.s")
23+
void func_8002D5D4(u32 arg0, s32 arg1) {
24+
if ((arg0 >= 0x14) && (arg0 < 0x2A)) {
25+
D_800AF744[arg0] = arg1;
26+
}
27+
}
1428

15-
#pragma GLOBAL_ASM("asm/us/nonmatchings/2E110/func_8002D80C.s")
29+
void func_8002D600(u32 arg0, s32 arg1) {
30+
if ((arg0 != 0) && (arg0 < 0xA)) {
31+
D_800AF744[arg0] = arg1;
32+
}
33+
}
34+
35+
void func_8002D628(char* arg0, u32 arg1, s8* arg2) {
36+
u32 i;
37+
s32 var_s2;
38+
s32 temp_v0;
39+
char sp58[12];
40+
s8* var_s4;
41+
char* sp54;
42+
u32 var_s3;
43+
44+
var_s2 = 0;
45+
var_s3 = 0;
46+
sp54 = var_s4;
47+
var_s4 = sp54;
48+
i = 0;
49+
50+
while (i < arg1 - 1u) {
51+
switch (var_s2) {
52+
case 0:
53+
temp_v0 = *arg2++;
54+
if (temp_v0 == 0) {
55+
goto end;
56+
}
57+
58+
if (temp_v0 == 0x23) {
59+
temp_v0 = *arg2++;
60+
61+
temp_v0 -= 0x30;
62+
temp_v0 = (*arg2++ + (temp_v0 * 10)) - 0x30;
63+
if ((temp_v0 > 0) && (temp_v0 < 0xA)) {
64+
sprintf(&sp58, "%d", D_800AF744[temp_v0]);
65+
var_s4 = &sp58;
66+
var_s2 = 1;
67+
continue;
68+
}
69+
70+
if ((temp_v0 >= 0x14) && (temp_v0 < 0x2A)) {
71+
if (D_800AF744[temp_v0] != 0) {
72+
var_s4 = D_800AF744[temp_v0];
73+
var_s2 = 1;
74+
}
75+
continue;
76+
}
77+
} else {
78+
*arg0++ = temp_v0;
79+
var_s3++;
80+
i++;
81+
}
82+
break;
83+
84+
case 1:
85+
temp_v0 = *var_s4++;
86+
if (temp_v0 == 0) {
87+
var_s2 = 0;
88+
} else {
89+
*arg0++ = temp_v0;
90+
var_s3++;
91+
i++;
92+
}
93+
break;
94+
}
95+
}
96+
97+
sp54 = var_s4;
98+
end:
99+
*arg0++ = 0;
100+
}
101+
102+
char* func_8002D7C0(char* arg0, s32 arg1, char** arg2, s32 file_number) {
103+
char* sp1C;
104+
char* sp18 = (u32)arg2 + (u32)arg2[file_number + 1];
105+
106+
if (arg0 == NULL) {
107+
sp1C = sp18;
108+
} else {
109+
sp1C = arg0;
110+
func_8002D628(arg0, arg1, sp18);
111+
}
112+
113+
return sp1C;
114+
}
115+
116+
s32 func_8002D80C(s8* arg0) {
117+
s32 last_chr = 0;
118+
s32 line_count = 0;
119+
s32 chr = *arg0++;
120+
121+
while (chr != 0) {
122+
last_chr = chr;
123+
if (chr == '\n') {
124+
line_count++;
125+
}
126+
chr = *arg0++;
127+
}
128+
129+
if (last_chr != '\n') {
130+
line_count++;
131+
}
132+
133+
return line_count;
134+
}

src/2E110.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
#include "global.h"
55

66
void func_8002D510(void);
7-
s32 func_8002D5AC(s32);
8-
void func_8002D600(s32, s16);
9-
char* func_8002D7C0(char* arg0, s32 arg1, s32 arg2, s32 arg3);
10-
s32 func_8002D80C(char*);
7+
char* func_8002D5AC(s32);
8+
void func_8002D600(u32, s32);
9+
char* func_8002D7C0(char* arg0, s32 arg1, char** arg2, s32 arg3);
10+
s32 func_8002D80C(s8*);
1111

1212

1313
#endif // _2E110_H_

src/fragments/2/fragment2.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ extern u32 D_87806670[];
1717
extern u32 D_878065B0[];
1818
extern u32 D_87806730[];
1919

20-
s32 D_87806330 = 0;
20+
char** D_87806330 = NULL;
2121

2222
static s32 D_8780FA20;
2323
static s32 D_8780FA24;

src/fragments/2/fragment2.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ typedef struct unk_func_87801684 {
88
/* 0x04 */ s16 unk_04;
99
} unk_func_87801684; // size = 0x8
1010

11-
extern s32 D_87806330;
11+
extern char** D_87806330;
1212
extern s16 D_87806338;
1313
extern u32* D_8780633C[];
1414
extern u32* D_8780634C[];

yamls/us/rom.yaml

+3-2
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@
419419
- [0x7CD40, .rodata, 26820]
420420
- [0x7CEC0, .rodata, 29BA0]
421421
- [0x7CFD0, .rodata, 2C1C0]
422-
- [0x7D030, rodata, rom_rodata_7D030]
422+
- [0x7D030, .rodata, 2E110]
423423
- [0x7D040, rodata, rom_rodata_7D040]
424424
- [0x7D0F0, .rodata, 30640]
425425
- [0x7D110, rodata, rom_rodata_7D110]
@@ -497,7 +497,8 @@
497497
- {vram: 0x800AC880, type: .bss, name: 20330}
498498
- {vram: 0x800AC890, type: bss, name: unk_bss_11}
499499
- {vram: 0x800AE520, type: .bss, name: 29BA0}
500-
- {vram: 0x800AF740, type: bss, name: unk_bss_7}
500+
- {vram: 0x800AF740, type: .bss, name: 2E110}
501+
- {vram: 0x800AF750, type: bss, name: unk_bss_7}
501502
- {vram: 0x800B32A0, type: .bss, name: 373A0}
502503
- {vram: 0x800FC7A0, type: .bss, name: 38BB0}
503504
- {vram: 0x800FC820, type: bss, name: unk_bss_12}

0 commit comments

Comments
 (0)