Приставки > Картриджи / диски
Famicom Cartridge Schematics & PCBs
<< < (6/67) > >>
supremacy:
помню только такую
RetHunter:
Кто разбирается в железе, помогите. Хочу сделать картридж BTDD on ragnarok, но там 512Кб. Схема от vfiuchcikichuusrch на 74CH161 и поддерживает только 256Кб. На несдеве написано что можно использовать 74HC377. Если не трудно дайте схему как это собрать. Спасибо.
supremacy:

--- Цитата: RetHunter от 02 Ноябрь 2017, 22:19:32 ---Кто разбирается в железе, помогите. Хочу сделать картридж BTDD on ragnarok, но там 512Кб. Схема от vfiuchcikichuusrch на 74CH161 и поддерживает только 256Кб. На несдеве написано что можно использовать 74HC377. Если не трудно дайте схему как это собрать. Спасибо.

--- Конец цитаты ---
скачай даташит на 74hc377. D0-D7 это входы Q0-Q7 выходы, /E подключается к R//W, CP к /ROMSEL, питание как обычно.
дополнительно заводишь D3 с prg rom на свободный вход 74hc377 и с соответствующего ему выхода выводишь на A18 prg rom.
А этот ром на железе кто-нибудь проверял?
RetHunter:

--- Цитата: supremacy от 03 Ноябрь 2017, 08:14:43 ---скачай даташит на 74hc377. D0-D7 это входы Q0-Q7 выходы, /E подключается к R//W, CP к /ROMSEL, питание как обычно.
дополнительно заводишь D3 с prg rom на свободный вход 74hc377 и с соответствующего ему выхода выводишь на A18 prg rom.
А этот ром на железе кто-нибудь проверял?

--- Конец цитаты ---
Спасибо, буду эксприментировать. Ром взял версии 1.2, который автор ещё не перевел на 256 спрайтов.
Nikooone:

--- Цитата: supremacy от 03 Ноябрь 2017, 08:14:43 ---А этот ром на железе кто-нибудь проверял?

--- Конец цитаты ---
да работает, с парой 161х
max5775:

--- Цитата: KykyPyky от 19 Апрель 2016, 22:26:14 ---Поделюсь своим опытом.
(Ссылка на вложение)

Отрисовал универсальную плату для AOROM/UNROM с возможностью переключения по сбросу или через меню.
Если располагать меню в отдельном банке, то получаются трех-игровки. Если вшивать меню в какую-нибудь игру то четырех-игровки.

В аттаче плата в lay6, исходники меню для одного банка и меню вшитая в первую кастельванию.
(Ссылка на вложение)

Надеюсь мой опыт кому-нибудь пригодится

--- Конец цитаты ---
Кто может поподробнее объяснить, как вшить меню в ром?
И что за утилиты ca65 и ld65 в скрипте build.sh, где их взять?
SAMael:
Там в архиве всё достаточно подробно есть.
Меню можно и в сами игровые РОМы внедрять так и отдельным файлом компилировать.
max5775:

--- Цитата: SAMael от 10 Май 2018, 11:49:36 ---Там в архиве всё достаточно подробно есть.
Меню можно и в сами игровые РОМы внедрять так и отдельным файлом компилировать.

--- Конец цитаты ---
Если Вы про файл menu-unrom.asm, то там ни слова про это.
Компилятор CC65 поставил.
Мне хотя бы в двух словах объяснить, как это работает. Можно ли это меню модифицировать до 8 в 1 и на NROM маппер, ну или на другой. Как выбирается нужный кусок PRG/CHR из памяти.
supremacy:
Пока ты сам не разберёшься в программировании под nes, ничего модифицировать ты не сможешь. А судя по вопросам, ты в этом не силён.
Общий принцип работы меню в двух словах:
На плату картриджа ставится микросхема защёлка, например счетчик  hc161, которая управляет старшими адресами микросхемы памяти (условно выбором игры)
На входы заводятся первые биты данных, сама защёлка после записи самоблокируется, чтобы больше не реагировать на данные входов, и выводится из этого состояния только с помощью цепочки сброса, которая определяет, что на приставке нажата кнопка ресет.
Цель кода меню - запустится первым, нарисовать меню, и после выбора игры подать биты адреса игры на вход защёлки и перейти по адресу сброса игры jmp ($fffc).
KykyPyky:
Попробую пошагово описать как вшить эту меню в контру Contra (U) [!].nes.

1. Файл alnum.2bpp.chr содержит шрифт, который грузится в chr-ram. Содержит всего 48 символов.
Грузится со смещением так что бы соответствовать кодировке ascii.

Посмотреть и отредактировать еще можно в специальных редакторах, например, Tile Molester.

2. Файл menu.txt содержит выводимое меню, редактируемое обычным текстовым редактором.
Длинна строки не должна превышать 32 символа. Использовать можно только те 48 символов,
которые описаны alnum.2bpp.chr. Любые другие будут выводить пустоту.

3. Файл pack-text.py это скрипт на питоне, который преобразует menu.txt в некую последовательность,
удобную для записи в ppu:
количество пробелов - количество символов - символы - количество пробелов -...

--- Код: ---$ python ./pack-text.py menu.txt
    .byt 74, 12, "UNROM 4 IN 1"
    .byt 49, 18, "PUSH ^ _ START KEY"
    .byt 77, 8, "1:CONTRA"
    .byt 56, 13, "2:MEGAMAN RUS"
    .byt 51, 15, "3:GUN:SMOKE RUS"
    .byt 49, 17, "4:GHOST;N;GOBLINS"
    .byt 0
--- Конец кода ---
Вывод этой программы надо вставить в файле menu-unrom.asm после метки text_menu.

4. Комментируем все директивы .org если они расскомментированы и компилируем.

--- Код: ---$ ca65 menu-unrom.asm -o menu-unrom.o
$ ld65 menu-unrom.o -o menu-unrom.nes -C nesfile-unrom.ini
--- Конец кода ---
Получившийся файл menu-unrom.nes должен запуститься в эмуляторе.

5. Открывает в hex-редакторе ром и ищем незанятое место, куда бы можно было поместить наш код.
В UxROM используется chr-ram, а это значит что ром не содержит chr-rom данных. И можно смотреть с конца рома.
Я использую wxHexEditor в нем очень удобно помечать произвольные области.
И вроде бы он даже мультиплатформенный.
Смотрим с конца файла.Ура! Нам даже повезло, в последнем непереключаемом банке есть даже место.
Смещение на начало свободного места: $1f623
Смещение на конец свободного места:$1fc0e
Итого: $1fc0e-$1f623=1515 байт данных.


6. Предпоследняя пара байтов содержит вектор сброса. После сброса процессор начинает выполнять код по адресу, на который указывается в этой паре.
Адрес записывается наоборот, сначала младший байт, потом старший.
Вектор сброса на скрине: $0c01


7. А вот здесь уже нужны знания ассемблера.
Вшить в кастельванию было несколько тяжелее, потому что в непереключаемом банке не было место под меню. Поэтому в непереключчаемом банке был код,
который переключал на банк с меню и передавал туда управление. С контрой проще.
Все что связано с OFFSET_LOAD, нам не нужно. Комментируем или удаляем.
Для RESET_OLD указывает вектор сброса из п.6
Для OFFSET_MENU указывает смещение из п.5

--- Код: ---RESET_OLD = $c001 ; старое значение вектора сброса
OFFSET_MENU = $1f623 ; смещение на неиспользуемое место для кода меню
--- Конец кода ---
Перед .proc reset,.расскоментируем .org ORG_MENU.
Компилируем. Теперь полученный ром запуститься в эмуле не должен.

8. Открывает в hex-редакторе получившийся ром и ищем код меню.
Копируем, начиная с цифры 78(это код sei) до конца, а потом вставляем в выбранное место.


9. При компиляции в консоле был напечатан новый вектор сброса:

--- Код: ---$ ./build.sh
new reset = $F613
--- Конец кода ---
Исправим его тоже.Пишется также в обратном порядке, те 13 F6


10. Сохраняем, запускам. :wow:

Первым пунктом в меню всегда идет вшитая игра. Остальные в порядке склейки.

Все что получилось есть в приложенном архиве.

Кстати, если кто-то знает почему линковщик ld65 игнорирует директивы .org и лепит все подряд, а не по указанному адресу, подскажите. Буду признателен.
max5775:
Сколько ромов можно добавлять после главного рома с меню?
SAMael:
По идее в зависимости от обьема еепром и количества старших адресов.
supremacy:

--- Цитата: max5775 от 11 Май 2018, 11:14:29 ---Сколько ромов можно добавлять после главного рома с меню?
--- Конец цитаты ---
ты сначала скажи ты сам будешь плату проектировать или готовую использовать?
Существующая реализация, по-моему, больше 8 игр не умеет, т.к. на защёлке три бита адреса плюс один на блокировку.
max5775:

--- Цитата: supremacy от 11 Май 2018, 12:21:24 ---ты сначала скажи ты сам будешь плату проектировать или готовую использовать?
Существующая реализация, по-моему, больше 8 игр не умеет, т.к. на защёлке три бита адреса плюс один на блокировку.

--- Конец цитаты ---
У меня уже есть готовые реализации на счетчиках, с переключением по ресету, хочу убрать счетчики и сделать меню. Так как во-первых - это не удобно при количестве игр более 3-4, во-вторых - нечеткое срабатывание. В принципе, мне больше 8 игр и не надо.
P.S: Получилось проделать все манипуляции со вставкой меню в контру, попробую вставить его в другой ром.
supremacy:
Самая ходовая игра будет на всех картриджах?  :lol:
Можешь поискать на форуме nesdev, там FARID - любитель многоигровок что-то делал.
max5775:

--- Цитата: supremacy от 11 Май 2018, 14:01:49 ---Самая ходовая игра будет на всех картриджах?  :lol:
Можешь поискать на форуме nesdev, там FARID - любитель многоигровок что-то делал.

--- Конец цитаты ---
Почему самая ходовая, я пробую в другой ром встроить меню.
Непонятно назначение xml-файла contra.nes.tags в архиве, для чего он нужен?
supremacy:

--- Цитата: max5775 от 11 Май 2018, 14:30:23 ---Непонятно назначение xml-файла contra.nes.tags в архиве, для чего он нужен?
--- Конец цитаты ---
выделение блока кода цветом, как на картинке. Это для шестнадцатеричного редактора wxHexEditor разметка.
max5775:

--- Цитата: supremacy от 11 Май 2018, 15:20:47 ---выделение блока кода цветом, как на картинке. Это для шестнадцатеричного редактора wxHexEditor разметка.

--- Конец цитаты ---
Понятно.
А поподробнее про перенаправление на код с меню, который располагается  в переключаемом банке, когда нет места в непереключаемом банке можно рассказать? Просмотрел несколько ромов - некуда впихнуть меню, даже порезав его до минимума. Контра в этом плане и правда удачно используется.
KykyPyky:

--- Цитата: max5775 от 11 Май 2018, 11:14:29 ---Сколько ромов можно добавлять после главного рома с меню?
--- Конец цитаты ---
Плата делалась для 512кб флешек, максимум 4 игры по 128кб.
Остался незадействованным один разряд счетчика 161, если переразвести под otp или uv память на 1мб то можно расширить до 8 игр.


--- Цитата: max5775 от 11 Май 2018, 15:38:54 ---А поподробнее про перенаправление на код с меню
--- Конец цитаты ---
Практически тоже самое. Посмотри у кастельвании.
Только ищется теперь два пустых окна. Один поменьше (смещение ORG_LOAD) в фиксированном банке. В нем располагается код после .org ORG_LOAD до конца.
Второе побольше (смещение ORG_MENU), для кодов меню, после .org ORG_MENU и до .org ORG_LOAD
Номер банка считается сам.

max5775:
Подскажите по схеме картриджа на MMC3. Как я понял, в базовом варианте там стоит 2 ПЗУ по 2МБ. Это получается схема для одноигровки , у меня есть ром с меню на 4 игры размером 1МБ, который я могу редактировать. Режем его на PRG и CHR для прошивки, получается нужно 2 чипа по 4МБ. Как изменится схема в моем случае, куда кидать старший адрес A18? На AX5202 вроде есть нога A18, но она только для PRG.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии