Разработка и ромхакинг > Ромхакинг
[NES] Super Mario Bros. Co-op - продолжаем когда один игрок умирает (by vitsum)
vitsum:
SMB Two Players Hack — Coop Respawn (аддон-патч)
Мини-патч поверх известного хака Super Mario Bros. (Two Players Hack) (Ti, 2018). Меняет логику смертей в совместной игре:
[*]Умер один — второй продолжает играть. Уровень не перезапускается: после короткого джингла смерти игра размораживается, музыка уровня возвращается, живой бежит дальше.
[*]Респавн по кнопке. Погибший жмёт A или B — и возрождается прямо на месте живого напарника. Тратится одна жизнь (списывается в момент смерти), появляешься маленьким и с ~3 секундами неуязвимости (мигание).
[*]Кончились жизни — выбываешь, напарник доигрывает один. Его смерти дальше идут по классической схеме (перезапуск уровня с чекпоинта).
[*]GAME OVER — только когда жизни кончились у ОБОИХ.
[*]Если живой хватает флагшток или входит в замок — ожидающий автоматически присоединяется и переходит на следующий уровень вместе с ним.
Установка: патч coop-respawn.ips накладывается на ром Super Mario Bros. (Two Players Hack).nes (НЕ на чистый SMB!) любым IPS-патчером (Lunar IPS, Floating IPS, онлайн-патчеры).
последняя версия:
coop-respawn-v0.8.ips (1.69 КБ - загружено 4 раз.)
старая версия:
coop-respawn-v0.5.ips (1.18 КБ - загружено 21 раз.)
MaxWooD:
vitsum, This is amazing!
:thumbup:
Добавлено 18 июля 2026 года:
Потестил немного.
1. Можно ли убрать паузу при гибели одного из игроков? Например анимация проходит, но игра не замораживается, т.к. это тормозит геймплей. В принципе главный недостаток(
2. Вторым (белым) Марио взял флагшток, но пока первым (коричневым) не коснулся флагштока, уровень не закончился.
3. Когда второй погиб, и ты финишируешь только первым (у второго жизни еще есть, но он не респавнился) после того как первый прыгнул на флагшток, сразу респавнится второй, и уровень заканчивают уже двое. По идее респа не должно быть, и финишировать должен только первый (один).
Идея с респом у активного игрока понравилась :thumbup:
Добавлено позже:
Если дальше развивать тему хаков, то так же можно будет подобные игры модифицировать, чтобы при гибели одного, не перезапускался уровень. Например Баттлтодс.
vitsum:
MaxWooD,
с респавном в конце уровня так и задумано было. сделать респавн только когда умерший игрок нажал на кнопку? или в начале следующего уровня?
про флагшток это наверное логика предыдущего хака. так же чтобы вдвоем в трубу залезть они одновременно должны это сделать
паузу наверное можно убрать
еще есть идея занимать жизнь у другого игрока если свои закончились)
MaxWooD:
--- Цитата: vitsum от 18 Июля 2026, 06:39:27 ---паузу наверное можно убрать
--- Конец цитаты ---
Попробуй пожалуйста именно с этого момента. Тесты пойдут легче.
vitsum:
Убрал паузу.
Игрок больше не появляется на флагштоке.
MaxWooD:
Небольшой багрепорт:
1. Когда уровень заканчивает только один игрок, следующий уровень начинают уже два (по логике должен быть один, второй появляется при нажатии кнопки возрождения).
2. В вертикальную трубу можно попасть при одном условии - два игрока должны встать на трубу и одновременно нажать вниз. По идее в трубу должны попадать, когда любой из двух игроков нажимает вниз.
3. Когда в горизонтальную трубу всасывается один игрок, экран не сменяется, для этого нужно ждать пока всосется и второй. Смена экрана должна происходить, когда всосался ТОЛЬКО один игрок.
4. В замке, в локации босса, постоянно происходят баги: зависание игрока при смерти у горизонтальной движущейся платформы, второй игрок (Луиджи) не может активировать рычаг моста, при активации рычага моста игрок Марио погибает, но скрипт заставки продолжается, иногда с текстом иногда без.
5. В замке 4-4 не работают лабиринты - триггер не срабатывает при правильной комбинации, даже когда бегает один игрок.
6. С грибами какие-то баги, когда один выбивает, а другой берет, например один зависает в анимации движения.
7. Если второй игрок (маленький Луиджи) в первой форме выбивает гриб, а второй большой Марио во второй форме (но без огненных шаров) берет этот гриб, он не даёт апа до третей формы.
На данный момент игра непроходима, из-за бага с лабиринтом уровня 4-4. Приходится идти через варпы. На данный момент тест закончен на 7-1, в 7-4 тоже лабиринт в замке.
vitsum:
MaxWooD, 4-4 при игре вдвоём, когда оба живы, оба игрока были на одной и той же высоте?
coop-respawn-v0.3.ips (0.69 КБ - загружено 22 раз.)
4-4 исправлено когда один игрок мертв
патч на 99 жизней для тестов (накладывается отдельно):
coop-respawn-99-lives.ips (0.02 КБ - загружено 25 раз.)
MaxWooD:
--- Цитата: vitsum от 19 Июля 2026, 16:55:57 ---4-4 исправлено когда один игрок мертв
--- Конец цитаты ---
4-4 пройти лабиринт можно только первым игроком - Марио. Если играть только за Луиджи - первую часть лабиринта можно пройти (триггер срабатывает) вторая часть зациклена (триггер не срабатывает).
vitsum:
MaxWooD,
coop-respawn-v0.4.ips (0.72 КБ - загружено 23 раз.)
vitsum:
Изменения в версии 0.5
[*]После смерти игрок больше не возвращается автоматически на следующем уровне. Он остаётся в режиме ожидания и может вернуться в игру по нажатию A или B, если у него остались жизни.
[*]Для входа в трубу теперь достаточно одного игрока. Второй игрок переносится вместе с ним автоматически.
[*]Исправлено зависание при появлении из трубы, если второй игрок погиб и ожидает возвращения.
[*]Топор в конце моста с Боузером теперь может взять любой игрок.
[*]Второй игрок больше не погибает на разрушающемся мосту.
[*]Погибший игрок больше не мешает завершению сцены с Боузером.
[*]Победная заставка и финальный текст больше не зависают.
[*]Погибший игрок больше не застревает на движущейся платформе. Падение и потеря жизни теперь завершаются нормально.
[*]Исправлены зависания во время увеличения персонажа, получения урона и получения огненной способности.
[*]Возвращена нормальная последовательность улучшений: если большой Марио или Луиджи берёт Супергриб, он получает огненную способность.
[/list]
coop-respawn-v0.5.ips (1.15 КБ - загружено 26 раз.)
vitsum:
Если выбрано 2 игрока, то жизнь дается за каждые 50 монет, вместо 100.
coop-respawn-v0.6.ips (1.22 КБ - загружено 19 раз.)
Mad:
vitsum, Зачем так?
vitsum:
Mad, MaxWooD попросил)
Игрок6310:
а можете в этой игре сделать Duck Tales 2 New Journey 2 players v.2.0 чтобы когда кто то умирал появлялся заново
MaxWooD:
--- Цитата: Mad от 15 Августа 2026, 12:02:48 ---Зачем так?
--- Конец цитаты ---
Имей немного терпения ;)
Mad:
MaxWooD, в каком плане? Это дисбаласный апдейт, он сильно в этом плане отличается от предыдущих. Потому интересно, с чего такая идея появилась.
vitsum:
--- Цитата: Игрок6310 от 15 Августа 2026, 12:37:57 ---а можете в этой игре сделать Duck Tales 2 New Journey 2 players v.2.0 чтобы когда кто то умирал появлялся заново
--- Конец цитаты ---
пока сил на новый проект нет)
MaxWooD:
vitsum, протестировал последнюю версию, отписываюсь :D
Баги:
1. Когда один игрок поднялся вверх по растению к бонус-уровню, должен быть переход на следующий экран, не зависимо поднялся второй игрок или нет (аналогично механике с трубами).
2. После топора (у Боузера), когда игрок заходит в комнату принцессы, иногда анимация бега не останавливается.
3. После топора (у Боузера), когда игрок заходит в комнату принцессы, иногда игрок просто идет вперед, и не останавливается, а принцесса и описание так и не появляется. Переход на следующий уровень происходит.
4. Был момент, при игре вдвоем, когда при возраждении Марио (на трубе, или на уступах в начале Замка), у него сразу появлялась анимация прыжка (рука вверх) и он застыл в этом положении. После этого Марио перемещается (без анимации) только в горизонтальной плоскости. Софтлок, т.к. не дает скроллить экран, если впереди препядствие.
5. Был интересный баг, когда Луиджи погиб, а Марио в этот момент спустил флагшток и зашел в замок (Большой, который с Боузером), но перехода на следующий уровень небыло, просто откинуло на чекпоинт текущего уровня. Наверное смерть игрока засчиталась раньше перехода на следующий уровень.
Что можно доработать:
1. Звуковой эффект (мелодия): при гибели игрока обрезать стандартную мелодию - оставить коротку первуюю часть первую часть (семпл длиной 0.23 мс от стандартной, прикреплён к посту). После гибели обоих игроков (или одного, без второго) - играть стандартную полную мелодию (можно послушать по ссылке под названием Mario dies).
2. После гибели одного игрока, когда другой жив, не должно быть перезапуска основной музыки игры.
Хаки (желательно сделать отдельными патчами):
1. Когда у одного из игроков закончились жизни, он может занимать их у другого игрока. Наверное, чтобы небыло ложных срабатываний, это лучше сделать комбинацией клавиш, например вверх+В.
2. Добавить багфикс Лакиту.
3. Иконка большого и маленького игрока на экранах при переходе между уровнями.
В принципе, больше замечаний к хаку в плане доработок у меня нет.
На данный момент, в режиме на двоих, игра ощущается как полноценный кооператив - каждый игрок независим. Надеюсь у vitsumа всё же получится довести хак до логического конца ;)
--- Цитата: Mad от 15 Августа 2026, 13:31:22 ---Это дисбаласный апдейт, он сильно в этом плане отличается от предыдущих. Потому интересно, с чего такая идея появилась.
--- Конец цитаты ---
Эта идея появилась у Lipetsk, вот в этом посте.
Учитывая то, что ресурсы игры изначально рассчитаны на одного игрока (бонусы и монетки), а при игре вдвоем геймплей не облегчается, а наоборот усложняется, и выживать становится сложнее (например прыжки на платформах *-3 уровень, и пр.), вероятность потери жизни каждого игрока кратно увеличивается, поэтому считаю, что это решение способно сбалансировать игру на двоих.
vitsum:
обновление v0.6 → v0.8
v0.7 — исправления багов:
1. Подъём по лиане в бонус-зону: переход срабатывает, как только наверх
долез один игрок (как у труб) — ждать второго больше не нужно.
2. Комната принцессы после топора: игроки больше не пробегают мимо
принцессы и не застревают с бегущей на месте анимацией — финальная
сцена честно ждёт обоих, текст появляется всегда.
3. Исправлен софтлок при возрождении: игрок мог появиться застывшим в позе
прыжка, без гравитации и анимации.
4. Если напарник погиб в момент флагштока или входа в замок, пройденный
уровень больше не откатывается на чекпоинт — живой спокойно завершает
уровень.
5. При одновременной смерти обоих жизнь теперь списывается у обоих
(раньше платил только один — обычно Луиджи).
6. GAME OVER — только когда жизни кончились у обоих. Потративший последнюю
жизнь выбывает, напарник продолжает играть.
v0.8 — звук и монеты:
1. Пока второй игрок жив, музыка уровня при чьей-то смерти не прерывается
и не начинается заново — вместо полной мелодии проигрыша звучит её
короткое узнаваемое начало (0.23 с) поверх музыки.
2. Полная мелодия проигрыша с паузой — как раньше: когда погибает
последний живой или оба сразу.
3. Возрождение погибшего стало доступно примерно на 3 секунды раньше.
4. Жизнь за 50 монет теперь даётся всю игру на двоих — даже если напарник
уже выбыл (раньше в этот момент порог незаметно возвращался к 100).
В одиночной игре — как в оригинале, 100 монет. (может зря)
coop-respawn-v0.8.ips (1.69 КБ - загружено 11 раз.)
MaxWooD:
--- Цитата: vitsum от 29 Августа 2026, 16:40:07 ---v0.8
--- Конец цитаты ---
Баги:
1. После взятия флагштока одним игроком игра не завершается - нужно ждать, чтобы второй тоже взобрался.
2. Если в первом уровне погобнет Марио, а уровень закончить одним Луиджи, очки будут начисляться Марио.
3. Один игрок: если взобраться на лиану (но не подниматься вверх, чтобы экран не сменился), и возродить второго игрока, он забагуется в горизонтальной плоскости.
4. Один игрок: если в бонус-уровне (небо после лианы) взобраться на облако, и возродить второго игрока, он забагуется в горизонтальной плоскости. Наверное баг горизонтальной плоскости проявляется, когда один из игроков держит направление право/лево, а второй игрок кнопку возраждения.
5. Бонус уровень (небо, после лианы): 1. Если в пропасть падает Марио - после смены экрана звук гибели (Луиджи), Марио падает сверху; 2. Если в пропасть падает Луиджи - после смены экрана звук гибели (Луиджи), Марио поднимается из невидимой трубы. На уровне-небо Луиджи погибает в любом случае.
Навигация
Перейти к полной версии