|
shedevr.org.ru Группа перевода приставочных игр "ШЕДЕВР"
|
Предыдущая тема :: Следующая тема |
Понравился ли вам хак Черепашек? |
Да |
|
77% |
[ 17 ] |
Нет |
|
22% |
[ 5 ] |
|
Всего проголосовало : 22 |
|
Автор |
Сообщение |
Shiru
Зарегистрирован: 25.10.2006 Сообщения: 295 Откуда: Russia, Moscow
|
Добавлено: Пн Дек 03, 2007 9:10 pm Заголовок сообщения: |
|
|
У 6502 стек ограничен 256 байтами, и если переполнится - затрёт своё начало. Маловероятно, что он где-то используется почти полностью, но возможность глюков по этой причине нужно учитывать. |
|
Вернуться к началу |
|
|
Shredder
Зарегистрирован: 20.02.2007 Сообщения: 73 Откуда: Россия, Самара.
|
Добавлено: Пн Дек 03, 2007 11:33 pm Заголовок сообщения: |
|
|
HoRRoR писал(а): | Если ты положешь и вынешь - то результат такой же, что и без это операции, т.е. всё станет как и было. |
Ага, понятно. Спасибо.
Так что ли?
-----------
Shiru писал(а): | У 6502 стек ограничен 256 байтами, и если переполнится - затрёт своё начало. Маловероятно, что он где-то используется почти полностью, но возможность глюков по этой причине нужно учитывать. |
Но если в момент выполнения вышеуказанных операций (специально ставил Execute на задействованные ячейки и смотрел) стек выглядит примерно так:
Тогда, насколько я понимаю, опасаться нечего?
-------------
Нашёл, кстати, как работает AI и откуда там всё берётся. Только разбираться ещё надо, поэтому на постоянно пока ничего не менял. Будет время, думаю, примусь за него. |
|
Вернуться к началу |
|
|
Shredder
Зарегистрирован: 20.02.2007 Сообщения: 73 Откуда: Россия, Самара.
|
Добавлено: Ср Дек 05, 2007 2:56 am Заголовок сообщения: |
|
|
Блин, была небольшая недоработка. Когда перебрасывал Дракон - "зависимость от веса" пропускалась, т.к. его состояние 09 в ячейке 0520/0521 заканчивалось до падения противника на землю.
Устранил весьма нехитрым способом, ссылку на патч заменил, заодно и еще 4 совершенно лишних байта убрал: http://i044.radikal.ru/0712/fa/4c2e79aad0f8.png |
|
Вернуться к началу |
|
|
TiberiyLTim RRC2008
Зарегистрирован: 14.07.2006 Сообщения: 446 Откуда: 39
|
Добавлено: Ср Дек 05, 2007 12:55 pm Заголовок сообщения: |
|
|
что-то патч заметно сбавил в весе со времён первых... _________________ http://RomHacking.RU |
|
Вернуться к началу |
|
|
Shredder
Зарегистрирован: 20.02.2007 Сообщения: 73 Откуда: Россия, Самара.
|
Добавлено: Ср Дек 05, 2007 2:48 pm Заголовок сообщения: |
|
|
Наоборот. У тебя на сайте в разделе Romhack почему-то лежит самый первый (тот, что по ссылке NESHak/PATCH_TMNT_TF_hack.rar), имеющий размер 4.07 Кб в архиве и 5.71 - в чистом виде, хотя при скачивании с Шедевра на 2-й странице темы отображается другая ссылка - NESHak/Turtles_tournament_hack.rar, и по ней-то как раз доступен новый - 4.38 и 6.18 Кб соответственно. |
|
Вернуться к началу |
|
|
evgeny RRC2008
Зарегистрирован: 08.02.2006 Сообщения: 188
|
Добавлено: Ср Дек 05, 2007 4:31 pm Заголовок сообщения: |
|
|
Эх, Рокстеди бы туда еще добавить. Всегда мечтал за носорога сыграть. Вряд ли только места хватит на полноценного персонажа. |
|
Вернуться к началу |
|
|
Shiru
Зарегистрирован: 25.10.2006 Сообщения: 295 Откуда: Russia, Moscow
|
Добавлено: Чт Дек 06, 2007 11:32 am Заголовок сообщения: |
|
|
Shredder писал(а): | Но если .. стек выглядит примерно так:
Тогда, насколько я понимаю, опасаться нечего? |
Ну вроде да, с виду свободного места много. Хотя там ещё в начале страницы видна какая-то мелочь, это могут быть какие-нибудь переменные, которые туда поместили по каким-то соображениям. Если так, то надо следить, чтобы стек их не затёр. Но для этого в него придётся положить ещё ~160 байт, что маловероятно. |
|
Вернуться к началу |
|
|
Shredder
Зарегистрирован: 20.02.2007 Сообщения: 73 Откуда: Россия, Самара.
|
Добавлено: Ср Фев 20, 2008 2:58 am Заголовок сообщения: |
|
|
В хак я снова внес полезные изменения. Патч выложу, как только удастся избавиться от последнего (вроде) глюка разработчиков, когда при подходе друг к другу вплотную и одновременном затем нажатии "крестика" друг от друга персы "идя, не могут отойти". Особенно часто это бывает с компом - в комбинации Шреддер vs черепаха.
Но пока времени нет этим всем заниматься.
Цитата: | Эх, Рокстеди бы туда еще добавить. Всегда мечтал за носорога сыграть. Вряд ли только места хватит на полноценного персонажа. |
Возможно, дело не только в месте. Дело, во-первых, в том, что подавляющее число показателей для всех персонажей берется там следующим образом:
В РОМе подряд идут семь констант - по числу персонажей, загружающиеся с помощью переменной, имеющей обычно значения от 0 до 6. По бокам же, понятное дело, будут уже другие данные. Так что просто так восьмую туда не впихнешь, и вряд ли это вообще возможно. Или я неправ?
Кстати, а возможно ли вправду расширить ром для каких-нибудь целей и при этом без смены маппера? Ведь игра весит 256 Кб, притом, что на том же именно маппере я видел игры по 384 Кб как минимум. |
|
Вернуться к началу |
|
|
evgeny RRC2008
Зарегистрирован: 08.02.2006 Сообщения: 188
|
Добавлено: Ср Фев 20, 2008 5:48 am Заголовок сообщения: |
|
|
Ром-то расширить можно на любом маппере, но обычно только путем добавления банков. А джамп с одного банка на другой так просто не сделать.
Ну а любые данные, как и программы можно в конец банка переносить, если место есть. Другое дело если, например в одном банке все тайловые карты персонажей, и места в том же банке больше нет. Думаю, что чтобы распределить эти карты между 2мя банками это надо основатеьно программу переписывать, ставить кучу дополнительных условий и.т.д. Именно в этом я вижу главную проблему. |
|
Вернуться к началу |
|
|
Shredder
Зарегистрирован: 20.02.2007 Сообщения: 73 Откуда: Россия, Самара.
|
Добавлено: Ср Фев 20, 2008 7:39 am Заголовок сообщения: |
|
|
Да, место в РОМе разделено на 2 равных части: PRG-ROM - 128 Кб и СHR - также 128. В PRG место свободное есть, чем я пока и пользуюсь, захотев внести туда какую-нибудь свою программу. В CHR же свободного места в виде FF как раз таки и нет - это легко можно видеть, пробежавшись мышкой в хексредакторе, есть только нули какие-то в самом конце, да и то всего 1 Кб. |
|
Вернуться к началу |
|
|
evgeny RRC2008
Зарегистрирован: 08.02.2006 Сообщения: 188
|
Добавлено: Ср Фев 20, 2008 11:20 am Заголовок сообщения: |
|
|
Не на две части. PRG делится на части по 16 кб. Ну или может быть по 32 кб. Если по 16 то вроде такой банк до 32 можно расширить. Но точно не скажу. |
|
Вернуться к началу |
|
|
Griever RRC2008
Зарегистрирован: 15.07.2005 Сообщения: 112 Откуда: Н.Новгород
|
Добавлено: Ср Фев 20, 2008 3:14 pm Заголовок сообщения: |
|
|
Цитата: | PRG делится на части по 16 кб. Ну или может быть по 32 кб |
Из описания заголовка .nes файла:
Цитата: | Byte Contents
---------------------------------------------------------------------------
0-3 String "NES^Z" used to recognize .NES files.
4 Number of 16kB ROM banks.
5 Number of 8kB VROM banks. |
Цитата: | Если по 16 то вроде такой банк до 32 можно расширить. |
Позволь с тобой не согласиться.
Цитата: | В CHR же свободного места в виде FF как раз таки и нет - это легко можно видеть, пробежавшись мышкой в хексредакторе, есть только нули какие-то в самом конце, да и то всего 1 Кб. |
Как раз легче это увидеть в тайловом редакторе. А чем тебе нули не свободное место?
На самом деле, расширить РОМ не так сложно. Насколько я знаю, это максимальный размер, который поддерживает mmc3. Уверен, ты не используешь и 1% от него, ну да больше не меньше Согласен, что большая проблема - использовать появившееся свободное место - включать и выключать банк можно только извне (т.е. обязательно наличие свободного места в коренном hardwired банке). Если есть - организовать переключение становится не так сложно. _________________
|
|
Вернуться к началу |
|
|
evgeny RRC2008
Зарегистрирован: 08.02.2006 Сообщения: 188
|
Добавлено: Ср Фев 20, 2008 3:50 pm Заголовок сообщения: |
|
|
Цитата: | Позволь с тобой не согласиться |
Ну ромы в которых всего 1 банк (без маппера) 16k prg расширяются до 32 легко. (Battle City, lode runner и.т.д)
И поинтеры (джампы) работают на эти 32 кб. Сам проверял. По идее должно работать и иных ситуациях. В заголовке естественно указывается как 2 банка по 16. |
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Ср Фев 20, 2008 4:30 pm Заголовок сообщения: |
|
|
Griever писал(а): | Согласен, что большая проблема - использовать появившееся свободное место - включать и выключать банк можно только извне (т.е. обязательно наличие свободного места в коренном hardwired банке). Если есть - организовать переключение становится не так сложно. |
Насколько я помню из позапрошлогодних ковыряний, во многих играх переключение банков осуществляется отдельной процедурой, хранящейся в адресном пространстве, которое не меняется в течение всей игры (скажем, окно C000-FFFF). Этой процедуре просто передаётся номер банка, и она сама переключает окно (например, 8000-BFFF) на другую область РОМа. Соответственно, даже если пустого места для своего кода в игре нет совершенно, вовсе не обязательно писать каждый раз код переключения банка, достаточно вызвать процедуру (уж на пару инструкций - LDA + JSR - место всегда можно найти). А если этой процедуры нет, придётся её организовать своими силами (но зато только один раз). |
|
Вернуться к началу |
|
|
Shredder
Зарегистрирован: 20.02.2007 Сообщения: 73 Откуда: Россия, Самара.
|
Добавлено: Ср Фев 20, 2008 4:36 pm Заголовок сообщения: |
|
|
Цитата: | Не на две части. PRG делится на части по 16 кб. Ну или может быть по 32 кб. Если по 16 то вроде такой банк до 32 можно расширить. Но точно не скажу. |
Да не, под частями я там имел в виду лишь PRG и CHR, и ничего более. Про остальное-то я в курсе.
Фигассе, а доку по этому делу где-нибудь почитать можно?
[Update] А, всё, на твоем сайте кажись нашёл!
И как я понимаю, на настоящей приставке такая расширенная игра тоже бы без проблем запустилась? |
|
Вернуться к началу |
|
|
Griever RRC2008
Зарегистрирован: 15.07.2005 Сообщения: 112 Откуда: Н.Новгород
|
Добавлено: Ср Фев 20, 2008 7:11 pm Заголовок сообщения: |
|
|
Цитата: | Ну ромы в которых всего 1 банк (без маппера) 16k prg расширяются до 32 легко. |
Это да. Просто речь шла о ситуации, когда банки по 16 (т.е. подразумевалось, что их несколько).
Цитата: | на настоящей приставке такая расширенная игра тоже бы без проблем запустилась? |
Уверен, что да. Нужна только определённая плата, поддерживающая подобное количество банков. Например, NES-TKROM (если не ошибаюсь, великий Kirby's Adventure на такой плате и сидит), NES-TLROM или NES-TSROM. Ну, или универсальные пиратские mmc3 клоны... _________________
|
|
Вернуться к началу |
|
|
evgeny RRC2008
Зарегистрирован: 08.02.2006 Сообщения: 188
|
Добавлено: Чт Фев 21, 2008 5:47 am Заголовок сообщения: |
|
|
Хм... На 4 маппере банки по 8кб, оказывается. |
|
Вернуться к началу |
|
|
Shredder
Зарегистрирован: 20.02.2007 Сообщения: 73 Откуда: Россия, Самара.
|
Добавлено: Вс Фев 24, 2008 3:14 am Заголовок сообщения: |
|
|
Shredder писал(а): | Цитата: | Эх, Рокстеди бы туда еще добавить. Всегда мечтал за носорога сыграть. Вряд ли только места хватит на полноценного персонажа. |
Возможно, дело не только в месте. Дело, во-первых, в том, что подавляющее число показателей для всех персонажей берется там следующим образом:
В РОМе подряд идут семь констант - по числу персонажей, загружающиеся с помощью переменной, имеющей обычно значения от 0 до 6. По бокам же, понятное дело, будут уже другие данные. Так что просто так восьмую туда не впихнешь, и вряд ли это вообще возможно. Или я неправ? |
evgeny писал(а): | Ну а любые данные, как и программы можно в конец банка переносить, если место есть. |
Поясню на конкретном примере, что тогда я имел в виду.
Возьмем, скажем, защиту:
Здесь мы видим ADC $DE70, Y , где Y - переменная, означающая конкретного персонажа, в зависимости от которой берется значение защиты по адресам $DE70 - $DE76, - т.к. всего персонажей семь. В соответствующем же куске PRG рома, понятное дело, с обеих сторон прилегают уже другие данные, и места свободного нет. И такие вот ряды из 7-ми показателей разбросаны по всему рому, их великое множество и идут они не подряд, а таким же образом в произвольном порядке расположены между кусками прочего кода. То есть даже если переносить их в свободные части рома, то из-за такого расположения данных, думаю, это придется тогда весь код переписывать... Так что я лично не представляю, как можно добавить туда, например, восьмого.
А зачем столько PRG по сравнению с CHR притом, что основное место, предположительно, должно уходить именно под графику? Или это просто как образец и принципиального значения не имеет?
И, как я понял, чтобы расширить ром, достаточно просто добавить нужное количество байтов и указать число банков в заголовке, и все, что ли?
Кстати:
Цитата: | Насколько я знаю, это максимальный размер, который поддерживает mmc3. |
Таким простым способом (добавить нули и изменить заголовок) я расширял ром до более 1 Мб, и при этом он без проблем запускался. В каком смысле тогда "не поддерживает" ? Переключение банков потом не сможет работать? Или что?
Во, завалил вопросами
И все же, если использовать добавленное место, то как именно переключать банки - есть где-нибудь по этому русские документы? Я нигде не нашел. Или там снова надо самому ковыряться, находя эту переключающую процедуру? |
|
Вернуться к началу |
|
|
Griever RRC2008
Зарегистрирован: 15.07.2005 Сообщения: 112 Откуда: Н.Новгород
|
Добавлено: Вс Фев 24, 2008 10:58 am Заголовок сообщения: |
|
|
Цитата: | И такие вот ряды из 7-ми показателей разбросаны по всему рому, их великое множество и идут они не подряд, а таким же образом в произвольном порядке расположены между кусками прочего кода. То есть даже если переносить их в свободные части рома, то из-за такого расположения данных, думаю, это придется тогда весь код переписывать... Так что я лично не представляю, как можно добавить туда, например, восьмого. |
Да, действительно проблема. Можно ещё прямо в процедуре проверять Y = 8, и если он больше, то прыгать в свой банк, читать своё значение и возвращаться в процедуру уже после загрузки, учитывая количество параметров, это может быть очень трудоёмким. Идеальный вариант - модуляризовать банк, в котором содержатся параметры игроков - т.е. сделать его адресонезависимым составив полный исходный код банка: тогда можно будет прямо в тело процедуры и данных вставлять свой код и данные - главное, чтобы всё в размеры банка влезло. По личному опыту могу сказать, что это практически невозможно - я сырцую 16KiB банк Battle City c июня 2007 и, думаю, что закончу ещё не скоро...
Цитата: | А зачем столько PRG по сравнению с CHR притом, что основное место, предположительно, должно уходить именно под графику? |
Я исходил из размеров, поддреживаемых платами mmc3: например, NES-TKROM - Max. 512K PRG, 256K CHR, 8K WRAM, Battery-backed. CHR у всех плат максимально 256K.
Цитата: | И, как я понял, чтобы расширить ром, достаточно просто добавить нужное количество байтов и указать число банков в заголовке, и все, что ли? |
Да. Иногда, трудно бывает понять какие именно банки теперь не используются и занулить их, а так - основная проблема с переключением банков.
Цитата: | Таким простым способом (добавить нули и изменить заголовок) я расширял ром до более 1 Мб, и при этом он без проблем запускался. В каком смысле тогда "не поддерживает" ? Переключение банков потом не сможет работать? |
Когда я то же самое проделывал с Kirby's Adventure, мне переключить добавленный банк не удалось - FCEU не дал (переключение произошло на зазеркаленный оригинальный банк). Другое дело, что FCEU в этом случае, правильно эмулирует поведение mmc3 (в котором ограничение на максимальное количество банков введено неспроста), и, скорее всего, так же поведёт себя и реальное железо.
Если вопрос с железом не так принципиален, то можно попробовать отыскать неточный эмулятор и запускать всё время на нём (или модифицировать существующий, как сделано в хаке MK от Kabal'а).
Кстати, количество банков можно только удваивать - аппаратная особенность NES.
Цитата: | И все же, если использовать добавленное место, то как именно переключать банки - есть где-нибудь по этому русские документы? |
Есть. Но я бы поискал процедуру переключения. _________________
|
|
Вернуться к началу |
|
|
Shredder
Зарегистрирован: 20.02.2007 Сообщения: 73 Откуда: Россия, Самара.
|
Добавлено: Пн Мар 10, 2008 5:29 am Заголовок сообщения: |
|
|
Хотелось уж и последний глюк добить, а именно, - обнаруженное мной уже достаточно давно чудо, когда верхняя "граница поражения" 1-го игрока почему-то всегда находится на несколько пикселей выше, нежели у второго. Но что-то пока не получается найти, из-за чего...
http://ifolder.ru/5673278
Ладно, убрал хотя бы ту "невозможность разойтись", причем сразу в двух вариантах - в том, как я описывал ранее, и еще у левой стены: если один игрок стоял к ней вплотную, а второй стоял вплотную уже к нему, то при простом нажатии "назад" он также не мог отойти (другой при этом мог вообще ничего не делать или даже лежать - от его действий ничего не зависело).
Все это баги разработчиков.
Наконец-то убрана любая "неуязвимость" (надеюсь теперь, что вся), какую только можно убрать для прибавки играбельности. Конкретно: от одного попадания в цель до другого при любом ударе должно было пройти некоторое хоть и малое, но искусственно насаженное время - этого часто было достаточно, чтоб, "попадая, промахиваться" = очень неприятно. Ранее я еще с препятствием сталкивался, из-за которого не мог его стереть - теперь удалось обойти. |
|
Вернуться к началу |
|
|
TiberiyLTim RRC2008
Зарегистрирован: 14.07.2006 Сообщения: 446 Откуда: 39
|
Добавлено: Пн Мар 10, 2008 6:55 pm Заголовок сообщения: |
|
|
Посмотрим...
Ты хоть версии патчам присваивай... _________________ http://RomHacking.RU |
|
Вернуться к началу |
|
|
Shredder
Зарегистрирован: 20.02.2007 Сообщения: 73 Откуда: Россия, Самара.
|
Добавлено: Пн Мар 10, 2008 7:07 pm Заголовок сообщения: |
|
|
Цитата: | Ты хоть версии патчам присваивай... |
Я не знаю, как это делается. |
|
Вернуться к началу |
|
|
PicaSSO
Зарегистрирован: 04.04.2004 Сообщения: 711 Откуда: Украина. Краматорск
|
Добавлено: Пн Мар 10, 2008 7:54 pm Заголовок сообщения: |
|
|
Руками делается... Возьми первую версию, к примеру, за 1.00, следующая будет 1.01 итд. Удобней ориентироваться. _________________ まだ若い夜... |
|
Вернуться к началу |
|
|
TiberiyLTim RRC2008
Зарегистрирован: 14.07.2006 Сообщения: 446 Откуда: 39
|
Добавлено: Вт Мар 11, 2008 1:23 pm Заголовок сообщения: |
|
|
Shredder писал(а): | Цитата: | Ты хоть версии патчам присваивай... |
Я не знаю, как это делается. |
Ты ведь патчи делаешь через прогу Ipsexe? В ней есть возможность делать записку. Вот в этой записке можно циферку поставить. На худой конец, можно циферку в название ставить. _________________ http://RomHacking.RU |
|
Вернуться к началу |
|
|
Shredder
Зарегистрирован: 20.02.2007 Сообщения: 73 Откуда: Россия, Самара.
|
Добавлено: Вт Мар 11, 2008 7:00 pm Заголовок сообщения: |
|
|
Да это я знаю, я задавал вопрос со смыслом - по какому принципу все это нумеровать. В общем-то, на него уже ответили... |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|