Autore Topic: Righe Di Caricamento In Basic  (Letto 6283 volte)

Roberto

  • Administrator
  • Utente
  • *****
  • Post: 2437
    • https://ready64.org
  • Gioco Preferito: Impossible Mission
Righe Di Caricamento In Basic
« il: 24 Ottobre 2007, 00:44:53 »
Postato su Lemon64, un listato in BASIC  per simulare le "righine" di caricamento, davvero molto interessante (ma per me, del resto, questa è tutta Black Magic).

L'ho digitato, per chi volesse scaricarlo eccolo in allegato  :)
« Ultima modifica: 21 Gennaio 2015, 22:57:52 da eregil »
Per collaborare, segnalare un errore (o qualsiasi altra comunicazione importante) utilizzare la pagina dei contatti:
https://ready64.org/informazioni/contatti.php

Loky

  • Utente
  • **
  • Post: 130
Righe Di Caricamento In Basic
« Risposta #1 il: 24 Ottobre 2007, 10:47:10 »
 figo! mi ero sempre chiesto come si facessero le righine di caricamento

MA dove va salvato questo programmino in basic? Prima di quello da caricare?

O sono solo righe da inserire in una applicazione per fare giusto un po di effetti?

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Righe Di Caricamento In Basic
« Risposta #2 il: 24 Ottobre 2007, 10:54:06 »
Citazione da: Roberto
Postato su Lemon64, un listato in BASIC  per simulare le "righine" di caricamento, davvero molto interessante (ma per me, del resto, questa è tutta Black Magic).
Tutt'altro che black magic, e' un semplice incremento del colore del bordo intervallato da un ritardo fisso.
Codice: [Seleziona]
*=$8000
inc $d020
inx
bne *-1
jmp *-6

Ecco qua alcuni altri esempi che tentano di imitare alcuni loader classici, variando anche il ritardo tra un cambio colore e l'altro

Codice: [Seleziona]
   *=$0326
    word newintro
    word $F6ED
newintro
loop
    inc $d020
l2  lda $a2
    eor $a1
    asl
    asl
    tax
l1
    dex
    bne l1
    beq loop

Codice: [Seleziona]
   *=$0326
    word newintro
    word $F6ED
newintro
    ldx #$01
    stx $d020
    dex
    stx $d021
loop
    dec $d020
    lda $a2
    eor $a1
    tax
l1
    dex
    bne l1
    inc $d020
    bne loop

Codice: [Seleziona]
   *=$0326
    word newintro
    word $F6ED
newintro
    ldx #$01
    stx $d020
    dex
    stx $d021
    ldy #$08
loop
    stx $d020
    jsr delay
    sty $d020
    jsr delay
    jmp loop
delay
    lda $a2
    eor $a1
    tax
l1
    dex
    bne l1
    rts

Codice: [Seleziona]
   *=$0326
    word newintro
    word $F6ED
newintro
loop
    lda $d020
    eor #$08
    sta $d020
    jsr delay
    iny
    bne loop
    inc $02
    lda $02
    and #$0f
    bne loop
    inc $d020
    jmp loop
delay
    lda $a2
    eor $a1
    asl
    tax
l1
    dex
    bne l1
    rts
« Ultima modifica: 21 Gennaio 2015, 22:58:54 da eregil »
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Righe Di Caricamento In Basic
« Risposta #3 il: 24 Ottobre 2007, 11:06:43 »
Citazione da: "Loky"
MA dove va salvato questo programmino in basic? Prima di quello da caricare?

O sono solo righe da inserire in una applicazione per fare giusto un po di effetti?
Sono solo simulazioni fini a se' stesse, di utilizzo pratico nullo.
 
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

eregil

  • Administrator
  • Utente
  • *****
  • Post: 714
  • Gioco Preferito: Impossible Mission
Righe Di Caricamento In Basic
« Risposta #4 il: 24 Ottobre 2007, 14:08:18 »
 Dire che è in BASIC è un tantinello fuorviante, no?

Ho trovato un BUG! Se carico il programma avendo spostato l'area BASIC a partire da 32640, non funziona! :lol:
 
Non rispondo a richieste private, di qualunque genere esse siano.
Per domande tecniche leggete le FAQ e usate l'apposito forum.
Per questioni amministrative contattate lo staff tramite il form Contatti sul sito.

Loky

  • Utente
  • **
  • Post: 130
Righe Di Caricamento In Basic
« Risposta #5 il: 24 Ottobre 2007, 14:09:58 »
 insomma quindi diciamo da utilizzare come presentazione nei propi programmi.

Ian, io sono subentrato da poco qui su ready ma mi sono sempre chiesto...sei un personaggio importantE???
come fai a sapere tutte ste cose?? dove si studiano???

comuqnue a parte questa parentesi, mi sono sempre chiesto come mai i miei programmi caricavano sepre a schermo azzurro senza far aparire le righe? il caricamento a righe era solo una questione di sboroneria o aveva una utilità a se stante?
 

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Righe Di Caricamento In Basic
« Risposta #6 il: 24 Ottobre 2007, 14:49:30 »
 
Citazione
insomma quindi diciamo da utilizzare come presentazione nei propi programmi.
No, non si possono usare da nessuna parte. Sono loop infiniti senza possibilita' di uscita, quindi non hanno, come gia' detto, alcun utilizzo pratico se non quello di simulare il flash del bordo che avviene in alcuni tapeloaders.
Citazione
Ian, io sono subentrato da poco qui su ready ma mi sono sempre chiesto...sei un personaggio importantE???
Dipende da cosa intendi per importante. C'e' chi mi vuole bene e c'e' chi mi vuole male. Sono contento di esistere per entrambe le categorie.
Citazione
come fai a sapere tutte ste cose?? dove si studiano???
Anni di studio e continue prove, iniziando da CCC, Enciclopedia "Input", per poi finire nei numerosi dox che si trovano in rete (compreso questo sito e forum), il tutto condito da migliaia di ore perse disassemblando programmi altrui cercando di capire come funzionassero. Cerco di non limitarmi a considerare "magia nera" ogni cosa che succede in un programma, se possibile e nelle mie capacita'.
Citazione
comuqnue a parte questa parentesi, mi sono sempre chiesto come mai i miei programmi caricavano sepre a schermo azzurro senza far aparire le righe? il caricamento a righe era solo una questione di sboroneria o aveva una utilità a se stante?
Dipende dal loader con cui erano registrati, alcuni hanno l'incremento del bordo, altri no. Il CBM loader normale non ha nessun tipo di effetto, cosi' come il Turbotape64. Alcune varianti di Galadriel/biturbo, che dovrebbero averlo, sono state modificate inserendo 3 NOP al posto della INC $d020 per non aver effetti...
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

Loky

  • Utente
  • **
  • Post: 130
Righe Di Caricamento In Basic
« Risposta #7 il: 24 Ottobre 2007, 14:59:41 »
 mmm input...
comincerò a leggerlo meglio =)
da piccolo mi dilettavo semplicemente a copiarne i listati...ora che sono ingegnere info potrei rivederlo in chiave differente

comunque per importante intendevo se magari appartenevi a quelche gruppo storico che craccava i giochi o robe simili.

 

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Righe Di Caricamento In Basic
« Risposta #8 il: 24 Ottobre 2007, 15:17:34 »
Citazione da: "Loky"
comunque per importante intendevo se magari appartenevi a quelche gruppo storico che craccava i giochi o robe simili.
Si, la /HF sta per HokutoForce
http://noname.c64.org/csdb/scener/?id=6662
Non e' un gruppo storico ma relativamente recente. Ma la mia conoscenza non deriva dal fatto di appartenervi, casomai il contrario. :)
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Righe Di Caricamento In Basic
« Risposta #9 il: 24 Ottobre 2007, 15:37:23 »
 
Citazione da: "eregil"
Dire che è in BASIC è un tantinello fuorviante, no?
Molto, dato che di basic non ha praticamente nulla, introduce il programma in asm con le poke e lo esegue con la sys.
Citazione
Ho trovato un BUG!
Puo' essere uno spunto per realizzarne una versione rilocabile. Vediamo se c'e' qualcuno che si cimenta in questo difficiliZZimo programma da 5 righe :sonno:
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

fab

  • Utente
  • **
  • Post: 493
    • http://wav-prg.sourceforge.net/
  • Gioco Preferito: Tetris, Turrican, Impossible Mission
Righe Di Caricamento In Basic
« Risposta #10 il: 25 Ottobre 2007, 13:40:41 »
 Magia nera?

Lo schermo di un televisore viene disegnato riga per riga. Per disegnare l'intero schermo serve 1/50 di secondo (1/60 nel sistema americano NTSC).

Se il colore dello schermo (o del bordo) viene cambiato piu' velocemente di 50 volte al secondo, alcune righe vengono disegnate col vecchio colore, e le successive col nuovo. E' questo che causa le famose "righe". Tanto piu' velocemente cambia il colore, tanto piu' sottili saranno queste "righe".

Questo e' anche il principio di funzionamento di molte routine grafiche, che sfruttano il fatto che il C64 puo' generare un interrupt proprio mentre lo schermo sta disegnando una determinata riga. In questo modo si puo' cambiare il colore del bordo a una riga fissata (e questo permette il bordo a righe fisse, o animate in maniera specifica, tra le altre cose), si possono spostare tutti gli 8 sprite dalla parte sopra quella riga alla parte sotto (e questo permette piu' di 8 sprite sullo schermo), si puo' fare lo scrolling della parte superiore dello schermo e non di quella inferiore (questo permette di avere scorrimento fluido sopra e punteggio sotto, ed e' anche il motivo per cui non si vede quasi mai scorrimento orizzontale con schermo diviso verticalmente) ecc.
Un giapponese sa recitare a memoria tutti i numeri di pi greco fino all'83431º decimale. Sa a memoria anche l'unico numero telefonico che è nella sua agendina - Daniele Luttazzi

Roberto

  • Administrator
  • Utente
  • *****
  • Post: 2437
    • https://ready64.org
  • Gioco Preferito: Impossible Mission
Righe Di Caricamento In Basic
« Risposta #11 il: 25 Ottobre 2007, 14:25:15 »
 
Citazione da: "fab"
Magia nera?
Suvvia, l'espressione "Black Magic" è usata in contesti ironici... :sonno:

Ad ogni modo, un conto è il principio teorico che tu hai (ben) illustrato e che funziona ottimamente a livello divulgativo.

Un altro conto invece è la realizzazione concreta dello stesso principio tramite un linguaggio di programmazione. Attività che in ogni caso resta appannaggio di chi ha una conoscenza sufficientemente approfondita della macchina. Cosa non da tutti, indubbiamente.
Per collaborare, segnalare un errore (o qualsiasi altra comunicazione importante) utilizzare la pagina dei contatti:
https://ready64.org/informazioni/contatti.php

Loky

  • Utente
  • **
  • Post: 130
Righe Di Caricamento In Basic
« Risposta #12 il: 25 Ottobre 2007, 18:08:39 »
 e fa sempre molto piacere scopire cose che ti erano rimaste oscure per anni e anni....

ah ah =)

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Righe Di Caricamento In Basic
« Risposta #13 il: 05 Febbraio 2008, 17:49:31 »
 
Citazione
insomma quindi diciamo da utilizzare come presentazione nei propi programmi.
I loader sono programmi scritti in linguaggio macchina che -come dice la parola- servono a caricare in RAM il codice macchina dell'applicazione vera e propria.
Di solito vengono allocati in una "nicchia" di memoria al sicuro dall'area riservata al programma (che in genere parte da $801).

Alcuni programmatori erano così bravi che oltre al caricamento riuscivano a far loro fare un mucchio di altre cose come suonare,visualizzare bitmap e persino intrattenere l'utente con dei simpatici giochini.

Il trucco per far questo però non te lo diciamo!  :overkiller:

DustBin

  • Utente
  • **
  • Post: 104
  • Gioco Preferito: WizBall
Righe Di Caricamento In Basic
« Risposta #14 il: 06 Aprile 2008, 12:53:29 »
 
Citazione
Alcuni programmatori erano così bravi che oltre al caricamento riuscivano a far loro fare un mucchio di altre cose come suonare,visualizzare bitmap e persino intrattenere l'utente con dei simpatici giochini.

Il trucco per far questo però non te lo diciamo!

Se è per questo il loader di Hawkeye e di Delta consentivano di "mixare" la musica del caricamento combinando varie sequenze di bass, drum, lead + fx  ;)

Semplicemente fenomenali. Cronologicamente credo che il primo esempio di questo tipo di loader fosse quello di Delta e, ma qui potrei sbagliarmi, l'ossatura del codice si doveva a John Twiddy. Ripeto, non sono per niente sicuro del nome del coder, anche se ovviamente tutti sanno che è l'autore di quel capolavoro che è Tau Ceti  :P  
Stefano Palmonari a.k.a. DustBin