Автор Тема: Вертикальные точки Dendy многоигровка  (Прочитано 4114 раз)

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

Оффлайн NStormX

  • Пользователь
  • Сообщений: 215
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #30 : 13 Февраль 2019, 18:04:24 »
Чет у вас цены не правильные, я по 20 руб покупал

Не Москва у нас :( Тут к555 по 20. Взял две таких, две других и две панельки. Итого 100 рублей.

Добавлено позже:
На плате 1 вывод (/Rasyn) у 161 висит в воздухе что ли?

С обратной стороны по металлизации идет. Там видно на фото от него дорожка вбок. Звонится.

Мне вот интересно что за элементы там предусмотрены, но не распаяны. Тут 5 в идет на капли, которые типа 3,3, хотя развязка предусмотрена. И так далее. Хотя раз так было изначально, значит картридж работал... Но ко мне он попал такой уже.
« Последнее редактирование: 13 Февраль 2019, 18:13:44 от NStormX »

Оффлайн SAMael

  • Пользователь
  • Сообщений: 6191
  • Пол: Мужской
  • SAMuel Alpian Warrior Glegleddore Gleglezavr
    • Facebook
    • Twitter
    • ВКонтакте
    • Steam
    • Youtube
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #31 : 13 Февраль 2019, 19:50:06 »
NStormX, 100руб, это 50гр, хм, "танунафиг", я микры по 1гр беру = 2руб.
А вообще мне кажется там дело в CHR части, капля.

Оффлайн KykyPyky

  • Пользователь
  • Сообщений: 516
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #32 : 13 Февраль 2019, 19:59:34 »
Мне вот интересно что за элементы там предусмотрены, но не распаяны.
Стандартная цепочка сброса: диод, конденсатор и резистор. Они подписаны на плате.
С ней выйти в меню можно путем нажатия сброса на приставке, без них - только передернув питание.

Тут 5 в идет на капли, которые типа 3,3
Откуда такая инфа? Когда делался этот карик, питание 3.3в было только в проектах.

Оффлайн NStormX

  • Пользователь
  • Сообщений: 215
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #33 : 13 Февраль 2019, 20:10:33 »
Стандартная цепочка сброса: диод, конденсатор и резистор. Они подписаны на плате.
С ней выйти в меню можно путем нажатия сброса на приставке, без них - только передернув питание.

Выходит по резету в главное меню.

Оффлайн KykyPyky

  • Пользователь
  • Сообщений: 516
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #34 : 13 Февраль 2019, 21:49:41 »
Выходит по резету в главное меню.
Это потому что счетчик не переключается, а указывает на один и тот же банк. Вот когда переключишь, через сброс в меню не выйдешь.


Оффлайн NStormX

  • Пользователь
  • Сообщений: 215
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #35 : 09 Март 2019, 21:58:30 »
Сделал дамп этого картриджа. Маппера не знаю, потому дампил как без него.

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

  • Пользователь
  • Сообщений: 2349
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #36 : 10 Март 2019, 01:18:11 »
Графика меню взята из тетриса:


Оффлайн NStormX

  • Пользователь
  • Сообщений: 215
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #37 : 10 Март 2019, 12:30:42 »
Guyver(X.B.M.), прикольно, но тут бы знать что за маппер, а лучше скрипт для дампера Кластера, я бы сдампил корректно и выложил. Так то все равно кроме меню и бомбермэна ничего не работает (а по факту еще Dino Richi запускается).

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

  • Пользователь
  • Сообщений: 2349
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #38 : 10 Март 2019, 15:21:22 »
Скорее всего, графику ты не сдампишь, будет она у тебя вся битая. Но главное это код, так как графика обычно в таких многоигровках не отличается от оригинала...

Оффлайн megavolt85

  • Пользователь
  • Сообщений: 1464
  • Пол: Мужской
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #39 : 10 Март 2019, 22:25:59 »
Guyver(X.B.M.), ну от чего же, если знать маппер, то сдампить можно и СС 300 без бедов  :lol:

Оффлайн NStormX

  • Пользователь
  • Сообщений: 215
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #40 : 10 Март 2019, 22:29:11 »
megavolt85, шутки шутками, но как можно заметить - в дампе работает только бомбермэн, а на картридже на реальном железе работают две игры. Плюс к слову проблемы с графикой на реальном железе на порядок меньше чем в дампе. Никто и не пытается сдампить то, что не работает на реальном железе. Идея лишь сдампить то, что работает, а для этого нужно сэмулировать маппер.

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2255
  • Пол: Мужской
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #41 : 11 Март 2019, 08:07:45 »
NStormX, начнём с того, что не все многоигровки можно сдампить дампером Кластера. На некоторых будет срабатывать сброс, и ты не сможешь выбрать другие банки.
А технология дампа не особо сложная - нужно сначала сдампить nrom, загрузить в эмулятор, поставить брэйкпоинты на запись в 6000-ffff и запустить игру из меню. Программа остановится на переключении банка, по коду смотришь по какому адресу и какими битами переключаются банки и дописываешь в свой скрипт соответствующие команды.

Оффлайн NStormX

  • Пользователь
  • Сообщений: 215
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #42 : 11 Март 2019, 11:19:36 »
supremacy, благодарю за помощь! Так как ранее этим не занимался просьба по возможности ответить на нубские вопросы.
Отладил я это меню. Переключение производится следующим образом (для удобства сделал таблицу):
Адрес записи    Записываемое значение    Адрес перехода    Игра
$AF08    $A0    $8003    HUMAN
$AF0C    $A0    $8000    ISLAND
$AF01    $F0    $C000    BOMBERMAN (main bank)
$AF04    $A0    $8010    GRADIUS
Насколько я понимаю у нас переключение банки производится записью в (0xAF00+(bank*4)) байта 0xA0. Но остаются вопросы: откуда начинается PRG и откуда CHR в данном конкретном картридже и какова их длина.

Допустим получился такой скрипт (ниже). Но во первых непонятно как проверять (кроме как писать свой обработчик в эмулятор хотя уверен он уже есть), так как я не знаю что за маппер и в wiki.nesdev.com мапперов с записью в эти адреса не нашел (возможно плохо искал). В общем вопросов пока больше чем ответов. Заранее благодарю за терпение :)

MapperName = "New1"
MapperNumber = 255
DefaultPrgSize = 4 * 32 * 1024 // 4x от nrom, сколько в реале - хз
DefaultChrSize = 4 * 8 * 1024 // 4x от nrom, сколько в реале - хз

function DumpPrg(size)
  print("Reading main PRG bank...")
  ReadAddPrg(0x8000, size / 4) // а с 8000 ли начинается? и какова длина блока PRG
local banks = 4
for b = 1, banks-1, 1 do
print("Reading PRG bank #" .. tostring(b+1) .. "...")
WriteCpu(0xAF00+4*b, {0xA0})
ReadAddPrg(0x8000, size / 4)
end
end

function DumpChr(size)
  print("Reading main CHR...")
  ReadAddChr(0x0000, size / 4) // а с 0 ли начинается? и какова длина блока CHR
local banks = 4
for b = 1, banks-1, 1 do
print("Reading CHR #" .. tostring(b+1) .. "...")
WriteCpu(0xAF00+4*b, {0xA0})
ReadAddChr(0x0000, size / 4)
end
end

function EnablePrgRam(size)
print("Warning: SRAM is not supported by this mapper")
end

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2255
  • Пол: Мужской
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #43 : 11 Март 2019, 15:20:18 »
Смотришь на каком маппере оригинальные игры, в данном случае CNROM. Меню, как правило, переключает старшие адреса, а саму игру дампишь уже используя команды её оригинального маппера (если китайцы её не перехачили).

PRG всегда бери 32KB, CHR тоже бери по 32КБ, итоговый размер 128+128

Но в конце концов ты захочешь запустить свой дамп в эмуляторе и тут тебе придётся либо найти уже реализованный такой же маппер, либо доработать эмулятор.
А если ты найдёшь уже готовый дамп то, наверное, нет смысла дампить твой картридж 8)

P.S. Записываемое значение в твоей табличке не правильное, ты записал что по этому адресу находится, а не то что в регистре A сейчас, у маппера есть защита от конфликтов на шине, поэтому значения не совпадают.
« Последнее редактирование: 11 Март 2019, 20:51:04 от supremacy »

Оффлайн KykyPyky

  • Пользователь
  • Сообщений: 516
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #44 : 12 Март 2019, 16:09:10 »
Отладка меню довольно трудоемкая операция. Китайцы воровали и хачили меню друг у друга, писали меню сразу под несколько мапперов.
Вроде понятно как работает, написал lua скрипт, а оно не дампится :neznayu:
Подобным мозгоебством можно заниматься только из-за большой любви к конкретному рому. :lol:

Лучше начинать исследование с осмотра карика и микросхем его составляющих.
Нам повезло, маппер не на капле, а на стандартной логике.
Две микрухи ls161 и ls32. Сохранять данные, а значит переключать банки может только одна из них - ls161.
Качаем даташит на нее или ищем распиновку в интернете:


На входы 3,4,5,6 подается сигнал, запоминается и с выводов 14,13,12,11 снимается.
Вооружимся распиновкой карика https://wiki.nesdev.com/w/index.php/Cartridge_connector, острым зрением и/или тестером,
отследим подается сигнал и куда уходит.
Сигнал подается с выводов 10,11,12,13 карика, это адресные линии процессора.
Уходит на адреса капель prg и chr. Какие именно адреса мы не знаем.
CPU A0 -> P0 161 -> CHR
CPU A1 -> P1 161 -> CHR
CPU A2 -> P2 161 -> CHR + PRG
CPU A3 -> P3 161 -> PRG
Получается что бы сдампить chr нам нужно в карик записать 2^3=8 значений по адресам с разными битами A0-A2.
Остальные биты значение не имеют. Как и записываемые данные. Переключение происходит только на основании адреса.
Данные которые надо записать мы прочитаем из этой же ячейки адреса, что бы избежать конфликта шин.
Получается на lua вот так:
WriteCpu(0x8000 + bank, ReadPrg(0x8000 + bank, 1))
Для дампа prg нужно записать 2^2=4 значений по адресам с разными битами A2-A3.
В lua нет битовых операций сдвига, но можно биты сдвинуть влево умножением на число 2 нужное количество раз.
WriteCpu(0x8000 + bank*2*2, ReadPrg(0x8000 + bank*2*2, 1))
Теперь разберемся с номером маппера.
Что бы преобразовать любой адрес в номер банка chr, нужно обнулить все биты кроме последних трех.
Для этого подходит логическое И над адресом и числом 7 или 0x07 или 0b00000111
A & 0x07Для prg нужно обнулить биты кроме 2 и 3, а потом сдвинуть вправо на 3 бита.
(A & 0x0f) >> 2
или
(A >> 2) & 0x03

Скачиваем исходники fceux.
Все простенькие мапперы которые переключаются адресом собраны в файле fceux-2.2.2/src/boards/addrlatch.cpp.
Открываем его и ищем что-то подобное на математику выше.
Ура! Кажется такой маппер уже реализован :wow:
static void M217Sync(void) {
setprg32(0x8000, (latche >> 2) & 3);
setchr8(latche & 7);
}
Т.к. игры у нас на 32к prg то выбираем маппер 217, а не 214.

Еще можно поискать маппер на вики несдева, начинать копать вот отсюда http://wiki.nesdev.com/w/index.php/Mapper
Но некоторые мапперы там не описаны, например наш http://wiki.nesdev.com/w/index.php/INES_Mapper_217

Итоговый lua файл:
--
-- Mapper # 217
-- addr latch: 74-161, 74-32


MapperName = "Mapper #217"
MapperNumber = 217
DefaultPrgSize = 4*0x8000
DefaultChrSize = 8*0x2000

function DumpPrg(size)
        for b = 0, banks-1 do
            WriteCpu(0x8000 + bank*2*2, ReadPrg(0x8000 + bank*2*2, 1))
            print("Reading PRG bank #" .. tostring(b) .. "...")
            ReadAddPrg(0x8000, 0x8000)
        end
end

function DumpChr(size)
        for b = 0, banks-1 do
            WriteCpu(0x8000 + bank, ReadPrg(0x8000 + bank, 1))
            print("Reading CHR bank #" .. tostring(b) .. "...")
            ReadAddChr(0x0000, 0x2000)
        end
end

function EnablePrgRam(size)
end
Файл нуждается в проверке, я его даже не запускал.

Оффлайн NStormX

  • Пользователь
  • Сообщений: 215
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #45 : 12 Март 2019, 19:29:25 »
KykyPyky, искренне благодарю за ликбез! С этим как и с другими картриджами разбираюсь чисто just for fun. Никакой практической цели кроме как изучить работу железа и ПО приставок - нет. Сами игры не нужны от слова совсем - тут чисто интересна задача.
Скрипт поправил, правда CHR в отличии от приставки криво дампится (Dino Richi с побитым CHR, на приставке все корректно). Bomberman зависает на первом уровне, причем если не писать в Cpu скриптом на этапе дампинга CHR - не зависает, но соответственно кривая графика.

Исправленный скрипт прилагаю.

supremacy, также благодарю за советы.
« Последнее редактирование: 12 Март 2019, 21:48:09 от NStormX »

Оффлайн Stasik

  • Пользователь
  • Сообщений: 221
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #46 : 30 Сентябрь 2024, 18:08:34 »
У меня похожее огорчение. Снегопад в меню. Карик с алика. Сначала всё было нормально (первые несколько включений), потом погода испортилась... Втыкал в другую приставку, то же самое. Протирал ластиком, прогревал контакты правой микросхемы паяльником, не помогло. Что характерно, иногда точки одиночные, иногда парные, как на фото. В играх всё нормально. Но в некоторых играх (например Top Gun) тоже есть эти точки на начальном экране. Сильно не мешает, но всё же... В чём может быть причина?
« Последнее редактирование: 30 Сентябрь 2024, 19:03:29 от Stasik »

Оффлайн mutabor

  • Пользователь
  • Сообщений: 298
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #47 : 30 Сентябрь 2024, 19:39:03 »
Если ерунды типа неконтактов/залипов нет - скорее всего битая CHR память (ISSI).

Оффлайн Stasik

  • Пользователь
  • Сообщений: 221
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #48 : 30 Сентябрь 2024, 20:35:34 »
Если ерунды типа неконтактов/залипов нет - скорее всего битая CHR память (ISSI).
Если я правильно понимаю, это оперативная память, и её можно заменить.
« Последнее редактирование: 01 Октябрь 2024, 15:39:06 от Stasik »

Оффлайн mutabor

  • Пользователь
  • Сообщений: 298
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #49 : 01 Октябрь 2024, 19:20:56 »
Если я правильно понимаю, это оперативная память, и её можно заменить.
Правильно, причем не обязательно искать прям такую же - под микросхемой есть контактные площадки под другой тип корпуса. Подойдет любая на 128-256 КБ (эта 128), можно снять с похожего карика.

Оффлайн Stasik

  • Пользователь
  • Сообщений: 221
    • Просмотр профиля
Вертикальные точки Dendy многоигровка
« Ответ #50 : 02 Октябрь 2024, 20:47:31 »
mutabor, благодарю.