Из интереса (да и пригодится дочкам игры запускать) решил попробовать загрузить амигу с stm32, а то мой эмулятор требует времени на передачу данных в 2 МБ ОЗУ. Взял stm32f103c8t6 - всеми любимую китайскую плату. У него ОЗУ 20 кб, частота 72 МГц. Дорожка 12800 в MFM. Влезает в ОЗУ целиком. На atmega16 с внешним динамическим ОЗУ у меня когда-то не получилось быстро менять дорожки, вдруг получится на stm32? Вместо своего модуля чтения FAT16 взял уже освоенный fatfs. Для вывода дорожки задействовал SPI с DMA. Ну и кубик для разработки для ускорения процесса. Собрал за день. Исправил ошибки платы и наброска программы. Ух ты, Dizzy-6 загрузилась сходу! Пробуем Fast Food. Фигу. Вылетает частая ошибка чтения (такая беда для всех игр, показывающих синий экран DOS при загрузке). Боролся весь сегодняшний день, придумывая хитрые алгоритмы вычитывания блоков. Ускорил SPI у карты до нештатного значения (в 2 раза ускорил, поменяв делитель - до 36 МГц). Замерил время смены дорожки - 425 мс! Ого. Поменял карту памяти с 16 Мб (
![Smile :)](./images/smilies/icon_smile.gif)
) на современную. Ого, 125 мс! А меньше можно? А что там у меня в модуле SD.C, нет ли пауз? Точно, есть миллисекундные задержки. Выкидываем нафиг. Отлично! Всё грузится без ошибок.
![Laughing :lol:](./images/smilies/icon_lol.gif)
Осталось сделать работу с выбором файлов (сейчас я гружу прямо с заданным именем с карты) на валяющемся у меня китайском экранчике от Nokia 5110 (мда, хреновый экранчик, конечно) и можно выпускать в продакшн и делать статью для желающих.
![Smile :)](./images/smilies/icon_smile.gif)
Никаких планок памяти, лишь два буфера К561ПУ4 (3.3->5 и 5<-3.3) или импортного аналога HEF4050, плата с микроконтроллером, экранчик, SD-карта и мелочевка вроде стабилизатора питания. И амига будет грузиться на ура.
![Smile :)](./images/smilies/icon_smile.gif)
![emulator.jpg](./download/file.php?id=1501&sid=d9cd45b2734d53c24480149be6533d71)
- emulator.jpg (62.56 KiB) Просмотров: 6318