Death screen: usa assets/claimed.png; Going Deeper ora testuale
- assets/claimed.png (160x144, 2-bit GB) usata come schermata di morte al
posto dello schermo nero. Il tile data e' caricato con set_bkg_data
e la mappa 20x18 con set_bkg_tiles; il GAME OVER metasprite resta
sovrapposto sopra l'immagine.
- Going Deeper (game_over==2) ora usa una schermata testuale col font
IBM ('GOING DEEPER / LEVEL N') invece dell'immagine next_level.png.
Necessario per ridurre l'occupazione ROM (la ROM era >32KB con
title_bg + next_level + claimed + maze + tutto il resto) e far
entrare la schermata claimed. Rimosso next_level.c/.h e l'asset.
- engine.c: nuovi helper ending_putdigit per scrivere una cifra;
game_over==2/3 entrambi usano il font IBM per le schermate di
transizione.
- Makefile: rimosso next_level da SRCS e dal clean; aggiunto
claimed.png/png2asset/-c claimed.c.
Verificato via PyBoy: schermata di morte mostra l'immagine claimed
(sfondo nero + carta 128x96 centrata), going deeper mostra il testo
'GOING DEEPER / LEVEL 2'.
This commit is contained in:
+26
-8
@@ -17,9 +17,9 @@
|
||||
#include "player.h"
|
||||
#include "enemy.h"
|
||||
#include "gameover.h"
|
||||
#include "next_level.h"
|
||||
#include "stamina.h"
|
||||
#include "level.h"
|
||||
#include "claimed.h"
|
||||
#include "title_bg.h"
|
||||
|
||||
/**
|
||||
@@ -205,6 +205,12 @@ static void ending_puttext(uint8_t col, uint8_t row, const char *s) {
|
||||
}
|
||||
}
|
||||
|
||||
static void ending_putdigit(uint8_t col, uint8_t row, uint8_t digit) {
|
||||
if (col < 32) {
|
||||
map_buffer[(uint16_t)row * 32 + col] = (uint8_t)(digit + ('0' - ' '));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loop Principale di Aggiornamento del Gioco (chiamato ad ogni Frame ~60 FPS).
|
||||
* Questo metodo funge da "Direttore d'Orchestra", delegando i compiti ai moduli specializzati.
|
||||
@@ -222,16 +228,28 @@ void engine_update(uint8_t keys, uint8_t prev_keys) {
|
||||
// Quando scade il timer drammatico...
|
||||
if (game_over_timer == 0) {
|
||||
if (game_over == 1) {
|
||||
// ...Svuota lo schermo
|
||||
memset(map_buffer, 0, sizeof(map_buffer));
|
||||
set_bkg_tiles(0, 0, 32, 32, map_buffer);
|
||||
} else if (game_over == 2) {
|
||||
// Mostra la schermata "Going Deeper"
|
||||
// Sconfitta: schermata "claimed" a tutto schermo + metasprite GAME OVER
|
||||
HIDE_SPRITES;
|
||||
SCX_REG = 0;
|
||||
SCY_REG = 0;
|
||||
set_bkg_data(0, next_level_TILE_COUNT, next_level_tiles);
|
||||
set_bkg_tiles(0, 0, 20, 18, next_level_map);
|
||||
BGP_REG = 0xE4; // palette standard (claimed ha la sua)
|
||||
set_bkg_data(0, claimed_TILE_COUNT, claimed_tiles);
|
||||
set_bkg_tiles(0, 0, 20, 18, claimed_map);
|
||||
} else if (game_over == 2) {
|
||||
// Going Deeper: schermata di transizione testuale (font IBM).
|
||||
// (Era un'immagine, sostituita con testo per ridurre l'occupazione ROM
|
||||
// e fare spazio alla schermata "claimed" della morte.)
|
||||
HIDE_SPRITES;
|
||||
SCX_REG = 0;
|
||||
SCY_REG = 0;
|
||||
font_init();
|
||||
font_t gd_font = font_load(font_ibm);
|
||||
font_set(gd_font);
|
||||
memset(map_buffer, 0, sizeof(map_buffer));
|
||||
ending_puttext(2, 7, "GOING DEEPER");
|
||||
ending_puttext(3, 9, "LEVEL");
|
||||
ending_putdigit(9, 9, (uint8_t)(level + 1));
|
||||
set_bkg_tiles(0, 0, 32, 32, map_buffer);
|
||||
} else if (game_over == 3) {
|
||||
// FINALE TRAGICO: livello 8 superato, ma non e' una fuga. La traccia
|
||||
// si e' esaurita, sei intrappolato. Sfondo nero (BGP invertito) + testo
|
||||
|
||||
Reference in New Issue
Block a user