Автор Тема: [ALL] Вопросы новичков  (Прочитано 21402 раз)

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

Оффлайн Nik Pi

  • Пользователь
  • Сообщений: 148
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #240 : 02 Июнь 2024, 16:15:22 »
Ручками надёжнее.
Надёжнее пользоваться тем, что есть изначально, и не копаться где попало  :D
А так- вкусовщина, не более  :)

Оффлайн Lance_Kalzas

  • Пользователь
  • Сообщений: 931
  • Пол: Мужской
  • Властелин Глупости
    • ВКонтакте
    • Steam
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #241 : 03 Июнь 2024, 21:00:03 »
Надёжнее пользоваться тем, что есть изначально, и не копаться где попало  :D
Ассемблер в помощь тогда.

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 103
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #242 : 31 Июль 2024, 00:19:02 »
Всем привет, а можете посоветовать какие-нибудь инструменты, или плагины к инструментам для анализа (Ida, Ghidra или любую альтернативу) для разработки на Nes. Пробовал делать простые хаки, по типу бесконечных жизней, попыток, но это слишком мало. Смотрел через эмулятор, правил прямо через хекс редактор, хочется что-то наподобе gensida. Посоветуйте, что-нибудь, пожалуйста  ^_^
И где можно почитать доходчивые статьи про мапперы с реальными примерами? Такое ощущение, что проще открыть исходники FCEUX и почитать, как там реализовано.  o_0

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1176
    • ВКонтакте
    • Steam
    • Просмотр профиля

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5101
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #244 : 31 Июль 2024, 03:00:05 »
И где можно почитать доходчивые статьи про мапперы с реальными примерами? Такое ощущение, что проще открыть исходники FCEUX и почитать, как там реализовано.
https://www.nesdev.org/wiki/Mapper. Некоторые мапперы реализованы только в https://unlicensed.games/libg/static.php?page=NintendulatorNRS, поэтому его исходный код тоже. В FCEUX точности не хватает для разработки игр, там даже в MMC3 не учитывается особенность IRQ. Кроме Mesen, нормальных эмуляторов со встроенным отладчиком нет. В любом случае нужно проверять на реальной консоли, лучше на разных.
UPD: В Mesen нужно в настройках эмуляции включить пункты для разработчиков.
« Последнее редактирование: 31 Июль 2024, 03:24:40 от Sharpnull »

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1176
    • ВКонтакте
    • Steam
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #245 : 31 Июль 2024, 13:20:20 »
пункты для разработчиков
Какие функции появляются?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5101
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #246 : 31 Июль 2024, 14:00:38 »
Какие функции появляются?
Не функции, это эмуляция дополнительных особенностей. Случайные значения на старте и глитчи, поэтому выключено по умолчанию. Одна из опций помогла исправить дёргающийся фон в адаптации Tiny Toon Adventures 6 на MMC3. Недавно там появилось "Enable PAL black borders (when running in PAL/Dedny mode)", просто чёрная рамка 2 px слева/справа и 1 px сверху, мало пользы, т. к. всё равно нужно учитывать, что 8 px могут быть не видны справа/слева, а 8 px сверху/снизу обычно скрыты.

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 103
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #247 : 31 Июль 2024, 16:13:10 »
Mesen очень крут, он может даже отматывать игру назад.
Мапперы на Famicom, NES, Денди: откуда взялись и зачем нужны (часть 1/2)
Мапперы на Famicom, NES, Денди: откуда взялись и зачем нужны (часть 2/2)
Спасибо, буду пробовать его  :cool:

Как раз эти статьи читал, видимо, надо перечитать еще раз и на свежую голову, но нахожу их слишком теоретическими без технических деталей и примеров  :neznayu:

Добавлено позже:
https://www.nesdev.org/wiki/Mapper. Некоторые мапперы реализованы только в https://unlicensed.games/libg/static.php?page=NintendulatorNRS, поэтому его исходный код тоже. В FCEUX точности не хватает для разработки игр, там даже в MMC3 не учитывается особенность IRQ. Кроме Mesen, нормальных эмуляторов со встроенным отладчиком нет. В любом случае нужно проверять на реальной консоли, лучше на разных.
UPD: В Mesen нужно в настройках эмуляции включить пункты для разработчиков.
Ого, вот это уже серьезнее, спасибо  :cool:
Не уверен, что дойду до консолей, у меня больше исследовательский интерес (парсер свой написать, в таких же целях, понятно что все исследовано, но интересно самому разобраться), я немного был поражен, какие игры можно было делать, какие игры были и почему, до мапперов, количеством инструкций процессора, и то что адресное простраство такое небольшое, после сеги немного вздохнул с облегчением, а тут мапперы  :D

Добавлено позже:
А декомпиляторы есть, я пробовал какой-то ldr python (там загрузчик, и декомпилятор от ида)? Вроде бы сносно, но он не показывает области памяти для мапперов.
Если несложно, можете посоветовать какой-нибудь ресурс, вдруг вам очень помог, в моменте когда изучал сегу, множество ресурсов очень помогло, что-нибудь, что больше всего понравилось  ^_^

Добавлено позже:
https://www.nesdev.org/wiki/Mapper.
Шикарный сайт, спасибо большое  :wow:
« Последнее редактирование: 31 Июль 2024, 17:05:51 от Turbo2000 »

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4470
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Re: [ALL] Вопросы новичков
« Ответ #248 : 31 Июль 2024, 22:56:41 »
А декомпиляторы есть
Декомпиляторы во что? О_о

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 103
  • Пол: Мужской
    • Просмотр профиля
Re: [ALL] Вопросы новичков
« Ответ #249 : 01 Август 2024, 00:03:01 »
Декомпиляторы во что? О_о
Лоадер, неправильно написал, у 6502 свой ассемблер.

Оффлайн MaxWooD

  • Пользователь
  • Сообщений: 1085
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #250 : 10 Август 2024, 09:16:25 »
Приветствую форумчане!
Помогите с поиском игры на нашем форуме.
Помнится кто-то писал (и даже выкладывал версию игры) про исправления в игре Mickey's Adventures in Numberland [NES].
Никак не могу найти на форуме этот пост и этот хак. Может кто-то еще помнит?

Оффлайн Cyneprepou4uk

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

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #252 : 12 Август 2024, 18:44:03 »
можно ли как-то в r57shell версии эмулятора Gens поглядеть загруженность 68 и Z80 ?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5101
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #253 : 12 Август 2024, 20:21:22 »
можно ли как-то в r57shell версии эмулятора Gens поглядеть загруженность 68 и Z80 ?
А как эмулятор должен рассчитать нагрузку? Как это может сделать игра, я примерно понимаю: время вычислений до начала ожидания VBlank. В SGDK можете посмотреть SYS_getCPULoad() из sys.c, он может отображать загруженность на экране. Для NES видел пример отображения в демо для FamiTone2 от Shiru, до тестируемой функции включалась серая палитра, а после отключалась и на эране видно сколько от кадра тратится времени. Впрочем, в Mesen есть Event Viewer и можно увидеть когда срабатывает breakpoint. В эмуляторах BGB и no$gba есть отображение нагрузки, но это только из-за наличия инструкций процессора для ожидания VBlank, а в MD такого вроде нет. Для MD можно добавить специальный регистр, который эмулятор будет считать концом вычислений кадра и тогда проще модифицировать нужную игру. Если это тысячи раз переваренная Дюна, то давно бы уже добавили отображение в код игры.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #254 : 12 Август 2024, 20:41:51 »
ну... несколько другая, чуть менее тыщи, но тоже переваренная игра. вот мне бы с моими тремя классами церковно приходской понять это 68 загружается по самые помидоры, или все-таки проблема в чем-то другом :)

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5101
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #255 : 12 Август 2024, 21:12:05 »
понять это 68 загружается по самые помидоры
Если речь про видимые тормоза с пропуском кадров, например, когда много объектов на экране, тогда можно попробовать поставить breakpoint'ы на начало обработчика VBlank и вне обработчика на инструкцию, которая выполняется раз в кадр. Во время пропуска кадра VBlank должен выполниться два раза подряд, но вторую инструкцию ещё найти нужно.
Есть же эмуляторы с разгоном. В случае уменьшения тормозов от разгона, можно говорить о проблеме с нагрузкой.
UPD: Или можно наоборот ограничивать производительность пока не будет видно ухудшения :)
« Последнее редактирование: 12 Август 2024, 21:20:06 от Sharpnull »

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1176
    • ВКонтакте
    • Steam
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #256 : 13 Август 2024, 02:57:18 »
Как реализованы многоигровки на Дэнди типа "9999 игр в одном"? Это несколько полноценных игр и таблица адресов и значения для изменения этих игр? И при запуске игра как-то патчится, или как это реализовано?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5101
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #257 : 13 Август 2024, 04:24:42 »
"9999 игр в одном"?
В роме находятся ромы отдельных игр, маппер у картриджа специальный, позволяющий записью в регистры маппера зафиксировать выбранную игру, при этом она не знает о существовании других игр и пользуется своими регистрами. Меню многоигровки похоже на отдельную игру, только запускается первым. Обычно, для переключения на игру, меню записывает в RAM код записи в регистры и прыжок на начало игры, потому что переключение PRG банков сменит код меню на игровой и мы окажемся не там (если инструкция записи в регистр не в нужном месте). В "Чайках" для одной из игр такой код RAM $400:
STA $C002 переключает игру, а JMP $8003 специально для этой игры. Чтобы не писать для каждой игры свой адрес начала, используют прыжок на адрес сброса (Reset) игры - JMP ($FFFC), но в данной многоигровке сделано иначе для появления меню при сбросе консоли, а не выбранной игры, для этого им пришлось изменить код каждой игры и по адресу Reset каждой игры переключение на меню.
Кроме номера банка и названия игры, для каждой игры могут храниться: значение mirroring, значение маппера, размеры PRG и CHR, возможность записи в CHR и другое. В некоторых многоигровках модифицированные игры, чтобы из меню был доступ к: разным уровням, вариантам игры, читам.

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1176
    • ВКонтакте
    • Steam
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #258 : 13 Август 2024, 13:27:50 »
Sharpnull, спасибо, ты старался, но я всё равно не понял - в картридже только несколько игр, или же 9999? Если много, то для экономии места проще было бы таки просто патчить те несколько оригинальных игр при запуске?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5101
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #259 : 13 Август 2024, 14:22:50 »
в картридже только несколько игр, или же 9999?
Я не понял, что речь про кол-во игр в многоигровках с указанием кучи игр, я рассказал как устроены многоигровки вообще. Реальных игр раньше было несколько, в картриджах с ненастоящим кол-во игр в меню генерируются названия игр, поэтому список настоящий, но игры повторяются. В некоторых случаях ещё меняются начальные значения RAM, но, чтобы это сработало, игру модифицируют (как минимум убирают очистку RAM в нужном месте). Код и графика игры неизменяемые, поэтому под модификацией имею в виду изменение игры до создания картриджа, во время работы картриджа ром не меняется. Например, чтобы добавить выбор уровня из меню многоигровки, в игре убирают очистку и установку начального значения в RAM для уровня, тогда будет загружен нужный уровень, довольно очевидно. Ничего сложного в многоигровках с повторами не используется.
UPD: Сейчас ничто не мешает разработать свой маппер с 512 KiB ОЗУ под PRG ROM (256 KiB CHR RAM уже есть), тогда можно копировать игру, а на неё накладывать аналог IPS-патча, тогда влезет много хаков на один картридж. У многоигровок бывает 256 KiB CHR RAM, так что графические хаки уже можно реализовать. Но это никому не нужно.
« Последнее редактирование: 13 Август 2024, 14:39:09 от Sharpnull »

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

  • Пользователь
  • Сообщений: 2426
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #260 : 13 Август 2024, 14:32:59 »
Я в одной из подобных многоигровок столкнулся с необычным случаем. Многоигровка простая, там 4 игры всего размножено в 9999. Но прикол в том, что среди графики есть банк с хаком star force . И это при том, что самого кода этой игры на картридже нет. Зачем это было сделано? Добивали графику для ровного счёта банков??? Почему не повторили банк с уже существующей игрой? :neznayu: Одни вопросы...

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5101
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #261 : 13 Август 2024, 14:53:09 »
среди графики есть банк с хаком star force . И это при том, что самого кода этой игры на картридже нет. Зачем это было сделано?
Это нормально, когда в многоигровках находят часть CHR и PRG банков игр, которых нет в меню. По ошибке как-то попадают. Недавно современный картридж с настоящими играми "365-in-1 Dendy" разбирал, там оказалась полная игра не в меню, если отредактировать меню, то она появится, но не было превью (картинка в меню). Поискал этот картридж в сети и был вариант с этой игрой (судя по описанию), но тоже 365-in-1. Может им нужно было число 365 или не успели нарисовать превью.
В старых играх попадается отладочная информация, мусор, исходных код, бывает из-за программы, которая собирает игру и по ошибке копирует ОЗУ ПК в оставшееся место. На tcrf.net о таких играх пишут, иногда можно понять какой инструмент использовали разработчики.

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4470
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #262 : 13 Август 2024, 20:02:34 »
Может им нужно было число 365
Может быть по количеству дней в году? Типа, картридж на каждый день...

Оффлайн Ivan_Ages

  • Пользователь
  • Сообщений: 751
  • Пол: Мужской
    • Просмотр профиля
Re: [ALL] Вопросы новичков
« Ответ #263 : 14 Август 2024, 12:14:03 »
Эта не та ли 365-в-1 от ньюгейма. Сначала выпустили 375 в 1. Был топ. Но карик начали минусить в отзывах. Потому что там были баттлтодсы1,2, которые разумеется почти ни у кого не работали. Затем выходит 365. До сих пор на озоне лежит только по сотке в месяц накручивают.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5101
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #264 : 14 Август 2024, 16:24:17 »
Эта не та ли 365-в-1 от ньюгейма
https://www.emu-land.net/forum/index.php/topic,12058.msg1588707.html#msg1588707 "Dendy мега хиты 365 игр", ниже в теме информация по дампу, сборке своих игр и перезаписи. Ferzi ещё паяльником с ней что-то делал для исправления перезаписи, может брак, не разбираюсь.

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 103
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #265 : 22 Август 2024, 21:38:53 »
Можете, пожалуйста, объяснить, почему при вызове сабрутины может внезапно сработать VBLANK?
Может быть такое, что игра никак не синхронизируется с прерыванием?



Добавлено позже:
Там есть какая-то синхронизация по кадрам, но она происходит до
Структура заполняется, и тайлы распакованные отправляются на VDP через DMA во время VBlank.

Добавлено позже:
Кажется, понял в чем дело, перепроверю код VBlank, но скорее всего в данном случае реализована очередь команд для VDP, поэтому синхронизация не требуется
« Последнее редактирование: 22 Август 2024, 23:40:54 от Turbo2000 »

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 103
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #266 : 23 Август 2024, 18:46:27 »
А можете, пожалуйста, подсказать, какие алгоритмы сжатия используются в Dune 2, The Story of Thor?

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #267 : 23 Август 2024, 18:50:29 »
о! а чо там в Дюне сжато? я думал там как открытая книга :)

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5101
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #268 : 23 Август 2024, 19:57:56 »
какие алгоритмы сжатия используются в Dune 2, The Story of Thor?
В The Story of Thor / Beyond Oasis два метода сжатия, один как в Streets of Rage 2. Я когда-то писал медленный компрессор на Python для метода из SoR2, потом я писал на C компрессор метода из Тор с обоими декомпрессорами, но не добавил компрессор от SoR2. Там ещё алгоритм предполагает возможность работы с блоками. Для сжатия методом из SoR2 можно использовать https://github.com/hansbonini/lz_ancient, но разжатие сделано с ошибкой. Прикладываю мою программу для разжатия обоих методов и сжатия методом из Тора.

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 103
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #269 : 23 Август 2024, 20:31:00 »
о! а чо там в Дюне сжато? я думал там как открытая книга :)
В оригинале много чего сжато, 100%: графика, маппинги (тайлы), если не ошибаюсь, то таблицы спрайтов тоже

Добавлено позже:
В The Story of Thor / Beyond Oasis два метода сжатия, один как в Streets of Rage 2. Я когда-то писал медленный компрессор на Python для метода из SoR2, потом я писал на C компрессор метода из Тор с обоими декомпрессорами, но не добавил компрессор от SoR2. Там ещё алгоритм предполагает возможность работы с блоками. Для сжатия методом из SoR2 можно использовать https://github.com/hansbonini/lz_ancient, но разжатие сделано с ошибкой. Прикладываю мою программу для разжатия обоих методов и сжатия методом из Тора.
О, спасибо, большое, если что, то могу выложить программу расжатия графики для дюны, вроде работает без ошибок, но не уверен, что кому-то надо