Автор Тема: Mega2560 Shield NES Dumper/Writer  (Прочитано 34095 раз)

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

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2349
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #90 : 03 Август 2018, 19:11:18 »
Ну... для меня это как разобраться со схемотехникой телевизора, желая переключить канал :neznayu: Я же матчасти не знаю. Много я там наразбираю. Это должно быть очевидно! Зачем мне с этим разбираться год, если это можно сделать за день специалисту? :neznayu:

Оффлайн KykyPyky

  • Пользователь
  • Сообщений: 516
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #91 : 03 Август 2018, 22:39:42 »
HardWareMan, можно ли в скетч добавить тактирование /CE при чтении wram?
Если в качестве wram используется fram, то ей нужно тактирование, в отличие от sram.

Оффлайн ndivision

  • Пользователь
  • Сообщений: 140
  • Пол: Мужской
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #92 : 03 Август 2018, 23:51:09 »
Приветствую Господа!
Я последний из получивших продукт тут отписываюсь.
Как уже и написал в личку postal2201 - плата пришла в сборе, в отличной упаковке и шикарном качестве.

Из основных интересов - адаптировать софт для работы из под MacOS и под Linux, как минимум для связки с Raspberry Pi.
KykyPyky - Ты написал про Mono, и Linux вообщем - если чего я пару моментов у тебя в личке уточнить смогу?

У меня для тестирования есть фактически все "многоигровки" с Ali. Можно экспериментировать на них.

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2349
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #93 : 04 Август 2018, 06:18:40 »
Решил сдампить ром на 66 маппере. Написал lua:

MapperName = "GROM"
MapperNumber = 66
DefaultPrgSize = 32 * 1024
DefaultChrSize = 32 * 1024

function DumpPrg(size)
print("Reading PRG...")
prg = ReadPrg(0x8000, size)
AddPrg(prg)
end

function DumpChr(size)
if prg == nil then
print("Reading PRG...")
prg = ReadPrg(0x8000, size)
end
local banks = size / 0x2000
for b = 0, banks-1 do
print("Reading CHR bank #" .. tostring(b) .. "...")
for v,i in pairs(prg) do
if i == b then
WriteCpu(0x8000+i, {b})
break
end
end
ReadAddChr(0xC000, 0x2000)
end
end

function EnablePrgRam(size)
end

Ром сдампился (слава богу, и даже запускается). У него 4 * 8 кб графики. 1 и 4 банки с графикой на своих местах, а вот 2 и 3 перепутаны местами. Никак не получается изменить порядок записи банков графики, чтобы 2 и 3 из них местами поменять (ну или порядок чтения). Подскажите как сделать... :neznayu: Что-то у меня не получается...

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #94 : 04 Август 2018, 07:16:06 »
А для чего вот тот второй for то?

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2349
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #95 : 04 Август 2018, 07:35:16 »
Цитата
А для чего вот тот второй for то?
- а я почём знаю? Это копипаст с cnrom.lua с некоторыми изменениями в дампинге chr :lol: Но без него картридж не дампится... Попробую поискать ещё что-то на таком же маппере. Вроде у меня Дораэмон валялся где-то.

Отбой ;о) Прикол получился. Китайцы взяли игру (Jajamaru no Daibouken), поменяли 2 банка графики между собой местами (а там в графике ещё и вкрапления кода есть) и соответственно поменяли и код игры в prg. Поэтому всё сдампилось и работает правильно... Просто такой вот картридж/ром.

П.С. Менять банки местами я научился, хоть и тупо очень...
« Последнее редактирование: 04 Август 2018, 08:00:56 от Guyver(X.B.M.) »

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #96 : 04 Август 2018, 21:14:52 »
Нет, обещает скоро доделать.
Он прямо сейчас это делает. Инфа 1000%.  :cool:

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #97 : 05 Август 2018, 07:08:57 »
Ну, вот, похоже, и всё:

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2349
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #98 : 05 Август 2018, 09:16:16 »
Круто!

Оффлайн Cluster

  • Пользователь
  • Сообщений: 67
    • Twitter
    • ВКонтакте
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #99 : 05 Август 2018, 16:31:10 »
Хардварыч всё спойлерит :)
Надо теперь сборщик ромов для кулбоя довести до ума.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #100 : 05 Август 2018, 16:41:36 »
Cluster, кто? Я? Я держу пацанов в курсе, только и всего!  :blush:

Оффлайн Cluster

  • Пользователь
  • Сообщений: 67
    • Twitter
    • ВКонтакте
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #101 : 05 Август 2018, 17:29:21 »
Закоммитил обновления клиента.

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

Оффлайн KykyPyky

  • Пользователь
  • Сообщений: 516
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #102 : 11 Август 2018, 21:14:18 »
Наткнулся на некоторые мапперы которые полностью не дампятся.
Общее у них одно, они на базе mmc3 и переключение внешних банков через $5FF0, $5FF1, $5FF2
Регистры mmc3 работают хорошо, а вот игры через внешний банк не переключаются, что бы я в них не записывал.
В некоторых меню работает и можно узнать что оно пишет для переключения игр.
                        $5FF0       $5FF1     $5FF2
ROBOCOP 3    128k+128k   $12         $10       $20     JMP($FFFC)
SHOW BROTHER 128k+128k   $12         $18       $30     JMP($FFFC)
TMNT 2       256k+256k   $01         $00       $00     JMP $addr

                        $5FF0       $5FF1     $5FF2
BATMAN       128k+128k   $12         $18       $00     JMP $addr
SPIDERNAN HZ 128k+128k   $12         $00       $10     JMP($FFFC)
TMNT 1       128k+128k   $12         $08       $20     JMP($FFFC)
TMNT 4       128k+128k   $12         $10       $30     JMP($FFFC)

Маппер, предположительно, сильно упрощенный http://wiki.nesdev.com/w/index.php/INES_Mapper_176

Не удается с помощью регистров $5FF0, $5FF1, $5FF2 переключать игры. Пишу туда, а оно не пишется :neznayu:
У кого какие есть идеи?

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2255
  • Пол: Мужской
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #103 : 12 Август 2018, 08:10:31 »
Если речь про многоигровки, то скорее всего виновато отсутствие строба m2. Выше про это уже упоминали . Скорее всего срабатывает сброс этого регистра, либо запись в него осуществляется по низкому уровню m2.
« Последнее редактирование: 12 Август 2018, 08:21:22 от supremacy »

Оффлайн Cluster

  • Пользователь
  • Сообщений: 67
    • Twitter
    • ВКонтакте
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #104 : 12 Август 2018, 10:23:13 »
При записи там делается строб, по крайней мере в моей оригинальной прошивке. Да и многие картриджи с такими регистрами я дампил. Может с таймингами что-то не то?
Ещё может быть, что картридж уходит в ресет.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #105 : 12 Август 2018, 12:25:40 »
Cluster, supremacy имел в виду детектор сброса, который обычно собирается на RCD цепочке. Его действие основано том факте, что ядро 6502 в нормальной работе генерирует стабильную частоту на ноге F2. И пропадание этой частоты определяется как нажатие на сброс (потому что оно реально пропадает, если активен сигнал сброса, точнее вывод уходит в Z). И многоигровки, использующие это как сброс сдампить этим программатором нельзя.

Но самая засада в том, что этот самый F2 управляет состоянием шины. Когда он = 0 шина пассивна, когда он = 1 - активна. Т.е., картридж обязан отключаться, если F2 = 0. Так же, процессор стабилизирует остальные управляющие сигналы именно когда F2 = 0: речь об адресах и сигнале направления данных R/W. И как только F2 = 1 все эти сигналы должны быть стабильны.

В моем дампере стоит STM32F4, вот он на 168МГц ядра успевает подстроиться под F2, который генерируется таймером и полностью соответствует по скважности и частоте сигналу оригинального ядра 6502. И код при этом очень тугой в плане таймингов + отключены прерывания (код проверен на соответствие таймингов логическим анализатором):
А вот AVR, скорее всего, не успеет программно это сделать. Причем, проблема будет острее для режима записи. Хотя, конечно, попробовать можно реализовать. Я подумаю на будущее.

Оффлайн RetHunter

  • Пользователь
  • Сообщений: 242
  • Пол: Мужской
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #106 : 13 Август 2018, 20:45:39 »
Ребята, как продвигается работа с перезаписью кулбоев без пайки?

Онлайн bgr

  • Пользователь
  • Сообщений: 477
    • ВКонтакте
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #107 : 13 Август 2018, 20:56:39 »
RetHunter, уже никак.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #108 : 13 Август 2018, 21:54:21 »
Уже 9 дней как никак.

Оффлайн Cluster

  • Пользователь
  • Сообщений: 67
    • Twitter
    • ВКонтакте
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #109 : 16 Август 2018, 21:25:14 »
Цитата: HardWareMan
В моем дампере стоит STM32F4, вот он на 168МГц ядра успевает подстроиться под F2, который генерируется таймером и полностью соответствует по скважности и частоте сигналу оригинального ядра 6502. И код при этом очень тугой в плане таймингов + отключены прерывания (код проверен на соответствие таймингов логическим анализатором):
А вот AVR, скорее всего, не успеет программно это сделать. Причем, проблема будет острее для режима записи. Хотя, конечно, попробовать можно реализовать. Я подумаю на будущее.
Ты что, на асме под STM32 пишешь?
Вообще я сейчас как раз хочу их осваивать, можно практиковаться и сделать дампер...


Уже 9 дней как никак.
Я сейчас постепенно занимаюсь новым сборщиком ромов для кулбоев, который использует новый функционал. Но это лучше в отдельной теме обсуждать.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #110 : 16 Август 2018, 22:12:29 »
Ты что, на асме под STM32 пишешь?
Вообще я сейчас как раз хочу их осваивать, можно практиковаться и сделать дампер...
Нет, только критичные ко времени кусочки кода. Собственно, ты всегда можешь сам посмотреть, что там и как.
« Последнее редактирование: 16 Август 2018, 22:20:04 от HardWareMan »

Оффлайн RetHunter

  • Пользователь
  • Сообщений: 242
  • Пол: Мужской
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #111 : 19 Август 2018, 23:39:55 »
Я сейчас постепенно занимаюсь новым сборщиком ромов для кулбоев, который использует новый функционал. Но это лучше в отдельной теме обсуждать.
Сборщик ромов - это чудесно. Где можно почитать о нововведениях?
А именно запись кулбоев без пайки както продвинулась?

Оффлайн Cluster

  • Пользователь
  • Сообщений: 67
    • Twitter
    • ВКонтакте
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #112 : 19 Август 2018, 23:58:24 »
Нет, только критичные ко времени кусочки кода. Собственно, ты всегда можешь сам посмотреть, что там и как.
О, я как раз хотел у тебя ссылку на твой проект попросить.

Сборщик ромов - это чудесно. Где можно почитать о нововведениях?
А именно запись кулбоев без пайки както продвинулась?
А что там продвигать? Всё за один вечер сделано было...

А с нововведениями позже отдельную тему создам.
« Последнее редактирование: 20 Август 2018, 06:50:03 от Cluster »

Оффлайн RetHunter

  • Пользователь
  • Сообщений: 242
  • Пол: Мужской
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #113 : 22 Август 2018, 12:33:52 »
Алексей, что у меня не так с прошивкой кулбоя?
Пишет, что не знает команды write-coolboy, при этом write-coolgirl пытается выполнить, test-coolboy - получает информацию.
Вот ошибка:
D:\Dumper NO SOLDERING>famicom-dumper write-coolboy
Famicom Dumper Client v1.0
  (c) Cluster, 2018
  http://clusterrr.com
  clusterrr@clusterrr.com

Searhing for dumper (FTDI device with name "Famicom Dumper/Programmer")...
Number of FTDI devices: 1

Device Index: 0
Flags: 0
Type: FT_DEVICE_232R
ID: 4036001
Location ID: 13
Serial Number: 0018AKQ2
Description: Famicom Dumper/Programmer

PRG reader initialization... OK
CHR reader initialization... OK
Unknown command: write-coolboy

Добавлено позже:
Разлбрался. Надо писать write-coolboy-direct.
Испрвь в описании.
Картридж c BGA флешкой пошёл на запись! :)


Добавлено позже:
Картридж записался.
Нашёл ещё ошибку, пропущена буква "С": Searhing for dumper (FTDI device with name "Famicom Dumper/Programmer")...
« Последнее редактирование: 22 Август 2018, 13:54:42 от RetHunter »

Оффлайн Cluster

  • Пользователь
  • Сообщений: 67
    • Twitter
    • ВКонтакте
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #114 : 25 Август 2018, 15:08:14 »
Это прям две мои беды - не успеваю писать документацию и не перечитываю написанный текст :)
Всё поправлю, наверное сегодня уже зарелизю. Я там ещё сделал поддержку альтернативных кулбоев, с регистрами на $500x (определяются автоматически) и вывод информации информации о flash-памяти (размер, вольтаж и пр.)

А что за кулбой с BGA флешкой? Можно фото? Какие игры там были?

Добавлено позже:
Ещё вопрос: выложен ли проект шилда из этой темы куда-нибудь ещё, например на гитхаб? Я ссылку в описании клиента оставил бы.
« Последнее редактирование: 25 Август 2018, 15:32:49 от Cluster »

Оффлайн postal2201

  • Пользователь
  • Сообщений: 345
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #115 : 25 Август 2018, 16:04:57 »
Cluster, каждый раз как делаю новый проект собираюсь завести себе страницу на github :blush:
Сегодня обязательно заведу и все выложу, схемы, герберы и прочее.

Оффлайн RetHunter

  • Пользователь
  • Сообщений: 242
  • Пол: Мужской
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #116 : 26 Август 2018, 20:00:15 »

А что за кулбой с BGA флешкой? Можно фото? Какие игры там были?


Вот тема, там фото и дамп.
http://www.emu-land.net/forum/index.php/topic,80413.0.html
Там картридж Pocket Game 150в1, с вырезанным стартовым экраном с рекламой.
Спасибо за твою работу!

Оффлайн Cluster

  • Пользователь
  • Сообщений: 67
    • Twitter
    • ВКонтакте
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #117 : 27 Август 2018, 08:16:36 »
А вот первый релиз клиента: https://github.com/ClusterM/famicom-dumper-client/releases :)

Оффлайн KykyPyky

  • Пользователь
  • Сообщений: 516
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #118 : 27 Август 2018, 19:10:17 »
Не удается с помощью регистров $5FF0, $5FF1, $5FF2 переключать игры. Пишу туда, а оно не пишется :neznayu:
Мне удалось сдампить эти карики. Я подпаял к карику m2 с внешнего генератора 1.7мгц, а сигнал с дампера отключил(вставил зубочистку в слот). Считывается все на удивление очень надежно.
До этого пытался прошивкой ардуиной держать m2 все время в высоком или низком состояниии, а изменять состояние в нужное только при записи. Не помогало.
А вот высокая частота помогла.

Второе. Есть оказывается неправильные карики которые этим дампером корректно считать нельзя. У этих кариков либо не распаян контакт PPU /RD, либо распаян но не работает.
О таких кариках я писал уже на форуме и жаловался что они артефачат на ремейках http://www.emu-land.net/forum/index.php/topic,75737.msg1337411.html#msg1337411
Подключение к шине PPU выбирается подачей PPU A13, а PPU /RD не участвует вообще. Причем бывает чтоPPU /RD подключен к капле, даже звонится защитный диод, но к пзу он не подключен.
Т.к. CPU A13 и PPU A13 обьединены, то при считывании адреса с установленным A13 на шину данных подключены обе пзу, получается мусор каждые несколько килобайт.
В следующей версии дампера логичнее было бы не объединять, а завести PPU A13 на отдельный пин.



« Последнее редактирование: 27 Август 2018, 19:20:36 от KykyPyky »

Оффлайн Cluster

  • Пользователь
  • Сообщений: 67
    • Twitter
    • ВКонтакте
    • Просмотр профиля
Mega2560 Shield NES Dumper/Writer
« Ответ #119 : 27 Август 2018, 20:49:43 »
Да надо будет заморочиться. Но наверное уже на STM32 буду пробовать.