Edicolac64 forum - il commodore 64 in italia

Convertire le cassette/dischi e effettuare il processo inverso + Programmi e Utility => conversioneConvertire le cassette/dischi e effettuare il processo inverso + Programmi e Utility => Topic aperto da: Massi cadenti - 22 Agosto 2011, 23:43:21

Titolo: Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 22 Agosto 2011, 23:43:21
Byte Games n6 C64 Lato A
E il lato C16?  :ncomment:
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 23 Agosto 2011, 10:03:27
Ho provato a convertirlo con audiotap ma dopo innumerevoli tentativi non sono riuscito a far funzionare neppure un gioco. C'è qualche accorgimento e/o settaggio particolare da usare col C16? Se interessa posso ricampionare il nastro e metterlo online a disposizoni di chi vuole cimentarsi nella conversione.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 23 Agosto 2011, 10:36:50
Ho messo in condivisione il wav del lato B:
http://www.megaupload.com/?d=WX45SL7T
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 23 Agosto 2011, 22:55:24
No, con l'audio non si può perché wav2tap non include le halfwaves. Non puoi usare mtap?
La sintassi è
mtap nome.tap -c16pal -h -b 50
Di dove sei? Se sei di Napoli posso dumparle io col DC2N
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 23 Agosto 2011, 23:39:23
Però Audiotap permette la selezione "C16 with semiwaves" che però con questa cassetta non da alcun risultato. Impostando seplicemente C16 invece nel tap ottenuto parte l'introduzione e i caricamenti sembrano andare(appaiono le linee raser di caricamento)  ma poi si blocca tutto alla fine. Purtroppo non ho la possibilità di collegare un datasette e provare con mtap...e sono un po' lontanuccio da Napoli(La Spezia).
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 24 Agosto 2011, 23:30:25
Se il problema non è il pc, procurati un datassette, ormai te lo tirano dietro in qualunque mercatino, o alla peggio (perché la spedizione rischia di costarti più dell'oggetto) puoi andare su ebay.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 25 Agosto 2011, 00:36:09
Il problema non è il datasette(ne ho 2) ma il cavo e la porta parallela che non c'è su notebook(questa penso rimediabile con qualche adattatore usb).
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 25 Agosto 2011, 18:08:03
Il problema non è il datasette(ne ho 2) ma il cavo e la porta parallela che non c'è su notebook(questa penso rimediabile con qualche adattatore usb).
No, non perdere tempo e soldi, non funziona con adattatori USB, perché chiaramente gira sotto DOS e DOS significa niente supporto USB. Devi allora cercare di recuperare un vecchio PC (va bene anche un Pentium 1 e probabilmente persino un 486), magari prova sul newsgroup it.comp.retrocomputing. La cosa importante è che abbia oltre alla parallela anche qualcosa con cui possa interscambiare i dati con il portatile. Questo significa
- o Windows dal 95 in su (forse anche 3.x ma non sono sicuro) e una scheda di rete (pure ISA va bene) in modo da passare i dati via rete (puoi anche non collegarlo a internet basta collegarlo al portatile con un cavo cross -ma anche se non è cross probabilmente la porta ethernet del portatile ha l'autosense ed è in grado di gestire anche un cavo dritto-)
- oppure un drive per floppy (3.5") che però devi avere anche sul portatile in modo da passare i dati su floppy
- oppure sempre Windows dal 95 in su e un masterizzatore in modo da passare i dati su CD

Non perder tempo con porte parallele su USB e cose del genere.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 25 Agosto 2011, 18:20:57
Un pc fisso potrei anche recuperarlo, ma per il cavo c'è modo di comprarne uno già costruito?
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 25 Agosto 2011, 23:30:43
Se hai un 1531 (quello nero che si collega al C16) puoi chiedere a Joe Forster (http://sta.c64.org/x1541shop.html) di costruirti un X1531 (http://sta.c64.org/x1531.html). Altrimenti se hai un C64 funzionante puoi usare un normale X1541 (quello per collegarci il drive) lo trovi anche su ebay (oltre che da Joe Forster), collegarlo non al drive ma al C64 su cui farai girare il programma TAPSERV, colleghi il normale datassette al C64 e usi MTAP con l'opzione -x.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 25 Agosto 2011, 23:54:42
Scusa, che opzioni hai usato in audiotap (senza halfwaves) per fargli creare un tap che veniva letto inizialmente? E per leggerlo hai poi usato VICE o YAPE?
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 26 Agosto 2011, 09:49:59
Non ricordo che parametri ho usato durante quel tentativo, ma questa mattina ho fatto un po' di prove con quel wav e Audiotap non mi ha piu' generato qualcosa di leggibile(neppure il "found"). Sono riuscito ad ottenere lo stesso risultato dell'altra volta(introduzione e caricamenti) solo usando Ubercassette(che non conoscevo sino a 2 giorni fa) utilizzando il comando "ubercassette nome.wav nome.tap -machine: c16".
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 26 Agosto 2011, 13:53:49
Ok, ho provato e ti confermo che ha bisogno delle halfwaves perché è lo stesso loader dei byte games che ho già dumpato io (valli a vedere), che se non ci sono le halfwaves i colori della cornice NON cambiano.
Questo UberCassette (http://www.retroreview.com/iang/UberCassette/) che hai trovato e che neanche io conoscevo deve quindi supportare i TAP v2 per generare tap funzionanti con halfwaves.
In alternativa bisogna capire cos'è che non va in audiotap, che parametri avevi usato senza halfwaves e se c'è modo di recuperare un tap funzionante con halfwaves.
Le mie conoscenze sono finite qui, se fossi a La Spezia avrei già risolto dumpando io col DC2N purtroppo da qui non posso fare altro. Mando quindi una mail a Fabrizio Gennari e a Luigi Di Fraia, due guru del formato TAP e dei convertitori, segnalando loro questo thread, sperando che almeno loro riescano a capirci qualcosa.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 26 Agosto 2011, 14:09:30
Tra gli altri c'è se ho ben capito anche il gioco dei Puffi che da bambino comprai in edicola e NON FUNZIONAVA LA CASSETTA e anche cambiandola me ne diedero un'altra non funzionante... quindi m'è rimasta sta cosa di volerlo vedere (anche se non m'aspetto granché, anche quello per C64 visto anni dopo mi aveva deluso... per vedere un bel gioco coi Puffi ho dovuto aspettare il SNES)
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 26 Agosto 2011, 19:05:32
Ubercassette(che pare molto promettente) manca del supporto alle halfwaves e infatti l'autore scrive "C16 support is limited to full-wave at the moment, I'll try and add half-wave support if I can find a half-wave cassette!". Gli ho segnalato il link a quel wav che ho campionato, magari gli può essere utile.
Siamo nelle mani degli esperti ora.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 26 Agosto 2011, 19:38:02
Ubercassette(che pare molto promettente) manca del supporto alle halfwaves e infatti l'autore scrive "C16 support is limited to full-wave at the moment, I'll try and add half-wave support if I can find a half-wave cassette!". Gli ho segnalato il link a quel wav che ho campionato, magari gli può essere utile.
Siamo nelle mani degli esperti ora.
Volevo farlo io ma non ho trovato un contatto sul sito... probabilmente era nel readme...
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: fab - 27 Agosto 2011, 19:11:26
Il motivo per cui il TAP v1 (cioè senza semionde) non funziona (o, meglio, solo le parti non turbo funzionano) è semplicemente che questo particolare turbo loader ha bisogno delle semionde. Riconosce i trigger in salita invece di quelli in discesa. In pratica, sarebbe sufficiente una modifica al turbo loader per fargli riconoscere i trigger in discesa, e il TAP v1 funzionerebbe.

I motivi per cui il TAP v2 (cioè con semionde) non funziona sono due, e più sottili:
* il kernal loader (quello senza turbo) è particolarmente sensibile alle variazioni delle lunghezze degli impulsi, e apparentemente l'uso delle semionde lo rende ancora più sensibile. Servirebbe un programma per ripulirlo, tipo Tapclean, che però non supporta i TAP v2
* il supporto per le semionde è stato introdotto in Audiotap abbastanza recentemente, e soltanto dopo ho notato che VICE accetta i TAP v2 solo se la prima semionda è positiva. Audiotap non considera questo fatto e considera la prima semionda che trova, non importa se positiva o negativa.

Ho ottenuto un TAP funzionante:
*scaricando il WAV
*convertendolo con Audiotap usando le semionde e con sensitivity 35 (sennò non va, ci sono brusche variazioni di volume nel WAV)
*cancellando un byte dal TAP con un hex editor, in modo da sfasare tutti i byte successivi (ciascun byte rappresenta alternativamente una semionda positiva o negativa, così facendo si scambiano)
*ripulendolo usando un programma Python che mi sono scritto apposta, che riduce la varianza nelle lunghezze degli impulsi

Per rendere il procedimento più agevole bisogna:
*modificare Audiotap affinché inizi a riconoscere le semionde a partire dalla prima positiva (e magari introdurre l'opzione "inverted waveform" anche per le semionde, così, se l'opzione è attiva,Audiotap inizi a riconoscere le semionde a partire dalla prima negativa)
*introdurre un programma per ripulire i TAP v2 (o aggiungere il supporto a Tapclean)
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 27 Agosto 2011, 20:38:18
Ho ottenuto un TAP funzionante:
Magari mandalo da qualche parte visto che il procedimento è complicato e ormai l'hai fatto... ;) oltre ovviamente a rendere automatizzabile la cosa, di cui io e i tanti appassionati di C16 non possiamo far altro che ringraziarti visto che non c'è (non c'era) modo di dumpare una cassetta per C16 con halfwaves col metodo audio.

Per rendere il procedimento più agevole bisogna:
*modificare Audiotap affinché inizi a riconoscere le semionde a partire dalla prima positiva (e magari introdurre l'opzione "inverted waveform" anche per le semionde, così, se l'opzione è attiva,Audiotap inizi a riconoscere le semionde a partire dalla prima negativa)
*introdurre un programma per ripulire i TAP v2 (o aggiungere il supporto a Tapclean)
Altri desiderata, riguardanti wav-prg:
- supporto ai loader algasoft non supportati (che sono almeno due e te li ho già mandati)
- supporto ai loader/turbo per C16 (te li posso mandare senza problemi)
la cosa chiaramente dovrebbe avere riflessi anche su audiotap e su tapclean
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 28 Agosto 2011, 10:39:10
Sarebbe interessante, in attesa di nuove versioni di audiotap e ubercassette(l'autore si è accorto che la gestione C16 effettivamente non è corretta e se ne sta occupando), scrivere una piccola guida sul come ottenere un tape funzionante secondo il metodo di fab. Cambiare un byte con un hexeditor non è complicato, a patto di sapere quale cambiare(ho dato un'occhiata e i .tap iniziano con un header e il problema sta nel sapere quando comincia la semionda da sfasare), e soprattutto avere a disposizione anche il programma in Python.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: fab - 28 Agosto 2011, 13:34:44
Cambiare un byte con un hexeditor non è complicato, a patto di sapere quale cambiare(ho dato un'occhiata e i .tap iniziano con un header e il problema sta nel sapere quando comincia la semionda da sfasare), e soprattutto avere a disposizione anche il programma in Python.
Il file in un hex editor inizia all'incirca così
Codice: [Seleziona]
0000000 43 31 36 2d 54 41 50 45 2d 52 41 57 02 02 00 00 f6 01 22 00
0000020 00 2f 9e 03 00 ac 90 06 42 21 14 1c 1c 1c 1a 1c 1c 1c 1c 1c
I primi 20 byte sono header. Segue uno 00 seguito da 3 byte (2f, 9e e 03) e un altro 00 seguito da 3 byte (ac, 90 e 06). Questi sono pause. Rimuovi uno qualsiasi dei byte successivi.
avere a disposizione anche il programma in Python.
Eccolo. Gli argomenti sono <nome del file di ingresso> <nome del file di uscita> <offset del primo byte del primo blocco da ripulire> [<offset del primo byte del secondo blocco da ripulire>...]
Codice: [Seleziona]
#!/usr/bin/python3

import io
import sys

def statist(infile,outfile,starts):
inputs = io.open(infile,'rb')
outputs = io.open(outfile,'wb')


pulisci = False
stat = [{},{},{},{},{},{},{},{}]
beginstat = [{},{}]

for start in starts:
startn = int(start)
p =inputs.tell()
print("skip from "+str(p)+" to "+start)
if startn < p:
continue
bytesin = inputs.read(startn-p)
outputs.write(bytesin)

blocchi = 0
while blocchi < 4:
p =inputs.tell()
thisbyte=inputs.read(1)
if len(thisbyte)==0:
break
if not pulisci:
if thisbyte[0]>=0x40 and thisbyte[0]<0xc0:
pulisci = True
inizioblocco = p
print("iniz blocco "+str(blocchi)+" a "+hex(thisbyte[0])+" at "+str(p))
elif thisbyte[0]==0x00:
thisbyte=thisbyte+inputs.read(3)
else:
pass
#clean pilot
#thisbyte=bytes([0x1b])

if pulisci:
if ((p - inizioblocco) % 40) == 0:
if(thisbyte[0]<0x40):
print("fineblocco "+hex(thisbyte[0])+" at "+str(p))
pulisci = False
blocchi = blocchi + 1
thisbyte2=inputs.read(1)
#clean end of block
thisbyte=bytes([0x35,0x35])
if blocchi == 2:
bytesin = inputs.read(2700)
outputs.write(bytesin)
else:
thisbyte=thisbyte+inputs.read(1)
for i in range(2):
if not thisbyte[i] in beginstat[i]:
beginstat[i][thisbyte[i]]=0
beginstat[i][thisbyte[i]]=beginstat[i][thisbyte[i]]+1
toolittle=thisbyte[0]-0x5a
if toolittle<0:
#print("accorc "+hex(thisbyte[0])+" "+hex(thisbyte[1])+" at "+str(p))
thisbyte=bytes([0x5a,thisbyte[1]+toolittle])
#clean start of block
#thisbyte=bytes([0x6c,0x6c])
elif ((p - inizioblocco) % 40) == 1:
print("What?")
elif ((p - inizioblocco) % 40) == 2:
#clean right after start of block
pass
thisbyte=bytes([0x35])
elif ((p - inizioblocco) % 40) == 3:
#clean right after start of block
pass
thisbyte=bytes([0x35])
else:
thisbyte=thisbyte+inputs.read(3)
statbase = 0
resbytes=thisbyte
if (thisbyte[0]+thisbyte[1]<thisbyte[2]+thisbyte[3]):
if(thisbyte[0]>0x28):
resbytes=bytes([0x25])+resbytes[1:4]
if(thisbyte[2]<0x2f):
resbytes=resbytes[0:2]+bytes([0x2f])+resbytes[3:4]
#clean zero bit
#resbytes=bytes([0x17,0x17,0x35,0x35])
else:
statbase = 4
if(thisbyte[0]<0x2f):
resbytes=bytes([0x2f])+resbytes[1:4]
if(thisbyte[2]>0x28):
resbytes=resbytes[0:2]+bytes([0x25])+resbytes[3:4]
#clean one bit
#resbytes=bytes([0x35,0x35,0x17,0x17])
for i in range(4):
if not thisbyte[i] in stat[i+statbase]:
stat[i+statbase][thisbyte[i]]=0
stat[i+statbase][thisbyte[i]]=stat[i+statbase][thisbyte[i]]+1
thisbyte=resbytes

outputs.write(thisbyte)

bytesin=inputs.read()
outputs.write(bytesin)

statbase = 0
for i in stat:
print("stat for byte "+str(int(statbase/4))+" pos "+str(statbase%4))
statbase=statbase+1
for k in sorted(i.keys()):
print("byte "+hex(k)+" occurs "+str(i[k])+" times")
statbase = 0
for i in beginstat:
print("stat for begin "+str(statbase))
statbase=statbase+1
for k in sorted(i.keys()):
print("byte "+hex(k)+" occurs "+str(i[k])+" times")

if len(sys.argv)<3:
print("not enough args")
sys.exit
statist(sys.argv[1],sys.argv[2],sys.argv[3:])
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: fab - 28 Agosto 2011, 19:37:04
Versione migliorata, che prova a riconoscere automaticamente dove iniziano i blocchi, così non bisogna passargli gli offset manualmente. Gli argomenti sono soltanto il file .tap che si vuole ripulire e quello dove salvare i dati ripuliti
Codice: [Seleziona]
#!/usr/bin/python3

import io
import sys

def statist(infile,outfile):
inputs = io.open(infile,'rb')
outputs = io.open(outfile,'wb')


pulisci = False
stat = [{},{},{},{},{},{},{},{}]
beginstat = [{},{}]

lunghpilot = 0

blocchi = 0
while 1:
p =inputs.tell()
thisbyte=inputs.read(1)
if len(thisbyte)==0:
break

if not pulisci:
if thisbyte[0]>=0x0f and thisbyte[0]<0x20:
lunghpilot = lunghpilot + 1
#clean pilot
#thisbyte=bytes([0x1b])
elif thisbyte[0]>=0x40 and thisbyte[0]<0xc0 and lunghpilot > 450:
pulisci = True
inizioblocco = p
print("iniz blocco "+str(blocchi)+" a "+hex(thisbyte[0])+" at "+str(p))
elif thisbyte[0]==0x00:
lunghpilot = 0
thisbyte=thisbyte+inputs.read(3)
else:
lunghpilot = 0

if pulisci:
if ((p - inizioblocco) % 40) == 0:
if(thisbyte[0]<0x40):
print("fineblocco "+hex(thisbyte[0])+" at "+str(p))
lunghpilot = 0
pulisci = False
blocchi = blocchi + 1
thisbyte2=inputs.read(1)
#clean end of block
thisbyte=bytes([0x35,0x35])
else:
thisbyte=thisbyte+inputs.read(1)
for i in range(2):
if not thisbyte[i] in beginstat[i]:
beginstat[i][thisbyte[i]]=0
beginstat[i][thisbyte[i]]=beginstat[i][thisbyte[i]]+1
toolittle=thisbyte[0]-0x5a
if toolittle<0:
#print("accorc "+hex(thisbyte[0])+" "+hex(thisbyte[1])+" at "+str(p))
thisbyte=bytes([0x5a,thisbyte[1]+toolittle])
#clean start of block
#thisbyte=bytes([0x6c,0x6c])
elif ((p - inizioblocco) % 40) == 1:
print("What?")
elif ((p - inizioblocco) % 40) == 2:
#clean right after start of block
pass
thisbyte=bytes([0x35])
elif ((p - inizioblocco) % 40) == 3:
#clean right after start of block
pass
thisbyte=bytes([0x35])
else:
thisbyte=thisbyte+inputs.read(3)
statbase = 0
resbytes=thisbyte
if (thisbyte[0]+thisbyte[1]<thisbyte[2]+thisbyte[3]):
if(thisbyte[0]>0x28):
resbytes=bytes([0x25])+resbytes[1:4]
if(thisbyte[2]<0x2f):
resbytes=resbytes[0:2]+bytes([0x2f])+resbytes[3:4]
#clean zero bit
#resbytes=bytes([0x17,0x17,0x35,0x35])
else:
statbase = 4
if(thisbyte[0]<0x2f):
resbytes=bytes([0x2f])+resbytes[1:4]
if(thisbyte[2]>0x28):
resbytes=resbytes[0:2]+bytes([0x25])+resbytes[3:4]
#clean one bit
#resbytes=bytes([0x35,0x35,0x17,0x17])
for i in range(4):
if not thisbyte[i] in stat[i+statbase]:
stat[i+statbase][thisbyte[i]]=0
stat[i+statbase][thisbyte[i]]=stat[i+statbase][thisbyte[i]]+1
thisbyte=resbytes

outputs.write(thisbyte)

bytesin=inputs.read()
outputs.write(bytesin)

statbase = 0
for i in stat:
print("stat for byte "+str(int(statbase/4))+" pos "+str(statbase%4))
statbase=statbase+1
for k in sorted(i.keys()):
print("byte "+hex(k)+" occurs "+str(i[k])+" times")
statbase = 0
for i in beginstat:
print("stat for begin "+str(statbase))
statbase=statbase+1
for k in sorted(i.keys()):
print("byte "+hex(k)+" occurs "+str(i[k])+" times")

if len(sys.argv)<3:
print("not enough args")
sys.exit
statist(sys.argv[1],sys.argv[2])
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 28 Agosto 2011, 23:32:19
Ho eseguito tutto alla lettera ma non mi riesce di ottenere un tap funzionante con quel wav postato precedentemente.
Riassumento:
-creo il tap dal wav(provato sia a 8 che a 16bit)con Audiotap(C16 halfwave e sensitivity a 35, il resto di default).
-elimino dal tap il byte indicato(che sarebbe il 29mo, ma ho provato anche con quelli successivi).
-eseguo il programma di pulizia in Python(che pare funzionare perfettamente).
-caricando il tap ripulito col Vice o Yape non viene segnalato alcun "found" per tutta la durata del tape.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: fab - 29 Agosto 2011, 08:26:37
Hai un messaggio privato
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: luigidifraia - 29 Agosto 2011, 23:52:32
*introdurre un programma per ripulire i TAP v2 (o aggiungere il supporto a Tapclean)
Stavo pensando proprio al supporto in TAPClean poco dopo aver aggiunto il supporto per semionde in DC2N e dc2nconv.
Ovviamente un tool scritto in un linguaggio object oriented semplificherebbe di gran lunga l'implementazione. Chissa' se Sp33d e SLC hanno approcciato il problema nei loro tools in Java e C#.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 30 Agosto 2011, 01:12:31
Febrizio ha fatto un lavoro eccezionale in questi giorni. Massi cadenti ora potrà finalmente giocare a Smurf(anche se sicuramente non è quello che crede ;) )...
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 30 Agosto 2011, 01:37:31
Febrizio ha fatto un lavoro eccezionale in questi giorni. Massi cadenti ora potrà finalmente giocare a Smurf(anche se sicuramente non è quello che crede ;) )...
Essendo totalmente estraneo al python e non avendo quindi modo di capirci qualcosa (se avete un binario per Windows potrei fare da betatester), aspetto che bubusan metta il lato C16 sul sito (sperando che gliel'hai mandato), anche se da quanto dici sembrerebbe che "Smurf" non ha a che fare con gli ometti blu. In realtà non sono mai stato molto convinto che esista davvero un qualche gioco dei Puffi per il C16 (è un po' come la preview di Legendary Wings per C64, o Pac-Land per C16, o la conversione di Kick'n'Run per MSX: cose che in pochi giurano di aver visto ma che nessuno sembra avere) quindi non m'aspetto granché ammesso esistesse. Me l'aspettavo a 9 anni quando comprai quella cassetta che non funzionava (non è che non funzionava il gioco dei Puffi, non funzionava nessun gioco) e che infatti uscì solo un numero (ricordo solo che la copertina era scritte nere su foglio rosa, e che la cassetta era stata tutta arancione una volta e tutta nera l'altra volta, ovviamente senza scritte sopra).
Comunque sono molto contento che da questo thread stia venendo fuori un lavoro non indifferente riguardante il C16. Luigi sa quanto ci ho tenuto al supporto delle halfwaves sul DC2N (che era per me una "condicio sine qua non" per comprarglielo) e posso sicuramente dire che ha fatto davvero un ottimo lavoro (e non avevo dubbi). L'unico difetto del DC2N, se così si può dire, è stata l'attesa per averlo ma posso garantire davvero che è tutt'altra cosa rispetto MTAP e metodi poco ortodossi come quelli audio, pur funzionanti, ma ben poco comodi soprattutto se si hanno 500 cassette da dumpare. :D
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 30 Agosto 2011, 02:11:40
Tra l'altro questo loader è uno dei più facili da fregare per l'autorun: come altri, basta tenere premuto (cominciate a farlo dalle righe colorate, non prima) il tasto run/stop (esc sulla tastiera del pc) per ritrovarsi alla fine con un BREAK READY.
In altri loader, come quelle "simil turbo tape di Senz" (comando :@L) viene messo un RUN nel buffer di tastiera ed in quel caso basta modificarlo in RVN per far apparire un bel syntax error e trovarsi con il programma pronto ad essere salvato. Se usate un Plus4 non ci sono problemi, se state emulando un C16 puro, se salvando su disco con DSAVE"NOME" vi dà out of memory potete comunque salvare da monitor conoscendo i puntatori. :)
Ovviamente, una volta poi che avete il PRG, potete pure crearci un T64 con Star Commander per avere anche (mai "solo", ma "anche") una versione a caricamento immediato.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 30 Agosto 2011, 11:22:22
Intanto metto in condivisione bytegames n6 ma c'è ancora qualcosa da sistemare perchè dopo il primo tentativo di ieri notte non sono piu' riuscito a far funzionare i giochi dopo "The Smurf"(scacchi si sapeva che non andava ma gli altri si). Non vorrei aver scambiato le versioni ripulite e ora non ricordo se avevo usato il nuovo script sul tap originale(con byte modificato) o da quello già precedentemente ripulito. Poi riprovo con calma.
http://www.megaupload.com/?d=WX45SL7T
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 30 Agosto 2011, 12:37:44
Ho risolto esportando e convertendo i singoli giochi. Ora funzionano tutti(compreso scacchi).
L'ho rimesso in download:
http://www.megaupload.com/?d=SJTI7FZO
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 30 Agosto 2011, 15:10:40
E' errato il nome dell'archivio :P
Poi perché li hai divisi?  >:( VICE non fa il parse?
E poi: li hai divisi tu dividendo l'audio? STAP non funziona coi TAP per C16.
Questo The Smurf comunque altro non è che Blagger della Alligata e ovviamente non ha nulla a che fare coi puffi: non è nemmeno blu!
Grazie per aver dato un altro pezzo all'immortalità del C16 :)
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Astaroth - 30 Agosto 2011, 18:10:57
Si mi sono accorto, nella fretta ho scritto n16, ma tanto devo ancora finire con le immagini e inviarlo a Bubusan. Li ho divisi perchè c'era un problema con i giochi a partire da scacchi(è una question del byte da eliminare o meno all'inizio di ogni caricamento). Prendendoli e modificandoli singolarmente ho risolto, in attesa di un audiotap aggiornato. Li ho divisi a mano a partire dal wav, stap non va col C16.
Per i Puffi cmq sul C64 non eravamo messi meglio(un clone triste dell'ottima versione Colecovision), meglio Blagger ma peccato per il sogno di gioventù infranto ;)
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 30 Agosto 2011, 19:43:42
Ma tanto non è detto che sia quello quello che avrei dovuto vedere io ;)
La cassetta arancione (o nera) con la copertina rosa che non funzionava aveva il gioco che si chiamava proprio "I Puffi" ed era una roba tipo le Algasoft (insomma diffusa solo qui) solo che faceva schifo e non funzionava, insomma chi li fece non era un pirata era un puro e semplice truffatore. Quasi sicuramente non esiste nulla del genere, però quello 0,1% di possibilità che siano capitate cassette difettose ed esista davvero un gioco dei Puffi per C16 (se c'è è amatoriale, certamente non con licenza ufficiale come lo era quello per Colecovision).
D'altronde, pochi sanno che per Amiga esiste un gioco in cui devi far fuori i Puffi chiamato Smurf Hunting, anche quello ovviamente amatoriale (poco meno di Excalation, che se non fosse per me, nessuno avrebbe mai visto fuori da chi frequentava a Napoli "La Camera Oscura").
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: luigidifraia - 30 Agosto 2011, 21:05:25
Tra l'altro questo loader è uno dei più facili da fregare per l'autorun...
Vi e' possibile fare una lista completa dei caricatori conosciuti per C16 con tutti i titoli che usano ciascuno di essi ed alcuni esempi di TAP files al fine di supportarli in tapclean, per favore?
So che Massi cadenti mi ha gia' fatto delle segnalazioni e mandato dei file, ma intendo mettere i pezzi del puzzle a posto dopo aver avuto una visione d'insieme. Niente PM o email con enormi allegati, per favore.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 31 Agosto 2011, 02:51:56
Ok nella giornata di domani (oggi) preparo un archivio e lo metto su megaupload con i vari esempi, mettendo qui sul forum la spiegazione di cosa contiene.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 31 Agosto 2011, 19:51:04
Ecco qua:
http://www.megaupload.com/?d=GXNTVT68
Attenzione al txt allegato.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 01 Settembre 2011, 14:04:15
Copio anche qui il txt allegato.

VARI TURBO PER C16
a cura di Massi cadenti <massi punto cadenti chiocciola gmail punto com>
Archivio, dump e documenti sono rilasciati sotto licenza Creative Commons 3.0-by-nc-sa (Attribuzione, Non uso commerciale, Condividi allo stesso modo).

1 - Turbo con cornice che cambia colore
=======================================
Così com'è necessita delle halfwaves.
A detta di Fabrizio Gennari, è possibile modificarlo in modo che non le necessiti.
E' utilizzato nelle varie cassette *Games (Byte Games ecc.) delle edizioni Computer/Fermont nonché in "Special Vic20/C16" delle edizioni Pubblirome/Edigamma.
La particolarità di questo turbo è l'utilizzo di tutti i 121 colori del C16, per gruppi di 16, nella cornice: in pratica la cornice utilizza uno per volta i 16 colori base e le 16 luminosità contemporaneamente (quando passa il nero è ovviamente tutta nera).
Vedete che ci sono due versioni di Byte Games 5. Una (quella dumpata con MTAP) è stata la prima versione dumpata e rilasciata (e presente su EdicolaC64), l'altra (dumpata con il DC2N) è stata dumpata in seguito. La differenza tra le due è che quella dumpata con MTAP non passa il parse del VICE, pur funzionando correttamente. Vale a dire che in VICE 2.3 (attenzione non nelle versioni precedenti che non hanno nessun parse per il C16), caricando la versione dumpata con DC2N è possibile vedere l'elenco dei programmi, mentre caricando la versione dumpata con MTAP non è possibile. Questo può essere utile anche per cercare di capire le differenze tra le due versioni e come mai una genera questo problema e l'altra no, e magari includere in TapClean o simile qualcosa che permetta di sistemare il problema.
Nella versione usata in Special Vic20/C16, in alcuni giochi (non tutti) è possibile inibire l'autostart dei giochi tenendo premuto il tasto RUN/STOP (tasto ESC della tastiera del PC in VICE, tasto TAB della tastiera del PC in YAPE). Questo non è possibile nella versione usata in Byte Games. Probabilmente dipende dal fatto se i giochi hanno una linea BASIC o se vengono lanciati dal turbo direttamente con la sys. Un esempio di gioco che si può fermare è il primo, "IL LEGIONARIO". Se usate una macchina con più di 16K è possibile anche listare la sys di partenza.
Il loader del turbo parte in automatico anche se caricato dal monitor del C16, quindi per esaminarlo dovremo per forza usare il monitor interno al VICE.
I puntatori sono sballati (stando al buffer di cassetta il loader occuperebbe solo tre byte da $0324 a $0326, il che è impossibile).
Le mie conoscenze finiscono qua. Comunque Fabrizio Gennari sicuramente ne ha capito molto più di me.
Sarebbe bello sapere in realtà dove viene caricato il loader in modo da disassemblarlo.

2 - Turbo con tutto schermo che cambia colore
=============================================
Sembra derivato direttamente dal precedente.
E' utilizzato in Frank Bruno's Boxing (sulla cassetta ci sono due giochi, Frank Bruno's Boxing è quello che si chiama ELITE, quindi NON IL PRIMO).
Ha le stesse caratteristiche (compresi i puntatori sfalsati che darebbero il caricamento da $0324 a $0326), tranne per il fatto che lo schermo è oscurato e segue i colori del bordo.
E' presa da una cassetta originale della Elite, quindi è possibile che sia stato creato dalla Elite stessa.

3 - Turbo con modalità Fast e audio accelerato
==============================================
Non necessita delle halfwaves.
Spiegazione lunga e complessa, già scritta e distribuita in passato.
Vedi file .url allegato in quella cartella, o visita direttamente
https://groups.google.com/group/it.comp.software.emulatori/msg/85f78f5bdfed4e9f

4 - Turbo Jackson
=================
Non c'è poi molto da dire. Anche questo ovviamente necessita delle halfwaves.
Classiche righe colorate a tutto schermo. Simile in questo al turbo202 per C64.
Il loader, chiamato sempre "{clrhome}{flashon}PREMI TASTO C=" è sempre lo stesso e va da $1001 a $119C e contiene la riga BASIC
Codice: [Seleziona]
10 SYS4462(dove 4462 dec. è $116E).
E' sempre possibile arrestare l'autorun tenendo premuto run/stop (dopo il found del programma in turbo). Il programma si fermerà con un BREAK IN 10 (linea appartenente al loader e non del programma appena caricato).
La parte in L/M disassemblata è la seguente (se qualcuno ha voglia di commentarla è il benvenuto):
Codice: [Seleziona]
. 100d  20 af 06 jsr $06af
. 1010  c9 00    cmp #$00
. 1012  f0 f9    beq $100d
. 1014  85 d1    sta $d1
. 1016  20 dd 06 jsr $06dd
. 1019  91 b6    sta ($b6),y
. 101b  c8       iny
. 101c  c0 c0    cpy #$c0
. 101e  d0 f6    bne $1016
. 1020  f0 2d    beq $104f
. 1022  20 af 06 jsr $06af
. 1025  20 dd 06 jsr $06dd
. 1028  c4 93    cpy $93
. 102a  d0 02    bne $102e
. 102c  91 b4    sta ($b4),y
. 102e  d1 b4    cmp ($b4),y
. 1030  f0 02    beq $1034
. 1032  86 90    stx $90
. 1034  45 d7    eor $d7
. 1036  85 d7    sta $d7
. 1038  e6 b4    inc $b4
. 103a  d0 02    bne $103e
. 103c  e6 b5    inc $b5
. 103e  a5 b4    lda $b4
. 1040  c5 9d    cmp $9d
. 1042  a5 b5    lda $b5
. 1044  e5 9e    sbc $9e
. 1046  90 dd    bcc $1025
. 1048  20 dd 06 jsr $06dd
. 104b  20 42 07 jsr $0742
. 104e  88       dey
. 104f  8c fc 07 sty $07fc
. 1052  58       cli
. 1053  18       clc
. 1054  c8       iny
. 1055  c8       iny
. 1056  4c c8 e8 jmp $e8c8
. 1059  ea       nop
. 105a  ea       nop
. 105b  20 1b e3 jsr $e31b
. 105e  20 42 07 jsr $0742
. 1061  84 d7    sty $d7
. 1063  a9 07    lda #$07
. 1065  8d 04 ff sta $ff04
. 1068  a2 01    ldx #$01
. 106a  20 f0 06 jsr $06f0
. 106d  26 d0    rol $d0
. 106f  a5 d0    lda $d0
. 1071  c9 02    cmp #$02
. 1073  d0 f5    bne $106a
. 1075  a0 09    ldy #$09
. 1077  20 dd 06 jsr $06dd
. 107a  c9 02    cmp #$02
. 107c  f0 f9    beq $1077
. 107e  c4 d0    cpy $d0
. 1080  d0 e8    bne $106a
. 1082  20 dd 06 jsr $06dd
. 1085  88       dey
. 1086  d0 f6    bne $107e
. 1088  60       rts
. 1089  a9 08    lda #$08
. 108b  85 d2    sta $d2
. 108d  20 f0 06 jsr $06f0
. 1090  26 d0    rol $d0
. 1092  ea       nop
. 1093  ea       nop
. 1094  ea       nop
. 1095  c6 d2    dec $d2
. 1097  d0 f4    bne $108d
. 1099  a5 d0    lda $d0
. 109b  60       rts
. 109c  a9 10    lda #$10
. 109e  24 01    bit $01
. 10a0  d0 fc    bne $109e
. 10a2  24 01    bit $01
. 10a4  f0 fc    beq $10a2
. 10a6  ad 09 ff lda $ff09
. 10a9  48       pha
. 10aa  a9 07    lda #$07
. 10ac  8d 04 ff sta $ff04
. 10af  8e 05 ff stx $ff05
. 10b2  a9 40    lda #$40
. 10b4  8d 09 ff sta $ff09
. 10b7  ad 19 ff lda $ff19
. 10ba  69 33    adc #$33
. 10bc  8d 19 ff sta $ff19
. 10bf  68       pla
. 10c0  0a       asl
. 10c1  0a       asl
. 10c2  60       rts
. 10c3  00       brk
. 10c4  20 57 07 jsr $0757
. 10c7  4c 37 07 jmp $0737
. 10ca  ad 13 ff lda $ff13
. 10cd  09 02    ora #$02
. 10cf  8d 13 ff sta $ff13
. 10d2  20 c3 e3 jsr $e3c3
. 10d5  4c 18 07 jmp $0718
. 10d8  ad 13 ff lda $ff13
. 10db  09 02    ora #$02
. 10dd  8d 13 ff sta $ff13
. 10e0  4c 18 07 jmp $0718
. 10e3  ad 13 ff lda $ff13
. 10e6  29 fd    and #$fd
. 10e8  8d 13 ff sta $ff13
. 10eb  4c b7 07 jmp $07b7
. 10ee  a0 00    ldy #$00
. 10f0  8c fc 07 sty $07fc
. 10f3  ad 06 ff lda $ff06
. 10f6  29 ef    and #$ef
. 10f8  8d 06 ff sta $ff06
. 10fb  ca       dex
. 10fc  d0 fd    bne $10fb
. 10fe  88       dey
. 10ff  d0 fa    bne $10fb
. 1101  78       sei
. 1102  60       rts
. 1103  a2 00    ldx #$00
. 1105  a0 01    ldy #$01
. 1107  a9 10    lda #$10
. 1109  86 0a    stx $0a
. 110b  86 93    stx $93
. 110d  84 b4    sty $b4
. 110f  85 b5    sta $b5
. 1111  20 6b a8 jsr $a86b
. 1114  20 71 07 jsr $0771
. 1117  20 0a a8 jsr $a80a
. 111a  4c b7 07 jmp $07b7
. 111d  20 61 06 jsr $0661
. 1120  a5 d1    lda $d1
. 1122  c9 02    cmp #$02
. 1124  f0 06    beq $112c
. 1126  c9 01    cmp #$01
. 1128  d0 f3    bne $111d
. 112a  a9 01    lda #$01
. 112c  20 e8 e9 jsr $e9e8
. 112f  20 c0 8c jsr $8cc0
. 1132  a0 00    ldy #$00
. 1134  84 90    sty $90
. 1136  20 89 f1 jsr $f189
. 1139  ad 35 03 lda $0335
. 113c  38       sec
. 113d  ed 33 03 sbc $0333
. 1140  08       php
. 1141  18       clc
. 1142  65 b4    adc $b4
. 1144  85 9d    sta $9d
. 1146  ad 36 03 lda $0336
. 1149  65 b5    adc $b5
. 114b  28       plp
. 114c  ed 34 03 sbc $0334
. 114f  85 9e    sta $9e
. 1151  20 76 06 jsr $0676
. 1154  a5 d0    lda $d0
. 1156  45 d7    eor $d7
. 1158  05 90    ora $90
. 115a  f0 04    beq $1160
. 115c  a9 ff    lda #$ff
. 115e  85 90    sta $90
. 1160  4c eb f0 jmp $f0eb
. 1163  a5 9d    lda $9d
. 1165  85 2d    sta $2d
. 1167  a5 9e    lda $9e
. 1169  85 2e    sta $2e
. 116b  4c dc 8b jmp $8bdc
. 116e  a9 06    lda #$06
. 1170  85 e6    sta $e6
. 1172  a9 61    lda #$61
. 1174  85 e5    sta $e5
. 1176  a9 10    lda #$10
. 1178  85 e8    sta $e8
. 117a  a9 0d    lda #$0d
. 117c  85 e7    sta $e7
. 117e  a0 00    ldy #$00
. 1180  b1 e7    lda ($e7),y
. 1182  91 e5    sta ($e5),y
. 1184  c8       iny
. 1185  c0 70    cpy #$70
. 1187  f0 0a    beq $1193
. 1189  c0 00    cpy #$00
. 118b  d0 f3    bne $1180
. 118d  e6 e6    inc $e6
. 118f  e6 e8    inc $e8
. 1191  d0 eb    bne $117e
. 1193  a5 e6    lda $e6
. 1195  c9 07    cmp #$07
. 1197  d0 e7    bne $1180
. 1199  4c 1e 07 jmp $071e
. 119c  00       brk

5 - Turbo simile Turbo Tape
===========================
Questo è curiosamente un clone del turbo tape 64 di Stephen Senz, o forse proprio un port ufficiale. Potete vedere il turbo vero e proprio nel T64 "Turbo Tape C16.t64".
Chiaramente (?) necessita delle halfwaves.
La sintassi è :@L (load), :@S (save) e :@V (verify)
Le versioni presenti in Computer Set e in Input sono leggermente modificate.
Partiamo dalla versione presente in Computer Set (ed.Publiflash/Logica 2000).
Esaminiamo il loader di STRIKE EAGLE.
Va da 4097 ($1001) a 4677 ($1245).
Linea BASIC
Codice: [Seleziona]
100 SYS4112(4112 = $1010)
Disassemblato:
Codice: [Seleziona]
. 1010  20 17 81 jsr $8117
. 1013  20 2e 80 jsr $802e
. 1016  20 c2 80 jsr $80c2
. 1019  20 f4 fc jsr $fcf4
. 101c  a2 fb    ldx #$fb
. 101e  9a       txs
. 101f  20 50 10 jsr $1050
. 1022  a2 0a    ldx #$0a   <--- metti 10 ($0a) caratteri...
. 1024  86 ef    stx $ef    <--- ... nel buffer di tastiera
. 1026  bd 60 10 lda $1060,x<--- prendili da $1060 in poi...
. 1029  9d 27 05 sta $0527,x<--- ... e mettili da $0527 in poi
. 102c  ca       dex
. 102d  10 f7    bpl $1026
. 102f  a2 00    ldx #$00
. 1031  bd 7c 10 lda $107c,x
. 1034  9d 7c 05 sta $057c,x
. 1037  bd 45 11 lda $1145,x
. 103a  9d 45 06 sta $0645,x
. 103d  e8       inx
. 103e  d0 f1    bne $1031
. 1040  4c 16 80 jmp $8016
. 1043  00       brk
. 1044  00       brk
. 1045  00       brk
. 1046  00       brk
. 1047  00       brk
. 1048  00       brk
. 1049  00       brk
. 104a  00       brk
. 104b  00       brk
. 104c  00       brk
. 104d  00       brk
. 104e  00       brk
. 104f  00       brk
. 1050  a9 10    lda #$10
. 1052  8d 08 03 sta $0308
. 1055  a9 07    lda #$07
. 1057  8d 09 03 sta $0309
. 105a  60       rts
. 105b  00       brk
. 105c  00       brk
. 105d  00       brk
. 105e  00       brk
. 105f  00       brk
. 1060  3a       ???        <--- carattere :
. 1061  40       rti        <--- carattere @
. 1062  4c 22 22 jmp $2222  <--- caratteri L""
. 1065  2c 31 2c bit $2c31  <--- caratteri ,1,
. 1068  31 0d    and ($0d),y<--- caratteri 1 e return
. 106a  00       brk
. 106b  00       brk
. 106c  00       brk
. 106d  00       brk
. 106e  00       brk
. 106f  00       brk
. 1070  00       brk
. 1071  00       brk
. 1072  00       brk
. 1073  00       brk
. 1074  00       brk
. 1075  00       brk
. 1076  00       brk
. 1077  00       brk
. 1078  00       brk
. 1079  00       brk
. 107a  00       brk
. 107b  00       brk
. 107c  a0 00    ldy #$00
. 107e  8c fc 07 sty $07fc
. 1081  ad 06 ff lda $ff06
. 1084  29 ef    and #$ef
. 1086  8d 06 ff sta $ff06
. 1089  ca       dex
. 108a  d0 fd    bne $1089
. 108c  88       dey
. 108d  d0 fa    bne $1089
. 108f  78       sei
. 1090  60       rts
. 1091  a0 00    ldy #$00
. 1093  a9 02    lda #$02
. 1095  20 b1 05 jsr $05b1
. 1098  a2 07    ldx #$07
. 109a  88       dey
. 109b  c0 09    cpy #$09
. 109d  d0 f4    bne $1093
. 109f  a2 05    ldx #$05
. 10a1  c6 d1    dec $d1
. 10a3  d0 ee    bne $1093
. 10a5  98       tya
. 10a6  20 b1 05 jsr $05b1
. 10a9  a2 07    ldx #$07
. 10ab  88       dey
. 10ac  d0 f7    bne $10a5
. 10ae  ca       dex
. 10af  ca       dex
. 10b0  60       rts
. 10b1  85 d0    sta $d0
. 10b3  45 d7    eor $d7
. 10b5  85 d7    sta $d7
. 10b7  a9 08    lda #$08
. 10b9  85 d2    sta $d2
. 10bb  06 d0    asl $d0
. 10bd  a5 01    lda $01
. 10bf  29 fd    and #$fd
. 10c1  20 d3 05 jsr $05d3
. 10c4  a2 11    ldx #$11
. 10c6  ea       nop
. 10c7  09 02    ora #$02
. 10c9  20 d3 05 jsr $05d3
. 10cc  a2 0e    ldx #$0e
. 10ce  c6 d2    dec $d2
. 10d0  d0 e9    bne $10bb
. 10d2  60       rts
. 10d3  ca       dex
. 10d4  d0 fd    bne $10d3
. 10d6  90 05    bcc $10dd
. 10d8  a2 0b    ldx #$0b
. 10da  ca       dex
. 10db  d0 fd    bne $10da
. 10dd  85 01    sta $01
. 10df  60       rts
. 10e0  a2 00    ldx #$00
. 10e2  2c a2 01 bit $01a2
. 10e5  a4 2b    ldy $2b
. 10e7  a5 2c    lda $2c
. 10e9  86 0a    stx $0a
. 10eb  86 93    stx $93
. 10ed  84 b4    sty $b4
. 10ef  85 b5    sta $b5
. 10f1  20 6b a8 jsr $a86b
. 10f4  20 fd 05 jsr $05fd
. 10f7  20 0a a8 jsr $a80a
. 10fa  4c 03 87 jmp $8703
. 10fd  20 61 06 jsr $0661
. 1100  a5 d1    lda $d1
. 1102  c9 02    cmp #$02
. 1104  f0 08    beq $110e
. 1106  c9 01    cmp #$01
. 1108  d0 f3    bne $10fd
. 110a  a5 ad    lda $ad
. 110c  f0 0a    beq $1118
. 110e  ad 33 03 lda $0333
. 1111  85 b4    sta $b4
. 1113  ad 34 03 lda $0334
. 1116  85 b5    sta $b5
. 1118  20 e8 e9 jsr $e9e8
. 111b  ea       nop
. 111c  ea       nop
. 111d  ea       nop
. 111e  ea       nop
. 111f  ea       nop
. 1120  20 c0 8c jsr $8cc0
. 1123  a4 ab    ldy $ab
. 1125  f0 0b    beq $1132
. 1127  88       dey
. 1128  b1 af    lda ($af),y
. 112a  d9 38 03 cmp $0338,y
. 112d  d0 ce    bne $10fd
. 112f  98       tya
. 1130  d0 f5    bne $1127
. 1132  84 90    sty $90
. 1134  20 89 f1 jsr $f189
. 1137  ad 35 03 lda $0335
. 113a  38       sec
. 113b  ed 33 03 sbc $0333
. 113e  08       php
. 113f  18       clc
. 1140  65 b4    adc $b4
. 1142  85 9d    sta $9d
. 1144  ad 36 03 lda $0336
. 1147  65 b5    adc $b5
. 1149  28       plp
. 114a  ed 34 03 sbc $0334
. 114d  85 9e    sta $9e
. 114f  20 76 06 jsr $0676
. 1152  a5 d0    lda $d0
. 1154  45 d7    eor $d7
. 1156  05 90    ora $90
. 1158  f0 04    beq $115e
. 115a  a9 ff    lda #$ff
. 115c  85 90    sta $90
. 115e  4c eb f0 jmp $f0eb
. 1161  20 af 06 jsr $06af
. 1164  c9 00    cmp #$00
. 1166  f0 f9    beq $1161
. 1168  85 d1    sta $d1
. 116a  20 dd 06 jsr $06dd
. 116d  91 b6    sta ($b6),y
. 116f  c8       iny
. 1170  c0 c0    cpy #$c0
. 1172  d0 f6    bne $116a
. 1174  f0 2d    beq $11a3
. 1176  20 af 06 jsr $06af
. 1179  20 dd 06 jsr $06dd
. 117c  c4 93    cpy $93
. 117e  d0 02    bne $1182
. 1180  91 b4    sta ($b4),y
. 1182  d1 b4    cmp ($b4),y
. 1184  f0 02    beq $1188
. 1186  86 90    stx $90
. 1188  45 d7    eor $d7
. 118a  85 d7    sta $d7
. 118c  e6 b4    inc $b4
. 118e  d0 02    bne $1192
. 1190  e6 b5    inc $b5
. 1192  a5 b4    lda $b4
. 1194  c5 9d    cmp $9d
. 1196  a5 b5    lda $b5
. 1198  e5 9e    sbc $9e
. 119a  90 dd    bcc $1179
. 119c  20 dd 06 jsr $06dd
. 119f  20 7c 05 jsr $057c
. 11a2  88       dey
. 11a3  8c fc 07 sty $07fc
. 11a6  58       cli
. 11a7  18       clc
. 11a8  c8       iny
. 11a9  c8       iny
. 11aa  4c c8 e8 jmp $e8c8
. 11ad  ea       nop
. 11ae  ea       nop
. 11af  20 1b e3 jsr $e31b
. 11b2  20 7c 05 jsr $057c
. 11b5  84 d7    sty $d7
. 11b7  a9 07    lda #$07
. 11b9  8d 04 ff sta $ff04
. 11bc  a2 01    ldx #$01
. 11be  20 f0 06 jsr $06f0
. 11c1  26 d0    rol $d0
. 11c3  a5 d0    lda $d0
. 11c5  c9 02    cmp #$02
. 11c7  d0 f5    bne $11be
. 11c9  a0 09    ldy #$09
. 11cb  20 dd 06 jsr $06dd
. 11ce  c9 02    cmp #$02
. 11d0  f0 f9    beq $11cb
. 11d2  c4 d0    cpy $d0
. 11d4  d0 e8    bne $11be
. 11d6  20 dd 06 jsr $06dd
. 11d9  88       dey
. 11da  d0 f6    bne $11d2
. 11dc  60       rts
. 11dd  a9 08    lda #$08
. 11df  85 d2    sta $d2
. 11e1  20 f0 06 jsr $06f0
. 11e4  26 d0    rol $d0
. 11e6  ea       nop
. 11e7  ea       nop
. 11e8  ea       nop
. 11e9  c6 d2    dec $d2
. 11eb  d0 f4    bne $11e1
. 11ed  a5 d0    lda $d0
. 11ef  60       rts
. 11f0  a9 10    lda #$10
. 11f2  24 01    bit $01
. 11f4  d0 fc    bne $11f2
. 11f6  24 01    bit $01
. 11f8  f0 fc    beq $11f6
. 11fa  ad 09 ff lda $ff09
. 11fd  48       pha
. 11fe  a9 07    lda #$07
. 1200  8d 04 ff sta $ff04
. 1203  8e 05 ff stx $ff05
. 1206  a9 40    lda #$40
. 1208  8d 09 ff sta $ff09
. 120b  68       pla
. 120c  0a       asl
. 120d  0a       asl
. 120e  60       rts
. 120f  00       brk
. 1210  20 73 04 jsr $0473
. 1213  f0 04    beq $1219
. 1215  c9 40    cmp #$40
. 1217  f0 03    beq $121c
. 1219  4c d9 8b jmp $8bd9
. 121c  ad 13 ff lda $ff13
. 121f  09 02    ora #$02
. 1221  8d 13 ff sta $ff13
. 1224  20 c3 e3 jsr $e3c3
. 1227  20 73 04 jsr $0473
. 122a  c9 4c    cmp #$4c
. 122c  f0 03    beq $1231
. 122e  4c a1 94 jmp $94a1
. 1231  20 73 04 jsr $0473
. 1234  20 17 81 jsr $8117
. 1237  a9 e5    lda #$e5   <--- metti byte basso del programma... ($e5 in questo caso)
. 1239  8d 02 03 sta $0302  <--- ... in $0302 (dec.770)
. 123c  a9 20    lda #$20   <--- metti byte alto del programma... ($20 in questo caso)
. 123e  8d 03 03 sta $0303  <--- ... in $0303 (dec.771)
. 1241  20 e0 05 jsr $05e0
. 1244  00       brk
La parte che ci interessa è da $1237 in poi, perché lì sono contenuti i byte basso ed alto del programma da lanciare.
Gli altri loader sono simili tranne per questa parte.
Se però il programma da lanciare è in BASIC (es. Music Master sulla stessa cassetta)
Codice: [Seleziona]
. 1022  a2 07    ldx #$07...
Codice: [Seleziona]
. 1062  4c 0d 52 jmp $520d
. 1065  75 0d    adc $0d,x
... e soprattutto
Codice: [Seleziona]
. 1234  a5 2e    lda $2e
. 1236  c9 11    cmp #$11
. 1238  90 03    bcc $123d
. 123a  20 17 81 jsr $8117
. 123d  20 e0 05 jsr $05e0
quindi come si vede i puntatori mancano completamente.
Passiamo ora alla versione presente in Input.
La versione presente in Input (ed.Pubblirome/Edigamma) è diversa: c'è un programma BASIC di 3 righe che crea una finestra video e creerà anche problemi al gioco "IL BARO" (scritto in BASIC) che si avvierà nella suddetta finestra.
L'intero loader va da $1001 a $1410 (dec.4097-5136).
Codice: [Seleziona]
1 COLOR0,1:COLOR4,1:PRINT"{clrhome}{black}
230 PRINT"{clrhome}{20down}"chr$(27)"T{white}"
240 CLR:SYS4312
La prima riga mette neri bordo e sfondo e ripulisce il video.
La seconda si occupa di creare la finestra nelle ultime quattro righe.
La terza fa partire la routine in L/M.
Il loader in L/M è il seguente (uguale sempre, per tutti e 5 i giochi):
Codice: [Seleziona]
d 1048
. 1048  41 80    eor ($80,x)
. 104a  01 fd    ora ($fd,x)
. 104c  fc       ???
. 104d  00       brk
. 104e  00       brk
. 104f  13       ???
. 1050  dc       ???
. 1051  00       brk
. 1052  a1 41    lda ($41,x)
. 1054  24 3a    bit $3a
. 1056  8b       ???
. 1057  41 24    eor ($24,x)
. 1059  b2       ???
. 105a  41 80    eor ($80,x)
. 105c  01 fd    ora ($fd,x)
. 105e  fc       ???
. 105f  00       brk
. 1060  00       brk
. 1061  13       ???
. 1062  dc       ???
. 1063  00       brk
. 1064  a1 41    lda ($41,x)
. 1066  24 3a    bit $3a
. 1068  8b       ???
. 1069  41 24    eor ($24,x)
. 106b  b2       ???
. 106c  22       ???
. 106d  22       ???
. 106e  a7       ???
. 106f  32       ???
. 1070  32       ???
. 1071  30 00    bmi $1073
. 1073  5d 13 e1 eor $e113,x
. 1076  00       brk
. 1077  9c       ???
. 1078  3a       ???
. 1079  9e       ???
. 107a  31 36    and ($36),y
. 107c  31 32    and ($32),y
. 107e  38       sec
. 107f  00       brk
. 1080  00       brk
. 1081  00       brk
. 1082  41 80    eor ($80,x)
. 1084  01 ec    ora ($ec,x)
. 1086  97       ???
. 1087  00       brk
. 1088  00       brk
. 1089  f0 58    beq $10e3
. 108b  4c 41 80 jmp $8041
. 108e  01 fd    ora ($fd,x)
. 1090  fc       ???
. 1091  00       brk
. 1092  00       brk
. 1093  00       brk
. 1094  3f       ???
. 1095  bd 00 15 lda $1500,x
. 1098  9d 00 0d sta $0d00,x
. 109b  bd 00 16 lda $1600,x
. 109e  9d 00 0e sta $0e00,x
. 10a1  bd 00 17 lda $1700,x
. 10a4  9d 00 0f sta $0f00,x
. 10a7  e8       inx
. 10a8  d0 e2    bne $108c
. 10aa  ea       nop
. 10ab  ea       nop
. 10ac  ea       nop
. 10ad  ea       nop
. 10ae  ea       nop
. 10af  4c 50 0c jmp $0c50
. 10b2  ea       nop
. 10b3  ea       nop
. 10b4  ea       nop
. 10b5  ea       nop
. 10b6  4c 50 0c jmp $0c50
. 10b9  ea       nop
. 10ba  ea       nop
. 10bb  ea       nop
. 10bc  4c 50 0c jmp $0c50
. 10bf  ea       nop
. 10c0  ea       nop
. 10c1  ea       nop
. 10c2  ea       nop
. 10c3  ea       nop
. 10c4  ea       nop
. 10c5  ea       nop
. 10c6  ea       nop
. 10c7  ea       nop
. 10c8  ea       nop
. 10c9  20 a2 00 jsr $00a2
. 10cc  bd 00 14 lda $1400,x
. 10cf  9d 00 0c sta $0c00,x
. 10d2  bd 00 15 lda $1500,x
. 10d5  9d 00 0d sta $0d00,x
. 10d8  a2 00    ldx #$00
. 10da  bd 00 11 lda $1100,x
. 10dd  9d 00 0c sta $0c00,x
. 10e0  bd 00 12 lda $1200,x
. 10e3  9d 00 0d sta $0d00,x
. 10e6  bd 00 13 lda $1300,x
. 10e9  9d 00 0e sta $0e00,x
. 10ec  bd 00 14 lda $1400,x
. 10ef  9d 00 0f sta $0f00,x
. 10f2  e8       inx
. 10f3  d0 e5    bne $10da
. 10f5  20 50 0c jsr $0c50
. 10f8  4c 00 0c jmp $0c00
. 10fb  00       brk
. 10fc  00       brk
. 10fd  00       brk
. 10fe  00       brk
. 10ff  00       brk
. 1100  ea       nop
. 1101  ea       nop
. 1102  ea       nop
. 1103  ea       nop
. 1104  ea       nop
. 1105  ea       nop
. 1106  ea       nop
. 1107  ea       nop
. 1108  ea       nop
. 1109  ea       nop
. 110a  20 17 81 jsr $8117
. 110d  20 2e 80 jsr $802e
. 1110  20 c2 80 jsr $80c2
. 1113  20 f4 fc jsr $fcf4
. 1116  a2 fb    ldx #$fb
. 1118  9a       txs
. 1119  20 50 0c jsr $0c50
. 111c  a2 07    ldx #$07   <--- metti 7 ($07) caratteri...
. 111e  86 ef    stx $ef    <--- ... nel buffer di tastiera
. 1120  bd 40 11 lda $1140,x<--- prendili da $1140 in poi...
. 1123  9d 27 05 sta $0527,x<--- ... e mettili da $0527 in poi
. 1126  ca       dex
. 1127  10 f7    bpl $1120
. 1129  4c 16 80 jmp $8016
. 112c  00       brk
. 112d  00       brk
. 112e  00       brk
. 112f  00       brk
. 1130  00       brk
. 1131  00       brk
. 1132  00       brk
. 1133  00       brk
. 1134  00       brk
. 1135  00       brk
. 1136  00       brk
. 1137  00       brk
. 1138  00       brk
. 1139  00       brk
. 113a  00       brk
. 113b  00       brk
. 113c  00       brk
. 113d  00       brk
. 113e  00       brk
. 113f  00       brk
. 1140  3a       ???      <--- carattere :
. 1141  40       rti      <--- carattere @
. 1142  4c 0d 52 jmp $520d<--- caratteri L, return e R
. 1145  75 0d    adc $0d,x<--- carattere "U shiftata" e return
. 1147  00       brk
. 1148  00       brk
. 1149  00       brk
. 114a  00       brk
. 114b  00       brk
. 114c  00       brk
. 114d  00       brk
. 114e  00       brk
. 114f  00       brk
. 1150  a9 5b    lda #$5b
. 1152  8d 08 03 sta $0308
. 1155  a9 0c    lda #$0c
. 1157  8d 09 03 sta $0309
. 115a  60       rts
. 115b  20 73 04 jsr $0473
. 115e  f0 04    beq $1164
. 1160  c9 40    cmp #$40
. 1162  f0 30    beq $1194
. 1164  4c d9 8b jmp $8bd9
. 1167  20 73 04 jsr $0473
. 116a  c9 53    cmp #$53
. 116c  f0 0b    beq $1179
. 116e  c9 4c    cmp #$4c
. 1170  f0 10    beq $1182
. 1172  c9 56    cmp #$56
. 1174  f0 15    beq $118b
. 1176  4c a1 94 jmp $94a1
. 1179  20 73 04 jsr $0473
. 117c  20 f0 0c jsr $0cf0
. 117f  4c b0 0c jmp $0cb0
. 1182  20 73 04 jsr $0473
. 1185  20 a5 0c jsr $0ca5
. 1188  4c b0 0c jmp $0cb0
. 118b  20 73 04 jsr $0473
. 118e  20 e3 0d jsr $0de3
. 1191  4c b0 0c jmp $0cb0
. 1194  ad 13 ff lda $ff13
. 1197  09 02    ora #$02
. 1199  8d 13 ff sta $ff13
. 119c  20 c3 e3 jsr $e3c3
. 119f  4c 67 0c jmp $0c67
. 11a2  00       brk
. 11a3  00       brk
. 11a4  00       brk
. 11a5  20 17 81 jsr $8117
. 11a8  20 e0 0d jsr $0de0
. 11ab  60       rts
. 11ac  00       brk
. 11ad  00       brk
. 11ae  00       brk
. 11af  00       brk
. 11b0  ad 13 ff lda $ff13
. 11b3  29 fd    and #$fd
. 11b5  8d 13 ff sta $ff13
. 11b8  4c dc 8b jmp $8bdc
. 11bb  00       brk
. 11bc  00       brk
. 11bd  00       brk
. 11be  00       brk
. 11bf  00       brk
. 11c0  00       brk
. 11c1  00       brk
. 11c2  00       brk
. 11c3  00       brk
. 11c4  00       brk
. 11c5  00       brk
. 11c6  00       brk
. 11c7  00       brk
. 11c8  00       brk
. 11c9  00       brk
. 11ca  00       brk
. 11cb  00       brk
. 11cc  00       brk
. 11cd  00       brk
. 11ce  00       brk
. 11cf  00       brk
. 11d0  00       brk
. 11d1  00       brk
. 11d2  00       brk
. 11d3  00       brk
. 11d4  00       brk
. 11d5  00       brk
. 11d6  00       brk
. 11d7  00       brk
. 11d8  00       brk
. 11d9  00       brk
. 11da  00       brk
. 11db  00       brk
. 11dc  00       brk
. 11dd  00       brk
. 11de  00       brk
. 11df  00       brk
. 11e0  00       brk
. 11e1  00       brk
. 11e2  00       brk
. 11e3  00       brk
. 11e4  00       brk
. 11e5  00       brk
. 11e6  00       brk
. 11e7  00       brk
. 11e8  00       brk
. 11e9  00       brk
. 11ea  00       brk
. 11eb  00       brk
. 11ec  00       brk
. 11ed  00       brk
. 11ee  00       brk
. 11ef  00       brk
. 11f0  4c 87 ff jmp $ff87
. 11f3  00       brk
. 11f4  00       brk
. 11f5  00       brk
. 11f6  00       brk
. 11f7  00       brk
. 11f8  00       brk
. 11f9  00       brk
. 11fa  00       brk
. 11fb  00       brk
. 11fc  00       brk
. 11fd  00       brk
. 11fe  00       brk
. 11ff  00       brk
. 1200  00       brk
. 1201  00       brk
. 1202  00       brk
. 1203  00       brk
. 1204  00       brk
. 1205  00       brk
. 1206  00       brk
. 1207  00       brk
. 1208  00       brk
. 1209  00       brk
. 120a  00       brk
. 120b  00       brk
. 120c  00       brk
. 120d  00       brk
. 120e  00       brk
. 120f  00       brk
. 1210  00       brk
. 1211  00       brk
. 1212  00       brk
. 1213  00       brk
. 1214  00       brk
. 1215  00       brk
. 1216  00       brk
. 1217  00       brk
. 1218  00       brk
. 1219  00       brk
. 121a  00       brk
. 121b  00       brk
. 121c  00       brk
. 121d  00       brk
. 121e  00       brk
. 121f  00       brk
. 1220  00       brk
. 1221  00       brk
. 1222  00       brk
. 1223  00       brk
. 1224  00       brk
. 1225  00       brk
. 1226  00       brk
. 1227  00       brk
. 1228  00       brk
. 1229  00       brk
. 122a  00       brk
. 122b  00       brk
. 122c  00       brk
. 122d  00       brk
. 122e  00       brk
. 122f  00       brk
. 1230  00       brk
. 1231  00       brk
. 1232  00       brk
. 1233  00       brk
. 1234  00       brk
. 1235  00       brk
. 1236  00       brk
. 1237  00       brk
. 1238  00       brk
. 1239  00       brk
. 123a  00       brk
. 123b  00       brk
. 123c  00       brk
. 123d  00       brk
. 123e  00       brk
. 123f  00       brk
. 1240  00       brk
. 1241  00       brk
. 1242  00       brk
. 1243  00       brk
. 1244  00       brk
. 1245  00       brk
. 1246  00       brk
. 1247  00       brk
. 1248  00       brk
. 1249  00       brk
. 124a  00       brk
. 124b  00       brk
. 124c  00       brk
. 124d  00       brk
. 124e  00       brk
. 124f  00       brk
. 1250  00       brk
. 1251  00       brk
. 1252  00       brk
. 1253  00       brk
. 1254  00       brk
. 1255  00       brk
. 1256  00       brk
. 1257  00       brk
. 1258  00       brk
. 1259  00       brk
. 125a  00       brk
. 125b  00       brk
. 125c  00       brk
. 125d  00       brk
. 125e  00       brk
. 125f  00       brk
. 1260  00       brk
. 1261  00       brk
. 1262  00       brk
. 1263  00       brk
. 1264  00       brk
. 1265  00       brk
. 1266  00       brk
. 1267  00       brk
. 1268  00       brk
. 1269  00       brk
. 126a  00       brk
. 126b  00       brk
. 126c  00       brk
. 126d  00       brk
. 126e  00       brk
. 126f  00       brk
. 1270  00       brk
. 1271  00       brk
. 1272  00       brk
. 1273  00       brk
. 1274  00       brk
. 1275  00       brk
. 1276  00       brk
. 1277  00       brk
. 1278  00       brk
. 1279  00       brk
. 127a  00       brk
. 127b  00       brk
. 127c  a0 00    ldy #$00
. 127e  8c fc 07 sty $07fc
. 1281  ad 06 ff lda $ff06
. 1284  29 ef    and #$ef
. 1286  8d 06 ff sta $ff06
. 1289  ca       dex
. 128a  d0 fd    bne $1289
. 128c  88       dey
. 128d  d0 fa    bne $1289
. 128f  78       sei
. 1290  60       rts
. 1291  a0 00    ldy #$00
. 1293  a9 02    lda #$02
. 1295  20 b1 0d jsr $0db1
. 1298  a2 07    ldx #$07
. 129a  88       dey
. 129b  c0 09    cpy #$09
. 129d  d0 f4    bne $1293
. 129f  a2 05    ldx #$05
. 12a1  c6 d1    dec $d1
. 12a3  d0 ee    bne $1293
. 12a5  98       tya
. 12a6  20 b1 0d jsr $0db1
. 12a9  a2 07    ldx #$07
. 12ab  88       dey
. 12ac  d0 f7    bne $12a5
. 12ae  ca       dex
. 12af  ca       dex
. 12b0  60       rts
. 12b1  85 d0    sta $d0
. 12b3  45 d7    eor $d7
. 12b5  85 d7    sta $d7
. 12b7  a9 08    lda #$08
. 12b9  85 d2    sta $d2
. 12bb  06 d0    asl $d0
. 12bd  a5 01    lda $01
. 12bf  29 fd    and #$fd
. 12c1  20 d3 0d jsr $0dd3
. 12c4  a2 11    ldx #$11
. 12c6  ea       nop
. 12c7  09 02    ora #$02
. 12c9  20 d3 0d jsr $0dd3
. 12cc  a2 0e    ldx #$0e
. 12ce  c6 d2    dec $d2
. 12d0  d0 e9    bne $12bb
. 12d2  60       rts
. 12d3  ca       dex
. 12d4  d0 fd    bne $12d3
. 12d6  90 05    bcc $12dd
. 12d8  a2 0b    ldx #$0b
. 12da  ca       dex
. 12db  d0 fd    bne $12da
. 12dd  85 01    sta $01
. 12df  60       rts
. 12e0  a2 00    ldx #$00
. 12e2  2c a2 01 bit $01a2
. 12e5  a4 2b    ldy $2b
. 12e7  a5 2c    lda $2c
. 12e9  86 0a    stx $0a
. 12eb  86 93    stx $93
. 12ed  84 b4    sty $b4
. 12ef  85 b5    sta $b5
. 12f1  20 6b a8 jsr $a86b
. 12f4  20 fd 0d jsr $0dfd
. 12f7  20 0a a8 jsr $a80a
. 12fa  4c 03 87 jmp $8703
. 12fd  20 61 0e jsr $0e61
. 1300  a5 d1    lda $d1
. 1302  c9 02    cmp #$02
. 1304  f0 08    beq $130e
. 1306  c9 01    cmp #$01
. 1308  d0 f3    bne $12fd
. 130a  a5 ad    lda $ad
. 130c  f0 0a    beq $1318
. 130e  ad 33 03 lda $0333
. 1311  85 b4    sta $b4
. 1313  ad 34 03 lda $0334
. 1316  85 b5    sta $b5
. 1318  20 e8 e9 jsr $e9e8
. 131b  ea       nop
. 131c  ea       nop
. 131d  ea       nop
. 131e  ea       nop
. 131f  ea       nop
. 1320  20 c0 8c jsr $8cc0
. 1323  a4 ab    ldy $ab
. 1325  f0 0b    beq $1332
. 1327  88       dey
. 1328  b1 af    lda ($af),y
. 132a  d9 38 03 cmp $0338,y
. 132d  d0 ce    bne $12fd
. 132f  98       tya
. 1330  d0 f5    bne $1327
. 1332  84 90    sty $90
. 1334  20 89 f1 jsr $f189
. 1337  ad 35 03 lda $0335
. 133a  38       sec
. 133b  ed 33 03 sbc $0333
. 133e  08       php
. 133f  18       clc
. 1340  65 b4    adc $b4
. 1342  85 9d    sta $9d
. 1344  ad 36 03 lda $0336
. 1347  65 b5    adc $b5
. 1349  28       plp
. 134a  ed 34 03 sbc $0334
. 134d  85 9e    sta $9e
. 134f  20 76 0e jsr $0e76
. 1352  a5 d0    lda $d0
. 1354  45 d7    eor $d7
. 1356  05 90    ora $90
. 1358  f0 04    beq $135e
. 135a  a9 ff    lda #$ff
. 135c  85 90    sta $90
. 135e  4c eb f0 jmp $f0eb
. 1361  20 af 0e jsr $0eaf
. 1364  c9 00    cmp #$00
. 1366  f0 f9    beq $1361
. 1368  85 d1    sta $d1
. 136a  20 dd 0e jsr $0edd
. 136d  91 b6    sta ($b6),y
. 136f  c8       iny
. 1370  c0 c0    cpy #$c0
. 1372  d0 f6    bne $136a
. 1374  f0 2d    beq $13a3
. 1376  20 af 0e jsr $0eaf
. 1379  20 dd 0e jsr $0edd
. 137c  c4 93    cpy $93
. 137e  d0 02    bne $1382
. 1380  91 b4    sta ($b4),y
. 1382  d1 b4    cmp ($b4),y
. 1384  f0 02    beq $1388
. 1386  86 90    stx $90
. 1388  45 d7    eor $d7
. 138a  85 d7    sta $d7
. 138c  e6 b4    inc $b4
. 138e  d0 02    bne $1392
. 1390  e6 b5    inc $b5
. 1392  a5 b4    lda $b4
. 1394  c5 9d    cmp $9d
. 1396  a5 b5    lda $b5
. 1398  e5 9e    sbc $9e
. 139a  90 dd    bcc $1379
. 139c  20 dd 0e jsr $0edd
. 139f  20 7c 0d jsr $0d7c
. 13a2  88       dey
. 13a3  8c fc 07 sty $07fc
. 13a6  58       cli
. 13a7  18       clc
. 13a8  c8       iny
. 13a9  c8       iny
. 13aa  4c c8 e8 jmp $e8c8
. 13ad  ea       nop
. 13ae  ea       nop
. 13af  20 1b e3 jsr $e31b
. 13b2  20 7c 0d jsr $0d7c
. 13b5  84 d7    sty $d7
. 13b7  a9 07    lda #$07
. 13b9  8d 04 ff sta $ff04
. 13bc  a2 01    ldx #$01
. 13be  20 f0 0e jsr $0ef0
. 13c1  26 d0    rol $d0
. 13c3  a5 d0    lda $d0
. 13c5  c9 02    cmp #$02
. 13c7  d0 f5    bne $13be
. 13c9  a0 09    ldy #$09
. 13cb  20 dd 0e jsr $0edd
. 13ce  c9 02    cmp #$02
. 13d0  f0 f9    beq $13cb
. 13d2  c4 d0    cpy $d0
. 13d4  d0 e8    bne $13be
. 13d6  20 dd 0e jsr $0edd
. 13d9  88       dey
. 13da  d0 f6    bne $13d2
. 13dc  60       rts
. 13dd  a9 08    lda #$08
. 13df  85 d2    sta $d2
. 13e1  20 f0 0e jsr $0ef0
. 13e4  26 d0    rol $d0
. 13e6  ea       nop
. 13e7  ea       nop
. 13e8  ea       nop
. 13e9  c6 d2    dec $d2
. 13eb  d0 f4    bne $13e1
. 13ed  a5 d0    lda $d0
. 13ef  60       rts
. 13f0  a9 10    lda #$10
. 13f2  24 01    bit $01
. 13f4  d0 fc    bne $13f2
. 13f6  24 01    bit $01
. 13f8  f0 fc    beq $13f6
. 13fa  ad 09 ff lda $ff09
. 13fd  48       pha
. 13fe  a9 07    lda #$07
. 1400  8d 04 ff sta $ff04
. 1403  8e 05 ff stx $ff05
. 1406  a9 40    lda #$40
. 1408  8d 09 ff sta $ff09
. 140b  68       pla
. 140c  0a       asl
. 140d  0a       asl
. 140e  60       rts
. 140f  00       brk
. 1410  00       brk

6 - Turbo tipo Novaload
=======================
Così chiamato perché, come il Novaload, ha una schermata fissa con righe di due colori (sempre gli stessi per tutto il caricamento) nella cornice.
L'ho esaminato poco.
Anche questo ovviamente richiede le halfwaves.
I due esempi allegati (n.2 e n.3) si distinguono per il modo con cui è utilizzato.
I falsi puntatori sono uguali a quelli del "Turbo con cornice che cambia colore" e quindi potrebbe esserne un derivato.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: luigidifraia - 02 Settembre 2011, 00:01:26
1 - Turbo con cornice che cambia colore
Trattasi del turbo usato da un freezer. Nessuno sa dirci quale?
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: luigidifraia - 02 Settembre 2011, 00:20:25
"1 - Turbo con cornice che cambia colore
... stando al buffer di cassetta il loader occuperebbe solo tre byte da $0324 a $0326, il che è impossibile"

In realta' solo due bytes (gli end address usati dal SO sono sempre intesi esclusivi)!
Ebbene si, la sezione DATA del file che usa il ROM loader e' costituita da soli 2 bytes. 2 bytes suggeriscono un vettore: infatti si tratta di un valore che sostituisce il vettore alla locazione $0324 (RAM, quindi sovrascrivibile) puntando al turbo loader. Il codice del turbo loader inizia a $0348 ed e' contenuto nel buffer di cassetta. Quindi viene caricato in RAM durante il caricamento della sezione HEADER del file che usa il ROM loader.
$0324 punta alla routine CHROUT, che sul C16 si trova di default a $EC4B, responsabile dell'output a video di un carattere. Alla fine di un caricamento standard, il C16 scriverebbe "READY." proprio usando CHROUT, ma poiche' il file caricato modifica tale vettore, a fine caricamento anziche' produrre la scritta "READY.", il SO esegue il turbo loader: siamo di fronte a quello che si definisce "autostart".

Questa tecnica di autostart e' abbastanza tipica in programmi commerciali, visto che il buffer di cassetta fornisce 171 bytes utili per alloggiare un turbo loader e la sezione dati e' ideale per sovrascrivere il valore di un vettore che causa l'autostart del turbo loader.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 02 Settembre 2011, 02:14:32
In effetti il dubbio che il loader fosse tutto nel buffer di cassetta m'era venuto: aprendo il monitor di vice prima dell'inizio delle righe sembrava in effetti l'unica parte di memoria cambiata. E in più notavo che il contenuto del buffer di cassetta non cambiava durante il resto del caricamento, ed in effetti credo venga rilocato dal turbo (giusto?).
Avevo poi fatto una prova salvando (da monitor di vice) l'intero buffer cassetta su disco e poi ricaricandolo a computer resettato (ovviamente con ,8,1) senza però che succedesse nulla (m'aspettavo un press play on tape o almeno un cambio dello schermo), evidentemente dovevo lanciarlo con la sys.
Riguardo l'altra domanda, non so sinceramente quale possa essere il freezer. Sul C16 il modo più semplice per sproteggere i programmi è, tranne nei casi (meno rari di quanto si creda) in cui non sono compatibili, utilizzare il Plus4. L'enorme (in proporzione) quantità di RAM disponibile nel Plus4 agevola non poco la vita. E' un po' come quelle utility per C128 pubblicate a suo tempo su CCC che permettevano di rippare grafica e sprite dai giochi del C64.
Non avendo notizia di cartucce sprotettrici tipo Action Replay per C16/+4, mi viene in mente quindi che il freezer sia un software (ovviamente in L/M) per Plus4. L'unico dubbio è su come si possa attivare un freezer software: il metodo più banale sarebbe un reset o un'entrata in monitor per lanciare il freezer (che magari risiede nella ram sopra i 16K), che però cancellerebbe almeno parte della memoria (sicuramente la pagina zero).
Sei sicuro comunque che si tratti di un freezer? Se così fosse, la linea basic che lancia il gioco dovrebbe o esserci sempre o non esserci mai (non avrebbe senso lasciarla a volte sì e a volte no). Inoltre i programmi freezati, tipicamente, quando vengono lanciati stanno un paio di secondi a decruncharsi prima di partire, almeno così è sul C64.
Io penso che sia stato usato non un freezer, ma, più banalmente, un programma tipo il Disk to Tape+ per C64. Insomma qualcosa che partendo da un PRG su disco generi su cassetta sia il loader sia la parte in turbo.

Ah, per chi non lo sapesse, VICE non è in grado di scrivere un TAPv2 con halfwaves: provate a registrare su un TAP nuovo qualunque cosa con il Turbo Tape (quello di :@L) e poi a ricaricarla.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: luigidifraia - 02 Settembre 2011, 08:15:42
Sei sicuro comunque che si tratti di un freezer? Se così fosse, la linea basic che lancia il gioco dovrebbe o esserci sempre o non esserci mai (non avrebbe senso lasciarla a volte sì e a volte no). ...
Io penso che sia stato usato non un freezer, ma, più banalmente, un programma tipo il Disk to Tape+ per C64. Insomma qualcosa che partendo da un PRG su disco generi su cassetta sia il loader sia la parte in turbo.
Ci potrebbero essere piu' versioni o un freezer flessibile che include il boot BASIC oppure no.

Parlo di freezer in quanto cio' che viene caricato e' di solito uno snapshot del gioco in un punto non convenzionale ma statico, tipo l'inserimento del proprio nome nella tabella dei punteggi o il game over (convenzionali sarebbero per esempio i credits o il logo principale).
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: fab - 02 Settembre 2011, 09:50:54
1 - Turbo con cornice che cambia colore
Trattasi del turbo usato da un freezer. Nessuno sa dirci quale?
C'e' stato un thread su comp.sys.cbm nel quale questo loader e' venuto fuori. http://groups.google.com/group/comp.sys.cbm/browse_thread/thread/e6240a1151675054/46cc8f93d79d5ed2
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 02 Settembre 2011, 14:51:52
Ci potrebbero essere piu' versioni o un freezer flessibile che include il boot BASIC oppure no.
L'ipotesi delle più versioni sarebbe la più ovvia sulla carta, ma visto che sulla stessa cassetta ci troviamo con giochi con la riga BASIC e altri no, diventa più plausibile l'ipotesi del freezer (ma non sono ancora convinto che lo sia :D) flessibile.

Parlo di freezer in quanto cio' che viene caricato e' di solito uno snapshot del gioco in un punto non convenzionale ma statico, tipo l'inserimento del proprio nome nella tabella dei punteggi o il game over (convenzionali sarebbero per esempio i credits o il logo principale).
Questo è vero tuttavia si tratta di casi singoli (la stragrande maggioranza dei casi NON è così), quindi non ci darei tanta importanza.

Fab, il thread che hai linkato è molto interessante, tuttavia, se non m'è sfuggito qualcosa, non si parla di freezer, ma solo di loader. E su quello credo che siamo tutti d'accordo. :)
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: luigidifraia - 02 Settembre 2011, 20:51:16
Fab, il thread che hai linkato è molto interessante, tuttavia, se non m'è sfuggito qualcosa, non si parla di freezer, ma solo di loader. E su quello credo che siamo tutti d'accordo. :)
Una possibilita' sarebbe di trovare un gioco che e' stato salvato usando il mastering tool in questione e i programmatori hanno accidentalmente salvato anche sezioni del masterer (il che e' mi e' capitato di vedere non di rado sul C64 - esempio http://luigidifraia.wordpress.com/2011/05/07/code-leftover/)
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: luigidifraia - 02 Settembre 2011, 21:50:57
2 - Turbo con tutto schermo che cambia colore
Identico al Turbo 1, a parte 2 istruzioni (che appunto nel Turbo 2 attivano lo screen blanking).
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 02 Settembre 2011, 22:18:55
Turbo a tutto schermo che cambia colore
Codice: [Seleziona]
.C:0348   A9 00      LDA #$00
.C:034a   8D 06 FF   STA $FF06
.C:034d   38         SEC
.C:034e   78         SEI
.C:034f   08         PHP
.C:0350   20 93 03   JSR $0393
.C:0353   20 B8 03   JSR $03B8
.C:0356   A8         TAY
.C:0357   A9 00      LDA #$00
.C:0359   85 B2      STA $B2
.C:035b   20 B8 03   JSR $03B8
.C:035e   85 B3      STA $B3
.C:0360   20 B8 03   JSR $03B8
.C:0363   85 2D      STA $2D
.C:0365   20 B8 03   JSR $03B8
.C:0368   85 2E      STA $2E
.C:036a   20 B8 03   JSR $03B8
.C:036d   91 B2      STA ($B2),Y
.C:036f   45 9E      EOR $9E
.C:0371   85 9E      STA $9E
.C:0373   C8         INY
.C:0374   D0 05      BNE $037B
.C:0376   E6 B3      INC $B3
.C:0378   EE 19 FF   INC $FF19
.C:037b   C4 2D      CPY $2D
.C:037d   A5 B3      LDA $B3
.C:037f   E5 2E      SBC $2E
.C:0381   90 E7      BCC $036A
.C:0383   20 B8 03   JSR $03B8
.C:0386   85 9D      STA $9D
.C:0388   A9 08      LDA #$08
.C:038a   85 01      STA $01
.C:038c   28         PLP
.C:038d   B0 01      BCS $0390
.C:038f   60         RTS
.C:0390   4C 00 07   JMP $0700
.C:0393   A9 00      LDA #$00
.C:0395   85 01      STA $01
.C:0397   CA         DEX
.C:0398   D0 FD      BNE $0397
.C:039a   88         DEY
.C:039b   D0 FA      BNE $0397
.C:039d   84 9E      STY $9E
.C:039f   A2 00      LDX #$00
.C:03a1   20 C6 03   JSR $03C6
.C:03a4   26 AC      ROL $AC
.C:03a6   A5 AC      LDA $AC
.C:03a8   C9 10      CMP #$10
.C:03aa   D0 F5      BNE $03A1
.C:03ac   20 B8 03   JSR $03B8
.C:03af   C9 10      CMP #$10
.C:03b1   F0 F9      BEQ $03AC
.C:03b3   C9 5A      CMP #$5A
.C:03b5   D0 EA      BNE $03A1
.C:03b7   60         RTS
.C:03b8   A9 01      LDA #$01
.C:03ba   85 AC      STA $AC
.C:03bc   20 C6 03   JSR $03C6
.C:03bf   26 AC      ROL $AC
.C:03c1   90 F9      BCC $03BC
.C:03c3   A5 AC      LDA $AC
.C:03c5   60         RTS
.C:03c6   A9 10      LDA #$10
.C:03c8   24 01      BIT $01
.C:03ca   D0 FC      BNE $03C8
.C:03cc   24 01      BIT $01
.C:03ce   F0 FC      BEQ $03CC
.C:03d0   2D 09 FF   AND $FF09
.C:03d3   48         PHA
.C:03d4   A9 01      LDA #$01
.C:03d6   A2 78      LDX #$78
.C:03d8   8E 02 FF   STX $FF02
.C:03db   8D 03 FF   STA $FF03
.C:03de   A9 10      LDA #$10
.C:03e0   8D 09 FF   STA $FF09
.C:03e3   AD 19 FF   LDA $FF19
.C:03e6   18         CLC
.C:03e7   69 10      ADC #$10
.C:03e9   8D 19 FF   STA $FF19
.C:03ec   68         PLA
.C:03ed   0A         ASL A
.C:03ee   0A         ASL A
.C:03ef   0A         ASL A
.C:03f0   0A         ASL A
.C:03f1   60         RTS
Cambiamenti in turbo con cornice che cambia colore:
Codice: [Seleziona]
.C:0348   AD 19 FF   LDA $FF19
.C:034b   85 22      STA $22
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: luigidifraia - 03 Settembre 2011, 11:08:01
Turbo a tutto schermo che cambia colore
Codice: [Seleziona]
.C:0348   A9 00      LDA #$00
.C:034a   8D 06 FF   STA $FF06
Sono proprio queste le due istruzioni che producono lo screen blanking nel Tipo 2, usando uno dei registri del TED mappato a $FF06.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 03 Settembre 2011, 15:47:30
Caricando il turbo "solo cornice" e cambiando le istruzioni "al volo" (da monitor di vice) con quello "tutto schermo", carica a tutto schermo senza problemi.
Facendo invece il contrario, si vede lo schermo (con la cornice che si colora) fino al primo cambio colore, dopodiché diventa a tutto schermo. Curioso.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: luigidifraia - 03 Settembre 2011, 18:35:29
...Facendo invece il contrario, si vede lo schermo (con la cornice che si colora) fino al primo cambio colore, dopodiché diventa a tutto schermo. Curioso.
Il loader carica varie parti di cui alcune eseguite tra un caricamento e l'altro.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: luigidifraia - 03 Settembre 2011, 19:40:13
1 - Turbo con cornice che cambia colore
=======================================
Così com'è necessita delle halfwaves.
A detta di Fabrizio Gennari, è possibile modificarlo in modo che non le necessiti.

Vero anche questo. La ragione per la quale servono le halfwaves e' che il caricatore turbo misura il tempo intercorso tra due fronti di salita, anziche' quelli di discesa come fa il ROM loader. Quindi serve rilevarli entrambi in fase di campionamento, cosa che avviene usando TAP v2. Ovviamente se si modifica il codice sottostante, si puo' fare a meno di TAP v2, ma costruire il TAP v1 funzionante sarebbe una piccola nuova sfida (la diffusione di tape TAP v1 produrrebbe confusione - meglio non farlo).

Codice: [Seleziona]
; Read bit
. 03C6 A9 10     LDA #$10 ; wait for Read Line = 0
. 03C8 24 01     BIT $01
. 03CA D0 FC     BNE $03C8

. 03CC 24 01     BIT $01 ; wait for Read Line 0->1 transition
. 03CE F0 FC     BEQ $03CC
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: fab - 05 Settembre 2011, 00:48:07
Altri desiderata, riguardanti wav-prg:
- supporto ai loader algasoft non supportati (che sono almeno due e te li ho già mandati)
- supporto ai loader/turbo per C16 (te li posso mandare senza problemi)
Ho guardato il TAP Alga Soft che mi hai mandato, ed è supportato dal plug-in Firebird, con l'eccezione di un gioco che è supportato dal plug-in Poke. Da notare che la versione modificata di Tapclean che si trova qui (http://iancoog.altervista.org/) supporta entrambi i formati, chiamandoli rispettivamente EASYTAPE2 e GALADRIEL_POKE.
Il TAP Best 20 Soccer contiene giochi in formato 108DE0A5, che è supportato sia da Tapclean sia dalla versione 4.0 beta di WAV-PRG.
Riguardo al loader turbo per C16, tempo fa un utente di questo forum, un certo zzzeca, mi aveva mandato degli WAV con lo stesso formato di Byte games per C16. Anche se non avevo capito alcune cose (in particolare, perché i TAP v1 non funzionassero), il loader è di per sé semplice, una variante del Freeload. Gli mandai una DLL ottenuta cambiando di due virgole freeload.c e compilandolo, e lui ne fu soddisfatto. Paradossalmente, funziona con l'impostazione sbagliata di "inverted waveform": questa è una conseguenza del fatto che il loader riconosce i trigger opposti a quelli normali.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: Massi cadenti - 05 Settembre 2011, 01:30:35
Sì avevo letto la mail (scusa se non t'ho risposto subito).
A tal proposito, sarebbe molto difficile implementare una sorta di check automatico in wav-prg che riesca ad estrarre tutti i prg creando un T64 nei casi in cui in un nastro ci siano vari loader diversi? Certo è possibile estrarre prima quelli di un tipo e poi quelli di un altro e poi lavorare con lo Star Commander per metterli insieme nel giusto ordine, però potrebbe essere utile qualcosa che funzioni in automatico. Questo dando per buono che il tap sia funzionante. Per quanto riguarda tapclean, stesso discorso. Ma lì mi pare che qualcosa del genere c'è già (ma confesso che l'ho usato poco, quindi potrei sbagliarmi).
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: bubusan - 05 Settembre 2011, 13:48:19
La discussione è stata divisa e spostata nell'area convertire le cassette... ecc..
Spero di aver fatto cosa gradita.

Aggiornamento :
Se siete tutti d'accordo e mi darete una mano sulla stesura, possiamo creare una nuova guida da pubblicare sul sito, per la conversione delle cassette del c16.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Astaroth - 07 Settembre 2011, 20:44:57
Al momento creare una guida con quella procedura usata per quella cassetta non credo serva a molto. Ho provato ad riutilizzare il procedimento e gli script su altri numeri di bytegames ma non ho ottenuto risultati apprezzabili. Ho l'impressione che ogni cassetta sia storia a se. L'unica è attendere un aggiornamento per audiotap.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 07 Settembre 2011, 21:40:07
O usare MTAP, o usare un DC2N. O mandarle a chi può usare MTAP o un DC2N.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 07 Settembre 2011, 23:58:18
O usare la versione aggiornata di Audiotap che è appena uscita.
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: fab - 08 Settembre 2011, 00:09:47
sarebbe molto difficile implementare una sorta di check automatico in wav-prg che riesca ad estrarre tutti i prg creando un T64 nei casi in cui in un nastro ci siano vari loader diversi? [...]. Per quanto riguarda tapclean, stesso discorso. Ma lì mi pare che qualcosa del genere c'è già (ma confesso che l'ho usato poco, quindi potrei sbagliarmi).
Non è semplice.

La versione 4.0 di WAV-PRG è pensata per questo. Però lo sviluppo è lento: è iniziato a dicembre 2009 ed è ancora indietro.

Tapclean lo fa con 2 metodi. Il primo è l'identificazione del CRC della parte iniziale. Se il CRC è tra quelli noti, lo si usa per decidere quale loader usare. Il secondo è il controllo a tappeto di tutti i loader conosciuti.

L'intenzione è che WAV-PRG 4.0 usi metodi simili ai due descritti sopra per riconoscere automaticamente (entro certi limiti) quale loader è quello giusto per la cassetta. La sorgente della versione alpha è scaricabile con git.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 08 Settembre 2011, 00:46:28
Domanda scema perché non ho provato: il Vic20 è già implementato? (Per fortuna non esistono, o non mi risultano almeno, loader non standard per il Vic20)
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 08 Settembre 2011, 08:51:05
Audiotap può creare TAP col clock VIC20.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 08 Settembre 2011, 15:13:26
No, mi riferivo a wav-prg per creare T64 da un TAP
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 08 Settembre 2011, 17:40:36
Basta che il TAP sia valido, per quale macchina e' stato creato non conta.

I plug-in, comunque, sono fatti per supportare onde intere, non semionde.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Astaroth - 09 Settembre 2011, 00:13:46
O usare la versione aggiornata di Audiotap che è appena uscita.

Ho provato la nuova versione con un altro numero di Byte Games ma non sono riuscito ad ottenere un tape funzionante. Se seleziono C16(senza semionde) il vice segnala correttamente i vari found ma carica all'infinito per via della mancanza delle semionde. Se imposto C16 with semiwaves allora dal tape generato non viene trovato piu' nulla e non appare alcun found(provato con e senza onde invertite e vari livelli di sensibilità).
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Astaroth - 09 Settembre 2011, 00:29:37
Fab, se vuoi fare qualche verifica ho messo in condivisione il .wav della cassetta:
http://www.megaupload.com/?d=RLZATINN
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 09 Settembre 2011, 00:44:50
Capisco in italiano (anche se non mi piace) ma perché in inglese audiotap usa il termine semiwaves quando ovunque (a cominciare da mtap) vengono chiamate halfwaves? Nessuna vena polemica, voglio solo capire :)
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 09 Settembre 2011, 23:37:41
Fab, se vuoi fare qualche verifica ho messo in condivisione il .wav della cassetta:
http://www.megaupload.com/?d=RLZATINN
"Il file al quale si sta tentando di accedere è temporaneamente non disponibile. Riprova più tardi."
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 10 Settembre 2011, 00:42:33
Problema risolto, appena scaricato
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 11 Settembre 2011, 22:58:31
Fab, se vuoi fare qualche verifica ho messo in condivisione il .wav della cassetta:
http://www.megaupload.com/?d=RLZATINN
Con Audiotap 1.6 bisogna usare "inverted waveform" e le semionde. Poi lo si può ripulire con questa versione ulteriormente migliorata dello script di ripulitura
Codice: [Seleziona]
#!/usr/bin/python3

import io
import sys
import os

def statist(infile,outfile):
inputs = io.open(infile,'rb')
outputs = io.open(outfile,'wb')


pulisci = False
stat = [{},{},{},{},{},{},{},{}]
beginstat = [{},{}]

pilot = bytes([])
impulsi = 0
blocchi = 0
while 1:
p =inputs.tell()
thisbyte=inputs.read(1)
if len(thisbyte)==0:
break

if not pulisci:
flushpilot=True
if thisbyte[0]>=0x0f and thisbyte[0]<0x22:
pilot += thisbyte
flushpilot=False
elif thisbyte[0]>=0x38 and thisbyte[0]<0x66 and len(pilot) > 450:
thisbyte+=inputs.read(1)
if len(thisbyte)==2 and thisbyte[1]>=0x33 and thisbyte[1]<0x9b:
pulisci = True
inizioblocco = p
impulsi=impulsi-1
print("iniz blocco "+str(blocchi)+" a "+hex(thisbyte[0])+" at "+str(p)+" at "+str(impulsi))
p=inputs.seek(-2, os.SEEK_CUR)
#clean pilot
#pilot=bytes([0x1b])*len(pilot)
else:
pilot += thisbyte[0:1]
p=inputs.seek(1-len(thisbyte), os.SEEK_CUR)
elif thisbyte[0]==0x00:
pilot=pilot+thisbyte+inputs.read(3)
flushpilot=True
else:
pilot += thisbyte

if flushpilot:
thisbyte=pilot
pilot=pilot[0:0]
else:
thisbyte=thisbyte[0:0]

impulsi=impulsi+1

else:
impulsi=impulsi+1
if ((p - inizioblocco) % 40) == 0:
if(thisbyte[0]<0x38):
print("fineblocco "+hex(thisbyte[0])+" at "+str(p)+" at "+str(impulsi))
lunghpilot = 0
pulisci = False
blocchi = blocchi + 1
thisbyte+=inputs.read(1)
impulsi=impulsi+1
#clean end of block
#thisbyte=bytes([0x35,0x35])
else:
thisbyte=thisbyte+inputs.read(1)
impulsi=impulsi+1
for i in range(2):
if not thisbyte[i] in beginstat[i]:
beginstat[i][thisbyte[i]]=0
beginstat[i][thisbyte[i]]=beginstat[i][thisbyte[i]]+1
toolittle=thisbyte[0]-0x61
if toolittle<0:
thisbyte=bytes([0x61,thisbyte[1]+toolittle])
#clean start of block
#thisbyte=bytes([0x6c,0x6c])
elif ((p - inizioblocco) % 40) == 1:
print("What?")
elif ((p - inizioblocco) % 40) == 2:
pass
#clean right after start of block
#thisbyte=bytes([0x35])
elif ((p - inizioblocco) % 40) == 3:
pass
#clean right after start of block
#thisbyte=bytes([0x35])
else:
thisbyte=thisbyte+inputs.read(3)
impulsi=impulsi+3
statbase = 0
resbytes=thisbyte
if (thisbyte[0]+thisbyte[1]<thisbyte[2]+thisbyte[3]):
if(thisbyte[0]<0x21 or thisbyte[0]>0x29):
resbytes=              bytes([0x21])+resbytes[1:4]
if(thisbyte[1]<0x12 or thisbyte[1]>0x1a):
resbytes=resbytes[0:1]+bytes([0x17])+resbytes[2:4]
if(thisbyte[2]<0x30 or thisbyte[2]>0x3a):
resbytes=resbytes[0:2]+bytes([0x30])+resbytes[3:4]
#clean zero bit
#resbytes=bytes([0x17,0x17,0x35,0x35])
else:
statbase = 4
if(thisbyte[0]<0x30 or thisbyte[0]>0x3a):
resbytes=              bytes([0x30])+resbytes[1:4]
if(thisbyte[2]<0x21 or thisbyte[2]>0x29):
resbytes=resbytes[0:2]+bytes([0x21])+resbytes[3:4]
if(thisbyte[3]<0x12 or thisbyte[3]>0x1a):
resbytes=resbytes[0:3]+bytes([0x17])
#clean one bit
#resbytes=bytes([0x35,0x35,0x17,0x17])
for i in range(4):
if not thisbyte[i] in stat[i+statbase]:
stat[i+statbase][thisbyte[i]]=0
stat[i+statbase][thisbyte[i]]=stat[i+statbase][thisbyte[i]]+1
thisbyte=resbytes

outputs.write(thisbyte)

statbase = 0
for i in stat:
print("stat for byte "+str(int(statbase/4))+" pos "+str(statbase%4))
statbase=statbase+1
for k in sorted(i.keys()):
print("byte "+hex(k)+" occurs "+str(i[k])+" times")
statbase = 0
for i in beginstat:
print("stat for begin "+str(statbase))
statbase=statbase+1
for k in sorted(i.keys()):
print("byte "+hex(k)+" occurs "+str(i[k])+" times")

if len(sys.argv)<3:
print("not enough args")
sys.exit
statist(sys.argv[1],sys.argv[2])

Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Astaroth - 12 Settembre 2011, 00:26:02
Ora funziona :) grande Fabrizio, altra cassetta recuperata. 
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 14 Settembre 2011, 00:05:13
Hai provato lo stesso procedimento con l'altra cassetta (la n.16)? In teoria, dovrebbe andare senza bisogno di hex editor o di dividere il TAP.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Astaroth - 14 Settembre 2011, 23:42:23
Ho fatto qualche prova, con l'ultima versione dello script(50) funzionano solo alcuni giochi(highway-scacchi-secret mission-space shuttle-skyrock) mentre con la penultima(40) ne funzionano altri(intro-smurf-scacchi-space shuttle).
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 15 Settembre 2011, 17:07:01
Hai anche provato a rifare il .tap con Audiotap 1.6 e pulire quello?
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Astaroth - 15 Settembre 2011, 18:55:35
Si sono ripartito da un nuovo .tap fatto col 1.6.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Astaroth - 16 Settembre 2011, 20:01:46
Sto facendo prove anche con la serie Go Games ma il Vice mostra il found solo quando imposto Audiotap con sensibilità >46 e in modo C16 senza semionde(e cmq dopo poco arriva il break error). Con semionde e varie puliture non viene trovato nulla.
Metto il .wav in condivisione nel caso volessi fare qualche prova:
http://www.megaupload.com/?d=G02X6ZN8
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 17 Settembre 2011, 16:26:12
Si sono ripartito da un nuovo .tap fatto col 1.6.
Strano. Con Audiotap 1.6, semionde, inverted waveform e ripulitura, qui funziona tutto tranne la presentazione. Alzando la sensitivity a 35 funziona anche quella.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 17 Settembre 2011, 16:27:41
Sto facendo prove anche con la serie Go Games ma il Vice mostra il found solo quando imposto Audiotap con sensibilità >46 e in modo C16 senza semionde(e cmq dopo poco arriva il break error). Con semionde e varie puliture non viene trovato nulla.
Metto il .wav in condivisione nel caso volessi fare qualche prova:
http://www.megaupload.com/?d=G02X6ZN8
Mi dispiace, la qualità del segnale è scarsa. Le onde si abbassano paurosamente a tratti. Con sensitivity 83, inverted waveform e ripuluitura sono riuscito ad ottenere i FOUND, ma poi dà LOAD ERROR o comunque non trova niente dopo.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Astaroth - 25 Settembre 2011, 14:38:24
Non ho ancora mollato con Go Games, appena mi riprende la voglia ricampiono un po' di cassette C16(ormai quelle C64 inedite le ho quasi finite, ne devo ancora mandare una ventina al sito che però pare fermo e senza aggiornamenti da un bel po').
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 10 Novembre 2011, 19:36:53
Che numeri di Go Games stai provando a convertire?
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Astaroth - 11 Novembre 2011, 12:41:42
Di Go Games ho i numeri 10-19-27-36-38.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 11 Novembre 2011, 15:12:17
...E ancora una volta per il numero 22 di Go Games niente :(
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Astaroth - 11 Novembre 2011, 20:04:15
Che c'era nel numero 22?
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 11 Novembre 2011, 20:16:09
Il primo gioco per C16, un gioco spaziale bellissimo  :cry2:
Titolo: Re:Re:NUOVI DUMP: hit parade n38, trainer games n5, byte games n6
Inserito da: fab - 13 Agosto 2012, 00:38:12
Altri desiderata, riguardanti wav-prg:
[...]
- supporto ai loader/turbo per C16 (te li posso mandare senza problemi)
http://sourceforge.net/projects/wav-prg/files/wav-prg/4.0alpha/wav-prg-4.0alpha5.zip/download (appena uscito). È una versione alpha, quindi preliminare, ma che supporta i TAP v2 e i WAV a semionde. L'ho provato con Byte Games n.6 per C16 con buoni risultati: il TAP ripulito che crea funziona molto meglio su VICE dell'output di Audiotap.

Bisogna scegliere il plug-in "Default C16" per le cassette C16. Inoltre, la cartella loaders contiene un file che si chiama freeload-observers.dll, che è meglio togliere prima di iniziare: se è presente,  alcune parti turbo vengono ripulite, ma a scapito di alcune parti non turbo, che hanno più bisogno di ripulitura.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 13 Agosto 2012, 18:32:31
Intanto grazie, lo provo su un po' di tap e ti faccio sapere se ci sono problemi :)
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 17 Agosto 2012, 15:33:01
Ho provato, ma riesco solo a creare tap puliti... non a fare i T64 o i PRG. Dove sbaglio? (ovviamente coi tap per C64 non ho problemi)
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 21 Agosto 2012, 19:57:12
Ho provato, ma riesco solo a creare tap puliti... non a fare i T64 o i PRG. Dove sbaglio? (ovviamente coi tap per C64 non ho problemi)
Almeno, i T64 o i PRG contengono la parte non turbo?

Togliendo freeload-observers.dll, la parte turbo non viene riconosciuta, e quindi non è presente nei PRG e nei T64, e nei TAP puliti viene copiata così com'è, senza ripulitura.

Con freeload-observers.dll, la parte turbo viene riconosciuta. WAV-PRG ha allo stato attuale una limitazione: se non può dire con certezza che dopo un programma turbo ce n'è sicuramente un altro, non prova a cercarne un altro. Nessun problema se i programmi turbo sono in un pezzo solo. Nel caso di Byte Games n.6, i programmi turbo sono in due parti, e WAV-PRG converte in T64 o PRG solo la prima. Sarebbe bello togliere questa limitazione, ma richiede molto lavoro, perché richiede di rileggere lo stesso TAP (o WAV) più volte, un po' come fa Tapclean.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 21 Agosto 2012, 20:31:20
Prova con Byte Games n.5 (non 6)...
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 21 Agosto 2012, 21:33:20
Con freeload-observers.dll, vengono 18 file PRG. Solo 2 sono utilizzabili (e identici tra loro). Degli altri, 9 sono lunghi 193 byte, e contengono il nome del programma e il codice del caricatore turbo, e 7 sono lunghi 178 byte, e contengono la prima parte turbo del gioco vero e proprio. I giochi veri e propri non ci sono. I motivi sono spiegati sopra.

Senza freeload-observers.dll, vengono 32 file PRG. Solo 2 sono utilizzabili (e identici tra loro, e a quelli di prima).Degli altri, 16 sono lunghi 193 byte, e contengono il nome del programma e il codice del caricatore turbo, e 14 sono lunghi 4 byte.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 21 Agosto 2012, 21:40:05
Massi, avevi scritto tempo fa che hai dei TAP contenenti turbo loader C16 che richiedono halfwaves. Li hai ancora?
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 22 Agosto 2012, 20:48:28
Massi, avevi scritto tempo fa che hai dei TAP contenenti turbo loader C16 che richiedono halfwaves. Li hai ancora?
Sì, li avevo caricati un anno fa, su megaupload... ora però te l'ho aggiornato, ne ho aggiunto qualcuno che ho scoperto in seguito, e li ho messi tutti qui:
http://massicadenti.altervista.org/elenco_dump/Esempi%20di%20Turbo%20per%20C16.rar (7,6 MB)
sono 8 tipi di turbo diversi, o singole varianti l'uno dell'altro.
Non tutti necessitano delle halfwaves ma sono tutti i turbo che ho trovato per C16.
La prima cosa da fare è leggere i TXT allegati, a cominciare da quello nella root, perché in alcune cassette i turbo a cui mi riferisco non sono su tutti i titoli, e lì è spiegato meglio.
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: Massi cadenti - 30 Settembre 2012, 20:33:40
Un tapclean (e magari un wav-prg) funzionante anche coi turbo per C16 sarebbe semplicemente perfetto (intendo, più di quanto non lo sia già :D)

PS Visto che uno di quei turbo (quello con la cornice che cambia colore) è possibile dumparlo anche senza halfwaves (se n'era parlato proprio in questo thread) magari questo tapclean potrebbe "correggere" i TAP V1 e convertirli in TAP V2 corretti...
Titolo: Re:Discussione per DUMPARE CASSETTE C16 (nata per la cassetta byte games n6)
Inserito da: fab - 27 Ottobre 2012, 00:44:41
Sì, li avevo caricati un anno fa, su megaupload... ora però te l'ho aggiornato, ne ho aggiunto qualcuno che ho scoperto in seguito, e li ho messi tutti qui:
http://massicadenti.altervista.org/elenco_dump/Esempi%20di%20Turbo%20per%20C16.rar (7,6 MB)
Oggi ho visto l'ultimo, indicato come "8 - Turbo Novaload". Non è Novaload, ma una variante del Turbo Tape 64 che usa onde invertite. Ho scritto un plug-in per WAV-PRG 4.0 che sembra funzionare (ma non è online).