Skip to content

Commit

Permalink
Merge pull request pret#136 from Kelebek1/various
Browse files Browse the repository at this point in the history
2E110
  • Loading branch information
RevoSucks authored Sep 23, 2024
2 parents 49e92c6 + fd09ab2 commit 575ac1a
Show file tree
Hide file tree
Showing 6 changed files with 136 additions and 15 deletions.
1 change: 1 addition & 0 deletions include/sections.h
Original file line number Diff line number Diff line change
Expand Up @@ -483,5 +483,6 @@ extern u32 fragment1_relocs_ROM_END[];

extern u8 _675FA0_ROM_START[];
extern u8 _675FA0_ROM_END[];
extern u8 _783760_ROM_START[];

#endif // _SECTIONS_H_
133 changes: 126 additions & 7 deletions src/2E110.c
Original file line number Diff line number Diff line change
@@ -1,15 +1,134 @@
#include "2E110.h"
#include "src/3FB0.h"
#include "src/memory.h"

#pragma GLOBAL_ASM("asm/us/nonmatchings/2E110/func_8002D510.s")
static BinArchive* D_800AF740;
static char** D_800AF744;

#pragma GLOBAL_ASM("asm/us/nonmatchings/2E110/func_8002D5AC.s")
void func_8002D510(void) {
s32 i;

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

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

#pragma GLOBAL_ASM("asm/us/nonmatchings/2E110/func_8002D628.s")
char* func_8002D5AC(s32 file_number) {
return (char*)func_8000484C(D_800AF740, file_number);
}

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

#pragma GLOBAL_ASM("asm/us/nonmatchings/2E110/func_8002D80C.s")
void func_8002D600(u32 arg0, s32 arg1) {
if ((arg0 != 0) && (arg0 < 0xA)) {
D_800AF744[arg0] = arg1;
}
}

void func_8002D628(char* arg0, u32 arg1, s8* arg2) {
u32 i;
s32 var_s2;
s32 temp_v0;
char sp58[12];
s8* var_s4;
char* sp54;
u32 var_s3;

var_s2 = 0;
var_s3 = 0;
sp54 = var_s4;
var_s4 = sp54;
i = 0;

while (i < arg1 - 1u) {
switch (var_s2) {
case 0:
temp_v0 = *arg2++;
if (temp_v0 == 0) {
goto end;
}

if (temp_v0 == 0x23) {
temp_v0 = *arg2++;

temp_v0 -= 0x30;
temp_v0 = (*arg2++ + (temp_v0 * 10)) - 0x30;
if ((temp_v0 > 0) && (temp_v0 < 0xA)) {
sprintf(&sp58, "%d", D_800AF744[temp_v0]);
var_s4 = &sp58;
var_s2 = 1;
continue;
}

if ((temp_v0 >= 0x14) && (temp_v0 < 0x2A)) {
if (D_800AF744[temp_v0] != 0) {
var_s4 = D_800AF744[temp_v0];
var_s2 = 1;
}
continue;
}
} else {
*arg0++ = temp_v0;
var_s3++;
i++;
}
break;

case 1:
temp_v0 = *var_s4++;
if (temp_v0 == 0) {
var_s2 = 0;
} else {
*arg0++ = temp_v0;
var_s3++;
i++;
}
break;
}
}

sp54 = var_s4;
end:
*arg0++ = 0;
}

char* func_8002D7C0(char* arg0, s32 arg1, char** arg2, s32 file_number) {
char* sp1C;
char* sp18 = (u32)arg2 + (u32)arg2[file_number + 1];

if (arg0 == NULL) {
sp1C = sp18;
} else {
sp1C = arg0;
func_8002D628(arg0, arg1, sp18);
}

return sp1C;
}

s32 func_8002D80C(s8* arg0) {
s32 last_chr = 0;
s32 line_count = 0;
s32 chr = *arg0++;

while (chr != 0) {
last_chr = chr;
if (chr == '\n') {
line_count++;
}
chr = *arg0++;
}

if (last_chr != '\n') {
line_count++;
}

return line_count;
}
8 changes: 4 additions & 4 deletions src/2E110.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
#include "global.h"

void func_8002D510(void);
s32 func_8002D5AC(s32);
void func_8002D600(s32, s16);
char* func_8002D7C0(char* arg0, s32 arg1, s32 arg2, s32 arg3);
s32 func_8002D80C(char*);
char* func_8002D5AC(s32);
void func_8002D600(u32, s32);
char* func_8002D7C0(char* arg0, s32 arg1, char** arg2, s32 arg3);
s32 func_8002D80C(s8*);


#endif // _2E110_H_
2 changes: 1 addition & 1 deletion src/fragments/2/fragment2.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ extern u32 D_87806670[];
extern u32 D_878065B0[];
extern u32 D_87806730[];

s32 D_87806330 = 0;
char** D_87806330 = NULL;

static s32 D_8780FA20;
static s32 D_8780FA24;
Expand Down
2 changes: 1 addition & 1 deletion src/fragments/2/fragment2.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ typedef struct unk_func_87801684 {
/* 0x04 */ s16 unk_04;
} unk_func_87801684; // size = 0x8

extern s32 D_87806330;
extern char** D_87806330;
extern s16 D_87806338;
extern u32* D_8780633C[];
extern u32* D_8780634C[];
Expand Down
5 changes: 3 additions & 2 deletions yamls/us/rom.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,7 @@
- [0x7CD40, .rodata, 26820]
- [0x7CEC0, .rodata, 29BA0]
- [0x7CFD0, .rodata, 2C1C0]
- [0x7D030, rodata, rom_rodata_7D030]
- [0x7D030, .rodata, 2E110]
- [0x7D040, rodata, rom_rodata_7D040]
- [0x7D0F0, .rodata, 30640]
- [0x7D110, rodata, rom_rodata_7D110]
Expand Down Expand Up @@ -497,7 +497,8 @@
- {vram: 0x800AC880, type: .bss, name: 20330}
- {vram: 0x800AC890, type: bss, name: unk_bss_11}
- {vram: 0x800AE520, type: .bss, name: 29BA0}
- {vram: 0x800AF740, type: bss, name: unk_bss_7}
- {vram: 0x800AF740, type: .bss, name: 2E110}
- {vram: 0x800AF750, type: bss, name: unk_bss_7}
- {vram: 0x800B32A0, type: .bss, name: 373A0}
- {vram: 0x800FC7A0, type: .bss, name: 38BB0}
- {vram: 0x800FC820, type: bss, name: unk_bss_12}
Expand Down

0 comments on commit 575ac1a

Please sign in to comment.