| Mars+ Lander | Title: | Mars+ Lander | Category: | Game/Landing | Release Date: | 2019-12-06 | Language: | English | Size: | 64K | Machine: | PAL & NTSC | Code Type: | Basic + Machine code | Distribution: | Freeware | | | Code by: | raze | Notes: | AKA MarsPlus Lander. |
No votes yet.
|
|
|
| |
| Compos | Compos | Category | Rank | Score | Notes |
RetroProgramming Italia Lander Challenge | | 0 | (n/a) | Due to some controversy raised during the trial phase, it was decided for a generic evaluation that does not produce any ranking. |
| |
| Description | MARS+ LANDER
Giuseppe Mignogna (novembre 2019)
Introduzione ----------------- Questo software è stato testato con gli emulatori Yape 1.1.7 e plus4emu 1.2.9.2. Il codice è stato sviluppato usando il cross-compiler cc65 e l'editor basic del plus/4. Il gioco compilato è presente sull'immagine del disco mars.d64. Per caricarlo con un emulatore, associare l'immagine del disco al drive 8 e dare il comando DLOAD "MARS". Una volta terminato il caricamento, digitare il comando RUN. Sullo stesso disco è presente anche un'immagine di presentazione che può essere caricata con DLOAD "TITLESCR".
Descrizione gioco ----------------------- Scopo del gioco è far atterrare una navicella spaziale sulla sua piattaforma, cercando di evitare di danneggiarla e cercando di non far terminare il carburante. La navicella si danneggia se tocca il terreno (anche piano) o la piattaforma, se troppo veloce o non è centrata. Sono presenti anche delle meteore che ugualmente possono danneggiare la navicella.
La navicella si pilota attraverso i tasti cursore destra, sinistra e su.
Descrizione codice ------------------------ Per questo gioco ho sperimentato una tecnica che mi ha permesso di usare il linguaggio basic ed al tempo stesso il linguaggio C. Attraverso la modifica dei puntatori di inizio e fine basic ho diviso la memoria del plus/4 in due aree principali, una dedicata al codice basic ed una al codice l/m (ovvero al codice C compilato). Tutte e due queste aree di trovano dopo la memoria dedicata alla bitmap grafica.
Una volta modificati i puntatori, lo sviluppo della parte basic è avvenuto normalmente, usando l'editor del plus/4 (non è stato utilizzato CBM prg Studio perché avrebbe complicato troppo le cose). Il codice C invece è stato realizzato sotto Windows usando Notepad++ e compilato usando cc65.
Il codice basic si occupa di: - attivare la modalità grafica e modificare i puntatori del basic; - disegnare la schermata introduttiva; - suonare la musica introduttiva; - disegnare lo scenario di gioco; - gestire i livelli; - richiamare il codice l/m che esegue il gioco vero e proprio. In particolare, è possibile richiamare una specifica procedura con i relativi parametri attraverso l'uso di alcune locazioni di memoria condivise.
Il codice C (compilato in linguaggio macchina) si occupa di: - gestire l'input dell'utente; - disegnare e far muovere lo sprite della navicella; - disegnare e far muovere gli sprite delle meteore; - aggiornare la barra del carburante e le icone che indicano il danneggiamento della navicella; - rilevare le collisioni con il terreno e le meteore; - disegnare i pixel che simulano l'esplosione della navicella.
In particolare, è degna di nota la procedura che si occupa di disegnare gli sprite e di rilevarne le collisioni. È in grado di disegnare sprite con dimensioni variabili di blocchi da 8 pixel per lato (ad esempio, 1x1, 2x2, 3x2, 2x3, 4x4 blocchi da 8 pixel, ecc.). Può disegnare gli sprite quasi in ogni punto dello schermo e di rilevare collisioni anche di un singolo pixel su di un altro singolo pixel, che sia di background o di un altro sprite. Al momento è sufficientemente veloce (ma c'è spazio per delle ottimizzazioni, come in tutto il codice del resto) e non gestisce i colori. |
| |
Copyright © Plus/4 World Team, 2001-2024. Support Plus/4 World on Patreon |