| Разработка и ромхакинг > Ромхакинг |
| Battletoads & Double Dragon - Хакинг и секреты |
| << < (20/22) > >> |
| Smoke_John:
lupus, Вообще то речь шла о джойстике денди, там ещё две турбо кнопки, они тоже используются играми, и если вы сейчас возразите, что это те же кнопки, только нажимаются постоянно, то сами себе противоречите, так как в этом случае у нас целых 16 команд в распоряжении, ну или 15, ведь кнопка старт в турбо режиме не нужна. Добавлено позже: + для первого игрока можно задействовать select+A как прыжок и просто A как удар, а для второго select+B как прыжок и B как удар, то есть несколько нажатых клавиш можно использовать как иное действие, так что хватит) |
| Doomguard45:
--- Цитата: Smoke_John от 04 Август 2015, 23:41:04 ---lupus, Вообще то речь шла о джойстике денди, там ещё две турбо кнопки, они тоже используются играми, и если вы сейчас возразите, что это те же кнопки, только нажимаются постоянно, то сами себе противоречите, так как в этом случае у нас целых 16 команд в распоряжении, ну или 15, ведь кнопка старт в турбо режиме не нужна. Добавлено позже: + для первого игрока можно задействовать select+A как прыжок и просто A как удар, а для второго select+B как прыжок и B как удар, то есть несколько нажатых клавиш можно использовать как иное действие, так что хватит) --- Конец цитаты --- Зачем все эти ухищрения - а по поводу 16 команд - ты не прав |
| Smoke_John:
чтобы обойти ограничение игры на два игрока у сложной игры (как например battletoads), не переписывая половину кода самой игры, по сути нужны всего 7 кнопок, для управления жабой - 4 передвижения, старт, прыжок и удар. если заставить игру одному объекту принимать команды от первого джоя, второму объекту от второго, а третьему только комбинации, напимер select+A, select+UP и так далее, то можно будет в последствии через эмулятор настроить их на третий джойстик и играть втроём Добавлено позже: вот пример: первый игрок UP= J1UP DOWN= J1DOWN LEFT= J1LEFT RIGHT= J1RIGHT JUMP= J1A FIRE= J1B START= J1START второй игрок UP= J2UP DOWN= J2DOWN LEFT= J2LEFT RIGHT= J2RIGHT JUMP= J2A FIRE= J2B START= J2START третий игрок UP= J1TURBOA DOWN= J1TURBOB LEFT= J2TURBOA RIGHT= J2TURBOB JUMP= J1TURBOSELECT FIRE= J2TURBOSELECT START= любую другую TURBO, например J1TURBOSTART, либо комбинацию J1SELECT+J1TURBOA |
| Ti_:
--- Цитата: Smoke_John от 05 Август 2015, 09:10:16 ---если заставить игру одному объекту принимать команды от первого джоя, второму объекту от второго, а третьему только комбинации, напимер select+A, select+UP и так далее, то можно будет в последствии через эмулятор настроить их на третий джойстик и играть втроём --- Конец цитаты --- :lol: Денди без проблем поддерживает 4 джойстика - есть ряд игр про это. А сега - все 8. Так же смотри хак battle city на 4-ых. Прикрутить драйвер 4-ех джойстиков можно без проблем в любую игру за полчаса. Но играть ни за врагов, ни за 3-ую жабу ты от этого не станешь. Враги не принимают нажатия кнопок, а работают по скриптам. И у них нет команд двигаться там скажем, или ударять. Есть ряд кода для каждого врага, по условиям которого, объект делает то, или другое. Что касается игроков, то в коде игры, вся память и код, расписаны под 2 слота игроков. Так что 3-его ты физически не сделаешь. Но даже если ты перепишешь всю игру, чтобы было 4 слота игроков, ты всё равно не сделаешь 4 игрока, потому что есть такие вещи как железные ограничение (видеопамять под каждую жабу и скорость проца, ограничение палитр(цветов), ограничение кол-ва спрайтов). |
| Smoke_John:
Ti_, Всё бы да ничего, но если прописать значение в памяти ID=1 вместо ID врага то в некоторых случаях бывший враг начинает принимать команды с первого джоя, во всяком случае лично был этому свидетелем, мучая игру через артмани в таблице у меня следующее: ID первого слота = 1 ID второго слота = либо 0, либо 2, в зависимости от отсутствия или наличия второго игрока сразу же со следующего адреса начинаются слоты объектов/врагов: слот1=11 (свинья) слот2=18 (палочка) и так далее... при смене этих значений в слота происходят интересные события) и как я уже выше писал, некоторые враги после этого начинают принимать команды от 1 джоя ещё заметил, что во втором уровне весь уровень слот1 равен 6 (верёвочка), тоесть новые объекты при появлении занимают другие свободные слоты, так же я заметил, что если заморозить значение в одном из слотов, то новые объекты так же игнорируют этот слот и используют свободные слоты. Поэтому я всё и веду к тому, чтобы не прикручивать поддержку 4 джоев, а прописать нужное значение например в первом слоте изначально, чтобы этот объект принимал сигналы с первого джоя, и не обязательно играть за третью жабу, пусть использует спрайты и палитру первой |
| Ti_:
--- Цитата: Smoke_John от 05 Август 2015, 10:22:06 ---Ti_, Всё бы да ничего, но если прописать значение в памяти ID=1 вместо ID врага то в некоторых случаях бывший враг начинает принимать команды в таблице у меня следующее: ID первого слота = 1 ID второго слота = либо 0, либо 2, в зависимости от отсутствия или наличия второго игрока --- Конец цитаты --- Не отрицаю такое возможно. Только враг перестает быть врагом. Вообще всего 15 слотов, но первые 2 слота это всегда игроки. А 1 и 2 в них это типы объектов (player), 0 - значит пустой слот. Ну про свинью 11 ты написал. То есть прописывая 1 заместо 11, ты заменяешь объект свинья, объектом игрок. Ну спрайт видимо старый остается, так как просто не обновляется. Только не забывай, что при этом куча ошибок проходит, из-за выхода из массивов, там около полтинника под 2 слота , только для игроков. По выводу спрайту у тебя опять же плохое понимание, если 3-ий будет использовать спрайт 1-ого, то они будут выглядеть всё время одинаково. То есть не смогут использовать одновременно разные кадры. |
| Smoke_John:
Ti_, а как же враги используют одни и те же спрайты? |
| Ti_:
--- Цитата: Smoke_John от 05 Август 2015, 17:33:05 ---Ti_, а как же враги используют одни и те же спрайты? --- Конец цитаты --- У жаб более сотни разных кадров, в видео-память подгружается только один. У врагов 2-3 кадра, и загружен сразу. Запусти fceux и в ppu-viewer смотри окно спрайтов. Тайлы с $01 по $10- спрайты жабы 1. Тайлы с $11 по $20 - жаба2. Остальную память занимают враги. |
| Smoke_John:
Ti_, теперь понятно где костыль, то есть если добавить этой памяти, ром будет работать только на модифицированных эмуляторах? |
| Ti_:
--- Цитата: Smoke_John от 05 Август 2015, 20:02:08 ---Ti_, теперь понятно где костыль, то есть если добавить этой памяти, ром будет работать только на модифицированных эмуляторах? --- Конец цитаты --- Памяти ты не добавишь, потому что номер тайла в описании спрайтов задается 1 байтом. То есть диапозон 0-255. Но можно переделать графику и конфиги спрайтов объектов всех уровней, где-то подрезать и т.п.. И 16 тайлов свободных набрать. Но опять же, даже если всё это сделать, это будет только свободное место. Ещё надо реализовывать код закидывания графики туда игрока (тут также минус будет в том, что графика обновляется за 1 кадр только у 1 игрока, в оригинале одновременно 2 невозможно, там идёт чередование). Ну а дальше то что? Будешь переписывать код всей игры чтобы было 3 слота? :D |
| Smoke_John:
Ti_, а если понерфить какой-нибудь не очень интересный уровень :wow: тогда места будет предостаточно? хотя это уже к разряду "переписать пол игры" :( |
| Doomguard45:
--- Цитата: Smoke_John от 06 Август 2015, 04:04:45 ---Ti_, а если понерфить какой-нибудь не очень интересный уровень :wow: тогда места будет предостаточно? хотя это уже к разряду "переписать пол игры" :( --- Конец цитаты --- БТДД - это не та игра, куда следует добавить еще одного игрока. |
| Ti_:
--- Цитата: Smoke_John от 06 Август 2015, 04:04:45 ---Ti_, а если понерфить какой-нибудь не очень интересный уровень :wow: тогда места будет предостаточно? хотя это уже к разряду "переписать пол игры" :( --- Конец цитаты --- Так нельзя, на каждом свой набор графики, отсекать нужно от каждого. Хоть и немного. |
| Smoke_John:
--- Цитата: Ti_ от 06 Август 2015, 09:13:38 ---Так нельзя, на каждом свой набор графики, отсекать нужно от каждого. Хоть и немного. --- Конец цитаты --- тоесть спрайты жаб находятся в игре в нескольких местах? на каждом уровне? Жесть, а я хотел предложить из титульника обрезать( --- Цитата: Doomguard45 от 06 Август 2015, 06:12:41 ---БТДД - это не та игра, куда следует добавить еще одного игрока. --- Конец цитаты --- Так любимая же игра) я бы, конечно и в ZeroTolerance в кооперативе побегал с удовольствием, но BT роднее Добавлено позже: Ti_, ты не мог бы прокомментировать мой вопрос про верёвку? http://www.emu-land.net/forum/index.php/topic,62927.180.html никак не могу с ней разобраться |
| Ti_:
--- Цитата: Smoke_John от 06 Август 2015, 09:42:44 ---тоесть спрайты жаб находятся в игре в нескольких местах? на каждом уровне? Жесть, а я хотел предложить из титульника обрезать( --- Конец цитаты --- Нет, жабы находятся в одном месте. Нужно понимать, что неважно сколько уровней игре, их может быть хоть миллион. А размер видеопамяти всегда одинаков, это небольшой кусок, туда подгружается только нужное. То есть на первом уровне - туда записывается графика первого уровня, на втором-второго, и так далее. |
| Smoke_John:
Ti_, небольшой кусок, который находится в каждом уровне? тогда всё-таки можно обрезать графику титульника и заставок, и использовать это свободное место для добавления к видеопамяти на каждом уровне? или я совсем запутался?) |
| Ti_:
--- Цитата: Smoke_John от 06 Август 2015, 09:42:44 ---Ti_, ты не мог бы прокомментировать мой вопрос про верёвку? --- Конец цитаты --- Веревка вроде в любом слоте может быть. А привязка типом идёт: 6 - веревка для первого игрока. 7 - веревка для второго. 6-6 = 0 - к слоту0 (игрок1) 7-6 = 1 - к слоту1 (игрок2) Добавлено позже: --- Цитата: Smoke_John от 06 Август 2015, 10:54:11 ---Ti_, небольшой кусок, который находится в каждом уровне? тогда всё-таки можно обрезать графику титульника и заставок, и использовать это свободное место для добавления к видеопамяти на каждом уровне? или я совсем запутался?) --- Конец цитаты --- Видеопамять не в уровне находится и не в роме, и добавить её нельзя. Ещё раз смотри окно ppu-viewera, для 1-ого уровня, потом для 2-ого и так далее. Есть небольшой участок памяти, туда записывается часть графики которая нужна. Например в роме у нас 20 уровней и 50 спрайтов. Мы перед загрузкой уровня, загружаем туда тайлы 1 уровня, и 2-3 спрайта врагов 1 уровня. Потому что больше не влезет. |
| Smoke_John:
--- Цитата: Ti_ от 06 Август 2015, 10:55:53 ---Веревка вроде в любом слоте может быть. А привязка типом идёт: 6 - веревка для первого игрока. 7 - веревка для второго. 6-6 = 0 - к слоту0 (игрок1) 7-6 = 1 - к слоту1 (игрок2) Добавлено позже:Видеопамять не в уровне находится и не в роме, и добавить её нельзя. Ещё раз смотри окно ppu-viewera, для 1-ого уровня, потом для 2-ого и так далее. Есть небольшой участок памяти, туда записывается часть графики которая нужна. Например в роме у нас 20 уровней и 50 спрайтов. Мы перед загрузкой уровня, загружаем туда тайлы 1 уровня, и 2-3 спрайта врагов 1 уровня. Потому что больше не влезет. --- Конец цитаты --- Ti_, а разве Nestopia 1.37 - Unlimited Video build для таких целей не годится? а насчёт верёвки, я конечно, теперь силён и всемогущ:lol: но, в каком адресе памяти изменить значение, чтобы привязать верёвку к игроку я так и не вычаслил, она у меня отцепленная сразу улетает при создании я так понимаю какая то ячейка должна равняться 0, когда первый игрок находится на верёвке и 6 в любом другом случае? |
| Ti_:
--- Цитата: Smoke_John от 06 Август 2015, 18:41:31 ---Ti_, а разве Nestopia 1.37 - Unlimited Video build для таких целей не годится? я так понимаю какая то ячейка должна равняться 0, когда первый игрок находится на верёвке и 6 в любом другом случае? --- Конец цитаты --- Причем тут nestopia? Про веревку не знаю, не смотрел. |
| Smoke_John:
--- Цитата: Ti_ от 07 Август 2015, 09:00:19 ---Причем тут nestopia? Про веревку не знаю, не смотрел. --- Конец цитаты --- Я думал в той версии снят лимит на видеопамять а что означают эти формулы? 6-6 = 0 - к слоту0 (игрок1) 7-6 = 1 - к слоту1 (игрок2) 6 и 7 ясно в каких ячейках находятся, а для чего мы от них отнимаем 6? попробую поискать в памяти последовательность из двух значений 0 и 1 у меня складывается впечатление, что это значение открыто не находится в RAM, а читается из банка при смене уровня |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |