diff --git a/th01/formats/scoredat.hpp b/th01/formats/scoredat.hpp index f74954fc..27b92f90 100644 --- a/th01/formats/scoredat.hpp +++ b/th01/formats/scoredat.hpp @@ -38,10 +38,13 @@ struct scoredat_t { // Returns 0 on success, 1 on failure. int scoredat_load(); -// Loads only the high score for the current [rank] into the resident -// structure. -void scoredat_load_hiscore(); +// Returns the high score for the difficulty previously loaded by +// scoredat_load(). +score_t scoredat_hiscore_get(); // Sets [str] to the null-terminated name at the given [place] for the // difficulty previously loaded by scoredat_load(). void scoredat_name_get(int place, unsigned char str[SCOREDAT_NAME_BYTES + 1]); + +// Frees the previously loaded score file data. +void scoredat_free(void); diff --git a/th01/main/debug.cpp b/th01/main/debug.cpp index fa35f65d..5321e7fa 100644 --- a/th01/main/debug.cpp +++ b/th01/main/debug.cpp @@ -82,7 +82,7 @@ print_stats: frame_delay(3); input_sense(false); if(input_shot) { - stageobj_bgs_free_wrap(); // For the third time, that's not *all*... + stageobj_bgs_free(); // For the third time, that's not *all*... recurse(); } else if(input_strike) { for(int i = 0; i < BOS_ENTITY_SLOT_COUNT; i++) { diff --git a/th01/main/hiscore.cpp b/th01/main/hiscore.cpp deleted file mode 100644 index 1fa02097..00000000 --- a/th01/main/hiscore.cpp +++ /dev/null @@ -1,6 +0,0 @@ -void scoredat_load_hiscore(void) -{ - scoredat_load(); - resident->hiscore = scoredat_hiscore_get(); - scoredat_free(); -} diff --git a/th01/main/stage/stageobj.hpp b/th01/main/stage/stageobj.hpp index 56ce8dc0..4d5de0d5 100644 --- a/th01/main/stage/stageobj.hpp +++ b/th01/main/stage/stageobj.hpp @@ -214,7 +214,6 @@ extern unsigned long stageobj_bgs_size; // Frees any previously allocated [stageobj_bgs]. Always returns 0. bool16 stageobj_bgs_free(void); -bool16 stageobj_bgs_free_wrap(void); // ZUN bloat: Just call the real function. // Blits the backgrounds for all cards and obstacles at their respective // positions, effectively removing those sprites from VRAM. diff --git a/th01/main_01.cpp b/th01/main_01.cpp index 8bb31f8c..b932cf9c 100644 --- a/th01/main_01.cpp +++ b/th01/main_01.cpp @@ -322,19 +322,6 @@ void pascal stage_num_animate(unsigned int stage_num) z_text_clear_inlined(); } -void load_and_init_stuff_used_in_all_stages(void) -{ - scoredat_load_hiscore(); - hud_bg_load("mask.grf"); - player_48x48.load("miko_ac.bos"); - player_48x32.load("miko_ac2.bos"); - ptn_load(PTN_SLOT_STG, PTN_STG_CARDFLIP_FN); - ptn_load(PTN_SLOT_MIKO, "miko.ptn"); - ptn_new(PTN_SLOT_BG_HUD, ((PTN_BG_last - PTN_BG_first) + 1)); - bomb_kuji_load(); - ptn_slot_stg.has_reduced_sprites = false; -} - void stage_entrance(int stage_id, const char* bg_fn, bool16 clear_vram_page_0) { int x; @@ -398,11 +385,6 @@ void stage_entrance(int stage_id, const char* bg_fn, bool16 clear_vram_page_0) #include "th01/main/extend.cpp" #include "th01/main/debug.cpp" -bool16 stageobj_bgs_free_wrap(void) -{ - return stageobj_bgs_free(); -} - // ZUN bloat: This function is only ever (meaningfully) called before process // termination when the standard library heap is destroyed anyway. You might // argue that it's cleaner to free all memory, but then, why doesn't it free @@ -423,13 +405,6 @@ void error_resident_invalid(void) printf(ERROR_RESIDENT_INVALID); } -void pellet_destroy_score_delta_commit(void) -{ - score += pellet_destroy_score_delta; - hud_score_and_cardcombo_render(); - pellet_destroy_score_delta = 0; -} - int8_t boss_id = BID_NONE; // ACTUAL TYPE: boss_id_t void boss_free(void) @@ -563,9 +538,6 @@ int main(void) debug_startup_delay(); } - // ZUN bloat: We just started the program, these are still empty! - graphics_free_redundant_and_incomplete(); - rem_lives = resident->rem_lives; rem_bombs = resident->rem_bombs; player_left = PLAYER_LEFT_START; @@ -582,7 +554,19 @@ int main(void) } coreleft_prev = coreleft(); - load_and_init_stuff_used_in_all_stages(); + + scoredat_load(); + resident->hiscore = scoredat_hiscore_get(); + scoredat_free(); + hud_bg_load("mask.grf"); + player_48x48.load("miko_ac.bos"); + player_48x32.load("miko_ac2.bos"); + ptn_load(PTN_SLOT_STG, PTN_STG_CARDFLIP_FN); + ptn_load(PTN_SLOT_MIKO, "miko.ptn"); + ptn_new(PTN_SLOT_BG_HUD, ((PTN_BG_last - PTN_BG_first) + 1)); + bomb_kuji_load(); + ptn_slot_stg.has_reduced_sprites = false; + z_graph_init(); graph_accesspage_func(0); z_graph_clear(); @@ -887,7 +871,9 @@ int main(void) // the player of the pellet destroy points gained on the last // frame of a final boss. if(pellet_destroy_score_delta) { - pellet_destroy_score_delta_commit(); + score += pellet_destroy_score_delta; + hud_score_and_cardcombo_render(); + pellet_destroy_score_delta = 0; } } // At this point, the player either lost a life or cleared a @@ -952,7 +938,7 @@ int main(void) stageobj_bgs_put_all(); graph_accesspage_func(0); } - stageobj_bgs_free_wrap(); + stageobj_bgs_free(); cards.free(); obstacles.free(); } else { @@ -967,7 +953,7 @@ int main(void) player_gameover_animate(); Shots.unput_and_reset(); Pellets.unput_and_reset(); - stageobj_bgs_free_wrap(); + stageobj_bgs_free(); extend_next = 1; if(boss_id != BID_NONE) { boss_free(); diff --git a/th01/main_19.cpp b/th01/main_19.cpp index cedac73a..b64dc307 100644 --- a/th01/main_19.cpp +++ b/th01/main_19.cpp @@ -35,8 +35,6 @@ #define scoredat_close() file_close() #include "th01/hiscore/scorelod.cpp" -// Returns the high score for the difficulty previously loaded by -// scoredat_load(). score_t scoredat_hiscore_get() { return scoredat_score[0]; @@ -114,4 +112,3 @@ void pascal near str_from_swapped_kanji( } #include "th01/hiscore/regist.cpp" -#include "th01/main/hiscore.cpp"