Да, каким-то образом мне удалось сделать ему "правильный" формат. Он нашёл кучу интересного на моей "рабочей" кассете, включая игру, которую я считал утерянной! Спасибо за программулину.
Недостатки:
1. нужно как-то отвязаться от обязательной конверсии wav в моно-16бит-48кГц. Кроме того, можно использовать второй канал как источник сигнала при восстановлении испорченных данных.
2. нужно предусмотреть сохранение всех данных в отдельных TAP-файлах. Сейчас он мне сложил всё, что нашёл в 3 больших TAPки. Как-то придётся это сейчас распиливать и разбирать.
Спасибо!
Делаешь новую игруху под спектрум или ищешь "новьё"? Загляни сюда zxonline.net. Если хочешь просто поиграть в классику - то сюда viva-games.ru,
ZX Spectrum forever
Вот тебе резалка TAPок на REXX:
Код:/* TAPSplit */ OPTIONS AREXX_SEMANTICS OPTIONS AREXX_BIFS parse arg infile if infile='' then do say 'required argument missing' say 'No file to split' exit end infile=strip(infile,,'"') if ~open(infile,infile,'r') then do say 'No file to split' exit end a=seek(infile,0,'b') outfilenumber=0 loop: length=readch(infile,2) if eof(infile) then exit data=readch(infile,c2d(reverse(length))) outfilenumber=right(outfilenumber+1,3,0) outfile=left(infile,length(infile)-4)'-'outfilenumber'.tap' if ~open(outfile,outfile,'w') then do say 'Error save file' outfile exit end a=charout(outfile,length||data) a=close(outfile) signal loop
Последний раз редактировалось creator; 10.04.2016 в 17:19.
Делаешь новую игруху под спектрум или ищешь "новьё"? Загляни сюда zxonline.net. Если хочешь просто поиграть в классику - то сюда viva-games.ru,
ZX Spectrum forever
Epsilon, на Амиге не заработает, я переделывал её под PC-шный интерпретатор Regina.
Изначальная амижная была такая:
Код:/* TAPSplit */ parse arg infile if infile='?' then do options prompt 'FILE/A: ' parse pull infile end if infile='' then do say 'required argument missing' say 'No file to split' exit end infile=strip(infile,,' "') if ~open(infile,infile,'r') then do say 'No file to split' exit end filelength=seek(infile,0,'e') seek(infile,0,'b') outfile=0 loop: blocklength=c2d(reverse(readch(infile,2))) string=readch(infile,blocklength) outfile=right(outfile+1,3,0) open(outfile,outfile'.tap','w') writech(outfile,reverse(d2c(blocklength,2))||string) close(outfile) if seek(infile,0)=filelength then exit signal loop
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)