Set names for savebuffer and ortho functions

This commit is contained in:
Ryan Dwyer 2025-02-04 15:55:21 +10:00
parent d63fd26f9d
commit 11a00f6cef
24 changed files with 346 additions and 317 deletions

View File

@ -1289,7 +1289,7 @@ Gfx *am_render(Gfx *gdl)
&g_AmMenus[g_AmIndex].dsty);
}
gdl = func0f0d479c(gdl);
gdl = ortho_begin(gdl);
colours = gfx_allocate_colours(2);
vertices = gfx_allocate_vertices(8);
@ -1369,7 +1369,7 @@ Gfx *am_render(Gfx *gdl)
gSPTri4(gdl++, 0, 4, 7, 7, 3, 0, 0, 1, 5, 5, 4, 0);
gSPTri4(gdl++, 1, 2, 6, 6, 5, 1, 6, 2, 3, 3, 7, 6);
gdl = func0f0d49c8(gdl);
gdl = ortho_end(gdl);
// Draw slots
for (column = 0; column < 3; column++) {

View File

@ -1739,7 +1739,7 @@ Gfx *bview_draw_eyespy_metrics(Gfx *gdl)
yoffset = 0;
}
gdl = func0f0d479c(gdl);
gdl = ortho_begin(gdl);
gSPClearGeometryMode(gdl++, G_CULL_BOTH);
gSPSetGeometryMode(gdl++, G_SHADE | G_SHADING_SMOOTH);
@ -1879,7 +1879,7 @@ Gfx *bview_draw_eyespy_metrics(Gfx *gdl)
}
}
gdl = func0f0d49c8(gdl);
gdl = ortho_end(gdl);
}
return gdl;

View File

@ -103,7 +103,7 @@ void bossfile_load(void)
if (fileid == 0) {
failed = true;
} else {
savebuffer_clear(&buffer);
savebuffer_reset(&buffer);
if (pak_read_body_at_guid(SAVEDEVICE_GAMEPAK, fileid, buffer.bytes, 0) != 0) {
failed = true;
@ -142,7 +142,7 @@ void bossfile_load(void)
g_AltTitleUnlocked = savebuffer_read_bits(&buffer, 1);
g_AltTitleEnabled = savebuffer_read_bits(&buffer, 1);
func0f0d54c4(&buffer);
savebuffer_print(&buffer);
}
if (failed) {
@ -160,35 +160,35 @@ void bossfile_save(void)
s32 i;
s32 fileid;
savebuffer_clear(&buffer);
savebuffer_reset(&buffer);
guid.fileid = g_Vars.bossfileid;
guid.deviceserial = g_Vars.bossdeviceserial;
savebuffer_write_guid(&buffer, &guid);
savebuffer_or(&buffer, g_BossFile.unk89, 1);
savebuffer_or(&buffer, g_Vars.language, 4);
savebuffer_write_bits(&buffer, g_BossFile.unk89, 1);
savebuffer_write_bits(&buffer, g_Vars.language, 4);
for (i = 0; i < ARRAYCOUNT(g_BossFile.teamnames); i++) {
func0f0d55a4(&buffer, g_BossFile.teamnames[i]);
savebuffer_write_string(&buffer, g_BossFile.teamnames[i]);
}
if (g_BossFile.tracknum == -1) {
savebuffer_or(&buffer, 0xff, 8);
savebuffer_write_bits(&buffer, 0xff, 8);
} else {
savebuffer_or(&buffer, g_BossFile.tracknum, 8);
savebuffer_write_bits(&buffer, g_BossFile.tracknum, 8);
}
for (i = 0; i < ARRAYCOUNT(g_BossFile.multipletracknums); i++) {
savebuffer_or(&buffer, g_BossFile.multipletracknums[i], 8);
savebuffer_write_bits(&buffer, g_BossFile.multipletracknums[i], 8);
}
savebuffer_or(&buffer, g_BossFile.usingmultipletunes, 1);
savebuffer_or(&buffer, g_AltTitleUnlocked, 1);
savebuffer_or(&buffer, g_AltTitleEnabled, 1);
savebuffer_write_bits(&buffer, g_BossFile.usingmultipletunes, 1);
savebuffer_write_bits(&buffer, g_AltTitleUnlocked, 1);
savebuffer_write_bits(&buffer, g_AltTitleEnabled, 1);
func0f0d54c4(&buffer);
savebuffer_print(&buffer);
fileid = bossfile_find_file_id();

View File

@ -1845,7 +1845,7 @@ Gfx *credits_draw(Gfx *gdl)
gdl = credits_draw_particles(gdl);
if (g_CreditsData->slidesenabled) {
gdl = credits_draw_slide(func0f0d479c(gdl));
gdl = credits_draw_slide(ortho_begin(gdl));
}
if (!g_CreditsData->slidesenabled) {

View File

@ -198,7 +198,7 @@ void filemgr_get_select_name(char *buffer, struct filelistfile *file, u32 filety
switch (filetype) {
case FILETYPE_GAME:
case FILETYPE_MPSETUP:
func0f0d564c(file->name, tmpbuffer1, false);
savebuffer_bitstring_to_cstring(file->name, tmpbuffer1, false);
break;
case FILETYPE_MPPLAYER:
// MP Player filenames have the play duration appended to the name
@ -831,7 +831,7 @@ bool filemgr_attempt_operation(s32 device, bool closeonsuccess)
case FILEOP_WRITE_MPPLAYER:
newfileid = 0;
#if VERSION >= VERSION_NTSC_1_0
func0f0d5690(g_Menus[g_MpPlayerNum].fm.unke44, g_Menus[g_MpPlayerNum].fm.filename);
savebuffer_cstring_to_bitstring(g_Menus[g_MpPlayerNum].fm.unke44, g_Menus[g_MpPlayerNum].fm.filename);
#endif
errno = pak_save_at_guid(device,
g_Menus[g_MpPlayerNum].fm.fileid,
@ -1293,7 +1293,7 @@ void filemgr_get_file_name(char *dst, struct filelistfile *file)
switch (g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->filetype) {
case FILETYPE_GAME:
case FILETYPE_MPSETUP:
func0f0d564c(file->name, localbuffer, false);
savebuffer_bitstring_to_cstring(file->name, localbuffer, false);
break;
case FILETYPE_MPPLAYER:
mpplayerfile_get_overview(file->name, localbuffer, &playtime);

View File

@ -281,7 +281,7 @@ s32 gamefile_load(s32 device)
p2index = g_Vars.coopplayernum >= 0 || g_Vars.antiplayernum >= 0 ? 1 : 5;
if (device >= 0) {
savebuffer_clear(&buffer);
savebuffer_reset(&buffer);
ret = pak_read_body_at_guid(device, g_GameFileGuid.fileid, buffer.bytes, 0);
g_FilemgrLastPakError = ret;
@ -360,7 +360,7 @@ s32 gamefile_load(s32 device)
}
#endif
func0f0d54c4(&buffer);
savebuffer_print(&buffer);
gamefile_apply_options(&g_GameFile);
return 0;
@ -462,57 +462,57 @@ s32 gamefile_save(s32 device, s32 fileid, u16 deviceserial)
#endif
if (device >= 0) {
savebuffer_clear(&buffer);
func0f0d55a4(&buffer, g_GameFile.name);
savebuffer_reset(&buffer);
savebuffer_write_string(&buffer, g_GameFile.name);
savebuffer_or(&buffer, g_GameFile.thumbnail, 5);
savebuffer_or(&buffer, g_GameFile.totaltime, 32);
savebuffer_or(&buffer, g_GameFile.autodifficulty, 2);
savebuffer_or(&buffer, g_GameFile.autostageindex, 5);
savebuffer_write_bits(&buffer, g_GameFile.thumbnail, 5);
savebuffer_write_bits(&buffer, g_GameFile.totaltime, 32);
savebuffer_write_bits(&buffer, g_GameFile.autodifficulty, 2);
savebuffer_write_bits(&buffer, g_GameFile.autostageindex, 5);
value = VOLUME(g_SfxVolume) >> 7;
savebuffer_or(&buffer, value >> 2, 6);
savebuffer_write_bits(&buffer, value >> 2, 6);
value = options_get_music_volume() >> 7;
savebuffer_or(&buffer, value >> 2, 6);
savebuffer_write_bits(&buffer, value >> 2, 6);
value = g_SoundMode;
savebuffer_or(&buffer, value, 2);
savebuffer_write_bits(&buffer, value, 2);
savebuffer_or(&buffer, options_get_control_mode(p1index), 3);
savebuffer_or(&buffer, options_get_control_mode(p2index), 3);
savebuffer_write_bits(&buffer, options_get_control_mode(p1index), 3);
savebuffer_write_bits(&buffer, options_get_control_mode(p2index), 3);
for (i = 0; i < ARRAYCOUNT(g_GameFile.flags); i++) {
savebuffer_or(&buffer, g_GameFile.flags[i], 8);
savebuffer_write_bits(&buffer, g_GameFile.flags[i], 8);
}
savebuffer_or(&buffer, g_GameFile.unk1e, 16);
savebuffer_write_bits(&buffer, g_GameFile.unk1e, 16);
for (i = 0; i < ARRAYCOUNT(g_GameFile.besttimes); i++) {
for (j = 0; j < ARRAYCOUNT(g_GameFile.besttimes[i]); j++) {
savebuffer_or(&buffer, g_GameFile.besttimes[i][j], 12);
savebuffer_write_bits(&buffer, g_GameFile.besttimes[i][j], 12);
}
}
for (i = 0; i < ARRAYCOUNT(g_MpChallenges); i++) {
for (j = 1; j < MAX_PLAYERS + 1; j++) {
savebuffer_or(&buffer, challenge_is_completed_by_any_player_with_num_players(i, j), 1);
savebuffer_write_bits(&buffer, challenge_is_completed_by_any_player_with_num_players(i, j), 1);
}
}
for (i = 0; i < ARRAYCOUNT(g_GameFile.coopcompletions); i++) {
savebuffer_or(&buffer, g_GameFile.coopcompletions[i], NUM_SOLOSTAGES);
savebuffer_write_bits(&buffer, g_GameFile.coopcompletions[i], NUM_SOLOSTAGES);
}
for (i = 0; i < ARRAYCOUNT(g_GameFile.firingrangescores); i++) {
savebuffer_or(&buffer, g_GameFile.firingrangescores[i], i == 8 ? 2 : 8);
savebuffer_write_bits(&buffer, g_GameFile.firingrangescores[i], i == 8 ? 2 : 8);
}
for (i = 0; i < 4; i++) {
savebuffer_or(&buffer, g_GameFile.weaponsfound[i], 8);
savebuffer_write_bits(&buffer, g_GameFile.weaponsfound[i], 8);
}
func0f0d54c4(&buffer);
savebuffer_print(&buffer);
ret = pak_save_at_guid(device, fileid, PAKFILETYPE_GAME, buffer.bytes, &newfileid, 0);
g_FilemgrLastPakError = ret;
@ -534,7 +534,7 @@ void gamefile_get_overview(char *arg0, char *name, u8 *stage, u8 *difficulty, u3
{
struct savebuffer buffer;
func0f0d5484(&buffer, arg0, 15);
savebuffer_prepare_string(&buffer, arg0, 15);
savebuffer_read_string(&buffer, name, false);
*stage = savebuffer_read_bits(&buffer, 5);

View File

@ -323,14 +323,14 @@ Gfx *hudmsg_render_box(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, f32 bgopacity,
f20 *= (f0 - 0.5f) + (f0 - 0.5f);
}
gdl = func0f0d479c(gdl);
gdl = ortho_begin(gdl);
gdl = menugfx_draw_filled_rect(gdl, x1, y1, x2, y1 + 1, bordercolour, bordercolour);
gdl = menugfx_draw_filled_rect(gdl, x1, y2, x2, y2 + 1, bordercolour, bordercolour);
gdl = menugfx_draw_filled_rect(gdl, x1, y1 + 1, x1 + 1, y2, bordercolour, bordercolour);
gdl = menugfx_draw_filled_rect(gdl, x2, y1, x2 + 1, y2 + 1, bordercolour, bordercolour);
gdl = func0f0d49c8(gdl);
gdl = ortho_end(gdl);
if (textopacity > 0.0f) {
f32 width = (x1 + x2) * 0.5f;

View File

@ -990,7 +990,7 @@ Gfx *lv_render(Gfx *gdl)
gSPSegment(gdl++, SPSEGMENT_PHYSICAL, 0x00000000);
#if VERSION >= VERSION_NTSC_1_0
func0f0d5a7c();
ortho_reset();
#endif
if (g_Vars.stagenum == STAGE_TITLE

View File

@ -2180,7 +2180,7 @@ Gfx *menu_render_model(Gfx *gdl, struct menumodel *menumodel, s32 modeltype)
if (modeltype < MENUMODELTYPE_3) {
if (modeltype != MENUMODELTYPE_DEFAULT) {
gdl = func0f0d49c8(gdl);
gdl = ortho_end(gdl);
gSPMatrix(gdl++, osVirtualToPhysical(cam_get_perspective_mtxl()), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
} else {
f32 aspect = (f32) (g_MenuScissorX2 - g_MenuScissorX1) / (f32) (g_MenuScissorY2 - g_MenuScissorY1);
@ -2190,7 +2190,7 @@ Gfx *menu_render_model(Gfx *gdl, struct menumodel *menumodel, s32 modeltype)
main_override_variable("mzn", &znear);
main_override_variable("mzf", &zfar);
gdl = func0f0d49c8(gdl);
gdl = ortho_end(gdl);
vi_set_view_position(g_MenuScissorX1 * g_UiScaleX, g_MenuScissorY1);
vi_set_fov_aspect_and_size(g_Vars.currentplayer->fovy, aspect, (g_MenuScissorX2 - g_MenuScissorX1) * g_UiScaleX, g_MenuScissorY2 - g_MenuScissorY1);
@ -2304,8 +2304,8 @@ Gfx *menu_render_model(Gfx *gdl, struct menumodel *menumodel, s32 modeltype)
cam0f0b4d04(&pos, screenpos);
g_MenuProjectFromX = ((s32)screenpos[0] - vi_get_width() / 2) / g_UiScaleX;
g_MenuProjectFromY = (s32)screenpos[1] - vi_get_height() / 2;
g_HolorayProjectFromX = ((s32)screenpos[0] - vi_get_width() / 2) / g_UiScaleX;
g_HolorayProjectFromY = (s32)screenpos[1] - vi_get_height() / 2;
}
}
}
@ -2337,7 +2337,7 @@ Gfx *menu_render_model(Gfx *gdl, struct menumodel *menumodel, s32 modeltype)
mtx00016784();
if (modeltype < MENUMODELTYPE_3) {
gdl = func0f0d479c(gdl);
gdl = ortho_begin(gdl);
}
gDPPipeSync(gdl++);
@ -2547,8 +2547,8 @@ Gfx *dialog_render(Gfx *gdl, struct menudialog *dialog, struct menu *menu, bool
colour5 = (colour5 & 0xffffff00) | 0x3f;
}
var8009de90 = -1000;
var8009de94 = 1000;
g_HolorayMinY = -1000;
g_HolorayMaxY = 1000;
if (dialog->definition->flags & MENUDIALOGFLAG_DISABLETITLEBAR) {
bgy1 += LINEHEIGHT;
@ -2558,14 +2558,14 @@ Gfx *dialog_render(Gfx *gdl, struct menudialog *dialog, struct menu *menu, bool
// Each surface is rendered a second time with the colours swapped.
// The order is top, right, bottom, left.
if (g_MenuData.root != MENUROOT_MPSETUP && (g_MenuData.root != MENUROOT_MPPAUSE || g_Vars.normmplayerisrunning)) {
g_TextHoloRayGdl = menugfx_draw_plane(g_TextHoloRayGdl, bgx1, bgy1, bgx2, bgy1, colour4, colour5, MENUPLANE_00);
g_TextHoloRayGdl = menugfx_draw_plane(g_TextHoloRayGdl, bgx2, bgy1, bgx2, bgy2, colour5, colour4, MENUPLANE_00);
g_TextHoloRayGdl = menugfx_draw_plane(g_TextHoloRayGdl, bgx2, bgy2, bgx1, bgy2, colour4, colour5, MENUPLANE_00);
g_TextHoloRayGdl = menugfx_draw_plane(g_TextHoloRayGdl, bgx1, bgy2, bgx1, bgy1, colour5, colour4, MENUPLANE_00);
g_TextHoloRayGdl = menugfx_draw_plane(g_TextHoloRayGdl, bgx1, bgy1, bgx2, bgy1, colour5, colour4, MENUPLANE_01);
g_TextHoloRayGdl = menugfx_draw_plane(g_TextHoloRayGdl, bgx2, bgy1, bgx2, bgy2, colour4, colour5, MENUPLANE_01);
g_TextHoloRayGdl = menugfx_draw_plane(g_TextHoloRayGdl, bgx2, bgy2, bgx1, bgy2, colour5, colour4, MENUPLANE_01);
g_TextHoloRayGdl = menugfx_draw_plane(g_TextHoloRayGdl, bgx1, bgy2, bgx1, bgy1, colour4, colour5, MENUPLANE_01);
g_TextHoloRayGdl = ortho_draw_holoray(g_TextHoloRayGdl, bgx1, bgy1, bgx2, bgy1, colour4, colour5, MENUPLANE_00);
g_TextHoloRayGdl = ortho_draw_holoray(g_TextHoloRayGdl, bgx2, bgy1, bgx2, bgy2, colour5, colour4, MENUPLANE_00);
g_TextHoloRayGdl = ortho_draw_holoray(g_TextHoloRayGdl, bgx2, bgy2, bgx1, bgy2, colour4, colour5, MENUPLANE_00);
g_TextHoloRayGdl = ortho_draw_holoray(g_TextHoloRayGdl, bgx1, bgy2, bgx1, bgy1, colour5, colour4, MENUPLANE_00);
g_TextHoloRayGdl = ortho_draw_holoray(g_TextHoloRayGdl, bgx1, bgy1, bgx2, bgy1, colour5, colour4, MENUPLANE_01);
g_TextHoloRayGdl = ortho_draw_holoray(g_TextHoloRayGdl, bgx2, bgy1, bgx2, bgy2, colour4, colour5, MENUPLANE_01);
g_TextHoloRayGdl = ortho_draw_holoray(g_TextHoloRayGdl, bgx2, bgy2, bgx1, bgy2, colour5, colour4, MENUPLANE_01);
g_TextHoloRayGdl = ortho_draw_holoray(g_TextHoloRayGdl, bgx1, bgy2, bgx1, bgy1, colour4, colour5, MENUPLANE_01);
}
// Render the title bar
@ -2723,8 +2723,8 @@ Gfx *dialog_render(Gfx *gdl, struct menudialog *dialog, struct menu *menu, bool
g_MenuScissorX2 = viewtop;
}
var8009de90 = g_MenuScissorY1;
var8009de94 = g_MenuScissorY2;
g_HolorayMinY = g_MenuScissorY1;
g_HolorayMaxY = g_MenuScissorY2;
gdl = menu_apply_scissor(gdl);
@ -3602,8 +3602,8 @@ Gfx *menu_render_dialogs(Gfx *gdl)
if (g_MenuData.root == MENUROOT_MPPAUSE
|| g_MenuData.root == MENUROOT_PICKTARGET
|| g_MenuData.root == MENUROOT_MPENDSCREEN) {
g_MenuProjectFromX = g_Menus[g_MpPlayerNum].curdialog->x + g_Menus[g_MpPlayerNum].curdialog->width / 2 - vi_get_width() / (g_UiScaleX * 2);
g_MenuProjectFromY = g_Menus[g_MpPlayerNum].curdialog->y + g_Menus[g_MpPlayerNum].curdialog->height / 2 - vi_get_height() / 2;
g_HolorayProjectFromX = g_Menus[g_MpPlayerNum].curdialog->x + g_Menus[g_MpPlayerNum].curdialog->width / 2 - vi_get_width() / (g_UiScaleX * 2);
g_HolorayProjectFromY = g_Menus[g_MpPlayerNum].curdialog->y + g_Menus[g_MpPlayerNum].curdialog->height / 2 - vi_get_height() / 2;
gdl = menu_render_dialog(gdl, g_Menus[g_MpPlayerNum].curdialog, &g_Menus[g_MpPlayerNum], 0);
} else {
@ -5167,7 +5167,7 @@ Gfx *menu_render(Gfx *gdl)
g_UiScaleX = g_ViRes == VIRES_HI ? 2 : 1;
#endif
gdl = func0f0d479c(gdl);
gdl = ortho_begin(gdl);
gSPDisplayList(gdl++, var800613a0);
@ -5205,7 +5205,7 @@ Gfx *menu_render(Gfx *gdl)
g_MenuData.hudpiece.newposy = RANDOMFRAC() * 80.0f + 244.7f - 40.0f;
}
g_MenuProjectFromX = g_MenuProjectFromY = 0;
g_HolorayProjectFromX = g_HolorayProjectFromY = 0;
if (g_MenuData.root == MENUROOT_MPSETUP) {
if (g_MenuData.count <= 0) {
@ -5255,12 +5255,12 @@ Gfx *menu_render(Gfx *gdl)
g_MenuData.usezbuf = true;
}
} else {
g_MenuProjectFromX = g_MenuProjectFromY = 0;
g_HolorayProjectFromX = g_HolorayProjectFromY = 0;
}
if (g_MenuData.unk5d5_04) {
g_MenuProjectFromX = g_MenuData.unk670;
g_MenuProjectFromY = g_MenuData.unk674;
g_HolorayProjectFromX = g_MenuData.unk670;
g_HolorayProjectFromY = g_MenuData.unk674;
}
// Render the second layer of the background (for the combat simulator cone,
@ -5279,9 +5279,9 @@ Gfx *menu_render(Gfx *gdl)
// Render the health bar (player_render_health_bar may choose not to render)
if ((g_MenuData.bg || g_MenuData.nextbg != 255)
&& (!g_Vars.currentplayer->eyespy || !g_Vars.currentplayer->eyespy->active)) {
gdl = func0f0d49c8(gdl);
gdl = ortho_end(gdl);
gdl = player_render_health_bar(gdl);
gdl = func0f0d479c(gdl);
gdl = ortho_begin(gdl);
}
if (g_MenuData.count > 0) {
@ -5492,7 +5492,7 @@ Gfx *menu_render(Gfx *gdl)
#endif
}
gdl = func0f0d49c8(gdl);
gdl = ortho_end(gdl);
g_UiScaleX = 1;

View File

@ -1220,15 +1220,15 @@ Gfx *menugfx_render_bg_failure(Gfx *gdl)
spb4 = DTOR(360) * g_20SecIntervalFrac;
g_MenuProjectFromX = g_MenuProjectFromY = 0;
g_HolorayProjectFromX = g_HolorayProjectFromY = 0;
gdl = func0f0d4a3c(gdl, 0);
gdl = ortho_holoray_begin(gdl, 0);
var8009de90 = -100000;
var8009de94 = 100000;
g_HolorayMinY = -100000;
g_HolorayMaxY = 100000;
gdl = menugfx_draw_plane(gdl, -10000, 0, 10000, 0, 0x00007f7f, 0x00007f7f, MENUPLANE_04);
gdl = menugfx_draw_plane(gdl, -10000, 300, 10000, 300, 0x00007f7f, 0x00007f7f, MENUPLANE_04);
gdl = ortho_draw_holoray(gdl, -10000, 0, 10000, 0, 0x00007f7f, 0x00007f7f, MENUPLANE_04);
gdl = ortho_draw_holoray(gdl, -10000, 300, 10000, 300, 0x00007f7f, 0x00007f7f, MENUPLANE_04);
for (i = 0; i < 3; i++) {
angle = (2.0f * i * DTOR(180)) / 3.0f + spb4;
@ -1250,8 +1250,8 @@ Gfx *menugfx_render_bg_failure(Gfx *gdl)
s0 += 120;
s7 += 120;
gdl = menugfx_draw_plane(gdl, s6, s3, s2, s0, 0xff000040, 0xff00007f, MENUPLANE_02);
gdl = menugfx_draw_plane(gdl, s2, s0, s1, s7, 0xff00007f, 0xff000040, MENUPLANE_03);
gdl = ortho_draw_holoray(gdl, s6, s3, s2, s0, 0xff000040, 0xff00007f, MENUPLANE_02);
gdl = ortho_draw_holoray(gdl, s2, s0, s1, s7, 0xff00007f, 0xff000040, MENUPLANE_03);
angle = -2.0f * spb4 + (2.0f * i * DTOR(180)) / 3.0f;
s6 = sinf(angle) * 600.0f;
@ -1275,8 +1275,8 @@ Gfx *menugfx_render_bg_failure(Gfx *gdl)
alpha1 = menu_get_cos_osc_frac(4) * 127.0f;
alpha2 = menu_get_cos_osc_frac(4) * 55.0f;
gdl = menugfx_draw_plane(gdl, s6, s3, s2, s0, 0xffff0000 | alpha2, 0xffff0000 | alpha1, MENUPLANE_02);
gdl = menugfx_draw_plane(gdl, s2, s0, s1, s7, 0xffff0000 | alpha1, 0xffff0000 | alpha2, MENUPLANE_03);
gdl = ortho_draw_holoray(gdl, s6, s3, s2, s0, 0xffff0000 | alpha2, 0xffff0000 | alpha1, MENUPLANE_02);
gdl = ortho_draw_holoray(gdl, s2, s0, s1, s7, 0xffff0000 | alpha1, 0xffff0000 | alpha2, MENUPLANE_03);
angle = -2.0f * spb4 + (2.0f * i * DTOR(180)) / 3.0f + DTOR(180);
s6 = sinf(angle) * 600.0f;
@ -1300,11 +1300,11 @@ Gfx *menugfx_render_bg_failure(Gfx *gdl)
alpha1 = (1.0f - menu_get_cos_osc_frac(4)) * 99.0f;
alpha2 = (1.0f - menu_get_cos_osc_frac(4)) * 33.0f;
gdl = menugfx_draw_plane(gdl, s6, s3, s2, s0, 0xffffff00 | alpha2, 0xffffff00 | alpha1, MENUPLANE_02);
gdl = menugfx_draw_plane(gdl, s2, s0, s1, s7, 0xffffff00 | alpha1, 0xffffff00 | alpha2, MENUPLANE_03);
gdl = ortho_draw_holoray(gdl, s6, s3, s2, s0, 0xffffff00 | alpha2, 0xffffff00 | alpha1, MENUPLANE_02);
gdl = ortho_draw_holoray(gdl, s2, s0, s1, s7, 0xffffff00 | alpha1, 0xffffff00 | alpha2, MENUPLANE_03);
}
gdl = func0f0d4c80(gdl);
gdl = ortho_holoray_end(gdl);
return gdl;
}
@ -1331,12 +1331,12 @@ Gfx *menugfx_render_bg_cone(Gfx *gdl)
baseangle = DTOR(360) * g_20SecIntervalFrac * 2.0f;
colourupper = (u32) (menu_get_sin_osc_frac(1.0f) * 255.0f) << 16;
gdl = func0f0d4a3c(gdl, 0);
gdl = ortho_holoray_begin(gdl, 0);
if (1);
var8009de90 = -100000;
var8009de94 = 100000;
g_HolorayMinY = -100000;
g_HolorayMaxY = 100000;
for (i = 0; i < 8; i++) {
angle = baseangle + i * 2.0f * DTOR(180) * 0.125f;
@ -1353,7 +1353,7 @@ Gfx *menugfx_render_bg_cone(Gfx *gdl)
colour = colourupper | 0xff00007f;
gdl = menugfx_draw_plane(gdl, x1, y1, x2, y2, colour, colour, MENUPLANE_08);
gdl = ortho_draw_holoray(gdl, x1, y1, x2, y2, colour, colour, MENUPLANE_08);
}
// Cone 2
@ -1380,10 +1380,10 @@ Gfx *menugfx_render_bg_cone(Gfx *gdl)
colour = colourupper | 0xff00007f;
gdl = menugfx_draw_plane(gdl, x1, y1, x2, y2, colour, colour, MENUPLANE_09);
gdl = ortho_draw_holoray(gdl, x1, y1, x2, y2, colour, colour, MENUPLANE_09);
}
gdl = func0f0d4c80(gdl);
gdl = ortho_holoray_end(gdl);
return gdl;
}
@ -1397,39 +1397,39 @@ Gfx *menugfx_render_bg_cone(Gfx *gdl)
*/
Gfx *func0f0e458c(Gfx *gdl)
{
g_MenuProjectFromX = 0;
g_MenuProjectFromY = -20 - vi_get_height() / 2;
g_HolorayProjectFromX = 0;
g_HolorayProjectFromY = -20 - vi_get_height() / 2;
gdl = func0f0d4a3c(gdl, 0);
gdl = ortho_holoray_begin(gdl, 0);
var8009de90 = -100000;
var8009de94 = 100000;
g_HolorayMinY = -100000;
g_HolorayMaxY = 100000;
gdl = menugfx_draw_plane(gdl, -1000, vi_get_height() + 10, 2000, vi_get_height() + 10, 0x00ff00bf, 0x00ff00bf, MENUPLANE_06);
gdl = menugfx_draw_plane(gdl, -1000, vi_get_height() + 10, 2000, vi_get_height() + 10, 0xffff00af, 0xffff00af, MENUPLANE_05);
gdl = func0f0d4c80(gdl);
gdl = ortho_draw_holoray(gdl, -1000, vi_get_height() + 10, 2000, vi_get_height() + 10, 0x00ff00bf, 0x00ff00bf, MENUPLANE_06);
gdl = ortho_draw_holoray(gdl, -1000, vi_get_height() + 10, 2000, vi_get_height() + 10, 0xffff00af, 0xffff00af, MENUPLANE_05);
gdl = ortho_holoray_end(gdl);
g_MenuProjectFromX = g_MenuProjectFromY = 0;
g_HolorayProjectFromX = g_HolorayProjectFromY = 0;
return gdl;
}
Gfx *func0f0e46b0(Gfx *gdl, f32 arg1)
{
s32 y1 = (g_MenuProjectFromY + 120) + arg1 * (0.0f - (g_MenuProjectFromY + 120));
s32 y2 = (g_MenuProjectFromY + 120) + arg1 * (240.0f - (g_MenuProjectFromY + 120));
s32 y1 = (g_HolorayProjectFromY + 120) + arg1 * (0.0f - (g_HolorayProjectFromY + 120));
s32 y2 = (g_HolorayProjectFromY + 120) + arg1 * (240.0f - (g_HolorayProjectFromY + 120));
gdl = func0f0d4a3c(gdl, 0);
gdl = ortho_holoray_begin(gdl, 0);
var8009de90 = -100000;
var8009de94 = 100000;
g_HolorayMinY = -100000;
g_HolorayMaxY = 100000;
gdl = menugfx_draw_plane(gdl, -1000, y1, 2000, y1, 0xffff007f, 0xffff007f, MENUPLANE_05);
gdl = menugfx_draw_plane(gdl, -1000, y1, 2000, y1, 0x00aa007f, 0x00aa007f, MENUPLANE_06);
gdl = menugfx_draw_plane(gdl, -1000, y2, 2000, y2, 0xffff007f, 0xffff007f, MENUPLANE_05);
gdl = menugfx_draw_plane(gdl, -1000, y2, 2000, y2, 0x00aa007f, 0x00aa007f, MENUPLANE_06);
gdl = ortho_draw_holoray(gdl, -1000, y1, 2000, y1, 0xffff007f, 0xffff007f, MENUPLANE_05);
gdl = ortho_draw_holoray(gdl, -1000, y1, 2000, y1, 0x00aa007f, 0x00aa007f, MENUPLANE_06);
gdl = ortho_draw_holoray(gdl, -1000, y2, 2000, y2, 0xffff007f, 0xffff007f, MENUPLANE_05);
gdl = ortho_draw_holoray(gdl, -1000, y2, 2000, y2, 0x00aa007f, 0x00aa007f, MENUPLANE_06);
gdl = func0f0d4c80(gdl);
gdl = ortho_holoray_end(gdl);
return gdl;
}
@ -1453,15 +1453,15 @@ Gfx *menugfx_render_bg_failure_copy(Gfx *gdl)
spb4 = DTOR(360) * g_20SecIntervalFrac;
g_MenuProjectFromX = g_MenuProjectFromY = 0;
g_HolorayProjectFromX = g_HolorayProjectFromY = 0;
gdl = func0f0d4a3c(gdl, 0);
gdl = ortho_holoray_begin(gdl, 0);
var8009de90 = -100000;
var8009de94 = 100000;
g_HolorayMinY = -100000;
g_HolorayMaxY = 100000;
gdl = menugfx_draw_plane(gdl, -10000, 0, 10000, 0, 0x00007f7f, 0x00007f7f, MENUPLANE_04);
gdl = menugfx_draw_plane(gdl, -10000, 300, 10000, 300, 0x00007f7f, 0x00007f7f, MENUPLANE_04);
gdl = ortho_draw_holoray(gdl, -10000, 0, 10000, 0, 0x00007f7f, 0x00007f7f, MENUPLANE_04);
gdl = ortho_draw_holoray(gdl, -10000, 300, 10000, 300, 0x00007f7f, 0x00007f7f, MENUPLANE_04);
for (i = 0; i < 3; i++) {
angle = (2.0f * i * DTOR(180)) / 3.0f + spb4;
@ -1483,8 +1483,8 @@ Gfx *menugfx_render_bg_failure_copy(Gfx *gdl)
s0 += 120;
s7 += 120;
gdl = menugfx_draw_plane(gdl, s6, s3, s2, s0, 0xff000040, 0xff00007f, MENUPLANE_02);
gdl = menugfx_draw_plane(gdl, s2, s0, s1, s7, 0xff00007f, 0xff000040, MENUPLANE_03);
gdl = ortho_draw_holoray(gdl, s6, s3, s2, s0, 0xff000040, 0xff00007f, MENUPLANE_02);
gdl = ortho_draw_holoray(gdl, s2, s0, s1, s7, 0xff00007f, 0xff000040, MENUPLANE_03);
angle = -2.0f * spb4 + (2.0f * i * DTOR(180)) / 3.0f;
s6 = sinf(angle) * 600.0f;
@ -1508,8 +1508,8 @@ Gfx *menugfx_render_bg_failure_copy(Gfx *gdl)
alpha1 = menu_get_cos_osc_frac(4) * 127.0f;
alpha2 = menu_get_cos_osc_frac(4) * 55.0f;
gdl = menugfx_draw_plane(gdl, s6, s3, s2, s0, 0xffff0000 | alpha2, 0xffff0000 | alpha1, MENUPLANE_02);
gdl = menugfx_draw_plane(gdl, s2, s0, s1, s7, 0xffff0000 | alpha1, 0xffff0000 | alpha2, MENUPLANE_03);
gdl = ortho_draw_holoray(gdl, s6, s3, s2, s0, 0xffff0000 | alpha2, 0xffff0000 | alpha1, MENUPLANE_02);
gdl = ortho_draw_holoray(gdl, s2, s0, s1, s7, 0xffff0000 | alpha1, 0xffff0000 | alpha2, MENUPLANE_03);
angle = -2.0f * spb4 + (2.0f * i * DTOR(180)) / 3.0f + DTOR(180);
s6 = sinf(angle) * 600.0f;
@ -1533,11 +1533,11 @@ Gfx *menugfx_render_bg_failure_copy(Gfx *gdl)
alpha1 = (1.0f - menu_get_cos_osc_frac(4)) * 99.0f;
alpha2 = (1.0f - menu_get_cos_osc_frac(4)) * 33.0f;
gdl = menugfx_draw_plane(gdl, s6, s3, s2, s0, 0xffffff00 | alpha2, 0xffffff00 | alpha1, MENUPLANE_02);
gdl = menugfx_draw_plane(gdl, s2, s0, s1, s7, 0xffffff00 | alpha1, 0xffffff00 | alpha2, MENUPLANE_03);
gdl = ortho_draw_holoray(gdl, s6, s3, s2, s0, 0xffffff00 | alpha2, 0xffffff00 | alpha1, MENUPLANE_02);
gdl = ortho_draw_holoray(gdl, s2, s0, s1, s7, 0xffffff00 | alpha1, 0xffffff00 | alpha2, MENUPLANE_03);
}
gdl = func0f0d4c80(gdl);
gdl = ortho_holoray_end(gdl);
return gdl;
}
@ -1628,25 +1628,26 @@ Gfx *menugfx_render_bg_success(Gfx *gdl)
f0 = menu_get_linear_interval_frac(10.0f);
// Draw the two haze layers
g_MenuProjectFromX = 0;
g_MenuProjectFromY = 0;
g_HolorayProjectFromX = 0;
g_HolorayProjectFromY = 0;
gdl = func0f0d4a3c(gdl, 0);
gdl = ortho_holoray_begin(gdl, 0);
var8009de90 = -100000;
var8009de94 = 100000;
g_HolorayMinY = -100000;
g_HolorayMaxY = 100000;
if (gray) {
gdl = menugfx_draw_plane(gdl, -1000, -10, 2000, -10, 0x6060607f, 0x6060607f, MENUPLANE_05);
gdl = menugfx_draw_plane(gdl, -1000, vi_get_height() + 10, 2000, vi_get_height() + 10, 0x9090907f, 0x9090907f, MENUPLANE_05);
gdl = ortho_draw_holoray(gdl, -1000, -10, 2000, -10, 0x6060607f, 0x6060607f, MENUPLANE_05);
gdl = ortho_draw_holoray(gdl, -1000, vi_get_height() + 10, 2000, vi_get_height() + 10, 0x9090907f, 0x9090907f, MENUPLANE_05);
} else {
gdl = menugfx_draw_plane(gdl, -1000, -10, 2000, -10, 0x0000947f, 0x0000947f, MENUPLANE_10);
gdl = menugfx_draw_plane(gdl, -1000, vi_get_height() + 10, 2000, vi_get_height() + 10, 0x6200947f, 0x6200947f, MENUPLANE_06);
gdl = ortho_draw_holoray(gdl, -1000, -10, 2000, -10, 0x0000947f, 0x0000947f, MENUPLANE_10);
gdl = ortho_draw_holoray(gdl, -1000, vi_get_height() + 10, 2000, vi_get_height() + 10, 0x6200947f, 0x6200947f, MENUPLANE_06);
}
gdl = ortho_holoray_end(gdl);
// Prepare stuff for drawing the particles
gdl = func0f0d4c80(gdl);
gdl = func0f0d49c8(gdl);
gdl = ortho_end(gdl);
tex_select(&gdl, &g_TexGeneralConfigs[TEX_GENERAL_1PXWHITE], 2, 1, 2, true, NULL);
@ -1782,7 +1783,7 @@ Gfx *menugfx_render_bg_success(Gfx *gdl)
}
}
gdl = func0f0d479c(gdl);
gdl = ortho_begin(gdl);
return gdl;
}

View File

@ -1513,7 +1513,7 @@ bool menuitem_keyboard_tick(struct menuitem *item, struct menuinputs *inputs, u3
// Handle deleting
if (delete && kb->string[0] != '\0') {
s32 deleted = false;
s32 i = 10;
s32 i = MAX_USERSTRING_LEN;
menu_play_sound(MENUSOUND_FOCUS);

View File

@ -3286,7 +3286,7 @@ void mpplayerfile_save_gun_funcs(struct savebuffer *buffer, s32 playernum)
numbits = 8;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].gunfuncs[i], numbits);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].gunfuncs[i], numbits);
bitsremaining -= 8;
i++;
@ -3364,15 +3364,15 @@ void mpplayerfile_save_wad(s32 playernum, struct savebuffer *buffer)
s32 j;
u32 stack;
func0f0d55a4(buffer, g_PlayerConfigsArray[playernum].base.name);
savebuffer_write_string(buffer, g_PlayerConfigsArray[playernum].base.name);
if (g_PlayerConfigsArray[playernum].time > 0x0fffffff) { // over 3106 days
g_PlayerConfigsArray[playernum].time = 0x0fffffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].time, 28);
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].base.mpheadnum, 7);
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].base.mpbodynum, 7);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].time, 28);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].base.mpheadnum, 7);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].base.mpbodynum, 7);
if (g_PlayerConfigsArray[playernum].base.mpheadnum >= mp_get_num_heads2()) {
struct fileguid guid;
@ -3385,104 +3385,104 @@ void mpplayerfile_save_wad(s32 playernum, struct savebuffer *buffer)
savebuffer_write_guid(buffer, &guid);
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].base.displayoptions, 8);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].base.displayoptions, 8);
if (g_PlayerConfigsArray[playernum].kills > 0xfffff) { // 1,048,575
g_PlayerConfigsArray[playernum].kills = 0xfffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].kills, 20);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].kills, 20);
if (g_PlayerConfigsArray[playernum].deaths > 0xfffff) { // 1,048,575
g_PlayerConfigsArray[playernum].deaths = 0xfffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].deaths, 20);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].deaths, 20);
if (g_PlayerConfigsArray[playernum].gamesplayed > 0x7ffff) { // 524,287
g_PlayerConfigsArray[playernum].gamesplayed = 0x7ffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].gamesplayed, 19);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].gamesplayed, 19);
if (g_PlayerConfigsArray[playernum].gameswon > 0x7ffff) { // 524,287
g_PlayerConfigsArray[playernum].gameswon = 0x7ffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].gameswon, 19);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].gameswon, 19);
if (g_PlayerConfigsArray[playernum].gameslost > 0x7ffff) { // 524,287
g_PlayerConfigsArray[playernum].gameslost = 0x7ffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].gameslost, 19);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].gameslost, 19);
if (g_PlayerConfigsArray[playernum].distance > 0x1ffffff) { // 33,554,431
g_PlayerConfigsArray[playernum].distance = 0x1ffffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].distance, 25);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].distance, 25);
if (g_PlayerConfigsArray[playernum].accuracy > 0x3ff) { // 1023
g_PlayerConfigsArray[playernum].accuracy = 0x3ff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].accuracy, 10);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].accuracy, 10);
if (g_PlayerConfigsArray[playernum].damagedealt > 0x3ffffff) { // 67,108,863
g_PlayerConfigsArray[playernum].damagedealt = 0x3ffffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].damagedealt, 26);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].damagedealt, 26);
if (g_PlayerConfigsArray[playernum].painreceived > 0x3ffffff) { // 67,108,863
g_PlayerConfigsArray[playernum].painreceived = 0x3ffffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].painreceived, 26);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].painreceived, 26);
if (g_PlayerConfigsArray[playernum].headshots > 0xfffff) { // 1,048,575
g_PlayerConfigsArray[playernum].headshots = 0xfffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].headshots, 20);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].headshots, 20);
if (g_PlayerConfigsArray[playernum].ammoused > 0x3fffffff) { // 1,073,741,823
g_PlayerConfigsArray[playernum].ammoused = 0x3fffffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].ammoused, 30);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].ammoused, 30);
if (g_PlayerConfigsArray[playernum].accuracymedals > 0x3ffff) { // 262,143
g_PlayerConfigsArray[playernum].accuracymedals = 0x3ffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].accuracymedals, 18);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].accuracymedals, 18);
if (g_PlayerConfigsArray[playernum].headshotmedals > 0x3ffff) { // 262,143
g_PlayerConfigsArray[playernum].headshotmedals = 0x3ffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].headshotmedals, 18);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].headshotmedals, 18);
if (g_PlayerConfigsArray[playernum].killmastermedals > 0x3ffff) { // 262,143
g_PlayerConfigsArray[playernum].killmastermedals = 0x3ffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].killmastermedals, 18);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].killmastermedals, 18);
if (g_PlayerConfigsArray[playernum].survivormedals > 0xffff) { // 65,535
g_PlayerConfigsArray[playernum].survivormedals = 0xffff;
}
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].survivormedals, 16);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].survivormedals, 16);
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].controlmode, 2);
savebuffer_or(buffer, g_PlayerConfigsArray[playernum].options, 12);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].controlmode, 2);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[playernum].options, 12);
for (i = 0; i < ARRAYCOUNT(g_MpChallenges); i++) {
for (j = 1; j < MAX_PLAYERS + 1; j++) {
savebuffer_or(buffer, challenge_is_completed_by_player_with_num_players(playernum, i, j), 1);
savebuffer_write_bits(buffer, challenge_is_completed_by_player_with_num_players(playernum, i, j), 1);
}
}
@ -3493,7 +3493,7 @@ void mpplayerfile_get_overview(char *arg0, char *name, u32 *playtime)
{
struct savebuffer buffer;
func0f0d5484(&buffer, arg0, 15);
savebuffer_prepare_string(&buffer, arg0, 15);
savebuffer_read_string(&buffer, name, 0);
*playtime = savebuffer_read_bits(&buffer, 28);
@ -3506,9 +3506,9 @@ s32 mpplayerfile_save(s32 playernum, s32 device, s32 fileid, u16 deviceserial)
struct savebuffer buffer;
if (device >= 0) {
savebuffer_clear(&buffer);
savebuffer_reset(&buffer);
mpplayerfile_save_wad(playernum, &buffer);
func0f0d54c4(&buffer);
savebuffer_print(&buffer);
var80075bd0[2] = true;
@ -3533,7 +3533,7 @@ s32 mpplayerfile_load(s32 playernum, s32 device, s32 fileid, u16 deviceserial)
struct savebuffer buffer;
if (device >= 0) {
savebuffer_clear(&buffer);
savebuffer_reset(&buffer);
ret = pak_read_body_at_guid(device, fileid, buffer.bytes, 0);
@ -3542,7 +3542,7 @@ s32 mpplayerfile_load(s32 playernum, s32 device, s32 fileid, u16 deviceserial)
g_PlayerConfigsArray[playernum].fileguid.deviceserial = deviceserial;
mpplayerfile_load_wad(playernum, &buffer, 1);
func0f0d54c4(&buffer);
savebuffer_print(&buffer);
g_PlayerConfigsArray[playernum].handicap = 0x80;
return 0;
@ -3796,7 +3796,7 @@ void mpsetupfile_save_wad(struct savebuffer *buffer)
s32 mpbodynum;
s32 i;
func0f0d55a4(buffer, g_MpSetup.name);
savebuffer_write_string(buffer, g_MpSetup.name);
for (i = 0; i < MAX_BOTS; i++) {
if (g_MpSetup.chrslots & (1 << (i + 4))) {
@ -3804,24 +3804,24 @@ void mpsetupfile_save_wad(struct savebuffer *buffer)
}
}
savebuffer_or(buffer, numsims, 4);
savebuffer_or(buffer, g_MpSetup.stagenum, 7);
savebuffer_or(buffer, g_MpSetup.scenario, 3);
savebuffer_write_bits(buffer, numsims, 4);
savebuffer_write_bits(buffer, g_MpSetup.stagenum, 7);
savebuffer_write_bits(buffer, g_MpSetup.scenario, 3);
scenario_write_save(buffer);
savebuffer_or(buffer, g_MpSetup.options, 21);
savebuffer_write_bits(buffer, g_MpSetup.options, 21);
for (i = 0; i < MAX_BOTS; i++) {
savebuffer_or(buffer, g_BotConfigsArray[i].type, 5);
savebuffer_write_bits(buffer, g_BotConfigsArray[i].type, 5);
if (g_MpSetup.chrslots & (1 << (i + 4))) {
savebuffer_or(buffer, g_BotConfigsArray[i].difficulty, 3);
savebuffer_write_bits(buffer, g_BotConfigsArray[i].difficulty, 3);
} else {
savebuffer_or(buffer, BOTDIFF_DISABLED, 3);
savebuffer_write_bits(buffer, BOTDIFF_DISABLED, 3);
}
savebuffer_or(buffer, g_BotConfigsArray[i].base.mpheadnum, 7);
savebuffer_write_bits(buffer, g_BotConfigsArray[i].base.mpheadnum, 7);
if (g_BotConfigsArray[i].base.mpbodynum == 0xff) {
s32 profilenum = mp_find_bot_profile(g_BotConfigsArray[i].type, g_BotConfigsArray[i].difficulty);
@ -3835,20 +3835,20 @@ void mpsetupfile_save_wad(struct savebuffer *buffer)
mpbodynum = g_BotConfigsArray[i].base.mpbodynum;
}
savebuffer_or(buffer, mpbodynum, 7);
savebuffer_or(buffer, g_BotConfigsArray[i].base.team, 3);
savebuffer_write_bits(buffer, mpbodynum, 7);
savebuffer_write_bits(buffer, g_BotConfigsArray[i].base.team, 3);
}
for (i = 0; i < ARRAYCOUNT(g_MpSetup.weapons); i++) {
savebuffer_or(buffer, g_MpSetup.weapons[i], 7);
savebuffer_write_bits(buffer, g_MpSetup.weapons[i], 7);
}
savebuffer_or(buffer, g_MpSetup.timelimit, 6);
savebuffer_or(buffer, g_MpSetup.scorelimit, 7);
savebuffer_or(buffer, g_MpSetup.teamscorelimit, 9);
savebuffer_write_bits(buffer, g_MpSetup.timelimit, 6);
savebuffer_write_bits(buffer, g_MpSetup.scorelimit, 7);
savebuffer_write_bits(buffer, g_MpSetup.teamscorelimit, 9);
for (i = 0; i < MAX_PLAYERS; i++) {
savebuffer_or(buffer, g_PlayerConfigsArray[i].base.team, 3);
savebuffer_write_bits(buffer, g_PlayerConfigsArray[i].base.team, 3);
}
}
@ -3856,7 +3856,7 @@ void mpsetupfile_get_overview(char *arg0, char *filename, u16 *numsims, u16 *sta
{
struct savebuffer buffer;
func0f0d5484(&buffer, arg0, 15);
savebuffer_prepare_string(&buffer, arg0, 15);
savebuffer_read_string(&buffer, filename, 0);
@ -3872,9 +3872,9 @@ s32 mpsetupfile_save(s32 device, s32 fileid, u16 deviceserial)
struct savebuffer buffer;
if (device >= 0) {
savebuffer_clear(&buffer);
savebuffer_reset(&buffer);
mpsetupfile_save_wad(&buffer);
func0f0d54c4(&buffer);
savebuffer_print(&buffer);
ret = pak_save_at_guid(device, fileid, PAKFILETYPE_MPSETUP, buffer.bytes, &newfileid, 0);
var80075bd0[1] = true;
@ -3898,7 +3898,7 @@ s32 mpsetupfile_load(s32 device, s32 fileid, u16 deviceserial)
struct savebuffer buffer;
if (device >= 0) {
savebuffer_clear(&buffer);
savebuffer_reset(&buffer);
ret = pak_read_body_at_guid(device, fileid, buffer.bytes, 0);
if (ret == 0) {
@ -3906,7 +3906,7 @@ s32 mpsetupfile_load(s32 device, s32 fileid, u16 deviceserial)
g_MpSetup.fileguid.deviceserial = deviceserial;
mpsetupfile_load_wad(&buffer);
func0f0d54c4(&buffer);
savebuffer_print(&buffer);
return 0;
}

View File

@ -437,7 +437,7 @@ void scenario_write_save(struct savebuffer *buffer)
if (g_MpScenarios[g_MpSetup.scenario].writesavefunc) {
g_MpScenarios[g_MpSetup.scenario].writesavefunc(buffer);
} else {
savebuffer_or(buffer, 0, 8);
savebuffer_write_bits(buffer, 0, 8);
}
}

View File

@ -154,7 +154,7 @@ void koh_read_save(struct savebuffer *buffer)
void koh_write_save(struct savebuffer *buffer)
{
savebuffer_or(buffer, g_Vars.mphilltime, 8);
savebuffer_write_bits(buffer, g_Vars.mphilltime, 8);
}
void koh_init(void)

View File

@ -2026,7 +2026,7 @@ MenuItemHandlerResult mp_load_settings_menu_handler(s32 operation, struct menuit
return (s32)mp_get_preset_name_by_slot(data->list.value);
}
if (g_FileLists[1] != NULL) {
func0f0d564c(g_FileLists[1]->files[data->list.value - mp_get_num_unlocked_presets()].name, g_StringPointer, false);
savebuffer_bitstring_to_cstring(g_FileLists[1]->files[data->list.value - mp_get_num_unlocked_presets()].name, g_StringPointer, false);
return (s32)g_StringPointer;
}
break;

View File

@ -839,7 +839,7 @@ Gfx *nbomb_render_overlay(Gfx *gdl)
if (1);
if (1);
gdl = func0f0d479c(gdl);
gdl = ortho_begin(gdl);
if (1);
@ -894,7 +894,7 @@ Gfx *nbomb_render_overlay(Gfx *gdl)
}
if (drawn) {
gdl = func0f0d49c8(gdl);
gdl = ortho_end(gdl);
}
return gdl;
@ -1009,7 +1009,7 @@ Gfx *gas_render(Gfx *gdl)
drawn = true;
gdl = func0f0d479c(gdl);
gdl = ortho_begin(gdl);
if (1);
@ -1097,7 +1097,7 @@ Gfx *gas_render(Gfx *gdl)
}
if (drawn) {
gdl = func0f0d49c8(gdl);
gdl = ortho_end(gdl);
}
return gdl;

View File

@ -14,17 +14,17 @@
#include "types.h"
#if VERSION >= VERSION_NTSC_1_0
Vp *var80070f10 = NULL;
Vp *g_OrthoViewport = NULL;
#else
Vp var80070f10;
Vp g_OrthoViewport;
#endif
s32 var8009de90;
s32 var8009de94;
s32 g_MenuProjectFromX;
s32 g_MenuProjectFromY;
s32 g_HolorayMinY;
s32 g_HolorayMaxY;
s32 g_HolorayProjectFromX;
s32 g_HolorayProjectFromY;
void func0f0d4690(Mtxf *mtx)
void ortho_configure_full_mtx(Mtxf *mtx)
{
struct coord pos;
@ -34,8 +34,8 @@ void func0f0d4690(Mtxf *mtx)
pos.y = PAL ? 136.25f : 120.25f;
pos.z = 0;
pos.x = (.5f - vi_get_width()) * 0.5f;
pos.y = (.5f + vi_get_height()) * 0.5f;
pos.x = (0.5f - vi_get_width()) / 2.0f;
pos.y = (0.5f + vi_get_height()) / 2.0f;
pos.z = 0;
mtx4_set_translation(&pos, mtx);
@ -46,14 +46,14 @@ void func0f0d4690(Mtxf *mtx)
}
}
void func0f0d475c(Mtxf *mtx)
void ortho_configure_mtx(Mtxf *mtx)
{
func0f0d4690(mtx);
ortho_configure_full_mtx(mtx);
mtx00015df0(0.1f, mtx);
mtx00015e4c(0.1f, mtx);
}
Gfx *func0f0d479c(Gfx *gdl)
Gfx *ortho_begin(Gfx *gdl)
{
Mtxf mtx;
Mtxf *mtx1;
@ -63,7 +63,7 @@ Gfx *func0f0d479c(Gfx *gdl)
mtx2 = gfx_allocate_matrix();
mtx00016760();
func0f0d475c(&mtx);
ortho_configure_mtx(&mtx);
mtx_f2l(&mtx, mtx2);
mtx4_load_identity(&mtx);
@ -79,46 +79,46 @@ Gfx *func0f0d479c(Gfx *gdl)
gSPMatrix(gdl++, osVirtualToPhysical(mtx1), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
#if VERSION >= VERSION_NTSC_1_0
if (var80070f10 == NULL) {
u32 size = align16(sizeof(Vp));
var80070f10 = gfx_allocate(size);
if (g_OrthoViewport == NULL) {
u32 size = align16(sizeof(*g_OrthoViewport));
g_OrthoViewport = gfx_allocate(size);
if (var80070f10 != NULL) {
var80070f10->vp.vscale[0] = vi_get_width() << 1;
var80070f10->vp.vscale[1] = vi_get_height() << 1;
var80070f10->vp.vscale[2] = 1;
var80070f10->vp.vscale[3] = 0;
if (g_OrthoViewport != NULL) {
g_OrthoViewport->vp.vscale[0] = vi_get_width() << 1;
g_OrthoViewport->vp.vscale[1] = vi_get_height() << 1;
g_OrthoViewport->vp.vscale[2] = 1;
g_OrthoViewport->vp.vscale[3] = 0;
var80070f10->vp.vtrans[0] = vi_get_width() << 1;
var80070f10->vp.vtrans[1] = vi_get_height() << 1;
var80070f10->vp.vtrans[2] = 0x1ff;
var80070f10->vp.vtrans[3] = 0;
g_OrthoViewport->vp.vtrans[0] = vi_get_width() << 1;
g_OrthoViewport->vp.vtrans[1] = vi_get_height() << 1;
g_OrthoViewport->vp.vtrans[2] = 0x1ff;
g_OrthoViewport->vp.vtrans[3] = 0;
}
}
gSPViewport(gdl++, var80070f10);
gSPViewport(gdl++, g_OrthoViewport);
#else
var80070f10.vp.vscale[0] = 640;
var80070f10.vp.vscale[1] = 480;
var80070f10.vp.vscale[2] = 640;
var80070f10.vp.vscale[3] = 0;
g_OrthoViewport.vp.vscale[0] = 640;
g_OrthoViewport.vp.vscale[1] = 480;
g_OrthoViewport.vp.vscale[2] = 640;
g_OrthoViewport.vp.vscale[3] = 0;
var80070f10.vp.vtrans[0] = 640;
var80070f10.vp.vtrans[1] = 480;
var80070f10.vp.vtrans[2] = 0x1ff;
var80070f10.vp.vtrans[3] = 0;
g_OrthoViewport.vp.vtrans[0] = 640;
g_OrthoViewport.vp.vtrans[1] = 480;
g_OrthoViewport.vp.vtrans[2] = 0x1ff;
g_OrthoViewport.vp.vtrans[3] = 0;
var80070f10.vp.vscale[0] = vi_get_width() << 1;
var80070f10.vp.vscale[1] = vi_get_height() << 1;
var80070f10.vp.vscale[2] = 1;
var80070f10.vp.vscale[3] = 0;
g_OrthoViewport.vp.vscale[0] = vi_get_width() << 1;
g_OrthoViewport.vp.vscale[1] = vi_get_height() << 1;
g_OrthoViewport.vp.vscale[2] = 1;
g_OrthoViewport.vp.vscale[3] = 0;
var80070f10.vp.vtrans[0] = vi_get_width() << 1;
var80070f10.vp.vtrans[1] = vi_get_height() << 1;
var80070f10.vp.vtrans[2] = 0x1ff;
var80070f10.vp.vtrans[3] = 0;
g_OrthoViewport.vp.vtrans[0] = vi_get_width() << 1;
g_OrthoViewport.vp.vtrans[1] = vi_get_height() << 1;
g_OrthoViewport.vp.vtrans[2] = 0x1ff;
g_OrthoViewport.vp.vtrans[3] = 0;
gSPViewport(gdl++, &var80070f10);
gSPViewport(gdl++, &g_OrthoViewport);
#endif
gDPPipeSync(gdl++);
@ -126,7 +126,7 @@ Gfx *func0f0d479c(Gfx *gdl)
return gdl;
}
Gfx *func0f0d49c8(Gfx *gdl)
Gfx *ortho_end(Gfx *gdl)
{
gSPViewport(gdl++, OS_K0_TO_PHYSICAL(vi_get_current_player_viewport()));
gSPMatrix(gdl++, osVirtualToPhysical(cam_get_perspective_mtxl()), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
@ -134,16 +134,16 @@ Gfx *func0f0d49c8(Gfx *gdl)
return gdl;
}
Gfx *func0f0d4a3c(Gfx *gdl, s32 arg1)
Gfx *ortho_holoray_begin(Gfx *gdl, s32 type)
{
Mtxf mtx;
Mtxf *mtxptr = gfx_allocate_matrix();
gDPPipeSync(gdl++);
if (arg1 == 0) {
if (type == 0) {
tex_select(&gdl, &g_TexGeneralConfigs[TEX_GENERAL_MENURAY0], 2, 0, 2, 1, NULL);
} else if (arg1 == 1) {
} else if (type == 1) {
tex_select(&gdl, &g_TexGeneralConfigs[TEX_GENERAL_MENURAY1], 2, 0, 2, 1, NULL);
}
@ -159,7 +159,7 @@ Gfx *func0f0d4a3c(Gfx *gdl, s32 arg1)
gDPSetRenderMode(gdl++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gDPSetTexturePersp(gdl++, G_TP_PERSP);
func0f0d4690(&mtx);
ortho_configure_full_mtx(&mtx);
mtx_f2l(&mtx, mtxptr);
gSPMatrix(gdl++, osVirtualToPhysical(mtxptr), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
@ -167,12 +167,12 @@ Gfx *func0f0d4a3c(Gfx *gdl, s32 arg1)
return gdl;
}
Gfx *func0f0d4c80(Gfx *gdl)
Gfx *ortho_holoray_end(Gfx *gdl)
{
Mtxf mtx;
Mtxf *mtxptr = gfx_allocate_matrix();
func0f0d4690(&mtx);
ortho_configure_full_mtx(&mtx);
mtx00015df0(0.1f, &mtx);
mtx00015e4c(0.1f, &mtx);
mtx_f2l(&mtx, mtxptr);
@ -182,7 +182,11 @@ Gfx *func0f0d4c80(Gfx *gdl)
return gdl;
}
Gfx *menugfx_draw_plane(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, u32 colour1, u32 colour2, s32 type)
/**
* This function is used to draw the walls, floor and ceiling of the
* hologram projection tunnel, as well as the text projection ray.
*/
Gfx *ortho_draw_holoray(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, u32 colour1, u32 colour2, s32 type)
{
Col *colours;
Vtx *vertices;
@ -211,28 +215,28 @@ Gfx *menugfx_draw_plane(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, u32 colour1, u
main_override_variable("txmul", &txmul);
if (y1 < var8009de90 && y2 < var8009de90) {
if (y1 < g_HolorayMinY && y2 < g_HolorayMinY) {
return gdl;
}
if (y1 > var8009de94 && y2 > var8009de94) {
if (y1 > g_HolorayMaxY && y2 > g_HolorayMaxY) {
return gdl;
}
if (y1 < var8009de90) {
y1 = var8009de90;
if (y1 < g_HolorayMinY) {
y1 = g_HolorayMinY;
}
if (y2 < var8009de90) {
y2 = var8009de90;
if (y2 < g_HolorayMinY) {
y2 = g_HolorayMinY;
}
if (y1 > var8009de94) {
y1 = var8009de94;
if (y1 > g_HolorayMaxY) {
y1 = g_HolorayMaxY;
}
if (y2 > var8009de94) {
y2 = var8009de94;
if (y2 > g_HolorayMaxY) {
y2 = g_HolorayMaxY;
}
sp2e = (x1 + y1) * txmul;
@ -317,8 +321,8 @@ Gfx *menugfx_draw_plane(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, u32 colour1, u
vertices[1].y = y2;
vertices[1].z = -10;
tmp1 = (f32) g_MenuProjectFromX * a1 / scale;
tmp2 = (f32) g_MenuProjectFromY * a1 / scale;
tmp1 = (f32) g_HolorayProjectFromX * a1 / scale;
tmp2 = (f32) g_HolorayProjectFromY * a1 / scale;
vertices[2].x = vertices[0].v[0] + (s16) tmp1;
vertices[2].y = vertices[0].v[1] + (s16) tmp2;
@ -378,7 +382,7 @@ Gfx *menugfx_draw_plane(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, u32 colour1, u
*
* This function only sets bits to on and does not unset them.
*/
void savebuffer_or(struct savebuffer *buffer, u32 value, s32 numbits)
void savebuffer_write_bits(struct savebuffer *buffer, u32 value, s32 numbits)
{
u32 bit = 1 << (numbits - 1);
@ -397,11 +401,15 @@ void savebuffer_or(struct savebuffer *buffer, u32 value, s32 numbits)
#if VERSION >= VERSION_NTSC_1_0
/**
* Write the specified amount of bits to the buffer, advancing the internal pointer.
* Given a `value` which has `numbits` of relevant bits, copy it to `dst`
* but using the bit positions which line up with the given savebuffer's buffer.
* The buffer's bitpos will be incremented by numbits.
*
* numbits is expected to be 32 or less.
* For example, if the savebuffer's bitpos is byte 100, bitindex 5 then the
* value will be written to dst starting at byte 100, bitindex 5, and the
* savebuffer's bitpos will be incremented accordingly.
*/
void savebuffer_write_bits(struct savebuffer *buffer, u32 value, s32 numbits, u8 *dst)
void savebuffer_align_to_buffer(struct savebuffer *buffer, u32 value, s32 numbits, u8 *dst)
{
u32 bit = 1 << (numbits - 1);
@ -447,7 +455,7 @@ u32 savebuffer_read_bits(struct savebuffer *buffer, s32 numbits)
return value;
}
void savebuffer_clear(struct savebuffer *buffer)
void savebuffer_reset(struct savebuffer *buffer)
{
s32 i;
@ -459,18 +467,24 @@ void savebuffer_clear(struct savebuffer *buffer)
}
}
void func0f0d5484(struct savebuffer *buffer, u8 *data, u8 len)
/**
* Write the string to the start of the buffer
* and reset the buffer's bitpos to the start.
*
* The buffer can then be used to read the string back.
*/
void savebuffer_prepare_string(struct savebuffer *buffer, u8 *src, u8 len)
{
s32 i;
buffer->bitpos = 0;
for (i = 0; i < len; i++) {
buffer->bytes[i] = data[i];
buffer->bytes[i] = src[i];
}
}
void func0f0d54c4(struct savebuffer *buffer)
void savebuffer_print(struct savebuffer *buffer)
{
s32 tmp = buffer->bitpos;
@ -487,7 +501,7 @@ void savebuffer_read_string(struct savebuffer *buffer, char *dst, bool addlinebr
s32 index = 0;
s32 i;
for (i = 0; i < 10; i++) {
for (i = 0; i < MAX_USERSTRING_LEN; i++) {
s32 byte = savebuffer_read_bits(buffer, 8);
if (!foundnull) {
@ -509,12 +523,12 @@ void savebuffer_read_string(struct savebuffer *buffer, char *dst, bool addlinebr
dst[index] = '\0';
}
void func0f0d55a4(struct savebuffer *buffer, char *src)
void savebuffer_write_string(struct savebuffer *buffer, char *src)
{
bool done = false;
s32 i;
for (i = 0; i < 10; i++) {
for (i = 0; i < MAX_USERSTRING_LEN; i++) {
if (!done) {
if (src[i] == '\0') {
done = true;
@ -522,47 +536,60 @@ void func0f0d55a4(struct savebuffer *buffer, char *src)
done = true;
} else {
u32 c = src[i];
savebuffer_or(buffer, c, 8);
savebuffer_write_bits(buffer, c, 8);
}
}
if (done) {
savebuffer_or(buffer, '\0', 8);
savebuffer_write_bits(buffer, '\0', 8);
}
}
}
void func0f0d564c(u8 *data, char *dst, bool addlinebreak)
/**
* Convert a savefile bitstring to a zero-terminated C string, with an optional
* line break added before the zero terminator.
*
* Savefile bitstrings are max 10 bytes, do not have line breaks, and will be
* missing the zero terminator if they are 10 bytes.
*/
void savebuffer_bitstring_to_cstring(u8 *bitstring, char *cstring, bool addlinebreak)
{
struct savebuffer buffer;
func0f0d5484(&buffer, data, 10);
savebuffer_read_string(&buffer, dst, addlinebreak);
savebuffer_prepare_string(&buffer, bitstring, MAX_USERSTRING_LEN);
savebuffer_read_string(&buffer, cstring, addlinebreak);
}
#if VERSION >= VERSION_NTSC_1_0
void func0f0d5690(u8 *dst, char *src)
/**
* Convert a zero-terminated or newline-terminated C string
* to a savefile bitstring.
*
* The C string is also terminated at length MAX_USERSTRING_LEN.
*/
void savebuffer_cstring_to_bitstring(u8 *bitstring, char *cstring)
{
struct savebuffer buffer;
bool done = false;
s32 i;
func0f0d5484(&buffer, dst, 10);
savebuffer_prepare_string(&buffer, bitstring, MAX_USERSTRING_LEN);
for (i = 0; i < 10; i++) {
for (i = 0; i < MAX_USERSTRING_LEN; i++) {
if (!done) {
if (src[i] == '\0') {
if (cstring[i] == '\0') {
done = true;
} else if (src[i] == '\n') {
} else if (cstring[i] == '\n') {
done = true;
} else {
u32 c = src[i];
savebuffer_write_bits(&buffer, c, 8, dst);
u32 c = cstring[i];
savebuffer_align_to_buffer(&buffer, c, 8, bitstring);
}
}
if (done) {
savebuffer_write_bits(&buffer, '\0', 8, dst);
savebuffer_align_to_buffer(&buffer, '\0', 8, bitstring);
}
}
}
@ -570,8 +597,8 @@ void func0f0d5690(u8 *dst, char *src)
void savebuffer_write_guid(struct savebuffer *buffer, struct fileguid *guid)
{
savebuffer_or(buffer, guid->fileid, 7);
savebuffer_or(buffer, guid->deviceserial, 13);
savebuffer_write_bits(buffer, guid->fileid, 7);
savebuffer_write_bits(buffer, guid->deviceserial, 13);
}
void savebuffer_read_guid(struct savebuffer *buffer, struct fileguid *guid)
@ -608,8 +635,8 @@ void format_time(char *dst, s32 time60, s32 precision)
}
#if VERSION >= VERSION_NTSC_1_0
void func0f0d5a7c(void)
void ortho_reset(void)
{
var80070f10 = 0;
g_OrthoViewport = NULL;
}
#endif

View File

@ -982,7 +982,7 @@ Gfx *sight_draw_skedar(Gfx *gdl, bool sighton)
g_Vars.currentplayer->sighttimer240 = 0;
}
gdl = func0f0d479c(gdl);
gdl = ortho_begin(gdl);
gSPClearGeometryMode(gdl++, G_CULL_BOTH);
gSPSetGeometryMode(gdl++, G_SHADE | G_SHADING_SMOOTH);
@ -1132,7 +1132,7 @@ Gfx *sight_draw_skedar(Gfx *gdl, bool sighton)
gdl = sight_draw_skedar_triangle(gdl, x + 2, y + 0, DIR_LEFT, colour);
}
gdl = func0f0d49c8(gdl);
gdl = ortho_end(gdl);
return gdl;
}
@ -1301,7 +1301,7 @@ Gfx *sight_draw_maian(Gfx *gdl, bool sighton)
vertices = gfx_allocate_vertices(8);
colours = gfx_allocate_colours(2);
gdl = func0f0d479c(gdl);
gdl = ortho_begin(gdl);
gSPClearGeometryMode(gdl++, G_CULL_BOTH);
gSPSetGeometryMode(gdl++, G_SHADE | G_SHADING_SMOOTH);
@ -1358,7 +1358,7 @@ Gfx *sight_draw_maian(Gfx *gdl, bool sighton)
gSPVertex(gdl++, vertices, 8, 0);
gSPTri4(gdl++, 0, 4, 5, 5, 3, 6, 7, 6, 1, 4, 7, 2);
gdl = func0f0d49c8(gdl);
gdl = ortho_end(gdl);
gdl = text_begin_boxmode(gdl, 0x00ff0028);
// Draw border over inner points

View File

@ -492,9 +492,9 @@ Gfx *text_enable_holo_ray(Gfx *gdl)
gSPDisplayList(gdl++, g_TextHoloRayGdl);
gdl = func0f0d4c80(gdl);
gdl = ortho_holoray_end(gdl);
g_TextHoloRayGdl = func0f0d4a3c(g_TextHoloRayGdl, 0);
g_TextHoloRayGdl = ortho_holoray_begin(g_TextHoloRayGdl, 0);
g_TextLastBlendY = -1;
@ -1541,7 +1541,7 @@ Gfx *text_render_char_v2(Gfx *gdl, s32 *x, s32 *y, struct fontchar *curchar, str
text_calculate_blend_distance(*y + shadowoffset);
if (g_TextBlendDistance >= *x / g_UiScaleX && *x / g_UiScaleX + curchar->width * g_TextScaleX >= g_TextBlendDistance) {
g_TextHoloRayGdl = menugfx_draw_plane(g_TextHoloRayGdl,
g_TextHoloRayGdl = ortho_draw_holoray(g_TextHoloRayGdl,
g_TextBlendDistance,
curchar->baseline * var80080108jf + sp90,
g_TextBlendDistance,
@ -1552,7 +1552,7 @@ Gfx *text_render_char_v2(Gfx *gdl, s32 *x, s32 *y, struct fontchar *curchar, str
}
if (g_TextBlendDistance - 3 >= *x / g_UiScaleX && *x / g_UiScaleX + curchar->width * g_TextScaleX >= g_TextBlendDistance - 3) {
g_TextHoloRayGdl = menugfx_draw_plane(g_TextHoloRayGdl,
g_TextHoloRayGdl = ortho_draw_holoray(g_TextHoloRayGdl,
g_TextBlendDistance,
curchar->baseline * var80080108jf + sp90,
g_TextBlendDistance,
@ -1656,7 +1656,7 @@ Gfx *text_render_char_v2(Gfx *gdl, s32 *x, s32 *y, struct fontchar *curchar, str
text_calculate_blend_distance(*y + shadowoffset);
if (g_TextBlendDistance >= *x / g_UiScaleX && *x / g_UiScaleX + curchar->width * g_TextScaleX >= g_TextBlendDistance) {
g_TextHoloRayGdl = menugfx_draw_plane(g_TextHoloRayGdl,
g_TextHoloRayGdl = ortho_draw_holoray(g_TextHoloRayGdl,
g_TextBlendDistance,
curchar->baseline + sp90,
g_TextBlendDistance,
@ -1667,7 +1667,7 @@ Gfx *text_render_char_v2(Gfx *gdl, s32 *x, s32 *y, struct fontchar *curchar, str
}
if (g_TextBlendDistance - 3 >= *x / g_UiScaleX && *x / g_UiScaleX + curchar->width * g_TextScaleX >= g_TextBlendDistance - 3) {
g_TextHoloRayGdl = menugfx_draw_plane(g_TextHoloRayGdl,
g_TextHoloRayGdl = ortho_draw_holoray(g_TextHoloRayGdl,
g_TextBlendDistance,
curchar->baseline + sp90,
g_TextBlendDistance,

View File

@ -331,7 +331,7 @@ Gfx *title_render_legal(Gfx *gdl)
if (g_LegalEnabled) {
gdl = title_clear(gdl);
#if VERSION == VERSION_JPN_FINAL
gdl = func0f0d479c(gdl);
gdl = ortho_begin(gdl);
#endif
gdl = text_begin(gdl);

View File

@ -161,10 +161,10 @@ extern bool g_CutsceneSkipRequested;
extern f32 g_CutsceneCurTotalFrame60f;
extern s16 g_SpawnPoints[];
extern s32 g_NumSpawnPoints;
extern s32 var8009de90;
extern s32 var8009de94;
extern s32 g_MenuProjectFromX;
extern s32 g_MenuProjectFromY;
extern s32 g_HolorayMinY;
extern s32 g_HolorayMaxY;
extern s32 g_HolorayProjectFromX;
extern s32 g_HolorayProjectFromY;
extern u8 g_MpSelectedPlayersForStats[MAX_PLAYERS];
extern char g_CheatMarqueeString[];
extern u8 *g_BlurBuffer;

View File

@ -30,6 +30,7 @@
#define MAX_SHIELDHITS 20
#define MAX_SQUADRONS 16
#define MAX_TEAMS 8
#define MAX_USERSTRING_LEN 10
#define NUM_BOTDIFFS 6
#define NUM_CYCLEABLE_WEAPONS 45

View File

@ -4,23 +4,23 @@
#include "data.h"
#include "types.h"
Gfx *func0f0d479c(Gfx *gdl);
Gfx *func0f0d49c8(Gfx *gdl);
Gfx *func0f0d4a3c(Gfx *gdl, s32 arg1);
Gfx *func0f0d4c80(Gfx *gdl);
Gfx *menugfx_draw_plane(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, u32 colour1, u32 colour2, s32 type);
void savebuffer_or(struct savebuffer *buffer, u32 arg1, s32 arg2);
Gfx *ortho_begin(Gfx *gdl);
Gfx *ortho_end(Gfx *gdl);
Gfx *ortho_holoray_begin(Gfx *gdl, s32 type);
Gfx *ortho_holoray_end(Gfx *gdl);
Gfx *ortho_draw_holoray(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, u32 colour1, u32 colour2, s32 type);
void savebuffer_write_bits(struct savebuffer *buffer, u32 arg1, s32 arg2);
u32 savebuffer_read_bits(struct savebuffer *buffer, s32 offset);
void savebuffer_clear(struct savebuffer *buffer);
void func0f0d5484(struct savebuffer *buffer, u8 *data, u8 len);
void func0f0d54c4(struct savebuffer *buffer);
void savebuffer_reset(struct savebuffer *buffer);
void savebuffer_prepare_string(struct savebuffer *buffer, u8 *data, u8 len);
void savebuffer_print(struct savebuffer *buffer);
void savebuffer_read_string(struct savebuffer *buffer, char *dst, bool addlinebreak);
void func0f0d55a4(struct savebuffer *buffer, char *src);
void func0f0d564c(u8 *data, char *dst, bool addlinebreak);
void func0f0d5690(u8 *dst, char *buffer);
void savebuffer_write_string(struct savebuffer *buffer, char *src);
void savebuffer_bitstring_to_cstring(u8 *data, char *dst, bool addlinebreak);
void savebuffer_cstring_to_bitstring(u8 *dst, char *buffer);
void savebuffer_write_guid(struct savebuffer *buffer, struct fileguid *guid);
void savebuffer_read_guid(struct savebuffer *buffer, struct fileguid *guid);
void format_time(char *dst, s32 time60, s32 precision);
void func0f0d5a7c(void);
void ortho_reset(void);
#endif

View File

@ -3936,7 +3936,7 @@ struct menu {
};
struct gamefile {
/*0x00*/ char name[11];
/*0x00*/ char name[MAX_USERSTRING_LEN + 1];
/*0x0b*/ u8 thumbnail : 5; // stage index of the image to show on file select screen
/*0x0b*/ u8 autodifficulty : 3;
/*0x0c*/ u8 autostageindex;
@ -3950,7 +3950,7 @@ struct gamefile {
};
struct mpchrconfig {
/*0x00*/ char name[15];
/*0x00*/ char name[MAX_USERSTRING_LEN + 5];
/*0x0f*/ u8 mpheadnum;
/*0x10*/ u8 mpbodynum;
/*0x11*/ u8 team;
@ -4024,7 +4024,7 @@ struct missionconfig {
};
struct mpsetup {
/*0x800acb88*/ char name[12];
/*0x800acb88*/ char name[MAX_USERSTRING_LEN + 2];
/*0x800acb94*/ u32 options;
/*0x800acb98*/ u8 scenario;
/*0x800acb99*/ u8 stagenum;
@ -4046,7 +4046,7 @@ struct mpsetup {
};
struct bossfile {
/*0x00*/ char teamnames[MAX_TEAMS][12];
/*0x00*/ char teamnames[MAX_TEAMS][MAX_USERSTRING_LEN + 2];
/*0x60*/ u8 locktype;
/*0x61*/ u8 unk89;
/*0x62*/ u8 usingmultipletunes;