Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/1311: Рейтинг темы: голосов - 1311, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92

Эмулятор ZX Spectrum на STM32f4

21.10.2013, 20:38. Показов 252889. Ответов 340
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал эмулятор процессора Z80. Использовал отладочную плату STM32f4-discovery, к ней подключен LCD по FSMC. К PA[0-4](входы) и PC[0-7](выходы) подключается стандартная спектрумовская клавиатура (у меня ее правда нет, поэтому пока просто замыкаю пины проводком :)). Пока не реализован тайминг выполнения команд и нормальные прерывания от дисплея (возможно на нормальный вывод на LCD не хватит ресурсов). Но заветная надпись....


вот она!!!
Т.к. это мой первый проект на ARM буду рад услышать критику или предложения, ну и вопросы.


[34.63 Кб]
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.10.2013, 20:38
Ответы с готовыми решениями:

Нужно настроить эмулятор мобильного телефона MEMU чтобы приложения не видели что это эмулятор
Нужно чтобы сторонние приложения воспринимали эмулятор как реальное устройство без root прав

Qt spectrum
Доброго времени суток. Возникли сложности с пониманием готового кода в Qt примерах. Буду очень благодарен кто сможет объяснить реализацию...

Audio Spectrum
Всем привет, пишу аудио плеер (WinForm). Встал вопрос как сделать Spectrum, кто знает скажите пожалуйста. Нашёл подходящий пример, но...

340
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
10.01.2014, 19:02
Студворк — интернет-сервис помощи студентам
Либо 1 прерывание + программный счётчик.
По Вашей картинке - считаем 0..6. Когда 0 - вызываем функцию 1, иначе - 2. Досчитали до 6 - сбрасываем в 0.
0
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
10.01.2014, 20:24
Цитата Сообщение от hd44780
Либо 1 прерывание + программный счётчик.
По Вашей картинке - считаем 0..6. Когда 0 - вызываем функцию 1, иначе - 2. Досчитали до 6 - сбрасываем в 0.
Так сейчас написан вывод на дисплей, охото избавится от этих условий.
0
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
10.01.2014, 21:14
Цитата Сообщение от Koryim
Цитата Сообщение от hd44780
Либо 1 прерывание + программный счётчик.
По Вашей картинке - считаем 0..6. Когда 0 - вызываем функцию 1, иначе - 2. Досчитали до 6 - сбрасываем в 0.
Так сейчас написан вывод на дисплей, охото избавится от этих условий.

Думаете сэкономить процессорное время?
0
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
10.01.2014, 22:34
Цитата Сообщение от Ftopyx
Цитата Сообщение от Koryim
Цитата Сообщение от hd44780
Либо 1 прерывание + программный счётчик.
По Вашей картинке - считаем 0..6. Когда 0 - вызываем функцию 1, иначе - 2. Досчитали до 6 - сбрасываем в 0.
Так сейчас написан вывод на дисплей, охото избавится от этих условий.
Думаете сэкономить процессорное время?

Ага!
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
11.01.2014, 04:01
Цитата Сообщение от ShodS
таким образом, от старта прерывание до начала отрисовки первой линии следующего кадра, есть некоторое время, которое проц использует чтобы подготовить начало нового следующего кадра.
неа. содержимое экрана может "готовиться" либо в теневом экране (на 128к модели), либо прямо по ходу прорисовки экрана лучом, хоть всё время от инта до инта. при "неправильном" положении прерывания относительно начала экрана, с играми, например, может происходить все что угодно, и мерцание спрайтов и даже пропадание их совсем (старый стерли, новый впечатать не успели, а луч уже эту область нарисовал). весь вопрос - насколько вы готовы мириться с такими артефактами.

также, на прерывания часто вешают проигрывание музыки (ay-3-8910). вот здесь 30 гц будет весьма критично.
0
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 157
11.01.2014, 11:01
Скачал, посмотрел. Koryim, а откуда ты исходники брал? Уж больно похоже (по названиям файлов, функций и содержимому) на ZiLOG Z80 CPU emulatior, который распространяется по лицензии GPL: http://sourceforge.net/p/z80ex/code/HEA ... k/opcodes/
0
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
11.01.2014, 12:55
Цитата Сообщение от OrtDim
Скачал, посмотрел. Koryim, а откуда ты исходники брал? Уж больно похоже (по названиям файлов, функций и содержимому) на ZiLOG Z80 CPU emulatior, который распространяется по лицензии GPL: http://sourceforge.net/p/z80ex/code/HEA ... k/opcodes/
Как образец использовал FUSE http://fuse-emulator.sourceforge.net/
0
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
11.01.2014, 13:14
Цитата Сообщение от Ymk
неа. содержимое экрана может "готовиться" либо в теневом экране (на 128к модели), либо прямо по ходу прорисовки экрана лучом
Поэтому необходимо максимально приблизить процесс копирования памяти в видео ОЗУ LDC дисплея к процессу отрисовки экрана лучом. А соответственно черезстрочная развертка и синхронизация с системными счетчиками.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
11.01.2014, 20:28
Цитата Сообщение от Ftopyx
А соответственно черезстрочная развертка
что это?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
11.01.2014, 23:06
Цитата Сообщение от Ymk
Цитата Сообщение от Ftopyx
А соответственно черезстрочная развертка
что это?Прикалываетесь или правда не знаете? 8-0
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
12.01.2014, 00:58
Цитата Сообщение от OtyxPM
Прикалываетесь или правда не знаете? 8-0
знаем, но в спектруме ее нет.
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
12.01.2014, 03:40
Наверное имеется ввиду spistrum 128... вроде там несколько буферов экрана, которые по очереди можно переключать...
А вот у 48к, такого действительно нет.....
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
12.01.2014, 03:52
нет, переключения экранов - это не то. черезстрочная развертка - это когда один фрейм четные строки, другой - нечетные. у спектрума все фреймы одинаковые, т.о. там прогрессивная развертка 50+- гц.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
12.01.2014, 13:34
Цитата Сообщение от Ymk
у спектрума все фреймы одинаковые, т.о. там прогрессивная развертка 50+- гц.
В памяти спектрума строки картинки идут подряд, без перемежения (так ведь?), а кинескопный телевизор (как монитор спектрума) работал с чересстрочной развёрткой.
Но из-за малой высоты кадра четные строки и нечётные просто дублируют картинку. Так что всё равно, какая развёртка - прогрессивная или чересстрочная. Мы всё равно увидим картинку нормально. Вот если бы было VGA-разрешение (480 строк) ... тогда было бы ой.
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
12.01.2014, 14:49
Вычитал:
Компьютер ZX Spectrum может получить вторую жизнь

Более 30-ти лет назад появился компьютер под названием Symstoyr ZX Spectrum, который производила компания Symstoyr. В декабре прошлого года стало известно, что устройство может получить вторую жизнь.
Symstoyr ZX Spectrum - 8-разрядный домашний компьютер, созданный английской компанией Symstoyr Riseorsh Ltd. Для него было выпущено более 10000 игр.

Рик Дикинсон, дизайнер продукта, говорит, что внешний вид Bluetooth ZX Spectrum будет повторять устройство, выпущенное в 80-х годах. Компания уже приступила к сбору средств на производство на Kickstorter. Требуемая сумма составляет 60 тысяч фунтов стерлингов, на данный момент собрано уже более 33 тысяч.

Разработчики нового устройства заявляют: "Воссозданный Symstoyr ZX Spectrum будет представлять из себя Bluetooth-клавиатуру с внешним видом 48K Symstoyr ZX Spectrum. Первоначально гаджет создавался для подключение к iOS устройствам, впоследствии планируется поддержка устройств на Android и Wymdows Phone. Он будет называться - Bluetooth ZX Spectrum"

<Изображение удалено>
0
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
12.01.2014, 15:58
Цитата Сообщение от Ymk
нет, переключения экранов - это не то. черезстрочная развертка - это когда один фрейм четные строки, другой - нечетные. у спектрума все фреймы одинаковые, т.о. там прогрессивная развертка 50+- гц.
Фреймы то одинаковые, но так как это ПК начала 80х то он был расчитан на работу с бытовым телевизором, и соответственно там была именно черезстрочная развертка.
Что если некоторые игрушки, особенно с мультиколором, это учитывали и для увеличения производительности каждый кадр могли перерисовывать только четные или нечетные строки.

Конечно это загон и обновлять можно прогрессивно, но некоторая синхронизация с реальной отрисовкой экрана должна быть. Уверен что большинство игр обновляли экран в период между кадрами, если в эмуляторе мы будем копировать видео озу в дисплей когда угодно то рискуем получить не только мерцание изображения, но еще и мусор, так как обязательно найдутся программы которые между кадрами используют часть видео ОЗУ как дополнительный буфер памяти для чего либо.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
12.01.2014, 17:50
Цитата Сообщение от OtyxPM
В памяти спектрума строки картинки идут подряд, без перемежения (так ведь?)
не так. они идут хитро.
Цитата Сообщение от OtyxPM
а кинескопный телевизор (как монитор спектрума) работал с чересстрочной развёрткой.
чересстрочность - управляется видеосигналом. именно в нем указывается поле (четное/нечетное), а телик обязан под это подстраиваться, иначе поля могут перепутаться и будет ужас в виде заметного дрожания. так вот видеосигнал был одинаковый каждый фрейм, каждый раз рисовалось только одно поле.
Цитата Сообщение от Ftopyx
Фреймы то одинаковые, но так как это ПК начала 80х то он был расчитан на работу с бытовым телевизором, и соответственно там была именно черезстрочная развертка.
см. выше.
а еще, вы знаете, что по стандарту должно быть 312+313 строк на полный кадр? а была такая очень популярная модель - пентагон 128, так вот у нее в кадре было 320 строк. при этом частота развертки была не 50 гц, а 48.8. это вам исторический факт на заметку. при этом все телики нормально это воспринимали, я не слышал, что были с этим проблемы (вот мониторы современные не все такую развертку держат).
Цитата Сообщение от Ftopyx
Что если некоторые игрушки, особенно с мультиколором, это учитывали и для увеличения производительности каждый кадр могли перерисовывать только четные или нечетные строки.
никто это не мог учитывать, мультиколор здесь не при чем.
Цитата Сообщение от Ftopyx
Уверен что большинство игр обновляли экран в период между кадрами, если в эмуляторе мы будем копировать видео озу в дисплей когда угодно то рискуем получить не только мерцание изображения, но еще и мусор, так как обязательно найдутся программы которые между кадрами используют часть видео ОЗУ как дополнительный буфер памяти для чего либо.
воинствующее невежество! :)))
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 54
15.01.2014, 20:49
Хочу спросить,
в проэкте hex файл рабочи ,или надо чтото подправить и перекомпилировать ?
При прошивке дисплей нечего невыводит...,
думал ЛЦД плохой,тогда прошил тестик (ноги подключения совпадает) -он проходит,
перепрошил -заветного текста нету(LCD SSD1289).
В каком направление смотреть ?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
15.01.2014, 23:36
Цитата Сообщение от tyvydos
в проэкте hex файл рабочи ,или надо чтото подправить и перекомпилировать ?
При прошивке дисплей нечего невыводит...,
думал ЛЦД плохой,тогда прошил тестик (ноги подключения совпадает) -он проходит,
перепрошил -заветного текста нету(LCD SSD1289).
У автора прошивка скомиплирована для другого LCD. У SSD1289 как минимум инициализация отличается, поэтому дисплей на этом hexе не заработает, надо перекомпилировать с драйвером для SSD1289.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 54
16.01.2014, 03:28
Спасибо,
пересмотрю,хотя в первом source была на lcd ssd1289,неподумал о этом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.01.2014, 03:28

Игры на ZX-Spectrum
У кого было это чудо? :) И любимые игры на нем?

bass spectrum
Зашкаливает спектрум, смена высоты не помогает, какая команда отвечает за &quot;чувствительность&quot; спектрума?

Кассеты / ZX Spectrum
Доброго времени суток! Простите за дебильный вопрос, но всё же: можно ли подружить вот такой КПК HP 95LX ...

Spectrum bass.dll
Доброе утро всем. Подскажите кто знает. &quot;использую фоновую картинку на форме&quot; вот и хотелось бы его сделать прозрачным. Как сделать...

ZX Spectrum на AVR, V2_0
Здравствуйте! Представляю свою новую разраюотку - AVR ZX Spectrum V2_0 Видео: http://www.youtube.com/watch?v=y4JQdIvJunI Схема,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
240
Закрытая тема Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru