Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   IBM PC-совместимое. До 2000 года включительно »   Реплика Innovation SSI 2001
RSS

Реплика Innovation SSI 2001

Воссоздание участниками форума этой ISA8 карты.

<<Назад  Вперед>> Страницы: 1 2 3 4 5 6 7 * 8 9
Печать
 
uav1606
Advanced Member


Откуда: Енакиево
Всего сообщений: 4373
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 янв. 2008
Может, тогда попробуете через malloc и free? А то насчёт delete я вообще не уверен, под DOS'ом не пользовался. Если что, я сейчас про Turbo С++.
scg
Newbie


Всего сообщений: 108
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
28 фев. 2017
uav1606 написал:
[q]
Может, тогда попробуете через malloc и free?
[/q]
Как это ни странно, помог farmalloc() и только с huge указателем. Причем, превод компилятора в huge режим эффекта не давал. Пришлось менять типы указателей по всему коду. Удалось выделить два буфера для эмулятора процессора и загрузить файл SID. Посмотрим, что будет дальше.
scg
Newbie


Всего сообщений: 108
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
28 фев. 2017
Готов релиз для DOS версии: https://stdio.ru/download/ssi-2001/osp2001-0.1.zip
Поскольку исходники Open Cubic Player распространялись под лицензией GPL2, то я тоже обязан их опубликовать.
Исходный код и последние релизы можно найти здесь: https://stdio.ru/download/ssi-2001/

Было бы неплохо, если бы кто-нибудь проверил минимальную конфигурацию машины, на которой DOS проигрывателя cохранит работоспособность.
По поим ощущениям 20-30МГц должно хватить. Запас производительности можно прикинуть нажатием кнопки 'F' (Fast Forward). В этом случае симуляция не синхронизируется с таймером и идет с максимально возможной скоростью. Также, если запустить программу с ключом /V (verbose), то в строке времени отобразится поле TE (Timer Error). Его значение увеличивается каждый раз, когда прерывание от таймера приходит раньше чем завершится обработка предыдущего - то есть тормозит симуляция.
Fagear
Advanced Member


Откуда: Москва, САО
Всего сообщений: 1228
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 янв. 2010
scg написал:
[q]
Было бы неплохо, если бы кто-нибудь проверил минимальную конфигурацию машины, на которой DOS проигрывателя cохранит работоспособность.
[/q]
Не сочтите за рекламу, но именно этим я сейчас займусь онлайн, вот тут.
Fagear
Advanced Member


Откуда: Москва, САО
Всего сообщений: 1228
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 янв. 2010
scg написал:
[q]
Было бы неплохо, если бы кто-нибудь проверил минимальную конфигурацию машины, на которой DOS проигрывателя cохранит работоспособность.
По поим ощущениям 20-30МГц должно хватить.
[/q]
В общем, получил некоторые результаты.
Версию под win9x проверял вплоть до Pentium (на Socket 5) на частоте 60x1.5=90 МГц. Тянет без проблем, запас ещё большой по скорости.
Версия под DOS дала такие результаты: 386DX-33 хватает с минимальным запасом, 386SX-40 тоже вроде хватает, но запаса практически нет. 286-20 уже явно не хватает, воспроизведение заторможенное.

Сюрпризом же стало то, что оно завелось даже на TurboXT машине! Единственное, была выведена только одна строка (название композиции), а имя автора, копирайт и время не вывелось. Однако воспроизведение пошло! Пусть и ооооочень медленно, но тем не менее.

Однако, при ближайшем сравнении я обнаружил, что этот плеер звучит немного иначе, чем старый вариант под win9x под кодовым именем "ssidpl9x" (он же "ssid_w9x").
Вот один пример.
Кусок на ssid_w9x
Кусок на osp2001-win

На мой слух osp2001 съедает часть звуков, комбинированные звуки "рассыпаются" по времени, в целом звучит немного странно. Возможно, слишком редко отправляет данные в SID?
scg
Newbie


Всего сообщений: 108
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
28 фев. 2017
Fagear написал:
[q]
В общем, получил некоторые результаты.
[/q]
Спасибо, посмотрел запись вашего стрима. Я хоть и знал, что на 286-м он не пойдет, но надеялся до последнего. :)


Fagear написал:
[q]
На мой слух osp2001 съедает часть звуков, комбинированные звуки "рассыпаются" по времени, в целом звучит немного странно. Возможно, слишком редко отправляет данные в SID?
[/q]
По правде говоря, скорость обновления задается в заголовке файла, либо выставляется настройкой Коммодоровского таймера CIA1. И то и другое я учитываю. Тут нужно брать конкретный SID и разбираться.
С другой стороны, есть SID файлы, в которых передача данных на SID идет постоянно, поэтому требуется точная потактовая симуляция процессора 6510. Такие файлы называются RSID (Real SID) и у них специально изменен Magic Dword в заголовке, чтобы отличать их от обычных SID. Кроме Magic'ов эти два вида файлов никак не отличаются. Так вот, ssidpl9x умеет играть такие файлы, а osp2001 - нет (там симуляция процессора более грубая). Человек, который грабил этот SID вполне мог по ошибке указать неверный тип.
Тут, повторюсь, мне нужно где-то взять этот файл и поразбираться - возможно что и у меня баг.
Fagear
Advanced Member


Откуда: Москва, САО
Всего сообщений: 1228
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 янв. 2010
scg написал:
[q]
С другой стороны, есть SID файлы, в которых передача данных на SID идет постоянно, поэтому требуется точная потактовая симуляция процессора 6510. Такие файлы называются RSID (Real SID) и у них специально изменен Magic Dword в заголовке, чтобы отличать их от обычных SID.
[/q]
Увы, я пока в технические детали ни эмуляции, ни формата *.SID не углублялся, но, если что, это был файл Zardax_One.sid. (Joe Barwick (Stainless Steel)).
Более широкого сравнения пока не проводил, потыкал только несколько треков.

Если позволите, есть немного пожеланий с софтине:
1) я пока не разобрался, как переключать несколько композиций внутри одного файла, софтина пишет что их несколько, но кнопок переключения не нашёл;
2) не пробовал пока, но предполагаю, что вряд ли заработает, поддержку файлов "_2SID", они явно ориентированы на воспроизведение на системах, где установлены сразу два чипа SID; ssidpl9x их не воспроизводит (по-моему вообще вылетает); как следствие - хотелось бы видеть ключи для задания I/O адреса для каждого из SID'ов (ну или хотя бы одного, если поддержка 2-х будет сложной или невозможной); P.S. Плагин к foobar2000 умеет воспроизводить такие "двойные" файлы.
3) в виду того, что я не разбирался в деталях эмуляции - я не в курсе... но всё же, есть какая-то возможность отследить, когда мелодия зацикливается? очень много *.SID'ов (которые, очевидно, были в качестве фоновой музыки) зацикливаются и когда пытаешься сделать их запись - сидишь гадаешь в неведении, где же этот стык... было бы отлично иметь либо индикацию "пошло по N кругу" или возможность остановки по факту зацикливания;
4) на какую частоту чипа SID рассчитывает плеер? DuoSID сейчас умеет и частоту C64 PAL, и частоту C64 NTSC, и частоту SSI-2001, и даже HardSID. Если есть возможность, то ключик для частоты тоже неплохо бы видеть;
5) приятно бы заиметь функции, аналогичные ssidpl9x: возможность отключать раздельно каждый "голос" чипа и фильтры; последнее особенно полезно для воспроизведения на "подбитых" чипах;

#зажрался
scg
Newbie


Всего сообщений: 108
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
28 фев. 2017
Fagear написал:
[q]
но, если что, это был файл Zardax_One.sid
[/q]
Скачал, посмотрю, как будет свободное время. У меня, к сожалению, в ближайший месяц перегруз по работе намечается, поэтому скоро не обещаю.


Fagear написал:
[q]
Если позволите, есть немного пожеланий с софтине:
[/q]
1) Инструкция появляется, если запустить программу без параметров или с ключом /?. Не совсем очевидно, поэтому в следующем релизе добавлю usage в Readme.txt
2) Не думаю, что это будет сложно. Сделаю.
3) А вот это действительно проблема. Музыка в формате SID - это на самом деле программа для C64, и по этому невозможно определить ни начала музыки, ни окончания. Я попробую что-нибудь придумать, но вряд ли это получится.
4) Здесь не совсем понял. Частота SID'а обычно указывается в заголовке файла. Проигрыватель ее может учитывать только для эмуляции SID'а, эмуляции процессора (если модель точная) и настройки таймера. Поскольку SID у нас аппаратный то частоту мы можем только вывести на экран (она и выводится, если запустить программу с ключом /V ), а перемычки придется выставлять вручную. Может и можно попробовать скорректировать значения регистров, которые зависят от времени, но там разница в частотах всего около 3.7%, а разрядность регистров не особенно большая. Но, можно подумать.
5) Я хоть и не собирался это делать, но ничего сложного в такой доработке нет. Сделаю.
Fagear
Advanced Member


Откуда: Москва, САО
Всего сообщений: 1228
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 янв. 2010
scg
1) Ага, надо ознакомиться. В общем, стандартный ключ хэлпа для DOS-программ, но я ожидал в readme увидеть мануал.
2) Шикарно, если так.
3) Да, я уже в курсе, что *.SID - это по сути образ программы для всего C64, а не просто музыка.
У меня из мыслей только сохранить при старте воспроизведения адреса, с которых выполняется программа на протяжение, допустим, полусекунды, а потом, во время выполнения программы смотреть - вернулось ли исполнение на те же адреса... Но это чисто предположение от человека, который не видел структуру программ на C64. По хардкору - отмечать вообще все адреса флагом "выполнялось", но на это потребуется откусить ломоть ОЗУ. И когда выполнение попадёт в уже отмеченный адрес - значит зациклились.
Или, может быть, смотреть разницу адресов для выполнении команды перехода, если она слишком велика (предполагаем, что прогармма равномерно "уходит" от стартового адреса со временем), то регистрируем зацикливание.
Причём есть композиции (которые уже отдельно композиции, а не фоновые), которые по завершению мелодии не зацикливают воспроизведение, а замолкают.
4) Насчёт пересчёта или коррекции ясно. Но вывод целевой частоты в любом случае пригодится по-умолчанию. Вообще, чем больше информации будет выводиться из файла - тем лучше.

Заранее спасибо за Ваш труд!

А вообще бродят мысли и создании/адаптации формата чисто для потока команд для чипа SID, чтобы не тратить время на эмуляцию. Т.о. я почти уверен, что совершенно спокойно можно будет воспроизвести все композиции и на IBM XT на штатной частоте, ибо задача слива по таймеру "тонкого" потока команд напрямую в плату видится категорически лёгкой в плане вычислений.
В идеале - всё в составе одной программы. Запустили по-умолчанию *.SID - воспроизводим в реал-тайме эмуляцию на SSI-2001/DuoSID, запустили со спец ключом *.SID - "воспроизводим" эмуляцию на максимальной скорости в файл-дамп нужного формата. Запустили дамп некого формата (*.RSD? Raw SID Dump?..) - воспроизводим этот "лёгкий" дамп-файл в SSI-2001/DuoSID.
scg
Newbie


Всего сообщений: 108
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
28 фев. 2017
За выходные успел сделать поддержку 2SID и, чтобы два раза не вставать, 3SID: https://stdio.ru/download/ssi-2001/osp2001-win-1.0pre1.zip
Порты задаются ключом /p и разделяются двоеточием. Например: /p 0x280:0x2A0 - для 2-x SID'ов и /p 0x280:0x2A0:0x2C0 - для 3-х.
Это пока не релиз, а так, на попробовать, так как не успел доделать выключение каналов и фильтров. Какие-то заготовки я сделал, но потом выяснилось, что каналов может быть до 9-ти, да и фильтров 3 штуки.

По по поводу определения loop'а и частоты чипа по прежнему не знаю, как это сделать. С частотой лучше вообще не заморачиваться, так как на слух она не так цепляет.
К тому же, основная часть музыки написана под PAL, так как музыкой увлекались в основном европейцы. По поводу зацикливания - попробую записать несколько первых секунд трека и потом искать их в потоке. Но ресурсов это будет жрать изрядно, и предчувствую ложные срабатывания. Адрес программы отслеживать бесполезно, так как он там один и тот же: раз 50-60 в секунду вызывается обработчик прерываний.

А вот по поводу неправильно звучащей Zardax_One.sid. Я честно слушал в наушниках первую и вторую запись но так и не уловил каких-либо различий. Эффект невпопад звучащих нот я ловил и там и там :)
Даже щелчки в одном и том же месте. В любом случае, для переделки на два SID'а я изменил механизм записи в регистры чипа, сохранив оригинальных порядок и исключив повторные записи в регистры, которые не трогались. Может теперь звучать лучше будет.
<<Назад  Вперед>> Страницы: 1 2 3 4 5 6 7 * 8 9
Печать
Полигон-2 »   IBM PC-совместимое. До 2000 года включительно »   Реплика Innovation SSI 2001
RSS

1 посетитель просмотрел эту тему за последние 15 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS