Skip to content

Commit fdc8596

Browse files
authored
Merge pull request pret#214 from dplewis/gb_emu-1
Fragment 1 various functions
2 parents c900655 + 892894b commit fdc8596

File tree

16 files changed

+625
-79
lines changed

16 files changed

+625
-79
lines changed

include/global.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -468,19 +468,20 @@ typedef struct UnkInputStruct8000D738 {
468468
/* 0x04 */ u16 (*unk_04)[6][0x640];
469469
} UnkInputStruct8000D738; // size = 0x8
470470

471-
typedef struct UnkStruct800AA660 {
471+
typedef struct unk_D_800AA660 {
472472
/* 0x0000 */ OSThread thread;
473473
/* 0x01B0 */ char unk01B0[0x10];
474474
/* 0x01C0 */ OSMesgQueue queue1;
475-
/* 0x01D8 */ struct UnkStruct800AA660* unk_01D8;
475+
/* 0x01D8 */ struct unk_D_800AA660* unk_01D8;
476476
/* 0x01DC */ s32 unk_01DC;
477477
/* 0x01E0 */ char unk01E0[0x2000];
478478
/* 0x21E0 */ OSMesg mesg;
479479
/* 0x21E4 */ OSMesgQueue queue2;
480-
/* 0x21FC */ s32 unk_21FC;
481-
/* 0x2200 */ s32 unk_2200;
480+
/* 0x21FC */ u8* font1;
481+
/* 0x2200 */ u8* font2;
482482
/* 0x2204 */ UnkInputStruct8000D738 unk_2204;
483-
} UnkStruct800AA660; // size >= 0x220C
483+
/* 0x220C */ char unk220C[4];
484+
} unk_D_800AA660; // size = 0x2210
484485

485486
typedef struct unk_D_864027C0 {
486487
/* 0x00 */ f32 unk_00;

include/macros.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#define SCREEN_WIDTH 320
3333
#define SCREEN_HEIGHT 240
3434

35+
#define ALIGN2(val) (((u32)(val) + 0x1) & ~0x1)
3536
#define ALIGN4(val) (((val) + 0x3) & ~0x3)
3637
#define ALIGN8(val) (((val) + 0x7) & ~0x7)
3738
#define ALIGN16(val) (((val) + 0xFu) & ~0xFu)

include/sections.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,16 @@ extern u8 fragment1_TEXT_START[];
66
extern u8 fragment1_ROM_START[];
77
extern u8 fragment1_ROM_END[];
88
extern u8 fragment1_relocs_ROM_END[];
9+
extern u8 fragment1_yay0_0_ROM_START[];
10+
extern u8 fragment1_yay0_0_ROM_END[];
11+
extern u8 fragment1_yay0_1_ROM_START[];
12+
extern u8 fragment1_yay0_1_ROM_END[];
13+
extern u8 fragment1_yay0_2_ROM_START[];
14+
extern u8 fragment1_yay0_2_ROM_END[];
15+
extern u8 fragment1_yay0_3_ROM_START[];
16+
extern u8 fragment1_yay0_3_ROM_END[];
17+
extern u8 fragment1_yay0_4_ROM_START[];
18+
extern u8 fragment1_yay0_4_ROM_END[];
919

1020
// fragment 2
1121
extern u8 fragment2_TEXT_START[];

include/variables.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,14 @@ extern u32 D_304F120[];
924924
extern s32 D_800FC820;
925925
extern u8* D_800FF9C0;
926926

927+
extern OSViMode D_800795C0;
928+
extern u8 D_ADC80[];
929+
extern u8 D_F4130[];
930+
extern u8 D_F4920[];
931+
extern u8 D_F5450[];
932+
extern u8 D_FDE40[];
933+
extern u8 D_102BA0[];
934+
927935
typedef struct unk_70D3A0 {
928936
/* 0x00 */ f32 unk_00;
929937
/* 0x04 */ f32 unk_04;

linker_scripts/us/symbol_addrs_code.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1600,7 +1600,7 @@ func_81206FA0 = 0x81206FA0; // type:func
16001600
func_81207020 = 0x81207020; // type:func
16011601
func_81207078 = 0x81207078; // type:func
16021602
func_812070A0 = 0x812070A0; // type:func
1603-
func_812072B0 = 0x812072B0; // type:func
1603+
osGbSetNextBuffer = 0x812072B0; // type:func
16041604
func_81207330 = 0x81207330; // type:func
16051605
func_81207338 = 0x81207338; // type:func
16061606
func_81207348 = 0x81207348; // type:func

src/5580.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ void func_80004DB4(void) {
160160
}
161161

162162
void func_80004DBC(u32 arg0) {
163-
UnkStruct800AA660* var_s0 = D_800A62E0.unk_A10;
163+
unk_D_800AA660* var_s0 = D_800A62E0.unk_A10;
164164

165165
while (var_s0 != NULL) {
166166
if (D_800A62E0.unk_A38 == 0) {
@@ -200,7 +200,7 @@ s32 func_80004ED0(void) {
200200
}
201201

202202
void func_80004F08(void) {
203-
UnkStruct800AA660* var_s0 = D_800A62E0.unk_A10;
203+
unk_D_800AA660* var_s0 = D_800A62E0.unk_A10;
204204

205205
while (var_s0 != NULL) {
206206
if (var_s0->unk_01DC == 0) {
@@ -335,9 +335,9 @@ void func_800052B4(void) {
335335
osStartThread(&D_800A62E0.thread);
336336
}
337337

338-
void func_80005328(UnkStruct800AA660* arg0) {
339-
UnkStruct800AA660* var_v1;
340-
UnkStruct800AA660* var_a1;
338+
void func_80005328(unk_D_800AA660* arg0) {
339+
unk_D_800AA660* var_v1;
340+
unk_D_800AA660* var_a1;
341341

342342
if (D_800A62E0.unk_A10 == NULL) {
343343
D_800A62E0.unk_A10 = arg0;
@@ -354,9 +354,9 @@ void func_80005328(UnkStruct800AA660* arg0) {
354354
arg0->unk_01D8 = NULL;
355355
}
356356

357-
void func_80005370(UnkStruct800AA660* arg0) {
358-
UnkStruct800AA660** var_v0 = &D_800A62E0.unk_A10;
359-
UnkStruct800AA660* var_v1 = D_800A62E0.unk_A10;
357+
void func_80005370(unk_D_800AA660* arg0) {
358+
unk_D_800AA660** var_v0 = &D_800A62E0.unk_A10;
359+
unk_D_800AA660* var_v1 = D_800A62E0.unk_A10;
360360

361361
while (var_v1 != NULL) {
362362
if (var_v1 == arg0) {

src/5580.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ typedef struct unk_D_800A62E0 {
1818
/* 0x9B0 */ u8 stack[64];
1919
/* 0x9F0 */ OSMesgQueue queue;
2020
/* 0xA08 */ u64 time;
21-
/* 0xA10 */ UnkStruct800AA660* unk_A10;
21+
/* 0xA10 */ unk_D_800AA660* unk_A10;
2222
/* 0xA14 */ UnkStruct80001380* unk_A14;
2323
/* 0xA18 */ UnkStruct80001380* unk_A18;
2424
/* 0xA1C */ UnkStruct80001380* unk_A1C;
@@ -86,10 +86,10 @@ void func_80004CC0(UnkStruct80083CA0_2*, s32, s32);
8686
s32 func_80004CF4(UnkStruct80083CA0_2*);
8787
s32 func_80004D20(UnkStruct80083CA0_2*);
8888
void func_800052B4(void);
89-
void func_80005328(UnkStruct800AA660*);
89+
void func_80005328(unk_D_800AA660*);
9090
void func_80004980(UnkStruct80001380* arg0);
9191
void func_800049AC(UnkStruct80001380* arg0);
92-
void func_80005370(UnkStruct800AA660* arg0);
92+
void func_80005370(unk_D_800AA660* arg0);
9393
void func_800053B4(UnkStruct80001380* arg0, s32 arg1);
9494

9595

src/6BC0.h

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,20 @@
55

66
// image size in bits
77
typedef enum IMAGE_SIZE_BITS {
8-
IMAGE_SIZE_BITS_4b,
9-
IMAGE_SIZE_BITS_8b,
10-
IMAGE_SIZE_BITS_16b,
11-
IMAGE_SIZE_BITS_32b,
8+
IMAGE_SIZE_BITS_4b = 0,
9+
IMAGE_SIZE_BITS_8b = 1,
10+
IMAGE_SIZE_BITS_16b = 2,
11+
IMAGE_SIZE_BITS_32b = 3,
1212
} IMAGE_SIZE_BITS;
1313

14+
typedef enum IMAGE_FMT {
15+
IMAGE_FMT_RGBA = 0,
16+
IMAGE_FMT_YUV = 1,
17+
IMAGE_FMT_CI = 2,
18+
IMAGE_FMT_IA = 3,
19+
IMAGE_FMT_I = 4,
20+
} IMAGE_FMT;
21+
1422
typedef struct unk_D_80068BB0 {
1523
/* 0x00 */ u16 fmt;
1624
/* 0x02 */ u16 size;

src/E1C0.c

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,15 @@
77
#include "3FB0.h"
88
#include "5580.h"
99
#include "util.h"
10-
#include "src/gb_tower.h"
1110
#include "src/fragments/1/fragment1.h"
1211

13-
struct UnkStruct800AA664 {
14-
/* 0x0000 */ OSThread thread;
15-
char padding1B0[0x2030];
16-
};
17-
18-
extern UnkStruct800AA660* D_800AA660;
19-
extern struct UnkStruct800AA664* D_800AA664;
12+
extern unk_D_800AA660* D_800AA660;
13+
extern unk_D_800AA664* D_800AA664;
2014
extern char D_800AA668;
2115

2216
extern u8 D_81200000[];
2317

24-
void func_8000D5C0(void* unused) {
18+
void func_8000D5C0(UNUSED void* arg0) {
2519
void (*func)(void*) = Util_ConvertAddrToVirtAddr(&func_81206F38);
2620

2721
__osSetFpcCsr(0x01000C01);
@@ -37,15 +31,15 @@ void func_8000D5C0(void* unused) {
3731
}
3832
}
3933

40-
void func_8000D678(void* unused) {
34+
void func_8000D678(UNUSED void* arg0) {
4135
void (*func1)(void* func) = Util_ConvertAddrToVirtAddr(&func_81206D9C);
4236
void (*func2)(void* func) = Util_ConvertAddrToVirtAddr(&func_81206E64);
4337

4438
__osSetFpcCsr(0x01000C01);
4539
func_80004CC0(D_800AA660, 0, 1);
4640
func_80005328(D_800AA660);
4741
func1(D_800AA660);
48-
osStartThread(D_800AA664);
42+
osStartThread(&D_800AA664->thread);
4943

5044
while (1) {
5145
func_80004CF4(D_800AA660);
@@ -66,8 +60,8 @@ void func_8000D738(UnkInputStruct8000D738* arg0) {
6660
FRAGMENT_LOAD(fragment1);
6761
temp_v0 = ASSET_LOAD2(fonts, 1, 1);
6862

69-
D_800AA660->unk_21FC = func_8000484C(temp_v0, 0);
70-
D_800AA660->unk_2200 = func_8000484C(temp_v0, 1);
63+
D_800AA660->font1 = func_8000484C(temp_v0, 0);
64+
D_800AA660->font2 = func_8000484C(temp_v0, 1);
7165
D_800AA660->unk_2204 = *arg0;
7266
osCreateMesgQueue(&D_800AA660->queue2, &D_800AA660->mesg, 1);
7367
osCreateThread(&D_800AA664->thread, 10, func_8000D5C0, NULL, (u32)D_800AA664 + 0x21E0, 0x11);

src/E1C0.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33

44
#include "global.h"
55

6+
typedef struct unk_D_800AA664 {
7+
/* 0x0000 */ OSThread thread;
8+
/* 0x01B0 */ char unk01B0[0x2030];
9+
} unk_D_800AA664; // size = 0x21E0
10+
611
void func_8000D738(UnkInputStruct8000D738* arg0);
712
OSMesg* func_8000D8A8(void);
813
void func_8000D8DC(UnkInputStruct8000D738* arg0);

0 commit comments

Comments
 (0)