Autore Topic: Lss Mimigame  (Letto 20992 volte)

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Lss Mimigame
« Risposta #15 il: 26 Maggio 2004, 22:55:18 »
 
Citazione
Per abilitare/disabilitare gli interrupt,invece che caricare opportunamente i registri appositi, non si potrebbe sostituire il tutto con un normale SEI e CLI?
Se fosse equivalente,ci sarebbe il vantaggio di risparmio di cicli macchina e di bytes..

SEI e CLI disattivano/riattivano le interruzioni, ma non appena le si riabilitano, tutte le interruzioni che erano avvenute durante la disabilitazione verranno eseguite subito.
Nel caso di raster interrupt, ci serve proprio avere l'interrupt a quel preciso raster, pertanto se avviene due linee dopo perché l'interrupt era disattivato, non ci serve più avere l'interruzione.
Non so se questo risponda alla domanda.

p.s. mi era morto il collegamento e la risposta era rimasta nel limbo; devo ancora guadrare il codice per Netherworld

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Lss Mimigame
« Risposta #16 il: 27 Maggio 2004, 11:16:24 »
 Ok,grazie a IAN e Ice00 per le risposte ;)

 :ciauz:

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Lss Mimigame
« Risposta #17 il: 30 Maggio 2004, 18:33:34 »
 binary e sorgente sono ora aggiornati:

- c'è la rilevazione collisione col gli oggetti a piedi del personaggio
- c'è il salto ed eventuale ricaduta con effetto accelerazione di gravità e rallentamento

Provate a saltare sui blocchi (occhio che non c'è la rilevazione collisione con la testa, quindi saltando solo in alto sotto un blocco, si finisce sopra passandoci attraverso!
Se cadete sulle lance attualmente non morite (serve per verificare meglio il comportamento della collisione)

Dopo alcuni tentativi ho scartato la rilevazione collisione hardware perché c'era il rischio di atterrare a metà blocco ed ho inserito quella di EFNY.
Questa collisione legge il carattere sotto i piedi del personaggio e se maggiore di un valore lo considera di una collisione.

L'effetto spiacevole di questa tecnica è che devo controllare la posizione al centro dei 3 byte dello sprite, quindi se vi avvicinate troppo ai bordi, cadete senza essere arrivati alla fine.
Probabilemente il codice da apportare per verificare tutti e tre i byte non sono molti di più, ma se così non da troppi problemi lo lascio.

I caratteri dei blocchi sicuramente li cambio perché non sono troppo brutti.

Allo stato attuale, se l'eseguibile è compresso siamo sui 1,4KB.

bye
S.T.

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Lss Mimigame
« Risposta #18 il: 30 Maggio 2004, 22:59:13 »
 
Ok,l'ho scaricato.Proximamente gli dò un'occhiata ;)

 

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Lss Mimigame
« Risposta #19 il: 01 Giugno 2004, 12:18:15 »
 Aggiornamento della mattina (piovosa ma vacanziera) [il file è sempre lo stesso con la solita password di sbloccaggio].

Aggiunti tutti i controlli delle collisioni anche a destra e sinistra del personaggio: ora ci si blocca tra il primo e il secondo blocco e se si salta non si riesce più a fermarsi a metà blocco come avveniva prima (provate lss2 e lss3 per vedere la differenza).

A questo punto costruisco una mappa pressoche completa, così da valutare l'occupazione di memoria e se già così senza nemici o diamanti da prendere il gioco risulta giocabile.

Per la cronaca, mi sono assicurato che Lasse mi abbia dato l'autorizzazione a riutilizzare parte del suo codice nel minigame, così da non andare contro a una delle regole.

bye
S.T.

 

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Lss Mimigame
« Risposta #20 il: 01 Giugno 2004, 18:48:10 »
 Altro aggiornamento (lss4)
Adesso c'è poco più di 1/4 di mappa effettiva, in cui sono stati aggiunti i diamanti da prendere.

I diamanti sono 1 semplice carattere. Una routine di collisione ne rileva la presenza e rimpiazza il carattere con uno spazio nella mappa di memoria schermo.
Questo significa che ripartendo con la mappa per un nuovo gioco, i caratteri saranno presenti ancora.

Rimane un piccolo problema: quando il personaggio muore (supponendo di avere più vite), ci sono due alternative:

1) ripartire da inizio mappa (abbastanza frustante) e in questo caso ci sarebbero di nuovo i diamanti già presi.
Probabilmente questo sistema renderebbe il gioco un attimo più longevo

2) ripartire da dove si è arrivati. Rimane il problema di dove posizionare il personaggio nella mappa in modo che riparta da una situazione sicura

Suggerimenti?


Ho notato che può esistere ancora un caso in cui ci si può "arrampicare" a metà blocco coi salti: durante la parabola discendente di un salto.
Devo aggiugere il controllo collisione anche durante questa fase.

Il codice compattato non è aumentato di molto, il che mi porta a supporre che posso avere almeno 2 schermi più musica, ma prima devo aggiungere un pò di nemici.

bye
S.T.

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Lss Mimigame
« Risposta #21 il: 01 Giugno 2004, 21:30:15 »
 Ciao

Ho guardato solo in parte le aggiunte di lss3.Il controllo del salto in avanti e all'indietro mi è sembrato un pò troppo difficile...potresti provare a modificare la routine del controllo del joystick,in modo che preveda la pressione contemporanea dei tasti su/sinistra su/destra ( ammesso che tu non l'abbia già fatto,come ti ho detto ho guardato solo parte delle aggiunte e non ho ancora scaricato lss4 ).
Citazione
2) ripartire da dove si è arrivati. Rimane il problema di dove posizionare il personaggio nella mappa in modo che riparta da una situazione sicura
Suggerimenti?
Potresti scegliere la prima soluzione se gli schemi non sono eccessivamente lunghi e complessi.
Nel secondo caso,invece,potresti implementare una routine che posizioni lo sprite del protagonista sulla prima riga della schermata corrente e rigeneri gli sprite dei nemici più avanti ( per esempio,dalla decima riga di schermo in poi... );a questo proposito,si può implementare un contatore che scatta ogni tot righe;quando il contatore scatta,viene salvato almeno il registro degli sprite attivi ( che determina quanti nemici ci sono attualmente ) e dei puntatori agli sprite ( per sapere in che zone di memoria sono salvate le definzioni degli sprite stessi ).
Citazione
Ho notato che può esistere ancora un caso in cui ci si può "arrampicare" a metà blocco coi salti: durante la parabola discendente di un salto.
Io l'ho notato anche quando lo sprite cade sulle lance e lo si fa uscire...ma è ininfluente,visto che in quel caso si muore :D
Bye :ciauz:

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Lss Mimigame
« Risposta #22 il: 01 Giugno 2004, 22:04:27 »
Citazione da: "ice00"
Ho notato che può esistere ancora un caso in cui ci si può "arrampicare" a metà blocco coi salti: durante la parabola discendente di un salto.
 
Io ho notato che fin dall'inizio se ci si gira verso sinistra e stando attaccati al bordo sx non puo' saltare piu' di tanto, come se avesse un mattone sopra la testa :)
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Lss Mimigame
« Risposta #23 il: 01 Giugno 2004, 22:26:10 »
 
Citazione
Il controllo del salto in avanti e all'indietro mi è sembrato un pò troppo difficile...
Ok,ho capito dove sbagliavo:prima si preme destra/sinistra,e poi su... :stordita: comunque la routine di controllo del salto mi sembra piuttosto complessa;proverò ad esaminarla con più attenzione :mellow:

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Lss Mimigame
« Risposta #24 il: 01 Giugno 2004, 22:43:35 »
   
Citazione
Io ho notato che fin dall'inizio se ci si gira verso sinistra e stando attaccati al bordo sx non puo' saltare piu' di tanto, come se avesse un mattone sopra la testa

E' vero. Forse ho tolto troppi controlli che c'erarano sull'asse x di cui mi sembravano ininfluenti. Proverò a controllare.

Citazione
Ok,ho capito dove sbagliavo:prima si preme destra/sinistra,e poi su
Esatto. Corrisponde a premere DX sul joystick e quando si vuole saltare si porta a DX/UP.

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Lss Mimigame
« Risposta #25 il: 02 Giugno 2004, 22:38:09 »
 Inserito lss5.prg
Essenzialmente adesso c'è il pannello in alto in cui si vedono gli score: c'è il tempo che decresce, le vite, i bonus e i punti.

Dato che fino a sabato non ho tempo di tornare a scrivere codice, vi chiedo se può andar bene aver messo l'high score (attualmente sempre a 0) sotto allo score.
Questo dovrebbe evitarmi di produrre uno screen apposito con l'highscore, ma non so se è troppo antiestetico.

Il prossimo step è quello di far perdere le vite e finire il livello, in modo da produrre lo schema del gioco.

Ho inserito anche lo sprite del nemico come definizione sul codice, anche se per adesso non è ancora usato.

Compresso, ora siamo sui 1,8KB.

bye
S.T.

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Lss Mimigame
« Risposta #26 il: 05 Giugno 2004, 23:17:48 »
 
Citazione
può andar bene aver messo l'high score (attualmente sempre a 0) sotto allo score.
Sì,secondo me non disturba affatto l'estetica  :)
Ciao

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Lss Mimigame
« Risposta #27 il: 06 Giugno 2004, 03:59:34 »
 @Stefano:
Giusto un paio di correzioni, inezie per la verita'.

1)
jsr  writeGameTitle
jsr  SCREEN        
E' inutile chiamare la routine di stampatitolo solo per settare il bianco, fai
lda #1
jsr $e536
e' sufficiente

2)
lda  #254
and  $DC0E
sta  $DC0E

Basta un SEI (e ovviamente CLI quando finito di trasferire e risettato $01 a $37)

3)
.byte $00, $01, $01, $01     ; white  -> BK_CLOUD blocks
metti a 1 anche il primo byte o durante lo scrolling iniziale il primo carattre della nuvola resta nero

edit: C'e' un problema con il kernel v2 (punteggi in blu) ma almeno non dovrebbe rompere come in Markanoid ;)
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Lss Mimigame
« Risposta #28 il: 06 Giugno 2004, 09:30:23 »
 Adesso inserisco le modifiche (e io che mi chiedevo come mai nello scrolling c'era il nero sulla nuvola, tanto che avevo pensato di non utilizzare più la nuvola alta!)

Col Kernel V2 dovevo ancora provare, ma prima della fine ho tutti i kernel che mi hai dato da provare!!!

altri aggiornamenti saranno disponibili stasera

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Lss Mimigame
« Risposta #29 il: 06 Giugno 2004, 16:49:56 »
 
Citazione da: "ice00"
Col Kernel V2 dovevo ancora provare, ma prima della fine ho tutti i kernel che mi hai dato da provare!!!
 
Col kernel v.1 addirittura non si pone il problema perche' il cls usa sempre il bianco ;)
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -