| Разработка и ромхакинг > Ромхакинг |
| Вопросы новичков |
| << < (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: взял и сам разобрался на основе подсказок. Еще и инфой поделился. Все бы так делали. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |