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

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