Autore Topic: Remember Camelot  (Letto 3252 volte)

Uzumaki.Naruto

  • Utente
  • **
  • Post: 201
  • Gioco Preferito: Last ninja 1
Remember Camelot
« il: 05 Maggio 2009, 12:46:18 »
 Recentemente il fatto di riprendere in mano vecchi Papersoft per scansionarli come contributo a questo capolavoro di sito (sviolinata pazzesca   ) ho meditato un po' su quello che erano i videogiochi proposti all'epoca da questa minitestata quindicinale e sulla loro qualità.
A quei tempi non avevo il  C64 ma un ben piu' modesto TI99/4A col quale oltre al basic non andavo visto che per poter programmare il assembler occorrevano alcuni moduli aggiuntivi compreso un'espansione di 32k che si aggiungevano ai 16 di base; ma proprio la scarsa diffusione di software gia pronto per questa macchina mi spinse ad intraprendere l'apprendimento del basic mediate manuali, giornali e riviste tra cui appunto i Papersoft  permettendomi poi in seguito di scrivere giochi del tutto personali.
La rivista Jacksonsoft non è stata di certo la prima che ho acquistato ma da li digitai il primo gioco in basic: la fortuna volle che riuscii ad acquistare proprio la primissima uscita ed il titolo che digitai si chiama "La sfida di Camelot", un gioco in basic in se molto semplice ma divertente e devo dire curato anche graficamente di cui potete dare un occhiata a questi due screenshot.

Visto che qui si in occasione di archiviare molte riviste di cui proprio i Papersoft oltre che compilare e pubblicare i listati basic dedicati al  C 64, ho pensato proprio di convertire alcuni titoli molto carini scritti esclusivamente per la macchina della Texas e che possono essere tranquillamente convertiti per il piccolo  biscottone (volendo alcuni persino sul Vic20 e C16   )
Ho accennato questa cosa gia in chat e fortunatamente sembra essere inizialmente apprezzata; vedremo in seguito!  

Questo thread vuole essere dunque una sorta di diario su questa assurda, inutile(?) ma divertente folle impresa in cui mi accingo ad affrontare con le mie sole modeste conoscenze basic, nonché ovviamente ad aggiornarsi di volta in volta che vi sono passi avanti nella realizzazione di questo "porting" sperando di sfornare qualcosa di apprezzabile.
Inutile dire che vengono accettati commenti di ogni tipo, sfottori vari(non insulti please  ) nel puro spirito del divertimento della cosa.

Beh! Visto che da qualche parte devo cominciare tanto vale partire col giorno "zero" che in realtà è stato ieri 4/5/2009.

Remember Camelot -giono zero-
04/05/2009

Ho appena dato un occhiata alla grafica elaborata nella versione TI99 del gioco "La Sfida di Camelot" e vi sono due aspetti di cui uno negativo l'altro positivo: nel confrontare la gestione grafica dei due piccoli home, noto che sul  :c64: 64 i caratteri predefiniti residenti in memoria non sono del tutto appropriati per riprodurre un caonversione decente e federe alla versione il TI99 il quale ha un indirizzamento dei colori e una gestione delle ridefinizione della grafica molto piu' versatile rispetto al  Commodore .
Quindi inizio a girovagare tra i meandri del manuale di riferimento del programmatore del  C 64 cercando la procedura che permette di ridefinire i caratteri grafici ed indirizzare colori di sfondo singolarmente per ogni carattere di 8x8 pixels: resto quanto meno perplesso nel constatare che per attivare la ridefinizione dei caratteri in memoria debba "prescrivere" queste righe di codice  :dotto:
Citazione
PRINTCHR$(142)              :REM SWITCH TO UPPER CASE
POKE52,48:POKE 56,48:CLR    :REM RESERVE MEMORY FOR CHARACTERS
POKE56334,PEEK(56334)AND254 :REM TURN OFF KEYSCAN INTERRUPT TIMER
POKE1,PEEK(1)AND251         :REM SWITCH IN CHARACTER
FORI=0TO511:POKEI+12288,PEEK(I+53248):NEXT
POKE1,PEEK(1)OR4            :REM SWITCH IN I/O
POKE56334,PEEK(56334)OR1    :REM RESTART KEYSCAN INTERRUPT TIMER
POKE 53272, (PEEK(53272)AND240)+12
RETURN
mentre invece sul piccolo TI99 basta un solo comando!!!!
Comunque l'aspetto positivo è che sul  :c64: 64 almeno posso usare gli sprite per rappresentare almeno i cavalieri con i rispettivi destrieri e dargli una definizione maggiore di quella del TI99 che per altro nella sua versione non fa utilizzo di sprite ma di caratteri ridefiniti...volendo potrei usare gli sprite sul commodore per rappresentare anche le nuvole...magari in movimento. Vedremo!!!
Fatto sta che per affrontare questa prima fase ho bisogno degli strumenti giusti e quindi spulciano sulla selvaggia rete del Web ho trovato una suite davvero completa ed interessante che pare faccia proprio al mio caso che potrete trovare qui.
Si tratta del C64.prg generator che sicuramente molti veterani conosceranno gia e che mi permettera di editare direttamente anche la grafica.
Con questo tool e il "manuale di riferimento del programmatore" credo di essere pronto per questa follia senza frontiere.

Lo so che sono pazzo forse ma fatemi l'in bocca al lupo e magari uscira una conversione carina!!!  B)
 
<---:=[ [Uzumaki Naruto ]=:--->
http://www.msx.org
http://tigameshelf.net
http://www.retrogaminghistory.com
"...Dal fanatismo alla barbarie c'è solo un passo..." Denis Diderot

Uzumaki.Naruto

  • Utente
  • **
  • Post: 201
  • Gioco Preferito: Last ninja 1
Remember Camelot
« Risposta #1 il: 06 Maggio 2009, 09:26:27 »
 Remember Camelot -giorno uno
5/5/2009

Oggi non ho avuto molto tempo tra lavoro e il privato ma sono almeno riuscito a completare per la maggiore la ridefinizione dei caratteri abozzando sommariamente quello che poi mi servirà nel gioco vero e proprio.
Il C64 prg generator si comporta molto bene e mi permette facilmente di codificare la grafica avendo utili riferimenti, risparmiandomi sfogliate intere del manuale di riferimento al programmatore.

Ecco un esempio dei risultati di tale codifica:


Ovviamente manca ancora la colorazione questa immagine è solo indicativa.

Sto gia pensando agli sprite a come animarli: mi piacerebbe usare sprite ad alta risoluzione usandone due per i cavalli e altri due per i cavalieri. Inoltre vorrei animarli ma devo studiare un attimo come cambiare di volta in volta ed in movimento la "pattern" degli sprite col commodore basic V2. Come sempre sarà un lavoraccio rispetto al TI99 ma almeno avra piu' effetto!

Per il titolo non so se usare lo stesso del TI99 o ribattezzarlo: magari potrei chiamarlo proprio Remember Camelot. Che ne dite? :stordita:
<---:=[ [Uzumaki Naruto ]=:--->
http://www.msx.org
http://tigameshelf.net
http://www.retrogaminghistory.com
"...Dal fanatismo alla barbarie c'è solo un passo..." Denis Diderot

Wizkid

  • Data Entry
  • Utente
  • ***
  • Post: 259
  • Gioco Preferito: Druid, Wizball, Last Ninja, Draconus
Remember Camelot
« Risposta #2 il: 07 Maggio 2009, 12:32:18 »
 Devo farti i miei complimenti per il progetto, ho dato un occhiata al software che stai utilizzando e mi sembra davvero ottimo.
In bocca al lupo :)
Fuoco e vento provengono dal cielo, dagli dei del cielo, ma e Crom il tuo dio! Crom che vive nella terra!

Uzumaki.Naruto

  • Utente
  • **
  • Post: 201
  • Gioco Preferito: Last ninja 1
Remember Camelot
« Risposta #3 il: 07 Maggio 2009, 12:51:10 »
 @Wizkid - Grazie per i complimenti e "crepi il lupo" per il prosieguo.

Come ho accennato nel post precendente l'ostacolo piu grande da superare per me, non conoscendo a fondo il commodore basic, sta nel cercare di animare i cavalli durante il movimento dandogli almeno tre frames; magari colgo l'occasione per accettare consigli da chi ha piu esperienza con la programmazione sprite in basic commodore.  :lol:

Nel frattempo continuno ugualmente!  ;)  
<---:=[ [Uzumaki Naruto ]=:--->
http://www.msx.org
http://tigameshelf.net
http://www.retrogaminghistory.com
"...Dal fanatismo alla barbarie c'è solo un passo..." Denis Diderot

Uzumaki.Naruto

  • Utente
  • **
  • Post: 201
  • Gioco Preferito: Last ninja 1
Remember Camelot
« Risposta #4 il: 07 Maggio 2009, 14:34:07 »
 Rmember Camelot -giorno due-
07/05/2009

Ok! Capito i registri del VIC II per animare in movimento uno sprite!

Ora si puo' passare alla programmazione del gioco vero e proprio!  :metallica:  
<---:=[ [Uzumaki Naruto ]=:--->
http://www.msx.org
http://tigameshelf.net
http://www.retrogaminghistory.com
"...Dal fanatismo alla barbarie c'è solo un passo..." Denis Diderot

Wizkid

  • Data Entry
  • Utente
  • ***
  • Post: 259
  • Gioco Preferito: Druid, Wizball, Last Ninja, Draconus
Remember Camelot
« Risposta #5 il: 07 Maggio 2009, 20:45:54 »
 A livello di programmazione non posso aiutarti, ma se ti servisse qualcuno per disegnare gli sprite che ti servono, animazioni comprese, chiedi pure.
Fuoco e vento provengono dal cielo, dagli dei del cielo, ma e Crom il tuo dio! Crom che vive nella terra!

Roberto

  • Administrator
  • Utente
  • *****
  • Post: 2430
    • https://ready64.org
  • Gioco Preferito: Impossible Mission
Remember Camelot
« Risposta #6 il: 08 Maggio 2009, 15:27:51 »
 
Citazione da: "Uzumaki.Naruto"
Ora si puo' passare alla programmazione del gioco vero e proprio!  :metallica:
visto che oggi sono lanciatissimo nel postare smilies pazzi...

 :continuacosi:
Per collaborare, segnalare un errore (o qualsiasi altra comunicazione importante) utilizzare la pagina dei contatti:
https://ready64.org/informazioni/contatti.php

Uzumaki.Naruto

  • Utente
  • **
  • Post: 201
  • Gioco Preferito: Last ninja 1
Remember Camelot
« Risposta #7 il: 10 Maggio 2009, 14:55:16 »
 
Citazione
A livello di programmazione non posso aiutarti, ma se ti servisse qualcuno per disegnare gli sprite che ti servono, animazioni comprese, chiedi pure.

Grazie Wizkid, sei gentile, ma non preoccuparti, le mie modeste doti grafiche fanno parte delle uniche due cose al mondo di cui sono orgoglioso! Piuttosto mi faresti un grandissimo favore se mi compilassi qualche routine di qualche jingle ovviamente in basic: non sarebbe male e non sai che aiuto mi daresti.


Remember Camelot -giorno tre-
09/05/2009

Eccomi di nuovo dopo qualche giorno di pausa causa casini privati risolti grazie a Dio positivamente.
Ho ripreso Remember Camelot, finalmente ho colorato i vari caratteri ridefiniti nella modalita estesa di fondo; è un po' piu' noiosa la procedura di posizionare i vari pezzettini mediante le sole poke rispetto alle "print" ma almeno ottengo il risultato che voglio.
Ho quasi finito la schermata di presentazione e nel frattempo ho completato anche l'animazione degli sprite dei cavalli. Devo solo deciderne il colore piu' adatto alle varieta' cromatiche del C64 che devo essere sincero sono decisamente meno vive rispetto alla macchina Texas. Sul TI99 a parte il movimento "scattoso" ne' i cavalli ne' i cavalieri erano animati, sul commodore invece mi posso divertire a rendere un po piu' vivace la fase del duello: vedro' eventualmente di animare anche i cavalieri o quantomeno di differenziarli un minimo in base alle armi scelte per lo scontro.
Poi il Tool che sto usando va molto bene anche se qualche piccolo bug nella compilazione ce l'ha: per sempio in una stringa print non vi deve essere la parola "rem" altrimenti la interpreta come il comando medesimo dandomi errore! Vabbe' cerchero di adattarmi e al limite modifichero il listato alla fine direttamente sul C64 e poi salvare il tutto!
Continuiamo cosi!  :popcorn:  
<---:=[ [Uzumaki Naruto ]=:--->
http://www.msx.org
http://tigameshelf.net
http://www.retrogaminghistory.com
"...Dal fanatismo alla barbarie c'è solo un passo..." Denis Diderot

Uzumaki.Naruto

  • Utente
  • **
  • Post: 201
  • Gioco Preferito: Last ninja 1
Remember Camelot
« Risposta #8 il: 15 Maggio 2009, 13:54:12 »
 Remember Camelot -giorno quattro
14/05/2009

Sta andando un po' a rilento il porting di questo gioco nativo sul TI99 ma credo ne varrà la pena di tale attesa, in quanto, sebbene con difficoltà maggiori a causa del poco versatile commodore basic V2, vi sono elementi grafici in più rispetto alla versione Texas.
Purtroppo più vado avanti tra le intricate locazioni di memoria del c64, più mi sembra di camminare su un campo minato, dove prova a sbagliare locazione e il C64 ti punisce cancellando persino il listato inserito!!!!!
Ho generato parecchi frames per i vari sprite, ma dovendoli ovviamente caricare nella memoria seguo le procedure descritte nella guida di riferimento del programmatore; il fatto è che se dovessi seguire letteralmente le indicazioni illustrate in codesto manuale mi ritroverei continuamente con uno schermo "scarabocchiato". :huh:
Nel C64 ho capito che se i frames da usare per gli sprite sono non più di tre posso partire dal blocco 13 e quindi dalla locazione 832 (64x13), ma nel caso di frames superiori a tre il blocco di partenza è 192 e quindi dalla locazione 12288 (64x192); sorpresina però la suddetta locazione è la stessa di partenza per la ridefinizione dei caratteri e questo il manuale non lo dice, se chi programma non ci fa caso si ritrova lo schermo "arlecchinato" con la scomparsa apparente del listato basic in memoria.
A questo punto visto quali blocchi occupano i caratteri che ho ridefinito in precedenza decido di partire dal blocco 200 ossia dalla locazione 12800 (64x200) per stare piu tranquilli fino al blocco 224.
Ho gia impostato il movimento del duello e mi ressta praticamente di codificare interazione col gioco dalla tastiera, finire il fondale della prima fase e comporre il fondale della seconda fase.

HELP!
Chiederei aiuto a qualcuno per la realizzazione di qualche piccolo jingle musicale realizzato in una routine basic ovviamente: qualcosa adatto all'inizio di un duello medievale e un qualcosa che sappia di trionfale. Non necessariamente grande qualcosa di piccolo ma efficace.

Ringrazio molto anticipatamente in quanto mi ridurrebbe un bel po di lavoro! :rtfm:  :logorrea:
<---:=[ [Uzumaki Naruto ]=:--->
http://www.msx.org
http://tigameshelf.net
http://www.retrogaminghistory.com
"...Dal fanatismo alla barbarie c'è solo un passo..." Denis Diderot

Freshness79

  • Utente
  • **
  • Post: 128
  • Gioco Preferito: Dizzy collection
Remember Camelot
« Risposta #9 il: 15 Maggio 2009, 17:42:03 »
 Dunque... per la verità non ho ben chiaro come hai voluto organizzare la memoria del VIC comunque, un consiglio che ti posso dare é di spostare tutta la sezione grafica nel secondo blocco da 16k: il blocco da 16384 a 32767.
Questo blocco é il più pratico da usare per programmi basic che non siano troppo lunghi.
In alternativa, se non hai intenzione di *leggere* valori dalla memoria video, puoi anche pensare di usare il 3° blocco (32768-49151): nonostante sia parzialmente coperto dalla ROM del basic, la scrittura finisce comunque nella RAM che sta "sotto" ed il VIC se la legge felicemente!
Ti propongo una subroutine per cambiare il blocco da basic:

Codice: [Seleziona]
2995 REM BL rappresenta il numero di blocco secondo questi parametri;
2996 REM BL=0: $0000-$3FFF - blocco standard di avvio
2997 REM BL=1: $4000-$7FFF
2998 REM BL=2: $8000-$BFFF
2999 REM BL=3: $C000-$FFFF
3000 POKE 56577,PEEK(56577)AND252:REM Redirezione dell'I/O di CIA2
3001 POKE 56576,(PEEK(56576)AND252)OR(3-BL):REM Impostazione blocco
3002 RETURN

puoi chiamarla, ad esempio, così:

Codice: [Seleziona]
BL=1:GOSUB 3000:REM Attivazione blocco 1
In qualsiasi momento, per tornare al banco standard, basta dare RunStop+Restore.

La struttura di ogni blocco é la medesima (in realtà il VIC indirizza solo 16K, i due bit superiori sono gestiti dalla circuiteria della scheda madre) pertanto, se non cambi il valore di 53272 ($D018), i cambiamenti che devi fare al tuo programma sono relativamente piccoli.
Per dire, se prima per cambiare il primo carattere in alto a sinistra scrivevi:
Codice: [Seleziona]
POKE 1024,90dovrai cambiarlo con:
Codice: [Seleziona]
POKE BA+1024,90dove BA, a seconda del blocco che hai scelto, potrà essere 0 (blocco 0), 16384 (blocco 1), 32768 (blocco 2) o 49152 (blocco 3).
Cambiare il blocco a cui punta il VIC non ha ovviamente nessun effetto sulla posizione della memoria colori, che si trova sempre e comunque all'indirizzo 55296 ($D800).
Spero di essere stato chiaro e soprattutto di esserti stato utile!
...e comunque, continua così, mi sembra un ottimo progetto!
Se hai dubbi "fai un fischio"! ;)

Uzumaki.Naruto

  • Utente
  • **
  • Post: 201
  • Gioco Preferito: Last ninja 1
Remember Camelot
« Risposta #10 il: 15 Maggio 2009, 18:21:35 »
 Altro che utile!!! Sei prezioso!!!
Purtroppo non conosco a fondo la memoria dei C64 tanto meno l'assembler! Ma riesco a muovermi in c++ e Qbasic molto bene e sto cercando di sfruttare queste piccole conoscenze! Il bello del C64 è che proprio a causa delle scarse istruzioni e della manipolazione della macchina tramite le poke puoi fare di tutto gia partendo dal basic!
Comunque sicuramente avro bisogno di altro aiuto e spero di approfittare della tua disponibilita: stai tranquillo che quando avro bisogno ti squillero una tromba!!!!!  :lol:
GRAZIE ANCORA!!!!
<---:=[ [Uzumaki Naruto ]=:--->
http://www.msx.org
http://tigameshelf.net
http://www.retrogaminghistory.com
"...Dal fanatismo alla barbarie c'è solo un passo..." Denis Diderot