Список форумов shedevr.org.ru shedevr.org.ru
Группа перевода приставочных игр "ШЕДЕВР"
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Хак TMNT 4 на NES
На страницу Пред.  1, 2, 3, 4, 5, 6  След.
 
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Ромхакинг в России и в мире
Предыдущая тема :: Следующая тема  

Понравился ли вам хак Черепашек?
Да
77%
 77%  [ 17 ]
Нет
22%
 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
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
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
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
RRC2008


Зарегистрирован: 08.02.2006
Сообщения: 188

СообщениеДобавлено: Ср Фев 20, 2008 11:20 am    Заголовок сообщения: Ответить с цитатой

Не на две части. PRG делится на части по 16 кб. Ну или может быть по 32 кб. Если по 16 то вроде такой банк до 32 можно расширить. Но точно не скажу.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Griever
RRC2008
RRC2008


Зарегистрирован: 15.07.2005
Сообщения: 112
Откуда: Н.Новгород

СообщениеДобавлено: Ср Фев 20, 2008 3:14 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
PRG делится на части по 16 кб. Ну или может быть по 32 кб

Question Из описания заголовка .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% от него, ну да больше не меньше Wink Согласен, что большая проблема - использовать появившееся свободное место - включать и выключать банк можно только извне (т.е. обязательно наличие свободного места в коренном hardwired банке). Если есть - организовать переключение становится не так сложно.
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
evgeny
RRC2008
RRC2008


Зарегистрирован: 08.02.2006
Сообщения: 188

СообщениеДобавлено: Ср Фев 20, 2008 3:50 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
Позволь с тобой не согласиться

Ну ромы в которых всего 1 банк (без маппера) 16k prg расширяются до 32 легко. (Battle City, lode runner и.т.д)
И поинтеры (джампы) работают на эти 32 кб. Сам проверял. По идее должно работать и иных ситуациях. В заголовке естественно указывается как 2 банка по 16.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Ср Фев 20, 2008 4:30 pm    Заголовок сообщения: Ответить с цитатой

Griever писал(а):
Согласен, что большая проблема - использовать появившееся свободное место - включать и выключать банк можно только извне (т.е. обязательно наличие свободного места в коренном hardwired банке). Если есть - организовать переключение становится не так сложно.

Насколько я помню из позапрошлогодних ковыряний, во многих играх переключение банков осуществляется отдельной процедурой, хранящейся в адресном пространстве, которое не меняется в течение всей игры (скажем, окно C000-FFFF). Этой процедуре просто передаётся номер банка, и она сама переключает окно (например, 8000-BFFF) на другую область РОМа. Соответственно, даже если пустого места для своего кода в игре нет совершенно, вовсе не обязательно писать каждый раз код переключения банка, достаточно вызвать процедуру (уж на пару инструкций - LDA + JSR - место всегда можно найти). А если этой процедуры нет, придётся её организовать своими силами (но зато только один раз).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Shredder



Зарегистрирован: 20.02.2007
Сообщения: 73
Откуда: Россия, Самара.

СообщениеДобавлено: Ср Фев 20, 2008 4:36 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
Не на две части. PRG делится на части по 16 кб. Ну или может быть по 32 кб. Если по 16 то вроде такой банк до 32 можно расширить. Но точно не скажу.

Да не, под частями я там имел в виду лишь PRG и CHR, и ничего более. Про остальное-то я в курсе.

Цитата:
На самом деле, расширить РОМ не так сложно.

Фигассе, а доку по этому делу где-нибудь почитать можно?
[Update] А, всё, на твоем сайте кажись нашёл!

И как я понимаю, на настоящей приставке такая расширенная игра тоже бы без проблем запустилась?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Griever
RRC2008
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 клоны...
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
evgeny
RRC2008
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 Мб, и при этом он без проблем запускался. В каком смысле тогда "не поддерживает" ? Переключение банков потом не сможет работать? Или что?
Во, завалил вопросами Smile

И все же, если использовать добавленное место, то как именно переключать банки - есть где-нибудь по этому русские документы? Я нигде не нашел. Или там снова надо самому ковыряться, находя эту переключающую процедуру?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Griever
RRC2008
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.

Цитата:
И все же, если использовать добавленное место, то как именно переключать банки - есть где-нибудь по этому русские документы?

Есть. Но я бы поискал процедуру переключения.
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Shredder



Зарегистрирован: 20.02.2007
Сообщения: 73
Откуда: Россия, Самара.

СообщениеДобавлено: Пн Мар 10, 2008 5:29 am    Заголовок сообщения: Ответить с цитатой

Хотелось уж и последний глюк добить, а именно, - обнаруженное мной уже достаточно давно чудо, когда верхняя "граница поражения" 1-го игрока почему-то всегда находится на несколько пикселей выше, нежели у второго. Но что-то пока не получается найти, из-за чего...

http://ifolder.ru/5673278
Ладно, убрал хотя бы ту "невозможность разойтись", причем сразу в двух вариантах - в том, как я описывал ранее, и еще у левой стены: если один игрок стоял к ней вплотную, а второй стоял вплотную уже к нему, то при простом нажатии "назад" он также не мог отойти (другой при этом мог вообще ничего не делать или даже лежать - от его действий ничего не зависело).
Все это баги разработчиков.

Наконец-то убрана любая "неуязвимость" (надеюсь теперь, что вся), какую только можно убрать для прибавки играбельности. Конкретно: от одного попадания в цель до другого при любом ударе должно было пройти некоторое хоть и малое, но искусственно насаженное время - этого часто было достаточно, чтоб, "попадая, промахиваться" = очень неприятно. Ранее я еще с препятствием сталкивался, из-за которого не мог его стереть - теперь удалось обойти.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
TiberiyLTim
RRC2008
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 итд. Удобней ориентироваться.
_________________
まだ若い夜...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
TiberiyLTim
RRC2008
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    Заголовок сообщения: Ответить с цитатой

Да это я знаю, я задавал вопрос со смыслом - по какому принципу все это нумеровать. В общем-то, на него уже ответили...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Ромхакинг в России и в мире Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Страница 4 из 6

 
Перейти:  
Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group