Автор Тема: CoolGirl + старый дендик на "рассыпухе" - фигня получается  (Прочитано 2207 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tronix

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
Недавно собрал CoolGirl от Кластера и дампер на atmega64.

Сначала спаял непосредственно дампер/записыватель, и сразу мне не понравилось, что скорость по которой он общается через виртуальный COM-порт равна всего-лишь 250000 бот. Это реально очень медленно для объемов типа 128 Мб - запись такого картриджа будет идти свыше 3-ех часов. Немного полистав даташит на atmega64 решил, что ничего не мешает увеличить скорость до 1 Мбот (1 000 000 бот), кроме как отсутствие внешнего кварца на 16МГц (по умолчанию atmega64 работает от внутреннего на 8 МГц и PLL в ней нет, чтобы удвоить частоту).

Поэтому засверлил с краю платы дампера где нет дорожек две дыры, вырезал ножем квадраты под контактные площадки для кварца и поставил туда кварц на 16 МГц. Проводочками МГТФ кинул кварц к ножкам atmega64. Получилось колхозно, но мне ехать, а не шашечки:
233099-0233101-1

Конечно, после этого нужно поправить бутлоадер - там просто указываем что скорость CPU стала 16МГц, и саму прошивку дампера. Тут я столкнулся с проблемкой, что на такой скорости UART 1 Мбот начались потери пакетов. Немного прикинув, решил что проблема в том, что Кластер обрабатывает приходящие символы прямо в прерывании, там у него comm_proceed() вызывается, которая очень громадная. Короче, слишком долго сидим в прерывании, видимо не успеваем все обработать до прихода следующего символа, и он теряется.

Поэтому переделал по-быстрому работу с UART на FIFO, вынес обработку всех команд из прерываний, и даже исходящую очередь так же реализовал через FIFO, и прерывание как только появляется очередной символ в очереди на отправку. После этого дампер нормально полетел на скорости COM порта 1 мегабот, без сбоев передачи. А, ну и разумеется пришлось поставить Visual Studio коммунити 2019, чтоб пересобрать сам виндовый клиент со скоростью 1 Мбот, там просто одна константа меняется.

Вот, форкнул проект дампера с внесенными в прошивку и бутлоадер изменениями: https://github.com/Tronix286/famicom-dumper , мало-ли... Но, ваще, конечно надо делать дампер на stm32 без всех этих виртуальных ком-портов и прочих FTDI, будь они трижды кляты. Просто чисто свой дескриптор в stm32, булк трансферы и libusb - залог вменяемой скорости обмена девайс-комп. Что в принципе Кластер и пытается сделать на stm32, но только опять с виртуальным UART'ом. Но, он хотя бы пытается, а мне, диванному эксперту, конечно виднее как ему его дампер делать, ага. Поэтому не критикую, а просто размышляю. И так как плата была для atmega, и что немаловажно - сама atmega64 у меня тоже валялась лет 7 уже просто так без дела - собрал дампер на ней.

Но если с дампером все ясно и понятно как божий день, и к нему нет никаких претензий после небольших допиливаний, и с atmega64 большего, увы, не выжать, то вот непосредственно с самим картриджом у меня чего-то не заладилось.  Точнее как - сначала я пробовал его настраивать и налаживать на старой денди на "рассыпухе", и собрал максимальное кол-во глюков - не запуски игр, зависания, битая графика и тд. А вот попробовав на примерно такой денди "на капле" все заработало идеально:
233105-2

Единственное, была проблема в некоторых играх типа Felix The Cat, когда верхняя часть экрана рисуется снизу, да к тому же еще и задублирована. Решилось заменой конденсатора на линии PPU_A12 с 22пФ на 220пФ, что бы это не значило.

А плата с которой воюю уже третью неделю вот такая:
233103-3

И вот с ней как раз есть проблемы. Некоторые игры по прежнему виснут, например, тот же Felix The Cat, некоторые сидят в бесконечном рестарте, например Чип и Дейл 2, некоторые совсем простенькие работают.

Потыкал немного осликом в катридж и разъем дендика, и мне не понравились какие-то иглы на шине данных CPU у клона на корпусных микросхемах. На "капле" такого нет, все сигналы ровные более-менее, а вот у корпусного - прям иголки, всплески какие-то по шине данных CPU, которые пролазят и через шифтеры в 3.3V часть карика и там такие-же. Наверное CPLD от такого расклада не очень хорошо.
Что интересно, с обычным не флеш катриджем у денди на рассыпухе похожие "иглы" по шине, хотя и не такие мощные, но они есть..
Вместо "КРЕНки" запитал всю плату от мощного DC/DC (2А), ну так, на всякий случай. Как говорицца, здоровое питание всему голова. Ну и дальше чуть-чуть снова потыкал в него овцелографом, мало что понятно, но картинки примерно такие: вот те самые "иглы" или "всплески" на шине данных при вставленном картридже CoolGirl, про которые я выше говорил:
233107-4

А это тоже самое, только с самым обычным старым 5-вольтовым картриджом-каплей (не флеш):
233109-5

Это вот, например, вторая и третья ножка 74LS373. Желтый вход со стороны PPU, красный выход на карик:
233111-6

Припаял все блокировочные кондеры, и 0,1мкф, и 0,01мкф, где место было под них на плате. Разумеется, это не дало абсолютно ничего. А вот замена Goldstar 74LS373 на православную К555ИР22 внезапно дало результат - перестали виснуть игры типа Felix The Cat.

Но, так и не победил постоянный рестарт игры Chip and Dale 2, да хуже того, Super Mario блин запускается и виснет на заставке. Но все-таки понял что влияет на их запуск - как это ни странно, но когда держишь щуп осцыла на сигнале CPU_A4 - все прекрасно запускается и работает, и чип и дейл и марио. Как только щуп отпускаешь - все, зависон или глюк. Только CPU_A4, соседние CPU_A5, A6, A7 и другие сигналы никак не реагируют на щуп. Пробовал притянуть CPU_A4 к питанию, к земле - не помогает. Пробовал поставить кондер 30пф на землю - нет запуска вообще. В общем, очень странная глюка, природа этого явления мне не понятна.

А с денди на китайской капле превосходно все работает и в ус не дует.

Оффлайн quq_CCCP

  • Пользователь
  • Сообщений: 2147
    • Просмотр профиля
Ну наверное наэкономлено на деталях, там конденсаторы стоять должны в цепи 74139, 340 его не ставят, 68 пик на ппу, и много где, кстати китайцы порой ленились собирать тактовый генератор полностью, а лепили полунавесом упрощённый вариант. Стоит все проверить.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7392
    • Просмотр профиля
Но, ваще, конечно надо делать дампер на stm32 без всех этих виртуальных ком-портов и прочих FTDI, будь они трижды кляты.
А чем тебе FTDI насолило то? Если взять FT245 то скорость получается гораздо выше 1Мбод, минимум в 8х раз, но требует 12 ног. И если использовать FT2XXX.DLL на клиентской стороне, то нормально всё быстро и пакетно крутится. Зато никаких проблем с драйверами. Собственно, у vCOM от ST тоже нет проблем с драйверами и, внезапно, он работает не на заявленной скорости, а на максимальной, как FT245. Драйвер игнорирует настройку порта, но посылает команду настройки в устройство. Это нужно для эмуляции переходника USB<>COM с физическим СОМ на обратной стороне, который надо настраивать.
Что в принципе Кластер и пытается сделать на stm32, но только опять с виртуальным UART'ом.
Почему пытается, если уже вот?

Причём, CPLD имитирует циклы шины 6502, так что дампер больше не рушит мапперы из-за сигнала F2. Скорость при этом отличная, дампинг ультрабольших картриджей вроде Кулбой и Кулгёрл вполне комфортный.

Оффлайн Cluster

  • Пользователь
  • Сообщений: 67
    • Twitter
    • ВКонтакте
    • Просмотр профиля
Какая хоть ревизия картриджа собиралась?
По поводу 220 пФ - рисковано, может быть слишком много.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7392
    • Просмотр профиля
Ах да, забыл.
А вот замена Goldstar 74LS373 на православную К555ИР22 внезапно дало результат - перестали виснуть игры типа Felix The Cat.
И зачем шило на мыло менять то? Там надо на HC всё менять. Причём, 368 у тебя уже НС (хотя усилительная нога всё равно откушена, как при использовании LS). Но следует и 139 и 373 заменить на HC. Ибо CPU и PPU КОМП.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7392
    • Просмотр профиля
Какая хоть ревизия картриджа собиралась?
По поводу 220 пФ - рисковано, может быть слишком много.
А надо смотреть в осцилл на ноге, чтобы понять, много или нет.
Решилось заменой конденсатора на линии PPU_A12 с 22пФ на 220пФ, что бы это не значило.
PPU_A12 используется для определения строчного обратного хода. Дело в особенности работы PPU: он кеширует графику 8-ми спрайтов на строку (отсюда и аппаратное ограничение - там всего 8 FIFO, да и времени только на чтение 16 байт, т.е. ровно 8 спрайтов), которую начинает выводить сразу после кеширования. А учитывая, что символьный генератор для спрайтов и для фона разделены сигналом PPU_A12, то получается, что за время рендера строки он всегда строго стабилен, а во время обратного хода делает 8 импульсов. Эти импульсы использует маппер и после фильтрования он может считать строки. Наиболее известный это ММС3.

Оффлайн Tronix

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
Cluster,  Катридж 2.1 версии, старенький. По поводу 220 пФ - ну, на 22пФ не взлетело, вот поставил что было побольше - взлетело на дендике с "каплей".

HardWareMan, Так то да, правильные ты вещи пишешь, про КМОП и HC. Надо попробовать, только микросхем таких нет, надо покупать... Попробую конечно, но китайцы вон собирали из того что было и не  парились, LS так LS, плата в таком виде со всеми древними катриджами на каплях как-то прожила свою долгую и, наверняка, нелегкую жизнь. Это вот с флеш-катриджом у нее не заладилось, а так то оно нормально со всем остальным было.

quq_CCCP, Да, цепочки из резистор-диод-конденсатор на 68пик нет в цепи 74LS139 - /CE SRAM. Оно должно спад сигнала задерживать, типа так как-то:

233117-0

Можно конечно попробовать собрать....
Но самая мистика вот с этим - сигнал CPU_A4 - как только ставлю на него щуп, запускается Super Mario и Chip and Dale 2. Как щуп убираю с CPU_A4 - чип и дейл выводит первые копирайты там блабла лицензед и тд, и потом должен потемнеть экран и бегать луч от прожектора, а экран темнеет и снова эти пара-тройка строк с надписями копирайтов. А супер марио выводит заставку и виснет.

Добавлено позже:
И зачем шило на мыло менять то? Там надо на HC всё менять. Причём, 368 у тебя уже НС (хотя усилительная нога всё равно откушена, как при использовании LS). Но следует и 139 и 373 заменить на HC. Ибо CPU и PPU КОМП.

Кстати, на всем известной китайской схеме Famicom, 139 и 373 указаны как LS, в 368 - HC - точно так же, как собрана и эта плата....
« Последнее редактирование: 22 Январь 2021, 14:34:28 от Tronix »

Оффлайн quq_CCCP

  • Пользователь
  • Сообщений: 2147
    • Просмотр профиля
Cluster,  Катридж 2.1 версии, старенький. По поводу 220 пФ - ну, на 22пФ не взлетело, вот поставил что было побольше - взлетело на дендике с "каплей".

HardWareMan, Так то да, правильные ты вещи пишешь, про КМОП и HC. Надо попробовать, только микросхем таких нет, надо покупать... Попробую конечно, но китайцы вон собирали из того что было и не  парились, LS так LS, плата в таком виде со всеми древними катриджами на каплях как-то прожила свою долгую и, наверняка, нелегкую жизнь. Это вот с флеш-катриджом у нее не заладилось, а так то оно нормально со всем остальным было.

quq_CCCP, Да, цепочки из резистор-диод-конденсатор на 68пик нет в цепи 74LS139 - /CE SRAM. Оно должно спад сигнала задерживать, типа так как-то:

(Ссылка на вложение)

Можно конечно попробовать собрать....
Но самая мистика вот с этим - сигнал CPU_A4 - как только ставлю на него щуп, запускается Super Mario и Chip and Dale 2. Как щуп убираю с CPU_A4 - чип и дейл выводит первые копирайты там блабла лицензед и тд, и потом должен потемнеть экран и бегать луч от прожектора, а экран темнеет и снова эти пара-тройка строк с надписями копирайтов. А супер марио выводит заставку и виснет.

Добавлено позже:
Кстати, на всем известной китайской схеме Famicom, 139 и 373 указаны как LS, в 368 - HC - точно так же, как собрана и эта плата....
Спецом пересмотрел старые платы с таких же хитексов, что мне в руки попадали - там тоже LS стоит логика.
Тут еще писали что меняли оперативку и помогало, то зависали игры, но кажется маловероятным.

Оффлайн Cluster

  • Пользователь
  • Сообщений: 67
    • Twitter
    • ВКонтакте
    • Просмотр профиля
Cluster,  Катридж 2.1 версии, старенький. По поводу 220 пФ - ну, на 22пФ не взлетело, вот поставил что было побольше - взлетело на дендике с "каплей".
В последних ревизиях несовместимость с подобными консолями исправлена установкой резисторов на линии.

Оффлайн Tronix

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
В последних ревизиях несовместимость с подобными консолями исправлена установкой резисторов на линии.

Мистика, но перерезал дорожку на плате CPU_A4 до разъема и в разрыв впаял сопротивление 330 ом. И все полетело - Chip and Dale 2, Super Mario начали запускаться и работать. Продолжаю наблюдения  :lol:

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7392
    • Просмотр профиля
Не мистика, ты просто согласовал линию. Быть может у тебя импенданс дорожки на этой старой плате уже не торт?

Оффлайн GoldenAlex

  • Пользователь
  • Сообщений: 472
  • РЕМОНТ электроники
    • Просмотр профиля

Кстати, на всем известной китайской схеме Famicom, 139 и 373 указаны как LS, в 368 - HC - точно так же, как собрана и эта плата....


у фамиков и LS и HC на платах было написано

Но лучше 74ACT 139 сразу ставить

Оффлайн Ivan_Ages

  • Пользователь
  • Сообщений: 751
  • Пол: Мужской
    • Просмотр профиля
Кластер в последнем видео говорил, что замучался искать исправные детали. Присылают брак. Также всё терялось при записи и глючило на разных приставках по разному.

Оффлайн Skay

  • Пользователь
  • Сообщений: 4113
  • Пол: Мужской
    • Просмотр профиля
Ivan_Ages, но видео ты дальше не смотрел? Он же сказал что нашел у кого более менее все хорошо, только чуть чуть дороже.

Оффлайн Xinit

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
А вы не могли бы запустить GALAXIAN на плате на рассыпухе?
У меня похожая ситуация. Платы один в один. И та что на капле, и та что на рассыпухе. В коллекции много картриджей, так вот на капле
идут все карики, что у меня есть, а на рассыпухе штук пять не работают. Артефакты на экране, виснет меню в многоигровках. Игры могут запускаться, работать, но артефактов при этом куча. И что заметил, GALAXIAN  абсолютно на всех кариках, даже на тех что работают нормально, криво отображается на этой плате, хотя работает. В верхней части экрана, там где счет,  цифры как бы по горизонтали поделены пополам, верхние половины отображаются как положено, т. е . стоят на месте, а нижние половины цифр (счет) плавают влево вправо вместе с кораблями, которые расстреливаешь.



Оффлайн Ivan_Ages

  • Пользователь
  • Сообщений: 751
  • Пол: Мужской
    • Просмотр профиля
А вы не могли бы запустить GALAXIAN на плате на рассыпухе?
У меня похожая ситуация. Платы один в один. И та что на капле, и та что на рассыпухе. В коллекции много картриджей, так вот на капле
идут все карики, что у меня есть, а на рассыпухе штук пять не работают. Артефакты на экране, виснет меню в многоигровках. Игры могут запускаться, работать, но артефактов при этом куча. И что заметил, GALAXIAN  абсолютно на всех кариках, даже на тех что работают нормально, криво отображается на этой плате, хотя работает. В верхней части экрана, там где счет,  цифры как бы по горизонтали поделены пополам, верхние половины отображаются как положено, т. е . стоят на месте, а нижние половины цифр (счет) плавают влево вправо вместе с кораблями, которые расстреливаешь.
Ха. Я так со своей rs40 мучался. Оказалось битый ppu (с неправильным NMI). В теме про rs-40 посмотрите..

Оффлайн GoldenAlex

  • Пользователь
  • Сообщений: 472
  • РЕМОНТ электроники
    • Просмотр профиля
А вы не могли бы запустить GALAXIAN на плате на рассыпухе?
У меня похожая ситуация. Платы один в один. И та что на капле, и та что на рассыпухе. В коллекции много картриджей, так вот на капле
идут все карики, что у меня есть, а на рассыпухе штук пять не работают. Артефакты на экране, виснет меню в многоигровках. Игры могут запускаться, работать, но артефактов при этом куча. И что заметил, GALAXIAN  абсолютно на всех кариках, даже на тех что работают нормально, криво отображается на этой плате, хотя работает. В верхней части экрана, там где счет,  цифры как бы по горизонтали поделены пополам, верхние половины отображаются как положено, т. е . стоят на месте, а нижние половины цифр (счет) плавают влево вправо вместе с кораблями, которые расстреливаешь.

начать надо с замены 139 373 и если не поможет - менять память на более быструю
свой фамик я заставил кушать все подряд

Оффлайн Xinit

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
с галаксиан разобрался, вместо 6528P поставил 6538, заказал на али, пришлось подождать, сдвиг экрана исчез в этой игре.
а вот мусор остался на 5 кариках, которые на денди с каплей идут нормально. И это точно не видео-озу. Выпаял его и 373-ю, вместо LS373 поставил 1533ир22,  те же помехи. ничего не изменилось.
Сейчас заказал ALS139, не оказалось в закромах, а вот памяти шустрее чем была не нашел, жуткие цены. пришлось остановиться на 6116 70нс

Оффлайн GoldenAlex

  • Пользователь
  • Сообщений: 472
  • РЕМОНТ электроники
    • Просмотр профиля
70нс- вполне
даже с соткой должно работать

может разьем катриджа уже не торт

фото мусора есть?

не ALS а ACT надо в идеале

Оффлайн Xinit

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
в общем может и разъем,  хотя я его проверял и остальные 20 картриджей же работают норм.
Поменял и ОЗУ и логику. ничего не изменилось.
картинки вот: