Skip to content

Commit a2a31d9

Browse files
committed
battle: func_800B7FDC
1 parent eb1e0c9 commit a2a31d9

7 files changed

Lines changed: 121 additions & 55 deletions

File tree

config/us.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ overlays:
5757
- [0x888, .rodata, battle2]
5858
- [0xDD4, .rodata, battle3]
5959
- [0x1158, c, battle]
60-
- [0x18268, c, battle1]
60+
- [0x17F6C, c, battle1]
6161
- [0x27B60, c, battle2]
6262
- [0x38A04, c, battle3]
6363
- [0x47A38, data]

include/game.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,12 +322,12 @@ extern u8 D_8009D684;
322322
extern u8 D_8009D686;
323323
extern u8 D_8009D8F8[];
324324
extern u32 D_8009D260;
325+
extern volatile s32 D_8009D268[];
325326
extern Unk8009D84C D_8009D84C[3];
326327

327328
// PSXSDK funcs
328329
SVECTOR* ApplyMatrixSV(MATRIX* m, SVECTOR* v0, SVECTOR* v1);
329330
MATRIX* RotMatrixYXZ(SVECTOR* r, MATRIX* m);
330-
void StopCallback(void);
331331
void SystemError(char c, long n);
332332

333333
s32 func_80014B70(void);

src/battle/battle.c

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1134,23 +1134,3 @@ INCLUDE_ASM("asm/us/battle/nonmatchings/battle", func_800B798C);
11341134
INCLUDE_ASM("asm/us/battle/nonmatchings/battle", func_800B79F0);
11351135

11361136
INCLUDE_ASM("asm/us/battle/nonmatchings/battle", func_800B7DB4);
1137-
1138-
static void func_800B7F6C(void) {
1139-
volatile s32 padding;
1140-
1141-
while (D_80062D99) {
1142-
func_800B7FB4();
1143-
}
1144-
D_80062D98 = 0;
1145-
}
1146-
1147-
void func_800B7FB4(void) { D_801518DC = func_80034B44(); }
1148-
1149-
INCLUDE_ASM("asm/us/battle/nonmatchings/battle", func_800B7FDC);
1150-
1151-
void func_800B8234(s32 arg0) {
1152-
if (arg0) {
1153-
func_800D0C80(D_801590CC);
1154-
D_801517BC = 0;
1155-
}
1156-
}

src/battle/battle.h

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,31 @@ typedef struct {
223223
/* 0x174 */ BattleModelSub D_80151A58[50];
224224
} BattleModel; // size:0xB9C
225225

226+
typedef struct {
227+
/* 0x0000 */ u_long* unk0[0x1C];
228+
/* 0x0070 */ u_long* unk70[0x1000];
229+
/* 0x4070 */ u_long* unk4070[2];
230+
/* 0x4078 */ u_long* unk4078[2];
231+
/* 0x4080 */ u_long* unk4080[9];
232+
/* 0x40A4 */ u_long* unk40A4[0x10];
233+
/* 0x40E4 */ u_long* unk40E4[2];
234+
/* 0x40EC */ u_long* unk40EC[2];
235+
} Unk801517C0; // size:0x40F4
236+
237+
typedef struct {
238+
/* 0x00 */ MATRIX m;
239+
/* 0x20 */ SVECTOR sv;
240+
/* 0x28 */ VECTOR v;
241+
} Unk800BB75C; // size:0x38
242+
243+
typedef struct {
244+
s32* unk0;
245+
s32 unk4;
246+
s16 unk8;
247+
s16 unkA;
248+
s32 unkC;
249+
} Unk801B0C98;
250+
226251
extern u16 D_800F5BBC[10][0x22];
227252
extern u8 D_800F5E66[3][0x34];
228253
extern Unk800F5F44 D_800F5F44;
@@ -232,15 +257,19 @@ extern s16 D_800F83AE[10][0x34]; // overlaps with D_800F83E0, D_800F83A8
232257
extern s16 D_800F83CC; // overlaps with D_800F83AE, sceneID
233258
extern Unk800F83E0 D_800F83E0[3];
234259
extern s8 D_800F90B4[][0x240];
260+
extern Unk800BB75C D_800FA63C;
261+
extern Unk801517C0* D_801517C0;
262+
extern short D_8015169C;
263+
extern BattleModel D_801518E4[3]; // len might be 10, not 3
264+
extern short D_80162080;
235265
extern Unk8016360C D_8016360C;
236266
extern u16 D_8016376A;
237-
extern BattleModel D_801518E4[3];
238267

239268
// battle.c
240269
int func_800BBEAC(void (*func)(void));
241270

242271
// battle2.c
243-
void* func_800D29D4(int*, int, int, void*);
272+
void* func_800D29D4(Unk801B0C98*, u_long*, int, void*);
244273
void func_800D3994(s32 arg0, s32 arg1, void* arg2);
245274
void func_800D5444(int, int, int, void (*func)(int));
246275
void func_800D55F4(int, int, int);

src/battle/battle1.c

Lines changed: 72 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,78 @@
11
//! PSYQ=3.3 CC1=2.6.3
22
#include "battle_private.h"
3+
#include <libetc.h>
4+
#include <libgpu.h>
35

46
static void func_800B85E0();
57
static void func_800BB75C(Unk800BB75C* arg0, MATRIX* m, s16* arg2, s16* arg3);
68
static void func_800BB804(void);
79
static void func_800BB864(void);
810

11+
static void func_800B7F6C(void) {
12+
volatile s32 padding;
13+
14+
while (D_80062D99) {
15+
func_800B7FB4();
16+
}
17+
D_80062D98 = 0;
18+
}
19+
20+
void func_800B7FB4(void) { D_801518DC = func_80034B44(); }
21+
22+
void func_800B7FDC(void) {
23+
s32 i;
24+
25+
func_800B7FB4();
26+
ClearOTagR((u_long*)D_801517C0->unk40A4, LEN(D_801517C0->unk40A4));
27+
ClearOTag((u_long*)D_801517C0->unk4070, LEN(D_801517C0->unk4070));
28+
ClearOTag((u_long*)D_801517C0->unk4078, LEN(D_801517C0->unk4078));
29+
ClearOTagR((u_long*)D_801517C0->unk70, LEN(D_801517C0->unk70));
30+
ClearOTagR((u_long*)D_801517C0->unk4080, LEN(D_801517C0->unk4080));
31+
ClearOTag((u_long*)D_801517C0->unk40E4, LEN(D_801517C0->unk40E4));
32+
ClearOTag((u_long*)D_801517C0->unk40EC, LEN(D_801517C0->unk40EC));
33+
D_80163C74 = D_800F8368 == 0 ? (DR_MODE*)0x80168000 : (DR_MODE*)0x80184000;
34+
func_800B8360(1);
35+
func_800C5CC0();
36+
func_800B8438();
37+
for (i = 0; i < 10; i++) {
38+
if (D_801518E4[i].D_8015190A == 0) {
39+
D_800F7DE4 = 0;
40+
break;
41+
}
42+
if (D_80162080 == 0) {
43+
D_800F7DE4 = 1;
44+
} else {
45+
D_800F7DE4 = 0;
46+
}
47+
}
48+
func_800A3ED0();
49+
func_800B8360(2);
50+
func_800DCFD4((u_long*)D_801517C0->unk40E4);
51+
if (D_800F9D94 == 0) {
52+
ResetGraph(1);
53+
D_800F9D94 = 1;
54+
}
55+
if (D_8016376A & 2) {
56+
func_800E16B8(D_801517C0->unk40E4, 0x10, 0x10, D_8009D268[0]);
57+
}
58+
D_800FA9B8 = VSync(1);
59+
BATTLE_FlushImageQueue();
60+
func_800B7FB4();
61+
D_80158D08 = func_800D8A88();
62+
SetGeomScreen(D_80162084);
63+
D_801516F4++;
64+
func_800B7F6C();
65+
func_800B950C();
66+
D_801516A0 = D_800F198C;
67+
}
68+
69+
void func_800B8234(s32 arg0) {
70+
if (arg0) {
71+
func_800D0C80(D_801590CC);
72+
D_801517BC = 0;
73+
}
74+
}
75+
976
static void func_800B8268(void) {
1077
s32 i;
1178
u8* var_a1;
@@ -429,15 +496,14 @@ INCLUDE_ASM("asm/us/battle/nonmatchings/battle1", func_800C4D10);
429496

430497
INCLUDE_ASM("asm/us/battle/nonmatchings/battle1", func_800C4DC8);
431498

432-
void* func_800C5040(u8, u8, u8, s32, u8*);
433-
extern u8* D_801517C0;
499+
void* func_800C5040(u8, u8, u8, s32, u_long*);
434500

435-
void* func_800C4FC8(u8 arg0, u8 arg1, u8 arg2) {
436-
return func_800C5040(arg0, arg1, arg2, 1, D_801517C0 + 0x4084);
501+
void func_800C4FC8(u8 arg0, u8 arg1, u8 arg2) {
502+
func_800C5040(arg0, arg1, arg2, 1, (u_long*)&D_801517C0->unk4080[1]);
437503
}
438504

439-
void* func_800C5004(u8 arg0, u8 arg1, u8 arg2) {
440-
return func_800C5040(arg0, arg1, arg2, 2, D_801517C0 + 0x40EC);
505+
void func_800C5004(u8 arg0, u8 arg1, u8 arg2) {
506+
func_800C5040(arg0, arg1, arg2, 2, (u_long*)&D_801517C0->unk40EC);
441507
}
442508

443509
INCLUDE_ASM("asm/us/battle/nonmatchings/battle1", func_800C5040);

src/battle/battle_private.h

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -168,12 +168,6 @@ typedef struct {
168168
s32 D_80151270;
169169
} Unk80151200; // size:0x74
170170

171-
typedef struct {
172-
/* 0x00 */ MATRIX m;
173-
/* 0x20 */ SVECTOR sv;
174-
/* 0x28 */ VECTOR v;
175-
} Unk800BB75C; // size:0x38
176-
177171
typedef struct {
178172
s32 unk0;
179173
s32 unk4;
@@ -197,6 +191,7 @@ extern s32 (*D_800EFEA0[])(s16, u8);
197191
extern Unk800F01DC* D_800F01DC;
198192
extern s32 D_800F01E0;
199193
extern s32 D_800F01E4;
194+
extern u16 D_800F198C;
200195
extern s32 D_800F199C;
201196
extern u8 D_800F19A4;
202197
extern s8 D_800F1E4F;
@@ -244,6 +239,7 @@ extern u8 D_800F5764;
244239
extern u8 D_800F5774;
245240
extern Unk800F57D0* D_800F57D0;
246241
extern Unk800AF470 D_800F5BB8[];
242+
extern s8 D_800F7DE4;
247243
extern s32 D_800F8368;
248244
extern s16 D_800F8370;
249245
extern s32* D_800F839C; // CD offset?
@@ -256,6 +252,7 @@ extern s32 D_800F9144;
256252
extern s8 D_800F914E;
257253
extern u8 D_800F99E8;
258254
extern s32 D_800F99E4;
255+
extern u8 D_800F9D94;
259256
extern u8 D_800F9D98;
260257
extern u8 D_800F9D9C;
261258
extern u16 D_800F9DA4;
@@ -265,6 +262,7 @@ extern u16 D_800FA6B8;
265262
extern u8 D_800FA6D4;
266263
extern Unk800FA6D8 D_800FA6D8[];
267264
extern MATRIX D_800FA958;
265+
extern s32 D_800FA9B8;
268266
extern s16 D_800FA9C4;
269267
extern s8 D_800FA9E8;
270268
extern u8 D_800FAFDC;
@@ -277,12 +275,14 @@ extern u8 D_801031F0;
277275
extern Unk80151200 D_80151200[3];
278276
extern u16 D_80151694;
279277
extern s16 D_8015169C;
278+
extern u16 D_801516A0;
279+
extern u8 D_801516F4;
280280
extern u16 D_801516F8;
281281
extern s16 D_801516FC[][4]; // most likely a struct
282282
extern s16 D_80151774;
283283
extern u8 D_801517BC;
284-
extern u8* D_801517C0;
285284
extern s16 D_80158D00;
285+
extern s32 D_80158D08;
286286
extern u8 D_801518DC;
287287
extern s32 D_800F9780[];
288288
extern u8 D_80153BDD;
@@ -293,6 +293,8 @@ extern s16 D_801590D4;
293293
extern u8 D_801590D8;
294294
extern s8 D_801590DC;
295295
extern u8 D_801590E0;
296+
extern s16 D_80162080;
297+
extern s16 D_80162084;
296298
extern s8 D_80162094;
297299
extern Unk801620AC D_801620AC[10];
298300
extern Unk801621F0 D_801621F0[60];
@@ -324,6 +326,7 @@ void func_800B5CD4(s32);
324326
void func_800B5D38(s32);
325327
void func_800B6B98(s32, s32);
326328
void func_800B7FB4(void);
329+
void func_800B8438(void);
327330
void func_800BA40C();
328331
void func_800BA4C8();
329332
void func_800BB9B8(s32);
@@ -334,7 +337,9 @@ void func_800D0C80(u8 arg0);
334337
void func_800D2980(u_long* addr, s16 imgXY, s16 clutX, s16 clutY);
335338
void func_800D3BF0();
336339
void func_800D8A78(s8);
340+
int func_800D8A88(void);
337341
void func_800D9E0C(s32, s32, s32);
342+
void func_800DCFD4(u_long*);
338343
void func_800DDFEC(void);
339344
void func_800E15D8(void);
340345
void func_800E5814(void);

src/magic/barrier.c

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,6 @@ typedef struct BarrierData {
1414
char pad1[0x6];
1515
} BarrierData;
1616

17-
typedef struct {
18-
s32* unk0;
19-
s32 unk4;
20-
s16 unk8;
21-
s16 unkA;
22-
s32 unkC;
23-
} Unk801B0C98;
24-
25-
extern MATRIX D_800FA63C;
26-
27-
extern short D_8015169C;
28-
extern int D_801517C0;
29-
extern short D_80162080;
30-
3117
extern BarrierData D_80162978[];
3218

3319
static s32 D_801B0B68[] = { // this seems to be a header+3D model
@@ -89,14 +75,14 @@ static void func_801B0020(void) {
8975
matrix->t[1] += data->pos.vy;
9076
matrix->t[2] += data->pos.vz;
9177

92-
CompMatrix(&D_800FA63C, matrix, matrix);
78+
CompMatrix(&D_800FA63C.m, matrix, matrix);
9379
SetRotMatrix(matrix);
9480
SetTransMatrix(matrix);
9581

9682
D_801B0C98.unk4 = var_s3 | 0x80;
9783
D_801B0C98.unkA = var_s4;
9884
D_801D0CC4 =
99-
func_800D29D4((int*)&D_801B0C98, D_801517C0 + 0x70, 12, D_801D0CC4);
85+
func_800D29D4(&D_801B0C98, (u_long*)D_801517C0->unk70, 12, D_801D0CC4);
10086

10187
if (D_80062D98 == 0) {
10288
data->unk2++;
@@ -144,14 +130,14 @@ static void func_801B0220(void) {
144130
matrix1->t[0] += data->pos.vx;
145131
matrix1->t[1] += data->pos.vy;
146132
matrix1->t[2] += data->pos.vz;
147-
CompMatrix(&D_800FA63C, matrix1, matrix1);
133+
CompMatrix(&D_800FA63C.m, matrix1, matrix1);
148134
SetRotMatrix(matrix1);
149135
SetTransMatrix(matrix1);
150136

151137
D_801B0CB0.unk4 = var_s5 | 0x80;
152138
D_801B0CB0.unkA = var_s6;
153139
D_801D0CC4 =
154-
func_800D29D4((int*)&D_801B0CB0, D_801517C0 + 0x70, 12, D_801D0CC4);
140+
func_800D29D4(&D_801B0CB0, (u_long*)D_801517C0->unk70, 12, D_801D0CC4);
155141

156142
if (D_80062D98 == 0) {
157143
data->unk2++;

0 commit comments

Comments
 (0)