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

Sharpnull и 1 Гость просматривают эту тему.

Оффлайн FireFox Фан

  • Пользователь
  • Сообщений: 1500
  • Пол: Мужской
  • Огнелис
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #150 : 28 Апрель 2023, 11:44:57 »
Nik Pi, не могу открыть "Battle City" для NGB. Точнее YY-CHR игру открыл, но в отличии от NES версии не могу сложить картину и вижу только кашу.
« Последнее редактирование: 28 Апрель 2023, 12:32:25 от FireFox Фан »

Оффлайн Nik Pi

  • Пользователь
  • Сообщений: 146
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #151 : 29 Апрель 2023, 18:28:11 »
Nik Pi, не могу открыть "Battle City" для NGB. Точнее YY-CHR игру открыл, но в отличии от NES версии не могу сложить картину и вижу только кашу.
Ты уверен что выбрал правильные параметры? Попробуй через TileLayerPro или FaTILEty, там есть специальный параметр для открытия GB игр.
С YY-CHR не знаком  :lol:
Можешь кинуть скрин того что у тебя?

Оффлайн 881x113

  • Пользователь
  • Сообщений: 164
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #152 : 10 Май 2023, 00:51:38 »
Texmod

Указываю путь к .ехе файлу , указываю путь к файлу мода .tpf, если после этого нажать Run, то игра запустится и будет нормально работать с этим модом, но я не хочу перед каждым запуском игры делать все эти манипуляции, а если просто запустить игру, то запускается без мода, как сделать чтобы настройки сохранились и игра всегда запускалась с модом?
« Последнее редактирование: 10 Май 2023, 17:34:26 от paul_met »

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 899
  • Happy Games Only!
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #153 : 15 Май 2023, 12:24:38 »
Хочу заменить игры на пиратской многоигровке. Но пока нет программатора, чтобы снять дамп с нее, поэтому решил потренироваться на "готовом" ROM-е. Взял Sega Radica! Volume 1, так как там схема переключения почти та же самая, что и в моей многоигровке. Для проверки "вытащил" все игры из ROM-а, заработали все, кроме первой - Kid Chameleon. Стало интересно, почему. Сравнил с хорошим дампом этой игры - не совпадают буквально 3 байта:



Для чего нужны эти изменения?

Онлайн Sharpnull

  • Пользователь
  • Сообщений: 4998
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #154 : 15 Май 2023, 13:37:14 »
Для чего нужны эти изменения?
Это адрес начала кода, он указывает на меню, очевидно.
UPD: Вот в коде эмулятора об этом: https://github.com/ekeeke/Genesis-Plus-GX/blob/f0c8f839268ba2806fca47187555f084c1a04ad9/core/cart_hw/md_cart.c#L1905. Эмулятор определяет маппер по указанной и реальной контрольной сумме из заголовка рома https://github.com/ekeeke/Genesis-Plus-GX/blob/f0c8f839268ba2806fca47187555f084c1a04ad9/core/cart_hw/md_cart.c#L120, так что, если будете проверять вставку через Genesis Plus GX, нужно либо специально подбирать контр. сумму рома или изменить код эмулятора.
UPD2: Подобрать контр. сумму просто, это сумма всех чисел, представляя ром как массив 2 байтных Big-Endian беззнаковых, кроме заголовка, поэтому нужно в самом конце рома добавить число до суммы 0xFC84.
« Последнее редактирование: 15 Май 2023, 14:15:57 от Sharpnull »

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 899
  • Happy Games Only!
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #155 : 15 Май 2023, 14:12:01 »
Sharpnull, на Sega Radica меню в отдельном банке. Вот на этой картинке указано расположение всех игр:



По идее, код меню "лежит" в отдельном банке и никак не "пересекается" с кодом остальных игр. По идее, изменение адреса нужно, только если меню "вшито" в одну из игр, как это описано здесь. Или я чего-то не понимаю?

Онлайн Sharpnull

  • Пользователь
  • Сообщений: 4998
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #156 : 15 Май 2023, 14:20:07 »
Talking_Sword, запуск рома с начального банка от Kid Chameleon, поэтому указывается адрес на код, который переключает банки на меню, иначе в банках останется Kid Chameleon. При замене Kid Chameleon вам нужно снова ставить адрес 00 3F 03 00.
UPD: Так как нужен начальный адрес 1-й игры чтобы её запустить, он хранится в коде меню - 0x3F06F4 в роме, для Kid Chameleon там 00 00 04 B0, а для заменяемой игры нужно взять с позиции 0x4-0x7 от его рома. Другие начальные адреса тоже могут хранится в меню, но такое не нужно. UPD2: Они всё-таки не тупые, нужно менять только для 1-й игры:
2078 0004      movea.l $00000004,a0
4ED0            jmp.l (a0)
« Последнее редактирование: 15 Май 2023, 17:28:52 от Sharpnull »

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 899
  • Happy Games Only!
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #157 : 15 Май 2023, 17:56:48 »
В принципе, до того, как писал сообщение догадывался, что что это как-то связано с переключением на меню. сейчас проверил - после подачи питания на выводах Q1-Q6 74LS174 действительно нули, значит будет включен банк самой первой игры. Значит эти изменения нужны, чтобы на выходах 74LS174 было 111111? Тогда не понимаю другого. Уже до этого экспериментировал - игры переключаются по сигналу /TIME, прочитал здесь, что сигнал /TIME срабатывает при доступе к адресам 0xA13000-0xA130FF. Поставил в отладчике точку останова на доступ к этим адресам, пробовал запускать меню отдельно (вырезанное из ROM-а). При выборе игры в меню, точка останова срабатывает. Но вот если запустить этот самый Kid Chameleon, у которого в начале 3F 03 00, то точка останова не срабатывает.

Онлайн Sharpnull

  • Пользователь
  • Сообщений: 4998
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #158 : 15 Май 2023, 20:27:28 »
прочитал здесь, что сигнал /TIME срабатывает при доступе к адресам 0xA13000-0xA130FF
Я давал ссылку на код эмулятора, там действительно читается A13000-A130FF. Интересно, что OR (ИЛИ) с базовым индексом банка, поэтому 0xA1307E, который переключает на меню установит все банки одним банком меню (каждые 64КБ).
Поставил в отладчике точку останова на доступ к этим адресам, пробовал запускать меню отдельно (вырезанное из ROM-а). При выборе игры в меню, точка останова срабатывает. Но вот если запустить этот самый Kid Chameleon, у которого в начале 3F 03 00, то точка останова не срабатывает.
Не знаю каким эмулятором вы пользуетесь, но в вырезке только нет первого чтения A1307E (для меню). Код чтения A130xx выполняется в RAM по понятной причине, может это вас сбило.

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 899
  • Happy Games Only!
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #159 : 16 Май 2023, 14:16:39 »
Sharpnull, честно говоря, с трудом могу понять что написано в вашем сообщении. Сразу говорю, вовсе не имею в виду, что вы плохо пишете, просто умений в этой области у меня нет.

Лучше спрошу так:

1. Чтобы заменить первую игру на многоигровке, нужно в "новой" игре значение по адресам 0x04-0x07 заменть на значение из "родной" игры?
2. А в коде меню что-то менять придется? Ну кроме текста, естественно.
Не знаю каким эмулятором вы пользуетесь
Gens r57shell mod.

Онлайн Sharpnull

  • Пользователь
  • Сообщений: 4998
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #160 : 16 Май 2023, 16:25:48 »
1. Чтобы заменить первую игру на многоигровке, нужно в "новой" игре значение по адресам 0x04-0x07 заменть на значение из "родной" игры?
Допустим вы не будете заменять на игру больше 1МиБ с позиции 0x0 (т. е. вместо Kid Chameleon, конечно можно меньше без доп. изменений или сделать все игры разного размера при редактировании кода), тогда после вставки нового рома как минимум нужно: на место 0x4-0x7: 00 3F 03 00 (для меню), а байты, что были на месте 0x4-0x7 от "новой игры", скопировать с 0x3F06F4 (UPD: т. е. в это место), например у Kid Chameleon это было 00 00 04 B0. Второе нужно чтобы меню при выборе 1-й игры перекинуло на код "новой игры".
Gens r57shell mod.
Я тоже им пользуюсь по безысходности, много чего нет и пара инструкций неправильно отображаются в M68k Debug, как раз здесь код выполняемый в RAM не отображается, ещё последняя версия в сети без исходного кода - Gens11svnr665. Ну так он не запускает "Sega Radica! Volume 1 BIOS (U).gen", не поддерживает маппер, я подумал вы запустили эмулятор, он дошёл до меню, но там почему-то не сработал breakpoint при выборе игры. Обрезок только из меню работает, потому что регистр маппера используется при выборе игры, а в начале не нужно переключаться.
Кстати, я не понимаю почему меню расположили в конце из-за чего нужно 1-ю игру редактировать, от Radica есть многоигровка где меню в начале и ничего переключать не нужно. Я только предполагаю для удобства, что в начале файле, или чтобы легко кто-то не достал их меню для своих игр, но вряд ли. Можно было бы сделать круче: на железе с маппером меню и все игры, а без маппера запуск 1-й игры без меню и без других игр.
« Последнее редактирование: 16 Май 2023, 16:43:34 от Sharpnull »

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 899
  • Happy Games Only!
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #161 : 16 Май 2023, 21:34:35 »
а байты, что были на месте 0x4-0x7 от "новой игры", скопировать с 0x3F06F4 (UPD: т. е. в это место), например у Kid Chameleon это было 00 00 04 B0.
0x3F06F4 - это по идее адрес в области меню, то есть само меню тоже нужно править. Боюсь, что не получится у меня заменить первую игру. С другой стороны, на замену можно попробовать подобрать игру, у которой это значение будет как и у старой игры, тогда и надобность в редактировании кода меню отпадет.

Онлайн Sharpnull

  • Пользователь
  • Сообщений: 4998
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #162 : 17 Май 2023, 06:36:12 »
С другой стороны, на замену можно попробовать подобрать игру, у которой это значение будет как и у старой игры, тогда и надобность в редактировании кода меню отпадет.
Проверил 1699 ромов No-Intro (старый ромсет), подходит только Chameleon Kid (Japan).md :) Если речь про другую многоигровку, то как повезёт.

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 899
  • Happy Games Only!
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #163 : 17 Май 2023, 10:48:10 »
Если речь про другую многоигровку
Да. Как уже говорил, мне нужно заменить игры на другой многоигровке, ROM Sega Radica использовал только для того, чтобы потренироавться, ROM-а нужной мне многоигровки у меня нет "на руках", так как пока нет программатора (но скоро будет), чтобы сдампить свою многоигровку.

В моей многоигровке первым, скорее всего, будет Ultimate Mortal Kombat 3. Его можно будет заменить на на Toy Story, так как подходит по размеру. Посмотрел - и там, и там значения совпадают - 00 00 02 00.
Проверил 1699 ромов No-Intro (старый ромсет)
Ради моих вопросов это слишком большие трудозатраты. Надо было мне сразу написать, что Radica не нужна.

Онлайн Sharpnull

  • Пользователь
  • Сообщений: 4998
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #164 : 17 Май 2023, 12:27:12 »
Ради моих вопросов это слишком большие трудозатраты
Мне было интересно, для 00 00 02 00 - 943 из 1699, вот скрипт на Python 3:
Класть в папку с ромами, отобразит все подходящие ромы.
« Последнее редактирование: 17 Май 2023, 12:36:30 от Sharpnull »

Оффлайн free.gen

  • Пользователь
  • Сообщений: 293
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #165 : 21 Май 2023, 18:09:33 »
Хочу изменить кое какую отсебятину в переводе игры Crusader of Centy [SMD].
Текст оригинала (U) удалось найти с помощью Translhextion, там все буквально в пару кликов через Scan Relative. Находит закодированный текст и создает таблицу.
А вот с переведенной версией он уже не хочет искать ничего (В поиск ввожу кириллицу). Выделяет не то что нужно. То есть как бы не находит этот переведенный текст, как в оригинале.
Может что-то не так делаю? В настройках пробовал менять кодировку, все равно не ищет.
Хочу сделать правильную таблицу для этого перевода, так чтобы в редакторе все отображалось как и в игре - на русском. Это возможно?
Прошу советов и тд, как лучше и проще это все сделать.

Онлайн Sharpnull

  • Пользователь
  • Сообщений: 4998
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #166 : 21 Май 2023, 21:10:39 »
Хочу сделать правильную таблицу для этого перевода
Для диалогов графика шрифта с F5000 - 8x16px, 1bpp. Из CrystalTile2:
« Последнее редактирование: 22 Май 2023, 14:35:50 от Sharpnull »

Оффлайн free.gen

  • Пользователь
  • Сообщений: 293
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #167 : 22 Май 2023, 02:28:54 »
Sharpnull, действительно, сам не допер просто сопоставить шрифты.  :blush:
Таблица готова, однако все равно в Translhextion кракозябры и пробелы. Отображаются только спецсимволы.

Разобрался. Таблицу нужно создать в кодировке OEM 866.
Спасибо.
« Последнее редактирование: 22 Май 2023, 02:36:48 от free.gen »

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 899
  • Happy Games Only!
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #168 : 16 Июнь 2023, 06:54:22 »
Есть вопрос, но он с некоторым уклоном в железо, не совсем уверен, будет ли это уместно в этой теме.

Программы для работы с файлами на компьютере, такие как HEX-редакторы в основном оперируют байтами, в которых 8 бит, соответственно, конкретный адрес в файле указывает на конкретный байт. Но есть ПЗУ с 16-битной шиной, у них на одном адресе "лежит" уже 16 бит, получается что адресов будет меньше в два раза.

Как перевести адрес из файла в адрес, который будет на шине адреса ПЗУ и обратно? Просто поделить на 2? А если нужно наоборот, перевести адрес из ПЗУ в адрес в файле, то умножить на 2?

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1144
    • ВКонтакте
    • Steam
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #169 : 17 Июнь 2023, 00:45:07 »
Действительно, слишком железно, слишком непонятно.
конкретный адрес в файле указывает на конкретный байт.
Этот адрес может состоять из любого количества байт - 1, 2, 4, 8. Он может быть с "большим" удобством для глаз (Big Endian - 1234), а может быть с "маленьким" (Little Endian - 3412).
есть ПЗУ с 16-битной шиной, у них на одном адресе "лежит" уже 16 бит, получается что адресов будет меньше в два раза.
Т.е. к таким ПЗУ можно обращаться только по адресам, кратным двум байтам? Судя по твоим сообщениям, это связано с Сегой?
Как перевести адрес из файла в адрес, который будет на шине адреса ПЗУ и обратно?
Т.е. в файле адрес однобайтный? И не достаточно расширить его до двух байт, заполнив второй нулём?

Скорее всего, тебе к Кластеру (на Хабре).

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 899
  • Happy Games Only!
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #170 : 17 Июнь 2023, 06:53:22 »
Действительно, слишком железно, слишком непонятно.
Ну вот смотрите. Вот у нас есть ПЗУ. Пускай это будет S29GL512P:



У него есть адресные выводы - A0-A24, на них можно в двоичном виде выставить адрес. Данные будут выдаваться на шине данных - DQ0-DQ15. Всего адресных выводов получается 25 (так как нумерация с нуля) 2^25 получается 33554432, 32 миллиона, но вмещает наше ПЗУ 64 мегабайта, то есть байт в два раза больше, чем адресов, но выводов данных у нас 16, поэтому на них будет сразу два байта.

Нельзя просто так взять адрес из HEX-редактора и выставить его на шине адреса, чтобы получить нужные данные. В HEX-редакторе крайний адрес будет 3FFFFFF, на S29GL512P адрес будет 1FFFFFF (если перевести из двоичного в шестнадцатеричное).

Нужно понять, как "перевести" значение адреса из файла, чтобы его можно было выставить на шине адреса ПЗУ, чтобы получить те же данные.
Т.е. к таким ПЗУ можно обращаться только по адресам, кратным двум байтам?
Не знаю.
Судя по твоим сообщениям, это связано с Сегой?
Да.

Оффлайн Марат

  • Пользователь
  • Сообщений: 556
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #171 : 17 Июнь 2023, 07:13:37 »
Насколько я понимаю шина данных в 16 бит, лишь означает, что можно считывать/записывать сразу два байта за одну операцию. А можно и по одному байту читать/записывать. А если адресов не хватает, видимо, есть какой то маппер, который переключает банки.

Добавлено позже:
Ну вот из даташит: в режиме побайтного доступа вывод dq15/a1 используется в качестве младшего бита при адресации. Таким образом будет уже 2^26 степени.
А в режиме чтения вордами, как вы и говорили, видимо, доступ будет по чётным адресам.
« Последнее редактирование: 17 Июнь 2023, 07:41:51 от Марат »

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 899
  • Happy Games Only!
    • Просмотр профиля
Re: [ALL] Вопросы новичков
« Ответ #172 : 17 Июнь 2023, 20:27:58 »
А можно и по одному байту читать/записывать.
Это если свой код писать наверно нужно учитывать. А мне нужно просто адрес из файла превратить в комбинацию бит, которые можно будет выставить на шине адреса ПЗУ.
А если адресов не хватает, видимо, есть какой то маппер, который переключает банки.
Мимо! У большинства картриджей нет ничего кроме ПЗУ. Там наоборот нужна дополнительная логика, чтобы подключить 8-битное ПЗУ. Есть у меня один странноватый картридж для Mega Drive с 8-битным ПЗУ, там еще стоит 74LS374, похоже при помощи него как-то "адаптируют" 8-битную шину к 16-битной, но я не разбирался, как это работает.
Ну вот из даташит: в режиме побайтного доступа вывод dq15/a1 используется в качестве младшего бита при адресации. Таким образом будет уже 2^26 степени.
А в режиме чтения вордами, как вы и говорили, видимо, доступ будет по чётным адресам.
Про вывод /BYTE вообще не в тему, он на картриджах для Mega Drive вообще не используется и подтянут к лог. "1".

Оффлайн Марат

  • Пользователь
  • Сообщений: 556
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #173 : 17 Июнь 2023, 21:10:04 »
Про мегадрайв в вашем сообщении нет упоминания

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #174 : 10 Июль 2023, 00:28:26 »
А что за регистр такой VDP_PSG? 0x00C00011
Нигде не могу найти упоминания

Онлайн Sharpnull

  • Пользователь
  • Сообщений: 4998
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #175 : 10 Июль 2023, 01:03:46 »
Turbo2000, регистр 0xC00011 для 68K для работы с SN76489: https://www.smspower.org/Development/SN76489.

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #176 : 10 Июль 2023, 01:11:34 »
Turbo2000, регистр 0xC00011 для 68K для работы с SN76489: https://www.smspower.org/Development/SN76489.

Спасибо, странно, что он в отладчике называется VDP_PSG

Оффлайн Adven

  • Пользователь
  • Сообщений: 1
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #177 : 29 Сентябрь 2023, 21:11:28 »
Возможно уже есть хак на алиен 3 нес что бы боссы двигались рандомно а не как бараны по траектории невидя перса ?

Оффлайн MaxWooD

  • Пользователь
  • Сообщений: 1075
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #178 : 30 Сентябрь 2023, 08:17:52 »
Возможно уже есть хак на алиен 3 нес что бы боссы двигались рандомно а не как бараны по траектории невидя перса ?
Такого хака нет, потому что никто не предлагал альтернативные маршруты для дальнейшей их рандомизации. Возможно вы будете первый, кто выскажет такие предложения в этой теме...

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8076
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #179 : 25 Ноябрь 2023, 16:19:13 »
Вопрос про картриджи от Talking_Sword перемещён в отдельную тему:
https://www.emu-land.net/forum/index.php/topic,88657.msg1576812.html