Выпустил предварительную, уже рабочую версию PZ_Nes 0.0.7. Ссылка. Только исходный код!
Для запуска требуется последний ZenGL.
Лиценизия: MIT + ZLib.
Распакуйте ZenGL. Рядом расположите проект PZ_Nes. Скомпилируйте (FPC/Lazarus или Delphi).
Если надо, то могу скомпилировать версии для Linux или Windows. Но будет работать только одна игра (всё только для теста, не сделал даже простого выбора игр).
В папке есть несколько игр, которые запускаются. В главном модуле можно сменить игру и перекомпилировать. Многие из игр будут с глюком по графике (решается пока как всё исправить). Ну и без звука.
Управление есть. Есть возможность отладки Nes-приложений (больше просмотра).
Технология PPU собственная. Тестовая. Если у кого-то вдруг возникнет желание воткнуть подобное с свой эмулятор, то пока воздержитесь. Очень многие проблемы не решены. А со всеми остальными эмуляторами данная технология будет несовместима.
Пух. Какая красота :)
Технология PPU собственная. А со всеми остальными эмуляторами данная технология будет несовместима.
Очень хорошо.
Скомпилируйте.
Чем именно ? Какой язык программирования ?
С вами Серж и я устал от ZenGL.
Бывает. Все устают.
Вопрос. Эмулятор каждую инструкцию и каждый раз переводит код Денди в х86 асм код ?
Как итератор.
ronniko
> Чем именно ? Какой язык программирования ?
FPC/Lazarus или Delphi.
ronniko
> Эмулятор каждую инструкцию и каждый раз переводит код Денди в х86 асм код ?
обрабатывает каждую инструкцию, как инструкцию 6505.
Если получится полноценно реализовать данный PPU, то думаю проблем с трансляцией кода не будет и можно будет сделать и транслятор, для исполнения на других архитектурах кода Nes/Dendy/Famicom.
А если вариант, перегнать весь код в х86 асм и потом запускать без эмуляции ?
Типа компилятор или что-то похожее на скриптовый язык.
nes, тебя опять отэмулировали. Долго будешь это терпеть?
aliskda
На самом деле я Дэндя.

ronniko, PPU всё равно реализовывать надо будет. И помимо этого надо будет связать "работу процессора" с PPU.
Если есть PPU который реализован так же как у меня, то думаю сложностей меньше в этом плане. Надо будет просто определённые вызовы передать PPU, а определённые сигналы от PPU эмулировать для такого "процессора" (это тоже одна из форм эмуляции, называется трансляцией).
Но по сути, при трансляции всё равно надо с устройствами ввода/вывода связываться и со звуком.
В общем... трансляция хреновая, всё равно, получится. ))) Проще просто эмулировать посредством ассемблера.
Как вижу основную проблему - это то, что необходимо транслировать 8-и битный код. А для трансляции это вечные проверки чтоб размер не вышел за пределы байта (либо делать всё 8-ми байтными регистрами, что так же плохо для нынешних процессоров).
Выпущена новая версия PZ_Nes. ;)
Извиняюсь, но пока только исходный код. Когда будет всё более-менее работать, буду делать релизы, чтоб можно было сразу потестировать.
Основные изменения:
В общем, кто желает, может попробовать, большая часть игр нулевого маппера должны идти (глюки так же могут быть, PPU ещё далеко не до конца реализован).
Успехов!
nes
> На самом деле я Дэндя.
Нет, nes, на самом деле ты - tes !
Плак, плак... Я надеялся на лучшее...
Тут походу и процессор надо делать лучше и с PPU разбираться. Один поток это всё не тянет.
Правда, на Android это не совсем один поток... видео то на отдельном потоке работает. Может ещё из-за этого проблемы? Надо данные разделить, чтоб одно другого не ждало?
Рассказал про технологию создания PPU. По сути реализация сложнее чем рассказ... Но донести информацию правильно всё равно сложно.
Последние исходники пока не выложены. Там правки нужны для ZenGL, а я пока не хочу из-за мелочи менять версию, надо что-то ещё реализовать (я уже знаю что, но руки не доходят).
Выпущена новая версия -->PZ_Nes 0.10 <--
Теперь она содержит все комментарии в pz_ppu.pas и все комментарии в сопутствующем коде для PPU.
Изменения небольшие:
- улучшен код для PPU.
- ускорен код работы для PPU.
- исправлена работа части инструкций ЦП.
- добавлено обрезание фона и спрайтов в крайней левой позиции (если это надо в игре).
Основная работа производилась именно с PPU и производились тесты работы на Android. На Android код работал не очень хорошо, как выяснилось, проблема была с частым переключением текстур (видимо для мобильных систем это критично).
Если вдруг кто заинтересован технологией создания PPU, то я ещё статью написал. Глядишь проще воспринять информацию будет.
Тема в архиве.