User Tag List

Показано с 1 по 9 из 9

Тема: Реверс Scuba Dive

  1. #1

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,047
    Спасибо Благодарностей отдано 
    1,140
    Спасибо Благодарностей получено 
    1,457
    Поблагодарили
    520 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Реверс Scuba Dive

    Всем привет.
    Неторопясь делаю реверс игрушки Scuba Dive для ZX Spectrum 48K, собственно уже есть некоторые результаты.

    SkoolKit HTML: https://nzeemin.github.io/skoolkit-g...scuba/asm.html
    Репозиторий с ASM для компиляции через pasmo: https://github.com/nzeemin/spectrum-scubadive-rev

    При компиляции получаются в точности такие же три блока, до байта, как и в исходном TAP-файле.

    Блоки, загружаемые из TAP-файла:
    Код:
       Name         Type   Addr    Size  SizeHex   RangeHex
      "SCUBA     "  BASIC 
      "DIVE      "  CODE   16384,  7150   $1BEE   $4000-$5BED
      "S         "  CODE   24576, 25856   $6500   $6000-$C4FF
      "D         "  CODE   55552,  6144   $1800   $D900-$F0FF
    Использование памяти:
    Код:
    Начало        $5B00    Переменные
    Спрайты       $6000
    Начало кода   $9C56
    Конец кода    $F000
    На данный момент:
    - Определено назначение многих переменных
    - Разобрана часть процедур
    - Раскопаны все спрайты

    Лабиринт игры определяется в виде "свёртки": таблица AC5D ("мини-карта") содержит 32x32 = 256 индексов блоков, блоки по адресу A4DD состоят из 8x8 тайлов, тайлы по адресу 9134 это 8x8 ч/б пикселов. Итого, весь лабиринт это 256x256 тайлов = 2048x2048 пикселов. На экране мы всегда видим только 24x24 тайлов из этой карты (3x3 блока).
    Карта, строится процедурно, изменением байтов в таблице AC5D. Глубина карты зависит от уровня игры (1..4).

    Интересно сделано размещение осьминога, который сторожит проход вниз: ставятся подряд блоки $1C и $1D, с рисунком прохода -- и само наличие этих блоков как раз и означает, что тут должен быть размещён объект "осьминог".
    Последний раз редактировалось nzeemin; 25.07.2022 в 13:41.

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

    Bedazzle(18.07.2022), CityAceE(12.07.2022), Denn(24.07.2022), mastermind(28.07.2022), Oleg N. Cher(13.07.2022), polikarpov76(16.07.2022)

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

  3. #2

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,047
    Спасибо Благодарностей отдано 
    1,140
    Спасибо Благодарностей получено 
    1,457
    Поблагодарили
    520 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Бейсик загрузчик выглядит так:
    Код:
    1 CLEAR 24575: INK 0: PAPER 0: BORDER 1: CLS : LOAD ""CODE: PRINT AT 2,0;: LOAD ""CODE: PRINT AT 2,0;: LOAD ""CODE
    2 IF USR 60895THEN SAVE "S/D SCORE"CODE 59866,160: GO TO 2
    3 LOAD "S/D SCORE"CODE : GO TO 2
    Тут же код для запуска, тут же код для сохранения/загрузки таблицы рекордов.

  4. #3

    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,830
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    247
    Поблагодарили
    106 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А есть какие-то причины, почему pasmo, а не sjasmplus например? И в чем реально дизассемблируешь. не в skoolkit же (ну то есть я пробовал, в IDAPro скорость дизассма в десятки раз быстрее)?
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  5. #4

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,047
    Спасибо Благодарностей отдано 
    1,140
    Спасибо Благодарностей получено 
    1,457
    Поблагодарили
    520 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker Посмотреть сообщение
    А есть какие-то причины, почему pasmo, а не sjasmplus например? И в чем реально дизассемблируешь. не в skoolkit же (ну то есть я пробовал, в IDAPro скорость дизассма в десятки раз быстрее)?
    pasmo мне интересен возможными дальнейшими портами на другие машинки.
    Кому надо тот сам на sjasmplus переделает, там никаких особых трюков не используется.

    И да, реально делаю используя skoolkit.
    Я даже написал подсветку синтаксиса VSCode для SkoolKit .ctl файлов - https://github.com/nzeemin/skoolkit-ctl-syntax
    Мне нравится результат в виде HTML, получаемый через SkoolKit - наглядно и удобно.
    Медленно, это да, но я не особо тороплюсь.

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

    parallelno(29.08.2022)

  6. #5

    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,830
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    247
    Поблагодарили
    106 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    pasmo мне интересен возможными дальнейшими портами на другие машинки.
    Кому надо тот сам на sjasmplus переделает, там никаких особых трюков не используется.

    И да, реально делаю используя skoolkit.
    Я даже написал подсветку синтаксиса VSCode для SkoolKit .ctl файлов - https://github.com/nzeemin/skoolkit-ctl-syntax
    Мне нравится результат в виде HTML, получаемый через SkoolKit - наглядно и удобно.
    Медленно, это да, но я не особо тороплюсь.
    Да, интересно. Я бы определенно из файла иды генерил бы
    ctl а в чем разница у пасмо и sjasm в плане портов? Я посмотрел краем глаза, особо разницы и нет (кроме z80=>8086)
    Последний раз редактировалось Shadow Maker; 16.07.2022 в 17:55.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  7. #6

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,047
    Спасибо Благодарностей отдано 
    1,140
    Спасибо Благодарностей получено 
    1,457
    Поблагодарили
    520 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker Посмотреть сообщение
    Да, интересно. Я бы определенно из файла иды генерил бы
    ctl а в чем разница у пасмо и sjasm в плане портов? Я посмотрел краем глаза, особо разницы и нет (кроме z80=>8086)
    У pasmo есть опция --w8080, генерирует варнинги на команды вне набора i8080, что довольно удобно при портировании на советские компы на основе КР580ВМ80А. При этом остаёмся в привычной нотации Z80.

  8. #7

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,639
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    У pasmo есть опция --w8080, генерирует варнинги на команды вне набора i8080, что довольно удобно при портировании на советские компы на основе КР580ВМ80А. При этом остаёмся в привычной нотации Z80.
    У sjasmplus тоже есть! Я в своё время просил, уж не знаю по моей просьбе или нет, но сделали такой ключик.
    С уважением, Станислав.

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

    polikarpov76(17.07.2022)

  9. #8

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,047
    Спасибо Благодарностей отдано 
    1,140
    Спасибо Благодарностей получено 
    1,457
    Поблагодарили
    520 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Разобрался с тем как строится лабиринт. Пример карты можно увидеть тут: https://maps.speccy.cz/map.php?id=ScubaDive

    Собственно, всё определяется блоками на мини-карте 32x32.
    Верхние 7 рядов довольно стандартны - два горизонтальных прохода, объединённых по вертикали двумя проходами с осьминогами-сторожами над ними.
    Положение обоих осьминогов выбирается случайно, колонка в диапазоне 7..22.
    Далее, от нижней дыры (в 7-м ряду) вниз строится дерево проходов, основной проход идёт почти вертикально вниз, от него могут идти отростки влево/вправо.
    Глубина дерева зависит от уровня игры - последний доступный ряд имеет номер 19 / 23 / 27 / 31 - в зависимости от выбранного игроком уровня игры 1..4.

  10. #9

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,047
    Спасибо Благодарностей отдано 
    1,140
    Спасибо Благодарностей получено 
    1,457
    Поблагодарили
    520 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тред по портированию Scuba Dive на Вектор-06Ц: https://zx-pk.ru/threads/34605-porti...ektor-z80.html

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

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

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

Похожие темы

  1. Реверс-инжиниринг Z80
    от Titus в разделе Программирование
    Ответов: 802
    Последнее: 22.05.2025, 13:19
  2. Реверс-инжиниринг игры Boovie
    от Oleg N. Cher в разделе Программирование
    Ответов: 41
    Последнее: 09.01.2022, 23:07
  3. Реверс МК-92
    от Случайность в разделе Программируемые калькуляторы
    Ответов: 55
    Последнее: 24.04.2021, 23:47
  4. Реверс инжиниринг печатной платы
    от Filin в разделе Несортированное железо
    Ответов: 36
    Последнее: 11.03.2018, 22:46
  5. реверс sinclair scientific
    от skyther в разделе Зарубежные компьютеры
    Ответов: 0
    Последнее: 31.08.2013, 16:56

Ваши права

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