Benvenuto!

RH è il posto ideale per ogni retrogiocatore che si rispetti. Se vuoi farne parte e poter commentare gli articoli o partecipare alle discussioni del forum, registrati.

Registrati

annuncio

Comprimi
Ancora nessun annuncio.

Indovinello della notte: 2° puntata!

Comprimi
X
 
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

    Indovinello della notte: 2° puntata!

    Eccoci giunti ad un nuovo e sempre più intrigante indovinello della notte.

    Quello di ieri era, diciamo, piuttosto facile anche se a prima vista non sembrava.
    Ora parliamo invece di un gioco che ha accolto nei suoi anni amore e odio fra gli utenti del Commodore 64, GHOST'n'GOBLINS, conversione "all in one" di quel "compressore" di un programmatore di nome Chris Buthler.

    Osservate bene la partita del nostro utente youtube chiamato "Long-playC64" e facciamo caso ad un particolare, ad un bug per essere precisi...



    Avete osservato bene?

    Ok! Allora diciamo che l'indovinello questa volta è forse un po' piu difficile, ma lo suddivido in due parti che riguardano proprio questo bug, il quale interessa la routine di collisione degli sprite in una determinata area dello schermo:
    1. di quale bug sto parlando?
    2. qual'è il motivo che genera questo bug?


    Bene ragazzi, il primo è abbastanza facile per chi ha giocato veramente a fondo a questo titolo, il secondo invece va più nel tecnico...ma non è poi tanto difficile.

    Forza e coraggio!
    Un'altra pizza napoletana offerta da me a Napoli, aspetta il primo che risponde esattamente ad entrambe le risposte...IN UN UNICO MESSAGGIO PERO'!

    #2
    su questo mi arrendo, non saprei davvero dire qual'è in bug. del resto troppe pizze poi fanno male.
    comunque il SID era fantastico

    Commenta


      #3
      Originariamente inviato da Ricki Visualizza il messaggio
      su questo mi arrendo, non saprei davvero dire qual'è in bug. del resto troppe pizze poi fanno male.
      comunque il SID era fantastico
      Indubbiamente! Comunque visto che ci hai provato do un'altro indizio.

      Con questo bug alcuni si facilitavano il compito di sconfiggere i boss finali...

      Commenta


        #4
        Originariamente inviato da gekido_ken Visualizza il messaggio
        Indubbiamente! Comunque visto che ci hai provato do un'altro indizio.

        Con questo bug alcuni si facilitavano il compito di sconfiggere i boss finali...
        devo ammettere di essere completamente fuori strada, avevo pensato a qualcosa sui piani mobili, quando salta da una piattaforma all'altra. non riesco proprio a trovare il bug

        Commenta


          #5
          più che altro se ti mettevi su una piattafoma che ti bloccava e premevi fuoco ripetutamente mandavi lacie e altro a raffica.
          Un pò come si faceva con l'originale e i coltelli o con la lacia un piccolo colpetto in avanti artur non si movema molto e iniziava a sparare quasi da fermo raffiche di coltelli come non mai.

          Commenta


            #6
            No ragazzi, non ci siamo.
            Il bug in questione è sempre presente sin dal primo istante in cui si gioca.

            Commenta


              #7
              io lo so, io lo so, io lo so, io lo so....ma non ve lo dico...:-))))

              altrimenti gekido a forza di offrirmi pizze mi deve comprare na pizzeria per asporto e un ristorante completo di cameriera...:-)))

              cmq è difficile...devo ammetterlo... se avere un c64 giocatelo e confrontate il gameplay....:-) (anche in emulatore)
              Sir Clive Sinclair? Uno degli ultimi Geni della nostra epoca

              Lo Spectrum? Il miglior tra gli 8 Bit...provare per credere, parola di Clive :-)

              LukeZab

              Commenta


                #8
                Oddio....potrebbe essere un affare!
                Comunque dai visto che l'indovinello di questa volta è davvero più difficile, aspetto a dopo questo weekend per svelarvelo ( così ho tempo per elaborarne un altro )
                Vi do il consiglio di giocarlo e giocarlo davvero, inoltre voglio dare un altro aiutino: il bug puo' dare sia vantaggi che svantaggi.
                Diciamo che durante la fase di gioco di ogni livello può essere anche pericoloso per il giocatore, ma diventa vincente se usato durante i boss finali.
                Ripeto, riguarda la routine di collisione fra sprite in una determinata zona dello schermo.
                Chi conosce un minimo il Commodore 64 e la sua gestione degli sprite, anche da basic, puo' arrivare facilmente alla soluzione.
                Forse ho detto davvero troppo
                Vediamo un po' ora!

                Commenta


                  #9
                  Bene ragazzi...vedo che questa volta l'indovinello non è risultato proprio di facile intuizione, anche se non è stato indovinato neanche il primo dei due che avevo postato questa volta e cioé, di quale bug si trattasse.
                  Ebbene chi ha giocato veramente col Commodore 64 e ne faceva il proprio compagno di giochi del pomeriggio, ma soprattutto chi ha giocato davvero intensamente alla conversione di GnG per il piccolo C64, ricorderà molto probabilmente che, arrivati al boss finale, se con il nostro personaggio ci si posizionava in prossimità della "OR" di "SCORE", si diventava invulnerabili, niente e nessuno poteva toccare il nostro eroe e portarlo alla morte, in quanto la routine di collisione sprite creava un bug nel quale il computer non riusciva più a rilevare la posizione sull'asse X dello schermo.
                  Quest bug in realta, era valido per qualsiasi sprite presente sullo schermo rendendo la situazione anche pericolosa per il giocatore, visto che se un nemico si trovava in quella zona sull'asse X, la nostra lancia vi sarebbe passata attraverso senza eliminarlo....se non ci credere potete provare tranquillamente, il bug funziona anche con l'emulatore.

                  Ora veniamo pero' alla parte piu' difficile, quella tecnica.
                  Come sappiamo tutti(?), la definizione dello schermo del Commodore 64 è di 320x200 pixel, 320 ovviamente sull'asse X, e come sappiamo tutti(?) il C64 puo' contare su ben 8 sprite hardware.
                  Ognuno di questi sprite puo' tranquillamente essere gestito anche da basic per cio' che riguarda definizione, colore, posizione, movimento e collisione. In particolare per la posizione di uno qualsiasi degli 8 sprite vi sono due locazioni di memoria che ne definiscono quella orizzontale (X) e quella verticcale(Y), richiamando da basic con "l'abusato" comando "POKE" , il quale, per chi sa un minimo di programmazione, prevede due valori nella sintassi "POKE (locazione di memoria),(valore bit)", rispettivamente con un massimo di 65535 e 255.
                  Di conseguenza essendo il numero di posizioni sull'asse orizzontale di 320 pixel, in teoria non sarebbe possibile posizionare uno sprite oltre il valore 255....e allora come si fa?
                  Ovvio, come al solito esiste un'altra locazione di memoria chiamata "locazione del bit più significativo" (cavolo di nome!) il quale permette di posizionare lo sprite interessato al punto "0" della reastante area sull'asse X, ovvero da 256 a 319.
                  Nel caso di GnG per C64, è stato fatto un errore nella sequenza dei cicli di assembler, o meglio una mancanza, in quanto gli sprite vengono sempre posizionati considerando come loro puntatore, il pixel piu' in alto a sinistra della loro matrice di definizione, ma per le collisioni è prevista solo la zona centrale dello sprite. Di conseguenza se un qualsiasi personaggio si trovi con il puntatore di posizione nella prima area dello schermo (quella da 0 a 255), ma con l'asse centraleche occupa la seconda area(da 256 a 319), ecco che la routine di collisione non trova riscontro e quindi si annulla.
                  Probabilmente nella comunità NONAMEC64 dovrebbe trovarsi una versione "fixata" del gioco, pero' è vero che quando non si usa il multiload, qualche magagna porima o poi esce fuori.

                  Comunque io ho cercato alla buona di spiegare questo bug. A chi gli venisse in mente di dire "sei andato troppo sullo specifico" gli potrei rispondere che probabilmente ha ragione, ma credo che il C64 abbia avuto tre fascie di utenze ben distinguibili: quelli che si limitavano a "LOAD-RUN", trattando il piccolo Commodore esattamente come una console(70%), chi si approfondiva a capire perché il C64 facesse quelle cose e studiarne almeno l'hardware (20%) e chi infine vi programmava seriamente per la gioia delle prime due(10%).

                  Ok ragazzi, questa sera ritornero con un indovinello molto più semplice, così almeno qualcuno mangerà la pizza in premio!

                  Commenta

                  Sto operando...
                  X