diff --git a/src/game/activemenu.c b/src/game/activemenu.c index d51c80ce5..9cb2d128d 100644 --- a/src/game/activemenu.c +++ b/src/game/activemenu.c @@ -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++) { diff --git a/src/game/bondview.c b/src/game/bondview.c index 615e4786b..ab8cee173 100644 --- a/src/game/bondview.c +++ b/src/game/bondview.c @@ -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; diff --git a/src/game/bossfile.c b/src/game/bossfile.c index a13cdf8af..e1a138f1e 100644 --- a/src/game/bossfile.c +++ b/src/game/bossfile.c @@ -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(); diff --git a/src/game/credits.c b/src/game/credits.c index 8ee51a56f..0a4e24e3c 100644 --- a/src/game/credits.c +++ b/src/game/credits.c @@ -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) { diff --git a/src/game/filemgr.c b/src/game/filemgr.c index 00789ca07..9bea6b6a3 100644 --- a/src/game/filemgr.c +++ b/src/game/filemgr.c @@ -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); diff --git a/src/game/gamefile.c b/src/game/gamefile.c index 3755470e2..569bdb297 100644 --- a/src/game/gamefile.c +++ b/src/game/gamefile.c @@ -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); diff --git a/src/game/hudmsg.c b/src/game/hudmsg.c index df11387bf..0dbc0c680 100644 --- a/src/game/hudmsg.c +++ b/src/game/hudmsg.c @@ -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; diff --git a/src/game/lv.c b/src/game/lv.c index a12144fd4..171571997 100644 --- a/src/game/lv.c +++ b/src/game/lv.c @@ -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 diff --git a/src/game/menu.c b/src/game/menu.c index 97447f90e..5d56bd041 100644 --- a/src/game/menu.c +++ b/src/game/menu.c @@ -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; diff --git a/src/game/menugfx.c b/src/game/menugfx.c index 70ed90cf8..537cb998b 100644 --- a/src/game/menugfx.c +++ b/src/game/menugfx.c @@ -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; } diff --git a/src/game/menuitem.c b/src/game/menuitem.c index 270b5b43f..b906e2139 100644 --- a/src/game/menuitem.c +++ b/src/game/menuitem.c @@ -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); diff --git a/src/game/mplayer/mplayer.c b/src/game/mplayer/mplayer.c index 8054a00a7..3f5449758 100644 --- a/src/game/mplayer/mplayer.c +++ b/src/game/mplayer/mplayer.c @@ -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; } diff --git a/src/game/mplayer/scenarios.c b/src/game/mplayer/scenarios.c index 155a28d59..1d9c9976d 100644 --- a/src/game/mplayer/scenarios.c +++ b/src/game/mplayer/scenarios.c @@ -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); } } diff --git a/src/game/mplayer/scenarios/kingofthehill.inc b/src/game/mplayer/scenarios/kingofthehill.inc index d60402195..71dfcd6d4 100644 --- a/src/game/mplayer/scenarios/kingofthehill.inc +++ b/src/game/mplayer/scenarios/kingofthehill.inc @@ -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) diff --git a/src/game/mplayer/setup.c b/src/game/mplayer/setup.c index a78d45430..779fb2d5b 100644 --- a/src/game/mplayer/setup.c +++ b/src/game/mplayer/setup.c @@ -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; diff --git a/src/game/nbomb.c b/src/game/nbomb.c index bca1562c3..854e738cb 100644 --- a/src/game/nbomb.c +++ b/src/game/nbomb.c @@ -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; diff --git a/src/game/savebuffer.c b/src/game/savebuffer.c index f17f53490..d563abd5a 100644 --- a/src/game/savebuffer.c +++ b/src/game/savebuffer.c @@ -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 diff --git a/src/game/sight.c b/src/game/sight.c index ffa3c53b4..533c0a80a 100644 --- a/src/game/sight.c +++ b/src/game/sight.c @@ -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 diff --git a/src/game/text.c b/src/game/text.c index 2b3b37917..03f6aad0e 100644 --- a/src/game/text.c +++ b/src/game/text.c @@ -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, diff --git a/src/game/title.c b/src/game/title.c index 72f4eb779..eb57c6e03 100644 --- a/src/game/title.c +++ b/src/game/title.c @@ -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); diff --git a/src/include/bss.h b/src/include/bss.h index a4833d49c..41bbdc89e 100644 --- a/src/include/bss.h +++ b/src/include/bss.h @@ -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; diff --git a/src/include/constants.h b/src/include/constants.h index 852141010..8d316cb9b 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -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 diff --git a/src/include/game/savebuffer.h b/src/include/game/savebuffer.h index 46110c94e..0229f1cd6 100644 --- a/src/include/game/savebuffer.h +++ b/src/include/game/savebuffer.h @@ -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 diff --git a/src/include/types.h b/src/include/types.h index 6821b506e..3a8aef7f8 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -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;