Вход

Просмотр полной версии : BIN файлы в WAV формат



Raydac
29.12.2013, 20:06
Так как мне потребовалось грузить игры и приложения на реальный девайс, то возникла потребность в утилитке которая BIN файлы (файлы юзаемые эмуляторами БКшки) смогля бы переводить в WAV формат который затем я бы мог передавать по кабелю через магнитофонный вход. Покопавшись в сети, нашел проект http://bk-mg.narod.ru/ штука хорошая, но времена QBasic ушли в средневековье и если есть какой то шанс запустить это под виндой, то в линуксе надо слишком много лишней работы делать, посему я переписал ту утилиту на Python (который распространен гораздо шире чем QBasic) и она стала в какой то мере кросс-платформенной, так как интерпретатор питона есть почти на всем, заодно я расширил некоторый функционал

Итак, утилита BK BIN2WAV

командная строка

bkbin2wav -i <binfile> [-a] [-o <wavfile>] [-n <name>] [-s addr] [-t]

опции

Command line options:
-h Напечатать хелп
-a Расширить итоговый аудиосигнал на весь диапазон, по умолчанию громкость в полдиапазона
-i <file> Задать BIN файл который надо сконвертировать, единственная требуемая опция
-o <file> Задать WAV файл в который записать звук, если не задан то расширение wav будет добавлено к исходнику и положен будет в ту же директорию
-n <name> Задать имя которое будет сохранено в заголовке файла на ленте, помните что лучше не юзать левых символов и максимальная длина 16 символов, если не задать то имя BIN файла (без расширения) будет заюзано в верхнем регистре, повторяю что лучше и не пробовать русские буквы совать
-s <addr> Задать стартовый адрес (в десятичном режиме!) для загрузки файла с ленты, если не задать, то будет использован адрес из BIN файла
-t Использовать удвоенную скорость при чтении, типа Турбо

Утилиту в разных режимах опробовал на реальном устройстве, вроде не показало проблем с расшифровкой полученного звукового файла

Скачать утилиту можно по ссылке https://github.com/raydac/bkbin2wav

iceoflame
30.12.2013, 12:04
http://zx.pk.ru/showthread.php?t=22315

Raydac
30.12.2013, 12:25
http://zx.pk.ru/showthread.php?t=22315
видел, но мне не подходит, я под linux а там утилиты под винду

perestoronin
30.12.2013, 13:10
видел, но мне не подходит, я под linux а там утилиты под винду
Эмуль БК имеет исходники, хотя они очень сильно завязаны на Вин, я всё равно начал их портировать на linux, т.к. эмуль хороший, а Вин я не пользуюсь. О истории успеха, я надеюсь она когда-нибудь да случится, и если никто меня не опередит, я напишу в новостях.

Raydac
30.12.2013, 15:32
Эмуль БК имеет исходники, хотя они очень сильно завязаны на Вин
лучше тогда и переписать на какомнить интерпретируемом языке, яве там или питоне, так как производительности у них хватит что бы и многопроцессорную бкху эмулить, а переносимость страдать не будет

Raydac
30.12.2013, 16:06
без меня :)
компилируемое до самого низлежашего машинного кода греет душу ровно до тех пор пока не находишь нужной проги написанной на низкоуровневом языке для уже несуществующей или недоступной в данной момент платформы и тогда говоришь много теплых слов в адрес автора

Titus
30.12.2013, 16:19
компилируемое до самого низлежашего машинного кода греет душу ровно до тех пор пока не находишь нужной проги написанной на низкоуровневом языке для уже несуществующей или недоступной в данной момент платформы и тогда говоришь много теплых слов в адрес автора

У нас 90% эмулей написаны на компилируемых в машинный код языках.

Raydac
30.12.2013, 16:22
У нас 90% эмулей написаны на компилируемых в машинный код языках.
ну дак плохо, что можно сказать, берешь такой эмуль и гадаешь - "пойдет - не пойдет", даж не всегда есть уверенность что исходники нормально скомпилятся если платформа сильно обновилась, винды и те вон как теперь живут неподолгу, постоянно новые версии и нововведения от микрософта да еще не всегда уже совместимое между собой

Titus
30.12.2013, 16:22
ну дак плохо, что можно сказать, берешь такой эмуль и гадаешь - "пойдет - не пойдет", даж не всегда есть уверенность что исходники нормально скомпилятся если платформа сильно обновилась

Ну, мы ваще-та на ПЦ сидим, тут пц-шный софт идет)

psb
30.12.2013, 17:08
ну дак плохо, что можно сказать, берешь такой эмуль и гадаешь - "пойдет - не пойдет", даж не всегда есть уверенность что исходники нормально скомпилятся если платформа сильно обновилась, винды и те вон как теперь живут неподолгу, постоянно новые версии и нововведения от микрософта да еще не всегда уже совместимое между собой
а че, на питоне не так? ;) примерно так же. разные версии например, 2 и 3, гадай, пойдет на твоей версии или нет. библиотеки тоже качай и гадай, пойдут или нет (они могут обновиться, а могут просто не существовать для твоей архитектуры). куча зависимостей может быть. тоже можно проблем хлебнуть.

ну и вдобавок, имхо, скорости питона не хватит на полноценный эмулятор. тут важнее не тип языка, а наличие исходников и минимум *****кода.

Raydac
30.12.2013, 17:13
ну и вдобавок, имхо, скорости питона не хватит на полноценный эмулятор
питона не хватит, а явы вполне

psb
30.12.2013, 17:30
кстати говоря, на питонах, явах и прочих дотнетах тоже реально заточить эмуль, например, только под вин. так шта..... дело не в языках.

Raydac
30.12.2013, 17:34
кстати говоря, на питонах, явах и прочих дотнетах тоже реально заточить эмуль, например, только под вин. так шта..... дело не в языках.
я уже пробовал, вполне нормально без особых оптимизаций и платформу с 4xZ80 тянет и кроссплатформенно

---------- Post added at 17:34 ---------- Previous post was at 17:32 ----------

что точно надо на кроссплатформенных интерпретируемых языках писать дак это утилиты, а то груды конвертеров в сети лежат, груды всяких тулзов и прочего добра, но 80% наверное уже хрен запустишь и исходников нет

psb
30.12.2013, 17:45
что точно надо на кроссплатформенных интерпретируемых языках писать дак это утилиты, а то груды конвертеров в сети лежат, груды всяких тулзов и прочего добра, но 80% наверное уже хрен запустишь и исходников нет
вот это сто пудов! есть такие планы, но блин слишком уж их много этих планов...

Raydac
30.12.2013, 17:57
кстати рекомендую всем глянуть на оригинальные сырцы проекта на QBasic написанного, яркий показатель что семантический разрыв языка и проекта настолько велик, что просто какой то адъ, иногда труднее понять код чем если бы он в машинных кодах был ))

Titus
30.12.2013, 22:02
я уже пробовал, вполне нормально без особых оптимизаций и платформу с 4xZ80 тянет и кроссплатформенно

Эмуляция эмуляции рознь.
Просто сферический z80, и z80 эмулируемый на уровне растактовки конвейеров, шины и т.д, плюс такая же точная эмуляция чипсета - вовсе не одинаковые задачи.

Woland
31.12.2013, 02:15
Итак, утилита BK BIN2WAV
Продублировал сюда (http://www.forum.pk-fpga.ru/viewtopic.php?f=46&t=5508&p=5914#p5914) со ссылкой на первоисточник, если не возражаете.

Raydac
09.04.2015, 21:45
сделал проект на GitHub с последней версией (https://github.com/raydac/bkbin2wav)
в новой версии пофикшена работа с автоматической именовкой wav файлов и добавлена возможность заюзать физический размер .BIN файла вместо показателя в заголовке

Raydac
05.05.2016, 12:28
сделал нативную версию конвертера для виндов, мака и линукса, доступны на страничке проекта https://github.com/raydac/bkbin2wav/releases

svofski
05.05.2016, 13:42
питона не хватит, а явы вполне

Только JavaScript :) С ним никому не нужно ничего объяснять, не нужно ничего качать и ставить. Клик и поехали.

Raydac
05.05.2016, 13:55
потенциально возможно и на JavaScript, если API для записи из открытой странички в броузере столь развито теперь что можно сохранять нагенереный контент размером в пару другую мегабайт

svofski
05.05.2016, 14:23
Должно быть без проблем. Хотя я скорее говорил про эмулятор, чем про конвертер.

Raydac
05.05.2016, 14:30
ну эмуляторы то дла javascript этап доступный давно, то что может эмулировать x86 рилтаймово, может эмулировать и БК

eddison
05.05.2016, 20:34
Потестил вашу утилиту. Возникла пара вопросов:
1. Частота дискретизации файла на выходе 88 кбит/с. Экспериментировал на игре "Solomon". Это здорово в отношении размера файла - WAV игры вышел весом 1,7 Мб (программа "BK Emulator 3.1" выдала 4,9 Мб, при частоте 400 кбит/с), но не будет ли проблем на звуковоспроизводящей аппаратуре с малой громкостью или плохим звуковым трактом.
2. Продолжительность звукового файла указанной игры в вашей утилите - 2.49 мин, "BK Emulator" создала файл на 1.56 мин. Поскольку занимаемое файлами место в настоящее время непринципиально, может стоит ускорить загрузку, пусть и с увеличением дискретизации. Ждать то долго не охота :)
3. Можно ли для нубов :) сделать версию утилиты с минималистическим графическим интерфейсом, или создать ключ для командной строки конвертирующий, например, автоматически все файлы в текущем каталоге?

Raydac
05.05.2016, 20:47
там есть флаг -t который сделает турбо версию + есть флаг -a который увеличит громкость в финальном файле до разумного предела, утилита была написана на базе найденного древнего qbasic кода и мне надо было просто получить звук что бы загрузить в мою бкшку, вроде как полученная утилита успешно справилась и обычный звук и турбо у меня на бкхе через магнитофонный вход по кабелю от выхода наушников на ноуте нормально загрузился
как в golang делать графический интерфейс я пока не знаю, для конвертирования всего что в каталоге мне кажется проще не утилиту менять, а просто BAT файл написать который будет перебирать файлы и передавать их имена в утилиту

eddison
05.05.2016, 21:07
Отлично! Благодарствую!

Сейчас проверил на игре время загрузки - 1.22 минуты - замечательный результат. Если без проблем грузиться будет, большего и не надо.

Raydac
05.05.2016, 21:18
как будут результаты, так сигнализируй, а то у меня в бкшке всеж стоит модифицированная читалка на 1006м таймере, а стандартная менее чувствительная

eddison
05.05.2016, 21:24
ОК

Raydac
18.05.2016, 10:30
ну как там? на реал нормально залился турбо файл?

eddison
18.05.2016, 18:23
Не было возможности попробовать. Попробую в выходные.

eddison
28.05.2016, 15:25
Все нормально грузится. Благодарю. Как bat-файл для пакетной конвертации сделать ещё напишите, пожалуйста.

Raydac
28.05.2016, 15:48
получается что обработка файлов в одном каталоге будет


@ECHO OFF
setlocal enabledelayedexpansion
for %%f in (*.bin) do (
echo "converting %%f"
bkbin2wav-windows386.exe -a -t -i %%f
)

eddison
07.03.2017, 22:06
Отличную, однако, Raydac программулину написал!

Raydac
08.03.2017, 15:16
сенькс
если что есть версия такой же утилиты и для TAP файлов от ZX эмуляторов (https://github.com/raydac/zxtap-to-wav)

hobot
09.03.2017, 21:16
Raydac, сделал ссылку на релиз и тему с главной мордочки архива ПО для УК-НЦ / ДВК и БК в правом фрейме внизу
http://archive.pdp-11.org.ru/

Raydac
12.11.2025, 23:07
сделал WASM онлайн версию (https://www.igormaznitsa.com/bkbin2wav/index.html), добавил конверсию кириллицы в именах файлов