Ready64 Forum

Commodore 64 => Programmazione, Grafica e Musica => Topic aperto da: Darkerror - 28 Ottobre 2018, 15:58:23

Titolo: MoonshadoW 2 work in progress
Inserito da: Darkerror - 28 Ottobre 2018, 15:58:23
Un saluto a tutti e complimenti per il grande lavoro nella realizzazione, mantenimento e affluenza di tutto il sito.
Sto cercando di realizzare un seguito al mio gioco preferito: MoonshadoW di Paolo Galimberti

Allego qui il link ove poter controllare gli sviluppi... (privo di banner e diavolerie varie)
Una volta terminato, se la redazione di Read64 lo permetterà, lo posteró qui per il download... ovviamente gratuito...
Ancora complimenti e grazie di cuore per il vostro lavoro

http://darkerror.byethost16.com/index.html

Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Roberto - 28 Ottobre 2018, 17:21:24
Magari, sarebbe un onore.
Interessante la scelta di Moonshadow.
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 28 Ottobre 2018, 17:43:06
Onore mio... come accennato sul sito, e constatato da Raffox in un suo post, il finale sbrigativo non rende giustizia e quindi, dato che modificare l'originale mi sembrava una stupida idea, ho pensato di scriverne un seguito... ma questo vuole essere piú un omaggio che non una cosa a se stante...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Raffox - 01 Novembre 2018, 20:40:22
Come posso non elogiare un progetto del genere! Moonshadow è il mio game preferito in assoluto e sono molto contento che qualcuno abbia deciso di avventurarsi nella programmazione di un seguito del gioco. Anzi, ti dirò di più, se vuoi aiuto per la parte grafica, sono volentieri a tua disposizione.

Intanto ti invito caldamente a pubblicare anche qui il tuo diario... e se il game sarà ultimato ti aiuteremo a dargli la giusta e meritata visibilità!
 :metal:
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 02 Novembre 2018, 11:29:12
Caro Raffox, prima di tutto grazie, purtroppo non sono ancora cosí avanti da dovermi preoccupare del lato grafico ma, appena lo saró, approfitteró del tuo aiuto.
Se ti fa piacere puoi disegnare una stanza segreta che inseriró volentieri...
Se hai testato le versioni alpha mi piacerebbe sapere cosa ne pensi dello status oggetti in alto e, soprattutto, del cuore...
Posterei volentieri il diaro su Ready64, ma dove? Posso aggiungerlo tranquillamente quí sotto?
Grazie ancora di tutto
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Raffox - 02 Novembre 2018, 12:20:55
Puoi continuare a pubblicare gli aggiornamenti in questo stesso thread, senza necessità di aprirne di nuovi. Mi piace l'idea del cuore come l'hai ideato. Sarei per cambiare il resto del pannello, cercando di apportare qualcosa di originale (niente eclissi per il tempo, ma altro... ci vuole inventiva). Lo status oggetti va bene. Non cambierei la gestione degli oggetti per coerenza con il precedente Moonshadow. Dopo tutto è il seguito... cambierei invece il pannello come ti dicevo... magari se mi viene qualche idea te la propongo qui ;)
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 02 Novembre 2018, 13:44:23
Grazie per aver testato il prg... felice che ti piaccia il cuore...

Una cosa che ho dimenticato di inserire era proprio la trama... te la scrivo qui in anteprima:



La tremenda eclissi ha avuto luogo, la malvagia magia di Septerios irraggia tutto cio che incontra sul suo cammino raggiungendo le profondità piú recondite della terra...

Dopo aver tagliato la testa al serpente, abbandoni lo scudo ed ogni altro oggetto in tuo possesso, ti avvicini al teletrasporto mostrando la sfera di cristallo e pensi: "...per l'ultima volta..." e ti abbandoni stremato alla mercè del magico portale...

Ti ritrovi d'un tratto in un luogo piuttosto familiare ma un pensiero pervade la tua mente... "se il messaggero di Septerios è morto, come possono, i suoi seguaci, essere ancora in superficie?"

Con quest'ultimo sinistro pensiero perdi i sensi e svieni a terra esausto...

In un profondo ma breve sonno ti appare Xaros, il saggio e leggendario oracolo...

Nel subconscio vieni cosí a sapere che Grahlus, questo il nome del serpente messaggero delle tenebre, non era stato completamente ucciso,
 
la testa mozzata, ormai morente, era stata raggiunta e pervasa dall'influenza della luna oscura Septerios, ottenendo tremendi poteri di rigenerazione...

Come una fenice, risorto e piú potente che mai, nelle viscere della terra, il malvagio serpente organizza la sua vendetta...

Apprendi anche che, fintanto che Fulax sarà oscurata, i poteri di Septerios continueranno a disseminare nel mondo orrore e distruzione...

Quando peró l'eclissi sarà terminata e Fulax sarà nuovamente visibile, la sua influenza di pace e prosperità non avrà piú alcun valore...

"...dopo il transito di Septerios... ...ció che è... rimane..."

Xaros, prosegue spiegandoti che l'unico modo per poter ripristinare la pace e l'equilibrio dell'intero pianeta è distruggere definitivamente Grahlus... solo cosí le orde di malvagie creature si placheranno tornando negli inferi e riprendendo il loro sonno millenario... ma il tutto, prima che l'eclissi termini...
 Allora anche Fulax potrà nuovamente trasmettere magia benevola poichè non sarà presente alcuna forza demoniaca...

Affannato e tramortito riprendi conoscenza... è nuovamente tutto nelle tue mani...
--------------------------
Rimetteró l'oggetto nello status sotto... sai... lo status è la cosa che più mi è piaciuta... ho già una mezza idea su come renderlo un pó piú moderno ma se hai idee sono aperto a tutto...
Cmq piú tardi scriveró la modifica allo status cosí magari potrai darmi un parere...
Il tuo aiuto mi è prezioso
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Raffox - 03 Novembre 2018, 00:25:02
Trama interessante!
Quando sei pronto per lavorare sulla grafica ti aiuterò volentieri. Intanto seguirò i tuoi aggiornamenti.
A proposito della agestione dell'energia, pensi di riciclare sempre le stesse ampolle che si raccolgono nel primo game?
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 03 Novembre 2018, 03:59:41
Sí, useró le stesse ampolle piú un paio scopiazzate da Rastan... ne serviranno molte... ecco il motivo dell'inventario maggiorato...
Sono felice che la trama ti interessi; a dire il vero, temevo una critica pesante...
Cmq ci sarà una intro che riassumerà l'antefatto.
Ho finito ora di creare l'effetto nello status che ti accennavo prima...
Qui il link se lo vuoi provare... (ho approfittato per sistemare un po di cose)

Il luccichio salta fuori in random ($D41B)


http://darkerror.byethost16.com/00_sterne.prg

Non so se si puó scrivere il link cosí... se ho sbagliato mi scuso fin d'ora
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Raffox - 03 Novembre 2018, 12:09:49
Per luccichio intendi i colori inseriti nel testo a scorrimento?
In quel caso ti suggerirei una scelta cromatica migliore del tipo: bianco al centro e grigi graduali verso l'esterno... prova, magari ti piace il risultato.

L'accetta è opera tua? Non male come design, colori a parte da sistemare suppongo :)
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 03 Novembre 2018, 12:18:52
No, quello è solo raster e proveró subito i colori che mi hai dato...
L'accetta è uno sprite di Rastan convertito in caratteri solo per provare...
Evidentemente il luccichio non è uscito... modificheró la RND con un valore fisso.
Si tratta di una stellina che illumina la parte bassa a sinistra del pannello...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 03 Novembre 2018, 12:41:13
http://darkerror.byethost16.com/00_sterne2.prg

Ora compare con maggior frequenza
È solo quel viola che non mi piace per niente... dovró trovare un'altra combinazione...

I colori da te indicati per il raster stanno decisamente meglio... grazie...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Raffox - 03 Novembre 2018, 13:30:28
Vedo il luccichio, ma che utilità dovrebbe avere^ Se serve solo per abbellire non è male, ma risparmierei i cicli raster per necessità più importanti. Sarebbe una decorzione da valutare a fine sviluppo tutto sommato. Bello l'effetto colorato delle scritte ;)
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 03 Novembre 2018, 13:41:53
Felice che ti piaccia... sí serve solo per abbellire e dovrà essercene un'altro in alto a destra...
È fuori dal raster quindi non pesa... peró volevo solo mostrarti la mia idea riguardo la modernizzazione del pannello... ora aspetto con interesse nuove idee...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 03 Novembre 2018, 14:25:34
Mi hai fatto venire un'idea: una soluzione che non avevo proprio considerato:
Grafica Bitmap... per il pannello... purtroppo non mi sono mai cimentato nel disegno Bitmap con Koala e simili, mentre tu sei esperto...
Probabilmente questa potrebbe essere la via giusta... cosa ne pensi?
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Raffox - 03 Novembre 2018, 16:27:05
Dipende da quanta memoria hai a disposizione. Sono abbastanza certo che Paolo abbia scelto di utilizzare caratteri ridefiniti hires per ottimizzare lo spazio, senza dover ricorrere alla mappa colori necessaria per una multicolor. In effetti in una conversazioe, a suo tempo, mi aveva raccontato che durante lo sviluppo del gioco lo spazio in memoria era finito e doveva fare i salti mortali per farci entrare qualcosa...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 03 Novembre 2018, 17:21:00
Sí ho notato... molte volte, nel codice, ci sono salti a routines, magari piccole, collocate nei posti piú disparati...
Purtroppo al momento non so quanta memoria libera ho (non è ancora finito) ma grazie allo sprite-flipping e ottimizzazione dello spazio (tra $0000 e $3FFF) dovrei riuscire ad avere un po di spazio in piú...
Ohaaaaa che onore parlare con lui...
Ho letto che dal '90 non avete piú avuto contatti.... peccato...
Cmq, magari già sta notte, inseriró il diario...  (contiene molti aspetti tecnici proprio su Moonshadow)

Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 04 Novembre 2018, 12:58:24
Diario di settembre 2018
16.09.2018

mi sta tornando la voglia di programmare (dopo 2 giorni un pò giù di corda)
questa mattina ho provato a modificare la routine irq dello status oggetti:
ho messo 2 pixel di puntatore oggetti in centro in un irq
subito dopo 7 sprite che custodiscono gli oggetti in un altro irq
e poi un altro irq per disegnare altri 2 pixel dell'indicatore centrale nello status...
praticamente nel bordo superiore ho ottenuto 3 raster irq perfettamente stabili.
l'idea era di far scorrere 7 oggetti verso dx e/o sx
il motivo di tutto sto casino? semplice: non mi piace come viene gestito il passaggio da un oggetto all'altro.
per ora swappa solo i frame degli sprite... sì ok, puoi portare fino a 9 oggetti, però non mi ispira... sembra molto confusionario
sono quindi tornato al primio sistema ma credo che userò quello originale... il puntatore che si sposta è molto più immediato...
 la mia intenzione era avere più oggetti da trasportare in un sistema immediatamente comprensibile...


Provando un paio di assestamenti ho scoperto che posso usare il banco c000 ffff (tanto il Vic II vede solo ram)
senza grossi problemi e quindi sto valutando se è il caso di ripartire da quasi 0 e
spostare tutto da 4000 a c000... avrei molta più memoria per il codice...
vedremo...
ieri ho finito lo status sotto e devo dire che ne sono proprio compiaciuto...
è mooolto simile all originale ma uso meno memoria... tutto in $0000...
sto ora valutando il colore delle stelle... mi piacerebbe lt grey ma dovrei usare il monocolore... al momento invece sto

usando il multicolor perchè ci sarà il cuore che batte e dovrebbe essere a caratteri... non so ancora...
il problema è che bianco è troppo forte... troppo intenso
vediamo... ok beh... lt grey è bello... ma forse bianco sa meglio
devo provare a metterci le lune... mi ero arenato proprio lì... stavo disegnando le lune per ottenere un'eclissi più bella,
 animata, ma il risultato non mi piaceva molto...


sto nuovamente provando a modificare il sistema di gestione status oggetti in alto...
voglio provare a mettere 5 oggetti in fila e, non so come, oscurarne metà a dx e a sx...


ok è notte ma ho finito di spostare tutto a c000... il problema grosso è che non posso caricare tutta la memoria...
dovrei usare exomizer tutte le volte... troppo casino... cmq ho risolto lo

stesso:carico c000 dfff normale, e000 efff in runtime, copio in runtime da a000 in d000 dfff.
in $a000 metterò poi roba da decomprimere in runtime...

ho capito ora che prima devo fare il gioco uguale e poi migliorarlo...

17.09.2018

sto provando soluzioni per gli oggetti in alto... effetti sonori come tomb raider, credo userò 5 sprite,
status centrale in due irq distinti e disegnato in runtime,
e 2 sprite che coprono metà del n 1 e del n 5...
il tutto che scorre... non swappa

questa mattina ho studiato anche una nuova routine per stampare i blocchi nelle stanze...
la mia, al momento, è tre volte più lenta dell'originale... (è nata come prova per fare moltiplicazioni... :-) )

ok, tutto a posto ma non mi piace... lo sprite del puntatore è troppo bislungo... sembra mongolo...
ora proverò a costruire uno sprite espanso perchè proprio non ho intenzione di usarne 2...
quello che non mi piace molto è che arriva a filo dell'area di gioco
(in realtà scende fino alla prima riga ma, essendo vuota, non sembra)
il fatto di essere in Italia e non in Germania mi priva di avere un c64 vero sottomano per testarlo...
temo che tutto sia ok  solo sull'emulatore...
se visualizzato su di un crt credo che la parte alta del puntatore scomparirà
costringendo il giocatore a regolare il monitor... cosa abberrante quanto castrante...

(stavo valutando l'idea di acquistare un c64dtv o un the c64 mini solo per testare il tutto...
ma ho i miei dubbi che siano ambedue davvero fedeli all'originale sotto questo aspetto:
in poche parole collegarli ad un monitor crt)

ho anche lavorato un po su un decompressore di dati in runtime
(mi servirà per modificare sprite e set di caratteri durante il gioco)...
 beh... devo ammettere che è complicato... però... troverò un sistema piccolo e funzionale...

 
ok... stautus up: provato ad espandere.... una schifezza indicibile...
ok... due possibilità:

            - la prima è... disegnare lo sprite puntatore in runtime sopra a quello dell'oggetto
                ma non posso far ciclare i colori,devo sfruttare il multicolor e ciclare quello...
            - la seconda è... tornare al sistema di Galimberti... ovvero 6 oggetti, puntatore e busto guy...

 
( la cosa che pocanzi ho detto di aver capito... mi sa che non l'ho capita tanto bene...)

vabbè... mi concentro sul cuore...
entro questa notte voglio avere un bel cuore pulsante... sullo schermo ovviamente... il mio pulsa già abbastanza...
sto seriamente pensando di usare 3 sprite... in overlay...

ok... il primo frame del cuore è fatto... davvero bello mi pace molto

19.09.2018


il cuore è a posto, batte bene e posso regolare il tempo del battito
(indispensabile perchè quando il pugnale si avvicina il cuore deve battere più in fretta)

20.09.2018

pochissimo tempo e tanto stress
ho comunque ridisegnato gli sprite del cuore contratto... ora è più bello e verosimile...
sto pensando di aggiornare il sito su Lycos e aggiungere questo diario...


21.09.2018

per come si svilupperà il gioco, con le nuove idee che ho avuto questa notte, è fondamentale avere più di 6 oggetti al seguito...
per lo più sarà indispensabile avere più pozioni di energia... e

serviranno, credetemi che serviranno... altrimenti sarà tutto troppo frustrante...

ho modificato gli sprite della luna e anche quelli del puntatore status oggetti...
devo ammettere che l'ambiente di sviluppo "C64Studio" è davvero fenomenale... lo sprite editor è molto versatile...

ok... ho fatto la registrazione su Altervista.. così potrò pubblicare questo diario più eventuali screeshot e magari anche beta test download...

22.23.09.2018

sto lavorando come un pazzo su sto fatto dello status in alto...
ci sono vicino ma non è affatto semplice...
anzi... direi che è un vero casino...
non demordo ma... mamma mia...
ho finalmente scoperto perchè Paolo Galimberti ha deciso di lasciare la prima riga di caratteri vuota...
 il motivo è che lo sprite delle gambe del guy sfarfallano se la y è troppo vicina allo status...

sto pensando seriamente di metterci sì uno sprite sopra agli oggetti: da $03 a $1d... ma sotto niente sprite...
 usare due caratteri e dargli lo stesso colore dello sprite puntatore...
ci sono riuscito... status ok... nessun farfallio.... tutto perfetto... ma non mi piace

24.09.2018

ora sto lavorando ad una routine per far scorrere gli oggetti a dx e sx
sì... sta venendo bene... comincia a piacermi... lo scrolling è buono e devo dire che il tutto sembra anche leggero
(il movimento sta in irq).... devo però spostare i puntatori in alto nel banco 0000-0fff... così posso usarne 2

ho pensato ora... devo ricordarmi di ritagliare un po di spazio anche per gli easter eggs... ovviamente non li troverete nel diario...


25.09.2018

dopo vari tentativi mi son deciso a riscrivere la routine di movimento ex-novo e cercare di troppi non sprecare puntatori in 0 page...
tutto nuovo e sembra funzionare meglio... ma... accidenti che lavoro...
il mio problema più grande è che scrivo il codice di getto... senza pianificare su carta a priori

26.09.2018

come al solito la mia mente vaneggia... progetti futuri? primo moonshadow 3 ma con un nome diverso.
secondo nosferatu the vampier ma fatto meglio... terzo... una bella avventura punta e clicca in

stile maniac mansion...
vabbè... andiamo avanti...
allora... algoritmo per oggetti status in alto finito... ora lo scrivo e vediamo che succede.
ok problemi risolti... tutto funziona bene...
 ma ora ho il classico maledetto problema dell'MSB
riscritto molte cose e snellito il codice...
rimane ancora il problema msb... potrei saltarlo se stringessi gli oggetti entro $ff ma non mi piacciono tutti ammassati...
facciamo così: se non sono proprio pirla ci riesco... se mi arrendo... beh... allora sono un po pirlotto!!!
sono legato all'interrupt perchè così non ho rallentamenti di sorta... benchè fuori sia più veloce...
ma temo che penalizzerà qualcosa che ancora non ho scritto...
 però devo fare i conti con i cicli... altrimenti esco fuori dal rastertime...
(forse è più facile del previsto: se muovo solo l'ultimo sprite a sx e dx ma senza uscire da $ff... )
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 04 Novembre 2018, 13:03:23
Diario di ottobre 2018

08.10.2018

Dopo una piccola vacanza trascorsa 24h su 24 con mia moglie e mia figlia, rieccomi qui...
piano piano ci sto riuscendo... lo status oggetti comincia a piacermi... mi ero perso in un bicchiere d'acqua...

ok il movimento è buono... gli oggetti scorrono e scompaiono bene...
ora però devo modificare la velocità: 1 pixel per frame di movimento è davvero pochino...
voglio che lo scorrimento parta piano,
poi accelleri di brutto,
 per poi decellerare e fermarsi...
così non si hanno tempi di attesa molto lunghi ma si capisce che scrolla e non swappa...
spero di finire entro questa notte così domani potrò dedicarmi allo swap delle stanze...
ok, tutto perfetto... ora è il momento dell'aggiornamento frame oggetti e colori in buffer...
sono stanco... lo faccio domani mattina...
sarò quindi in ritardo di un giorno su... tutto il tempo che voglio... kein problem...

09.10.2018
funziona tutto perfetto... solo ho notato ora un piccolo flicker se gli sprite oggetto sono pieni...
 devo forse abbassare un po tutto...
(ho notato che anche nell'originale, se si ha lo scudo tra gli oggetti,
nell'angolo in alto a sinistra gli sprite degli uccelli che volano
 si mischiano spesso e volentieri allo sprite dello scudo)

tutto a posto... è sera tardi ma comincio già a studiare le stanze


11.10.2018

ho studiato molto...
 ma alla fine...
 devo ammettere che la routine che ha scritto lui è davvero bellissima e velocissima...
potrei accellerarla un po ma comporterebbe un notevole lavoro...

magari ci ritornerò sopra... non so... per ora sto continuando a disassemblarla...
non è facile poichè è tutto nidificato...
per scrivere la mia routine ci ho messo 35 minuti...
non so lui quanto ci abbia impiegato però davvero complimenti...
quasi quasi allego qui sotto le due routine...
così potete vedere il grado di nidificazione che ha usato... davvero bello...

ho notato anche che i colori dei blocchi sono salvati in memoria...
io avevo pensato di usare il numero del blocco per ricavare il colore risparmiandomi memoria:
in pratica... se i blocchi da 0 a 9 compongono l'erba...
significa che tutti i blocchi da 0 a 9 devono avere colore verde... per esempio.
ci sarebbero un paio di limitazioni o quanto meno un paio di blocchi ripetuti...
non so ancora... vedremo poi...

ho pensato che siccome uso gli stessi indirizzi di memoria per la mappa,
per i blocchi e pure per la grafica...
mi conviene usare la sua routine completa...
cambiano solo un paio di variabili..

nulla di più...
lavoro in meno...
bene bene

ho finito ora di importare la routine... funziona egregiamente...
ancora complimenti a Paolo Galimberti...


12.10.2018

ho appena scaricato bluegrifon per creare pagine web...
nei prossimi giorni costruirò il sito e lo metterò online...
sono stanco... vado a dormire... sono però soddisfatto...
domani inizioerò la routine per muoversi dentro le varie stanze.




P.S.: questa era la mia routine per stampare le stanze:

jsr stampa_blocchi_stanza
;------------------------------------------------------------- rout stampa stanza ------------

; indirizzo : 4427 in $21 + $22
; pure in $23 e $24
print_room:
 lda #$27; chr_vid_lo ; $27
 sta $21
 sta $23
 lda #$f4;chr_vid_hi ;$44
 sta $22
 sta $24
 lda #$01
 sta $28
; mem colore
lda #$27
sta $30
lda #$d8
sta $31

lda #$01
sta $32 ; colore corrente

lda #$01
sta $33
lda #$80
sta $34


;warte:



;stampa 4 blocchi in verticale

;lda $27 ; diventa 1 o 0 in interrupt

;bne warte
lda #$01
sta $26
sta $44 ;<--------   flag per irq si o no diventa =1 se deve stampare sprite neri... =0 quando finito di stampare la stanza


lda #$82
sta $50
lda #$19
sta $52

;---------  routine moltiplicazione:
; moltiplica $50 ( numero blocco da $a200 ) per 25 e trova quale blocco iniziare a leggere...
; salva il risultato in a + y ------ deve poi finire in $33 + $34

lda #$00

sta $56 ;<----- lobyte della moltip

lda #$00
sta $57 ;<----- hibyte della moltip

 clc
ldx $52

lopuno:
clc
lda $56
adc $50 ;era 50
sta $56
lda $57
adc #$00
sta $57
dex
bne lopuno


;-------------------------- fine moltiplicaz
 


;-------- aggiunge moltip a base blk

clc
lda $33
adc $56
sta $33
lda $34
adc $57
sta $34

;--------------------------------------
ciclo_x:

              lda #$01
              sta $25 ; contatore di blocchi y
              ;sta $26 ; carattere da stampare

        qui_x:

                    ldx #$05 ; 04 = quattro caratteri in y

              qui_y:
                    ldy #$05 ; 05 = cinque caratteri x
 
                    ;lda $26 ; per ora é un carattere
                   
                    qui:
                         
                          clc
                         
                          lda ($33),y
                          sta ($21),y
                          lda $32 ; colore
                         
                          sta ($30),y
                         
                          dey
                bne qui
                   
                clc
                      lda $21
                      adc #$28
                      sta $21
                     
                      sta $30
                     
                      lda $22
                      adc #$00
                      sta $22
                      clc
                      lda $33   
                      adc #$05
                      sta $33
                      lda $34
                      adc #$00
                      sta $34
                      clc
                      ;-----------mem colore
                     
                      ;lda $30
                      ;adc #$28
                      ;sta $30
                      lda $22
                      adc #$94
                      sta $31
                      clc
                   
                   dex
                 
            bne qui_y

 inc $32
          inc $26

          inc $25
          lda $25
          cmp #$05 ; 5 = 4 blocchi vert -------- 6=5 blocchi vert
    bne qui_x

;fine stampa 4 blocchi verticale
      clc
      lda $23
      adc #$05
      sta $23
     
      lda $24
      adc #$00
      sta $24
      clc
lda $23
sta $21
sta $30
lda $24
sta $22
adc #$94
sta $31
clc
                   
inc $28
lda $28
cmp #$09
bne ciclo_x

lda #$00
sta $44

 ; ----------------------------------------------------             fine stampa stanza
rts




 funziona tutto alla perfezione...
ho rimappato la memoria colore e le prove di salto tra una stanza e l'altra
(come quando si usa la sfera) funzionano a meraviglia.
ho provato a ficcare tutta la routine in interrupt e far disegnare la stanza ogni frame ma,
purtroppo, è troppo lunga e troppo macchinosa esco fuori di moltissimo dal rastertime...
forse... non sono ancora sicuro, userò il sistema che avevo escogitato inizialmente:
 riempire di sprite (neri pieni espansi in x e y) tutto lo schermo in modo da nascondere la stampa dei blocchi...
e rimuoverli una volta finito e raggiunto l'inizio del nuovo frame
tutto questo perchè non posso usare il blank screen, i bordi sono aperti,
quindi si vedrebbe lo status in alto sparire per un po...

ora stavo lavorando alla gestione dei tasti e del joystick... tanto per distrarmi un po...


13.10.2018

 dopo le stanze... problema che credevo moooolto complicato,
 mi trovo faccia a faccia con i movimenti del personaggio... lo scoglio forse più grande...
ho perso molto tempo (praticamente tutto ieri e parte di questa mattina) a studiare lo storyboard...
questo perchè dovevo aver ben chiaro in mente come risolvere i problemi che si porranno in seguito e,
 soprattutto, come passare da un mondo (livello) all'altro.
 In Moonshadow non ho particolarmente apprezzato il cambio di set caratteri e multicolor...
è davvero fastidioso tra la foresta e la grotta...
però non mi attira l'idea di usare sempre il teletrasporto...
a meno che non sia contemplato nello storyboard...
in altre parole: se per passare dalla foresta al castello bisogna solo varcare una porta...
beh...
il flicker è ovviamente palese e di pessimo gusto...
così come nauseante risulterebbe l'uso smoderato del teletrasporto.

Se invece per accedere, bisogna scavalcare qualcosa di invalicabile...
beh...
allora il teletrasporto è d'obbligo (quindi flickerless).

lo storyboard mi è servito soprattutto per la fine...
credo sarà una cosa che strapperà qualche lacrima ai più attempati giocatori di c64...
abbandonando per un secondo l'argomento, questa mattina ho notato che gli effetti sonori sono integrati nella musica...
quindi non dovrei usare altro spazio... purtroppo sono zero assoluto in programmazione di musiche ed sfx...
imparerò alla fine...

mamma mia che casino...
la routine che ha scritto mi è quasi incomprensibile...
complicatissima...troppi reindirizzamenti... sto impazzendo a sbrogliare la matassa...
è tutto annidato...
forse in sorgente era ok... ma così... è un incubo...
quasi quasi mi scrivo una routine ex novo...
ho contato più di venti tra puntatori e variabili...
solo per andare a sx...
senza contare salti, collisioni e irq...

ok ho deciso: ne scrivo una tutta mia...


14.10.2018

sto scrivendo la routine del joystick... a dir la verità credo che, usando lo stesso principio,
 arriverò a scrivere più o meno la stessa routine... ma almeno è farina del mio sacco...
giochi tipo vardan o gng non mi piacciono molto a causa del pessimo sistema di controllo...
 mentre altri tipo creatures e moonshadow hanno un sistema splendido...
in gng bisogna sempre premere il tasto fuoco per sparare,
in moonshadow spari di continuo tenendo premuto e,
ciò nonstante, accetta altri movimenti...

ok è tutto a posto...
ora ho un puntatore che rispecchia esattamente lo stato del joystick con combinazioni multiple...
è il momento di mettere su video i due sprite e farli muovere.
in irq odio l'indirizzamento indiretto indicizzato...
preferisco valori in pagina 0 presi direttamente come creatures...


15.10.2018


ok il movimento dello sprite rispecchia il joystick alla perfezione...
 ora vorrei attivare i frame in modo da testarne i movimenti prima di mettermi a programmare le collisioni...
nel pensare questo mi è venuto in mente lo sprite mirroring (usato in impossible mission credo)...
non sarebbe male, risparmierei un sacco di memoria usando una lookup table unica di conversione
potrei dargli in pasto tutti gli spirte dei nemici oltre che del protagonista...
(a proposito... non so ancora il nome... stavo pensando a Tal/lus...chissà come ci sono arrivato...)
il tutto in runtime... (ho notato che rispetto al raster irq, ho ancora un sacco di tempo ove la cpu non fa nulla...)
ora provo a scrivere la routine e la lookup table... vediamo che succede...


16.10.2018

ok la lookup table era abbastanza complicata ma l'ho finita...
tutta la routine funziona egregiamente...
ora devo provare in realtime se è utilizzabile o meno...
questa notte ho avuto un problema enorme...
in c64studio, per fare delle prove sui byte degli sprite ho caricato il banco e000...
quando ho chiuso mi ha salvato le modifiche e da lì in poi i primi 4 irq non funzionavano più...
(cioè... funzionavano ma risultava tutto nero senza sprite... nulla)
stavo nel frattempo scrivendo la routine di mirroring e sono impazzito a cercare l'errore...
alla fine il problema era il file incluso e000 corrotto...
non così grave...
ma ho perso un sacco di tempo...
la routine non è poi male...
non uso pagina 0 e per girare 33 sprite in realtime il tempo impiegato non è proprio tanto

ora provo a modificare e usare la pagina 0...
vediamo la differenza...

senza pagina 0 è di poco più veloce... quindi niente pagina 0
(indirizzamento assoluto contro indiretto)

peccherò di presunzione ma non capisco perschè non ha usato lo sprite mirroring...
avrebbe potuto sbatterci dentro un sacco di nemici in più...

ho avuto ora un'idea per riempire lo spazio lasciato vacante dallo score (eliminato in questa mia versione)

ricaricando i simboli presenti sui bordi del poster originale,
 quelli costituenti la protezione anti pirateria,
potrei far in modo che si debba completare una frase per poter sbloccare la porta di

accesso al nipote del serpentone... hahahahahahahahahah

ho notato che tramite il RLE potrei mettere le mappe compresse in memoria
 e arrivare quindi ad un'area di gioco decisamente più grande anche di quanto fin'ora ipotizzato...
non so se riuscirò ad implementare tutte queste cose insieme,
però... beh... chi vivrà vedrà...
fino ad ora sono soddisfatto.
non dimentichiamoci che ora il nostro barbarello può trasportare da 0 ad oltre 254 oggetti...

questo Tallus è decisamente un mulo da traino...
 io già lo vedo scorazzare felice per la foresta con 256 scudi sulla testa...


avevo già notato prima ma non mi ero soffermato più di un tot...
a scapito della memoria ha preferito risparmiare sul codice
(ha sprecato ben 2 sprite vuoti solo per la morte)

sono a buon punto e lo sprite mirroring in realtime funziona alla perfezione...
ho finalmente capito perchè l'animazione del personaggio ha un frame fuori dal coro:
o l'aveva dimenticato o l'ha disegnato in un secondo momento...
fatto stà che quel frame è stato aggiunto e non poteva concatenarlo ai precedenti
poichè avrebbe dovuto riscrivere tutti i puntatori ai frame di sparo,
di abbassarsi ecc.
bisogna tener conto che stiamo parlando delle locazioni da c000 in avanti...
quindi per testarlo ecc bisognava usare sempre exomizer o simili...

ok animazione perfetta... quasi...
mi manca ancora msb e un piccolo dettaglio appena comincia la corsa


17.10.2018

dettaglio inizio corsa sistemato... ora passo all'msb

ok msb risolto... non sono soddisfatto al 100% ma funziona...
dovrò forse apportare qualche modifica (quasi sicuramente)
ora che Tallus si muove posso passare alla gestione delle stanze in funzione del personaggio...
in Moonshadow non vi è alcun clipping...
io invece credo dovrò aggiungerlo...
per clipping intendo che si può uscire dall'area di gioco
(come mostrato in un piccolo video su Youtube che ho caricato anni fa...)


18.10.2018

ci ho impiegato una vita ma ora ho un sistema stabile di gestione delle interazioni stanze-personaggio...
è stato davvero complicato gestire sto maledetto/benedetto MSB...
il problema grosso è stato che non potevo usare l'oldschool 2*x,
 volevo assolutamente un movimento sì da due pixel ma in cui Tallus potesse anche trovarsi in una posizione di mezzo...
ora mi metto a cercare la lookup table del salto...
ok la lookup table del salto non mi serve...
a dire il vero non so neppure se c'è...
faccio a modo mio...
ma più tardi...
ora mi son ricordato che devo spostare la gestione dello status oggetti
e
la gestione del battito perchè al momento sono disattivate...


19.10.2018

ora funziona tutto nuovamente: il cuore batte e lo status oggetti lavora alla grande
sto scrivendo le routine di gestione delle collisioni tra Tallus e background.
il primo passo è già ok: ho la colonna del carattere sotto ai piedi... in mezzo
ora lavoro sulla riga...
wowwwwww ho notato ora una piccola imperfezione nella posizione raster in alto...
devo correggerla subito.

risolto... ma ho notato che in alto mi son dimenticato l'msb di Tallus...
beh...
non avrei potuto farlo prima poichè Tallus non esisteva ancora...
risolto anche msb in alto
ok anche la y (riga) è perfetta.... flickerless

mmmmmmmmm....
devo creare una lookup table con gli indirizzi iniziali delle row...
necessariamente
fatto... tutto ok... ricaviamo il chr sotto i piedi...
che bello... devo giocare con gli accessi alla ram/rom
che palle... ho risolto ma non sono soddisfatto...
non mi piace interrompere gli irq per leggere la ram...


20.10.2018

ho controllato un pò e ho notato che devo necessariamente sostituire
 tutti i valori della gestione movimenti con variabili...
poi ho avuto altri impegni...


21.10.2018

non ho avuto voglia di far nulla...
 ma ho letto molto su Ready64, csdb, lemon ecc.


22.10.2018

sto riprendendo in mano le routine dei movimenti...
 devo modificarle parecchio...
ho bisogno di molti più puntatori per ottenere una gestione 100% sicura...
sarà un lavoraccio... posso dire quindi che,
se anche tutto funziona, sono a metà dell'opera...
sto riscrivendo le routine dei movimenti tutte da zero...
mi sono soffermato a pensare... e...
ho constatato che è ovvio che non riuscivo ad arrivare ad un dunque:
Lui ha usato delle macro per gestire i movimenti...
tutti insieme...
nemici,
personaggio principale,
sparo,
spari nemici...
ovvio che era complicato disassemblare...
non ho usato Regenerator... non ci ho proprio pensato...
forse sarebbe sato più semplice... vabbè... ormai...
tanto peggio per me...


23.10.2018

tra ieri sera e questa mattina ho finito la routine per le scritte negli sprite.
funziona davvero bene... mi piace molto...
 ha bisogno ancora di un paio di ritocchini ma è già molto bella...
Nell'originale non mi piaceva molto poichè era troppo veloce e si faticava a leggere...
mi sarebbe piaciuto molto usare 7 sprite in reverse (per coprire tutta l'area)
anzichè 6 positivi
 e usare 4 o 6 rasterbar per colorare l'interno delle scritte
ma non ho molta volgia di impazzire con $ff più o meno uno ecc...
forse più avanti lo implementerò, non è difficile, ma per ora sono già soddisfatto così...
non so esattamente come ha fatto Paolo Galimberti a scrivere la sua
 (non l'ho nè controllata nè decompilata);
come base ho usato una routine scritta da Testicle e presente su Codebase64...
ok la routine è finita completamente: ho usato 7 sprite espansi,
 ha righe raster multicolori stabili e non rallenta per niente... (per ora)
stavo pensando però di estrapolare la routine dall'irq e
attivarla solo ad ogni frame update... non so... vedremo


24.10.2018

mi rimetto al lavoro sulle routine di gestione del movimento...
 questo mi porterà via moooolto tempo, però è la base della giocabilità...
ho spostato la routine collisione piedi con chr all'interno dell irq perchè mi dava problemi...
 come detto..
SEI CLI no mi piacciono fuori dall'irq...
appunto...
 con un chr andava bene...
 con 6 risulta troppo lento... quindi sfarfallii


25.10.2018

è tutto il giorno che penso alle ottimizzazioni da apportare...
è complicato...
 vedremo se potrò usare rle per i livelli...
 è difficile...
 forse potrò usare la compressione solo per il font caratteri e per la definizione dei blocchi..
 ho studiato un sistema per passare da un mondo all'altro senza glitch...
ok... ottimizzato il banco 0000-3fff....
ho guadagnato moooolto spazio....
 riallocato gli sprite scrolling text....
 ora ho  spazio per il font completo...
ok ci sono... uso il multicolor nello status sotto...
così posso creare gli sprite oggetto e arma solo con i caratteri...


26.10.2018

sto trasformando gli sprite delle armi in caratteri...
potò ovviare al problema di cui soffriva l'originale:
i colori degli oggetti non erano giusti poichè il multicolor era diverso...
ho introdotto una nuova arma presa direttamente da Antiriad...
lanciare pergamene mi è sempre sembrata una minchiata...
forse introdurrò, al posto della pergamena, lo scudo come in g'n'g...
volevo provare a vedere quanto è veloce una routine per copiare lo sprite selezionalo in alto
e convertirlo in caratteri nello status sotto.
nix
uff... l'idea era buona... ma purtroppo devo desistere...
non posso disegnare i caratteri esattamente in mezzo allo status...
(cioè... anzichè 3x3 dovrei usarne 4x4)
pensando e ripensando ho così notato, per la prima volta,
 che nello status sotto è riportato l'oggetto correntemente in uso...
questo è però del tutto inutile poichè l'oggetto corrente
è già evidenziato in alto dal puntatore...
ciò significa che non ci sarà più l'oggetto nello status sotto...
cmq stesso discorso vale per le armi... userò uno sprite...
ormai lo spazio scarseggia nel banco 000-3fff...


27.10.2018

ok... purtroppo non posso usare RLE perchè, dopo la compressione,
ho un consumo di memoria maggiore...
credo che userò exomizer...
e per il titolo (che deve decomprimersi nella zona dello scrolling text)
scriverò una routine fissa con una tabella contenente i dati delgli sprite del titolo in RLE nativo creato ad hoc...
le armi continueranno ad essere sprite (consumo meno spazio)
 e per i relativi frames ricopierò direttamente dalla memoria degli sprite nel gioco un frame alla volta.
come detto prima non ci sarà più alcuno sprite oggetto...
 e userò i caratteri rimanenti per disegnare barre energetiche animate o cose simili...
magari le fiamme per il titolo...
è credo il miglior compromesso...
stavo anche studiando un modo per comprimere (della metà) i dati dei colori dei blocchi...
devo vedere come si comporta exomizer...
al momento sto lavorando un po alla realizzazione delle pagine da caricare sul sito...


28.10.2018

ho costruito il sito (con NVU) e l'ho messo online questa notte...
su Ready64 ho effettuato la registrazione e postato il link...
ho scelto come webhosting il sito "byethost16.com" per la totale assenza di banner e popup...
facendo tesoro dei vari commenti letti in giro, mi sono imbattuto in una affermazione particolare:
 la mappa di gioco è davvero ostica...
bhe... effettivamente non è proprio chiarissima...
 devo ammetterlo...
sto valutando di crearne una leggermente più comprensibile...

30.10.2018

Un paio di giorni di pausa per caricare il sito, testarlo, correggere gli errori (non sono un esperto di html)...
ora è a posto...
Con mia grande gioia Roberto Nicoletti, Webmaster di Ready64,
è propenso ad ospitare il gioco una volta terminato...
Questo mi ha dato una spinta in più nel cercare di terminarlo...

credo che entro oggi mi rimetterò al lavoro... sulla routine del movimento:
l'ho scansata il più possibile... ma ora... mi tocca...
questo succede perchè sono insicuro e, a causa di altri problemi,
sono troppo stressato e manco di lucidità...
quasi quasi proverò il sistema Jeff Minter...
...chi se ne frega se quando si spinge il joystick a destra Tallus va in alto...
giusto?...
cmq ho pensato che tra la foresta e il castello userò la stanza neutra di passaggio
(ove cambiare font, mappa e blocchi in runtime)
mentre per passare da forseta o castello a grotta userò il teletrasporto...
stavo pensando che magari sarebbe bello se l'ultima stanza,
ove uccidere il mostruoso mostro, fosse in scrolling parallattico
tipo Flimbo's Quest...
vedremo... non so se ci starà tutto... e non voglio usare il multiload...
Fin da bambino l'ho odiato...
versione su cassetta impossibile,
su disco... noioso,
su cartuccia... beh... non ho nozioni sufficienti per una cosa del genere...
quindi... single load...
ho riscritto il diagramma della routine movimenti... è la prima volta che non scrivo di getto...
spero di non aver dimenticato nulla...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 04 Novembre 2018, 13:06:53
Diario di novembre 2018

02.11.2018

un po di distrazione... leggendo un po Ready64 mi sono fatto coinvolgere dalle avventure testuali,
ne ho provate un paio sullo smartphone e devo dire che mi intrigano parecchio...
certo ci vuole mooolto tempo per studiare una storia che regga tutto un gioco...
però non è male... ci si diverte moltissimo...
ho trovato una enorme difficoltà nell'interazione con il computer...

il parser molte volte mi faceva salire il nervoso: "non conosco questo termine"... "i can't understand" e così via...

l'unico parser che mi è piaciuto abbastanza, senza arrivare allo scumm,
è quello dell'avventura Atlantide - Sipe 1986...

così ho perso un po di tempo per analizzare il listato basic...
(era compresso e rilocato... forse era stato scritto su un c128)
non è complicato,
con un uso maggiore di assembly si possono tirare fuori cose interessanti...
ma credo che sia un altro genere di avventura (credo si cataloghi: scelta multipla)... boh...
però mi piace...
con un parser così, fai quello che devi fare,
non ti incasini la testa parlando come uno straniero: uso chiave su porta...
e hai più tempo per concentrarti sulla trama...

ho giocato un po a soulless...
l'ho giocato solo per vedere con che velocità stampava le stanze...
ma funziona su un principio differente...
qui sotto c'è un pezzetto della routine che stampa i blocchi:

.C:43ff   A2 00      LDX #$00
.C:4401   BD 08 5B   LDA $5B08,X
.C:4404   9D 47 CE   STA $CE47,X
.C:4407   BD E7 60   LDA $60E7,X
.C:440a   9D 47 DA   STA $DA47,X
.C:440d   E8         INX
.C:440e   E4 06      CPX $06
.C:4410   D0 EF      BNE $4401
.C:4412   C6 08      DEC $08

mettendo un break a 4412 e controllando con icu si vede chiaramente
che la stanza viene disegnata non a blocchi consecutivi ma

bensì ad elementi, ovvero stampa mattone dopo mattone, è sicuramente una buona idea,
ma credo che il contro sia la scarsa varietà dei fondali...
forse ha risparmiato un po sulla memoria...
non so... non ho controllato (e neppure mi interessa)
cmq lo schermo viene oscurato ( all'indirizzo $3fac lda #$0b)
infatti si hà quel triste effetto retrò (anche lo status sotto scompare)
se dopo, a 3fae mettiano 3 nop sostituendo sta $d011,
si vede che la stanza viene disegnata...
e la velocità sembra uguale a Moonshadow se non inferiore...
quindi mi ritengo soddisfatto...e, soprattutto, mega complimenti a Paolo Galimberti...

il paragone con Soulless è pazzesco:

Moonshadow 1990 - Soulless 2012
                Odyn    -    Endurion




significa che proprio non si poteva fare più di così... o forse si... boh...

una cosa mi ha però impressionato di Soulless.....
il titolo...
è bellissimo il modo in cui ha ottenuto i colori dentro ai caratteri del titolo...
probabilmente lo utilizzerò per riempire la scritta MoonshadoW
oppure solo per l'interno del numero 2...

Dopo uno scambio di opinioni con Raffox,
ho deciso di provare ad implementare nello status sotto,
l'effetto shining che avevo pensato...
ci sto lavorando...
ma non sono molto soddisfatto... non so...
dovrei forse ritornare al monocromatico...
mi serve uno sprite in più... uffa....

quindi devo usare assolutamente 16 caratteri per disegnare lo sprite dell'arma
(ricreato dallo sprite nel gioco)
vabbè...
fatto: uso solo 12 caratteri per disegnare lo sprite...
 e risulta centrato...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 05 Novembre 2018, 13:16:34
Ho controllato bene... mi rimangio tutto quello che ho detto su Soulless... poi spiegheró il perchè
Peró rimane comunque un lasso di 22 anni...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Raffox - 02 Dicembre 2018, 00:25:37
Novità? :D
Ti ho inviato un pm
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 02 Dicembre 2018, 01:47:30
Diario    Novembre  2018
 

03.11.2018


ho eliminato il loading del file e33.01, quindi anche la routine del load (più spazio libero)
Scrivendo con Raffox ho programmato la prima bozza dell'effetto illuminazione nel pannello di status...
non è male, ma probabilmente ci tornerò sopra dato che, con ogni probabilità, i caratteri hires lasceranno spazio ad
una ben più colorita e versatile immagine Bitmap
non so come farò con i caratteri che disegnano l'arma in uso, non so se dovrò cambiare banco dato che avevo previsto di usare
la memoria video base per il titolo, per le scritte a video durante il gioco ecc...
vedremo...
per ora cerco di proseguire con i movimenti...


04.11.2018

riscrivendo la routine dei movimenti ho notato che non posso usare lo sprite-flipping per Tallus,
 il carico di lavoro è troppo oneroso per la cpu, perdo un intero frame...
per ora proseguo normalmente, poi, una volta terminato vedrò se riuscirò a suddividere la routine di flipping e inserirla
...magari...
nell'interrupt...
ok, dx e sx il movimento è pressochè perfetto...
ho riscritto tutto ed ora ho i risultati desiderati...
la routine è forse un po più complessa (incasinata) di quella originale, ma funziona...
ora funziona con puntatori e lavora in priorità sulle gambe.... è anche già predisposta per accettare variabili come
is_falling, is_jumping, ecc.
anche le collisioni sembrano lavorare bene... sono felice...un po di rammarico per il flipping ma cmq felice...
anche il riconoscimento del tasto fuoco è a posto... e ormai è passata la mezzanotte...

05.11.2018

continuo a ripensare a Soulless... ho detto una sciocchezza:
l'area di gioco è maggiore (il pannello inferiore è più piccolo rispetto a Moonshadow)
quindi credo che la velocità sia uguale... però il sistema è molto furbo e pratico... non me la sento di modificare
nuovamente la routine, le mappe, tutto... però... probabilmente donerebbe spazio prezioso...

cmq è geniale questo sistema... mi rimangio quello che ho detto: si possono ottenere ambienti decisamente vari ed interessanti...
molto più versatile del sistema a blocchi fissi...
Endurion è Endurion

07.11.2018

ho lavorato tutto ieri sugli interrupt... ora sono ad un punto in cui, forse, posso utilizzare lo sprite-flipping, ma per ora è

disabilitato, lo proverò una volta che la gestione dei movimenti sarà completa e i nemici saranno sullo schermo...
questo perchè dovrò cambiare nuovamente tutti i puntatori agli sprite...
finita la routine abbassarsi: è ok... funziona bene e i due sprite non si distaccano durante lo spostamento...
sono ora alla metà della routine del salto... funziona bene... per ora...
sono stanco però... sono già le due del mattino...

08.11.2018

il salto dritto funziona egregiamente...
anche le collis funzionano (per ora solo su salto dritto verso il basso)
mi sa che ho riscritto la stessa routine perchè ho lo stesso errore:
se salto e poi premo verso il basso le gambe sono ok
(perchè ho modificato lo spirte) ma il busto è più in su di 8 pixel...


09.11.2018

per scongiurare tutti gli errori possibili sto aggiungendo un sacco di variabili...
lo sapevo che sarebbe stato un lavoraccio...
mi sa che ho risolto anche il problema di quando salti mentre sei abbassato...
proseguo ora con la routine di caduta (se gli togliamo il pavimento da sotto i piedi, per esempio)
cambio di programma...al momento ho continuato con la gestione delle stanze...
ora swappa bene anche in alto (non era ancora implementata)...
appena finito la gestione della caduta saprò se anche la routine stanza_giu funziona a dovere...
però sono davvero soddisfatto... ho ottenuto, fin'ora, delle routine davvero stabili...
ed il gioco comincia dalla locazione giusta...non più dalla stanza numero 1...

è diventato tutto un casino...
devo rilocare di nuovo tutto nel banco 4000-7fff uffaaaa......
ho finito ora di rilocare parte delle memorie e dei puntatori...
 le stanze funzionano di nuovo... ma ho problemi coi colori


10.11.2018

sono le 18:28... ho finito ora di spostare tutto a $4000
ora posso rimettermi al lavoro sulle collisioni con i caratteri...
mi spiego meglio:
la soluzione che avevo adottato prevedeva la memoria video a $f400
e per leggere il carattere sotto ai piedi di Tallus,
 per verificare le collisioni,
dovevo necessariamente mettere la routine di estrapolazione del carattere in interrupt.

questo perchè
il Kernal doveva essere disabilitato quindi, durante l'irq,
 potevo leggere il carattere senza rallentamenti dovuti ad un SEI...
tutto questo spostamento ha una spiegazione mooooolto semplice:
 non sono capace di costruire una catena di irq con il Kernal disattivato.
quindi,
 avendo necessità di estrapolare il carattere sotto i piedi più e più volte in funzione della y di Tallus,
 va da sè che una sola lettura durante l'irq non era sufficiente.
ecco il motivo vero della rilocazione!

userò il banco 0 ($c000-$ff00) come archivio e per decomprimere sprite e stanze...
 se ci riesco...
ho appena finito di riscrivere le routine di estrapolazione carattere sotto i piedi...
 le divisioni erano sbagliate... MSB

riguardo i caratteri che costituiscono collisione, nell'originale, ho notato che sono in ordine sparso:
uno qua e uno là... non so perchè... io farò diverso... ovvero:
lascierò i primi 128 caratteri senza valore, da 127 a 191 per creare i pavimenti e da 191 a 255 per i muri...
così un semplice bcc o bcs mi alleggeriscono dall'uso di un'altra lookup-table...
ovviamente questi valori sono a titolo indicativo... giusto per chiarire il concetto...
so che, eventualmente, farci un trainer diventa incredibilmente facile:
 basta cambiare un valore e Tallus può agevolmente passare attraverso i muri...
ma non è destinato alla vendita... ;-)


12.11.2018

ho avuto troppi problemi da risolvere (non inerenti il gioco) e quindi mi sono dovuto astenere da Moonshadow 2...
spero di avere adesso un po di tempo per andare avanti.


13.11.2018

ho finito la routine che visualizza l'oggetto selezionato , all'interno del pannello sotto
non sono soddisfatto ma cmq va già bene...


15.11.2018

ho avuto davvero poco tempo a disposizione...
 proseguo a singhiozzo...
e questo non mi piace ma purtroppo non posso fare null'altro...
ok finalmente le routine di caduta in corsa e normale sono terminate...
 (manca solo controllo collisioni con muri)
ora lavoro sul salto diagonale...


16.11.2018

uffaaaaa mi sa che è meglio se ricomincio da capo...non sono per nulla soddisfatto...
credo che mollerò lì per il momento...
devo creare un paio di programmi per modificare i caratteri nei blocchi...
(mi serve per le collisioni: pavimento, muri, ecc)


17.11.2018

 il programma l'ho scritto e funziona anche bene... ma credo che non mi servirà...
mi sto creando uno screenmaster su pc.. poichè è troppo lungo creare blocchi e mappe su c64


18.11.2018

ok, ricostruire uno screenmaster non serve... la versione 2 di charpad è ottimale...
ho importato tutto e da qui riesco a fare quello che devo...
ho una visione chiara dei blocchi e devo ammettere che ce ne sono diversi inutilizzati.
per disegnare le mappe di gioco userò screenmaster originale ma con alcune modifiche: aggiungerò un tasto "c" per ciclare i colori

dei blocchi (ora esiste un blocco uguale ma con colore diversro) e un tasto "b" per cambiare il blocco on the fly...

per rispetto credo che eliminerò la statua del gargoyle blu...
penso che a Paolo Galimberti sia costata molta fatica e credo sia una cosa davvero sua personale...
(gli ha dedicato ben 3 blocchi e più di 40 caratteri)

tirando le somme:
caratteri vuoti = 50
blocchi liberi = 73


19.11.2018

sto lavorando alla conversione del set di caratteri e alla rilocazione dei blocchi con il programmino che mi sono scritto...
liberato tutto... e raggruppato i caratteri divisi tra solidi (ove camminare) e null (background)


20.11.2018

volevo provare a disegnare un blocco e vedere come sta... tombe e croci son venute abbastanza bene... però ho notato che potrei

modificare il multicolor per la stanza durante la sua creazione ottenendo così una gamma maggiore di colori...
ho provato solo a sostituire il rosa con il grigio medio... è bello... ma non ovunque...


21.11.2018

dovrò modificare lo status in alto.. ci sono troppi difetti che non mi piacciono per niente...
altro lavoraccio... ma guadagno 3 sprite e due caratteri... magari dovrei mettere 6 oggetti... boh vediamo...


23.11.2018

ho commesso un grosso errore nel calcolo delle collisioni col pavimento mentre corre
e per risolverlo,
sto riscrivendo dall'inizio la routine di caduta...
mooooolto laborioso....


25.11.2018

sto riscrivendo la routine di estrapolazione row (riga sotto piedi)

ho finito ma non sono ancora convinto... la routine di salto però ora è perfetta...


26.11.2018

sono ad un ottimo punto... funziona quasi tutto perfettamente...
credo che caricherò le routine di rilevamento column and row su Ready64 nella rubrica "pillole di programmazione"
poichè le ritengo davvero veloci e precise...
(ovviamente, prima, qualche esperto dovrà valutarne la qualità)
tutto perfetto... salto, salto diagonale, caduta, tutto perfetto...
sono soddisfatto..
mi rimane solo da sistemare il frame dello sprite...

c'è stato un momento di disperazione in cui avrei voluto abbandonare tutto... davvero...
poi ho deciso di riscrivere tutto dall'inizio e le cose piano piano funzionavano..

ora ho ottenuto una gestione dei movimenti (collisioni comprese) migliori dell'originale... sono soddisfatto...


27.11.2018

oggi inizierò, forse, a costruire le routine dei nemici...
popolamento stanze, tipo nemico ecc...
questo sarà abbastanza semplice come lavoro...
la cosa che mi porterà via molto tempo credo sarà la gestione dello sparo...
però sono così contento di ciò che ho ottenuto fino ad ora...
ho bisogno di ordine...
ora pulirò il codice dalle routine inutilizzate,
poi sistemerò le collisioni con i muri (ancora assenti)
poi devo scrivere la routine dello sparo
e solo dopo potrò iniziare coi nemici porte e oggetti...
-ok... ora è moooolto più pulito...
-ok... ora funziona anche la collisione muri....
comincio ad essere stanco...
troppi problemi da risolvere (non inerenti il gioco)...
testa piena...
uffa


28.11.2018

devo rimodificare il set di caratteri per ovviare al problema delle scale
(non ci si può saltare sopra in diagonale altrimenti si rimane bloccati)
piano piano sta prendendo la forma che desideravo da sempre...
le collisioni sono giuste...
finalmente....
il rischio di rimanere imbrigliati dentro le pietre non esiste più...

(OFFTOPIC: credo che l'idea originale fosse che Tallus dovesse essere sprovvisto di armi all'inizio, per poi trovare il pugnale

solo nella terza stanza in cima alle scale... non so perchè sia stato modificato ma sono certo che dovesse essere così...
ho visto da tempo lo sprite del pugnale ma solo più avanti ho capito dove doveva essere posizionato...
probabilmente, dato il placcato raffigurante Tallus con la spada presente nella confezione,
 un pugnale, non fosse esattamente un gran chè da trovare;
cmq posterò più tardi un paio di foto )


29.11.2018

ho provato a reimplementare lo spriteflipping ma i rallentamenti, ora,
son fin troppo evidenti... niente spriteflipping in realtime...

Qui il link all'ultima versione... giusto per testare movimenti e collisioni

http://darkerror.byethost16.com/00_cade_1_perfekt.prg
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: tsm_carmine - 12 Dicembre 2018, 23:34:11
A proposito di IRQ con Kernal disattivato, probabilmente hai già risolto oppure il problema non era questo, ma basta mettere il salvataggio dei registri all'ingresso, il recupero all'uscita e ricordarsi che la CPU salterà a $FF48 ogni volta.

Il Kernal fa:
Codice: [Seleziona]
.,FF48 48       PHA             save A
.,FF49 8A       TXA             copy X
.,FF4A 48       PHA             save X
.,FF4B 98       TYA             copy Y
.,FF4C 48       PHA             save Y
(omissis: controllo del flag BRK e salto al vettore relativo)
.,FF58 6C 14 03 JMP ($0314)     do IRQ vector (iIRQ)

E all'uscita:
Codice: [Seleziona]
.,EA81 68       PLA             pull Y
.,EA82 A8       TAY             restore Y
.,EA83 68       PLA             pull X
.,EA84 AA       TAX             restore X
.,EA85 68       PLA             restore A
.,EA86 40       RTI
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 13 Dicembre 2018, 10:36:53
Wow... grazie.. non sapevo che saltasse sempre lí... durante le prove (e strascichi di queste sono ancora presenti nel codice) avevo scritto le serie di pha che richiamavo all'ingresso e in uscita... ma saltava sempre in posti diversi per poi piantarsi con un jam...
Ora so il perchè: il set di caratteri andava a scrivere su quelle locazioni...stupido errore mio data l'incompetenza....
Grazie ancora per la delucidazione... giuro che se non me lo avessi spiegato, non credo sarei mai riuscito a capire il perchè andava sempre in jam...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: tsm_carmine - 13 Dicembre 2018, 12:40:52
Figurati, il bello è che ho sbagliato pure io  :azz:

la CPU salta in realtà all'indirizzo contenuto in $FFFE / $FFFF, che col Kernal attivato è $FF48, altrimenti può essere qualsiasi cosa.
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Roberto - 13 Dicembre 2018, 12:52:15
Diario    Novembre  2018
credo che caricherò le routine di rilevamento column and row su Ready64 nella rubrica "pillole di programmazione"

Se vuoi inserire una "pillola" puoi creare un thread apposito e poi segnalarlo alla redazione  :ciauz:
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: teppaboy - 21 Dicembre 2018, 20:08:05
Bene, bene, Moonshadow insieme a Montezuma sono sempre stati i miei gioci preferit! Spero che tu riesca in questa impresa di fare un seguito di MS :-)
Se ti serve una mano, ti posso dare qualche consiglio....

Wanax
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 25 Dicembre 2018, 18:27:10
Buon natale a tutti
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Oighen - 25 Maggio 2019, 15:59:38
Dato che stavo "monitorando" questo progetto da attento osservatore, riporto ciò che Darkerror ha aggiornato sul forum di Lemon64 nel topic di questo progetto:

Hi all,
Sorry but i've lot of work to do... no more freetime for this project...
From 02.2019 i'm back in Germany...
I think in September i'll find more time for moonshadow2...

Thx

Per ora pare che il progetto sia sospeso per mancanza di tempo, con la speranza che in Settembre possa essere ripreso.

Riporto anche qui per completezza (e perchè forse altri, come me, si erano chiesti il motivo della mancanza di aggiornamenti nel 2019).
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 25 Maggio 2019, 16:55:27
Ciao a tutti...
Beh...
Volevo dare notizie anche qui ma...
Mi hai preceduto... grazie cmq...
Purtroppo al momento sono stracolmo di lavoro e, come già detto pocp sopra, confido in un po di tempo libero da settembre.
A presto
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Raffox - 30 Maggio 2019, 10:41:14
Grazie a entrambi per l'aggiornamento :D
L'importante è che il progetto non vada perso nell'oblio, ma che invece continui a essere sviluppato a prescindere dai ritardi.
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 26 Dicembre 2019, 20:41:43
Rieccomi qui,

ho nuovamente un po di tempo libero da dedicare al progetto....
piccolo aggiornamento: ho aggiunto lo schermo dei titoli e corretto qualche imperfezione...

http://darkerror.byethost16.com/01_con_titolo_2.prg
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Oighen - 31 Dicembre 2019, 10:56:46
Ottimo!

Fossi in te, ricomincerei ad usare la sezione W.I.P. sul sito, magari proprio cominciando dal file linkato qui, di modo che sia di facile fruizione anche per chi lo visita…

Mi fa davvero piacere che tu abbia ripreso lo sviluppo, ho fatto qualche partita a MoonshadoW proprio da quando l'ho conosciuto grazie al tuo proposito di crearne il seguito… mi ricorda un po' Gods, gioco che adoravo da ragazzino. Purtroppo, non sono andato molto avanti...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 31 Dicembre 2019, 12:50:38
Ciao Oighen,
mi fa molto piacere risentirti... ( spero che nel frattempo ti sia cimentato un po nel mondo assembly)
Purtroppo ho deciso di non inserire più alcun file nella sezione w.i.p. poichè, senza chiederlo, è stato prelevato un programma e postato in rete spacciandolo per preview anche se si trattava solo di un mezzo demo colmo di errori... appunto ho postato qui il link di questo nuovo pezzettino di gioco.
Perchè qui? perchè qui mi fido, e soprattutto qui posso ricevere feedback di cui ho bisogno
( questo sito è frequentato da persone che sanno il fatto loro )
Sulla mia pagina posterò solo link a video su youtube... niente più programmi...
Sono molto felice di averti avvicinato a questa perla di programmazione che è Moonshadow... ( l'originale intendo )

P.S.: Se hai voglia, fammi sapere cosa ne pensi dello schermo del titolo...

Buon Anno a tutti...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Oighen - 31 Dicembre 2019, 13:47:13
Ciao Oighen,
mi fa molto piacere risentirti... ( spero che nel frattempo ti sia cimentato un po nel mondo assembly)
Purtroppo ho deciso di non inserire più alcun file nella sezione w.i.p. poichè, senza chiederlo, è stato prelevato un programma e postato in rete spacciandolo per preview anche se si trattava solo di un mezzo demo colmo di errori... appunto ho postato qui il link di questo nuovo pezzettino di gioco.
Perchè qui? perchè qui mi fido, e soprattutto qui posso ricevere feedback di cui ho bisogno
( questo sito è frequentato da persone che sanno il fatto loro )
Sulla mia pagina posterò solo link a video su youtube... niente più programmi...
Sono molto felice di averti avvicinato a questa perla di programmazione che è Moonshadow... ( l'originale intendo )

P.S.: Se hai voglia, fammi sapere cosa ne pensi dello schermo del titolo...

Buon Anno a tutti...

Ciao!

Beh, diciamo che ho cominciato a cimentarmi un po', ma non tanto quanto avrei voluto… anche perché (come sappiamo tutti, tant'è vero che anche tu hai ripreso lo sviluppo di MoonshadoW 2 dopo una pausa) a volte la vita "vera" chiama con cose più importanti… spero che il 2020 mi lasci un po' più tregua, se sarà così, mi cimenterò con più assiduità, altrimenti sto anche valutando di fare qualcosa col SEUCK (se avrò modo/tempo di fare entrambi contemporaneamente, qualcosa più a breve termine col SEUCK e qualcosa più a lungo termine in assembly, tanto meglio). Comunque, vita permettendo, il 2020 spero sia più produttivo del 2019 dal punto di vista della programmazione!

Per quanto riguarda il motivo per cui hai tolto la sezione W.I.P., ho capito il sito a cui fai riferimento, e capisco le tue perplessità… a questo punto ti consiglierei di usare la sezione W.I.P. per postare i links ai video su YT, giusto per non tenerla totalmente vuota (a proposito: hai un canale YT con video in merito allo sviluppo del gioco? Ad una rapida ricerca, mi pare di non aver trovato né un tuo profilo né del materiale che potesse essere associato ad un tuo account).

Lo schermo del titolo mi pare davvero ottimo, soprattutto se confrontato all'originale: il restyling grafico, pur non stravolgendo l'originale, è evidente (un po' come con lo sprite del cuore che pulsa).

Ho una piccola curiosità in merito alla procedura che utilizzi per creare il seguito di un gioco già completato, e potenzialmente sfruttando qualcosa di già programmato ed in uso nel gioco originale: come hai cominciato quest'avventura? Aprendo C64Studio e scrivendo le prime righe di codice, come se dovessi fare un gioco nuovo da zero, o importando l'importabile dal gioco originale ed ampliandolo/modificandolo successivamente, ma partendo da parti del suo codice che intendi conservare, o modificare solo in parte? (E, se sei partito dal gioco originale importando il materiale che intendi conservare, come hai proceduto in tal senso? Con quali tools, in che modo ecc.). Te lo chiedo perché magari, se trovassi troppo probante la programmazione di un gioco completo ex-novo, potrei cimentarmi anch'io nel creare un seguito/tributo di un gioco già esistente, soprattutto come primo progetto, specialmente se la mole di lavoro/competenze richieste dovessero risultare minori in virtù del fatto che buona parte del lavoro… già è stato fatto!

In bocca al lupo per il proseguimento del progetto dunque! Ovviamente associo gli auguri di buon anno nel contempo!
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 31 Dicembre 2019, 15:01:46
...beh, prima di tutto posso dirti che lavorare con il SEUCK è perfetto per imparare i concetti di base ed avere subito un riscontro pratico... quindi... buon lavoro...  ;)
per quanto concerne Youtube, non ho ancora postato nulla ma lo farò presto...

 Moonshadow 2 ho riscritto il codice tutto da 0... questo è il motivo per cui la grafica e il sonoro sono identici... non avevo tempo di cimentarmi nel design senza prima avere un engine base pressochè perfettamente aderente all'originale ( questioni di giocabilità che trovo ai massimi livelli)
nelle pagine del diario ho sottolineato che la routine di disegno delle stanze a schermo l'ho fatta in poco tempo di mano mia, poi ho notato che ero arrivato alle stesse conclusioni dell'originale, così ho usato la stessa routine di Galimberti per comodità di indirizzi in memoria...
questa è l'unica cosa che i due giochi hanno e avranno in comune...
( oltre allo status a fondo schermo e qualche sprite )
...che il codice è diverso si può facilmente verificare caricando l'originale e il mio in NTSC...

cmq mettere le mani in un progetto già fatto può risultare più complicato che non riscrivere tutto da principio...
puoi cambiare la grafica magari, ma importare routines complete non è un lavoro semplice... anche perchè ogni programmatore usa tecniche differenti per ottenere lo stesso risultato: un esempio... Paolo per disegnare gli sprite nel main screen ha usato un sistema normale che risparmia memoria e cioè un indirizzamento indicizzato indiretto e quindi in un paio di righe di codice ha potuto settare tutti i valori degli 8 sprite... per quanto mi riguarda, invece, io ho usato l'unrolling come in Creatures, più memoria ma maggiore velocità...
Sono felice che il titolo ti piaccia... quello che hai scritto è esattamente il mio scopo...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Oighen - 31 Dicembre 2019, 15:24:30
Capisco. Ah, piccolo consiglio (che poi è questione di gusti): metterei il "II" della stessa dimensione e con gli stessi effetti della scritta "MoonshadoW" lì a fianco… scritto così sembra quasi un "elevamento a potenza" e non balza all'occhio… e inoltre, lo stacco tra i 2 stili diversi secondo me è molto evidente e non il massimo visivamente parlando. Facendo parte del titolo principale del gioco ed essendo la stessa dicitura ("MoonshadoW II" è un titolo unico, e il "II" ha la stessa importanza facendone parte), non lo differenzierei in alcun modo.

Non pensavo avessi riscritto il codice interamente! Ma almeno gli sprite/caratteri/fondali/mappa li avrai presi in qualche modo dall'originale, no? O hai "ricreato" tutto uguale partendo da zero, ad esempio ridisegnando gli sprite o la mappa pixel per pixel uguali all'originale per ottenere un risultato identico a quello già esistente ma rifacendo tutto in prima persona? Non è una critica (anche perché tu conosci i pro del tuo modus operandi molto più di quanto non faccia io), ma lo troverei singolare, se fosse così…

cmq mettere le mani in un progetto già fatto può risultare più complicato che non riscrivere tutto da principio...
puoi cambiare la grafica magari, ma importare routines complete non è un lavoro semplice... anche perchè ogni programmatore usa tecniche differenti per ottenere lo stesso risultato: un esempio... Paolo per disegnare gli sprite nel main screen ha usato un sistema normale che risparmia memoria e cioè un indirizzamento indicizzato indiretto e quindi in un paio di righe di codice ha potuto settare tutti i valori degli 8 sprite... per quanto mi riguarda, invece, io ho usato l'unrolling come in Creatures, più memoria ma maggiore velocità...
Sono felice che il titolo ti piaccia... quello che hai scritto è esattamente il mio scopo...

Dipende forse dal grado di "modifica" che si vuole ottenere. Se prendessi il gioco MoonshadoW originale, e volessi cambiare solo gli sprites graficamente e le mappe mantenendo dal punto di vista del codice le routines usate dall'originale (pensavo che il tuo progetto fosse quello, non una riscrittura completa in merito), probabilmente la mole di lavoro sarebbe inferiore (prendi lo sprite hack di Giana Sisters trasformato in Super Mario ai tempi… anche se lì non hanno cambiato gli stages rendendoli simili a SMB).

Ecco, pensavo che in prima battuta avere qualche infarinatura di assembly che mi potesse permettere di capire dove stanno sprites e stanze (pensavo ad esempio in un gioco come Montezuma's Revenge), per poi modificare il gioco originale creando nuovi schemi e mappe, potesse essere un buon inizio in tal senso (probabilmente usando Action Replay o il C64Debugger).

Comunque "raddoppio" i complimenti, a 'sto punto, dato che pensavo il tuo lavoro vertesse più su una sorta di "hacking" dell'originale, e non fosse una creazione ex-novo di un gioco tramite un lavoro totalmente personale senza sfruttamento di MoonshadoW 1 in ampia misura (dalla mia ignoranza in merito, e avendo visto una forte similitudine, per ora, tra l'originale e il tuo seguito, avevo quasi dato per scontato che avessi solo leggermente ampliato/"hackato" l'originale senza sporcarti le mani nella riscrittura di quello che balza all'occhio come identico).
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 31 Dicembre 2019, 15:43:34
nonono, aspetta, sprite, grafica, musica, set di caratteri del gioco eccetera gli ho rippati dall'originale ovviamente... solo per comodità... ho riscritto di sana pianta tutto il codice sorgente: il programma vero e proprio...
Per quanto riguarda il "II" ... beh... sì... ci avevo provato ma mi serviva una sorta di altare, qualcosa che potesse sembrare un podio... se premi contemporaneamente i tasti "D" che sta per Darkerror ed "R" che sta per Rowlands... beh... capirai a cosa mi riferisco... è un piccolo easter egg...

Per entrare un po più in profondità ti consiglio di scaricare ICU64 che è un programmino geniale per pc, ti mostra il contenuto di tutte le aree di memoria del c64 in realtime e si aggancia a Vice... all'inizio sarà un po complicato, ma capirai in fretta come è fatta la memoria del c64... (almeno in generale)
Grazie dei complimenti, fanno sempre piacere...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Oighen - 31 Dicembre 2019, 15:55:48
nonono, aspetta, sprite, grafica, musica, set di caratteri del gioco eccetera gli ho rippati dall'originale ovviamente... solo per comodità... ho riscritto di sana pianta tutto il codice sorgente: il programma vero e proprio...

Ah ok… intendi modificarli in seguito, o rimarranno identici anche nella versione finale?

E come li hai "rippati" per inserirli in un nuovo gioco? Questa è una cosa che mi interessa molto, dato che un "hacking" di un gioco esistente è una cosa che mi alletterebbe fare (pensavo infatti questo seguito fosse una cosa di questo tipo, come avrai notato), mentre nel frattempo studio l'assembly come si deve per arrivare magari un giorno a fare un gioco mio vero e proprio...

Per quanto riguarda il "II" ... beh... sì... ci avevo provato ma mi serviva una sorta di altare, qualcosa che potesse sembrare un podio... se premi contemporaneamente i tasti "D" che sta per Darkerror ed "R" che sta per Rowlands... beh... capirai a cosa mi riferisco... è un piccolo easter egg...

Fantastico! :biggrin: Ora capisco… comunque lo ingrandirei leggermente e lo "centrerei" verticalmente di fianco alla scritta MoonshadoW, pur non cambiandone lo stile... e, fermo restando che la stragrande maggioranza dei giocatori non starà a macchinare sul title screen fino ad arrivare all'easter egg (io per primo, se non me l'avessi spoilerato), una chicca sarebbe far "ballare" il mostrino a ritmo di musica (ovviamente parlo di tenere i due frame che ci sono, solo accelerare l'alternanza tra i due per dare l'impressione che lui danzi sulla musica del titolo…)

Per entrare un po più in profondità ti consiglio di scaricare ICU64 che è un programmino geniale per pc, ti mostra il contenuto di tutte le aree di memoria del c64 in realtime e si aggancia a Vice... all'inizio sarà un po complicato, ma capirai in fretta come è fatta la memoria del c64... (almeno in generale)

Quello lo conosco! Però non lo usi per "rippare" le cose, giusto? Cioè, che tools hai usato per, come dici, "sprite, grafica, musica, set di caratteri del gioco eccetera gli ho rippati dall'originale ovviamente"? Quello sarebbe interessante… anche se forse il primo step che farei io è l'inverso di quello che hai fatto tu… mettere miei sprite/grafica/set di caratteri nel codice originale di un gioco, lasciando il codice del gioco invariato. Piuttosto che fare il contrario. Magari fare di Emlyn Hughes International Soccer (hai presente? gioco osannato in tutto, tranne che nella grafica) una hack visivamente più accattivante, con uno sforzo tutto sommato contenuto… o un Montezuma's Revenge con nuove mappe, ma mantenendo il resto invariato… sono progetti che mi allettano, e che forse non mi andrebbero ad occupare anni, come può essere il cominciare con l'assembly avendo zero esperienza di coding ma avendo l'ambizione di scrivere un buon gioco tutto mio e cominciando da zero (anche a livello di conoscenza, come dici tu, dei concetti di base).
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 31 Dicembre 2019, 16:08:00
Infatti... era la mia prima bozza ( le due "I" in centro sul titolo) ma sono troppi sprite e mi manca il Rastertime per una cosa così...
... per far ballare Clyde a tempo di musica mi serve troppo codice... e ne ho già sprecato parecchio solo per il titolo

per rippare sprite da un gioco puoi tranquillamente salvare la zona di memoria contenente gli sprite su un file che poi userai in c64studio, o dove preferisci, per editarli.
una volta modificati, li puoi ricaricare nello stesso posto del gioco da dove gli avevi salvati...
per esempio, da monitor di vice:
BS "nome_file.spr" 0 2000 3000
questo comando salva in un file, senza intestazione, chiamato "nome_file.spr" sul dispositivo 0 (cioè il tuo hard disk, la memoria che va da $2000 a $3000
è solo un esempio quindi i valori te li devi trovare tu... magari con ICU64...  ;)

La grafica, così come la musica, saranno modificate, ovvero, le ridisegnerò da 0... ma mantenendo lo stesso stile... solo il protagonista rimarrà inalterato...

Quello che vorresti fare tu, ovvero, cambiare sprite ecc non è difficile; quando hai finito di modificare gli sprite che vuoi salvi un backup con action rplay e stop... ma per aggiungere livelli in un gioco devi mettere mano al codice... e qui devi sapere esattamente quello che stai facendo... quindi assembly...
meglio cimentarsi con seuck...
e di pari passo studiare asm...
altrimenti corri il rischio di buttare moooolto tempo in tentativi ma senza aver afferrato i concetti base...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Oighen - 31 Dicembre 2019, 16:18:45
Capitolo MoonshadoW 2:

Infatti... era la mia prima bozza ( le due "I" in centro sul titolo) ma sono troppi sprite e mi manca il Rastertime per una cosa così…

Io, non essendo un esperto di coding, mi ero limitato all'aspetto estetico senza addentrarmi in ragionamenti simili… un po' come se guardassi un dipinto, insomma.


La grafica, così come la musica, saranno modificate, ovvero, le ridisegnerò da 0... ma mantenendo lo stesso stile... solo il protagonista rimarrà inalterato...

Beh, allora è un lavoro davvero molto più grande ed impegnativo di quello che mi aspettavo fosse! Altro che "hacking" dell'1 per fare il 2! Non vedo l'ora di assistere ai progressi (rinnovo il mio consiglio: magari tramite video di gameplay nella sezione W.I.P. del sito)!

Capitolo "hacking/ripping":

per rippare sprite da un gioco puoi tranquillamente salvare la zona di memoria contenente gli sprite su un file che poi userai in c64studio, o dove preferisci, per editarli.
una volta modificati, li puoi ricaricare nello stesso posto del gioco da dove gli avevi salvati...
per esempio, da monitor di vice:
BS "nome_file.spr" 0 2000 3000
questo comando salva in un file, senza intestazione, chiamato "nome_file.spr" sul dispositivo 0 (cioè il tuo hard disk, la memoria che va da $2000 a $3000
è solo un esempio quindi i valori te li devi trovare tu... magari con ICU64...  ;)

Quello che vorresti fare tu, ovvero, cambiare sprite ecc non è difficile; quando hai finito di modificare gli sprite che vuoi salvi un backup con action rplay e stop... ma per aggiungere livelli in un gioco devi mettere mano al codice... e qui devi sapere esattamente quello che stai facendo... quindi assembly...
meglio cimentarsi con seuck...
e di pari passo studiare asm...
altrimenti corri il rischio di buttare moooolto tempo in tentativi ma senza aver afferrato i concetti base...

Più che aggiungere livelli, pensavo il cambiarli (o meglio, cambiare solo le schermate)...con una sorta di Map Editor, cambiando i caratteri in ogni schermata, "creandone" di nuove senza modificare le routine di creazione stanze ecc. ...ovvero, in un gioco come Montezuma's Revenge, o lo stesso MoonshadoW (flick screen con "mappa"), tenere tutto il codice del gioco cambiando l'ordine dei caratteri per creare mappe nuove e sfide nuove. Mi ripeto, cosa che tra l'altro pensavo facessi per creare MoonshadoW 2, invece che riscrivere tutto il codice… anche quello sarebbe impossibile da fare senza mettere mano al codice in modo complesso?

Grazie di nuovo per questi ulteriori chiarimenti. Al limite chiederò nuovi chiarimenti in merito, magari in un topic separato, per tenere questo su MoonshadoW II.
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 31 Dicembre 2019, 16:56:33
che dire... non ho mai giocato con giochi di calcio... ho guardato ora un secondo su youtube e devo dire che sembra davvero fatto bene... sì, la grafica è molto cubettosa ma con solo 8 sprite credo che abbiano già fatto fin troppo... si poteva fare un po meglio sicuramente tramite un buon multiplexing ma va bene anche così...

montezuma's revenge non ci ho mai giocato però dev'essere sicuramente bello... per modificare le stanze ti devi costruire un editor, e per farlo, devi estrapolare la mappa che definisce le stanze: quindi devi saper leggere il codice assembler...
siamo sempre lì...
non voglio scoraggiarti, anzi, vorrei incentivarti dicendoti che un gioco come montezuma's revenge non è così complicato ( non l'ho provato, solo visto sul tubo), con qualche buon tutorial come quelli Richard Baylis (se si scrive così...) potresti già avere delle basi per fartene uno tutto tuo...
ovviamente in asm... ma è moooolto più facile che non in Basic... credimi...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Oighen - 31 Dicembre 2019, 17:11:32
che dire... non ho mai giocato con giochi di calcio... ho guardato ora un secondo su youtube e devo dire che sembra davvero fatto bene... sì, la grafica è molto cubettosa ma con solo 8 sprite credo che abbiano già fatto fin troppo... si poteva fare un po meglio sicuramente tramite un buon multiplexing ma va bene anche così...

montezuma's revenge non ci ho mai giocato però dev'essere sicuramente bello... per modificare le stanze ti devi costruire un editor, e per farlo, devi estrapolare la mappa che definisce le stanze: quindi devi saper leggere il codice assembler...
siamo sempre lì...
non voglio scoraggiarti, anzi, vorrei incentivarti dicendoti che un gioco come montezuma's revenge non è così complicato ( non l'ho provato, solo visto sul tubo), con qualche buon tutorial come quelli Richard Baylis (se si scrive così...) potresti già avere delle basi per fartene uno tutto tuo...
ovviamente in asm... ma è moooolto più facile che non in Basic... credimi...

OK grazie per i chiarimenti. Sì, io sto (nei pochi ritagli di tempo, sperando diventino più frequenti) seguendo proprio A$$emble IT di The New Dimension, quindi di Richard Bayliss.

http://www.tnd64.unikat.sk/assemble_it.html

Non mi scoraggio, semplicemente volevo "associare" un obiettivo ad una procedura… per sapere se potesse valere la pena. Ad esempio, da quello che mi hai scritto, deduco che la grafica di EHIS è dovuta alla limitazione dovuta al numero di sprite… quindi una semplice modifica dei suddetti sprites difficilmente porterebbe ad un "abbellimento" degli stessi (giacchè servirebbe un aumento del numero degli sprites per abbellire il tutto, es. un overlay in hi-res sui giocatori, ma questo creerebbe problemi di numero di sprites su schermo, giusto?)… per cui non è fattibile nel giro di un week-end. Anzi. Invece lo sprite hack di Giana Sisters con Super Mario Bros suppongo si sia rivelato molto più semplice, dato che il numero di sprite non cambia e si è provveduto ad un mero ridisegnamento degli stessi (per poi ricollocarli nella memoria come lo erano gli originali). Insomma, un progetto che, in buone mani, dura un week-end e non di più, magari… ecco, se un processo di abbellimento di EHIS fosse stato possibile con una procedura simile, non mi sarei tirato certo indietro!

Comunque dovessi avere bisogno di ulteriori chiarimenti in merito, aprirò un nuovo topic esplicitamente dedicato a questi argomenti… è giusto che questo tuo topic rimanga dedicato a MoonshadoW 2!
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 31 Dicembre 2019, 17:35:37
le cose stanno esattamente così... per fare un bel gioco di calcio bisognerebbe usare 4 sprite per ogni giocatore... cosa quasi impossibile per il c64...

a dir la verità, inizialmente avevo pensato di usare 4 sprite per disegnare il protagonista, cosa che mi avrebbe obbligato ad un pesante multiplexing, e fin qui sarebbe anche stato fattibile...
il problema sorge nella varietà di nemici che avrei potuto inserire...
mi spiego meglio: i frame di animazione del protagonista sono 26 per ogni direzione escluso la sequenza di morte... sarebbero diventati circa 50,52 aggiungendo l'alta risoluzione...
vedi i vari Shadow Warrior o Double Dragon...
a questo punto non avrei avuto più molto spazio in memoria per caricare sprite di nemici, porte, armi, esplosioni eccetera... quindi avrei dovuto optare per il multicaricamento... cosa che odio da sempre...
e' il bello del C64... scendere a compromessi ma senza distruggere il complesso...
quello che Paolo Galimberti, i fratelli Rowlands eccetera hanno fatto, IMHO, è più arte che altro...

P.S.: Siamo abbastanza OT, hai ragione, apri un topic tuo e ti prometto che verrò spesso a farti visita...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Oighen - 31 Dicembre 2019, 17:40:22
P.S.: Siamo abbastanza OT, hai ragione, apri un topic tuo e ti prometto che verrò spesso a farti visita...

Dovessi avere ulteriori dubbi, lo farò. Per il momento cercherò di mettere in pratica quanto mi hai suggerito.

Buon anno ancora e buon proseguimento del progetto!
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 16 Gennaio 2020, 21:05:02
A tutti gli amanti dell'originale Moonshadow ho una domanda:

La mappa del gioco, che qui sarà sempre disponibile, la vorreste già completa oppure che mostra solo le locazioni già visitate?

Grazie in anticipo a chi mi vorrà dare la sua opinione...
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Oighen - 18 Gennaio 2020, 18:30:58
A tutti gli amanti dell'originale Moonshadow ho una domanda:

La mappa del gioco, che qui sarà sempre disponibile, la vorreste già completa oppure che mostra solo le locazioni già visitate?

Grazie in anticipo a chi mi vorrà dare la sua opinione...

Non sono un "amante dell'originale", come ti ho detto l'ho scoperto solo grazie al tuo seguito…

Una considerazione particolare è questa: non preoccuparti, usciranno crack con versioni con trainers vari non appena la versione definitiva uscirà (parlavamo di quel sito…), e molto probabilmente uno di quei trainers sarà la mappa completa fin dall'inizio… quindi chi vorrà, avrà quell'opzione disponibile. Per cui ti direi di farle mostrare solo le locazioni già visitate, così da lasciare le due opzioni ai giocatori, chi si vuole avvalere dei trainers e chi no (spero non sia una considerazione di dubbio gusto, dato che la tua intenzione è di lasciare il gioco disponibile gratuitamente).

Un'altra considerazione è (idea presa da Gods, del quale sono un ammiratore) quella di avere una schermata introduttiva per ogni parte del gioco che descriva l'ambiente (es. https://www.youtube.com/watch?v=QCQ3hVtzUVc ha la schermata "The City" al secondo 9... poi c'è anche "The Temple" per la seconda parte del gioco ecc.)… forse per schermate di particolare importanza creerei anche un nome "ad hoc" da far apparire in fondo (per ogni schermata penso sia esagerato, ma magari per stanze importanti nel gioco può essere un'idea)… un po' come fa L'Abbaye Des Morts in basso a destra (http://ready64.org/giochi/scheda_gioco/id/5555/abbaye-des-morts-l- ). Non so tu quanto voglia "stravolgere" il gioco originale o meno: di Gods apprezzavo anche gli "hints", non chiari del tutto (es. "usa i ladri a tuo vantaggio"... senza però spiegare come, a quello ci dovevi arrivare tu!), ma abbastanza per farti focalizzare su un aspetto del gioco interessante (i ladri, posso semplicemente ucciderli, ma non mi limito a fare questo dopo aver letto l'indizio… cerco di "manipolarli" un po')… potrebbe essere un'idea da implementare, facendo scrollare gli indizi sotto dove ora scrolla la scritta "MoonshadoW 2 Work In Progress ecc."?

Non a caso, uno degli aspetti che mi ha fatto piacere MoonshadoW, è che sembra un po' un Gods per C64... oggetti da usare oculatamente, labirinti ampi e tutti da esplorare, mostri molto difficili da affrontare. Ah, una cosa che sinceramente non mi piace molto di MoonshadoW (e che apprezzo molto non ci sia in Gods) è il limite di tempo… dato che è un gioco molto "esplorativo", e con limiti di vita, trovo eccessivo aggiungere anche quello. Prince of Persia ha limite di tempo ma vite "infinite" all'interno di tale limite, Gods ha il numero di vite per cui è giusto lasciarti quantomeno senza limiti di tempo (per non parlare del fatto che i labirinti sono anche ben più complessi dei livelli di PoP). Certo, poi anche sul limite di tempo, uscirà un trainer che lo debellerà per chi vuole, quindi…

Buon proseguimento nel lavoro!
Titolo: Re:MoonshadoW 2 work in progress
Inserito da: Darkerror - 18 Gennaio 2020, 22:34:01
Sí, beh, è per quello che mi rivolgevo in particolare agli amanti dell'originale... mi spiego meglio: quando l'ho giocato la prima volta, 30 anni fa, l'idea della mappa che mostrava le locazioni gia visitate mi era piaciuta moltissimo... poi leggendo i vari commenti in rete ho notato che molti avrebbero preferito averla già completa... dal mio punto di vista la scelta originale contribuisce ad alzare la difficoltà del gioco... (peraltro davvero difficile)
Un discorso a parte sono i vari crack,cheat e simili...
Per quanto concerne il tempo, beh.... è indubbiamente troppo poco ma fa parte del gioco stesso.... ho ovviato a questo problema in maniera un po diversa ma cmq sará calibrato... spero...

Schermate introduttive... impossibile in un unico caricamento...
Hints sono già presenti nell'originale e continueró ad usarli nello stesso modo ovviamente...
Non so se riusciró in quello che ho in mente, ci sto lavorando proprio in questi giorni, vorrei implementare una routine che quando posi per esempio una pietra su un altare, si apre una porta o cose del genere... ma in un'altra locazione... quindi il gioco si interrompe e ti fa vedere, come Tomb Raider, la porta che si apre.... per poi tornare al gioco...
Non è complicato da implementare.... ed è un effetto che mi è sempre piaciuto... ma non so se avró abbastanza spazio...
Cmq grazie per il commento...
A presto...