Ну и теперь еще и MP3 в WAV для XT 8088. Использовал helix mp3 decoder. Переписал начисто некоторые функции на ассемблере 8088 (в файле assembly.h MULSHIFT32(), MADD64(), SAR64() ). Все "трюки", которые работают для 32-битного проца оказываются бесполезны и даже вредны для 16 битного. Например, есть там примерно такая функция:
short ClipToShort(int32_t x)
{
int16_t sign;
/* Ken's trick: clips to [-32768, 32767] */
sign = x >> 31;
if (sign != (x >> 15))
x = sign ^ ((1ul << 15) - 1);
return (short)x;
}
И сдвиг на 31 вправо 32битного числа со знаком - это боль для 16бит. Нужно сделать примерно так
sar dx,1
rcr ax,1
всего то 31 раз. Можно обернуть в цикл разумеется, что подкинет еще больше тормозов. Ну и потом еще отдельно сдвинуть на 15... Поэтому все эти "трюки" надо выбрасывать и переписывать функцию начисто с учетом 16 бит.
Сорцы чисто на поржать: https://github.com/Tronix286/HELIXMP3
short ClipToShort(int32_t x)
{
int16_t sign;
/* Ken's trick: clips to [-32768, 32767] */
sign = x >> 31;
if (sign != (x >> 15))
x = sign ^ ((1ul << 15) - 1);
return (short)x;
}
И сдвиг на 31 вправо 32битного числа со знаком - это боль для 16бит. Нужно сделать примерно так
sar dx,1
rcr ax,1
всего то 31 раз. Можно обернуть в цикл разумеется, что подкинет еще больше тормозов. Ну и потом еще отдельно сдвинуть на 15... Поэтому все эти "трюки" надо выбрасывать и переписывать функцию начисто с учетом 16 бит.
Сорцы чисто на поржать: https://github.com/Tronix286/HELIXMP3
👍2🤯1
https://youtu.be/3HsqiehKW3s
Запилил базовую поддержку CMS / GameBlaster в порт FastDoom. Синтезатор простенький, без инструментов, без детюнов там всяких, но с поддержкой pitchwheel контроллера на каналах и с вытесняющей очередью нот. Запульнул пул реквест в официальную ветку сорцов FastDoom, посмотрим что автор скажет: https://github.com/viti95/FastDoom/pull/112/files
Запилил базовую поддержку CMS / GameBlaster в порт FastDoom. Синтезатор простенький, без инструментов, без детюнов там всяких, но с поддержкой pitchwheel контроллера на каналах и с вытесняющей очередью нот. Запульнул пул реквест в официальную ветку сорцов FastDoom, посмотрим что автор скажет: https://github.com/viti95/FastDoom/pull/112/files
YouTube
FastDoom with CMS (Game Blaster) music support
First attempt implement CMS/GameBlaster music support in FastDoom.
🥰2👍1
Ни для кого ни секрет, что звуковухи SB16, AWE32, AWE64 частенько страдают от слета содержимого EEPROM. Впрочем, как и SB Live, SB Audigy, но это уже другая история. Так вот, меня запарило каждый раз выпаивать микросхему EEPROM для прошивки на программаторе, поэтому задизасмил тулзу от делла C4502_C1.EXE, выпилил в ней весь C-runtime, и запилил на основе нее прошивальщик и читальщик eeprom для AWE. Качнуть можно где-то здесь: https://www.vogons.org/viewtopic.php?p=1112185#p1112185
👍7🤯1
Электрически всё работает, хард двигает бошками, сообщает свой статус и прочее. Медленно подбираемся к самой сути....
🤩3👍1
Что-то есть, но это не очень похоже на данные. Но след явно прослеживается (c). Надо подрубать лог анализатор, писать парсер сэмплированных данных в формат sigrok и сравнивать что я там сэмплирую. Видимо так...
👍3🤩2
Вроде бы доделал нудную рутину в виде протокола обмена по USB CDC между PiPico и софтом MFM Reader (mfm_read) от David Gesswein, попутно портировав его на MinGW и выпилив от туда все, что его раньше связывало с Beaglebone, и впилив туда мой новый протокол. Работает, читает мои MFM-винты от XT-шек. А вот те винты с барахолки, ради которых собственно всё и затевалось оказались RLL, а это значит, что перед продажей их форматировали для проверки и никакой инфы на них нет. Ну и ладно, пускай будет железка, вдруг когда еще пригодится...
Положил сюда: https://github.com/Tronix286/MFM-Hard-Disk-Dumper
#махарайка
Положил сюда: https://github.com/Tronix286/MFM-Hard-Disk-Dumper
#махарайка
🤩3🔥2
Откатился пока до ~40 кГц, сделал треугольник, компаратор и силовой выход. Ну на выходе конечно не совсем меандр, но начинается все с мультивибратора. Может туда диоды какие поставить надо в коллекторы, чтобы форму сигнала улучшить, но пока хер с ним. Пока остается подмешать аудио-сигнал к треугольнику и скоро бахнем. А, дроссель еще, да.\
👍1😱1
Допаял усилительный каскад, завел обратную связь после дросселя, близиться тот час, когда уже....
👍1😱1
Хехе. А получилось ведь. Усилитель D-класса полностью на германиевых транзисторах. Питание 14В, потребляет 40мА. С таким маленьким динамиком и на полной громкости так же в районе 40мА.
👍2