Разработка и ромхакинг > Ромхакинг
Вопросы новичков
<< < (10/22) > >>
Turbo2000:

--- Цитата: Sharpnull от 10 Июль 2023, 01:03:46 ---Turbo2000, регистр 0xC00011 для 68K для работы с SN76489: https://www.smspower.org/Development/SN76489.

--- Конец цитаты ---

Спасибо, странно, что он в отладчике называется VDP_PSG
Adven:
Возможно уже есть хак на алиен 3 нес что бы боссы двигались рандомно а не как бараны по траектории невидя перса ?
MaxWooD:

--- Цитата: Adven от 29 Сентябрь 2023, 21:11:28 ---Возможно уже есть хак на алиен 3 нес что бы боссы двигались рандомно а не как бараны по траектории невидя перса ?
--- Конец цитаты ---
Такого хака нет, потому что никто не предлагал альтернативные маршруты для дальнейшей их рандомизации. Возможно вы будете первый, кто выскажет такие предложения в этой теме...
paul_met:
Вопрос про картриджи от Talking_Sword перемещён в отдельную тему:
https://www.emu-land.net/forum/index.php/topic,88657.msg1576812.html
Nik Pi:
Доброго времени суток!
Вопрос по SMD. Конвертация музыки для ром-хака;
У меня при конвертации файлов VGM в формат SMPS- файлы весят больше, чем сама игра  0_0
Хотел узнать, есть ли способ оптимизации smps файлов помимо smps optimizer?
SeregaZ:
потому что вгм - это дамп регистров во времени. а smps, как и gems - это по сути ноты, что играть, с какими задержками. то есть там не нужно содержать прям ваще всеееее как это вгмка делает. в вгм нет понятия инструмент. каждый раз получается там выставляется не инструмент номер 8 к примеру, а все 39 или сколько то там параметров в регистры инструмента нужного канала. в драйверах же есть что-то типа "выставить инструмент номер 8" и драйвер уже сам все чо надо распихивает читая данные инструмента из одного и того-же места. второе - вгм это как бы вся песня целиком. восемь куплетов, три припева... драйверу это нафиг не надо. ему достаточно 1 куплет и 1 припев. а дальше он их просто мешает в нужном порядке типа 1 куплет, 1 припев, 1 куплет, 1 куплет, 1 припев... в результате песни занимают грамульки совсем. так-же имеет значение сэмплы есть ли в песне. если есть, то песня тоже раздувается в вгм. в драйвере же указано просто: играть сэмпл номер 3. он лезет туда где сэмплы лежат, читает оттуда... вгмки оптимизированные тоже такое в принципе умеют - играть сэмплы из банка внутри вгм, а не из регистров 2А чтоль для сэмплов регистр используется... но чаще всего сэмплы именно что просто регистром играются, а не из банка. лень людям вгмки оптимизировать :)
Talking_Sword:
Подскажите, бывают ли эмуляторы Sega Mega Drive, которые бы могли запретить игре использовать SRAM для сохранений в картридже? То есть, сымитировать работу игры на картридже без SRAM.
Sharpnull:

--- Цитата: Talking_Sword от 27 Январь 2024, 10:57:57 ---сымитировать работу игры на картридже без SRAM
--- Конец цитаты ---
Укажите неверный промежуток адресов SRAM в заголовке рома - 0x1B4-0x1B7 (начало), 0x1B8-0x1BB (конец). Для простой SRAM в Genesis Plus GX так работает: https://github.com/ekeeke/Genesis-Plus-GX/blob/master/core/cart_hw/sram.c, т. е. нужно, чтобы не было T-26013 в промежутке 0x182-0x18D (rominfo.product), для части ромов есть определение своей SRAM, нужно учесть по этому коду: https://github.com/ekeeke/Genesis-Plus-GX/blob/master/core/cart_hw/md_cart.c, чтобы не было переопределения. UPD: Или просто скомпилируйте эмулятор с отключенной SRAM.
Talking_Sword:

--- Цитата: Sharpnull от 27 Январь 2024, 11:48:44 ---Genesis Plus GX
--- Конец цитаты ---
Он есть только в составе Retroarch и Bizhawk. Отдельно его не скачать. Не очень хотелось устанавливать Retroarch или Bizhawk только ради этого.
--- Цитата: Sharpnull от 27 Январь 2024, 11:48:44 ---Укажите неверный промежуток адресов SRAM в заголовке рома - 0x1B4-0x1B7 (начало), 0x1B8-0x1BB (конец).
--- Конец цитаты ---
В Gens этот трюк не помог.
Sharpnull:

--- Цитата: Talking_Sword от 27 Январь 2024, 12:51:22 ---Не очень хотелось устанавливать Retroarch или Bizhawk только ради этого
--- Конец цитаты ---
BizHawk нужно просто распаковать, запустить EmuHawk.exe, открыть ром и всё. Не знаю насколько проще может быть.
UPD: Во Fusion есть опция Disable SRAM :) Попробуйте, если он конечно запустит интересующий ром (т. к. древность вместе с Gens).
Talking_Sword:
Sharpnull, попробовал Fusion. Опция-то есть, но при ее отключении игра похоже все равно "видит" SRAM. Подозреваю, может она просто отключает запись содержимого SRAM в память.

Ладно. Завтра попробую скачать BizHawk (сегодня уже просто лень с этой игрой ковыряться).
Talking_Sword:
Кто-нибудь может подсказать, как найти в меню многоигровки значение, отвечающее за количество игр?

Я попробовал так: перевел количество игр в шестнадцетиричное, затем в HEX-редакторе поменял все значения, совпадающие с количеством игр, на новое. Конечно код меню в таком виде не будет работать, так как заменились и те данные, которые не стоило бы менять. Но я загрузил оба файла в программу Visual Sravnilka. Если кто не знает, эта программа может не только сравнивать файлы, но и "подкидывать" измененные участки в оригинальный файл и сразу же запускать ROM на эмуляторе. Подкидывая поочередно измененные участки нашел тот, после которого количество игр изменилось.

Но то, что описал выше, "прокатило" у меня только с одним меню. А то меню, которое нужно отредактировать сейчас, так хакнуть не получилось. Ранее еще исследовал другое меню, там была немного другая система: отдельно задавалось количество "страниц" (то есть, экранов со списком игр) и отдельно задавалось количество игр на каждой "странице". Попробовал на этом меню, попробовал поискать и заменить количество "страниц" - не помогло.

Все. На этом моя фантазия закончилась.

Кто-нибудь знает еще методы, которыми можно вычислить, где расположено это значение?
Cyneprepou4uk:
Talking_Sword, если при движении курсора вперед номер игры сначала увеличивается, а только потом сравнивается с лимитом, то значение лимита может быть на 01 больше, чем количество игр.

С дебаггером будет быстрее, чем наугад менять байты и проверять.
Talking_Sword:

--- Цитата: Cyneprepou4uk от 14 Февраль 2024, 13:29:35 ---Talking_Sword, если при движении курсора вперед номер игры сначала увеличивается, а только потом сравнивается с лимитом, то значение лимита может быть на 01 больше, чем количество игр.
--- Конец цитаты ---
Попробовал, не помогло.
--- Цитата: Cyneprepou4uk от 14 Февраль 2024, 13:29:35 ---С дебаггером
--- Конец цитаты ---
Увы, это для меня как Китайская грамота. Но я думал, что придется к этому прибегнуть, если ничего другого не сработает.

Можете примерно объяснить, как через отладчик искать значение?
Беларус:
У тебя многоигровка для NES?
Sharpnull:

--- Цитата: Talking_Sword от 14 Февраль 2024, 15:49:43 ---Попробовал, не помогло.
--- Конец цитаты ---
Ищите на 1 меньше кол-ва игр, а не больше: счёт от 0, поэтому либо кол-во игр, либо -1.
--- Цитата: Talking_Sword от 14 Февраль 2024, 15:49:43 ---Можете примерно объяснить, как через отладчик искать значение?
--- Конец цитаты ---
Для NES в Mesen в Memory найти адрес с индексом выделенной игры, при сдвиге курсора в меню многоигровки это будет видно (либо через поиск читов). Поставить Breakpoint на чтение, при сдвиге курсора случится остановка на коде например LDA $33 | CMP $3C, тогда значение хранится в $3C и было записано ранее, нужно ставить Breakpoint на запись в $3C, но туда тоже могли записать из другого RAM адреса, тогда уже запись туда отслеживать. Если вида LDA $33 | CMP #$07 для 8 игр, тогда это и есть лимит. Также нужно менять переход от 1-го игры к последней похожим образом.
Talking_Sword:

--- Цитата: perfect_genius от 14 Февраль 2024, 15:56:38 ---У тебя многоигровка для NES?
--- Конец цитаты ---
Совсем забыл сказать, Sega Mega Drive.
--- Цитата: Sharpnull от 14 Февраль 2024, 17:33:17 ---Ищите на 1 меньше кол-ва игр, а не больше: счёт от 0, поэтому либо кол-во игр, либо -1.
--- Конец цитаты ---
Не помогло.
Sharpnull:

--- Цитата: Talking_Sword от 14 Февраль 2024, 17:45:35 ---Не помогло.
--- Конец цитаты ---
Там может быть и BCD запись (вряд ли), скиньте ром, уже давно посмотрели бы.
Talking_Sword:
Sharpnull, похоже, там нет BCD. Сначала через RAM Search смог определить адреса, по которым хранится положение курсора - 0xFF0E19 - строка, на которой стоит курсор, 0xFF0E17 - номер "страницы". При помощи отладчика "и какой-то матери" смог определить, где в ROM-е задается количество страниц с играми. И да, там оказалась "система", в которой отдельно задается количество страниц, и скорее всего, где-то должно задаваться количество игр на каждой странице. При чем там какая-то извращенная система - отдельно задается максимальная страница, и отдельно задается страница, которая появится при листании с первой страницы назад. 0x30DF - максимальная страница, 0x2FCD - страница, которая появляется при листании с первой страницы назад.

Добавлено позже:

--- Цитата: Sharpnull от 14 Февраль 2024, 18:17:30 ---скиньте ром, уже давно посмотрели бы.
--- Конец цитаты ---
Если я скину ROM, то вы, скорее всего сами разберетесь, фактически сделав мою работу за меня. Мне не хочется вас грузить своей работой.

Добавлено позже:
Я смог разобраться с кодом меню. Спасибо Sharpnull за объяснение, как искать значение через отладчик. Не смотря на то, что там было описано для NES, я смог применить этот совет и для Mega Drive.

Для начала, я изучал вот это меню (прикрепленный файл в конце сообщения). Смог найти там значения, которыми можно изменить размеры списка игр. Там очень извращенческая система.

Адреса в ROM-е:
0x30DF - максимальная страница
0x2FCD - страница, которая появляется при листании с первой страницы назад.
0x2F3B - номер максимальной страницы, чтобы код меню смог отличить ее от "обычной" и ограничить на ней количество строчек (для движения курсора вниз).
0x2EB9 - номер максимальной страницы, чтобы код меню смог отличить ее от "обычной" и ограничить на ней количество строчек (для движения курсора вверх).

0x2F45 - количество строчек на "максимальной" странице.
0x2ECB - на какую строчку переставить курсор, если нажать "вверх" на "максимальной" странице.

0x2F99 - количество строчек на "обычной" странице.
0x2F1D - на какую строчку переставить курсор, если нажать "вверх" на "обычной" странице.
Cyneprepou4uk:

--- Цитата: Talking_Sword от 14 Февраль 2024, 18:38:32 ---Если я скину ROM, то вы, скорее всего сами разберетесь, фактически сделав мою работу за меня. Мне не хочется вас грузить своей работой.
--- Конец цитаты ---

Мое уважение  :hi: взял и сам разобрался на основе подсказок. Еще и инфой поделился. Все бы так делали.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

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