Skip to content

Commit 13972f4

Browse files
authored
Start of bink sdk (#670)
* Tooling update pr * download_tool update pt2 * Beginning of Bink SDK * Start of bink * fix linker error, start porting seils code * fix linker error 2 * unlinking time * unlink 2 * Linked xOrdArray * relinked zFMV and iFMV, plus put xQuickCull together * hopefully build fix or something * maybe this fixed it * fix part 5 * fix pt6 * fix part7 * back to square 1 * what * FINALLY FIXED IT * LMFAO NO I DIDNT * please man, just build this time
1 parent f0c2f7e commit 13972f4

File tree

31 files changed

+3057
-262
lines changed

31 files changed

+3057
-262
lines changed

.vscode/c_cpp_properties.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
"${workspaceFolder}/include/inline",
1616
"${workspaceFolder}/src/dolphin/include",
1717
"${workspaceFolder}/src/dolphin/src",
18+
"${workspaceFolder}/src/bink/include",
19+
"${workspaceFolder}/src/bink/src",
1820
"${workspaceFolder}/include/rwsdk",
1921
"${workspaceFolder}/src/SB/Core/gc",
2022
"${workspaceFolder}/src/SB/Core/x",

.vscode/settings.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,18 @@
5555
"gxget.h": "c",
5656
"gxverify.h": "c",
5757
"card.h": "c",
58-
"__start.h": "c"
58+
"__start.h": "c",
59+
"binkread.h": "c",
60+
"ngcrad3d.h": "c",
61+
"osalarm.h": "c",
62+
"ostime.h": "c",
63+
"bink.h": "c",
64+
"binkngc.h": "c",
65+
"radbase.h": "c",
66+
"oscontext.h": "c",
67+
"radcb.h": "c",
68+
"popmal.h": "c",
69+
"osalloc.h": "c"
5970
},
6071
// Disable C/C++ IntelliSense, use clangd instead
6172
"C_Cpp.intelliSenseEngine": "default",

configure.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,8 @@
215215
"-i src/PowerPC_EABI_Support/include",
216216
"-i src/dolphin/include",
217217
"-i src/dolphin/src",
218+
"-i src/bink/include",
219+
"-i src/bink/src",
218220
"-i src",
219221
f"-i build/{config.version}/include",
220222
f"-DBUILD_VERSION={version_num}",
@@ -272,7 +274,7 @@
272274

273275
# Bink was compiled with ProDG
274276
cflags_bink = [
275-
"-O3",
277+
"-O2",
276278
"-mcpu=750",
277279
"-fno-exceptions",
278280
"-Wno-inline",
@@ -317,7 +319,6 @@
317319
'-pragma "cpp_extensions on"',
318320
"-inline off",
319321
"-gccinc",
320-
"-i include/bink",
321322
"-i include/inline",
322323
"-i include/rwsdk",
323324
"-i src/SB/Core/gc",
@@ -440,9 +441,9 @@ def MatchingFor(*versions):
440441
Object(NonMatching, "SB/Core/x/xMath3.cpp"),
441442
Object(NonMatching, "SB/Core/x/xMemMgr.cpp"),
442443
Object(NonMatching, "SB/Core/x/xModel.cpp"),
443-
Object(NonMatching, "SB/Core/x/xMorph.cpp"),
444+
Object(Matching, "SB/Core/x/xMorph.cpp"),
444445
Object(Equivalent, "SB/Core/x/xMovePoint.cpp"),
445-
Object(NonMatching, "SB/Core/x/xordarray.cpp"),
446+
Object(Matching, "SB/Core/x/xordarray.cpp"),
446447
Object(NonMatching, "SB/Core/x/xPad.cpp"),
447448
Object(NonMatching, "SB/Core/x/xPar.cpp"),
448449
Object(NonMatching, "SB/Core/x/xParCmd.cpp"),

include/bink/bink.h

Lines changed: 0 additions & 82 deletions
This file was deleted.

include/types.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,4 @@ typedef wchar_t wint_t;
9292

9393
#define UINT32_MAX 0xffffffff
9494

95-
#endif // !TYPES_H
95+
#endif // !TYPES_H

src/SB/Core/gc/iFMV.cpp

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212

1313
#include "zGlobals.h"
1414

15-
#include <types.h>
16-
#include <dolphin.h>
15+
// #include <dolphin.h>
1716

1817
// FIXME: These should be in a RW header somewhere
1918
extern GXRenderModeObj* _RwDlRenderMode;
@@ -97,7 +96,7 @@ void Decompress_frame(HBINK bnk, HRAD3DIMAGE rad_image, long flags)
9796
mask = mask >> 0x1f;
9897
mask = mask & 0x80000000;
9998
mask |= Bink_surface_type[result.unk_8];
100-
result.unk_0 = BinkCopyToBuffer(bnk, pixels, result.unk_c, bnk->unk_4, NULL, NULL, mask);
99+
result.unk_0 = BinkCopyToBuffer(bnk, pixels, result.unk_c, bnk->Height, NULL, NULL, mask);
101100
Unlock_RAD_3D_image(rad_image);
102101
}
103102
}
@@ -168,8 +167,8 @@ static void Show_frame()
168167
RwCameraClear(cam, &color, rwCAMERACLEARIMAGE);
169168

170169
RwCameraBeginUpdate(cam);
171-
Width_scale = 640 / Bink->unk_0;
172-
Height_scale = 480 / Bink->unk_4;
170+
Width_scale = 640 / Bink->Width;
171+
Height_scale = 480 / Bink->Height;
173172
xDrawLine2D_LocaliFMVVersion(0.0f, 0.0f, 0.0f, 0.0f);
174173
DrawFrame(0.0f, 0.0f, Width_scale, Height_scale);
175174
RwCameraEndUpdate(cam);
@@ -190,7 +189,7 @@ static void aramfree(void* mem)
190189
ARFree(&vol);
191190
}
192191

193-
static void PlayFMV(char* fname, u32 buttons, F32 time)
192+
static void PlayFMV(char* fname, size_t buttons, F32 time)
194193
{
195194
GXCullMode cull_mode;
196195
GXGetCullMode(&cull_mode);
@@ -242,9 +241,9 @@ static void PlayFMV(char* fname, u32 buttons, F32 time)
242241

243242
if (Bink != NULL)
244243
{
245-
if (Bink->unk_f0 != 0)
244+
if (Bink->Width != 0)
246245
{
247-
for (ip = 0; ip <= Bink->unk_f0; ++ip)
246+
for (ip = 0; ip <= Bink->Width; ++ip)
248247
{
249248
vol = gSnd.categoryVolFader[SND_CAT_CUTSCENE];
250249
vol = vol * vol;
@@ -253,7 +252,7 @@ static void PlayFMV(char* fname, u32 buttons, F32 time)
253252
}
254253
}
255254

256-
Image = Open_RAD_3D_image(NULL, Bink->unk_0, Bink->unk_4, fuckingSurfaceType);
255+
Image = Open_RAD_3D_image(NULL, Bink->Width, Bink->Height, fuckingSurfaceType);
257256
if (Image != NULL)
258257
{
259258
if (frame_num != 0)
@@ -280,19 +279,19 @@ static void PlayFMV(char* fname, u32 buttons, F32 time)
280279
}
281280
xPadUpdate(globals.currentActivePad, 0.0f);
282281

283-
F32 t = (float)Bink->unk_c / (Bink->unk_14 / Bink->unk_18);
282+
F32 t = (float)Bink->FrameNum / (Bink->FrameRate / Bink->FrameRateDiv);
284283
if (buttons && t >= time && globals.pad0->pressed & buttons)
285284
{
286285
frame_num = -1;
287286
goto superbreak;
288287
}
289-
} while (Bink->unk_c < Bink->unk_8 - 1);
288+
} while (Bink->FrameNum < Bink->Frames - 1);
290289
frame_num = -1;
291290
}
292291
superbreak:
293292
if (frame_num != -1)
294293
{
295-
frame_num = Bink->unk_c;
294+
frame_num = Bink->FrameNum;
296295
}
297296
Close_RAD_3D_image(Image);
298297
Image = NULL;

src/SB/Core/gc/iFMV.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include <types.h>
55
#include <bink.h>
6+
#include <rad3d.h>
67
#include <PowerPC_EABI_Support\MSL_C\MSL_Common\size_t.h>
78

89
#ifdef __cplusplus

src/SB/Core/gc/ngcrad3d.c

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include <dolphin/gx.h>
44
#include "iFMV.h"
5+
#include <bink/include/rad3d.h>
56

67
static int D3D_surface_type[5];
78
static unsigned int Pixel_info[5];
@@ -30,6 +31,22 @@ static void Setup_surface_array()
3031
Built_tables = 1;
3132
}
3233

34+
// TODO:
35+
// Defining this struct locally because i believe this isnt 100% right. Or if it is right why isnt this in the bink.h or other headers?
36+
// inestigate this
37+
38+
struct RAD3DIMAGE
39+
{
40+
int a;
41+
int b;
42+
unsigned int c;
43+
int d;
44+
int e;
45+
void* f;
46+
int g;
47+
int h;
48+
};
49+
3350
void Close_RAD_3D_image(struct RAD3DIMAGE* image)
3451
{
3552
if (image != 0)
@@ -43,8 +60,8 @@ void Close_RAD_3D_image(struct RAD3DIMAGE* image)
4360
}
4461
}
4562

46-
int Lock_RAD_3D_image(HRAD3DIMAGE rad_image, void* out_pixel_buffer, unsigned int* out_buffer_pitch,
47-
unsigned int* arg3)
63+
S32 Lock_RAD_3D_image(HRAD3DIMAGE rad_image, void* out_pixel_buffer, U32* out_buffer_pitch,
64+
U32* arg3)
4865
{
4966
if (rad_image == 0)
5067
{

src/SB/Core/x/xFX.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -686,9 +686,10 @@ void xFXStreakUpdate(U32 id, const xVec3* a, const xVec3* b)
686686
xFXStreak* s;
687687
}
688688

689-
U32 xFXStreakStart(F32 frequency, F32 alphaFadeRate, F32 alphaStart, U32 textureID, const iColor_tag* edge_a, const iColor_tag* edge_b, S32 taper)
689+
U32 xFXStreakStart(F32 frequency, F32 alphaFadeRate, F32 alphaStart, U32 textureID,
690+
const iColor_tag* edge_a, const iColor_tag* edge_b, S32 taper)
690691
{
691-
for (U32 i = 0; i < 10; i++)
692+
for (U32 i = 0; i < 10; i++)
692693
{
693694
if (sStreakList[i].flags == 0x0)
694695
{
@@ -742,7 +743,7 @@ U32 xFXStreakStart(F32 frequency, F32 alphaFadeRate, F32 alphaStart, U32 texture
742743
textureID = xStrHash("fx_streak1");
743744
}
744745

745-
sStreakList[i].texturePtr = (RwTexture*) xSTFindAsset(textureID, NULL);
746+
sStreakList[i].texturePtr = (RwTexture*)xSTFindAsset(textureID, NULL);
746747
if (sStreakList[i].texturePtr != NULL)
747748
{
748749
sStreakList[i].textureRasterPtr = RwTextureGetRaster(sStreakList[i].texturePtr);
@@ -751,7 +752,6 @@ U32 xFXStreakStart(F32 frequency, F32 alphaFadeRate, F32 alphaStart, U32 texture
751752
{
752753
return 0;
753754
}
754-
755755
}
756756
}
757757

0 commit comments

Comments
 (0)