Сообщения без ответов | Активные темы Текущее время: 26 апр 2024, 23:17



Ответить на тему  [ Сообщений: 411 ]  На страницу Пред.  1 ... 12, 13, 14, 15, 16, 17, 18 ... 21  След.
 Очень низкоуровневый эмулятор 6502 / NES 
Автор Сообщение
Сообщение 16 окт 2013, 08:54
org писал(а):
мне казалось что восстановлением интерлейса занимается телеприемник

Можно попробовать самому "склеить", но это лишняя трата ресурсов. У нас же монитор, а не телевизор. Логика PPU просто вырабатывает максимально совместимый сигнал. Телевизор, тоже не на весь экран картинку растягивает и видно, что она меньше. В детстве даже пытался посчитать, сколько символов по горизонтали (был у меня ZX Spectrum, сравнивал).

Однозначно нужны все 50 полукадров, а при 25 анимация не плавная. (Заметил, что на разных по мощности компьютерах разное число глюков в кадрах, наверное, на менее мощном не все кадры отображаются.)
Еще одна деталь, которая поставила меня в тупик. Эмуляцию некоторых инструкция CPU делал ассемблерным кодом и потом считывал состояние флагов реального процессора и сохранял в эмулятор. На разных процессорах игры вели себя по разному: в T2 не запускалась заставка с буквами, а вылезала титульная картинка, но на другом было все нормально. Потом я вычитал, что есть какая-то проблема с флагом переполнения и его не используют программы. Пришлось все команды опять пересчитывать честно.


За отладочные регистры APU спасибо, не посмотрел логику откуда идут линии выбора этих регистров.


Сообщение 16 окт 2013, 10:35
Профиль

Зарегистрирован:
14 ноя 2007, 11:19
Сообщения: 370
Сори что вливаюсь не особо читая, но не понял с Carry проблемы? где? на каком проце?


Сообщение 16 окт 2013, 10:44
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Цитата:
Можно попробовать самому "склеить", но это лишняя трата ресурсов.

Если хотите честной эмуляции, то имитировать телевизор всё таки придется) По крайней мере я планирую делать именно так, потому что на выходе своего PPU буду получать сигнал.

Цитата:
Телевизор, тоже не на весь экран картинку растягивает и видно, что она меньше.

Телевизор вообще делает с сигналом что захочет ) Главное чтобы частота сигнала соответствовала стандарту, а телевизор будет пытаться уместить отрезок сигнала на одну строку.

Ну а дальше оффтоп)


Сообщение 16 окт 2013, 21:59
Восхищаюсь вашим упорством. Очень интересно следить за вашей работой. Спасибо.


Сообщение 18 окт 2013, 09:21
Wind писал(а):
Сори что вливаюсь не особо читая, но не понял с Carry проблемы? где? на каком проце?

Проблема с флагом переполнения а не переноса. Точную информацию найти не смог, по памяти скажу, что флаг процессор не использует, нужно переключать режим. Дальше писать не буду пока не найду источник этой информации.

А все-таки интереснее выглядит картинка не 256 х 240, а 312 х 480 (интерлейс). Но нужно дублировать каждый пиксель в линии, иначе узкая получается.

А со схемой выбора на строку отображаемых спрайтов еще не разбирались? А то на счетчиках и регистрах сдвига проще сделать вывод спрайтов, да и симуляция точнее выйдет.


Сообщение 18 окт 2013, 10:01
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Цитата:
Проблема с флагом переполнения а не переноса.

Переполнение это если при арифметических действиях произошел перенос из 6го в 7й разряд.

Цитата:
А все-таки интереснее выглядит картинка не 256 х 240, а 312 х 480

Почему 312 ?

У PPU 341 точка, но из них "видимых" (пикселей) только 256, остальное это служебные "пиксели", для формирования порции сигнала вертикальной синхронизации и color burst.

Вот развертка NTSC сигнала :
Изображение

Со спрайтами ещё не разбирались, там хитрая схема sprite evaluation.


Сообщение 18 окт 2013, 10:29
Профиль

Зарегистрирован:
14 ноя 2007, 11:19
Сообщения: 370
Так на каком проце-то такие сложности возникают?


Сообщение 19 окт 2013, 18:17
Виноват! Не 312, а 512. 256 пикселей, и каждый 2 раза. И это только, чтоб сохранить пропорцию изображения. Можно взять и 341, но не дублировать все видимые пиксели, а просто дополнить сканлайн до этого значения. Тогда полный кадр будет выглядеть как 341 х 480. Это явно уже, чем 512 х 480 (нарисовал 512 точек, а эмуляция проходит для 341-й)


Сообщение 19 окт 2013, 18:49
Профиль

Зарегистрирован:
19 окт 2013, 18:46
Сообщения: 18
Откуда: Россия, г. Златоуст
Wind писал(а):
Так на каком проце-то такие сложности возникают?

Сложности возникли у меня, когда я пытался использовать флаги реального процессора, на котором выполнялся код эмулятора. Проблемы возникли с эмуляцией флага V процессора NES. Проблема в том, что виртуальный должен складывать и вычитать 8 разрядные числа, при чем без десятичной коррекции, а реальный работает с числами в 32 разряда + знаковые числа + десятичная коррекция. Так, вот и не знаешь, что он выдаст в ответе после сложения или вычитания. Короче не стал мучиться, и пересчитывал этот флаг отдельно. Хотя, я ему "говорил", чтоб складывал только Low части (младшие 8 бит) регистров. :blink:

Если, это что-то даст, то все PC были на интеловских процессорах.


Сообщение 19 окт 2013, 18:54
что мешает сложить два signed char ?


Сообщение 19 окт 2013, 19:54
Профиль

Зарегистрирован:
14 ноя 2007, 11:19
Сообщения: 370
Иван, ну вобще-то никаких проблем с флагами нет на x86 процах, просто нужно не забывать что где-то 80% комманд меняют и взводят флаги и в отличии к примеру от ARM запретить взведение флагов никак нельзя.


Сообщение 12 ноя 2013, 18:13
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Накатал большой трактат по симуляции логических схем :

http://wiki.breaknes.com/sim


Сообщение 15 ноя 2013, 01:36
Профиль WWW
Аватара пользователя

Зарегистрирован:
06 апр 2008, 13:46
Сообщения: 119
Увлекательный проект. Пару дней изучал и читал взахлёб информацию по теме. Спасибо за труды :)


Сообщение 04 апр 2014, 05:55
Профиль ICQ
Аватара пользователя

Зарегистрирован:
28 дек 2012, 05:58
Сообщения: 19
Откуда: Курган
Сайт ещё вернётся или усё? (

---

Заработало, спасибо.:)


Сообщение 10 апр 2014, 08:21
Профиль
Аватара пользователя

Зарегистрирован:
10 апр 2014, 07:58
Сообщения: 4
Откуда: оттуда
Бета в природе существует?

_________________
Lord of Folly


Сообщение 10 апр 2014, 14:12
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
всё что сделано лежит на SVN : http://code.google.com/p/breaks


Сообщение 13 апр 2014, 08:40
Профиль
Аватара пользователя

Зарегистрирован:
10 апр 2014, 07:58
Сообщения: 4
Откуда: оттуда
org писал(а):
всё что сделано лежит на SVN : http://code.google.com/p/breaks

Спасибо)

_________________
Lord of Folly


Сообщение 07 июн 2014, 22:03
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Org, ответь на ответ. Как устроен DMA? Дело в том, что есть DMA который загружает спрайты. А есть DPCM, который может использовать DMA. Вопрос в следующем: корка DMA общая или это 2 разных устройства? Ну и останавливается ли корка 6502 на время работы DMA. И касаемо спрайтового DMA: внешний сигнал R/W же общий, стало быть 2 цикла на 1 передаваемый байт, так? Где он храниться при этом внутри чипа?

PS Понимаю, что пора бы уже транзисторную схему разбирать, но я этим займусь несколько позже.

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Сообщение 08 июн 2014, 02:28
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Точно сказать пока не могу, я схему нарисовал, но толком не разбирал. Сейчас с frame counter парюсь)
http://wiki.breaknes.com/apu:lfo
https://code.google.com/p/breaks/source ... U/LFO.circ


Сообщение 21 июн 2014, 08:45
Профиль

Зарегистрирован:
19 окт 2013, 18:46
Сообщения: 18
Откуда: Россия, г. Златоуст
Что происходит с 6502, когда встречается "неверный" код операции? Как его обрабатывает логика, и сколько циклов тратит процессор на обработку? Разные коды будут вызывать разное поведение?


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 411 ]  На страницу Пред.  1 ... 12, 13, 14, 15, 16, 17, 18 ... 21  След.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF (mod by Zeru-j).
Русская поддержка phpBB