Важная информация

User Tag List

Страница 1 из 13 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 125

Тема: Ломаем Boulder Dash

  1. #1
    Member
    Регистрация
    19.05.2011
    Адрес
    Сидней, Австралия
    Сообщений
    115
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    81
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Ломаем Boulder Dash

    Ссылка на редактор последней версии: http://fight.pp.ua/zxpk/bdash/



    Привет, друзья.

    Так сложилось что Boulder Dash стал игрой-спутником моей жизни.

    Время от времени играю в нее, либо делаю ее с нуля на одном или другом языке, даже на Юнити.

    Недавно решил разобраться именно с той старой спектрумовской версией игры, с которой собственно все началось.

    Подумал я - а что если залезть в код, найти где хранятся данные уровней, поменять их на что-то новое, и получить таким образом новую версию(и) игры. Ну интересно же!

    Первое что пришло в голову - ну наверное объекты хранятся в игре в форме таблички(массива) объектов, где они прописаны строчками один за другим в виде байтов.

    Написал программу которая ищет паттерны. Ну там например знаю что на первом уровне есть какой-то участок (dirt, space, space, boulder, dirt) Ну и пишу паттерн 10021, и ищу своей программой. Никак ничего не находит!!! Программа сама по себе рабочая, она действительно находит последовательности байт соответствующие моему образцу.

    Блин, думаю, что-то здесь не чисто.

    Копал рыл гугл и нарыл очень интересную информацию, которая помогла мне сделать для себя массу интересных открытий. Если Вы любите эту игру и не знали о том, что я скажу, то Вам будет тоже интересно.

    Оказывается уровни игры создаются очень хитрым образом. Все уровни 100 штук(20*5) записаны всего в 1657 байтах.

    Гениально!

    Посчитайте сколько реально понадобилось бы если хранить так, как я хотел по байту на объект:
    40*22*20*5 = 88000 байт! И это только на хранение объектов, а там есть еще информации немного помимо этого (сколько нужно собрать алмазов, время и т.д.)

    Нету в Спектруме столько памяти (говорим про классику 48 кб)

    А записываются все построения из объектов в виде неких "макросов" типа:
    прямоугольник из кирпичей залитый пустотой с началом в (4,7) и размером (10,10)
    и на это добро уходит 6 байт вместо например 100 байт. Неплохой выигрыш!

    И это еще не все.

    Ну это еще можно было бы может догадаться - в игре же часто объекты располагаются рядами либо прямоугольниками, либо по диагонали.

    Но кто бы мог подумать что рассыпанные камни по уровню тоже не хранятся "по одному"!!!

    Для этого игра использует свой собственной псевдогенератор случайных чисел, при чем четко предсказуемый и аппаратно-независимый, что позволяет иметь те же результаты (уровни игры) при каждом запуске игры и даже на разных платформах

    Это меня убило полностью.

    Я все время в детстве думал: ну какая же умная голова так интересно разместила препятствия на уровне.
    А никто сильно и не парился - максимум подобрал нужных два параметра: seed(измеряется числом от 0 до 255) и probabiliy (измеряется числом от 0 до 255) Первое меняет уникальное расположение (как бы меняет точку отсчета для алгоритма генерации случайных чисел) а второе число меняет интенсивность, при нуле - ничего не попадет на экран, при 255 - максимум.

    Теперь понимаете как легко создать новые сложности для существующих уникальных уровней!?

    Уменьшаем время на прохождение и настраиваем генератор!

    Копаясь дальше с Boulder Dash I
    я точно определил где все это находится и меняя эти параметры я могу видеть изменения при запуске игры (в любом эмуляторе)

    То есть если еще поменять спрайты (попроще задача) - то можно выдать новые версии игры, ну хотя бы даже просто по приколу.

    Однако все же я столкнулся с одной маленькой, но ключевой проблемой, которую я пока решить не могу.
    Может кто-то опытный из вас может подсказать или помочь.

    Дело в том, что сразу после этого участка данных сразу располагается другой хоть и не большой но какой-то конечно же используемый кусок, то ли кода то ли данных.

    Это значит что все мои изменения не должны "вылазить" за размеры уже "определенного" блока. Он может быть таким же или меньшим по размеру, что в принципе тоже решение!!

    Просто в идеале хотелось бы снять это ограничение если это возможно.

    Сразу после того маленького куска непонятного кода идет куча свободного места (сплошные 0x00) где есть место развернуться фантазии.
    Я подумал, а можно как-то перенести мои данные туда!? и где-то в игре переназначить адрес, чтобы брало данные из нового места. Хотя звучит вполне логично, я даже вроде нашел где фигурирует адрес начало моего блока, который встретился мне один раз во всей игре.

    Я поменял его на новый, там в новом месте разместил данные, правда только первый уровень. И это не заработало, игра сбросилась при запуске первого уровня..

    Что-то я недосмотрел. Еще есть вариант запулить туда все уровни сразу, но не уверен, что это поможет. По крайней мере пока что я не могу это сделать "автоматически", так как первый уровень я занес в ручную по байту в дизассемблере.

    Пока остается вариант нарисовать уровни в пределах выделенного фрагмента 1657 байт, при чем в середине блока все достаточно гибко, там просто разделители (0xFF) между уровнями, а в середин уровней - все тоже очень гибко.. То есть размеры уровней в байтах можно уменьшать и увеличивать как хочешь, главное чтобы общая сумма не залезла за 1657

    Вот такие дела..
    Есть мысли?

    Спасибо за внимание

    Оригинал:


    Программно восоздано мною по тем же данным (Javascript)
    Последний раз редактировалось atmavan; 16.10.2021 в 16:37.

  2. Эти 8 пользователя(ей) поблагодарили atmavan за это полезное сообщение:

    ace210 (25.03.2021), Barmaley_m (05.09.2021), helcril (27.03.2021), Oleg N. Cher (25.03.2021), OMu4 (26.03.2021), Temar (11.10.2021), Vatr (28.03.2021), Гаррий (25.03.2021)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Veteran Аватар для Bedazzle
    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    221
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    115 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Речь именно про первый BD ?
    Какой-то редактор есть, по идее, его можно тоже поковырять.
    https://spectrumcomputing.co.uk/entr...nstruction_Kit
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  5. #3
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,774
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от atmavan Посмотреть сообщение
    сразу после этого участка данных сразу располагается другой хоть и не большой но какой-то конечно же используемый кусок, то ли кода то ли данных.
    а данные этого куска (начальный адрес,размер) мы должны понять интуитивно ?
    и крайне желательно ссылку на версию игры.
    их точно было несколько (чем отличаются не вникал, но код скомпилен по разным адресам)
    ну и свободной памяти там действительно много.
    например игра занимает 24064,24000
    хотя после старта какие-то небольшие куски выше 48064 размещаются
    Последний раз редактировалось goodboy; 25.03.2021 в 18:11.

  6. #4
    Veteran Аватар для Bedazzle
    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    221
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    115 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от char Посмотреть сообщение
    подсказка от cержа ))
    Игру до самых потрохов разбирали уже, или что?
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  7. #5
    Veteran Аватар для JeRrS
    Регистрация
    02.02.2005
    Адрес
    г. Екатеринбург
    Сообщений
    1,305
    Спасибо Благодарностей отдано 
    58
    Спасибо Благодарностей получено 
    107
    Поблагодарили
    75 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В свое время тоже жаждил как-то "преобразить" давно полюбившуюся игру. Ничего умнее чем подменить спрайты с B.D.Kit я не придумал) было увлекательно и занимательно. Скачать можно отсюда
    Группа в ВК, посвященная кассетным версиям игр для спектрума
    В коллекции:GRM-128 (YM+TR-DOS), Кворум 128+, Дельта 128, Эксперт-006, Рифей-01, Квант V3.а, Квант (Didaktik), Спектр БК-001, Sintez-M (Intercompex), Компаньон-2 (V2.2)

  8. #6
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    265
    Спасибо Благодарностей получено 
    279
    Поблагодарили
    207 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    Игру до самых потрохов разбирали уже, или что?
    Гдето даже видел описание от автора вроде. Интервью там было.
    С уважением,
    Jerri / Red Triangle.

  9. #7
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,774
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    "я начал играть с основными элементами грязи, камней и драгоценностей и в течение нескольких дней построил базовый «физический движок» того, что должно было стать Boulder Dash. Я понял, что с помощью генератора случайных чисел можно создавать случайные пещеры, и что, контролируя плотность камней и драгоценных камней, можно получить интересную игру. Игра была интересна не только с точки зрения головоломки, но и затрагивала различные эмоциональные побуждения - не только очевидные психотические, такие как жадность (сбор драгоценностей), деструктивность (выбрасывание камней и убийство светлячков), но и более невротические, такие как очистка всего грязь из пещеры.И я думаю, что в игре было чувство юмора - если вы обнаружите, что кто-то непреднамеренно давит себя под выбитым валуном, забавно.

  10. Эти 2 пользователя(ей) поблагодарили goodboy за это полезное сообщение:

    ace210 (25.03.2021), atmavan (04.07.2021)

  11. #8
    Activist Аватар для CLR
    Регистрация
    03.02.2005
    Адрес
    Челябинск
    Сообщений
    326
    Спасибо Благодарностей отдано 
    260
    Спасибо Благодарностей получено 
    52
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Откройте для себя версию для Atari - в сборнике Homesoft этих модифицированных боулдердашей с тоннами уровней буквально сотни. Не говоря уже о том, что версия для Atari намного плавнее.
    Мои игрушки: PowerbookG4 / MacMiniG4 / MacMini i5 / Amiga1260 / Commodore64 / Atari65XE / MSX1 SVI-728 / MSX2 КУВТ2 / MiST / MiSTer / Profi+ / KarabasPro / Speccy2010 / Aspect128 / ZX-UNO VGA 2M / PS3 / PS4Pro+PSVR / PSP / PS Vita / GBC / LDK Game / RG350M / iPhone / iPad / Raspberry Pi (0/3B+/4B/5)
    MorphOS / AmigaOS / MacOS / Linux

  12. Этот пользователь поблагодарил CLR за это полезное сообщение:

    Barmaley_m (05.09.2021)

  13. #9
    Veteran Аватар для Bedazzle
    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    221
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    115 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CLR Посмотреть сообщение
    Откройте для себя версию для Atari
    Спасибо, но к примеру, для меня Earth shacker круче Boulder dash.
    Но ведь мы говорим именно о ZX версии, зачем тут Atari?
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  14. Этот пользователь поблагодарил Bedazzle за это полезное сообщение:

    Oleg N. Cher (25.03.2021)

  15. #10
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,774
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    #7B4B ld hl,#B843 ; те самые загадочные данные - это маршрут движения в ДемоРежиме
    #7662 ld hl,#B883 ; DataMusic
    Последний раз редактировалось goodboy; 25.03.2021 в 22:56.

  16. Эти 2 пользователя(ей) поблагодарили goodboy за это полезное сообщение:

    ace210 (25.03.2021), atmavan (04.07.2021)

Страница 1 из 13 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ищу неломанный Boulder Dash 5
    от transman в разделе Игры
    Ответов: 17
    Последнее: 01.07.2021, 23:28
  2. Boulder Dash
    от ser_13 в разделе Игры
    Ответов: 20
    Последнее: 15.08.2020, 14:55
  3. всем любителям Boulder Dash
    от metamorpho в разделе PC Remakes
    Ответов: 6
    Последнее: 28.07.2016, 20:30
  4. Boulder Dash
    от Cat_Alex/QRP в разделе Игры
    Ответов: 6
    Последнее: 04.03.2013, 21:43
  5. Boulder Dash 2 Classic Collection
    от transman в разделе Игры
    Ответов: 19
    Последнее: 21.05.2012, 00:59

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •