Очень низкоуровневый эмулятор 6502 / NES
Автор |
Сообщение |
01 ноя 2012, 09:07 |
|
Зарегистрирован: 24 июл 2007, 06:54 Сообщения: 492 Откуда: Embedded
|
EvGS писал(а): Для RGB-варианта надо RP2C03 где-то искать и вскрывать. Данный чип добывается с ПлейЧойса10. А ниче, что у него отличается пол литра от NESовской? Это документировано. org писал(а): На самом деле нет ) Небольшие изменения в видеотракте и можно на выходе RGB получать (выкинуть DAC и генератор фаз, добавить еще один PLA для преобразования хромы/люмы в фиксированный RGB) Именно. Пол литру, при этом, подбирать уже свою, как это делают на несдеве. Максимально близкую к оригиналу. org писал(а): С логической схемой посложнее, я ещё такого не делал) Я сразу в Си-код перевожу работу всех блоков, думаю конвертировать потом в Verilog будет не сложно. Просто я с Verlog не сталкивался ещё. Верилог - моя проблема. А логику работы можно будет проследить и из Ц кода. ![wink ;)](./images/smilies/wink.gif)
_________________ Tried so hard and got so far, but in the end, it doesn't even matter...
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
01 ноя 2012, 13:30 |
|
Зарегистрирован: 23 июл 2007, 19:37 Сообщения: 401 Откуда: Мытищи
|
Я сравнивал несколько дней назад на одном телике поллитры у RP2C02 (famicom) и UA6538 (микросхемная денди). Вообще две большие разницы. Может декодеры PAL/NTSC влияют, а скорее всего, и в самих чипах есть отличия в пол-литре.
Надо думать, как нам раздербанить UMC/TA со слоями, обязательно. Там, помимо палитры, нужно посмотреть, как в транзисторной логике формируются тайминги и всякие заглушки на VBLANK. И делитель проца в 6527Р тоже. Можно на коммерческой основе отдекапить. Есть ли новости от Homer'a?
_________________ Nestopia 1.37/1.40 Fixed
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
04 ноя 2012, 21:36 |
|
Зарегистрирован: 24 июл 2007, 06:54 Сообщения: 492 Откуда: Embedded
|
Вообще, правильней даже формировать не RGB. В яркостный сигнал Y вместе с синхрой кодируется 4х уровневая яркость дендика, а 12 фаз поднесущей кодируются в цветоразностные сигналы R-Y/B-Y. Таким образом, наиболее правильным выходом для клона PPU я вижу именно компонент YRpBp.
_________________ Tried so hard and got so far, but in the end, it doesn't even matter...
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
06 ноя 2012, 23:30 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Закончил трассировку PPU: ![Изображение](http://breaknes.com/files/PPU/RP2C02G_nomet_sm.jpg) (картинки кликабельны, полноразмерные фотки примерно по 20 MB каждая) Исходники фотошопа тут : http://breaknes.com/files/PPU/2C02G.zip (260 MB) Также получили снимки травленного чипа от Гомера, сейчас я их сшиваю (комп тупит дико ![:) :)](./images/smilies/smile.gif) +сказываются выходные ![:D :D](./images/smilies/biggrin.gif) ) ![Изображение](http://breaknes.com/files/PPU/stitch_delayer.jpg) Так вышло что наши фотки появились почти одновременно с отслоенными фотками PPU от мембера с Visual6502: http://uxul.org/~noname/visual6502/RP2C ... gned/view/Ну и в плане схем: сейчас работаю над "средним" куском чипа. Из интересного обнаружил там контрольные регистры 2000/2001, мультиплексор (правее я разместил его схему из патента US4824106), регистр 2003 (для доступа к OAM) со схемой инкремента, а также какую-то затейливую схему, на вход которой подаются V-counter и данные спрайтового буфера, похоже на компаратор. Попутно обнаружил много новых линий (которые уже учтены на полоноразмерных схемах выше). ![Изображение](http://breaknes.com/files/PPU/MID_sm.jpg)
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
07 ноя 2012, 11:08 |
|
Зарегистрирован: 23 июл 2007, 19:37 Сообщения: 401 Откуда: Мытищи
|
_________________ Nestopia 1.37/1.40 Fixed
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
07 ноя 2012, 16:54 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Сшил полученные фотографии стравленного PPU: ![Изображение](http://breaknes.com/files/PPU/RP2C02G_delayered_sm.jpg) (полноразмерная фотка 40 MB) не хватает маленького кусочка, но там выше есть такой же участок схемы, так что не важно )
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
07 ноя 2012, 23:24 |
|
Зарегистрирован: 24 июл 2007, 06:54 Сообщения: 492 Откуда: Embedded
|
Пожалуйста, пожалуйста, пожалуйста дублируйте распознанные блоки в логическую схему тоже! Оченама хочется замутить функциональный клон ППУ с компонентным выходом!
_________________ Tried so hard and got so far, but in the end, it doesn't even matter...
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
08 ноя 2012, 09:54 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
HWM, не раньше чем будет готова полная транзисторная схема. Смотри, всего там 5 крупных блоков, 3 из них я практически уже разобрал. Остался массив счетчиков слева внизу (там 8 (или 16) однотипных счетчиков, с ними проблем не будет) и ещё справа-внизу квадратный кусок, я называю его data reader, он занимается выборкой данных PPU (name table, patterns, attribute table)
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
08 ноя 2012, 15:24 |
|
Зарегистрирован: 24 июл 2007, 06:54 Сообщения: 492 Откуда: Embedded
|
Отлично! Родина тебя не забудет!
_________________ Tried so hard and got so far, but in the end, it doesn't even matter...
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
08 ноя 2012, 17:04 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Я выяснил суть куска, который находится в левом нижнем углу : http://code.google.com/p/breaks/wiki/PPU_OAM_FIFOПоражаюсь насколько всё просто и одновременно сложно устроено в PPU )
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
09 ноя 2012, 18:16 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Транзисторная схема OAM FIFO: ![Изображение](http://breaknes.com/files/PPU/OAM_FIFO_sm.jpg) -- 10 ноя 2012, 00:55 -- Принялся за последний кусок PPU: data reader. Расположение на чипе : ![Изображение](http://breaknes.com/files/PPU/DATAREAD_preview.jpg) Эта часть схемы PPU занимается выборкой строки тайла из 8 точек, на основе scroll-регистров, которые задают положение тайла в name table и точного (fine) смещения начальной точки внутри тайла. Результаты (текущая точка тайла) передаются в мультиплексор, для смешивания с текущей точкой спрайта, ну а результаты смешения уже выводятся непосредственно на ТВ (используя палитру и фазогенератор). Я как-нибудь нарисую схемы следственных связей, как выбирается точка тайла, а пока просто первые результаты разбора транзисторной схемы : ![Изображение](http://breaknes.com/files/PPU/DATAREAD_sm.jpg) -- 10 ноя 2012, 01:06 -- Всю писанину теперь можно найти тут : http://breaknes.com/info
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
11 ноя 2012, 02:06 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Закончил работы над data reader-ом (картинки обновил, см. выше). Теперь у меня есть практически вся схема (осталось кое-чего в середине доделать и мультиплексор)!
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
11 ноя 2012, 15:57 |
|
Зарегистрирован: 22 июл 2007, 22:03 Сообщения: 480
|
Когда же будет релиз этого убер эмулятора-убийцы разогнанных хексакоров? ![:) :)](./images/smilies/smile.gif)
_________________ Challenge the Legend / Мой сайт - http://www.u-sm.ru 8700K, 16GB, RTX 3070 Ti
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
11 ноя 2012, 19:51 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Точную дату назвать не могу, ещё много чего нужно сделать. Доделал середину PPU: ![Изображение](http://breaknes.com/files/PPU/MID_sm.jpg) Обнаружил что можно каким-то образом использовать горизонтальную позицию тайла в качестве текущего цвета, вместо смешанного цвета заднего фона/спрайта. Значит можно делать "радужные" картинки (горизонтальные градиенты). -- 11 ноя 2012, 19:11 -- А, как оказалось это просто для доступа к палитре через $3F00...$3F1F ![:) :)](./images/smilies/smile.gif)
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
11 ноя 2012, 20:17 |
|
Зарегистрирован: 24 июл 2007, 06:54 Сообщения: 492 Откуда: Embedded
|
Какие еще адреса пространства ППУ стали известны? Я про кусок между 3000 до 3EFF. И было бы не плохо уже куски в схемку переводить. ![blush :blush:](./images/smilies/blush.gif)
_________________ Tried so hard and got so far, but in the end, it doesn't even matter...
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
11 ноя 2012, 21:41 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Вот как раз адресный декодер я и найти не могу ))) Ещё осталась милипизерная схемка в самом низу чипа, но на декодер она не похожа, где-то в недрах data reader-а находится декодирующая схема.
Там по сути и декодера то не должно быть, т.к. адресный регистр работает наружу. Тут скорее адресный генератор на базе счетчиков и плюс схема проверки, когда адресный регистра настроен на палитру, то активировать эту линию TH/MUX.
Всю схему слеплю уже скоро, но вначале хочу симулировать работу H/V-счетчиков, потому что из них выходит много контрольных линий, которые расползаются по всему чипу и я не могу идентифициорвать их назначения. А без названия этих контрольных линий схема будет не полной.
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
11 ноя 2012, 22:23 |
|
Зарегистрирован: 23 июл 2007, 19:37 Сообщения: 401 Откуда: Мытищи
|
org писал(а): Поэтому я взял и замерил сколько тактов эмуляции в секунду делает ядро Breaks 6502. Результаты конечно весьма печальные: на моем средненьком Intel Dual Core T4500 2 ггц компиляция с помощью lcc выдает примерно 80.000 операций/сек (0.08 MIPS), то есть в 50 раз медленнее чем необходимо ![:( :(](./images/smilies/sad.gif) Поэтому стало интересно какие цифры получатся в новой Express 2012. В 4 часа утра я наконец умудрился скомпилировать проект и результаты следующие : примерно 220.000 оп/сек (0.2 MIPS). Уже лучше, но все равно в 20 раз медленнее. А как насчет intel compiler? Может быть /O2 и /QxO улучшат ситуацию? ![Изображение](http://software.intel.com/sites/default/files/6bygraph-100912sm.png) -- 11 ноя 2012, 22:45 -- Вот, кое-что для справки
_________________ Nestopia 1.37/1.40 Fixed
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
12 ноя 2012, 17:02 |
|
Зарегистрирован: 22 июл 2007, 22:03 Сообщения: 480
|
org писал(а): Точную дату назвать не могу, ещё много чего нужно сделать.
Если в Credits'ы попадут донаторы (или даже их сайты ? ![laugh :laugh:](./images/smilies/laugh.gif) ), я первый в очереди на материальную помощь проекту. Очень интересна мне вся эта задумка ![:) :)](./images/smilies/smile.gif)
_________________ Challenge the Legend / Мой сайт - http://www.u-sm.ru 8700K, 16GB, RTX 3070 Ti
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
13 ноя 2012, 10:56 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
EvGS, вопрос с компилятором пока неактуален, есть более важные вопросы ) Мат. помощь пока не требуется, работаем за еду ээээ идею ![:D :D](./images/smilies/biggrin.gif)
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
14 ноя 2012, 16:40 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Подчистил схемку PPU-рендерера (находится в верхнем левом углу): ![Изображение](http://breaknes.com/files/PPU/RENDER_sm.jpg) В этой схеме находится самая интересная часть, "мозг" PPU : H/V random logic. По сложности он конечно уступает рандомной логике 6502, который сложнее примерно раз в 5. Но тем не менее, логика достаточно сложная, без транзисторной схемы я вообще не представляю как можно разобраться в хитросплетении этих кишочков )) А со схемой все гораздо понятнее. Все блоки идентифицированы, можно приступать к эмуляции чипа. Хотя нет, ещё остается та самая милипизерная схема, в самом низу чипа Бонус: контакт /RES ![Изображение](http://breaknes.com/files/PPU/RES_sm.jpg) В нем находится динамическая защелка (выделена желтым гексагоном), которая устанавливается при возникновении импулься сброса (/RES). Контрольная линия - RC очищает все регистры PPU, пока защелка активна. А специальная линия - REGCL очищает саму защелку. Это происходит в конце каждого кадра, после vblank. Скорее всего это что-то вроде отклика от PPU на сигнал сброса.
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2 |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|