реклама на сайте
подробности

 
 
> Advanced MicroMachine (часть 3), Портирован эмулятор Nintendo GameBoy
Glucik
сообщение Nov 2 2008, 00:19
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-04-08
Пользователь №: 36 986



Приглашаю посетить ресурс:
http://gamebox.uraldev.ru/forum/viewtopic....=5&p=13#p13

кратко:
на свой девайс (ARM9) портировал эмулятор популярной во всём мире карманной игровой приставки!
Фотки, ссылки на видеоролики там же.
Готов выслушать предложения, вопросы, критику, пожелания.
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 34)
zksystem
сообщение Nov 6 2008, 09:16
Сообщение #2


embedder
***

Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911



Цитата(Glucik @ Nov 2 2008, 03:19) *
Приглашаю посетить ресурс:
http://gamebox.uraldev.ru/forum/viewtopic....=5&p=13#p13

кратко:
на свой девайс (ARM9) портировал эмулятор популярной во всём мире карманной игровой приставки!
Фотки, ссылки на видеоролики там же.
Готов выслушать предложения, вопросы, критику, пожелания.


Эмулятор Z80 и видеоконтроллера с контролем спрайтов и слоев программным способом? МОНСТР smile.gif

Сообщение отредактировал zksystem - Nov 6 2008, 09:18


--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
Go to the top of the page
 
+Quote Post
Glucik
сообщение Nov 7 2008, 05:42
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-04-08
Пользователь №: 36 986



Цитата(zksystem @ Nov 6 2008, 12:16) *
Эмулятор Z80 и видеоконтроллера с контролем спрайтов и слоев программным способом? МОНСТР smile.gif


Ога wink.gif
И ОРТОДОКС вдобавок, млин... Ведь работает всё БЕЗ ОПЕРАЦИОННОЙ СИСТЕМЫ
Напрямую с камешком... wub.gif
Go to the top of the page
 
+Quote Post
afad
сообщение Nov 7 2008, 14:05
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 26-08-04
Пользователь №: 545



Силён! Почти как у китайцев: http://media.mabila.ua/ru/news/new_devices...07/10/7570.html
Go to the top of the page
 
+Quote Post
zksystem
сообщение Nov 7 2008, 14:53
Сообщение #5


embedder
***

Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911



Цитата(Glucik @ Nov 7 2008, 08:42) *
Ога wink.gif
И ОРТОДОКС вдобавок, млин... Ведь работает всё БЕЗ ОПЕРАЦИОННОЙ СИСТЕМЫ
Напрямую с камешком... wub.gif


Gameboy Advance посложнее будет делать smile.gif хотя камень там ARM7,
а вот видеоконтроллер там уже намного серьезнее.


--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
Go to the top of the page
 
+Quote Post
Glucik
сообщение Nov 7 2008, 21:16
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-04-08
Пользователь №: 36 986



Цитата(zksystem @ Nov 7 2008, 17:53) *
Gameboy Advance посложнее будет делать smile.gif хотя камень там ARM7,
а вот видеоконтроллер там уже намного серьезнее.


скорее всего нереально(медленно будет)

какие есть контроллеры в QFP-корпусе на частоты свыше 200 мгц? можно не ARM. Ну и по MIPS естественно выше?
Go to the top of the page
 
+Quote Post
khach
сообщение Nov 7 2008, 23:47
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



А можете поделится кодом эмулятора Z80 на АРМе? И пойдет ли он на 7 армах?
Go to the top of the page
 
+Quote Post
Glucik
сообщение Nov 8 2008, 03:32
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-04-08
Пользователь №: 36 986



Код эмуляции Z80 взят из cingb029. Он чисто на Си.
Не хочу обламывать, но имхо АРМ7 не хватит- у АРМ9 уже близко к пределу. Может потому что на асме не оптимизировано. х.з.

Дубль два по вопросу о быстром контроллере.
Go to the top of the page
 
+Quote Post
khach
сообщение Nov 8 2008, 11:28
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(Glucik @ Nov 8 2008, 06:32) *
Код эмуляции Z80 взят из cingb029. Он чисто на Си.
Не хочу обламывать, но имхо АРМ7 не хватит- у АРМ9 уже близко к пределу. Может потому что на асме не оптимизировано. х.з.

Спасибо, посмотрел эмулятор. Может ,как опытный в эмуляторостроении, подскажете- у меня есть задача модернизировать старинную систему, у которой процессор-z80. Система имеет кучу плат ввода-вывода и еще больше плат с памятью (на анлогах РФ1). Хочется вынуть родной Z80, вместо него вставить мелкую платку на LPC2148 (нужен быстрый интерфейс к компу и отладчик), в нем крутится эмулятор Z80 и в памяти хранится дамп прошивки прибора. Из-за этого внешняя шина освобождается только на операции обращения к портам. Такая система реализуема? Требуется сохранить тайминги как и на реальном Z80.
По поводу быстрого эмулятора. В проекте gngeo есть модуль drz80 - эмулятор Z80 написнный на армовском ассемблере. Пока еще не разбирался с ним, но может инфа пригодиться.
Go to the top of the page
 
+Quote Post
vik0
сообщение Nov 8 2008, 17:12
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 27-07-08
Из: теплые края
Пользователь №: 39 233



Цитата(Glucik @ Nov 7 2008, 23:16) *
какие есть контроллеры в QFP-корпусе на частоты свыше 200 мгц? можно не ARM. Ну и по MIPS естественно выше?

http://www.analog.com/en/embedded-processi...rs/product.html
Go to the top of the page
 
+Quote Post
Glucik
сообщение Nov 8 2008, 23:48
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-04-08
Пользователь №: 36 986



Цитата(afad @ Nov 7 2008, 17:05) *
Силён! Почти как у китайцев: http://media.mabila.ua/ru/news/new_devices...07/10/7570.html


Даа... красиво smile.gif
Я смотрю, что теперь в каждую медиа-игрушку считается правилом хорошего тона ставить эмуль полюбившейся всем игровой приставки.
Полностью поддерживаю сие направление, так как просто БЕССМЫСЛЕННО тратить время на поиск людей, желающих продвигать новорожденную консоль- т.е. писать игры.
Делать это самому в одиночку- чудовищно долго -сам с апреля до сих пор пишу игрушку -написал только 70%.
Медиа-ресурсов она требует значительно, но вот передать весь тот дух геймплея,существующего в приставочных играх, увы-пока полностью не получается.
Получился геймплей, более похожий на геймплей писишного 2д- спейс скролл-шутера.

Цитата(khach @ Nov 8 2008, 14:28) *
Может ,как опытный в эмуляторостроении, подскажете...
По поводу быстрого эмулятора. В проекте gngeo есть модуль drz80 - эмулятор Z80 написнный на армовском ассемблере. Пока еще не разбирался с ним, но может инфа пригодиться.

Ничего подсказать по вашей задаче не могу, так как делать подобного не приходилось. В любом случае стоит попробовать. Главное начать!
У меня никогда в жизни не было нормальной девборды с АРМом,так как считаю крайне неразумным решением выкидывать 25000 за хорошую девборду,ценность которой сомнительна,так как понатыкано куча лишнего и нацелено на применение всяких реал-тайм-ос,только туманящих моск и отталкивающих освоение АРМов.
Возможность собрать на коленках с нужным обвесом, разобраться с процессором- вот наш метод!
Тоесть-обрести чистое сознание, вместо сомнительных туманных знаний 'ни о чём'.
Конечно,линухоедам мои высказывания не понравятся, но я не являюсь фанатом 'ставить ОС в uC'

Что касается асмокода Z80. Не следует забывать,что при таком подходе мы потеряем кроссплатформенность-туго будет при переносе ПО на другое железо.
gameboy97- яркий тому пример. Написан весь на х86 ассемблере.

Именно кроссплатформенность (портабельность) cingb029 позволила ме перенести проект с х86 на АРМ9 и то весьма хлопотно было (но занятно wink.gif

Второй момент. В геймбое не совсем z80!

Ну а за наводку,конечно спасибо!
Go to the top of the page
 
+Quote Post
AVR
сообщение Nov 11 2008, 07:58
Сообщение #12


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Glucik @ Nov 9 2008, 03:48) *
так как понатыкано куча лишнего и нацелено на применение всяких реал-тайм-ос,только туманящих моск и отталкивающих освоение АРМов. Тоесть-обрести чистое сознание, вместо сомнительных туманных знаний 'ни о чём'. Конечно,линухоедам мои высказывания не понравятся, но я не являюсь фанатом 'ставить ОС в uC'
Конечно "нам" не нравятся эти слова. "Мы" не понимаем смысла всего этого мракобесия... Вы используете язык Си - это абстрагирование от железа, использовать крупную ОС - это просто более высокий уровень абстракции. А так же непонятно почему презрение пало даже на относительно простые RTOS, которые зачастую просто планировщики задач и не скрывают "величайших тайн чистого знания о железе". Привет.


--------------------
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 11 2008, 08:10
Сообщение #13


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(khach @ Nov 8 2008, 02:47) *
А можете поделится кодом эмулятора Z80 на АРМе? И пойдет ли он на 7 армах?

У меня старенький SE P800 на 7-м АРМе сделан.
На нем крутится симбиан, а на него в виде приложения навешиваются эмуляторы денди, сеги, синклера и много чего ещё. Работает без проблем.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 11 2008, 08:19
Сообщение #14


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(AVR @ Nov 11 2008, 15:58) *
Конечно "нам" не нравятся эти слова. "Мы" не понимаем смысла всего этого мракобесия... Вы используете язык Си - это абстрагирование от железа, использовать крупную ОС - это просто более высокий уровень абстракции. А так же непонятно почему презрение пало даже на относительно простые RTOS, которые зачастую просто планировщики задач и не скрывают "величайших тайн чистого знания о железе". Привет.

Это уже обсуждалось ранее много раз smile.gif Нет смысла что-либо доказывать и протестовать... пусть каждый останется при своем мнении. Ведь каждый находится на своем месте. И не вина кого-то, что он еще не поднялся чуть выше, чтобы увидеть, что с высоты горизонты родного края оказывается намного больше, чем если на них смотреть снизу smile.gif
Было время и я думал, что на Си для микроконтроллеров пишут только больные люди. Это давно было. Правда мне было интересно, я попробывал Си и остался доволен! Может быть и уважаемому топик-стартеру стоит сделать тоже самое? В противном случае утверждения против общепринятых истин указывают на недостаток знаний. И одно дело, если человек чего-то не знает и заблуждается. Совсем другое дело, когда его пытаются научить, но он продолжает упрямится.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
LordVader
сообщение Nov 11 2008, 09:53
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 18-10-06
Пользователь №: 21 418



Цитата(khach @ Nov 8 2008, 14:28) *
Хочется вынуть родной Z80, вместо него вставить мелкую платку на LPC2148 (нужен быстрый интерфейс к компу и отладчик), в нем крутится эмулятор Z80 и в памяти хранится дамп прошивки прибора. Из-за этого внешняя шина освобождается только на операции обращения к портам. Такая система реализуема? Требуется сохранить тайминги как и на реальном Z80.


Для точных таймингов, а также если жалко тратить быстродействие арма на ногодёржество, можно CPLD поставить на эмуляцию этих таймингов.

Сорцов эмулятора З80 в инете поищите, их есть =)
Go to the top of the page
 
+Quote Post
vik0
сообщение Nov 11 2008, 10:09
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 27-07-08
Из: теплые края
Пользователь №: 39 233



Цитата(LordVader @ Nov 11 2008, 11:53) *
Для точных таймингов, а также если жалко тратить быстродействие арма на ногодёржество, можно CPLD поставить на эмуляцию этих таймингов.

Тогда можно сделать еще шаг вперед и поставить FPGA с soft-core Z80 smile.gif
Go to the top of the page
 
+Quote Post
LordVader
сообщение Nov 11 2008, 10:13
Сообщение #17


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 18-10-06
Пользователь №: 21 418



Цитата(vik0 @ Nov 11 2008, 13:09) *
Тогда можно сделать еще шаг вперед и поставить FPGA с soft-core Z80 smile.gif


Можно. Только среди 5в-толерант девайсов дороговатые ФПГА получатся, а циклон какой-нить придётся обвешивать преобразователями уровней. А кроме того, для арма софт можно на сях переписать, хотя бы частично. =)
Go to the top of the page
 
+Quote Post
khach
сообщение Nov 11 2008, 12:21
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(LordVader @ Nov 11 2008, 12:53) *
Для точных таймингов, а также если жалко тратить быстродействие арма на ногодёржество, можно CPLD поставить на эмуляцию этих таймингов.

Сорцов эмулятора З80 в инете поищите, их есть =)

Так и предполагается- LPC2148 и EPM7128S. Вот только бы кто помог по связке одного с другим и начинкой CPLD. Интерфейс между ними быстрый только SSP возможен, параллельной шины то нет.
Пока как-то с таймингами несростается- неуспеваю пропихать туда- сюда данные и адрес и сигналы управления. Тайминги кстати аппаратно счетчика АРМа считать будут.
Если у кого есть интерес к такому девайсу давайте новую ветку откроем.
Go to the top of the page
 
+Quote Post
LordVader
сообщение Nov 11 2008, 16:17
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 18-10-06
Пользователь №: 21 418



Цитата(khach @ Nov 11 2008, 15:21) *
Так и предполагается- LPC2148 и EPM7128S. Вот только бы кто помог по связке одного с другим и начинкой CPLD. Интерфейс между ними быстрый только SSP возможен, параллельной шины то нет.
Пока как-то с таймингами несростается- неуспеваю пропихать туда- сюда данные и адрес и сигналы управления. Тайминги кстати аппаратно счетчика АРМа считать будут.
Если у кого есть интерес к такому девайсу давайте новую ветку откроем.


А критичен именно быстрый обмен с периферией?
Я бы сделал так: по СПИ (или ССП) посылаю адрес, данные, направление обмена. Как только последние данные отправились, автомат в CPLD начинает процесс эмуляции таймингов Z80. Как обмен кончился, выдаёт прерывание, например, на арм.
Если же критична максимальная скорость, имхо параллельный интерфейс, правда ног CPLD может не хватить =)
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 11 2008, 18:52
Сообщение #20


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Команды z80 контроллер на LPC проэмулирует пожалуй быстрее чем они выполнялись на 8 МГц Z80.
Но шинную активность ARM воспроизвести не сможет. Т.е. при эмуляции он безнадежно отстанет.
И если в оригинальной проге есть зажержки включающие циклы на внешней шине, то здесь будет облом.
Облом вообще будет поскольку сравнять скорость эмулятора и оригинала в проекте cingb нет никаких средств.
Хотя поскольку тики Z80 там считаютcя, то можно было бы наверно по какому либо таймеру на промежутках по 10 мкс прецизионно тормозить эмулятор.


Цитата(khach @ Nov 8 2008, 15:58) *
Спасибо, посмотрел эмулятор. Может ,как опытный в эмуляторостроении, подскажете- у меня есть задача модернизировать старинную систему, у которой процессор-z80. Система имеет кучу плат ввода-вывода и еще больше плат с памятью (на анлогах РФ1). Хочется вынуть родной Z80, вместо него вставить мелкую платку на LPC2148 (нужен быстрый интерфейс к компу и отладчик), в нем крутится эмулятор Z80 и в памяти хранится дамп прошивки прибора. Из-за этого внешняя шина освобождается только на операции обращения к портам. Такая система реализуема? Требуется сохранить тайминги как и на реальном Z80.
По поводу быстрого эмулятора. В проекте gngeo есть модуль drz80 - эмулятор Z80 написнный на армовском ассемблере. Пока еще не разбирался с ним, но может инфа пригодиться.



Проектик да, впечатляет своей, так скажем, прямолинейной простотой.
Портируется на ARM за час максимум. (По крайней мере у меня вышло так)
Надо выкинуть пару DOS-овских функций прямого обращения к портам и еще кое какую лишнюю инициализацию.

А правда в том, что на RTOS его портировать было бы гораздо проще и естественней.
Поскольку этот эмулятор весь базируется на сервисах POSIX файловой системы, то скажем на той же ARTX прект даже не надо вычищать от файловых операций, как это пришлось скорее всего делать в вашем случае.

Что касается LCD, то как видно в эмуляторе там просто делается периодический вывод в некий экранный буфер.
Задача портирования была просто по прерываниям это буфер пересылать на LCD.
Это работы еще на час.
Итого цена портирования - 2 часа.

Ну, спасибо.
Обязательно применю этот проектик как демку в своих платформах.
Остался только вопрос где сами игры достать. Не подскажете?



Цитата(Glucik @ Nov 7 2008, 10:12) *
Ога wink.gif
И ОРТОДОКС вдобавок, млин... Ведь работает всё БЕЗ ОПЕРАЦИОННОЙ СИСТЕМЫ
Напрямую с камешком... wub.gif
Go to the top of the page
 
+Quote Post
Glucik
сообщение Nov 12 2008, 03:57
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-04-08
Пользователь №: 36 986



Цитата(AlexandrY @ Nov 11 2008, 21:52) *
Ну, спасибо.
Обязательно применю этот проектик как демку в своих платформах.
Остался только вопрос где сами игры достать. Не подскажете?


хттп://emu-russia.нет/ru/скачать/ромы/Nintendo-GameBoy-Color/0-Z/
хттп://emu-russia.нет/ru/скачать/ромы/Nintendo-GameBoy/0-Z/

В общем Google рулит wink.gif

Цитата(AlexandrY @ Nov 11 2008, 21:52) *
Что касается LCD, то как видно в эмуляторе там просто делается периодический вывод в некий экранный буфер.
Задача портирования была просто по прерываниям это буфер пересылать на LCD.


Можете, по-подробнее расписать, как вы видите портирование эмулятора cingb. Интересует в частности алгоритм всего эмулятора, а именно по части : 'Z80', железа и экранного буфера.

Интересно услышать другие(не свои) мысли по данной теме!

В gameboy.c есть такой фрагмент:

Код
  /* video update */
  lcdclks-=Z80_TICKS;
  if (LCDC & 0x80) { /* if lcd on */
    if (lcdclks<0) {
      lcdphase++;
      if (lcdphase==3) {
    if ((LY>142)&&(LY<153)) {
      lcdclks=GB_VCLKS[3];lcdphase--;
      hdma_update();
      if ((STAT&3)!=1) { /* v-blank */
        STAT=(STAT&0xFC)|1;vblankoccured=1;
        vblankdelay=GB_VBLANKDELAYCLKS;
      } else {
        if (LY==148) drawscreen();
      }
    } else {


Интересует вот такое условие: if (LY==148) drawscreen();

Тоесть если я прально понял, что как только счетчик координат по Y достиг значения 144 (т.е. весь буфер отрисован), то перекинуть буфер на экран.

Вы же говорите, что можно на прерывание повешать. Вот интересно узнать - как можно?

В самом эмуляторе используется только клавиатурное прерывание и всё. Весь цикл эмуляции в основной программе:
Код
Z80_HALTED=0;
breakpoint=-1;
lastbreakpoint=-1;skipover=0;db_trace=0;
err=0;
while (!err)
{
if (!Z80_HALTED)
{
  err=ExecOpcode();
}
  /* update registers & interrupt processing */
  gameboyspecifics();
}


А синхронизация там достигается ожиданием обратного хода луча по кадру (60Гц), поэтому на быстрых ПК оно будет одинаково работать(если мониторы гонят кадр с 60 Гц, есть и 70 :/ )

На АРМ9 бОльшую часть времени именно съедает эмуляция 'Z80' и железа. Лишь только на втором месте стоИт перерисовка LCD.

Сообщение отредактировал Glucik - Nov 12 2008, 04:00
Go to the top of the page
 
+Quote Post
Glucik
сообщение Nov 12 2008, 06:02
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-04-08
Пользователь №: 36 986



Цитата(AVR @ Nov 11 2008, 10:58) *
Вы используете язык Си - это абстрагирование от железа


Никакое это не абстрагирование. К регистрам на Си обращение довольно прозрачно.

Другое дело, когда кто-то извне пытается навязать планировку задач ИМЕННО ТАК, как не нужно мне, например. И эта бинарная байда съедает тонны ресурсов (памяти в первую очередь).

На примере uCos/II я убедился, что проект громоздкий и неповоротливый. Гораздо проще это порешить программой-одиночкой, делающей именно ТО, ЧТО НУЖНО И НЕ БОЛЕЕ.
Go to the top of the page
 
+Quote Post
AVR
сообщение Nov 12 2008, 08:13
Сообщение #23


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Glucik @ Nov 12 2008, 10:02) *
Никакое это не абстрагирование. К регистрам на Си обращение довольно прозрачно.
Ну например на pic16 если не ошибаюсь используется регистр аккумулятор и всякие системы адресации, в контроллерах avr все иначе, Си позволяет абстрагироваться от этих существенных различий в работе с регистрами... Регистр превращается в обычную переменную... Разве не абстрагирование?..
Цитата
На примере uCos/II я убедился, что проект громоздкий и неповоротливый. Гораздо проще это порешить программой-одиночкой, делающей именно ТО, ЧТО НУЖНО И НЕ БОЛЕЕ.
Ну мне uCos/II тоже не нравится. Согласен, громоздкое и запутанное. Есть разные RTOS... Легкие и простые в применении, не навязывающие какие-то сложности, просто позволяющие написать программу эффективнее и красивее даже, более качественно разделить параллельные задачи чем одиночный цикл...


--------------------
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 12 2008, 21:03
Сообщение #24


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Я сказал про прерывание просто потому чтоб вас не напрягать лишним упоминанием RTOS biggrin.gif

Но по жизни там где стоит drawscreen я посылаю ивент в RTOS и останавливаюсь на семафоре.
Ивент вызывает в другой задаче процесс перекодировки экранного буфера и пересылку DMA непосредственно в LCD.
В этой же задаче проверяется насколько опередил сигнал завершения формирования кадра в симуляторе реальное время для заданной частоты кадров. На разницу времени инициализируется таймер RTOS который потом и снимет семафор на продолжение работы симулятора.
Это позволит добиться прецизионной покадровой синхронизации.

Сделано так потому что, я этот симулятор планирую просто как одну из задач работающих на платформе.
Т.е. при желании смогу запустить несколько симуляторов геймбоев одновременно.
Одновременно экран геймбоя могу отдавать как картинку в вебстранице встроенного сервера любому клиенту через интернет. В идеале на локалке даже позволить играть с этим симулятором через WEB броузер используя видеострим в MPEG4.
Плохо, что мужик там ничего не смог сделать со звуком и ему не удалось портировать свой движок под Windows.
Но я тут думаю доделать это используя известный симулятор на PC для uC/GUI



Цитата(Glucik @ Nov 12 2008, 08:27) *
Можете, по-подробнее расписать, как вы видите портирование эмулятора cingb. Интересует в частности алгоритм всего эмулятора, а именно по части : 'Z80', железа и экранного буфера.

Интересно услышать другие(не свои) мысли по данной теме!


Тоесть если я прально понял, что как только счетчик координат по Y достиг значения 144 (т.е. весь буфер отрисован), то перекинуть буфер на экран.

Вы же говорите, что можно на прерывание повешать. Вот интересно узнать - как можно?


А синхронизация там достигается ожиданием обратного хода луча по кадру (60Гц), поэтому на быстрых ПК оно будет одинаково работать(если мониторы гонят кадр с 60 Гц, есть и 70 :/ )

На АРМ9 бОльшую часть времени именно съедает эмуляция 'Z80' и железа. Лишь только на втором месте стоИт перерисовка LCD.
Go to the top of the page
 
+Quote Post
Glucik
сообщение Nov 13 2008, 02:06
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-04-08
Пользователь №: 36 986



Цитата(AlexandrY @ Nov 13 2008, 00:03) *
Я сказал про прерывание просто потому чтоб вас не напрягать лишним упоминанием RTOS biggrin.gif


Ничего страшного! biggrin.gif
Получилось, что я сам написал некое подобие ОСи. Только не real-time smile.gif

Цитата(AlexandrY @ Nov 13 2008, 00:03) *
Но по жизни там где стоит drawscreen я посылаю ивент в RTOS и...


Спасибо за ответ!

Цитата(AlexandrY @ Nov 13 2008, 00:03) *
Плохо, что мужик там ничего не смог сделать со звуком и ему не удалось портировать свой движок под Windows.
Но я тут думаю доделать это используя известный симулятор на PC для uC/GUI


Звуковой движок брал из gnuboy 1.0.3 - отлично имплантируется в cingb smile.gif

Кроме этого, сохр./восст. машины тоже самому нужно обдумать.
Go to the top of the page
 
+Quote Post
AVR
сообщение Nov 13 2008, 08:33
Сообщение #26


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Glucik @ Nov 13 2008, 05:06) *
Ничего страшного! biggrin.gif Получилось, что я сам написал некое подобие ОСи. Только не real-time smile.gif
А можно было просто взять готовую RTOS, которую разрабатывают и тестируют (а это значит что число фатальных ошибок там будет меньше...) множество других разработчиков... Внести свое в код, поделиться изменениями с другими - и себе и другим польза - просто сказка, никаких велосипедов... Сори...


--------------------
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 13 2008, 14:17
Сообщение #27


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Ну вот, портировал на Windows под движок симулятора uC/GUI в среде Visual Studio 2008

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

Не подкинете ли заведомо рабочую прогу для проекта cingb?

Прект весть выложу когда заработает.

Цитата(Glucik @ Nov 13 2008, 06:36) *
Ничего страшного! biggrin.gif
Получилось, что я сам написал некое подобие ОСи. Только не real-time smile.gif
Спасибо за ответ!
Звуковой движок брал из gnuboy 1.0.3 - отлично имплантируется в cingb smile.gif

Кроме этого, сохр./восст. машины тоже самому нужно обдумать.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 13 2008, 19:21
Сообщение #28


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Отбой! Прочитал таки вашу статью о симуляторах и осознал те же ошибки biggrin.gif
Теперь крутится без тормозов.
Осталось конвертировать экран геймбоя в DIB формат.
Ваш симулятор у меня под XP глючит. Кажется мне, что делать под DirectX было плохой идеей.


Цитата(AlexandrY @ Nov 13 2008, 18:47) *
Ну вот, портировал на Windows под движок симулятора uC/GUI в среде Visual Studio 2008

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

Не подкинете ли заведомо рабочую прогу для проекта cingb?

Прект весть выложу когда заработает.
Go to the top of the page
 
+Quote Post
Glucik
сообщение Nov 14 2008, 02:45
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-04-08
Пользователь №: 36 986



Цитата(AVR @ Nov 13 2008, 11:33) *
А можно было просто взять готовую RTOS, которую разрабатывают и тестируют (а это значит что число фатальных ошибок там будет меньше...) множество других разработчиков... Внести свое в код, поделиться изменениями с другими - и себе и другим польза - просто сказка, никаких велосипедов... Сори...


ОГА!!! biggrin.gif lol.gif
ГНУлюбы токо этого и ждут, чтобы другие за них работу делали, а сами и пальцем не ударят! smile3046.gif

Оказывается, что у 'нас' фатальных ошибок намного больше чем в РТОС. По-мойму вообще безаргументально в данном случае.

Извините, не удержался.


Цитата(AlexandrY @ Nov 13 2008, 22:21) *
Осталось конвертировать экран геймбоя в DIB формат.


Сделал через таблицу цветов. Тоесть цвета GBC 5:5:5 => Display 3:3:2
У афтара cingb вообще трансляция на 64 цвета только (дизеринг неизбежен)
Я расширил до 256 цветов (строго говоря - уже не эмулятор, а улучшайзер biggrin.gif )

Цитата(AlexandrY @ Nov 13 2008, 22:21) *
Ваш симулятор у меня под XP глючит. Кажется мне, что делать под DirectX было плохой идеей.


Он под DOS. Чистый DOS... wub.gif
В AuMAPI rev.8 сказано что не на всякой ХРени пойдёт.

Сообщение отредактировал Glucik - Nov 14 2008, 02:46
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 14 2008, 06:12
Сообщение #30


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Тут согласен.
Показатель уровня - это не юзанье RTOS, а понимание их правильного тактического применения.

Использование неполноценных opensorcе-ных осей может вполне затормозить развитие проектов и внести лишние итерации.
Можно подождать еще годик до публикации симбианки, и сразу бухнуть ее на свою платформу не размениваясь на мелочи.


Цитата(Glucik @ Nov 14 2008, 07:15) *
ОГА!!! biggrin.gif lol.gif
ГНУлюбы токо этого и ждут, чтобы другие за них работу делали, а сами и пальцем не ударят! smile3046.gif

Оказывается, что у 'нас' фатальных ошибок намного больше чем в РТОС. По-мойму вообще безаргументально в данном случае.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 14 2008, 17:03
Сообщение #31


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Ну что, не все так гладко.

Этот симулятор с большой вероятностью не играет ROM-ы в которых используется MBC5
А это, как я понял, большинство выложенных ROM-ов геймбоя.
Есть непонятные проблемы с эмуляцией тайлов и спрайтов.
Геймбоев было сделано куча модификаций, использовались в них ASIC-и с процессорным ядром-гибридом I8080 и Z80. Ясно, что мужик не обладает спецификациями на все варианты железа.
Поэтому к таким эмулятором надо относится со сдержанным оптимизмом.

Вот скриншот моего симулятора



Сделал консольное окно в котором можно делать отладку проги геймбоя: ходить по шагам, видеть все регистры, ставить точки останова и т.д. как было в оригинале.
Симулятор может иммитировать любой LCD дисплей с любой палитрой и кодировкой цвета, если цветов на дисплее меньше чем в геймбое то автоматически производится поиск лучшего соответствия.



Цитата(Glucik @ Nov 14 2008, 07:15) *
ОГА!!! biggrin.gif lol.gif
ГНУлюбы токо этого и ждут, чтобы другие за них работу делали, а сами и пальцем не ударят! smile3046.gif

Оказывается, что у 'нас' фатальных ошибок намного больше чем в РТОС. По-мойму вообще безаргументально в данном случае.

Извините, не удержался.
Сделал через таблицу цветов. Тоесть цвета GBC 5:5:5 => Display 3:3:2
У афтара cingb вообще трансляция на 64 цвета только (дизеринг неизбежен)
Я расширил до 256 цветов (строго говоря - уже не эмулятор, а улучшайзер biggrin.gif )
Он под DOS. Чистый DOS... wub.gif
В AuMAPI rev.8 сказано что не на всякой ХРени пойдёт.
Go to the top of the page
 
+Quote Post
Glucik
сообщение Nov 14 2008, 22:24
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-04-08
Пользователь №: 36 986



AlexandrY, напишите здесь хотя бы три названия ROM'ов, которые у вас не пошли.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 15 2008, 15:32
Сообщение #33


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



10-PIN BOWLVP
DA!DA!DA! TBDO
MIRACLE OF ZONE

Цитата(Glucik @ Nov 15 2008, 02:54) *
AlexandrY, напишите здесь хотя бы три названия ROM'ов, которые у вас не пошли.
Go to the top of the page
 
+Quote Post
Glucik
сообщение Nov 17 2008, 02:48
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-04-08
Пользователь №: 36 986



ну что я хочу сказать...
может оно и будет часть игр не пускать, но... кто хочет - всегда доработает - благо исходники эмулей и доки на геймбой в инете валяются.

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

далее всё зависит от желания и цели.
Go to the top of the page
 
+Quote Post
Glucik
сообщение Dec 1 2008, 09:10
Сообщение #35


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-04-08
Пользователь №: 36 986



Портирован эмулятор NES !!!

Подробнее тут:
http://gamebox.uraldev.ru/forum/viewtopic.php?f=5&t=8

Видео на YouTube:

Battle Toads & Double Dragon:
http://www.youtube.com/watch?v=Rc_d67w5Kyw

Over Horizon:
http://www.youtube.com/watch?v=j9d3nS7ddkw

Mario:
http://www.youtube.com/watch?v=N4xov0NUfj0

Backy o'Hare:
http://www.youtube.com/watch?v=jJY8hijMHxE

Contra:
http://www.youtube.com/watch?v=x966DAFqh68

Для свободного скачивания:

Battle Toads & Double Dragon:
http://slil.ru/26387503

Over Horizon:
http://slil.ru/26387506

Mario:
http://slil.ru/26387509

Backy o'Hare:
http://slil.ru/26387516

Contra:
http://slil.ru/26387522
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 00:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01807 секунд с 7
ELECTRONIX ©2004-2016