Autore Topic: Aiuto per wave di Game 2000 n°25  (Letto 4533 volte)

arkanoid3000

  • V.I.P. di Edicolac64
  • Utente di edicolac64.com
  • ***
  • Post: 1130
  • Lo Spaccamuri Dotato di Racchetta e Pallina
Aiuto per wave di Game 2000 n°25
« il: 25 Dicembre 2008, 22:59:00 »
Fin'ora non sono riuscito a convertire questo wave che mi fu recapitato un mesetto fa per ben due volte e ora non so piu che devo fare, non mi resta che pubblicarlo qui in attesa che qualcuno sia piu bravo di me.

http://www.megaupload.com/?d=HE3QBNF9

strongboy

  • Visitatore
Re: Aiuto per wave di Game 2000 n°25
« Risposta #1 il: 26 Dicembre 2008, 00:04:13 »
uhm . . . la trovo molto dura . . . l' ho scaricato, ma non cavo un ragno dal buco . . .

Provo a vedere se ce l'ho nella mia scorta . . . .

arkanoid3000

  • V.I.P. di Edicolac64
  • Utente di edicolac64.com
  • ***
  • Post: 1130
  • Lo Spaccamuri Dotato di Racchetta e Pallina
Re: Aiuto per wave di Game 2000 n°25
« Risposta #2 il: 26 Dicembre 2008, 00:15:19 »
Il primo gioco l'ho tirato fuori con Audiotap, il problema resta per gli altri 7...

fab

  • Visitatore
Re: Aiuto per wave di Game 2000 n°25
« Risposta #3 il: 26 Dicembre 2008, 23:43:15 »
Approfittando delle vacanze, ho dato un'altra occhiata alla seconda registrazione (la prima è inutilizzabile).

Purtroppo il volume si abbassa a tratti, richiedendo un grosso e paziente lavoro di ritocco delle onde con Audacity.

Con WAV-PRG a "sensitivity" 99 e senza "inverted waveform", si ottiene un .t64 dove qualcosa funziona ma la maggior parte no. Usando il tasto Advanced, ho identificato una serie di punti da ritoccare con Audacity. Col ritocco, adesso funzionano:
- entrambe le parti di Vendicare
- Rimbalzo
- le prime parti di Duello Barbaro, Mutanti, Spie al Polo, Sopravvissuti e Tarzanino
- Niente da fare per Ora Zero e le seconde parti dei giochi suddetti

Ho creato un TAP con Tapclean, e naturalmente ho il .wav restaurato. Restaurare gli altri giochi è però al di sopra della mia disponibilità di tempo.

arkanoid3000

  • V.I.P. di Edicolac64
  • Utente di edicolac64.com
  • ***
  • Post: 1130
  • Lo Spaccamuri Dotato di Racchetta e Pallina
Re: Aiuto per wave di Game 2000 n°25
« Risposta #4 il: 26 Dicembre 2008, 23:46:44 »
Cioe in pratica avremmo tutti i giochi tranne Ora-Zero?

fab

  • Visitatore
Re: Aiuto per wave di Game 2000 n°25
« Risposta #5 il: 26 Dicembre 2008, 23:58:25 »
Cioe in pratica avremmo tutti i giochi tranne Ora-Zero?
No, solo Vendicare e Rimbalzo. Per i giochi a 2 parti, devono funzionare entrambe

arkanoid3000

  • V.I.P. di Edicolac64
  • Utente di edicolac64.com
  • ***
  • Post: 1130
  • Lo Spaccamuri Dotato di Racchetta e Pallina
Re: Aiuto per wave di Game 2000 n°25
« Risposta #6 il: 27 Dicembre 2008, 00:04:38 »
Spie Al Polo l'ho appena ottenuto, quindi ora siamo al 50%.
Tarzanino ce l'ho in Top 100, provo a dumparlo di li e se il loader coincide con questa cassetta abbiamo anche il quinto gioco; a questo punto resterebbero irrisolti solo Mutanti, Ora-Zero e Sopravvissuti.

arkanoid3000

  • V.I.P. di Edicolac64
  • Utente di edicolac64.com
  • ***
  • Post: 1130
  • Lo Spaccamuri Dotato di Racchetta e Pallina
Re: Aiuto per wave di Game 2000 n°25
« Risposta #7 il: 27 Dicembre 2008, 13:52:53 »
Allora ho appena provato a dumpare Tarzanino dalla Top 100, il loader coincide pero la 1' parte è compromessa perche il nastro è stropicciato.
Ho cmq inviato il .wav della 2' parte a Fab...

arkanoid3000

  • V.I.P. di Edicolac64
  • Utente di edicolac64.com
  • ***
  • Post: 1130
  • Lo Spaccamuri Dotato di Racchetta e Pallina
Re: Aiuto per wave di Game 2000 n°25
« Risposta #8 il: 29 Dicembre 2008, 18:48:12 »
Ho appena richiesto una nuova registrazione di questa cassetta al possessore attuale in modo che possa lavorarci senza troppi ostacoli, con questo qui sopra ho paura che non ci si possa fare niente...

arkanoid3000

  • V.I.P. di Edicolac64
  • Utente di edicolac64.com
  • ***
  • Post: 1130
  • Lo Spaccamuri Dotato di Racchetta e Pallina
Re: Aiuto per wave di Game 2000 n°25
« Risposta #9 il: 11 Gennaio 2009, 21:19:12 »
 :'( Purtroppo sono spiacevole di comunicarvi che questa cassetta è irrecuperabile.
Ho provato di tutto, mi sento molto rammaricato all'idea di non poter fare piu nulla su questa cassetta che è emersa dal passato e poteva essere dumpata a suo tempo.

 :cry2: :cry2: :cry2:


Sono triste!
« Ultima modifica: 11 Gennaio 2009, 21:21:09 da arkanoid3000 »

fab

  • Visitatore
Re: Aiuto per wave di Game 2000 n°25
« Risposta #10 il: 12 Luglio 2009, 22:39:12 »
Tanto per riaprire una vecchia ferita, vi comunico che ho una versione 6/8 (sono non funzionanti solo la seconda parte di Sopravvissuti e Ora-Zero) e l'ho mandata a Bubusan.

Per crearla, ho usato una strategia diversa: non più modificare il WAV ma il TAP (cosa che io stesso sconsigliavo...). Dopo aver creato il TAP dal WAV con Audiotap, e aver fatto un piccolo ritocco a mano per il pilot tone di Tarzanino, ho scritto un programma Python che applica la stessa strategia che usavo manualmente col WAV, solo che, essendo un programma e non un essere umano, non si annoia al 274esimo ritocco.

Codice: [Seleziona]
import io
import struct

inputs = io.open('record.tap','rb')
outputs = io.open('newrecord.tap','wb')

bytesin = inputs.read(16)
inputs.seek(4,1)
outputs.write(bytesin)
bytesout=b'\0\0\0\0'
outputs.write(bytesout)
isthereafollowingbyte=False
blockstopass=[ \
#DUELLO BARBARO
[0x14    , 0x23CB2 , "DUELLO BARBARO" ], \
[0x32152 , 0x3AE97 , "'DUELLO BARBARO"], \
#MUTANTI
[0x9868F , 0xA7688 , "MUTANTI" ], \
[0xADDB0 , 0xB6E92 , "'MUTANTI"], \
#SPIE AL POLO
[0x11468A, 0x1239D5, "SPIE AL POLO" ], \
[0x13373D, 0x13C3E3, "'SPIE AL POLO"], \
#ORA-ZERO
[0x199BDB, 0x1A998A, "ORA-ZERO"], \
#SOPRAVVISSUTI
[0x204292, 0x2139CB, "SOPRAVVISSUTI" ], \
[0x21F8B3, 0x228A28, "'SOPRAVVISSUTI"], \
#TARZANINO
[0x28621F, 0x295477, "TARZANINO" ], \
[0x2A77FF, 0x2B0272, "'TARZANINO"], \
#VENDICARE
[0x30DA6B, 0x31DCD3, "VENDICARE" ], \
[0x3303AB, 0x338E64, "'VENDICARE"], \
#RIMBALZO
[0x396664, 0x3A6050, "RIMBALZO"], \
[0x3ECE28, 0x3FBD4B, "fine"]
]
block=0
while True:
    if inputs.tell()==blockstopass[block][0]:
        thisbyte=inputs.read(blockstopass[block][1]-blockstopass[block][0])
        outputs.write(thisbyte)
        block=block+1
        print('block '+str(block)+' '+blockstopass[block-1][2])
        if block==len(blockstopass):
            break
        continue
    breakingthisbyte=False
    if not isthereafollowingbyte:
        thisbyte=inputs.read(1)
        if len(thisbyte)==0:
            break
        if thisbyte[0]==0x35:
            print('found '+hex(thisbyte[0])+' at '+str(inputs.tell())+' breaking it at '+str(outputs.tell()))
            breakingthisbyte=True
            thisbyte=[0x11]
            nextbyte=[0x24]
    else:
        thisbyte=nextbyte
    if thisbyte[0]==0:
        nextbytes=inputs.read(3)
        outputs.write(thisbyte)
        outputs.write(nextbytes)
        isthereafollowingbyte=False
        continue
    if not breakingthisbyte:
        nextbyte=inputs.read(1)
    isthereafollowingbyte=len(nextbyte)>0
    if isthereafollowingbyte and nextbyte[0]!=0:
        if thisbyte[0]+nextbyte[0] <= 0x25:
            isthereafollowingbyte=False
            newbyte=thisbyte[0]+nextbyte[0]
            newbyte=min(0x20, newbyte)
            thisbyte=[newbyte]
        elif thisbyte[0] <= 0x0f:
            newnextbyte=thisbyte[0]+nextbyte[0]-0x11
            thisbyte=[0x11]
            nextbyte=[newnextbyte]
        elif nextbyte[0]==0x22:
            if thisbyte[0] <= 0x18 or thisbyte[0]==0x2a:
                print('found '+hex(thisbyte[0])+' '+hex(nextbyte[0])+' at '+str(inputs.tell())+' shortening it at '+str(outputs.tell()))
                thisbyte=[thisbyte[0]+nextbyte[0]-0x1d]
                nextbyte=[0x1d]
            else:
                print('found '+hex(thisbyte[0])+' '+hex(nextbyte[0])+' at '+str(inputs.tell())+' keeping it at '+str(outputs.tell()))
        elif thisbyte[0]>=0x38:
            print('found '+hex(thisbyte[0])+' at '+str(inputs.tell())+' splittng it at '+str(outputs.tell()))
            outputs.write([0x11])
            newthisbyte=thisbyte[0]-0x11
            thisbyte=[newthisbyte]
    outputs.write(thisbyte)
outsize=outputs.tell()-20
outputs.seek(16)
bytesout=struct.pack('<L',outsize)
outputs.write(bytesout)

Il programma legge record.tap (creato con Audiotap) e crea newrecord.tap. I byte di inizio e fine di ciascun programma sono hard-coded, quindi il programma non è molto flessibile, però fa il suo dovere.

arkanoid3000

  • V.I.P. di Edicolac64
  • Utente di edicolac64.com
  • ***
  • Post: 1130
  • Lo Spaccamuri Dotato di Racchetta e Pallina
.
« Risposta #11 il: 13 Luglio 2009, 09:21:33 »
Ah grazie, cmq per Ora-Zero e Sopravvissuti ci sto ancora lavorando, rilevate le buone speranze contavo di inviare il dump 8/8 dopo averli riparati...