Finalmente vedo come fare queste operazioni, che fino ad ora erano solo miti e leggende. Grazie Prof. spero di vedere altre applicazioni che sfruttano queste modalità di programmazione. Grazie ancora
Esattamente, nel mio gioco Newsstand, uso gli interi 64Kb, inclusi quelli sotto il VIC-II, SID e CIA. Agendo sulla locazione 1, si può per un istante ripristinare il VIC-II, impostare gli sprites e poi ripristinare la RAM, quindi tutti i 64Kb sono sfruttabili in assembly. Ripristino il Kernal solo al momento che mi serve caricare il livello successivo (essendo il gioco in multiload). A proposito di memoria, si noti che il VIC-II ha un bus indirizzi a 14-bit e può quindi vedere solo 16Kb alla volta. Pertanto, vede i 64Kb suddivisi in 4 banchi da 16Kb (tale banco può essere selezionato dalla locazione $DD00). Attraverso i suoi registri, è possibile cambiare dove si trova la memoria video (non è fisso a 1024), i caratteri, le bitmap e gli sprites (questo ci permette ad esempio di implementare tecniche di double buffering). Nel C64 Graphics Maker c'è il "VIC-II Calculator" nel menù tool, che aiuta ad impostare queste cose per il VIC-II (indica quali registri settare e come).
La cosa che non capivo da ragazzino sul VIC20 era proprio l'utilizzo di questa RAM "aggiuntiva". E sul VIC20 sì che avevi necessità di trovarla !!! L'errore che facevo era di pensare che la ROM potesse essere in qualche modo utilizzata come RAM. Invece andava capito che al momento dell'accensione, le ROM necessarie vengono trasferite sulle RAM disponibili. Quindi il trucchetto era di andare ad utilizzare le porzioni di RAM usualmente dedicate ad ospitare i dati contenuti nelle ROM. All'epoca furono entusiasmanti sia questa "scoperta" che come dimezzare i tempi di lettura dei programmi su musicassetta. Infatti l'I/O registrava 2 copie consecutive del programma: la seconda era per verifica. Quindi eliminando la seconda lettura di verifica, ottenevi il dimezzamento dei tempi ! Certo, ci perdevi un po' in sicurezza...
Tra i giochi capaci di sfruttare la ram "nascosta" sotto la rom c'è Impossible Mission. Nei computer Commodore successivi al C64 (C16, +4, C128) è stato implementato il bank switching hardware che permette di utilizzare quasi tutta la ram complessivamente disponibile all'accensione del dispositivo.
Finalmente vedo come fare queste operazioni, che fino ad ora erano solo miti e leggende. Grazie Prof. spero di vedere altre applicazioni che sfruttano queste modalità di programmazione. Grazie ancora
Grazie a voi per l'interesse in questi argomenti
Grande, Prof! Grazie anche questa volta!😊
Grazie!
buongiorno professore, il video come sempre spiegazione impeccabile, è utile, anche questa volta ho arricchito la mia conoscenza sul c64 grazie a lei
Grazie per il continuo interesse!
Molt interessant gràcies. 👏
De nada
Esattamente, nel mio gioco Newsstand, uso gli interi 64Kb, inclusi quelli sotto il VIC-II, SID e CIA.
Agendo sulla locazione 1, si può per un istante ripristinare il VIC-II, impostare gli sprites e poi ripristinare la RAM, quindi tutti i 64Kb sono sfruttabili in assembly.
Ripristino il Kernal solo al momento che mi serve caricare il livello successivo (essendo il gioco in multiload).
A proposito di memoria, si noti che il VIC-II ha un bus indirizzi a 14-bit e può quindi vedere solo 16Kb alla volta. Pertanto, vede i 64Kb suddivisi in 4 banchi da 16Kb (tale banco può essere selezionato dalla locazione $DD00). Attraverso i suoi registri, è possibile cambiare dove si trova la memoria video (non è fisso a 1024), i caratteri, le bitmap e gli sprites (questo ci permette ad esempio di implementare tecniche di double buffering). Nel C64 Graphics Maker c'è il "VIC-II Calculator" nel menù tool, che aiuta ad impostare queste cose per il VIC-II (indica quali registri settare e come).
Grazie! Come sempre un commento interessante. Non vediamo l'ora di giocare a Newsstand!
La cosa che non capivo da ragazzino sul VIC20 era proprio l'utilizzo di questa RAM "aggiuntiva". E sul VIC20 sì che avevi necessità di trovarla !!! L'errore che facevo era di pensare che la ROM potesse essere in qualche modo utilizzata come RAM. Invece andava capito che al momento dell'accensione, le ROM necessarie vengono trasferite sulle RAM disponibili. Quindi il trucchetto era di andare ad utilizzare le porzioni di RAM usualmente dedicate ad ospitare i dati contenuti nelle ROM. All'epoca furono entusiasmanti sia questa "scoperta" che come dimezzare i tempi di lettura dei programmi su musicassetta. Infatti l'I/O registrava 2 copie consecutive del programma: la seconda era per verifica. Quindi eliminando la seconda lettura di verifica, ottenevi il dimezzamento dei tempi ! Certo, ci perdevi un po' in sicurezza...
Bel video!!👏👍
Tra i giochi capaci di sfruttare la ram "nascosta" sotto la rom c'è Impossible Mission. Nei computer Commodore successivi al C64 (C16, +4, C128) è stato implementato il bank switching hardware che permette di utilizzare quasi tutta la ram complessivamente disponibile all'accensione del dispositivo.