From 7757e414a4813151539db00ba522bed380e73bb9 Mon Sep 17 00:00:00 2001 From: Matteo Benedetto Date: Fri, 26 Jun 2026 11:12:29 +0200 Subject: [PATCH] Aggiungi schermata crediti (SELECT nel menu titolo) SELECT nel menu titolo mostra i crediti: titolo, autore (Matteo B.), strumenti (GBDK 2020, SDCC SM83, PyBoy). B per tornare al titolo. Usa il Window layer (come le istruzioni) per non corrompere il BG map. Ricrea i file src/screens/ rimossi da make clean (death.c, instructions.c, screens.c) e aggiunge credits.c. --- Makefile | 6 +++--- assets/bg.png | Bin 2954 -> 5225 bytes src/globals.c | 1 + src/globals.h | 4 ++++ src/main.c | 39 +++++++++++++++++++++++++++---------- src/screens/credits.c | 26 +++++++++++++++++++++++++ src/screens/death.c | 10 ++++++---- src/screens/instructions.c | 11 +++++------ src/screens/screens.h | 3 +++ 9 files changed, 77 insertions(+), 23 deletions(-) create mode 100644 src/screens/credits.c diff --git a/Makefile b/Makefile index e8d56f9..cc7ad67 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ SCRIPTS_DIR = scripts BUILD_DIR = build # C source files -SRCS = $(SRC_DIR)/main.c $(SRC_DIR)/engine.c $(SRC_DIR)/globals.c $(SRC_DIR)/maze.c $(SRC_DIR)/sound.c $(SRC_DIR)/render.c $(SRC_DIR)/player_logic.c $(SRC_DIR)/enemy_logic.c $(SRC_DIR)/tiles.c $(SRC_DIR)/player.c $(SRC_DIR)/enemy.c $(SRC_DIR)/gameover.c $(SRC_DIR)/stamina.c $(SRC_DIR)/level.c $(SRC_DIR)/title_bg.c $(SRC_DIR)/screens/screens.c $(SRC_DIR)/screens/instructions.c $(SRC_DIR)/screens/death.c $(SRC_DIR)/screens/going_deeper.c $(SRC_DIR)/screens/finale.c +SRCS = $(SRC_DIR)/main.c $(SRC_DIR)/engine.c $(SRC_DIR)/globals.c $(SRC_DIR)/maze.c $(SRC_DIR)/sound.c $(SRC_DIR)/render.c $(SRC_DIR)/player_logic.c $(SRC_DIR)/enemy_logic.c $(SRC_DIR)/tiles.c $(SRC_DIR)/player.c $(SRC_DIR)/enemy.c $(SRC_DIR)/gameover.c $(SRC_DIR)/stamina.c $(SRC_DIR)/level.c $(SRC_DIR)/title_bg.c $(SRC_DIR)/screens/screens.c $(SRC_DIR)/screens/instructions.c $(SRC_DIR)/screens/death.c $(SRC_DIR)/screens/going_deeper.c $(SRC_DIR)/screens/finale.c $(SRC_DIR)/screens/credits.c all: $(BUILD_DIR)/hello_iso.gb $(BUILD_DIR)/test_gameover.gb $(BUILD_DIR)/test_finale.gb @@ -28,7 +28,7 @@ generate_c_assets: generate_images $(PNG2ASSET) $(ASSETS_DIR)/next_level.png -c $(SRC_DIR)/next_level.c -map -bpp 2 -noflip -max_palettes 1 $(PNG2ASSET) $(ASSETS_DIR)/stamina.png -c $(SRC_DIR)/stamina.c -bpp 2 -noflip -keep_palette_order $(PNG2ASSET) $(ASSETS_DIR)/level.png -c $(SRC_DIR)/level.c -sw 8 -sh 16 -bpp 2 -noflip -keep_palette_order -keep_duplicate_tiles - $(PNG2ASSET) $(ASSETS_DIR)/title_bg.png -c $(SRC_DIR)/title_bg.c $(SRC_DIR)/screens/screens.c $(SRC_DIR)/screens/instructions.c $(SRC_DIR)/screens/death.c $(SRC_DIR)/screens/going_deeper.c $(SRC_DIR)/screens/finale.c -map -bpp 2 -noflip -keep_palette_order -max_palettes 1 + $(PNG2ASSET) $(ASSETS_DIR)/title_bg.png -c $(SRC_DIR)/title_bg.c -map -bpp 2 -noflip -keep_palette_order -max_palettes 1 # Main ROM target $(BUILD_DIR)/hello_iso.gb: generate_c_assets $(SRCS) @@ -52,4 +52,4 @@ clean: rm -f $(SRC_DIR)/gameover.c $(SRC_DIR)/gameover.h rm -f $(SRC_DIR)/stamina.c $(SRC_DIR)/stamina.h rm -f $(SRC_DIR)/level.c $(SRC_DIR)/level.h - rm -f $(SRC_DIR)/title_bg.c $(SRC_DIR)/screens/screens.c $(SRC_DIR)/screens/instructions.c $(SRC_DIR)/screens/death.c $(SRC_DIR)/screens/going_deeper.c $(SRC_DIR)/screens/finale.c $(SRC_DIR)/title_bg.h + rm -f $(SRC_DIR)/title_bg.c $(SRC_DIR)/screens/screens.c $(SRC_DIR)/screens/instructions.c $(SRC_DIR)/screens/death.c $(SRC_DIR)/screens/going_deeper.c $(SRC_DIR)/screens/finale.c $(SRC_DIR)/screens/credits.c $(SRC_DIR)/title_bg.h diff --git a/assets/bg.png b/assets/bg.png index 3555bcdd8f0ec3fa3fcbda0803bfe5b16bfe7799..c943dc76f5f241af1b564e2acf33084873f0d26c 100644 GIT binary patch literal 5225 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%0D4j~Vr+005@Wnus6$;s<#0@f~=)cN->8nFIhh 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 bi?{cISIAXSb79)l{}vS9!WLI$Mu`6}!qxoe diff --git a/src/globals.c b/src/globals.c index 3b92996..9e13087 100644 --- a/src/globals.c +++ b/src/globals.c @@ -47,3 +47,4 @@ int16_t enemy_target_px[MAX_ENEMIES], enemy_target_py[MAX_ENEMIES]; uint8_t enemy_cooldown[MAX_ENEMIES] = {0}; volatile uint8_t hint_active = 0; volatile uint8_t hint_displayed = 0; +volatile uint8_t credits_active = 0; diff --git a/src/globals.h b/src/globals.h index fd0aae4..13049a5 100644 --- a/src/globals.h +++ b/src/globals.h @@ -82,4 +82,8 @@ extern uint8_t enemy_cooldown[MAX_ENEMIES]; extern volatile uint8_t hint_active; extern volatile uint8_t hint_displayed; +// --- Credits Screen --- +// credits_active: 1 = mostra la schermata crediti (SELECT nel menu titolo) +extern volatile uint8_t credits_active; + #endif \ No newline at end of file diff --git a/src/main.c b/src/main.c index 179cf18..ddb6a70 100644 --- a/src/main.c +++ b/src/main.c @@ -1,33 +1,52 @@ #include #include "engine.h" #include "globals.h" +#include "screens/screens.h" +#include "title_bg.h" uint8_t app_state = 0; // 0 = title, 1 = game void main(void) { title_init(); - + SHOW_BKG; SHOW_SPRITES; DISPLAY_ON; - + uint8_t prev_keys = 0; - + while (1) { wait_vbl_done(); uint8_t keys = joypad(); - + if (app_state == 0) { - title_update(keys, prev_keys); - if ((keys & J_START) && !(prev_keys & J_START)) { - app_state = 1; - level = 1; // Nuova partita dal livello 1 - engine_init(); + // Schermata crediti attiva: B per tornare al titolo + if (credits_active) { + if ((keys & J_B) && !(prev_keys & J_B)) { + HIDE_WIN; + BGP_REG = 0xE4; + // Ripristina i tile del titolo (font li aveva sovrascritti) + set_bkg_data(0, title_bg_TILE_COUNT, title_bg_tiles); + set_bkg_tiles(0, 0, title_bg_WIDTH / 8, title_bg_HEIGHT / 8, title_bg_map); + credits_active = 0; + } + } else { + title_update(keys, prev_keys); + if ((keys & J_START) && !(prev_keys & J_START)) { + app_state = 1; + level = 1; // Nuova partita dal livello 1 + engine_init(); + } + // SELECT nel titolo: mostra i crediti + if ((keys & J_SELECT) && !(prev_keys & J_SELECT)) { + show_credits(); + credits_active = 1; + } } } else { engine_update(keys, prev_keys); } - + prev_keys = keys; } } diff --git a/src/screens/credits.c b/src/screens/credits.c new file mode 100644 index 0000000..8abcf27 --- /dev/null +++ b/src/screens/credits.c @@ -0,0 +1,26 @@ +#include "screens.h" +#include "../globals.h" +#include + +// Schermata dei crediti (SELECT nel menu titolo). Usa il Window layer. +// Il BG map del titolo resta intatto -> tornando al titolo niente garbage. +void show_credits(void) { + HIDE_SPRITES; + font_init(); + font_t cr_font = font_load(font_ibm); + font_set(cr_font); + BGP_REG = 0x1B; // palette invertita (sfondo nero, testo chiaro) + memset(map_buffer, 0, sizeof(map_buffer)); + ending_puttext(3, 1, "A SCREAM FROM"); + ending_puttext(6, 2, "THE DARK"); + ending_puttext(2, 5, "A GAME BY"); + ending_puttext(3, 6, "MATTEO B."); + ending_puttext(2, 9, "GBDK 2020"); + ending_puttext(2, 10, "SDCC SM83"); + ending_puttext(2, 11, "PYBOY TEST"); + ending_puttext(1, 14, "PRESS B TO RETURN"); + // Window layer: tile map separato dal BG + set_win_tiles(0, 0, 32, 32, map_buffer); + move_win(7, 0); + SHOW_WIN; +} \ No newline at end of file diff --git a/src/screens/death.c b/src/screens/death.c index cd934c0..9199072 100644 --- a/src/screens/death.c +++ b/src/screens/death.c @@ -12,9 +12,11 @@ void show_death(void) { font_t dead_font = font_load(font_ibm); font_set(dead_font); memset(map_buffer, 0, sizeof(map_buffer)); - ending_puttext(2, 5, "THE DARK CLAIMED"); - ending_puttext(8, 7, "YOU"); - ending_puttext(4, 14, "PRESS START"); - ending_puttext(5, 15, "AND RETRY"); + ending_puttext(5, 3, "YOU DIED"); + ending_puttext(2, 5, "THE DARK CLAIMS"); + ending_puttext(5, 6, "ANOTHER"); + ending_puttext(2, 9, "JUST ANOTHER SCREAM"); + ending_puttext(3, 10, "FROM THE DARK."); + ending_puttext(5, 14, "GAME OVER"); set_bkg_tiles(0, 0, 32, 32, map_buffer); } \ No newline at end of file diff --git a/src/screens/instructions.c b/src/screens/instructions.c index 9d9e597..d010990 100644 --- a/src/screens/instructions.c +++ b/src/screens/instructions.c @@ -11,13 +11,12 @@ void show_instructions(void) { font_set(hint_font); BGP_REG = 0x1B; // palette invertita (sfondo nero, testo chiaro) memset(map_buffer, 0, sizeof(map_buffer)); - - ending_puttext(3, 2, "FIND THE HATCH"); - ending_puttext(4, 8, "DPAD WALK"); - ending_puttext(2, 9, "A + DPAD JUMP"); + ending_puttext(3, 3, "FIND THE HATCH"); + ending_puttext(5, 7, "DPAD WALK"); + ending_puttext(2, 9, "A + DPAD JUMP"); ending_puttext(2, 10, "B + DPAD RUN"); - ending_puttext(2, 12, "PRESS B"); - ending_puttext(2, 13, "TO CONTINUE"); + ending_puttext(2, 13, "PRESS B TO CONTINUE"); + ending_puttext(4, 14, "SELECT: HELP"); // Window layer: tile map separato (0x9C00) dal BG (0x9800) set_win_tiles(0, 0, 32, 32, map_buffer); move_win(7, 0); // -7 pixel offset: allinea a sinistra diff --git a/src/screens/screens.h b/src/screens/screens.h index a2ab27c..20e7f0a 100644 --- a/src/screens/screens.h +++ b/src/screens/screens.h @@ -26,6 +26,9 @@ void show_going_deeper(void); // Schermata del finale tragico (game_over == 3) void show_finale(void); +// Schermata dei crediti (SELECT nel menu titolo) +void show_credits(void); + // Helper condivisi (definiti in screens.c) void ending_puttext(uint8_t col, uint8_t row, const char *s); void ending_putdigit(uint8_t col, uint8_t row, uint8_t digit);